root/src/pkg/runtime/os_plan9.h

/* [<][>][^][v][top][bottom][index][help] */
// 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

/* [<][>][^][v][top][bottom][index][help] */