]> Zhao Yanbai Git Server - minix.git/commitdiff
*** empty log message ***
authorJorrit Herder <jnherder@minix3.org>
Tue, 23 Aug 2005 11:31:32 +0000 (11:31 +0000)
committerJorrit Herder <jnherder@minix3.org>
Tue, 23 Aug 2005 11:31:32 +0000 (11:31 +0000)
kernel/proc.c
kernel/table.c
servers/Makefile
servers/is/dmp.c
servers/pm/main.c
servers/rs/Makefile [new file with mode: 0644]
servers/rs/manager.c [moved from servers/sm/manager.c with 99% similarity]
servers/rs/proto.h [moved from servers/sm/proto.h with 99% similarity]
servers/rs/rs.c [moved from servers/sm/sm.c with 85% similarity]
servers/rs/rs.h [moved from servers/sm/sm.h with 100% similarity]
servers/rs/service.c [moved from servers/sm/service.c with 95% similarity]

index 1dac41ff3177136eb64c5bd3a6a0347ff94d4424..3727d492aba08effe11556857d15a332b099eba0 100755 (executable)
@@ -511,18 +511,11 @@ int *front;                                       /* return: front or back */
       prev_ptr = rp;                           /* store ptr for next */
   }
 
-#if 0
-  if (priv(rp)->s_flags & BILLABLE) {          /* user process */
-  }
-  else {                                       /* system process */
-  }
-#endif
-
   /* Determine the new priority of this process. The bounds are determined
    * by IDLE's queue and the maximum priority of this process. Kernel task 
    * and the idle process are never changed in priority.
    */
-  if (! iskernelp(rp) && penalty != 0) {
+  if (penalty != 0 && ! iskernelp(rp)) {
       rp->p_priority += penalty;               /* update with penalty */
       if (rp->p_priority < rp->p_max_priority)  /* check upper bound */ 
           rp->p_priority=rp->p_max_priority;
index 16b88bfa5209e8c6b32089e1721aebae26473596..8696917b39aacdcb507327ff3a6d6d7c6cbe53a1 100755 (executable)
 PUBLIC char *t_stack[TOT_STACK_SPACE / sizeof(char *)];
        
 /* Define flags for the various process types. */
-#define IDL_F  (SYS_PROC | PREEMPTIBLE | BILLABLE)  /* idle task */
-#define TSK_F  (SYS_PROC)                      /* kernel tasks */
-#define SRV_F  (SYS_PROC | PREEMPTIBLE)        /* system services */
-#define USR_F  (BILLABLE | PREEMPTIBLE)        /* user processes */
+#define IDL_F  (SYS_PROC | PREEMPTIBLE | BILLABLE)     /* idle task */
+#define TSK_F  (SYS_PROC)                              /* kernel tasks */
+#define SRV_F  (SYS_PROC | PREEMPTIBLE)                /* system services */
+#define USR_F  (BILLABLE | PREEMPTIBLE)                /* user processes */
 
 /* Define system call traps for the various process types. These call masks
  * determine what system call traps a process is allowed to make.
index fadeba6a8ac0732ff70c1ea3d168782d2f97045f..076a7d0d42ea1e7a98c1e5db4e96351281848cde 100644 (file)
@@ -16,7 +16,7 @@ build: all
 all install depend clean:
        cd ./pm && $(MAKE) $@
        cd ./fs && $(MAKE) $@
-       cd ./sm && $(MAKE) $@
+       cd ./rs && $(MAKE) $@
        cd ./is && $(MAKE) $@
        cd ./init && $(MAKE) $@
        cd ./inet && $(MAKE) $@
index 2535979ce2f5ea44dee2c1f80116203289a1484a..7a46b483738a3ef554c51e1140317a5e9bc0421c 100644 (file)
@@ -40,7 +40,6 @@ PUBLIC int do_fkey_pressed(message *m)
   if (pressed(F11))    timing_dmp();
   if (pressed(F12))    sched_dmp();
 
-#if DEAD_CODE
   if (pressed(F9)) { 
        printf("IS server going into infinite loop... hit 5x a function key\n");
        printf("Five times a function key is fine as well ...\n");
@@ -52,7 +51,6 @@ PUBLIC int do_fkey_pressed(message *m)
        printf("IS server back to normal ... \n");
        return(EDONTREPLY);
   }
-#endif
 
   /* Also check Shift F1-F6 keys. */
   if (pressed(SF1))    mproc_dmp();
index 1bb1939d6ef0c2f29df1dfb082ed8aa764c4522d..163238f800f4cad923682deaac57987e488785d2 100644 (file)
@@ -205,7 +205,7 @@ PRIVATE void pm_init()
                /* Set process details found in the image table. */
                rmp = &mproc[ip->proc_nr];      
                strncpy(rmp->mp_name, ip->proc_name, PROC_NAME_LEN); 
-               rmp->mp_parent = SM_PROC_NR;
+               rmp->mp_parent = RS_PROC_NR;
                rmp->mp_nice = get_nice_value(ip->priority);
                if (ip->proc_nr == INIT_PROC_NR) {      /* user process */
                        rmp->mp_pid = INIT_PID;
diff --git a/servers/rs/Makefile b/servers/rs/Makefile
new file mode 100644 (file)
index 0000000..ae8b167
--- /dev/null
@@ -0,0 +1,45 @@
+# Makefile for Reincarnation Server (RS)
+SERVER = rs
+UTIL = service
+
+# directories
+u = /usr
+i = $u/include
+s = $i/sys
+m = $i/minix
+b = $i/ibm
+
+# programs, flags, etc.
+CC =   exec cc
+CFLAGS = -I$i
+LDFLAGS = -i
+UTIL_LIBS = -lsys 
+LIBS = -lsys -lsysutil 
+
+UTIL_OBJ = service.o
+OBJ = rs.o manager.o 
+
+# build local binary
+all build:     $(SERVER) $(UTIL)
+$(UTIL):       $(UTIL_OBJ)
+       $(CC) -o $@ $(LDFLAGS) $(UTIL_OBJ) $(UTIL_LIBS)
+$(SERVER):     $(OBJ)
+       $(CC) -o $@ $(LDFLAGS) $(OBJ) $(LIBS)
+
+# install with other servers
+install:       /bin/$(UTIL) /usr/sbin/$(SERVER)
+/bin/$(UTIL):  $(UTIL)
+       install -c $? $@
+/usr/sbin/$(SERVER):   $(SERVER)
+       install -o root -c $? $@
+
+# clean up local files
+clean:
+       rm -f $(UTIL) $(SERVER) *.o *.bak 
+
+depend: 
+       /usr/bin/mkdep "$(CC) -E $(CPPFLAGS)" *.c > .depend
+
+# Include generated dependencies.
+include .depend
+
similarity index 99%
rename from servers/sm/manager.c
rename to servers/rs/manager.c
index 7f5b9f48d8f9a191d14c4560ff5be1cd0b61e465..2b5711969ef1fe4fe7a2e7ad800f580236f3e8f9 100644 (file)
@@ -9,7 +9,7 @@
  *   Jul 22, 2005:     Created  (Jorrit N. Herder)
  */
 
-#include "sm.h"
+#include "rs.h"
 #include <unistd.h>
 #include <sys/types.h>
 #include <sys/wait.h>
@@ -99,6 +99,7 @@ PUBLIC int do_start(message *m_ptr)
   return(OK);
 }
 
+
 /*===========================================================================*
  *                                do_stop                                   *
  *===========================================================================*/
@@ -139,3 +140,4 @@ PUBLIC int do_exit(message *m_ptr)
   return(OK);
 }
 
+
similarity index 99%
rename from servers/sm/proto.h
rename to servers/rs/proto.h
index bee7deeb2b768adb4f637fd517d9537c7e9b8c53..5220782416c743f4e6e1b197e78972efcf0f3a4e 100644 (file)
@@ -8,3 +8,4 @@ _PROTOTYPE( int do_exit, (message *m));
 _PROTOTYPE( int do_start, (message *m));
 _PROTOTYPE( int do_stop, (message *m));
 
+
similarity index 85%
rename from servers/sm/sm.c
rename to servers/rs/rs.c
index 09f64ff7b2456dc0cf8a8a777fe972bd3b39c174..e4be0d0510c932c130e8f8c76ed779a2cda4d63d 100644 (file)
@@ -1,10 +1,11 @@
-/* System Process Manager. 
+/* Reincarnation Server.  This servers starts new system services and detects
+ * they are exiting.  In case of errors, system services can be restarted.  
  * 
  * Created:
  *   Jul 22, 2005      by Jorrit N. Herder
  */
 
-#include "sm.h"
+#include "rs.h"
 
 /* Set debugging level to 0, 1, or 2 to see no, some, all debug output. */
 #define DEBUG_LEVEL    1
@@ -70,7 +71,7 @@ PUBLIC void main(void)
           result = do_stop(&m_in);
           break;
       default: 
-          printf("Warning, SM got unexpected request %d from %d\n",
+          printf("Warning, RS got unexpected request %d from %d\n",
                m_in.m_type, m_in.m_source);
           result = EINVAL;
       }
@@ -82,12 +83,13 @@ PUBLIC void main(void)
   }
 }
 
+
 /*===========================================================================*
  *                              init_server                                 *
  *===========================================================================*/
 PRIVATE void init_server(void)
 {
-/* Initialize the information service. */
+/* Initialize the reincarnation server. */
   int i, s;
   struct sigaction sa;
 
@@ -95,12 +97,13 @@ PRIVATE void init_server(void)
   sa.sa_handler = SIG_MESS;
   sigemptyset(&sa.sa_mask);
   sa.sa_flags = 0;
-  if (sigaction(SIGCHLD, &sa, NULL)<0) panic("SM","sigaction failed", errno);
-  if (sigaction(SIGTERM, &sa, NULL)<0) panic("SM","sigaction failed", errno);
-  if (sigaction(SIGABRT, &sa, NULL)<0) panic("SM","sigaction failed", errno);
-  if (sigaction(SIGHUP,  &sa, NULL)<0) panic("SM","sigaction failed", errno);
+  if (sigaction(SIGCHLD, &sa, NULL)<0) panic("RS","sigaction failed", errno);
+  if (sigaction(SIGTERM, &sa, NULL)<0) panic("RS","sigaction failed", errno);
+  if (sigaction(SIGABRT, &sa, NULL)<0) panic("RS","sigaction failed", errno);
+  if (sigaction(SIGHUP,  &sa, NULL)<0) panic("RS","sigaction failed", errno);
 }
 
+
 /*===========================================================================*
  *                                get_work                                  *
  *===========================================================================*/
@@ -109,11 +112,12 @@ PRIVATE void get_work()
     int status = 0;
     status = receive(ANY, &m_in);   /* this blocks until message arrives */
     if (OK != status)
-        panic("SM","failed to receive message!", status);
+        panic("RS","failed to receive message!", status);
     who = m_in.m_source;        /* message arrived! set sender */
     callnr = m_in.m_type;       /* set function call number */
 }
 
+
 /*===========================================================================*
  *                             reply                                        *
  *===========================================================================*/
@@ -125,6 +129,8 @@ int result;                                 /* report result to replyee */
     m_out.m_type = result;             /* build reply message */
     send_status = send(who, &m_out);    /* send the message */
     if (OK != send_status)
-        panic("SM", "unable to send reply!", send_status);
+        panic("RS", "unable to send reply!", send_status);
 }
 
+
+
similarity index 100%
rename from servers/sm/sm.h
rename to servers/rs/rs.h
similarity index 95%
rename from servers/sm/service.c
rename to servers/rs/service.c
index 17a9048ee9be4eb13f427f0d228da02ff1b556fa..8719ca9de23c344525f20d975773f736a3dc128b 100644 (file)
@@ -1,3 +1,10 @@
+/* Utility to start or stop system services.  Requests are sent to the 
+ * reincarnation server that does the actual work. 
+ *
+ * Changes:
+ *   Jul 22, 2005:     Created  (Jorrit N. Herder)
+ */
+
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
@@ -11,6 +18,7 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 
+
 /* This array defines all known requests. */
 PRIVATE char *known_requests[] = {
   "up", 
@@ -68,6 +76,7 @@ PRIVATE void panic(char *app_name, char *mess, int num)
   exit(EGENERIC);
 }
 
+
 /* Parse and verify correctness of arguments. Report problem and exit if an 
  * error is found. Store needed parameters in global variables.
  */
@@ -139,6 +148,7 @@ PRIVATE int parse_arguments(int argc, char **argv)
   return(i);
 }
 
+
 /* Main program. 
  */
 PUBLIC int main(int argc, char **argv)
@@ -164,7 +174,7 @@ PUBLIC int main(int argc, char **argv)
       m.SRV_ARGS_ADDR = req_args;
       m.SRV_ARGS_LEN = strlen(req_args);
       m.SRV_DEV_MAJOR = req_major;
-      if (OK != (s=_taskcall(SM_PROC_NR, SRV_UP, &m))) 
+      if (OK != (s=_taskcall(RS_PROC_NR, SRV_UP, &m))) 
           panic(argv[ARG_NAME], "sendrec to manager server failed", s);
       result = m.m_type;
       break;