]> Zhao Yanbai Git Server - minix.git/commitdiff
Add MKLIVEUPDATE and MKSTATECTL
authorArun Thomas <arun.thomas@gmail.com>
Fri, 2 Sep 2011 14:57:22 +0000 (16:57 +0200)
committerArun Thomas <arun.thomas@gmail.com>
Fri, 2 Sep 2011 14:57:22 +0000 (16:57 +0200)
common/include/minix/sef.h
kernel/Makefile
kernel/config.h
lib/libdriver/Makefile
lib/libdriver/driver.c
lib/libsys/Makefile
lib/libsys/sef.c
servers/rs/main.c
share/mk/bsd.own.mk

index bd9e8fadd4cf51cee0bdff1946b43109a3d300fb..d78b395531cca340d85a4ac151c9b64f867cd01c 100644 (file)
@@ -231,5 +231,10 @@ _PROTOTYPE( void sef_cb_signal_handler_posix_default, (int signo) );
 #define sef_signal_debug_begin          sef_debug_begin
 #define sef_signal_debug_end            sef_debug_end
 
+#if !defined(USE_LIVEUPDATE)
+#undef INTERCEPT_SEF_LU_REQUESTS
+#undef SEF_LU_DEBUG
+#endif
+
 #endif /* _SEF_H */
 
index 7c7f7916c68930f0e422d8f1bec7cd0e5d8fe50f..5703a62110cdbec42f249d71626ce9230ca70b07 100644 (file)
@@ -73,6 +73,14 @@ SRCS+=       debug.c
 CPPFLAGS+= -DUSE_SYSDEBUG
 .endif
 
+.if ${USE_LIVEUPDATE} != "no"
+CPPFLAGS+= -DUSE_UPDATE
+.endif
+
+.if ${USE_STATECTL} != "no"
+CPPFLAGS+= -DUSE_STATECTL
+.endif
+
 # These come last, so the profiling buffer is at the end of the data segment
 SRCS+= profile.c do_sprofile.c
 
index b688f4769c2804d63c49098c284ce595f0ec8532..3fff2d3d4ceef4314e0ac0f51926237a2de78205 100644 (file)
@@ -42,8 +42,6 @@
 #define USE_PHYSCOPY      1    /* copy using physical addressing */
 #define USE_MEMSET        1    /* write char to a given memory area */
 #define USE_RUNCTL         1   /* control stop flags of a process */
-#define USE_UPDATE         1   /* update a process into another */
-#define USE_STATECTL       1    /* let a process control its state */
 
 /* Length of program names stored in the process table. This is only used
  * for the debugging dumps that can be generated with the IS server. The PM
index 3f2a1c7cbbf64592864efc2c626a2b5756614967..4d74e0cc7c083824adb434314e0a8731e3b4eaea 100644 (file)
@@ -1,7 +1,12 @@
 # Makefile for libdriver
+.include <bsd.own.mk>
 
 LIB=   driver
 
 SRCS=  driver.c drvlib.c mq.c
 
+.if ${USE_STATECTL} != "no"
+CPPFLAGS+= -DUSE_STATECTL
+.endif
+
 .include <bsd.lib.mk>
index e90054ce6f05a46f546150edec2104687f75a492..3fe6d05b862f0df451417128c1860c85b99ee24b 100644 (file)
@@ -230,10 +230,12 @@ PUBLIC void driver_announce()
    * For this reason, there may blocked callers when a driver restarts.
    * Ask the kernel to unblock them (if any).
    */
+#if USE_STATECTL
   r = sys_statectl(SYS_STATE_CLEAR_IPC_REFS);
   if (r != OK) {
        panic("driver_announce: sys_statectl failed: %d\n", r);
   }
+#endif
 
   /* Publish a driver up event. */
   r = ds_retrieve_label_name(label, getprocnr());
index 1ba8c4f295dd496d20805997ae0930151457d337..a67c57a9185c1eb2e725edc370efaf40d12c6e56 100644 (file)
@@ -132,6 +132,10 @@ SRCS+=     gcov.c \
 CPPFLAGS+= -DUSE_COVERAGE
 .endif
 
+.if ${USE_LIVEUPDATE} != "no"
+CPPFLAGS+= -DUSE_LIVEUPDATE
+.endif
+
 CPPFLAGS.sched_start.c+=       -I${MINIXSRCDIR}
 
 .if (${CC} == "gcc") || (${CC} == "clang")
index d5066a89e06db87371513d9486e0c12ff210c6a5..cbe31344b56a859757eba4d1678b175b96346663 100644 (file)
@@ -60,6 +60,7 @@ PUBLIC void sef_startup()
   sef_self_priv_flags = priv_flags;
   old_endpoint = NONE;
 
+#if USE_LIVEUPDATE
   /* RS may wake up with the wrong endpoint, perfom the update in that case. */
   if((sef_self_priv_flags & ROOT_SYS_PROC) && sef_self_endpoint != RS_PROC_NR) {
       r = vm_update(RS_PROC_NR, sef_self_endpoint);
@@ -70,6 +71,7 @@ PUBLIC void sef_startup()
       old_endpoint = sef_self_endpoint;
       sef_self_endpoint = RS_PROC_NR;
   }
+#endif /* USE_LIVEUPDATE */
 
 #if INTERCEPT_SEF_INIT_REQUESTS
   /* Intercept SEF Init requests. */
index de156169969ebd11e94bd38c91c62b9d861f10c5..cd287241cd34f85773315a170fc1eec2ce088159 100644 (file)
@@ -430,6 +430,7 @@ PRIVATE int sef_cb_init_fresh(int type, sef_init_info_t *info)
   if (OK != (s=sys_setalarm(RS_DELTA_T, 0)))
       panic("couldn't set alarm: %d", s);
 
+#if USE_LIVEUPDATE
   /* Now create a new RS instance with a private page table and let the current
    * instance live update into the replica. Clone RS' own slot first.
    */
@@ -489,6 +490,7 @@ PRIVATE int sef_cb_init_fresh(int type, sef_init_info_t *info)
       }
       NOT_REACHABLE;
   }
+#endif /* USE_LIVEUPDATE */
 
   return(OK);
 }
index c4192bfd36c0b1322a49c0f7f5a940aae027bd0b..570172e979e7b81c7a3116726ac31325a2e3d5d8 100644 (file)
@@ -759,7 +759,8 @@ _MKVARS.yes= \
        MKYP
 #MINIX-specific vars
 _MKVARS.yes+= \
-       MKWATCHDOG MKACPI MKAPIC MKMCONTEXT MKDEBUGREG MKSYSDEBUG
+       MKWATCHDOG MKACPI MKAPIC MKMCONTEXT MKDEBUGREG MKSYSDEBUG \
+       MKLIVEUPDATE MKSTATECTL
 .for var in ${_MKVARS.yes}
 ${var}?=       yes
 .endfor
@@ -826,6 +827,8 @@ MKMCONTEXT:=        no
 MKCOVERAGE:=   no
 MKDEBUGREG:=   no
 MKSYSDEBUG:=   no
+MKLIVEUPDATE:= no
+MKSTATECTL:=   no
 .endif
 
 #
@@ -887,7 +890,8 @@ ${var}?= no
 # variable is set to "no".
 #
 .for var in USE_HESIOD USE_INET6 USE_KERBEROS USE_LDAP USE_PAM USE_YP \
-USE_WATCHDOG USE_ACPI USE_APIC USE_MCONTEXT USE_DEBUGREG USE_SYSDEBUG
+USE_WATCHDOG USE_ACPI USE_APIC USE_MCONTEXT USE_DEBUGREG USE_SYSDEBUG \
+USE_LIVEUPDATE USE_STATECTL
 .if (${${var:S/USE_/MK/}} == "no")
 ${var}:= no
 .else