diff options
Diffstat (limited to 'src/runtime/os_plan9.h')
-rw-r--r-- | src/runtime/os_plan9.h | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/src/runtime/os_plan9.h b/src/runtime/os_plan9.h new file mode 100644 index 000000000..6d1802483 --- /dev/null +++ b/src/runtime/os_plan9.h @@ -0,0 +1,93 @@ +// 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); +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); +int64 runtime·nsec(int64*); +void runtime·sigtramp(void*, int8*); +void runtime·sigpanic(void); +void runtime·goexitsall(int8*); +void runtime·setfpmasks(void); +void runtime·tstart_plan9(M *newm); + +/* 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 TosProf /* 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 */ +}; + +enum { + NSIG = 14, /* number of signals in runtime·SigTab array */ + ERRMAX = 128, /* max length of note string */ + + /* Notes in runtime·sigtab that are handled by runtime·sigpanic. */ + SIGRFAULT = 2, + SIGWFAULT = 3, + SIGINTDIV = 4, + SIGFLOAT = 5, + SIGTRAP = 6, +}; |