]> Zhao Yanbai Git Server - minix.git/commitdiff
services: Selectively enable stateful restart. 14/3114/1
authorCristiano Giuffrida <giuffrida@cs.vu.nl>
Sat, 20 Dec 2014 10:45:05 +0000 (11:45 +0100)
committerDavid van Moolenbroek <david@minix3.org>
Thu, 17 Sep 2015 13:36:01 +0000 (13:36 +0000)
Change-Id: Ibf6afa3041013ca714e28b673abb1329cd72d2d5

46 files changed:
lib/libpuffs/puffs.c
minix/drivers/bus/i2c/i2c.c
minix/drivers/bus/pci/main.c
minix/drivers/bus/ti1225/ti1225.c
minix/drivers/clock/readclock/readclock.c
minix/drivers/eeprom/cat24c256/cat24c256.c
minix/drivers/examples/hello/hello.c
minix/drivers/iommu/amddev/amddev.c
minix/drivers/power/acpi/acpi.c
minix/drivers/power/tps65217/tps65217.c
minix/drivers/power/tps65950/tps65950.c
minix/drivers/sensors/bmp085/bmp085.c
minix/drivers/sensors/sht21/sht21.c
minix/drivers/sensors/tsl2550/tsl2550.c
minix/drivers/storage/ahci/ahci.c
minix/drivers/storage/at_wini/at_wini.c
minix/drivers/storage/filter/main.c
minix/drivers/storage/floppy/floppy.c
minix/drivers/storage/memory/memory.c
minix/drivers/storage/mmc/mmcblk.c
minix/drivers/storage/virtio_blk/virtio_blk.c
minix/drivers/system/random/main.c
minix/drivers/tty/pty/tty.c
minix/drivers/tty/tty/tty.c
minix/drivers/video/fb/fb.c
minix/drivers/video/tda19988/tda19988.c
minix/fs/ext2/main.c
minix/fs/isofs/main.c
minix/fs/mfs/main.c
minix/fs/pfs/pfs.c
minix/fs/procfs/main.c
minix/include/minix/sef.h
minix/lib/libnetdriver/netdriver.c
minix/lib/libsys/sef_init.c
minix/lib/libvtreefs/vtreefs.c
minix/net/inet/inet.c
minix/net/lwip/lwip.c
minix/net/uds/uds.c
minix/servers/ds/main.c
minix/servers/ipc/main.c
minix/servers/is/main.c
minix/servers/pm/main.c
minix/servers/rs/main.c
minix/servers/sched/main.c
minix/servers/vfs/main.c
minix/servers/vm/main.c

index d419631f99f366331dc266a65edcae6cb48dc6f1..5e645536fac4cbd4ec1c484494224b43b4072d34 100644 (file)
@@ -638,9 +638,6 @@ static void sef_local_startup(void)
 {
   /* Register init callbacks. */
   sef_setcb_init_fresh(sef_cb_init_fresh);
-  sef_setcb_init_restart(sef_cb_init_fail);
-
-  /* No live update support for now. */
 
   /* Register signal callbacks. */
   sef_setcb_signal_handler(sef_cb_signal_handler);
index 4e753890ea95ca02e4f8e227f795a7873aaca7d5..3714d8a421dc1e6ce190376c5954c9a067a280fe 100644 (file)
@@ -474,11 +474,6 @@ sef_local_startup()
        sef_setcb_init_restart(sef_cb_init);
 
        /* Register live update callbacks */
-       /* Agree to update immediately when LU is requested in a valid state */
-       sef_setcb_lu_prepare(sef_cb_lu_prepare_always_ready);
-       /* - Support live update starting from any standard state */
-       sef_setcb_lu_state_isvalid(sef_cb_lu_state_isvalid_standard);
-       /* - Register a custom routine to save the state. */
        sef_setcb_lu_state_save(sef_cb_lu_state_save);
 
        /* Let SEF perform startup. */
index ddc8505ced845c542f7b36499e40d224887bc81c..7c6dfe10173459826f29a08420ac947fe4a8c570 100644 (file)
@@ -718,21 +718,6 @@ sef_local_startup(void)
        sef_setcb_init_lu(sef_cb_init);
        sef_setcb_init_restart(sef_cb_init);
 
-       /*
-        * Register live update callbacks.
-        */
-
-       /* - Agree to update immediately when LU is requested in a valid
-        * state. */
-       sef_setcb_lu_prepare(sef_cb_lu_prepare_always_ready);
-       /* - Support live update starting from any standard state. */
-       sef_setcb_lu_state_isvalid(sef_cb_lu_state_isvalid_standard);
-
-#if 0
-       /* - Register a custom routine to save the state. */
-       sef_setcb_lu_state_save(sef_cb_lu_state_save);
-#endif
-
        /* Let SEF perform startup. */
        sef_startup();
 }
index 7dd8ec4c00b8703a991ae499595904c16a08cdf5..fb7b68849176658c57fbf9eefccb1d5d5cf5a088 100644 (file)
@@ -74,10 +74,6 @@ static void sef_local_startup()
        sef_setcb_init_lu(sef_cb_init_fresh);
        sef_setcb_init_restart(sef_cb_init_fresh);
 
-       /* Register live update callbacks. */
-       sef_setcb_lu_prepare(sef_cb_lu_prepare_always_ready);
-       sef_setcb_lu_state_isvalid(sef_cb_lu_state_isvalid_standard);
-
        /* Let SEF perform startup. */
        sef_startup();
 }
index 2435f2742ec0d53d506ee9b40b8a98b37d861845..b3c0990ef1f74ffa10de2515f761c029748011ab 100644 (file)
@@ -160,14 +160,6 @@ sef_local_startup()
        sef_setcb_init_lu(sef_cb_init);
        sef_setcb_init_restart(sef_cb_init);
 
-       /*
-        * Register live update callbacks.
-        */
-       /* Agree to update immediately when LU is requested in a valid state. */
-       sef_setcb_lu_prepare(sef_cb_lu_prepare_always_ready);
-       /* Support live update starting from any standard state. */
-       sef_setcb_lu_state_isvalid(sef_cb_lu_state_isvalid_standard);
-
        /* Let SEF perform startup. */
        sef_startup();
 }
index 94fd45f72bc3ee952e5994e9492845a754648b7e..4b02a32c486443dc8ca363b7a77b273cf168b3fb 100644 (file)
@@ -472,11 +472,6 @@ sef_local_startup(void)
        /*
         * Register live update callbacks.
         */
-       /* Agree to update immediately when LU is requested in a valid state. */
-       sef_setcb_lu_prepare(sef_cb_lu_prepare_always_ready);
-       /* Support live update starting from any standard state. */
-       sef_setcb_lu_state_isvalid(sef_cb_lu_state_isvalid_standard);
-       /* Register a custom routine to save the state. */
        sef_setcb_lu_state_save(sef_cb_lu_state_save);
 
        /* Let SEF perform startup. */
index 6683a0e5e167dc02ea9619438623e8cd0e58cea6..5b9e63b4c557d8621c75c3c8721fa4fe19b60242 100644 (file)
@@ -103,11 +103,6 @@ static void sef_local_startup()
     /*
      * Register live update callbacks.
      */
-    /* - Agree to update immediately when LU is requested in a valid state. */
-    sef_setcb_lu_prepare(sef_cb_lu_prepare_always_ready);
-    /* - Support live update starting from any standard state. */
-    sef_setcb_lu_state_isvalid(sef_cb_lu_state_isvalid_standard);
-    /* - Register a custom routine to save the state. */
     sef_setcb_lu_state_save(sef_cb_lu_state_save);
 
     /* Let SEF perform startup. */
index c84c8b3f6278c1eac55412760a1aaff2a49d0dfc..b5d61927f3cb7930382437508f4a17b6b83d3d9d 100644 (file)
@@ -102,10 +102,6 @@ static void sef_local_startup()
   sef_setcb_init_lu(sef_cb_init_fresh);
   sef_setcb_init_restart(sef_cb_init_fresh);
 
-  /* Register live update callbacks. */
-  sef_setcb_lu_prepare(sef_cb_lu_prepare_always_ready);
-  sef_setcb_lu_state_isvalid(sef_cb_lu_state_isvalid_standard);
-
 #if 0
   /* Register signal callbacks. */
   sef_setcb_signal_handler(sef_cb_signal_handler);
index 6732b5529506d5d8d0847cf575b704186eeef9a7..5b839cdf957311d9bbfaf62b38c6d42da90c2568 100644 (file)
@@ -126,10 +126,6 @@ static void sef_local_startup()
   sef_setcb_init_lu(sef_cb_init_fresh);
   sef_setcb_init_restart(sef_cb_init_fresh);
 
-  /* Register live update callbacks. */
-  sef_setcb_lu_prepare(sef_cb_lu_prepare_always_ready);
-  sef_setcb_lu_state_isvalid(sef_cb_lu_state_isvalid_standard);
-
   /* Let SEF perform startup. */
   sef_startup();
 }
index 16428c1d41b7dd10eaed04ad8d0365073b48241a..c7d37b8adf5ac7b3bf36756f6380a7f5721fdf95 100644 (file)
@@ -334,11 +334,6 @@ sef_local_startup(void)
        /*
         * Register live update callbacks.
         */
-       /* Agree to update immediately when LU is requested in a valid state. */
-       sef_setcb_lu_prepare(sef_cb_lu_prepare_always_ready);
-       /* Support live update starting from any standard state. */
-       sef_setcb_lu_state_isvalid(sef_cb_lu_state_isvalid_standard);
-       /* Register a custom routine to save the state. */
        sef_setcb_lu_state_save(sef_cb_lu_state_save);
 
        /* Let SEF perform startup. */
index db508d6337cd89a08b36f6cbe343441db1a41d0f..29358f7eb03a7ba36651e8d37fc7c225ba8b1758 100644 (file)
@@ -233,11 +233,6 @@ sef_local_startup(void)
        /*
         * Register live update callbacks.
         */
-       /* Agree to update immediately when LU is requested in a valid state. */
-       sef_setcb_lu_prepare(sef_cb_lu_prepare_always_ready);
-       /* Support live update starting from any standard state. */
-       sef_setcb_lu_state_isvalid(sef_cb_lu_state_isvalid_standard);
-       /* Register a custom routine to save the state. */
        sef_setcb_lu_state_save(sef_cb_lu_state_save);
 
        /* Let SEF perform startup. */
index 25cf17cb6e166e8d2a1ada0fd1e103fcfaafc25b..5c62df8f01116b5da1f1d498278cfc0b412c903d 100644 (file)
@@ -551,11 +551,6 @@ sef_local_startup(void)
        /*
         * Register live update callbacks.
         */
-       /* Agree to update immediately when LU is requested in a valid state. */
-       sef_setcb_lu_prepare(sef_cb_lu_prepare_always_ready);
-       /* Support live update starting from any standard state. */
-       sef_setcb_lu_state_isvalid(sef_cb_lu_state_isvalid_standard);
-       /* Register a custom routine to save the state. */
        sef_setcb_lu_state_save(sef_cb_lu_state_save);
 
        /* Let SEF perform startup. */
index 2ce2dd5f5af6d7e4bf3c0f12d6e0489288a2b28a..29348bcac3e8bd034153ae3625fd2fe57e6b5228 100644 (file)
@@ -454,11 +454,6 @@ sef_local_startup(void)
        /*
         * Register live update callbacks.
         */
-       /* Agree to update immediately when LU is requested in a valid state. */
-       sef_setcb_lu_prepare(sef_cb_lu_prepare_always_ready);
-       /* Support live update starting from any standard state. */
-       sef_setcb_lu_state_isvalid(sef_cb_lu_state_isvalid_standard);
-       /* Register a custom routine to save the state. */
        sef_setcb_lu_state_save(sef_cb_lu_state_save);
 
        /* Let SEF perform startup. */
index cfd58c8e8eb5c9dd0d85886790068bbbac343f38..2819e144f3614202e34ae2f563d8849eed0c9097 100644 (file)
@@ -403,11 +403,6 @@ sef_local_startup(void)
        /*
         * Register live update callbacks.
         */
-       /* Agree to update immediately when LU is requested in a valid state. */
-       sef_setcb_lu_prepare(sef_cb_lu_prepare_always_ready);
-       /* Support live update starting from any standard state. */
-       sef_setcb_lu_state_isvalid(sef_cb_lu_state_isvalid_standard);
-       /* Register a custom routine to save the state. */
        sef_setcb_lu_state_save(sef_cb_lu_state_save);
 
        /* Let SEF perform startup. */
index e169ef4294dc1664383150521cd52a66e5d7379d..26cc858412e4b286094b7513dd50f2b89df40ea8 100644 (file)
@@ -2374,7 +2374,6 @@ static void sef_local_startup(void)
 
        /* Register init callbacks. */
        sef_setcb_init_fresh(sef_cb_init_fresh);
-       sef_setcb_init_lu(sef_cb_init_fresh);
 
        /* Register signal callbacks. */
        sef_setcb_signal_handler(sef_cb_signal_handler);
index c8490e0a8b8191b7c740ad063c97de4ddd2e4826..6b1295d0d035453c2023946822ad93af0f7f489f 100644 (file)
@@ -182,7 +182,6 @@ static void sef_local_startup(void)
 {
   /* Register init callbacks. */
   sef_setcb_init_fresh(sef_cb_init_fresh);
-  sef_setcb_init_lu(sef_cb_init_fresh);
 
   /* Register live update callbacks. */
   sef_setcb_lu_prepare(sef_cb_lu_prepare);
index bc15aedcb7497133abd910143149285d15f53e31..ca1a5a0e0bac210a4af232b3654ed80172d9453e 100644 (file)
@@ -352,8 +352,7 @@ static void sef_local_startup(void)
        /* Register init callbacks. */
        sef_setcb_init_fresh(sef_cb_init_fresh);
        sef_setcb_init_restart(sef_cb_init_fresh);
-
-       /* No live update support for now. */
+       sef_setcb_init_lu(sef_cb_init_fresh);
 
        /* Register signal callbacks. */
        sef_setcb_signal_handler(sef_cb_signal_handler);
index a5b352048ea856d9ba044e4e64ac72e37ef5cf6f..d55427bcc31c5f93d39f441890badfda65dccd85 100644 (file)
@@ -308,7 +308,6 @@ static void sef_local_startup(void)
 {
   /* Register init callbacks. */
   sef_setcb_init_fresh(sef_cb_init_fresh);
-  sef_setcb_init_lu(sef_cb_init_fresh);
 
   /* Register live update callbacks. */
   sef_setcb_lu_prepare(sef_cb_lu_prepare);
index 8702c63b7510aa84f3cc151280831f99ae5adb7c..5c4c7f13824a88d3ce762817e83a5d52c905f298 100644 (file)
@@ -117,10 +117,6 @@ static void sef_local_startup()
   sef_setcb_init_lu(sef_cb_init_fresh);
   sef_setcb_init_restart(sef_cb_init_fresh);
 
-  /* Register live update callbacks. */
-  sef_setcb_lu_prepare(sef_cb_lu_prepare_always_ready);
-  sef_setcb_lu_state_isvalid(sef_cb_lu_state_isvalid_standard);
-
   /* Let SEF perform startup. */
   sef_startup();
 }
index 4d429ac4dcb7709410c456832236806573e3a675..7e5446f29efe1d355322477a71995ffe2bb74ca0 100644 (file)
@@ -544,7 +544,6 @@ sef_local_startup()
         *  Use the same function for all event types
         */
        sef_setcb_init_fresh(block_system_event_cb);
-       sef_setcb_init_lu(block_system_event_cb);
 
        /* Register a signal handler */
        sef_setcb_signal_handler(block_signal_handler_cb);
index d7a3c73383f50396d6ac7fbc29f76d86266a3ef4..bc4e1d7da039f00d36b7518744bc532ace1d5397 100644 (file)
@@ -731,7 +731,6 @@ static void
 sef_local_startup(void)
 {
        sef_setcb_init_fresh(sef_cb_init_fresh);
-       sef_setcb_init_lu(sef_cb_init_fresh);
        sef_setcb_signal_handler(sef_cb_signal_handler);
 
        sef_startup();
index 619a20d569ec2a8c5590e04eb2f478415ce21af6..ffe46982ebf9151abafa7e2c7b6647614a92c86a 100644 (file)
@@ -74,10 +74,6 @@ static void sef_local_startup()
   sef_setcb_init_lu(sef_cb_init_fresh);
   sef_setcb_init_restart(sef_cb_init_fresh);
 
-  /* Register live update callbacks. */
-  sef_setcb_lu_prepare(sef_cb_lu_prepare_always_ready);
-  sef_setcb_lu_state_isvalid(sef_cb_lu_state_isvalid_standard);
-
   /* Let SEF perform startup. */
   sef_startup();
 }
index a513f848252d5e09faecddc269eff69afb3659f0..a2a5924f2ecec91c45ca847141c491df2c4a07f0 100644 (file)
@@ -214,8 +214,6 @@ static void tty_startup(void)
   sef_setcb_init_fresh(tty_init);
   sef_setcb_init_restart(tty_init);
 
-  /* No live update support for now. */
-
   /* No signal support for now. */
 
   /* Let SEF perform startup. */
index edfc3ad74eb461f65d685365f7ee80b52f67714c..c964d17099e03617d28d7df822b58b9778a42fa3 100644 (file)
@@ -296,8 +296,7 @@ static void sef_local_startup()
 {
   /* Register init callbacks. */
   sef_setcb_init_fresh(sef_cb_init_fresh);
-
-  /* No live update support for now. */
+  sef_setcb_init_restart(SEF_CB_INIT_RESTART_STATEFUL);
 
   /* Register signal callbacks. */
   sef_setcb_signal_handler(sef_cb_signal_handler);
index b80456261569dbac78db782e27b963cae9cdb46e..d7a00eb8fbcfaf87f85d7cfc77e6418aaaa40d66 100644 (file)
@@ -298,11 +298,6 @@ sef_local_startup()
        sef_setcb_init_restart(sef_cb_init);
 
        /* Register live update callbacks  */
-       /* - Agree to update immediately when LU is requested in a valid state*/
-       sef_setcb_lu_prepare(sef_cb_lu_prepare_always_ready);
-       /* - Support live update starting from any standard state */
-       sef_setcb_lu_state_isvalid(sef_cb_lu_state_isvalid_standard);
-       /* - Register a custom routine to save the state. */
        sef_setcb_lu_state_save(sef_cb_lu_state_save);
 
        /* Let SEF perform startup. */
index 1beb932f7ba7ba4748402b887d30502ed2ca0c9f..7e0afa5d7b35e39218b246899b1e6070aabf7de2 100644 (file)
@@ -942,11 +942,6 @@ sef_local_startup(void)
        /*
         * Register live update callbacks.
         */
-       /* Agree to update immediately when LU is requested in a valid state. */
-       sef_setcb_lu_prepare(sef_cb_lu_prepare_always_ready);
-       /* Support live update starting from any standard state. */
-       sef_setcb_lu_state_isvalid(sef_cb_lu_state_isvalid_standard);
-       /* Register a custom routine to save the state. */
        sef_setcb_lu_state_save(sef_cb_lu_state_save);
 
        /* Let SEF perform startup. */
index 86e4360c7604ed8f87863a35c54ccb9be6c0cef1..b6acfae66dd3bcfdafdfb80212b1e82e6eaea8d0 100644 (file)
@@ -53,9 +53,6 @@ static void sef_local_startup()
 {
   /* Register init callbacks. */
   sef_setcb_init_fresh(sef_cb_init_fresh);
-  sef_setcb_init_restart(sef_cb_init_fail);
-
-  /* No live update support for now. */
 
   /* Register signal callbacks. */
   sef_setcb_signal_handler(sef_cb_signal_handler);
index f301ac51e4f368d4322e7a2668653cf3582439c6..39d40362e4989f8b62e94af2c50209ecd29027f4 100644 (file)
@@ -44,8 +44,7 @@ static void sef_local_startup(void)
 {
        /* Register init callbacks. */
        sef_setcb_init_fresh(sef_cb_init_fresh);
-
-       /* No live update support for now. */
+       sef_setcb_init_restart(SEF_CB_INIT_RESTART_STATEFUL);
 
        /* Register signal callbacks. */
        sef_setcb_signal_handler(sef_cb_signal_handler);
index d6cda6ae4a29bca7c34f0b6d45d5faed73fe7de5..2033edb83ec3b7092aa84ef70a74fdcf7cc1014c 100644 (file)
@@ -32,8 +32,7 @@ static void sef_local_startup()
 {
   /* Register init callbacks. */
   sef_setcb_init_fresh(sef_cb_init_fresh);
-
-  /* No live update support for now. */
+  sef_setcb_init_restart(SEF_CB_INIT_RESTART_STATEFUL);
 
   /* Register signal callbacks. */
   sef_setcb_signal_handler(sef_cb_signal_handler);
index b9d751e33096799a549f4727a465b84976b82106..1ff8977cde89b55561b427c29f7765ad23ea612a 100644 (file)
@@ -408,8 +408,7 @@ pfs_startup(void)
 
        /* Register initialization callbacks. */
        sef_setcb_init_fresh(pfs_init);
-
-       /* No live update support for now. */
+       sef_setcb_init_restart(SEF_CB_INIT_RESTART_STATEFUL);
 
        /* Register signal callbacks. */
        sef_setcb_signal_handler(pfs_signal);
index 3f39382f71570c0274c38414cb511f2edb42c0f5..4c279ddd6a09f83f46d6a8e8a542278e970deab3 100644 (file)
@@ -51,8 +51,16 @@ init_hook(void)
 {
        static int first_time = TRUE;
        struct inode *root;
+       int r;
 
        if (first_time) {
+               /*
+                * Initialize some state.  If we are incompatible with the kernel,
+                * exit immediately.
+                */
+               if ((r = init_tree()) != OK)
+                       panic("init_tree failed!");
+
                root = get_root_inode();
 
                construct_tree(root, root_files);
@@ -69,14 +77,6 @@ init_hook(void)
 int main(void)
 {
        static struct inode_stat stat;
-       int r;
-
-       /*
-        * Initialize some state.  If we are incompatible with the kernel, exit
-        * immediately.
-        */
-       if ((r = init_tree()) != OK)
-               return r;
 
        /* Properties of the root directory. */
        stat.mode       = DIR_ALL_MODE;
index 4613610cec6315f7d39893b0f438736af40aa3e1..5f9920eb4dfb1b5d81ad6238e1eae71f2e50c454 100644 (file)
@@ -80,9 +80,10 @@ int sef_cb_init_response_rs_asyn_once(message *m_ptr);
 #define SEF_CB_INIT_LU_NULL             sef_cb_init_null
 #define SEF_CB_INIT_RESTART_NULL        sef_cb_init_null
 #define SEF_CB_INIT_RESPONSE_NULL       sef_cb_init_response_null
+#define SEF_CB_INIT_RESTART_STATEFUL    sef_cb_init_identity_state_transfer
 
 #define SEF_CB_INIT_FRESH_DEFAULT       sef_cb_init_null
-#define SEF_CB_INIT_LU_DEFAULT          sef_cb_init_null
+#define SEF_CB_INIT_LU_DEFAULT          sef_cb_init_lu_generic
 #define SEF_CB_INIT_RESTART_DEFAULT     sef_cb_init_reset
 #define SEF_CB_INIT_RESPONSE_DEFAULT    sef_cb_init_response_rs_reply
 
@@ -200,9 +201,9 @@ int sef_cb_lu_response_rs_reply(message *m_ptr);
 #define SEF_CB_LU_RESPONSE_NULL         sef_cb_lu_response_null
 
 #define SEF_CB_LU_PREPARE_DEFAULT       sef_cb_lu_prepare_null
-#define SEF_CB_LU_STATE_ISVALID_DEFAULT sef_cb_lu_state_isvalid_null
+#define SEF_CB_LU_STATE_ISVALID_DEFAULT sef_cb_lu_state_isvalid_generic
 #define SEF_CB_LU_STATE_CHANGED_DEFAULT sef_cb_lu_state_changed_null
-#define SEF_CB_LU_STATE_DUMP_DEFAULT    sef_cb_lu_state_dump_null
+#define SEF_CB_LU_STATE_DUMP_DEFAULT    sef_cb_lu_state_dump_eval
 #define SEF_CB_LU_STATE_SAVE_DEFAULT    sef_cb_lu_state_save_null
 #define SEF_CB_LU_RESPONSE_DEFAULT      sef_cb_lu_response_rs_reply
 
index bdea11df62edfd393ab366650ccf5fa3447db5b7..a5274c14aefcfdac21b641d08b91f7d498f42897 100644 (file)
@@ -595,7 +595,6 @@ netdriver_task(const struct netdriver * ndp)
 
        /* Perform SEF initialization. */
        sef_setcb_init_fresh(do_init);
-       sef_setcb_init_restart(do_init);        /* TODO: revisit this */
        sef_setcb_signal_handler(got_signal);
 
        netdriver_table = ndp;
index 7b229717be77d38fd3c93221d215b19e055c1f07..41ec8e68b082e78b9f1859d76eb02323f02be066 100644 (file)
@@ -346,7 +346,7 @@ int sef_cb_init_identity_state_transfer(int type, sef_init_info_t *info)
   new_brksize = _brksize;
 
   /* Transfer heap if necessary. */
-  if(old_brksize != new_brksize) {
+  if(sef_self_endpoint != VM_PROC_NR && old_brksize != new_brksize) {
 
 #if SEF_ST_DEBUG
       printf("sef_cb_init_identity_state_transfer: brk() for new_brksize = 0x%08x\n",
@@ -391,9 +391,10 @@ int sef_cb_init_lu_identity_as_restart(int type, sef_init_info_t *info)
 
   /* Resort to restart callback only for identity updates, ignore other cases. */
   if(SEF_LU_IS_IDENTITY_UPDATE(info->flags)) {
-      if(info->flags & (SEF_INIT_DEFCB|SEF_INIT_SCRIPT_RESTART)) {
-          /* Use default callback when requested or when using a script.*/
-          return SEF_CB_INIT_RESTART_DEFAULT(type, info);
+      if((info->flags & (SEF_INIT_DEFCB|SEF_INIT_SCRIPT_RESTART))
+          || sef_init_cbs.sef_cb_init_restart == sef_cb_init_reset) {
+          /* Use stateful restart callback when necessary. */
+          return SEF_CB_INIT_RESTART_STATEFUL(type, info);
       }
       return sef_init_cbs.sef_cb_init_restart(type, info);
   }
index 36064439c8dbc069da4f4e926a045f6c447ea8ad..db60265235f375edd56f82b13188d73ec2f8d263 100644 (file)
@@ -51,13 +51,11 @@ got_signal(int signal)
 static void
 sef_local_startup(void)
 {
-
        sef_setcb_init_fresh(init_server);
+       sef_setcb_init_restart(SEF_CB_INIT_RESTART_STATEFUL);
 
        sef_setcb_signal_handler(got_signal);
 
-       /* No support for live update yet. */
-
        sef_startup();
 }
 
index 09ce1bfe4acf0b57aad5e3acbac41ad506dfbce3..76df5b5b4ed85b578c0d696c091c98772c3723ef 100644 (file)
@@ -145,8 +145,6 @@ static void sef_local_startup()
   sef_setcb_init_fresh(sef_cb_init_fresh);
   sef_setcb_init_restart(sef_cb_init_fresh);
 
-  /* No live update support for now. */
-
   /* Let SEF perform startup. */
   sef_startup();
 }
index 39e7607124a6fe06f374f0f596a288fd68001db5..9724d291a0d0887350c2a5feae13bec4319ba025 100644 (file)
@@ -141,8 +141,6 @@ static void sef_local_startup(void)
        sef_setcb_init_fresh(sef_cb_init_fresh);
        sef_setcb_init_restart(sef_cb_init_fresh);
 
-       /* No live update support for now. */
-
        /* Let SEF perform startup. */
        sef_startup();
 }
index d805b6ef8e226658d29cab7e2b33021c863ee82e..49929548afdcb28ed0798de57fa998fc80b5147c 100644 (file)
@@ -732,8 +732,6 @@ uds_startup(void)
        /* Register init callbacks. */
        sef_setcb_init_fresh(uds_init);
 
-       /* No live update support for now. */
-
        /* Register signal callbacks. */
        sef_setcb_signal_handler(uds_signal);
 
index b61f2c8b6ac59e13d6be26ffe26e13685e7c4e90..2fbdc609f76e2e2968ebd407f37207482cc9ae11 100644 (file)
@@ -94,12 +94,11 @@ static void sef_local_startup()
 {
   /* Register init callbacks. */
   sef_setcb_init_fresh(sef_cb_init_fresh);
+  sef_setcb_init_restart(SEF_CB_INIT_RESTART_STATEFUL);
 
   /* Register state transfer callbacks. */
   sef_llvm_ds_st_init();
 
-  /* No live update support for now. */
-
   /* Let SEF perform startup. */
   sef_startup();
 }
index 02d39d595c11ce01e229fac828179b99eaa6c7eb..3e143158add6d288323738523f4981425b49c670 100644 (file)
@@ -123,8 +123,6 @@ static void sef_local_startup()
   sef_setcb_init_fresh(sef_cb_init_fresh);
   sef_setcb_init_restart(sef_cb_init_fresh);
 
-  /* No live update support for now. */
-
   /* Register signal callbacks. */
   sef_setcb_signal_handler(sef_cb_signal_handler);
 
index aae548e63ad3b1a73f72617943afc5c1f2f078f8..759a4822dcef5d82eeaee32265df41d602da49c9 100644 (file)
@@ -80,10 +80,6 @@ static void sef_local_startup()
   sef_setcb_init_lu(sef_cb_init_fresh);
   sef_setcb_init_restart(sef_cb_init_fresh);
 
-  /* Register live update callbacks. */
-  sef_setcb_lu_prepare(sef_cb_lu_prepare_always_ready);
-  sef_setcb_lu_state_isvalid(sef_cb_lu_state_isvalid_standard);
-
   /* Register signal callbacks. */
   sef_setcb_signal_handler(sef_cb_signal_handler);
 
index 82bc1b9513422ae8cb8d2f92e3c62449c437bce4..af86de54a0e6c1dc67f87a7f8e3ae43af6720967 100644 (file)
@@ -114,8 +114,7 @@ static void sef_local_startup()
 {
   /* Register init callbacks. */
   sef_setcb_init_fresh(sef_cb_init_fresh);
-
-  /* No live update support for now. */
+  sef_setcb_init_restart(SEF_CB_INIT_RESTART_STATEFUL);
 
   /* Register signal callbacks. */
   sef_setcb_signal_manager(process_ksig);
index 2ef2ba6122cac10d835cc3b3e6844f61e505cec3..28e491b8df6e1a8e091af2a5509c805f9006070c 100644 (file)
@@ -147,8 +147,6 @@ static void sef_local_startup()
   sef_setcb_init_response(sef_cb_init_response);
   sef_setcb_lu_response(sef_cb_lu_response);
 
-  /* No live update support for now. */
-
   /* Register signal callbacks. */
   sef_setcb_signal_handler(sef_cb_signal_handler);
   sef_setcb_signal_manager(sef_cb_signal_manager);
@@ -507,9 +505,9 @@ static int sef_cb_init_restart(int type, sef_init_info_t *info)
   assert(info->endpoint == RS_PROC_NR);
 
   /* Perform default state transfer first. */
-  r = SEF_CB_INIT_RESTART_DEFAULT(type, info);
+  r = SEF_CB_INIT_RESTART_STATEFUL(type, info);
   if(r != OK) {
-      printf("SEF_CB_INIT_RESTART_DEFAULT failed: %d\n", r);
+      printf("SEF_CB_INIT_RESTART_STATEFUL failed: %d\n", r);
       return r;
   }
 
@@ -557,7 +555,7 @@ static int sef_cb_init_lu(int type, sef_init_info_t *info)
   assert(info->endpoint == RS_PROC_NR);
 
   /* Perform default state transfer first. */
-  sef_setcb_init_restart(SEF_CB_INIT_RESTART_DEFAULT);
+  sef_setcb_init_restart(SEF_CB_INIT_RESTART_STATEFUL);
   r = SEF_CB_INIT_LU_DEFAULT(type, info);
   if(r != OK) {
       printf("SEF_CB_INIT_LU_DEFAULT failed: %d\n", r);
index 1b87bb4b9d653e5c3c06528a281e986d12ea5802..83d0b283b074e7d6d7d34c7dbf9c30264507c9ce 100644 (file)
@@ -12,6 +12,7 @@
 /* Declare some local functions. */
 static void reply(endpoint_t whom, message *m_ptr);
 static void sef_local_startup(void);
+static int sef_cb_init_fresh(int type, sef_init_info_t *info);
 
 struct machine machine;                /* machine info */
 
@@ -26,16 +27,10 @@ int main(void)
        int who_e;      /* caller's endpoint */
        int result;     /* result to system call */
        int rv;
-       int s;
 
        /* SEF local startup. */
        sef_local_startup();
 
-       if (OK != (s=sys_getmachine(&machine)))
-               panic("couldn't get machine info: %d", s);
-       /* Initialize scheduling timers, used for running balance_queues */
-       init_scheduling();
-
        /* This is SCHED's main loop - get work and do it, forever and forever. */
        while (TRUE) {
                int ipc_status;
@@ -115,10 +110,28 @@ static void reply(endpoint_t who_e, message *m_ptr)
  *===========================================================================*/
 static void sef_local_startup(void)
 {
-       /* No init callbacks for now. */
-       /* No live update support for now. */
+       /* Register init callbacks. */
+       sef_setcb_init_fresh(sef_cb_init_fresh);
+       sef_setcb_init_restart(SEF_CB_INIT_RESTART_STATEFUL);
+
        /* No signal callbacks for now. */
 
        /* Let SEF perform startup. */
        sef_startup();
 }
+
+/*===========================================================================*
+ *                         sef_cb_init_fresh                                *
+ *===========================================================================*/
+static int sef_cb_init_fresh(int UNUSED(type), sef_init_info_t *UNUSED(info))
+{
+       int s;
+
+       if (OK != (s=sys_getmachine(&machine)))
+               panic("couldn't get machine info: %d", s);
+       /* Initialize scheduling timers, used for running balance_queues */
+       init_scheduling();
+
+       return(OK);
+}
+
index 354565ce317d707341c15d6e8c203602446ef722..c8036c8300f7ba688518acfe1bc61e0f27fd7ccf 100644 (file)
@@ -290,8 +290,7 @@ static void sef_local_startup()
 {
   /* Register init callbacks. */
   sef_setcb_init_fresh(sef_cb_init_fresh);
-
-  /* No live update support for now. */
+  sef_setcb_init_restart(SEF_CB_INIT_RESTART_STATEFUL);
 
   /* Let SEF perform startup. */
   sef_startup();
index 38800f498678c4e9e1a5a0cfcd6a0d20033b8190..0ccd6159e6a6dcd4496e6f64ee21b40038ea8353 100644 (file)
@@ -661,13 +661,13 @@ static int sef_cb_init_lu_restart(int type, sef_init_info_t *info)
         int old_p;
         struct vmproc *old_vmp, *new_vmp;
 
-        /* Perform default state transfer first. Assume VM doesn't brk(). */
+        /* Perform default state transfer first. */
         if(type == SEF_INIT_LU) {
-               sef_setcb_init_restart(SEF_CB_INIT_RESTART_DEFAULT);
+               sef_setcb_init_restart(SEF_CB_INIT_RESTART_STATEFUL);
                r = SEF_CB_INIT_LU_DEFAULT(type, info);
         }
         else {
-               r = SEF_CB_INIT_RESTART_DEFAULT(type, info);
+               r = SEF_CB_INIT_RESTART_STATEFUL(type, info);
         }
         if(r != OK) {
                return r;