📄 patch
字号:
diff -c -Nr src.clean/include/minix/com.h src/include/minix/com.h*** src.clean/include/minix/com.h Thu Nov 13 17:54:40 2008--- src/include/minix/com.h Fri Nov 14 20:38:51 2008****************** 42,50 **** #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) /*===========================================================================* * Kernel notification types *--- 42,51 ---- #define TTY_PROC_NR 5 /* terminal (TTY) driver */ #define DS_PROC_NR 6 /* data store server */ #define INIT_PROC_NR 7 /* init -- goes multiuser */+ #define SS_PROC_NR 8 /* semaphore server */ /* Number of processes contained in the system image. */! #define NR_BOOT_PROCS (NR_TASKS + SS_PROC_NR + 1) /*===========================================================================* * Kernel notification types ******************* 486,491 ****--- 487,510 ---- # define DS_VAL_L2 m2_l2 /* second long data value */ /*===========================================================================*+ * Messages for the Semaphore Server *+ *===========================================================================*/+ + #define SS_RQ_BASE 0x900+ + #define SEMA_INIT (SS_RQ_BASE + 0) /* create a semaphore */+ #define SEMA_DOWN (SS_RQ_BASE + 1) /* down a semaphore */+ #define SEMA_UP (SS_RQ_BASE + 2) /* up a semaphore */+ #define SEMA_RELEASE (SS_RQ_BASE + 3) /* release the semaphore */+ + #define SEMA_NUM_START 0 /* support 10 semaphores */+ #define SEMA_NUM_END 9 /* from 0 to 9*/+ + # define SEMA_NUMBER m2_i1 /* the number of semaphore */+ # define START_VALUE m2_i2 /* starting value */+ + + /*===========================================================================* * Miscellaneous messages used by TTY * *===========================================================================*/ diff -c -Nr src.clean/kernel/table.c src/kernel/table.c*** src.clean/kernel/table.c Thu Nov 13 17:54:41 2008--- src/kernel/table.c Sat Nov 15 15:34:30 2008****************** 79,84 ****--- 79,85 ---- #define c(n) (1 << ((n)-KERNEL_CALL)) #define RS_C ~0 #define DS_C ~0 + #define SS_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)) #define DRV_C (FS_C | c(SYS_SEGCTL) | c(SYS_IRQCTL) | c(SYS_INT86) | c(SYS_DEVIO) | c(SYS_SDEVIO) | c(SYS_VDEVIO))****************** 106,115 **** { 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" }, { 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" }, { LOG_PROC_NR, 0, SRV_F, 4, 2, 0, SRV_T, SYS_M, DRV_C, "log" },! { INIT_PROC_NR, 0, USR_F, 8, USER_Q, 0, USR_T, USR_M, 0, "init" }, }; /* Verify the size of the system image table at compile time. Also verify that --- 107,117 ---- { 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" }, { DS_PROC_NR, 0, SRV_F, 4, 3, 0, SRV_T, SYS_M, DS_C, "ds" },+ { SS_PROC_NR, 0, SRV_F, 4, 3, 0, SRV_T, SRV_M, SS_C, "ss" }, { 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" }, { LOG_PROC_NR, 0, SRV_F, 4, 2, 0, SRV_T, SYS_M, DRV_C, "log" },! { INIT_PROC_NR, 0, USR_F, 8, USER_Q, 0, USR_T, SRV_M, 0, "init" }, }; /* Verify the size of the system image table at compile time. Also verify that diff -c -Nr src.clean/servers/Makefile src/servers/Makefile*** src.clean/servers/Makefile Thu Nov 13 17:54:54 2008--- src/servers/Makefile Fri Nov 14 18:54:00 2008****************** 19,24 ****--- 19,25 ---- cd ./fs && $(MAKE) $@ cd ./rs && $(MAKE) $@ cd ./ds && $(MAKE) $@+ cd ./ss && $(MAKE) $@ cd ./is && $(MAKE) $@ cd ./init && $(MAKE) $@ cd ./inet && $(MAKE) $@****************** 28,33 ****--- 29,35 ---- cd ./fs && $(MAKE) EXTRA_OPTS=$(EXTRA_OPTS) build cd ./rs && $(MAKE) EXTRA_OPTS=$(EXTRA_OPTS) build cd ./ds && $(MAKE) EXTRA_OPTS=$(EXTRA_OPTS) build+ cd ./ss && $(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 Thu Jan 1 00:00:00 1970--- src/servers/ss/.depend Fri Nov 14 18:46:13 2008****************** 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: store.h+ + store.o: /usr/include/ansi.h+ store.o: /usr/include/errno.h+ store.o: /usr/include/limits.h+ store.o: /usr/include/minix/bitmap.h+ store.o: /usr/include/minix/callnr.h+ store.o: /usr/include/minix/com.h+ store.o: /usr/include/minix/config.h+ store.o: /usr/include/minix/const.h+ store.o: /usr/include/minix/devio.h+ store.o: /usr/include/minix/ipc.h+ store.o: /usr/include/minix/keymap.h+ store.o: /usr/include/minix/sys_config.h+ store.o: /usr/include/minix/syslib.h+ store.o: /usr/include/minix/sysutil.h+ store.o: /usr/include/minix/type.h+ store.o: /usr/include/signal.h+ store.o: /usr/include/stdio.h+ store.o: /usr/include/stdlib.h+ store.o: /usr/include/string.h+ store.o: /usr/include/sys/dir.h+ store.o: /usr/include/sys/types.h+ store.o: /usr/include/unistd.h+ store.o: glo.h+ store.o: inc.h+ store.o: proto.h+ store.o: store.c+ store.o: store.hdiff -c -Nr src.clean/servers/ss/Makefile src/servers/ss/Makefile*** src.clean/servers/ss/Makefile Thu Jan 1 00:00:00 1970--- src/servers/ss/Makefile Fri Nov 14 18:47:12 2008****************** 0 ****--- 1,42 ----+ # Makefile for Data Store Server (DS)+ SERVER = ss+ + # directories+ u = /usr+ i = $u/include+ s = $i/sys+ m = $i/minix+ b = $i/ibm+ k = $u/src/kernel+ p = $u/src/servers/pm+ f = $u/src/servers/fs+ + # programs, flags, etc.+ CC = exec cc+ CFLAGS = -I$i+ LDFLAGS = -i+ LIBS = -lsys -lsysutil + + OBJ = main.o store.o + + # build local binary+ all build: $(SERVER)+ $(SERVER): $(OBJ)+ $(CC) -o $@ $(LDFLAGS) $(OBJ) $(LIBS)+ install -S 16k $@+ + # install with other servers+ install: $(SERVER)+ install -o root -c $? /sbin/$(SERVER)+ # install -o root -cs $? $@+ + # clean up local files+ clean:+ rm -f $(SERVER) *.o *.bak + + depend: + /usr/bin/mkdep "$(CC) -E $(CPPFLAGS)" *.c > .depend+ + # Include generated dependencies.+ include .depend+ diff -c -Nr src.clean/servers/ss/glo.h src/servers/ss/glo.h*** src.clean/servers/ss/glo.h Thu Jan 1 00:00:00 1970--- src/servers/ss/glo.h Fri Nov 14 18:46:13 2008****************** 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 Thu Jan 1 00:00:00 1970--- src/servers/ss/inc.h Fri Nov 14 18:46:13 2008****************** 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>+ + #include "proto.h"+ #include "glo.h"+ #include "store.h"+ diff -c -Nr src.clean/servers/ss/main.c src/servers/ss/main.c*** src.clean/servers/ss/main.c Thu Jan 1 00:00:00 1970--- src/servers/ss/main.c Sat Nov 15 15:38:20 2008****************** 0 ****--- 1,153 ----+ /* Data Store Server. + * This service implements a little publish/subscribe data store that is + * crucial for the system's fault tolerance. Components that require state+ * can store it here, for later retrieval, e.g., after a crash and subsequent+ * restart by the reincarnation server. + * + * Created:+ * Oct 19, 2005 by Jorrit N. Herder+ */+ + #include "inc.h" /* include master header file */+ + /* Allocate space for the global variables. */+ int who_e; /* caller's proc number */+ int callnr; /* system call number */+ int sys_panic; /* flag to indicate system-wide panic */+ + extern int errno; /* error number set by system library */+ + /* Declare some local functions. */+ FORWARD _PROTOTYPE(void init_server, (int argc, char **argv) );+ FORWARD _PROTOTYPE(void exit_server, (void) );+ FORWARD _PROTOTYPE(void sig_handler, (void) );+ FORWARD _PROTOTYPE(void get_work, (message *m_ptr) );+ FORWARD _PROTOTYPE(void reply, (int whom, message *m_ptr) );+ + /*===========================================================================*+ * main *+ *===========================================================================*/+ PUBLIC int main(int argc, char **argv)+ {+ /* This is the main routine of this service. The main loop consists of + * three major activities: getting new work, processing the work, and+ * sending the reply. The loop never terminates, unless a panic occurs.+ */+ message m;+ int result; + sigset_t sigset;+ + /* Initialize the server, then go to work. */+ init_server(argc, argv);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -