blob: cd9e15fa8cf987b9770e54116d96e36d01f7b1b6 [file] [log] [blame]
// 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;