afb-debug: expose wait/break features
authorJosé Bollo <jose.bollo@iot.bzh>
Thu, 10 Aug 2017 13:36:05 +0000 (15:36 +0200)
committerJosé Bollo <jose.bollo@iot.bzh>
Thu, 10 Aug 2017 13:40:58 +0000 (15:40 +0200)
Change-Id: I197350dee4f85dfc167ea4ffcb54e6e3ceba89ad
Signed-off-by: José Bollo <jose.bollo@iot.bzh>
src/afb-debug.c
src/afb-debug.h

index db403a6..33d161e 100644 (file)
@@ -80,40 +80,52 @@ static void handler(int signum)
 {
 }
 
-void afb_debug(const char *key)
+void afb_debug_wait(const char *key)
 {
        struct sigaction sa, psa;
        sigset_t ss, oss;
 
-       if (has_key(key, secure_getenv(key_env_wait))) {
-               NOTICE("DEBUG WAIT before %s", key);
-               sigfillset(&ss);
-               sigdelset(&ss, SIGINT);
-               sigprocmask(SIG_SETMASK, &ss, &oss);
-               sigemptyset(&ss);
-               sigaddset(&ss, SIGINT);
-               memset(&sa, 0, sizeof sa);
-               sa.sa_handler = handler;
-               sigaction(SIGINT, &sa, &psa);
-               indicate(key);
-               sigwaitinfo(&ss, NULL);
-               sigaction(SIGINT, &psa, NULL);
-               indicate(NULL);
-               sigprocmask(SIG_SETMASK, &oss, NULL);
-               NOTICE("DEBUG WAIT after %s", key);
+       key = key ?: "NULL";
+       NOTICE("DEBUG WAIT before %s", key);
+       sigfillset(&ss);
+       sigdelset(&ss, SIGINT);
+       sigprocmask(SIG_SETMASK, &ss, &oss);
+       sigemptyset(&ss);
+       sigaddset(&ss, SIGINT);
+       memset(&sa, 0, sizeof sa);
+       sa.sa_handler = handler;
+       sigaction(SIGINT, &sa, &psa);
+       indicate(key);
+       sigwaitinfo(&ss, NULL);
+       sigaction(SIGINT, &psa, NULL);
+       indicate(NULL);
+       sigprocmask(SIG_SETMASK, &oss, NULL);
+       NOTICE("DEBUG WAIT after %s", key);
 #if !defined(NO_CALL_PERSONALITY)
-               personality((unsigned long)-1L);
+       personality((unsigned long)-1L);
 #endif
-       }
-       if (has_key(key, secure_getenv(key_env_break))) {
-               NOTICE("DEBUG BREAK before %s", key);
-               memset(&sa, 0, sizeof sa);
-               sa.sa_handler = handler;
-               sigaction(SIGINT, &sa, &psa);
-               raise(SIGINT);
-               sigaction(SIGINT, &psa, NULL);
-               NOTICE("DEBUG BREAK after %s", key);
-       }
+}
+
+void afb_debug_break(const char *key)
+{
+       struct sigaction sa, psa;
+
+       key = key ?: "NULL";
+       NOTICE("DEBUG BREAK before %s", key);
+       memset(&sa, 0, sizeof sa);
+       sa.sa_handler = handler;
+       sigaction(SIGINT, &sa, &psa);
+       raise(SIGINT);
+       sigaction(SIGINT, &psa, NULL);
+       NOTICE("DEBUG BREAK after %s", key);
+}
+
+void afb_debug(const char *key)
+{
+       if (has_key(key, secure_getenv(key_env_wait)))
+               afb_debug_wait(key);
+       if (has_key(key, secure_getenv(key_env_break)))
+               afb_debug_break(key);
 }
 
 #endif
index 4723cd0..51982cc 100644 (file)
 
 #if defined(AFB_INSERT_DEBUG_FEATURES)
 extern void afb_debug(const char *key);
+extern void afb_debug_wait(const char *key);
+extern void afb_debug_break(const char *key);
 #else
-#define afb_debug(x)  ((void)0)
+#define afb_debug(x)       ((void)0)
+#define afb_debug_wait(x)  ((void)0)
+#define afb_debug_break(x) ((void)0)
 #endif