📄 sema.patch
字号:
diff -c -Nr src.clean/include/lib.h src/include/lib.h*** src.clean/include/lib.h 2008-11-15 06:52:11.000000000 +0800--- src/include/lib.h 2008-11-15 07:34:30.000000000 +0800****************** 25,30 ****--- 25,31 ---- #define MM PM_PROC_NR #define FS FS_PROC_NR+ #define SS SS_PROC_NR _PROTOTYPE( int __execve, (const char *_path, char *const _argv[], char *const _envp[], int _nargs, int _nenvps) );diff -c -Nr src.clean/include/minix/com.h src/include/minix/com.h*** src.clean/include/minix/com.h 2008-11-15 06:52:12.000000000 +0800--- src/include/minix/com.h 2008-11-16 00:35:06.000000000 +0800****************** 37,47 **** #define PM_PROC_NR 0 /* process manager */ #define FS_PROC_NR 1 /* file system */ #define RS_PROC_NR 2 /* reincarnation server */! #define MEM_PROC_NR 3 /* memory driver (RAM disk, null, etc.) */! #define LOG_PROC_NR 4 /* log device driver */! #define TTY_PROC_NR 5 /* terminal (TTY) driver */! #define DS_PROC_NR 6 /* data store server */! #define INIT_PROC_NR 7 /* init -- goes multiuser */ /* Number of processes contained in the system image. */ #define NR_BOOT_PROCS (NR_TASKS + INIT_PROC_NR + 1)--- 37,48 ---- #define PM_PROC_NR 0 /* process manager */ #define FS_PROC_NR 1 /* file system */ #define RS_PROC_NR 2 /* reincarnation server */! #define SS_PROC_NR 3 /* semaphore server */! #define MEM_PROC_NR 4 /* memory driver (RAM disk, null, etc.) */! #define LOG_PROC_NR 5 /* log device driver */! #define TTY_PROC_NR 6 /* terminal (TTY) driver */! #define DS_PROC_NR 7 /* data store server */! #define INIT_PROC_NR 8 /* init -- goes multiuser */ /* Number of processes contained in the system image. */ #define NR_BOOT_PROCS (NR_TASKS + INIT_PROC_NR + 1)****************** 486,491 ****--- 487,506 ---- # define DS_VAL_L2 m2_l2 /* second long data value */ /*===========================================================================*+ * Message for the Semaphore Server+ * ==========================================================================*/+ + #define SS_RQ_BASE 0x2000+ + #define SS_SEMA_INIT (SS_RQ_BASE + 0)+ #define SS_SEMA_DOWN (SS_RQ_BASE + 1)+ #define SS_SEMA_UP (SS_RQ_BASE + 2)+ #define SS_SEMA_RELEASE (SS_RQ_BASE + 3)+ + #define SS_SEMAPHORE_NUMBER m1_i1+ #define SS_START_VALUE m1_i2+ + /*===========================================================================* * Miscellaneous messages used by TTY * *===========================================================================*/ diff -c -Nr src.clean/kernel/table.c src/kernel/table.c*** src.clean/kernel/table.c 2008-11-15 06:52:12.000000000 +0800--- src/kernel/table.c 2008-11-15 07:32:34.000000000 +0800****************** 68,74 **** #define s(n) (1 << s_nr_to_id(n)) #define SRV_M (~0) #define SYS_M (~0)! #define USR_M (s(PM_PROC_NR) | s(FS_PROC_NR) | s(RS_PROC_NR) | s(SYSTEM)) #define DRV_M (USR_M | s(SYSTEM) | s(CLOCK) | s(DS_PROC_NR) | s(LOG_PROC_NR) | s(TTY_PROC_NR)) /* Define kernel calls that processes are allowed to make. This is not looking--- 68,74 ---- #define s(n) (1 << s_nr_to_id(n)) #define SRV_M (~0) #define SYS_M (~0)! #define USR_M (s(PM_PROC_NR) | s(FS_PROC_NR) | s(RS_PROC_NR) | s(SS_PROC_NR) | s(SYSTEM)) #define DRV_M (USR_M | s(SYSTEM) | s(CLOCK) | s(DS_PROC_NR) | s(LOG_PROC_NR) | s(TTY_PROC_NR)) /* Define kernel calls that processes are allowed to make. This is not looking****************** 78,83 ****--- 78,84 ---- */ #define c(n) (1 << ((n)-KERNEL_CALL)) #define RS_C ~0 + #define SS_C ~0 #define DS_C ~0 #define PM_C ~(c(SYS_DEVIO) | c(SYS_SDEVIO) | c(SYS_VDEVIO) | c(SYS_IRQCTL) | c(SYS_INT86)) #define FS_C (c(SYS_KILL) | c(SYS_VIRCOPY) | c(SYS_VIRVCOPY) | c(SYS_UMAP) | c(SYS_GETINFO) | c(SYS_EXIT) | c(SYS_TIMES) | c(SYS_SETALARM))****************** 105,110 ****--- 106,112 ---- { PM_PROC_NR, 0, SRV_F, 32, 3, 0, SRV_T, SRV_M, PM_C, "pm" }, { FS_PROC_NR, 0, SRV_F, 32, 4, 0, SRV_T, SRV_M, FS_C, "fs" }, { RS_PROC_NR, 0, SRV_F, 4, 3, 0, SRV_T, SYS_M, RS_C, "rs" },+ { SS_PROC_NR, 0, SRV_F, 32, 4, 0, SRV_T, SYS_M, SS_C, "ss" }, { DS_PROC_NR, 0, SRV_F, 4, 3, 0, SRV_T, SYS_M, DS_C, "ds" }, { TTY_PROC_NR, 0, SRV_F, 4, 1, 0, SRV_T, SYS_M, TTY_C, "tty" }, { MEM_PROC_NR, 0, SRV_F, 4, 2, 0, SRV_T, SYS_M, MEM_C, "mem" },diff -c -Nr src.clean/lib/posix/Makedepend-ack src/lib/posix/Makedepend-ack*** src.clean/lib/posix/Makedepend-ack 2008-11-15 06:52:17.000000000 +0800--- src/lib/posix/Makedepend-ack 2008-11-15 07:48:56.000000000 +0800****************** 1,6 ****--- 1,7 ---- depend-ack: rm .depend-ack touch .depend-ack+ mkdep 'cc -O -D_MINIX -D_POSIX_SOURCE -E' _semaphore.c | sed -e 's:^\(.\):../obj-ack//./posix/\1:' >> .depend-ack mkdep 'cc -O -D_MINIX -D_POSIX_SOURCE -E' __exit.c | sed -e 's:^\(.\):../obj-ack//./posix/\1:' >> .depend-ack mkdep 'cc -O -D_MINIX -D_POSIX_SOURCE -E' _access.c | sed -e 's:^\(.\):../obj-ack//./posix/\1:' >> .depend-ack mkdep 'cc -O -D_MINIX -D_POSIX_SOURCE -E' _alarm.c | sed -e 's:^\(.\):../obj-ack//./posix/\1:' >> .depend-ackdiff -c -Nr src.clean/lib/posix/Makedepend-gnu src/lib/posix/Makedepend-gnu*** src.clean/lib/posix/Makedepend-gnu 2008-11-15 06:52:17.000000000 +0800--- src/lib/posix/Makedepend-gnu 2008-11-15 07:48:56.000000000 +0800****************** 1,6 ****--- 1,7 ---- depend-gnu: rm .depend-gnu touch .depend-gnu+ mkdep 'gcc -O -D_MINIX -D_POSIX_SOURCE -E' _semaphore.c | sed -e '/<built-in>/d' -e '/<command line>/d' -e 's:^\(.\):../obj-gnu/./posix/\1:' >> .depend-gnu mkdep 'gcc -O -D_MINIX -D_POSIX_SOURCE -E' __exit.c | sed -e '/<built-in>/d' -e '/<command line>/d' -e 's:^\(.\):../obj-gnu/./posix/\1:' >> .depend-gnu mkdep 'gcc -O -D_MINIX -D_POSIX_SOURCE -E' _access.c | sed -e '/<built-in>/d' -e '/<command line>/d' -e 's:^\(.\):../obj-gnu/./posix/\1:' >> .depend-gnu mkdep 'gcc -O -D_MINIX -D_POSIX_SOURCE -E' _alarm.c | sed -e '/<built-in>/d' -e '/<command line>/d' -e 's:^\(.\):../obj-gnu/./posix/\1:' >> .depend-gnudiff -c -Nr src.clean/lib/posix/Makefile src/lib/posix/Makefile*** src.clean/lib/posix/Makefile 2008-11-15 06:52:17.000000000 +0800--- src/lib/posix/Makefile 2008-11-15 07:48:56.000000000 +0800****************** 19,24 ****--- 19,25 ---- depend: depend-ack all-ack: ../obj-ack//libc.a + ../obj-ack//libc.a: ../obj-ack//libc.a(_semaphore.o) ../obj-ack//libc.a: ../obj-ack//libc.a(__exit.o) ../obj-ack//libc.a: ../obj-ack//libc.a(_access.o) ../obj-ack//libc.a: ../obj-ack//libc.a(_alarm.o)****************** 121,126 ****--- 122,129 ---- ar cr ../obj-ack//libc.a ../obj-ack//./posix/*.o rm ../obj-ack//./posix/*.o + ../obj-ack//libc.a(_semaphore.o): _semaphore.c+ cc -O -D_MINIX -D_POSIX_SOURCE -c -o ../obj-ack//./posix/_semaphore.o _semaphore.c ../obj-ack//libc.a(__exit.o): __exit.c cc -O -D_MINIX -D_POSIX_SOURCE -c -o ../obj-ack//./posix/__exit.o __exit.c ../obj-ack//libc.a(_access.o): _access.c****************** 318,323 ****--- 321,327 ---- all-gnu: ../obj-gnu/libc.a + ../obj-gnu/libc.a: ../obj-gnu/./posix/_semaphore.o ../obj-gnu/libc.a: ../obj-gnu/./posix/__exit.o ../obj-gnu/libc.a: ../obj-gnu/./posix/_access.o ../obj-gnu/libc.a: ../obj-gnu/./posix/_alarm.o****************** 419,424 ****--- 423,431 ---- ../obj-gnu/libc.a: gar cr ../obj-gnu/libc.a $? + ../obj-gnu/./posix/_semaphore.o: _semaphore.c+ gcc -O -D_MINIX -D_POSIX_SOURCE -c -o ../obj-gnu/./posix/_semaphore.o _semaphore.c+ ../obj-gnu/./posix/__exit.o: __exit.c gcc -O -D_MINIX -D_POSIX_SOURCE -c -o ../obj-gnu/./posix/__exit.o __exit.c diff -c -Nr src.clean/lib/posix/Makefile.in src/lib/posix/Makefile.in*** src.clean/lib/posix/Makefile.in 2008-11-15 06:52:17.000000000 +0800--- src/lib/posix/Makefile.in 2008-11-15 07:48:47.000000000 +0800****************** 5,10 ****--- 5,11 ---- LIBRARIES=libc libc_FILES=" \+ _semaphore.c \ __exit.c \ _access.c \ _alarm.c \diff -c -Nr src.clean/lib/posix/_semaphore.c src/lib/posix/_semaphore.c*** src.clean/lib/posix/_semaphore.c 1970-01-01 08:00:00.000000000 +0800--- src/lib/posix/_semaphore.c 2008-11-16 01:57:42.000000000 +0800****************** 0 ****--- 1,32 ----+ #include <lib.h>+ #include <unistd.h>+ + PUBLIC int sema_init(int semaphore_number, int start_value)+ {+ message m;+ m.m1_i1=semaphore_number;+ m.m1_i2=start_value;+ return(_syscall(SS,SS_SEMA_INIT,&m));+ }+ + PUBLIC int sema_down(int semaphore_number)+ {+ message m;+ m.m1_i1=semaphore_number;+ return(_syscall(SS,SS_SEMA_DOWN,&m));+ }+ + PUBLIC int sema_up(int semaphore_number)+ {+ message m;+ m.m1_i1=semaphore_number;+ return(_syscall(SS,SS_SEMA_UP,&m));+ }+ + PUBLIC int sema_release(int semaphore_number)+ {+ message m;+ m.m1_i1=semaphore_number;+ return(_syscall(SS,SS_SEMA_RELEASE,&m));+ }+ diff -c -Nr src.clean/servers/Makefile src/servers/Makefile*** src.clean/servers/Makefile 2008-11-15 06:52:22.000000000 +0800--- src/servers/Makefile 2008-11-15 07:26:04.000000000 +0800****************** 18,23 ****--- 18,24 ---- cd ./pm && $(MAKE) $@ cd ./fs && $(MAKE) $@ cd ./rs && $(MAKE) $@+ cd ./ss && $(MAKE) $@ cd ./ds && $(MAKE) $@ cd ./is && $(MAKE) $@ cd ./init && $(MAKE) $@****************** 27,32 ****--- 28,34 ---- cd ./pm && $(MAKE) EXTRA_OPTS=$(EXTRA_OPTS) build cd ./fs && $(MAKE) EXTRA_OPTS=$(EXTRA_OPTS) build cd ./rs && $(MAKE) EXTRA_OPTS=$(EXTRA_OPTS) build+ cd ./ss && $(MAKE) EXTRA_OPTS=$(EXTRA_OPTS) build cd ./ds && $(MAKE) EXTRA_OPTS=$(EXTRA_OPTS) build cd ./init && $(MAKE) EXTRA_OPTS=$(EXTRA_OPTS) build diff -c -Nr src.clean/servers/ss/.depend src/servers/ss/.depend*** src.clean/servers/ss/.depend 1970-01-01 08:00:00.000000000 +0800--- src/servers/ss/.depend 2008-11-15 07:07:38.000000000 +0800****************** 0 ****--- 1,56 ----+ + main.o: /usr/include/ansi.h+ main.o: /usr/include/errno.h+ main.o: /usr/include/limits.h+ main.o: /usr/include/minix/bitmap.h+ main.o: /usr/include/minix/callnr.h+ main.o: /usr/include/minix/com.h+ main.o: /usr/include/minix/config.h+ main.o: /usr/include/minix/const.h+ main.o: /usr/include/minix/devio.h+ main.o: /usr/include/minix/ipc.h+ main.o: /usr/include/minix/keymap.h+ main.o: /usr/include/minix/sys_config.h+ main.o: /usr/include/minix/syslib.h+ main.o: /usr/include/minix/sysutil.h+ main.o: /usr/include/minix/type.h+ main.o: /usr/include/signal.h+ main.o: /usr/include/stdio.h+ main.o: /usr/include/stdlib.h+ main.o: /usr/include/string.h+ main.o: /usr/include/sys/dir.h+ main.o: /usr/include/sys/types.h+ main.o: /usr/include/unistd.h+ main.o: glo.h+ main.o: inc.h+ main.o: main.c+ main.o: proto.h+ main.o: semaphore.h+ + semaphore.o: /usr/include/ansi.h+ semaphore.o: /usr/include/errno.h+ semaphore.o: /usr/include/limits.h+ semaphore.o: /usr/include/minix/bitmap.h+ semaphore.o: /usr/include/minix/callnr.h+ semaphore.o: /usr/include/minix/com.h+ semaphore.o: /usr/include/minix/config.h+ semaphore.o: /usr/include/minix/const.h+ semaphore.o: /usr/include/minix/devio.h+ semaphore.o: /usr/include/minix/ipc.h+ semaphore.o: /usr/include/minix/keymap.h+ semaphore.o: /usr/include/minix/sys_config.h+ semaphore.o: /usr/include/minix/syslib.h+ semaphore.o: /usr/include/minix/sysutil.h+ semaphore.o: /usr/include/minix/type.h+ semaphore.o: /usr/include/signal.h+ semaphore.o: /usr/include/stdio.h+ semaphore.o: /usr/include/stdlib.h+ semaphore.o: /usr/include/string.h+ semaphore.o: /usr/include/sys/dir.h+ semaphore.o: /usr/include/sys/types.h+ semaphore.o: /usr/include/unistd.h+ semaphore.o: glo.h+ semaphore.o: inc.h+ semaphore.o: proto.h+ semaphore.o: semaphore.c+ semaphore.o: semaphore.hdiff -c -Nr src.clean/servers/ss/glo.h src/servers/ss/glo.h*** src.clean/servers/ss/glo.h 1970-01-01 08:00:00.000000000 +0800--- src/servers/ss/glo.h 2008-11-16 02:24:03.000000000 +0800****************** 0 ****--- 1,7 ----+ /* Global variables. */+ + /* The parameters of the call are kept here. */+ extern int who; /* caller's proc number */+ extern int callnr; /* system call number */+ extern int dont_reply; /* normally 0; set to 1 to inhibit reply */+ diff -c -Nr src.clean/servers/ss/inc.h src/servers/ss/inc.h*** src.clean/servers/ss/inc.h 1970-01-01 08:00:00.000000000 +0800--- src/servers/ss/inc.h 2008-11-15 07:09:51.000000000 +0800****************** 0 ****--- 1,30 ----+ /* Header file including all needed system headers. */+ + #define _SYSTEM 1 /* get OK and negative error codes */+ #define _MINIX 1 /* tell headers to include MINIX stuff */+ + #include <ansi.h>+ #include <sys/types.h>+ #include <limits.h>+ #include <errno.h>+ + #include <minix/callnr.h>+ #include <minix/config.h>+ #include <minix/type.h>+ #include <minix/const.h>+ #include <minix/com.h>+ #include <minix/syslib.h>+ #include <minix/sysutil.h>+ #include <minix/keymap.h>+ #include <minix/bitmap.h>+ + #include <stdlib.h>+ #include <stdio.h>+ #include <string.h>+ #include <unistd.h>+ #include <signal.h>+
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -