kern

view include/kdef.h @ 97:8717eb590727

ok stopping with the filesystem to manage to write the article in time
author John Tsiombikas <nuclear@member.fsf.org>
date Sat, 17 Dec 2011 14:09:17 +0200
parents 07fe6a614185
children
line source
1 /* definitions that must be in-sync between kernel and user space */
2 #ifndef KERNEL_DEFS_H_
3 #define KERNEL_DEFS_H_
5 /* --- defines for sys/wait.h */
6 #if defined(KERNEL) || defined(KDEF_WAIT_H)
7 #define WNOHANG 1
9 #define WEXITSTATUS(s) ((s) & _WSTATUS_MASK)
10 #define WCOREDUMP(s) ((s) & _WCORE_BIT)
12 #define WIFEXITED(s) (_WREASON(s) == _WREASON_EXITED)
13 #define WIFSIGNALED(s) (_WREASON(s) == _WREASON_SIGNALED)
15 /* implementation details */
16 #define _WSTATUS_MASK 0xff
18 #define _WREASON_SHIFT 8
19 #define _WREASON_MASK 0xf00
20 #define _WREASON(s) (((s) & _WREASON_MASK) >> _WREASON_SHIFT)
22 #define _WREASON_EXITED 1
23 #define _WREASON_SIGNALED 2
25 #define _WCORE_BIT 0x1000
26 #endif /* sys/wait.h */
30 /* --- defines for errno.h */
31 #if defined(KERNEL) || defined(KDEF_ERRNO_H)
32 #define EFOO 1 /* I just like to return -1 some times :) */
34 #define EAGAIN 2
35 #define EINVAL 3
36 #define ECHILD 4
37 #define EBUSY 5
38 #define ENOMEM 6
39 #define EIO 7
40 #define ENOENT 8
41 #define ENAMETOOLONG 9
42 #define ENOSPC 10
43 #define EPERM 11
44 #define ENOTDIR 12
46 #define EBUG 127 /* for missing features and known bugs */
47 #endif /* errno.h */
50 /* --- defines for syscall.h */
51 #if defined(KERNEL) || defined(KDEF_SYSCALL_H)
53 #define SYSCALL_INT 0x80
55 #define SYS_HELLO 0
56 #define SYS_SLEEP 1
57 #define SYS_FORK 2
58 #define SYS_EXIT 3
59 #define SYS_WAITPID 4
60 #define SYS_GETPID 5
61 #define SYS_GETPPID 6
62 #define SYS_MOUNT 7
63 #define SYS_UMOUNT 8
64 #define SYS_OPEN 9
65 #define SYS_CLOSE 10
66 #define SYS_READ 11
67 #define SYS_WRITE 12
68 #define SYS_LSEEK 13
70 /* keep this one more than the last syscall */
71 #define NUM_SYSCALLS 14
73 #endif /* syscall.h */
75 /* --- defines for sys/stat.h */
76 #if defined(KERNEL) || defined(STAT_H)
78 #define S_IFMT 0170000 /* bit mask for the file type bit fields */
79 #define S_IFSOCK 0140000 /* socket */
80 #define S_IFLNK 0120000 /* symbolic link */
81 #define S_IFREG 0100000 /* regular file */
82 #define S_IFBLK 0060000 /* block device */
83 #define S_IFDIR 0040000 /* directory */
84 #define S_IFCHR 0020000 /* character device */
85 #define S_IFIFO 0010000 /* FIFO */
87 #define S_ISUID 0004000 /* set UID bit */
88 #define S_ISGID 0002000 /* set-group-ID bit (see below) */
89 #define S_ISVTX 0001000 /* sticky bit (see below) */
91 #define S_IRWXU 00700 /* mask for file owner permissions */
92 #define S_IRUSR 00400 /* owner has read permission */
93 #define S_IWUSR 00200 /* owner has write permission */
94 #define S_IXUSR 00100 /* owner has execute permission */
95 #define S_IRWXG 00070 /* mask for group permissions */
96 #define S_IRGRP 00040 /* group has read permission */
97 #define S_IWGRP 00020 /* group has write permission */
98 #define S_IXGRP 00010 /* group has execute permission */
99 #define S_IRWXO 00007 /* mask for permissions for others (not in group) */
100 #define S_IROTH 00004 /* others have read permission */
101 #define S_IWOTH 00002 /* others have write permission */
102 #define S_IXOTH 00001 /* others have execute permission */
104 #endif /* sys/stat.h */
107 #endif /* KERNEL_DEFS_H_ */