⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 patch

📁 MINIX操作系统的内核修改补丁
💻
📖 第 1 页 / 共 2 页
字号:
+ +   /* Main loop - get work and do it, forever. */         +   while (TRUE) {              + +       /* Wait for incoming message, sets 'callnr' and 'who'. */+       get_work(&m);+ +       switch (callnr) {+       case PROC_EVENT:+ 	  sig_handler();+           continue;+       case SEMA_INIT:+           result = do_init(&m);+           break;+       case SEMA_DOWN:+ 	  result = do_down(&m);+ 	  break;+       case SEMA_UP:+ 	  result = do_up(&m);+ 	  break;+       case SEMA_RELEASE:+ 	  result = do_release(&m); +       case GETSYSINFO:+ 	  result = do_getsysinfo(&m);+ 	  break;+       default: +           report("DS","warning, got illegal request from:", m.m_source);+           result = EINVAL;+       }+ +       /* Finally send reply message, unless disabled. */+       if (result != EDONTREPLY) {+           m.m_type = result;  		/* build reply message */+ 	  reply(who_e, &m);		/* send it away */+       }+   }+   return(OK);				/* shouldn't come here */+ }+ + /*===========================================================================*+  *				 init_server                                 *+  *===========================================================================*/+ PRIVATE void init_server(int argc, char **argv)+ {+ /* Initialize the data store server. */+   int i, s;+   struct sigaction sigact;+ +   /* Install signal handler. Ask PM to transform signal into message. */+   sigact.sa_handler = SIG_MESS;+   sigact.sa_mask = ~0;			/* block all other signals */+   sigact.sa_flags = 0;			/* default behaviour */+   if (sigaction(SIGTERM, &sigact, NULL) < 0) +       report("DS","warning, sigaction() failed", errno);+ }+ + /*===========================================================================*+  *				 sig_handler                                 *+  *===========================================================================*/+ PRIVATE void sig_handler()+ {+ /* Signal handler. */+   sigset_t sigset;+   int sig;+ +   /* Try to obtain signal set from PM. */+   if (getsigset(&sigset) != 0) return;+ +   /* Check for known signals. */+   if (sigismember(&sigset, SIGTERM)) {+       exit_server();+   }+ }+ + /*===========================================================================*+  *				exit_server                                  *+  *===========================================================================*/+ PRIVATE void exit_server()+ {+ /* Shut down the information service. */+ +   /* Done. Now exit. */+   exit(0);+ }+ + /*===========================================================================*+  *				get_work                                     *+  *===========================================================================*/+ PRIVATE void get_work(m_ptr)+ message *m_ptr;				/* message buffer */+ {+     int status = 0;+     status = receive(ANY, m_ptr);   /* this blocks until message arrives */+     if (OK != status)+         panic("SS","failed to receive message!", status);+     who_e = m_ptr->m_source;        /* message arrived! set sender */+     callnr = m_ptr->m_type;       /* set function call number */+ }+ + /*===========================================================================*+  *				reply					     *+  *===========================================================================*/+ PRIVATE void reply(who_e, m_ptr)+ int who_e;                           	/* destination */+ message *m_ptr;				/* message buffer */+ {+     int s;+     s = send(who_e, m_ptr);    /* send the message */+     if (OK != s)+         panic("SS", "unable to send reply!", s);+ }+ diff -c -Nr src.clean/servers/ss/proto.h src/servers/ss/proto.h*** src.clean/servers/ss/proto.h	Thu Jan  1 00:00:00 1970--- src/servers/ss/proto.h	Fri Nov 14 20:45:35 2008****************** 0 ****--- 1,12 ----+ /* Function prototypes. */+ + /* main.c */+ _PROTOTYPE(int main, (int argc, char **argv));+ + /* sema.c */+ _PROTOTYPE(int do_init, (message *m_ptr));+ _PROTOTYPE(int do_down, (message *m_ptr));+ _PROTOTYPE(int do_up, (message *m_ptr));+ _PROTOTYPE(int do_release, (message *m_ptr));+ _PROTOTYPE(int do_getsysinfo, (message *m_ptr));+ diff -c -Nr src.clean/servers/ss/store.c src/servers/ss/store.c*** src.clean/servers/ss/store.c	Thu Jan  1 00:00:00 1970--- src/servers/ss/store.c	Sat Nov 15 15:37:29 2008****************** 0 ****--- 1,42 ----+ /* Implementation of the Data Store. */+ + #include "inc.h"+ + PUBLIC int do_init(m_ptr)+ message *m_ptr;					/* request message */+ {+ +     printf("ss:init,%d",m_ptr->m_source);+   return(OK);+ }+ + + PUBLIC int do_up(m_ptr)+ message *m_ptr;					/* request message */+ {+   return(OK);					/* key not found */+ }+ + + PUBLIC int do_down(m_ptr)+ message *m_ptr;					/* request message */+ {+   return(OK);+ }+ + PUBLIC int do_release(m_ptr)+ message *m_ptr;					/* request message */+ {+   return(OK);+ }+ + + /*===========================================================================*+  *				do_getsysinfo				     *+  *===========================================================================*/+ PUBLIC int do_getsysinfo(m_ptr)+ message *m_ptr;+ {+   return(OK);+ }+ diff -c -Nr src.clean/servers/ss/store.h src/servers/ss/store.h*** src.clean/servers/ss/store.h	Thu Jan  1 00:00:00 1970--- src/servers/ss/store.h	Fri Nov 14 19:57:49 2008****************** 0 ****--- 1,7 ----+ /* Type definitions for the Data Store Server. */+ struct semaphore {+   int sema_nr;			/* flags for this store */+   int start_nr;			/* key to lookup information */+ };+ + diff -c -Nr src.clean/tools/Makefile src/tools/Makefile*** src.clean/tools/Makefile	Thu Nov 13 17:54:56 2008--- src/tools/Makefile	Fri Nov 14 20:19:43 2008****************** 11,16 ****--- 11,17 ----  	../servers/fs/fs \  	../servers/rs/rs \  	../servers/ds/ds \+ 	../servers/ss/ss \  	../drivers/tty/tty \  	../drivers/memory/memory \  	../drivers/log/log \diff -c -Nr src.clean/tools/Makefile~ src/tools/Makefile~*** src.clean/tools/Makefile~	Thu Jan  1 00:00:00 1970--- src/tools/Makefile~	Sun Apr  9 23:16:13 2006****************** 0 ****--- 1,100 ----+ # Makefile for the kernel image.+ + u=/usr+ CC=	exec cc+ CFLAGS=	-O -D_MINIX -D_POSIX_SOURCE+ MDEC=	/usr/mdec+ + # Specify the programs that are part of the system image.+ PROGRAMS=	../kernel/kernel \+ 	../servers/pm/pm \+ 	../servers/fs/fs \+ 	../servers/rs/rs \+ 	../servers/ds/ds \+ 	../drivers/tty/tty \+ 	../drivers/memory/memory \+ 	../drivers/log/log \+ 	../servers/init/init+ + usage:	+ 	@echo " " >&2+ 	@echo "Master Makefile to create new MINIX configuration." >& 2+ 	@echo "Root privileges are required." >&2+ 	@echo " " >&2+ 	@echo "Usage:" >&2+ 	@echo "	make includes   # Install include files" >&2+ 	@echo "	make depend     # Generate dependency files" >&2+ 	@echo "	make libraries  # Make system libraries" >&2+ 	@echo "	make services   # Compile and install all services" >&2+ 	@echo "	make fresh      # Make clean, libraries, and services" >&2+ 	@echo "	make image      # Make needed services and create boot image" >&2+ 	@echo "	make install    # Make image, and install to hard disk" >&2+ 	@echo "	make hdboot     # Make image, and install to hard disk" >&2+ 	@echo "	make fdboot     # Make image, and install to floppy disk" >&2+ 	@echo "	make bootable   # Make hard disk bootable" >&2+ 	@echo "	make clean      # Remove all compiler results, except libs" >&2+ 	@echo " " >&2+ 	@echo "To create a fresh MINIX configuration, try:" >&2+ 	@echo "	make clean install      # new boot image" >&2+ 	@echo "	make fresh install      # new everything" >&2+ 	@echo " " >&2+ + # create a fresh configuration or system image+ fresh: + 	cd ../lib && $(MAKE) clean+ 	$(MAKE) clean + 	$(MAKE) libraries services+ + all: services image+ + image:  includes+ 	cd ../kernel && $(MAKE) + 	cd ../servers && $(MAKE) image+ 	cd ../drivers && $(MAKE) image+ 	installboot -image $@ $(PROGRAMS)+ + image_small:  includes+ 	cd ../kernel && $(MAKE) + 	cd ../servers && $(MAKE) EXTRA_OPTS=-D_MINIX_SMALL=1 image+ 	cd ../drivers && $(MAKE) EXTRA_OPTS=$(EXTRA_OPTS) image+ 	installboot -image $@ $(PROGRAMS)+ + # rebuild the program or system libraries+ includes:+ 	cd ../include && $(MAKE) install+ + depend: includes+ 	cd ../ && $(MAKE) depend+ + services: includes + 	cd ../kernel && $(MAKE) + 	cd ../servers && $(MAKE) install+ 	cd ../drivers && $(MAKE) install+ + libraries: includes+ 	cd ../lib && $(MAKE) clean+ 	cd ../lib && $(MAKE) all+ 	cd ../lib && $(MAKE) install+ + + # make bootable and place system images+ bootable:+ 	exec su root mkboot bootable+ + hdboot:	image+ 	exec sh mkboot $@+ 	@sync+ + fdboot:	image+ 	exec su root mkboot $@+ 	@sync+ + install: includes services hdboot+ + # clean up compile results+ clean:+ 	cd ../kernel && $(MAKE) $@+ 	cd ../servers && $(MAKE) $@+ 	cd ../drivers && $(MAKE) $@+ 	rm -rf *.bak image image_small *.iso *.iso.gz cdfdimage rootimage src+ diff -c -Nr src.clean/tools/revision src/tools/revision*** src.clean/tools/revision	Thu Nov 13 17:54:56 2008--- src/tools/revision	Sat Nov 15 15:38:37 2008****************** 1 ****! 0--- 1 ----! 20

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -