| // Copyright 2010 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| // Plan 9-specific system calls |
| int32 runtime·pread(int32 fd, void *buf, int32 nbytes, int64 offset); |
| int32 runtime·pwrite(int32 fd, void *buf, int32 nbytes, int64 offset); |
| int64 runtime·seek(int32 fd, int64 offset, int32 whence); |
| void runtime·exits(int8* msg); |
| intptr runtime·brk_(void*); |
| int32 runtime·sleep(int32 ms); |
| int32 runtime·rfork(int32 flags, void *stk, M *mp, G *gp, void (*fn)(void)); |
| int32 runtime·plan9_semacquire(uint32 *addr, int32 block); |
| int32 runtime·plan9_tsemacquire(uint32 *addr, int32 ms); |
| int32 runtime·plan9_semrelease(uint32 *addr, int32 count); |
| int32 runtime·notify(void (*fn)(void*, int8*)); |
| int32 runtime·noted(int32); |
| void runtime·sigtramp(void*, int8*); |
| void runtime·sigpanic(void); |
| void runtime·goexitsall(int8*); |
| void runtime·setfpmasks(void); |
| |
| /* open */ |
| enum |
| { |
| OREAD = 0, |
| OWRITE = 1, |
| ORDWR = 2, |
| OEXEC = 3, |
| OTRUNC = 16, |
| OCEXEC = 32, |
| ORCLOSE = 64, |
| OEXCL = 0x1000 |
| }; |
| |
| /* rfork */ |
| enum |
| { |
| RFNAMEG = (1<<0), |
| RFENVG = (1<<1), |
| RFFDG = (1<<2), |
| RFNOTEG = (1<<3), |
| RFPROC = (1<<4), |
| RFMEM = (1<<5), |
| RFNOWAIT = (1<<6), |
| RFCNAMEG = (1<<10), |
| RFCENVG = (1<<11), |
| RFCFDG = (1<<12), |
| RFREND = (1<<13), |
| RFNOMNT = (1<<14) |
| }; |
| |
| /* notify */ |
| enum |
| { |
| NCONT = 0, |
| NDFLT = 1 |
| }; |
| |
| typedef struct Tos Tos; |
| typedef intptr Plink; |
| |
| struct Tos { |
| struct /* Per process profiling */ |
| { |
| Plink *pp; /* known to be 0(ptr) */ |
| Plink *next; /* known to be 4(ptr) */ |
| Plink *last; |
| Plink *first; |
| uint32 pid; |
| uint32 what; |
| } prof; |
| uint64 cyclefreq; /* cycle clock frequency if there is one, 0 otherwise */ |
| int64 kcycles; /* cycles spent in kernel */ |
| int64 pcycles; /* cycles spent in process (kernel + user) */ |
| uint32 pid; /* might as well put the pid here */ |
| uint32 clock; |
| /* top of stack is here */ |
| }; |
| |
| #define NSIG 14 /* number of signals in runtime·SigTab array */ |
| #define ERRMAX 128 /* max length of note string */ |
| |
| /* Notes in runtime·sigtab that are handled by runtime·sigpanic. */ |
| #define SIGRFAULT 2 |
| #define SIGWFAULT 3 |
| #define SIGINTDIV 4 |
| #define SIGFLOAT 5 |
| #define SIGTRAP 6 |