sys/sys/acct.h
/* @(#)acct.h 2.8 88/02/08 SMI; from UCB 7.1 6/4/86 */
/*
* Copyright (c) 1982, 1986 Regents of the University of California.
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
*/
/*
* Accounting structures;
* these use a comp_t type which is a 3 bits base 8
* exponent, 13 bit fraction ``floating point'' number.
* Units are 1/AHZ seconds.
*/
typedef u_short comp_t;
struct acct
{
char ac_comm[10]; /* Accounting command name */
comp_t ac_utime; /* Accounting user time */
comp_t ac_stime; /* Accounting system time */
comp_t ac_etime; /* Accounting elapsed time */
time_t ac_btime; /* Beginning time */
uid_t ac_uid; /* Accounting user ID */
gid_t ac_gid; /* Accounting group ID */
short ac_mem; /* average memory usage */
comp_t ac_io; /* number of disk IO blocks */
dev_t ac_tty; /* control typewriter */
char ac_flag; /* Accounting flag */
};
#define AFORK 0001 /* has executed fork, but no exec */
#define ASU 0002 /* used super-user privileges */
#define ACOMPAT 0004 /* used compatibility mode */
#define ACORE 0010 /* dumped core */
#define AXSIG 0020 /* killed by a signal */
/*
* 1/AHZ is the granularity of the data encoded in the various
* comp_t fields. This is not necessarily equal to hz.
*/
#define AHZ 64
#ifdef KERNEL
#ifdef SYSACCT
struct acct acctbuf;
struct vnode *acctp;
#else
#define acct()
#endif
#endif
sys/sys/errno.h
/* @(#)errno.h 2.11 88/02/08 SMI; from UCB 4.1 82/12/28 */
/*
* Error codes
*/
#define EPERM 1 /* Not owner */
#define ENOENT 2 /* No such file or directory */
#define ESRCH 3 /* No such process */
#define EINTR 4 /* Interrupted system call */
#define EIO 5 /* I/O error */
#define ENXIO 6 /* No such device or address */
#define E2BIG 7 /* Arg list too long */
#define ENOEXEC 8 /* Exec format error */
#define EBADF 9 /* Bad file number */
#define ECHILD 10 /* No children */
#define EAGAIN 11 /* No more processes */
#define ENOMEM 12 /* Not enough core */
#define EACCES 13 /* Permission denied */
#define EFAULT 14 /* Bad address */
#define ENOTBLK 15 /* Block device required */
#define EBUSY 16 /* Mount device busy */
#define EEXIST 17 /* File exists */
#define EXDEV 18 /* Cross-device link */
#define ENODEV 19 /* No such device */
#define ENOTDIR 20 /* Not a directory*/
#define EISDIR 21 /* Is a directory */
#define EINVAL 22 /* Invalid argument */
#define ENFILE 23 /* File table overflow */
#define EMFILE 24 /* Too many open files */
#define ENOTTY 25 /* Not a typewriter */
#define ETXTBSY 26 /* Text file busy */
#define EFBIG 27 /* File too large */
#define ENOSPC 28 /* No space left on device */
#define ESPIPE 29 /* Illegal seek */
#define EROFS 30 /* Read-only file system */
#define EMLINK 31 /* Too many links */
#define EPIPE 32 /* Broken pipe */
/* math software */
#define EDOM 33 /* Argument too large */
#define ERANGE 34 /* Result too large */
/* non-blocking and interrupt i/o */
#define EWOULDBLOCK 35 /* Operation would block */
#define EINPROGRESS 36 /* Operation now in progress */
#define EALREADY 37 /* Operation already in progress */
/* ipc/network software */
/* argument errors */
#define ENOTSOCK 38 /* Socket operation on non-socket */
#define EDESTADDRREQ 39 /* Destination address required */
#define EMSGSIZE 40 /* Message too long */
#define EPROTOTYPE 41 /* Protocol wrong type for socket */
#define ENOPROTOOPT 42 /* Protocol not available */
#define EPROTONOSUPPORT 43 /* Protocol not supported */
#define ESOCKTNOSUPPORT 44 /* Socket type not supported */
#define EOPNOTSUPP 45 /* Operation not supported on socket */
#define EPFNOSUPPORT 46 /* Protocol family not supported */
#define EAFNOSUPPORT 47 /* Address family not supported by protocol family */
#define EADDRINUSE 48 /* Address already in use */
#define EADDRNOTAVAIL 49 /* Can't assign requested address */
/* operational errors */
#define ENETDOWN 50 /* Network is down */
#define ENETUNREACH 51 /* Network is unreachable */
#define ENETRESET 52 /* Network dropped connection on reset */
#define ECONNABORTED 53 /* Software caused connection abort */
#define ECONNRESET 54 /* Connection reset by peer */
#define ENOBUFS 55 /* No buffer space available */
#define EISCONN 56 /* Socket is already connected */
#define ENOTCONN 57 /* Socket is not connected */
#define ESHUTDOWN 58 /* Can't send after socket shutdown */
#define ETOOMANYREFS 59 /* Too many references: can't splice */
#define ETIMEDOUT 60 /* Connection timed out */
#define ECONNREFUSED 61 /* Connection refused */
/* */
#define ELOOP 62 /* Too many levels of symbolic links */
#define ENAMETOOLONG 63 /* File name too long */
/* should be rearranged */
#define EHOSTDOWN 64 /* Host is down */
#define EHOSTUNREACH 65 /* No route to host */
#define ENOTEMPTY 66 /* Directory not empty */
/* quotas & mush */
#define EPROCLIM 67 /* Too many processes */
#define EUSERS 68 /* Too many users */
#define EDQUOT 69 /* Disc quota exceeded */
/* Network File System */
#define ESTALE 70 /* Stale NFS file handle */
#define EREMOTE 71 /* Too many levels of remote in path */
/* streams */
#define ENOSTR 72 /* Device is not a stream */
#define ETIME 73 /* Timer expired */
#define ENOSR 74 /* Out of streams resources */
#define ENOMSG 75 /* No message of desired type */
#define EBADMSG 76 /* Trying to read unreadable message */
/* SystemV IPC */
#define EIDRM 77 /* Identifier removed */
/* SystemV Record Locking */
#define EDEADLK 78 /* Deadlock condition. */
#define ENOLCK 79 /* No record locks available. */
/* RFS */
#define ENONET 80 /* Machine is not on the network */
#define ERREMOTE 81 /* Object is remote */
#define ENOLINK 82 /* the link has been severed */
#define EADV 83 /* advertise error */
#define ESRMNT 84 /* srmount error */
#define ECOMM 85 /* Communication error on send */
#define EPROTO 86 /* Protocol error */
#define EMULTIHOP 87 /* multihop attempted */
#define EDOTDOT 88 /* Cross mount point (not an error) */
#define EREMCHG 89 /* Remote address changed */
sys/sys/exec.h
/* @(#)exec.h 1.6 88/02/08 SMI */
/*
* Copyright (c) 1985 by Sun Microsystems, Inc.
*/
#ifndef _EXEC_
#define _EXEC_
/*
* format of the exec header
* known by kernel and by user programs
*/
struct exec {
#ifdef sun
unsigned char a_dynamic:1; /* has a __DYNAMIC */
unsigned char a_toolversion:7;/* version of toolset used to create this file */
unsigned char a_machtype; /* machine type */
unsigned short a_magic; /* magic number */
#else
unsigned long a_magic; /* magic number */
#endif
unsigned long a_text; /* size of text segment */
unsigned long a_data; /* size of initialized data */
unsigned long a_bss; /* size of uninitialized data */
unsigned long a_syms; /* size of symbol table */
unsigned long a_entry; /* entry point */
unsigned long a_trsize; /* size of text relocation */
unsigned long a_drsize; /* size of data relocation */
};
#define OMAGIC 0407 /* old impure format */
#define NMAGIC 0410 /* read-only text */
#define ZMAGIC 0413 /* demand load format */
/* machine types */
#ifdef sun
#define M_OLDSUN2 0 /* old sun-2 executable files */
#define M_68010 1 /* runs on either 68010 or 68020 */
#define M_68020 2 /* runs only on 68020 */
#define M_SPARC 3 /* runs only on SPARC */
#define TV_SUN2_SUN3 0
#define TV_SUN4 1
#endif sun
#endif _EXEC_
sys/sys/filio.h
/* @(#)filio.h 1.3 88/02/08 SMI; from UCB ioctl.h 7.1 6/4/86 */
/*
* Copyright (c) 1982, 1986 Regents of the University of California.
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
*/
/*
* General file ioctl definitions.
*/
#ifndef _filio_h
#define _filio_h
#include <sys/ioccom.h>
#define FIOCLEX _IO(f, 1) /* set exclusive use on fd */
#define FIONCLEX _IO(f, 2) /* remove exclusive use */
/* another local */
#define FIONREAD _IOR(f, 127, int) /* get # bytes to read */
#define FIONBIO _IOW(f, 126, int) /* set/clear non-blocking i/o */
#define FIOASYNC _IOW(f, 125, int) /* set/clear async i/o */
#define FIOSETOWN _IOW(f, 124, int) /* set owner */
#define FIOGETOWN _IOR(f, 123, int) /* get owner */
#endif
sys/sys/ioccom.h
/* @(#)ioccom.h 1.3 88/02/08 SMI; from UCB ioctl.h 7.1 6/4/86 */
/*
* Copyright (c) 1982, 1986 Regents of the University of California.
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
*/
#ifndef _IO
/*
* Ioctl's have the command encoded in the lower word,
* and the size of any in or out parameters in the upper
* word. The high 2 bits of the upper word are used
* to encode the in/out status of the parameter; for now
* we restrict parameters to at most 255 bytes.
*/
#define IOCPARM_MASK 0xff /* parameters must be < 256 bytes */
#define IOC_VOID 0x20000000 /* no parameters */
#define IOC_OUT 0x40000000 /* copy out parameters */
#define IOC_IN 0x80000000 /* copy in parameters */
#define IOC_INOUT (IOC_IN|IOC_OUT)
/* the 0x20000000 is so we can distinguish new ioctl's from old */
#define _IO(x,y) (IOC_VOID|('x'<<8)|y)
#define _IOR(x,y,t) (IOC_OUT|((sizeof(t)&IOCPARM_MASK)<<16)|('x'<<8)|y)
#define _IORN(x,y,t) (IOC_OUT|(((t)&IOCPARM_MASK)<<16)|('x'<<8)|y)
#define _IOW(x,y,t) (IOC_IN|((sizeof(t)&IOCPARM_MASK)<<16)|('x'<<8)|y)
#define _IOWN(x,y,t) (IOC_IN|(((t)&IOCPARM_MASK)<<16)|('x'<<8)|y)
/* this should be _IORW, but stdio got there first */
#define _IOWR(x,y,t) (IOC_INOUT|((sizeof(t)&IOCPARM_MASK)<<16)|('x'<<8)|y)
#endif
sys/sys/ioctl.h
/* @(#)ioctl.h 2.17 88/02/08 SMI; from UCB 7.1 6/4/86 */
/*
* Copyright (c) 1982, 1986 Regents of the University of California.
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
*/
/*
* Ioctl definitions
*/
#ifndef _IOCTL_
#define _IOCTL_
#include <sys/ttychars.h>
#include <sys/ttydev.h>
#include <sys/ttold.h>
#define TANDEM O_TANDEM
#define CBREAK O_CBREAK
#define LCASE O_LCASE
#define ECHO O_ECHO
#define CRMOD O_CRMOD
#define RAW O_RAW
#define ODDP O_ODDP
#define EVENP O_EVENP
#define ANYP O_ANYP
#define NLDELAY O_NLDELAY
#define NL0 O_NL0
#define NL1 O_NL1
#define NL2 O_NL2
#define NL3 O_NL3
#define TBDELAY O_TBDELAY
#define TAB0 O_TAB0
#define TAB1 O_TAB1
#define TAB2 O_TAB2
#define XTABS O_XTABS
#define CRDELAY O_CRDELAY
#define CR0 O_CR0
#define CR1 O_CR1
#define CR2 O_CR2
#define CR3 O_CR3
#define VTDELAY O_VTDELAY
#define FF0 O_FF0
#define FF1 O_FF1
#define BSDELAY O_BSDELAY
#define BS0 O_BS0
#define BS1 O_BS1
#define ALLDELAY O_ALLDELAY
#define CRTBS O_CRTBS
#define PRTERA O_PRTERA
#define CRTERA O_CRTERA
#define TILDE O_TILDE
#define MDMBUF O_MDMBUF
#define LITOUT O_LITOUT
#define TOSTOP O_TOSTOP
#define FLUSHO O_FLUSHO
#define NOHANG O_NOHANG
#define L001000 O_L001000
#define CRTKIL O_CRTKIL
#define PASS8 O_PASS8
#define CTLECH O_CTLECH
#define PENDIN O_PENDIN
#define DECCTQ O_DECCTQ
#define NOFLSH O_NOFLSH
#include <sys/filio.h>
#include <sys/sockio.h>
#endif
sys/sys/ipc.h
/* @(#)ipc.h 1.4 88/02/08 SMI; from S5R2 6.1 */
/* Common IPC Access Structure */
struct ipc_perm {
ushort uid; /* owner's user id */
ushort gid; /* owner's group id */
ushort cuid; /* creator's user id */
ushort cgid; /* creator's group id */
ushort mode; /* access modes */
ushort seq; /* slot usage sequence number */
key_t key; /* key */
};
/* Common IPC Definitions. */
/* Mode bits. */
#define IPC_ALLOC 0100000 /* entry currently allocated */
#define IPC_CREAT 0001000 /* create entry if key doesn't exist */
#define IPC_EXCL 0002000 /* fail if key exists */
#define IPC_NOWAIT 0004000 /* error if request must wait */
/* Keys. */
#define IPC_PRIVATE (key_t)0 /* private key */
/* Control Commands. */
#define IPC_RMID 0 /* remove identifier */
#define IPC_SET 1 /* set options */
#define IPC_STAT 2 /* get options */
sys/sys/mtio.h
/* @(#)mtio.h 2.8 88/02/08 SMI; from UCB 4.10 83/01/17 */
/*
* Structures and definitions for mag tape io control commands
*/
/* structure for MTIOCTOP - mag tape op command */
struct mtop {
short mt_op; /* operations defined below */
daddr_t mt_count; /* how many of them */
};
/* operations */
#define MTWEOF 0 /* write an end-of-file record */
#define MTFSF 1 /* forward space file */
#define MTBSF 2 /* backward space file */
#define MTFSR 3 /* forward space record */
#define MTBSR 4 /* backward space record */
#define MTREW 5 /* rewind */
#define MTOFFL 6 /* rewind and put the drive offline */
#define MTNOP 7 /* no operation, sets status only */
#define MTRETEN 8 /* retension the tape */
#define MTERASE 9 /* erase the entire tape */
#define MTEOM 10 /* position to end of media (SCSI only) */
/* structure for MTIOCGET - mag tape get status command */
struct mtget {
short mt_type; /* type of magtape device */
/* the following two registers are grossly device dependent */
short mt_dsreg; /* ``drive status'' register */
short mt_erreg; /* ``error'' register */
/* end device-dependent registers */
short mt_resid; /* residual count */
/* the following two are not yet implemented */
daddr_t mt_fileno; /* file number of current position */
daddr_t mt_blkno; /* block number of current position */
/* end not yet implemented */
};
/*
* Constants for mt_type byte
*/
#define MT_ISTS 0x01 /* vax: unibus ts-11 */
#define MT_ISHT 0x02 /* vax: massbus tu77, etc */
#define MT_ISTM 0x03 /* vax: unibus tm-11 */
#define MT_ISMT 0x04 /* vax: massbus tu78 */
#define MT_ISUT 0x05 /* vax: unibus gcr */
#define MT_ISCPC 0x06 /* sun: multibus cpc */
#define MT_ISAR 0x07 /* sun: multibus archive */
#define MT_ISSC 0x08 /* sun: SCSI archive */
#define MT_ISXY 0x09 /* sun: Xylogics 472 */
#define MT_ISSYSGEN11 0x10 /* sun: SCSI Sysgen, QIC-11 only */
#define MT_ISSYSGEN 0x11 /* sun: SCSI Sysgen QIC-24/11 */
#define MT_ISDEFAULT 0x12 /* sun: SCSI default CCS */
#define MT_ISCCS3 0x13 /* sun: SCSI generic (unknown) CCS */
#define MT_ISMT02 0x14 /* sun: SCSI Emulex MT02 */
#define MT_ISCCS5 0x15 /* sun: SCSI generic (unknown) CCS */
#define MT_ISCCS6 0x16 /* sun: SCSI generic (unknown) CCS */
#define MT_ISCCS7 0x17 /* sun: SCSI generic (unknown) CCS */
#define MT_ISCCS8 0x18 /* sun: SCSI generic (unknown) CCS */
#define MT_ISCCS9 0x19 /* sun: SCSI generic (unknown) CCS */
#define MT_ISCCS11 0x1a /* sun: SCSI generic (unknown) CCS */
#define MT_ISCCS12 0x1b /* sun: SCSI generic (unknown) CCS */
#define MT_ISCCS13 0x1c /* sun: SCSI generic (unknown) CCS */
#define MT_ISCCS14 0x1d /* sun: SCSI generic (unknown) CCS */
#define MT_ISCCS15 0x1e /* sun: SCSI generic (unknown) CCS */
#define MT_ISCCS16 0x1f /* sun: SCSI generic (unknown) CCS */
#define MT_ISCCS17 0x20 /* sun: SCSI generic (unknown) CCS */
#define MT_ISCCS18 0x21 /* sun: SCSI generic (unknown) CCS */
#define MT_ISCCS19 0x22 /* sun: SCSI generic (unknown) CCS */
#define MT_ISCCS20 0x23 /* sun: SCSI generic (unknown) CCS */
#define MT_ISCCS21 0x24 /* sun: SCSI generic (unknown) CCS */
#define MT_ISCCS22 0x25 /* sun: SCSI generic (unknown) CCS */
#define MT_ISCCS23 0x26 /* sun: SCSI generic (unknown) CCS */
#define MT_ISCCS24 0x27 /* sun: SCSI generic (unknown) CCS */
#define MT_ISCCS25 0x28 /* sun: SCSI generic (unknown) CCS */
#define MT_ISCCS26 0x29 /* sun: SCSI generic (unknown) CCS */
#define MT_ISCCS27 0x2a /* sun: SCSI generic (unknown) CCS */
#define MT_ISCCS28 0x2b /* sun: SCSI generic (unknown) CCS */
#define MT_ISCCS29 0x2c /* sun: SCSI generic (unknown) CCS */
#define MT_ISCCS30 0x2d /* sun: SCSI generic (unknown) CCS */
#define MT_ISCCS31 0x2e /* sun: SCSI generic (unknown) CCS */
#define MT_ISCCS32 0x2f /* sun: SCSI generic (unknown) CCS */
/*
* Constants for mt_type byte
*/
#define MT_ISSCSI_LO MT_ISSYSGEN11 /* first SCSI tape device */
#define MT_ISSCSI_HI MT_ISCCS32 /* last SCSI tape device */
/* mag tape io control commands */
#define MTIOCTOP _IOW(m, 1, struct mtop) /* do a mag tape op */
#define MTIOCGET _IOR(m, 2, struct mtget) /* get tape status */
#ifndef KERNEL
#define DEFTAPE "/dev/rmt12"
#endif
sys/sys/shm.h
/* @(#)shm.h 1.12 88/02/08 SMI; from SVR3 10.10 */
/*
* IPC Shared Memory Facility.
*/
#include <sys/param.h>
#include <machine/mmu.h>
/*
* Shared Memory Operation Flags.
*/
#define SHM_RDONLY 010000 /* attach read-only (else read-write) */
#define SHM_RND 020000 /* round attach address to SHMLBA */
/*
* Shmctl Command Definitions.
*/
#define SHM_LOCK 3 /* Lock segment in core */
#define SHM_UNLOCK 4 /* Unlock segment */
/*
* Implementation Constants.
*/
#define SHMLBA PAGESIZE /* segment low boundary address multiple */
/* (SHMLBA must be a power of 2) */
/*
* Structure Definitions.
*/
/*
* There is a shared mem id data structure for each segment in the system.
*/
struct shmid_ds {
struct ipc_perm shm_perm; /* operation permission struct */
uint shm_segsz; /* size of segment in bytes */
ushort shm_lpid; /* pid of last shmop */
ushort shm_cpid; /* pid of creator */
ushort shm_nattch; /* number of current attaches */
time_t shm_atime; /* last shmat time */
time_t shm_dtime; /* last shmdt time */
time_t shm_ctime; /* last change time */
struct anon_map *shm_amp; /* segment anon_map pointer */
};
#ifdef KERNEL
/*
* Permission Definitions.
*/
#define SHM_W 0200 /* write permission */
#define SHM_R 0400 /* read permission */
/*
* ipc_perm Mode Definitions.
*/
#define SHM_INIT 001000 /* segment not yet initialized */
#define SHM_LOCKED 004000 /* shmid locked */
#define SHM_LOCKWAIT 010000 /* shmid wanted */
#define PSHM (PZERO + 1) /* sleep priority */
/* define resource locking macros */
#define SHMLOCK(sp) { \
while ((sp)->shm_perm.mode & SHM_LOCKED) { \
(sp)->shm_perm.mode |= SHM_LOCKWAIT; \
(void) sleep((caddr_t)(sp), PSHM); \
} \
(sp)->shm_perm.mode |= SHM_LOCKED; \
}
#define SHMUNLOCK(sp) { \
(sp)->shm_perm.mode &= ~SHM_LOCKED; \
if ((sp)->shm_perm.mode & SHM_LOCKWAIT) { \
(sp)->shm_perm.mode &= ~SHM_LOCKWAIT; \
curpri = PSHM; \
wakeup((caddr_t)(sp)); \
} \
}
/*
* Shared Memory information structure
*/
struct shminfo {
int shmmax, /* max shared memory segment size */
shmmin, /* min shared memory segment size */
shmmni, /* # of shared memory identifiers */
shmseg, /* (obsolete) */
shmall; /* (obsolete) */
};
struct shminfo shminfo; /* configuration parameters */
/*
* Configuration Parameters
* These parameters are tuned by editing the system configuration file.
* The following lines establish the default values.
*/
#ifndef SHMSIZE
#define SHMSIZE 1024 /* maximum shared memory segment size (in Kbytes) */
#endif
#ifndef SHMMNI
#define SHMMNI 100 /* # of shared memory identifiers */
#endif
/* The following parameters are assumed not to require tuning */
#define SHMMIN 1 /* min shared memory segment size */
#define SHMMAX (SHMSIZE * 1024) /* max shared memory segment size */
/*
* Structures allocated in machdep.c
*/
struct shmid_ds *shmem; /* shared memory id pool */
#endif KERNEL
sys/sys/signal.h
/* @(#)signal.h 2.29 88/03/03 SMI; from UCB 6.7 85/06/08 */
/*
* Copyright (c) 1982 Regents of the University of California.
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
*/
/*
* Copyright (c) 1987 by Sun Microsystems, Inc.
*/
#ifndef _sys_signal_h
#define _sys_signal_h
#include <vm/faultcode.h>
#define NSIG 32
#define SIGHUP 1 /* hangup */
#define SIGINT 2 /* interrupt */
#define SIGQUIT 3 /* quit */
#define SIGILL 4 /* illegal instruction (not reset when caught) */
#ifdef vax
#define ILL_RESAD_FAULT 0x0 /* reserved addressing fault */
#define ILL_PRIVIN_FAULT 0x1 /* privileged instruction fault */
#define ILL_RESOP_FAULT 0x2 /* reserved operand fault */
/* CHME, CHMS, CHMU are not yet given back to users reasonably */
#endif vax
#ifdef mc68000
#define ILL_ILLINSTR_FAULT 0x10 /* illegal instruction fault */
#define ILL_PRIVVIO_FAULT 0x20 /* privilege violation fault */
#define ILL_COPROCERR_FAULT 0x34 /* [coprocessor protocol error fault] */
#define ILL_TRAP1_FAULT 0x84 /* trap #1 fault */
#define ILL_TRAP2_FAULT 0x88 /* trap #2 fault */
#define ILL_TRAP3_FAULT 0x8c /* trap #3 fault */
#define ILL_TRAP4_FAULT 0x90 /* trap #4 fault */
#define ILL_TRAP5_FAULT 0x94 /* trap #5 fault */
#define ILL_TRAP6_FAULT 0x98 /* trap #6 fault */
#define ILL_TRAP7_FAULT 0x9c /* trap #7 fault */
#define ILL_TRAP8_FAULT 0xa0 /* trap #8 fault */
#define ILL_TRAP9_FAULT 0xa4 /* trap #9 fault */
#define ILL_TRAP10_FAULT 0xa8 /* trap #10 fault */
#define ILL_TRAP11_FAULT 0xac /* trap #11 fault */
#define ILL_TRAP12_FAULT 0xb0 /* trap #12 fault */
#define ILL_TRAP13_FAULT 0xb4 /* trap #13 fault */
#define ILL_TRAP14_FAULT 0xb8 /* trap #14 fault */
#endif mc68000
#ifdef sparc
#define ILL_STACK 0x00 /* bad stack */
#define ILL_ILLINSTR_FAULT 0x02 /* illegal instruction fault */
#define ILL_PRIVINSTR_FAULT 0x03 /* privileged instruction fault */
/* codes from 0x80 to 0xff are software traps */
#define ILL_TRAP_FAULT(n) ((n)+0x80) /* trap n fault */
#endif sparc
#define SIGTRAP 5 /* trace trap (not reset when caught) */
#define SIGIOT 6 /* IOT instruction */
#define SIGABRT 6 /* used by abort, replace SIGIOT in the future */
#define SIGEMT 7 /* EMT instruction */
#ifdef mc68000
#define EMT_EMU1010 0x28 /* line 1010 emulator trap */
#define EMT_EMU1111 0x2c /* line 1111 emulator trap */
#endif mc68000
#ifdef sparc
#define EMT_TAG 0x0a /* tag overflow */
#endif sparc
#define SIGFPE 8 /* floating point exception */
#ifdef vax
#define FPE_INTOVF_TRAP 0x1 /* integer overflow */
#define FPE_INTDIV_TRAP 0x2 /* integer divide by zero */
#define FPE_FLTOVF_TRAP 0x3 /* floating overflow */
#define FPE_FLTDIV_TRAP 0x4 /* floating/decimal divide by zero */
#define FPE_FLTUND_TRAP 0x5 /* floating underflow */
#define FPE_DECOVF_TRAP 0x6 /* decimal overflow */
#define FPE_SUBRNG_TRAP 0x7 /* subscript out of range */
#define FPE_FLTOVF_FAULT 0x8 /* floating overflow fault */
#define FPE_FLTDIV_FAULT 0x9 /* divide by zero floating fault */
#define FPE_FLTUND_FAULT 0xa /* floating underflow fault */
#endif vax
#ifdef mc68000
#define FPE_INTDIV_TRAP 0x14 /* integer divide by zero */
#define FPE_CHKINST_TRAP 0x18 /* CHK [CHK2] instruction */
#define FPE_TRAPV_TRAP 0x1c /* TRAPV [cpTRAPcc TRAPcc] instr */
#define FPE_FLTBSUN_TRAP 0xc0 /* [branch or set on unordered cond] */
#define FPE_FLTINEX_TRAP 0xc4 /* [floating inexact result] */
#define FPE_FLTDIV_TRAP 0xc8 /* [floating divide by zero] */
#define FPE_FLTUND_TRAP 0xcc /* [floating underflow] */
#define FPE_FLTOPERR_TRAP 0xd0 /* [floating operand error] */
#define FPE_FLTOVF_TRAP 0xd4 /* [floating overflow] */
#define FPE_FLTNAN_TRAP 0xd8 /* [floating Not-A-Number] */
#ifdef sun
#define FPE_FPA_ENABLE 0x400 /* [FPA not enabled] */
#define FPE_FPA_ERROR 0x404 /* [FPA arithmetic exception] */
#endif sun
#endif mc68000
#ifdef sparc
#define FPE_INTOVF_TRAP 0x1 /* integer overflow */
#define FPE_INTDIV_TRAP 0x14 /* integer divide by zero */
#define FPE_FLTINEX_TRAP 0xc4 /* [floating inexact result] */
#define FPE_FLTDIV_TRAP 0xc8 /* [floating divide by zero] */
#define FPE_FLTUND_TRAP 0xcc /* [floating underflow] */
#define FPE_FLTOPERR_TRAP 0xd0 /* [floating operand error] */
#define FPE_FLTOVF_TRAP 0xd4 /* [floating overflow] */
#endif sparc
#define SIGKILL 9 /* kill (cannot be caught or ignored) */
/*
* The codes for SIGBUS and SIGSEGV are described in <vm/faultcode.h>
*/
#define SIGBUS 10 /* bus error */
#define BUS_HWERR FC_HWERR /* misc hardware error (e.g. timeout) */
#define BUS_ALIGN FC_ALIGN /* hardware alignment error */
#define SIGSEGV 11 /* segmentation violation */
#define SEGV_NOMAP FC_NOMAP /* no mapping at the fault address */
#define SEGV_PROT FC_PROT /* access exceeded protections */
#define SEGV_OBJERR FC_OBJERR /* object returned errno value */
/*
* The SEGV_CODE(code) will be SEGV_NOMAP, SEGV_PROT, or SEGV_OBJERR.
* In the SEGV_OBJERR case, doing a SEGV_ERRNO(code) gives an errno value
* reported by the underlying file object mapped at the fault address.
*/
#define SEGV_CODE(C) FC_CODE(C)
#define SEGV_ERRNO(C) FC_ERRNO(C)
#define SIGSYS 12 /* bad argument to system call */
#define SIGPIPE 13 /* write on a pipe with no one to read it */
#define SIGALRM 14 /* alarm clock */
#define SIGTERM 15 /* software termination signal from kill */
#define SIGURG 16 /* urgent condition on IO channel */
#define SIGSTOP 17 /* sendable stop signal not from tty */
#define SIGTSTP 18 /* stop signal from tty */
#define SIGCONT 19 /* continue a stopped process */
#define SIGCHLD 20 /* to parent on child stop or exit */
#define SIGCLD 20 /* System V name for SIGCHLD */
#define SIGTTIN 21 /* to readers pgrp upon background tty read */
#define SIGTTOU 22 /* like TTIN for output if (tp->t_local<OSTOP) */
#define SIGIO 23 /* input/output possible signal */
#define SIGPOLL SIGIO /* System V name for SIGIO */
#define SIGXCPU 24 /* exceeded CPU time limit */
#define SIGXFSZ 25 /* exceeded file size limit */
#define SIGVTALRM 26 /* virtual time alarm */
#define SIGPROF 27 /* profiling time alarm */
#define SIGWINCH 28 /* window changed */
#define SIGLOST 29 /* resource lost (eg, record-lock lost) */
#define SIGUSR1 30 /* user defined signal 1 */
#define SIGUSR2 31 /* user defined signal 2 */
/*
* If addr cannot be computed it is set to SIG_NOADDR.
*/
#define SIG_NOADDR ((char *)~0)
#ifndef KERNEL
void (*signal())();
/*
* Define BSD 4.1 reliable signals for SVID compatibility.
* These functions may go away in a future release.
*/
void (*sigset())();
int sighold();
int sigrelse();
int sigignore();
#endif !KERNEL
#ifndef LOCORE
/*
* Signal vector "template" used in sigvec call.
*/
struct sigvec {
void (*sv_handler)(); /* signal handler */
int sv_mask; /* signal mask to apply */
int sv_flags; /* see signal options below */
};
#define SV_ONSTACK 0x0001 /* take signal on signal stack */
#define SV_INTERRUPT 0x0002 /* do not restart system on signal return */
#define SV_RESETHAND 0x0004 /* reset signal handler to SIG_DFL when signal taken */
#define sv_onstack sv_flags /* isn't compatibility wonderful! */
/*
* Structure used in sigstack call.
*/
struct sigstack {
char *ss_sp; /* signal stack pointer */
int ss_onstack; /* current status */
};
/*
* Information pushed on stack when a signal is delivered.
* This is used by the kernel to restore state following
* execution of the signal handler. It is also made available
* to the handler to allow it to properly restore state if
* a non-standard exit is performed.
*/
struct sigcontext {
int sc_onstack; /* sigstack state to restore */
int sc_mask; /* signal mask to restore */
#ifdef vax
int sc_sp; /* sp to restore */
int sc_fp; /* fp to restore */
int sc_ap; /* ap to restore */
int sc_pc; /* pc to restore */
int sc_ps; /* psl to restore */
#endif vax
#ifdef mc68000
int sc_sp; /* sp to restore */
int sc_pc; /* pc to retore */
int sc_ps; /* psl to restore */
#endif mc68000
#ifdef sparc
#define MAXWINDOW 31 /* max usable windows in sparc */
int sc_sp; /* sp to restore */
int sc_pc; /* pc to retore */
int sc_npc; /* next pc to restore */
int sc_psr; /* psr to restore */
int sc_g1; /* register that must be restored */
int sc_o0;
int sc_wbcnt; /* number of outstanding windows */
char *sc_spbuf[MAXWINDOW]; /* sp's for each wbuf */
int sc_wbuf[MAXWINDOW][16]; /* outstanding window save buffer */
#endif sparc
#ifdef sun386
int sc_sp; /* sp to restore */
int sc_pc; /* pc to retore */
int sc_ps; /* psl to restore */
int sc_eax; /* eax to restore */
int sc_edx; /* edx to restore */
#endif
};
#endif !LOCORE
#define BADSIG (void (*)())-1
#define SIG_ERR (void (*)())-1
#define SIG_DFL (void (*)())0
#define SIG_IGN (void (*)())1
#ifdef KERNEL
#define SIG_CATCH (void (*)())2
#endif KERNEL
#define SIG_HOLD (void (*)())3
/*
* Macro for converting signal number to a mask suitable for sigblock().
*/
#define sigmask(m) (1 << ((m)-1))
#endif !_sys_signal_h
sys/sys/stat.h
/* @(#)stat.h 2.8 88/02/08 SMI; from UCB 4.7 83/05/21 */
#ifndef __STAT_HEADER__
#define __STAT_HEADER__
struct stat
{
dev_t st_dev;
ino_t st_ino;
unsigned short st_mode;
short st_nlink;
short st_uid;
short st_gid;
dev_t st_rdev;
off_t st_size;
time_t st_atime;
int st_spare1;
time_t st_mtime;
int st_spare2;
time_t st_ctime;
int st_spare3;
long st_blksize;
long st_blocks;
long st_spare4[2];
};
#define S_IFMT 0170000 /* type of file */
#define S_IFDIR 0040000 /* directory */
#define S_IFCHR 0020000 /* character special */
#define S_IFBLK 0060000 /* block special */
#define S_IFREG 0100000 /* regular */
#define S_IFLNK 0120000 /* symbolic link */
#define S_IFSOCK 0140000/* socket */
#define S_IFIFO 0010000 /* fifo */
#define S_ISUID 0004000 /* set user id on execution */
#define S_ISGID 0002000 /* set group id on execution */
#define S_ISVTX 0001000 /* save swapped text even after use */
#define S_IREAD 0000400 /* read permission, owner */
#define S_IWRITE 0000200 /* write permission, owner */
#define S_IEXEC 0000100 /* execute/search permission, owner */
#define S_IRUSR 0000400 /* read permission, owner */
#define S_IWUSR 0000200 /* write permission, owner */
#define S_IXUSR 0000100 /* execute/search permission, owner */
#define S_IRGRP 0000040 /* read permission, group */
#define S_IWGRP 0000020 /* write permission, grougroup */
#define S_IXGRP 0000010 /* execute/search permission, group */
#define S_IROTH 0000004 /* read permission, other */
#define S_IWOTH 0000002 /* write permission, other */
#define S_IXOTH 0000001 /* execute/search permission, other */
#define S_ENFMT 0000000 /* enforcement-mode locking not implemented */
#endif !__STAT_HEADER__
sys/sys/tty.h
/* @(#)tty.h 2.13 88/02/08 SMI */
/*
* Copyright (c) 1987 by Sun Microsystems, Inc.
*/
#ifndef _TTY_
#define _TTY_
typedef struct {
int t_flags;
queue_t *t_readq; /* stream's read queue */
queue_t *t_writeq; /* stream's write queue */
unsigned long t_iflag; /* copy of iflag from tty modes */
unsigned long t_cflag; /* copy of cflag from tty modes */
u_char t_stopc; /* copy of c_cc[VSTOP] from tty modes */
u_char t_startc; /* copy of c_cc[VSTART] from tty modes */
struct winsize t_size; /* screen/page size */
mblk_t *t_iocpending; /* ioctl reply pending successful allocation */
} tty_common_t;
#define TS_XCLUDE 0x00000001 /* tty is open for exclusive use */
#define TS_SOFTCAR 0x00000002 /* force carrier on */
extern void ttycommon_close(/*tty_common_t *tc*/);
extern unsigned ttycommon_ioctl(/*tty_common_t *tc, queue_t *q, mblk_t *mp*/);
/*
* M_CTL message types.
*/
#define MC_NOCANON 0 /* module below saying it will canonicalize */
#define MC_DOCANON 1 /* module below saying it won't canonicalize */
#define MC_CANONQUERY 2 /* module above asking whether module below canonicalizes */
#define MC_SERVICEIMM 3 /* tell the ZS driver to return input immediately */
#define MC_SERVICEDEF 4 /* tell the ZS driver it can wait */
#endif
sys/sys/vfs.h
/* @(#)vfs.h 2.23 88/02/08 SMI */
/*
* File system identifier. Should be unique (at least per machine).
*/
typedef struct {
long val[2]; /* file system id type */
} fsid_t;
/*
* File identifier. Should be unique per filesystem on a single machine.
*/
#define MAXFIDSZ 16
#define freefid(fidp) \
kmem_free((caddr_t)(fidp), sizeof (struct fid) - MAXFIDSZ + (fidp)->fid_len)
struct fid {
u_short fid_len; /* length of data in bytes */
char fid_data[MAXFIDSZ]; /* data (variable length) */
};
/*
* Structure per mounted file system.
* Each mounted file system has an array of
* operations and an instance record.
* The file systems are put on a singly linked list.
* If vfs_stats is non-NULL statistics are gathered, see vfs_stat.h
*/
struct vfs {
struct vfs *vfs_next; /* next vfs in vfs list */
struct vfsops *vfs_op; /* operations on vfs */
struct vnode *vfs_vnodecovered; /* vnode we mounted on */
int vfs_flag; /* flags */
int vfs_bsize; /* native block size */
fsid_t vfs_fsid; /* file system id */
caddr_t vfs_stats; /* filesystem statistics */
caddr_t vfs_data; /* private data */
};
/*
* vfs flags.
* VFS_MLOCK lock the vfs so that name lookup cannot proceed past the vfs.
* This keeps the subtree stable during mounts and unmounts.
*/
#define VFS_RDONLY 0x01 /* read only vfs */
#define VFS_MLOCK 0x02 /* lock vfs so that subtree is stable */
#define VFS_MWAIT 0x04 /* someone is waiting for lock */
#define VFS_NOSUID 0x08 /* turn off set-uid on exec */
#define VFS_GRPID 0x10 /* Old BSD group-id on create */
#define VFS_NOSUB 0x20 /* No mounts allowed beneath this fs */
#define VFS_REMOUNT 0x40 /* modify mount otions only */
#define VFS_MULTI 0x80 /* Do multi-component lookup on files */
/*
* Operations supported on virtual file system.
*/
struct vfsops {
int (*vfs_mount)(); /* mount file system */
int (*vfs_unmount)(); /* unmount file system */
int (*vfs_root)(); /* get root vnode */
int (*vfs_statfs)(); /* get fs statistics */
int (*vfs_sync)(); /* flush fs buffers */
int (*vfs_vget)(); /* get vnode from fid */
int (*vfs_mountroot)(); /* mount the root filesystem */
int (*vfs_swapvp)(); /* return vnode for swap */
};
#define VFS_MOUNT(VFSP, PATH, DATA) \
(*(VFSP)->vfs_op->vfs_mount)(VFSP, PATH, DATA)
#define VFS_UNMOUNT(VFSP) (*(VFSP)->vfs_op->vfs_unmount)(VFSP)
#define VFS_ROOT(VFSP, VPP) (*(VFSP)->vfs_op->vfs_root)(VFSP,VPP)
#define VFS_STATFS(VFSP, SBP) (*(VFSP)->vfs_op->vfs_statfs)(VFSP,SBP)
#define VFS_SYNC(VFSP) (*(VFSP)->vfs_op->vfs_sync)(VFSP)
#define VFS_VGET(VFSP, VPP, FIDP) (*(VFSP)->vfs_op->vfs_vget)(VFSP, VPP, FIDP)
#define VFS_MOUNTROOT(VFSP, VPP, NM) \
(*(VFSP)->vfs_op->vfs_mountroot)(VFSP, VPP, NM)
#define VFS_SWAPVP(VFSP, VPP, NM) (*(VFSP)->vfs_op->vfs_swapvp)(VFSP, VPP, NM)
/*
* file system statistics
*/
struct statfs {
long f_type; /* type of info, zero for now */
long f_bsize; /* fundamental file system block size */
long f_blocks; /* total blocks in file system */
long f_bfree; /* free block in fs */
long f_bavail; /* free blocks avail to non-superuser */
long f_files; /* total file nodes in file system */
long f_ffree; /* free file nodes in fs */
fsid_t f_fsid; /* file system id */
long f_spare[7]; /* spare for later */
};
#ifdef KERNEL
/*
* Filesystem type switch table
*/
struct vfssw {
char *vsw_name; /* type name string */
struct vfsops *vsw_ops; /* filesystem operations vector */
};
/*
* public operations
*/
extern void vfs_mountroot(); /* mount the root */
extern int vfs_add(); /* add a new vfs to mounted vfs list */
extern void vfs_remove(); /* remove a vfs from mounted vfs list */
extern int vfs_lock(); /* lock a vfs */
extern void vfs_unlock(); /* unlock a vfs */
extern struct vfs *getvfs(); /* return vfs given fsid */
extern struct vfssw *getfstype(); /* find default filesystem type */
extern int vfs_getmajor(); /* get major device # for an fs type */
extern void vfs_putmajor(); /* free major device # for an fs type */
extern int vfs_getnum(); /* get device # for an fs type */
extern void vfs_putnum(); /* release device # for an fs type */
#define VFS_INIT(VFSP, OP, DATA) { \
(VFSP)->vfs_next = (struct vfs *)0; \
(VFSP)->vfs_op = (OP); \
(VFSP)->vfs_flag = 0; \
(VFSP)->vfs_stats = NULL; \
(VFSP)->vfs_data = (DATA); \
}
/*
* globals
*/
extern struct vfs *rootvfs; /* ptr to root vfs structure */
extern struct vfssw vfssw[]; /* table of filesystem types */
extern struct vfssw *vfsNVFS; /* vfs switch table end marker */
#endif
sys/sys/vfs_stat.h
/* @(#)vfs_stat.h 1.3 88/02/08 SMI */
/*
* The stat structure is a two dimentional array. The major index is
* the op number defined below, the minor index is VS_HIT or VS_MISS.
*/
#define VS_CALL 0 /* Op called */
#define VS_MISS 1 /* Cache miss */
/*
* VFS OPS
*/
#define VS_ROOT 0
#define VS_STATFS 1
#define VS_SYNC 2
#define VS_VGET 3
/*
* Vnode ops
*/
#define VS_OPEN 4
#define VS_CLOSE 5
#define VS_READ 6
#define VS_WRITE 7
#define VS_IOCTL 8
#define VS_SELECT 9
#define VS_GETATTR 10
#define VS_SETATTR 11
#define VS_ACCESS 12
#define VS_LOOKUP 13
#define VS_CREATE 14
#define VS_REMOVE 15
#define VS_LINK 16
#define VS_RENAME 17
#define VS_MKDIR 18
#define VS_RMDIR 19
#define VS_READDIR 20
#define VS_SYMLINK 21
#define VS_READLINK 22
#define VS_FSYNC 23
#define VS_INACTIVE 24
#define VS_LOCKCTL 25
#define VS_FID 26
#define VS_GETPAGE 27
#define VS_PUTPAGE 28
#define VS_MAP 29
#define VS_CMP 30
#define VS_REALVP 31
#define VS_NOPS 32
#ifndef KERNEL
char *vs_opnames[VS_NOPS] = {
"root", "statfs", "sync", "vget", "open", "close", "read", "write",
"ioctl", "select", "getattr", "setattr", "access", "lookup", "create",
"remove", "link", "rename", "mkdir", "rmdir", "readdir", "symlink",
"readlink", "fsync", "inactive", "lockctl", "fid", "getpage",
"putpage", "map", "cmp", "realvp"
};
#endif
struct vfsstats {
time_t vs_time;
int vs_counts[VS_NOPS][2];
};
#ifdef VFSSTATS
#define VFS_RECORD(vfs, op, hitmiss) \
((vfs)->vfs_stats \
? ((struct vfsstats *)(vfs)->vfs_stats)->vs_counts[op][hitmiss]++ \
: 0 )
#else
#define VFS_RECORD(vfs, op, hitmiss)
#endif