mirror of https://github.com/zrafa/xinu-avr.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
90 lines
3.1 KiB
90 lines
3.1 KiB
/* kernel.h */ |
|
|
|
/* avr specific values. Original saved under orig/ folder */ |
|
|
|
/* General type declarations used throughout the kernel */ |
|
|
|
typedef unsigned char byte; |
|
typedef unsigned char uint8; |
|
typedef long int32; |
|
typedef int int16; |
|
typedef unsigned long uint32; |
|
typedef unsigned int uint16; |
|
typedef unsigned long long uint64; |
|
|
|
/* Xinu-specific types */ |
|
|
|
typedef int16 pri16; /* process priority */ |
|
typedef uint32 umsg32; /* message passed among processes */ |
|
typedef int32 bpid32; /* buffer pool ID */ |
|
typedef byte bool8; /* Boolean type */ |
|
|
|
/* Xinu-specific types */ |
|
|
|
typedef int sid32; /* semaphore ID */ |
|
typedef int16 qid16; /* queue ID */ |
|
typedef int32 pid32; /* process ID */ |
|
typedef int32 did32; /* device ID */ |
|
// typedef uint32 intmask; /* saved interrupt mask */ |
|
typedef uint8 intmask; /* saved interrupt mask */ |
|
typedef int32 ibid32; /* index block ID (used in file system) */ |
|
typedef int32 dbid32; /* data block ID (used in file system) */ |
|
typedef int32 uid32; /* ID for UDP table descriptor */ |
|
|
|
|
|
//typedef char sid32; /* semaphore ID */ |
|
//typedef char qid16; /* queue ID */ |
|
//typedef char pid32; /* process ID */ |
|
//typedef char did32; /* device ID */ |
|
//typedef char intmask; /* saved interrupt mask */ |
|
//typedef char ibid32; /* index block ID (used in file system) */ |
|
//typedef char dbid32; /* data block ID (used in file system) */ |
|
//typedef char uid32; /* ID for UDP table descriptor */ |
|
|
|
/* Function declaration return types */ |
|
|
|
typedef int32 process; /* top-level function of a process */ |
|
typedef void interrupt; /* interrupt procedure */ |
|
|
|
typedef char syscall; /* system call declaration */ |
|
typedef char devcall; /* device call declaration */ |
|
typedef char shellcmd; /* shell command declaration */ |
|
typedef char status; /* returned status value (OK/SYSERR) */ |
|
|
|
#define local static /* Local procedure or variable declar. */ |
|
|
|
/* Boolean constants */ |
|
|
|
#define FALSE 0 /* Boolean False */ |
|
#define TRUE 1 /* Boolean True */ |
|
|
|
/* Null pointer, character, and string definintions */ |
|
|
|
#define NULL 0 /* null pointer for linked lists */ |
|
#define NULLCH '\0' /* null character */ |
|
#define NULLSTR "" /* null string */ |
|
|
|
/* Universal return constants */ |
|
|
|
#define OK ( 1) /* normal system call return */ |
|
#define SYSERR (-1) /* system call failed */ |
|
#define EOF (-2) /* End-of-file (usually from read) */ |
|
#define TIMEOUT (-3) /* system call timed out */ |
|
|
|
extern qid16 readylist; /* global ID for list of ready processes*/ |
|
|
|
#define MINSTK 64 /* minimum stack size in bytes */ |
|
|
|
#define CONTEXT 64 /* bytes in a function call context on */ |
|
/* the run-time stack */ |
|
#define QUANTUM 1 /* time slice in milliseconds */ |
|
|
|
/* Size of the stack for the null process */ |
|
|
|
#define NULLSTK 64 /* stack size for null process */ |
|
|
|
/* Prototypes of I/O functions used throughout the kernel */ |
|
|
|
syscall kprintf(char *fmt, ...); |
|
syscall kputc(byte); |
|
syscall kgetc(void);
|
|
|