Xinu7/src/sys/h/kernel.h
/* kernel.h - disable, enable, halt, restore, isodd, min */
/* Symbolic constants used throughout Xinu */
typedef char Bool; /* Boolean type */
#define FALSE 0 /* Boolean constants */
#define TRUE 1
#define NULL (char *)0 /* Null pointer for linked lists*/
#define NULLCH '\0' /* The null character */
#define NULLSTR "" /* Pointer to empty string */
#define SYSCALL int /* System call declaration */
#define LOCAL static /* Local procedure declaration */
#define COMMAND int /* Shell command declaration */
#define BUILTIN int /* Shell builtin " " */
#define INTPROC int /* Interrupt procedure " */
#define PROCESS int /* Process declaration */
#define RESCHYES 1 /* tell ready to reschedule */
#define RESCHNO 0 /* tell ready not to resch. */
#define MININT 0100000 /* minimum integer (-32768) */
#define MAXINT 0077777 /* maximum integer */
#define LOWBYTE 0377 /* mask for low-order 8 bits */
#define HIBYTE 0177400 /* mask for high 8 of 16 bits */
#define LOW16 0177777 /* mask for low-order 16 bits */
#define SP 6 /* reg. 6 is stack pointer */
#define PC 7 /* reg. 7 is program counter */
#define PS 8 /* proc. status in 8th reg. loc */
#define MINSTK 40 /* minimum process stack size */
#define NULLSTK 300 /* process 0 stack size */
#define DISABLE 0340 /* PS to disable interrupts */
#define MAGIC 0125252 /* unusual value for top of stk */
/* Universal return constants */
#define OK 1 /* system call ok */
#define SYSERR -1 /* system call failed */
#define EOF -2 /* End-of-file (usu. from read) */
#define TIMEOUT -3 /* time out (usu. recvtim) */
#define INTRMSG -4 /* keyboard "intr" key pressed */
/* (usu. defined as ^B) */
/* Initialization constants */
#define INITSTK 500 /* initial process stack */
#define INITPRIO 20 /* initial process priority */
#define INITNAME "main" /* initial process name */
#define INITARGS 1,0 /* initial count/arguments */
#define INITRET userret /* processes return address */
#define INITPS 0 /* initial process PS */
#define INITREG 0 /* initial register contents */
#define QUANTUM 10 /* clock ticks until preemption */
/* Miscellaneous utility inline functions */
#define isodd(x) (01&(int)(x))
#define min(a,b) ( (a) < (b) ? (a) : (b) )
#define disable(ps) asm("mfps ~ps");asm("mtps $0340")
#define restore(ps) asm("mtps ~ps") /* restore interrupt status */
#define enable() asm("mtps $000")/* enable interrupts */
#define pause() asm("wait") /* machine "wait for interr." */
#define halt() asm("halt") /* machine halt instruction */
extern int rdyhead, rdytail;
extern int preempt;