| // Copyright 2009 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. | |
| // +build ignore | |
| /* | |
| Input to godefs. See also mkerrors.sh and mkall.sh | |
| */ | |
| typedef unsigned short ushort; | |
| typedef unsigned char uchar; | |
| typedef unsigned long ulong; | |
| typedef unsigned int uint; | |
| typedef long long vlong; | |
| typedef unsigned long long uvlong; | |
| typedef int $_C_int; | |
| enum { | |
| OREAD = 0, // open for read | |
| OWRITE = 1, // write | |
| ORDWR = 2, // read and write | |
| OEXEC = 3, // execute, == read but check execute permission | |
| OTRUNC = 16, // or'ed in (except for exec), truncate file first | |
| OCEXEC = 32, // or'ed in, close on exec | |
| ORCLOSE = 64, // or'ed in, remove on close | |
| OEXCL = 0x1000, // or'ed in, exclusive use (create only) | |
| $O_RDONLY = OREAD, | |
| $O_WRONLY = OWRITE, | |
| $O_RDWR = ORDWR, | |
| $O_TRUNC = OTRUNC, | |
| $O_CLOEXEC = OCEXEC, | |
| $O_EXCL = OEXCL, | |
| $STATMAX = 65535U, | |
| $ERRMAX = 128, | |
| $MORDER = 0x0003, // mask for bits defining order of mounting | |
| $MREPL = 0x0000, // mount replaces object | |
| $MBEFORE = 0x0001, // mount goes before others in union directory | |
| $MAFTER = 0x0002, // mount goes after others in union directory | |
| $MCREATE = 0x0004, // permit creation in mounted directory | |
| $MCACHE = 0x0010, // cache some data | |
| $MMASK = 0x0017, // all bits on | |
| $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), | |
| // bits in Qid.type | |
| $QTDIR = 0x80, // type bit for directories | |
| $QTAPPEND = 0x40, // type bit for append only files | |
| $QTEXCL = 0x20, // type bit for exclusive use files | |
| $QTMOUNT = 0x10, // type bit for mounted channel | |
| $QTAUTH = 0x08, // type bit for authentication file | |
| $QTTMP = 0x04, // type bit for not-backed-up file | |
| $QTFILE = 0x00, // plain file | |
| // bits in Dir.mode | |
| $DMDIR = 0x80000000, // mode bit for directories | |
| $DMAPPEND = 0x40000000, // mode bit for append only files | |
| $DMEXCL = 0x20000000, // mode bit for exclusive use files | |
| $DMMOUNT = 0x10000000, // mode bit for mounted channel | |
| $DMAUTH = 0x08000000, // mode bit for authentication file | |
| $DMTMP = 0x04000000, // mode bit for non-backed-up files | |
| $DMREAD = 0x4, // mode bit for read permission | |
| $DMWRITE = 0x2, // mode bit for write permission | |
| $DMEXEC = 0x1, // mode bit for execute permission | |
| BIT8SZ = 1, | |
| BIT16SZ = 2, | |
| BIT32SZ = 4, | |
| BIT64SZ = 8, | |
| QIDSZ = BIT8SZ+BIT32SZ+BIT64SZ, | |
| // STATFIXLEN includes leading 16-bit count | |
| // The count, however, excludes itself; total size is BIT16SZ+count | |
| $STATFIXLEN = BIT16SZ+QIDSZ+5*BIT16SZ+4*BIT32SZ+1*BIT64SZ, // amount of fixed length data in a stat buffer | |
| }; | |
| struct Prof // Per process profiling | |
| { | |
| struct Plink *pp; // known to be 0(ptr) | |
| struct Plink *next; // known to be 4(ptr) | |
| struct Plink *last; | |
| struct Plink *first; | |
| ulong pid; | |
| ulong what; | |
| }; | |
| struct Tos { | |
| struct Prof prof; | |
| uvlong cyclefreq; // cycle clock frequency if there is one, 0 otherwise | |
| vlong kcycles; // cycles spent in kernel | |
| vlong pcycles; // cycles spent in process (kernel + user) | |
| ulong pid; // might as well put the pid here | |
| ulong clock; | |
| // top of stack is here | |
| }; | |
| typedef struct Prof $Prof; | |
| typedef struct Tos $Tos; |