nuclear@72: /* definitions that must be in-sync between kernel and user space */ nuclear@72: #ifndef KERNEL_DEFS_H_ nuclear@72: #define KERNEL_DEFS_H_ nuclear@72: nuclear@72: /* --- defines for sys/wait.h */ nuclear@72: #if defined(KERNEL) || defined(KDEF_WAIT_H) nuclear@72: #define WNOHANG 1 nuclear@72: nuclear@72: #define WEXITSTATUS(s) ((s) & _WSTATUS_MASK) nuclear@72: #define WCOREDUMP(s) ((s) & _WCORE_BIT) nuclear@72: nuclear@72: #define WIFEXITED(s) (_WREASON(s) == _WREASON_EXITED) nuclear@72: #define WIFSIGNALED(s) (_WREASON(s) == _WREASON_SIGNALED) nuclear@72: nuclear@72: /* implementation details */ nuclear@72: #define _WSTATUS_MASK 0xff nuclear@72: nuclear@72: #define _WREASON_SHIFT 8 nuclear@72: #define _WREASON_MASK 0xf00 nuclear@72: #define _WREASON(s) (((s) & _WREASON_MASK) >> _WREASON_SHIFT) nuclear@72: nuclear@72: #define _WREASON_EXITED 1 nuclear@72: #define _WREASON_SIGNALED 2 nuclear@72: nuclear@72: #define _WCORE_BIT 0x1000 nuclear@72: #endif /* sys/wait.h */ nuclear@72: nuclear@72: nuclear@72: nuclear@72: /* --- defines for errno.h */ nuclear@72: #if defined(KERNEL) || defined(KDEF_ERRNO_H) nuclear@94: #define EFOO 1 /* I just like to return -1 some times :) */ nuclear@90: nuclear@96: #define EAGAIN 2 nuclear@96: #define EINVAL 3 nuclear@96: #define ECHILD 4 nuclear@96: #define EBUSY 5 nuclear@96: #define ENOMEM 6 nuclear@96: #define EIO 7 nuclear@96: #define ENOENT 8 nuclear@96: #define ENAMETOOLONG 9 nuclear@96: #define ENOSPC 10 nuclear@96: #define EPERM 11 nuclear@97: #define ENOTDIR 12 nuclear@94: nuclear@94: #define EBUG 127 /* for missing features and known bugs */ nuclear@72: #endif /* errno.h */ nuclear@72: nuclear@72: nuclear@72: /* --- defines for syscall.h */ nuclear@72: #if defined(KERNEL) || defined(KDEF_SYSCALL_H) nuclear@72: nuclear@72: #define SYSCALL_INT 0x80 nuclear@72: nuclear@72: #define SYS_HELLO 0 nuclear@72: #define SYS_SLEEP 1 nuclear@72: #define SYS_FORK 2 nuclear@72: #define SYS_EXIT 3 nuclear@72: #define SYS_WAITPID 4 nuclear@72: #define SYS_GETPID 5 nuclear@72: #define SYS_GETPPID 6 nuclear@90: #define SYS_MOUNT 7 nuclear@90: #define SYS_UMOUNT 8 nuclear@90: #define SYS_OPEN 9 nuclear@90: #define SYS_CLOSE 10 nuclear@90: #define SYS_READ 11 nuclear@90: #define SYS_WRITE 12 nuclear@90: #define SYS_LSEEK 13 nuclear@72: nuclear@90: /* keep this one more than the last syscall */ nuclear@90: #define NUM_SYSCALLS 14 nuclear@72: nuclear@72: #endif /* syscall.h */ nuclear@72: nuclear@96: /* --- defines for sys/stat.h */ nuclear@96: #if defined(KERNEL) || defined(STAT_H) nuclear@96: nuclear@96: #define S_IFMT 0170000 /* bit mask for the file type bit fields */ nuclear@96: #define S_IFSOCK 0140000 /* socket */ nuclear@96: #define S_IFLNK 0120000 /* symbolic link */ nuclear@96: #define S_IFREG 0100000 /* regular file */ nuclear@96: #define S_IFBLK 0060000 /* block device */ nuclear@96: #define S_IFDIR 0040000 /* directory */ nuclear@96: #define S_IFCHR 0020000 /* character device */ nuclear@96: #define S_IFIFO 0010000 /* FIFO */ nuclear@96: nuclear@96: #define S_ISUID 0004000 /* set UID bit */ nuclear@96: #define S_ISGID 0002000 /* set-group-ID bit (see below) */ nuclear@96: #define S_ISVTX 0001000 /* sticky bit (see below) */ nuclear@96: nuclear@96: #define S_IRWXU 00700 /* mask for file owner permissions */ nuclear@96: #define S_IRUSR 00400 /* owner has read permission */ nuclear@96: #define S_IWUSR 00200 /* owner has write permission */ nuclear@96: #define S_IXUSR 00100 /* owner has execute permission */ nuclear@96: #define S_IRWXG 00070 /* mask for group permissions */ nuclear@96: #define S_IRGRP 00040 /* group has read permission */ nuclear@96: #define S_IWGRP 00020 /* group has write permission */ nuclear@96: #define S_IXGRP 00010 /* group has execute permission */ nuclear@96: #define S_IRWXO 00007 /* mask for permissions for others (not in group) */ nuclear@96: #define S_IROTH 00004 /* others have read permission */ nuclear@96: #define S_IWOTH 00002 /* others have write permission */ nuclear@96: #define S_IXOTH 00001 /* others have execute permission */ nuclear@96: nuclear@96: #endif /* sys/stat.h */ nuclear@96: nuclear@96: nuclear@72: #endif /* KERNEL_DEFS_H_ */