poke-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[COMMITTED 1/3] poked: Add support for restart of libpoke


From: Mohammad-Reza Nabipoor
Subject: [COMMITTED 1/3] poked: Add support for restart of libpoke
Date: Thu, 10 Mar 2022 22:56:27 +0330

2022-03-10  Mohammad-Reza Nabipoor  <mnabipoor@gnu.org>

        * poked/poked.c (main): Add `poked_restart` support.
        * poked/poked.pk (poked_restart): New function.
        (__poked_restart_p): New variable.
---
 ChangeLog      | 6 ++++++
 poked/poked.c  | 9 ++++++++-
 poked/poked.pk | 2 ++
 3 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/ChangeLog b/ChangeLog
index 262a4f11..9778fdfb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2022-03-10  Mohammad-Reza Nabipoor  <mnabipoor@gnu.org>
+
+       * poked/poked.c (main): Add `poked_restart` support.
+       * poked/poked.pk (poked_restart): New function.
+       (__poked_restart_p): New variable.
+
 2022-03-10  Jose E. Marchesi  <jemarch@gnu.org>
 
        * libpoke/libpoke.h: Indentation and other visual improvements.
diff --git a/poked/poked.c b/poked/poked.c
index 182f0340..705341ee 100644
--- a/poked/poked.c
+++ b/poked/poked.c
@@ -100,7 +100,7 @@ main ()
   struct usock_buf *inbuf;
   void *ret;
   int done_p = 0;
-  uint64_t idx = 0;
+  uint64_t idx;
 
   srv = usock_new ("/tmp/poked.ipc");
   if (srv == NULL)
@@ -111,6 +111,8 @@ main ()
   if (pthread_create (&th, &thattr, srvthread, srv) != 0)
     err (1, "pthread_create() failed");
 
+poked_restart:
+  idx = 0;
   poked_init ();
   while (!done_p)
     {
@@ -185,6 +187,11 @@ main ()
         continue;
 #endif
 
+          if (pk_int_value (pk_decl_val (pkc, "__poked_restart_p")))
+            {
+              poked_free ();
+              goto poked_restart;
+            }
           if (pk_int_value (pk_decl_val (pkc, "__poked_exit_p")))
             {
               done_p = 1;
diff --git a/poked/poked.pk b/poked/poked.pk
index 3682fb3b..d0b64c49 100644
--- a/poked/poked.pk
+++ b/poked/poked.pk
@@ -21,8 +21,10 @@ load "pk-dump-minimal.pk";
 // FIXME be endian-correct
 // FIXME offset<long,N> -> offset<ulong,N>
 
+var __poked_restart_p = 0;
 var __poked_exit_p = 0;
 
+fun poked_restart = void: { __poked_restart_p = 1; exit; }
 fun poked_exit = void: { __poked_exit_p = 1; exit; }
 fun poked_defer = void: {}
 fun poked_ehandler = (Exception exception) void:
-- 
2.35.1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]