// 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;