mirror of https://github.com/nirenjan/libx52.git
Block signals on child threads
This change adds logic to block signals on child threads. This is done so that we can migrate signal handling to the main thread, even if we add additional threads in the future.cpp
parent
b0f9006594
commit
d3d32cf278
|
@ -73,7 +73,7 @@ static void listen_signal(int signum, void (*handler)(int))
|
||||||
|
|
||||||
action.sa_handler = handler;
|
action.sa_handler = handler;
|
||||||
sigemptyset(&action.sa_mask);
|
sigemptyset(&action.sa_mask);
|
||||||
action.sa_flags = 0;
|
action.sa_flags = SA_RESTART;
|
||||||
|
|
||||||
rc = sigaction(signum, &action, NULL);
|
rc = sigaction(signum, &action, NULL);
|
||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
|
@ -261,6 +261,8 @@ int main(int argc, char **argv)
|
||||||
const char *command_sock = NULL;
|
const char *command_sock = NULL;
|
||||||
int opt;
|
int opt;
|
||||||
int command_sock_fd;
|
int command_sock_fd;
|
||||||
|
int rc;
|
||||||
|
sigset_t sigblockset;
|
||||||
|
|
||||||
/* Initialize gettext */
|
/* Initialize gettext */
|
||||||
#if ENABLE_NLS
|
#if ENABLE_NLS
|
||||||
|
@ -353,6 +355,14 @@ int main(int argc, char **argv)
|
||||||
set_log_file(foreground, log_file);
|
set_log_file(foreground, log_file);
|
||||||
x52d_config_load(conf_file);
|
x52d_config_load(conf_file);
|
||||||
|
|
||||||
|
// Disable pthread signals
|
||||||
|
sigfillset(&sigblockset);
|
||||||
|
rc = pthread_sigmask(SIG_BLOCK, &sigblockset, NULL);
|
||||||
|
if (rc != 0) {
|
||||||
|
PINELOG_FATAL(_("Error %d blocking signals on child threads: %s"),
|
||||||
|
errno, strerror(errno));
|
||||||
|
}
|
||||||
|
|
||||||
// Start device threads
|
// Start device threads
|
||||||
x52d_dev_init();
|
x52d_dev_init();
|
||||||
x52d_clock_init();
|
x52d_clock_init();
|
||||||
|
@ -362,6 +372,13 @@ int main(int argc, char **argv)
|
||||||
x52d_mouse_evdev_init();
|
x52d_mouse_evdev_init();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Re-enable signals
|
||||||
|
rc = pthread_sigmask(SIG_UNBLOCK, &sigblockset, NULL);
|
||||||
|
if (rc != 0) {
|
||||||
|
PINELOG_FATAL(_("Error %d unblocking signals on child threads: %s"),
|
||||||
|
errno, strerror(errno));
|
||||||
|
}
|
||||||
|
|
||||||
command_sock_fd = listen_command(command_sock);
|
command_sock_fd = listen_command(command_sock);
|
||||||
if (command_sock_fd < 0) {
|
if (command_sock_fd < 0) {
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: libx52 0.2.3\n"
|
"Project-Id-Version: libx52 0.2.3\n"
|
||||||
"Report-Msgid-Bugs-To: https://github.com/nirenjan/libx52/issues\n"
|
"Report-Msgid-Bugs-To: https://github.com/nirenjan/libx52/issues\n"
|
||||||
"POT-Creation-Date: 2022-06-05 08:22-0700\n"
|
"POT-Creation-Date: 2022-07-27 11:30-0700\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -542,68 +542,78 @@ msgstr ""
|
||||||
msgid "Error listening on command socket: %s"
|
msgid "Error listening on command socket: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: daemon/x52d_main.c:315
|
#: daemon/x52d_main.c:317
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Unable to parse configuration override '%s'\n"
|
msgid "Unable to parse configuration override '%s'\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: daemon/x52d_main.c:343
|
#: daemon/x52d_main.c:345
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Foreground = %s"
|
msgid "Foreground = %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: daemon/x52d_main.c:343 daemon/x52d_main.c:344
|
#: daemon/x52d_main.c:345 daemon/x52d_main.c:346
|
||||||
msgid "true"
|
msgid "true"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: daemon/x52d_main.c:343 daemon/x52d_main.c:344
|
#: daemon/x52d_main.c:345 daemon/x52d_main.c:346
|
||||||
msgid "false"
|
msgid "false"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: daemon/x52d_main.c:344
|
|
||||||
#, c-format
|
|
||||||
msgid "Quiet = %s"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: daemon/x52d_main.c:345
|
|
||||||
#, c-format
|
|
||||||
msgid "Verbosity = %d"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: daemon/x52d_main.c:346
|
#: daemon/x52d_main.c:346
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Log file = %s"
|
msgid "Quiet = %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: daemon/x52d_main.c:347
|
#: daemon/x52d_main.c:347
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Config file = %s"
|
msgid "Verbosity = %d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: daemon/x52d_main.c:348
|
#: daemon/x52d_main.c:348
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "PID file = %s"
|
msgid "Log file = %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: daemon/x52d_main.c:349
|
#: daemon/x52d_main.c:349
|
||||||
#, c-format
|
#, c-format
|
||||||
|
msgid "Config file = %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: daemon/x52d_main.c:350
|
||||||
|
#, c-format
|
||||||
|
msgid "PID file = %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: daemon/x52d_main.c:351
|
||||||
|
#, c-format
|
||||||
msgid "Command socket = %s"
|
msgid "Command socket = %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: daemon/x52d_main.c:379
|
#: daemon/x52d_main.c:362
|
||||||
|
#, c-format
|
||||||
|
msgid "Error %d blocking signals on child threads: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: daemon/x52d_main.c:378
|
||||||
|
#, c-format
|
||||||
|
msgid "Error %d unblocking signals on child threads: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: daemon/x52d_main.c:396
|
||||||
msgid "Reloading X52 configuration"
|
msgid "Reloading X52 configuration"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: daemon/x52d_main.c:386
|
#: daemon/x52d_main.c:403
|
||||||
msgid "Saving X52 configuration to disk"
|
msgid "Saving X52 configuration to disk"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: daemon/x52d_main.c:392
|
#: daemon/x52d_main.c:409
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Received termination signal %s"
|
msgid "Received termination signal %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: daemon/x52d_main.c:415
|
#: daemon/x52d_main.c:432
|
||||||
msgid "Shutting down X52 daemon"
|
msgid "Shutting down X52 daemon"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|
42
po/xx_PL.po
42
po/xx_PL.po
|
@ -7,8 +7,8 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: libx52 0.2.3\n"
|
"Project-Id-Version: libx52 0.2.3\n"
|
||||||
"Report-Msgid-Bugs-To: https://github.com/nirenjan/libx52/issues\n"
|
"Report-Msgid-Bugs-To: https://github.com/nirenjan/libx52/issues\n"
|
||||||
"POT-Creation-Date: 2022-06-05 08:22-0700\n"
|
"POT-Creation-Date: 2022-07-27 11:30-0700\n"
|
||||||
"PO-Revision-Date: 2022-06-05 08:51-0700\n"
|
"PO-Revision-Date: 2022-07-27 11:32-0700\n"
|
||||||
"Last-Translator: Nirenjan Krishnan <nirenjan@gmail.com>\n"
|
"Last-Translator: Nirenjan Krishnan <nirenjan@gmail.com>\n"
|
||||||
"Language-Team: Dummy Language for testing i18n\n"
|
"Language-Team: Dummy Language for testing i18n\n"
|
||||||
"Language: xx_PL\n"
|
"Language: xx_PL\n"
|
||||||
|
@ -589,68 +589,78 @@ msgstr "Erroray indingbay otay ommandcay ocketsay: %s"
|
||||||
msgid "Error listening on command socket: %s"
|
msgid "Error listening on command socket: %s"
|
||||||
msgstr "Erroray isteninglay onay ommandcay ocketsay: %s"
|
msgstr "Erroray isteninglay onay ommandcay ocketsay: %s"
|
||||||
|
|
||||||
#: daemon/x52d_main.c:315
|
#: daemon/x52d_main.c:317
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Unable to parse configuration override '%s'\n"
|
msgid "Unable to parse configuration override '%s'\n"
|
||||||
msgstr "Unableay otay arsepay onfigurationcay overrideay '%s'\n"
|
msgstr "Unableay otay arsepay onfigurationcay overrideay '%s'\n"
|
||||||
|
|
||||||
#: daemon/x52d_main.c:343
|
#: daemon/x52d_main.c:345
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Foreground = %s"
|
msgid "Foreground = %s"
|
||||||
msgstr "Oregroundfay = %s"
|
msgstr "Oregroundfay = %s"
|
||||||
|
|
||||||
#: daemon/x52d_main.c:343 daemon/x52d_main.c:344
|
#: daemon/x52d_main.c:345 daemon/x52d_main.c:346
|
||||||
msgid "true"
|
msgid "true"
|
||||||
msgstr "uetray"
|
msgstr "uetray"
|
||||||
|
|
||||||
#: daemon/x52d_main.c:343 daemon/x52d_main.c:344
|
#: daemon/x52d_main.c:345 daemon/x52d_main.c:346
|
||||||
msgid "false"
|
msgid "false"
|
||||||
msgstr "alsefay"
|
msgstr "alsefay"
|
||||||
|
|
||||||
#: daemon/x52d_main.c:344
|
#: daemon/x52d_main.c:346
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Quiet = %s"
|
msgid "Quiet = %s"
|
||||||
msgstr "Uietqay = %s"
|
msgstr "Uietqay = %s"
|
||||||
|
|
||||||
#: daemon/x52d_main.c:345
|
#: daemon/x52d_main.c:347
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Verbosity = %d"
|
msgid "Verbosity = %d"
|
||||||
msgstr "Erbosityvay = %d"
|
msgstr "Erbosityvay = %d"
|
||||||
|
|
||||||
#: daemon/x52d_main.c:346
|
#: daemon/x52d_main.c:348
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Log file = %s"
|
msgid "Log file = %s"
|
||||||
msgstr "Oglay ilefay = %s"
|
msgstr "Oglay ilefay = %s"
|
||||||
|
|
||||||
#: daemon/x52d_main.c:347
|
#: daemon/x52d_main.c:349
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Config file = %s"
|
msgid "Config file = %s"
|
||||||
msgstr "Onfigcay ilefay = %s"
|
msgstr "Onfigcay ilefay = %s"
|
||||||
|
|
||||||
#: daemon/x52d_main.c:348
|
#: daemon/x52d_main.c:350
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "PID file = %s"
|
msgid "PID file = %s"
|
||||||
msgstr "IDPay ilefay = %s"
|
msgstr "IDPay ilefay = %s"
|
||||||
|
|
||||||
#: daemon/x52d_main.c:349
|
#: daemon/x52d_main.c:351
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Command socket = %s"
|
msgid "Command socket = %s"
|
||||||
msgstr "Ommandcay ocketsay = %s"
|
msgstr "Ommandcay ocketsay = %s"
|
||||||
|
|
||||||
#: daemon/x52d_main.c:379
|
#: daemon/x52d_main.c:362
|
||||||
|
#, c-format
|
||||||
|
msgid "Error %d blocking signals on child threads: %s"
|
||||||
|
msgstr "Erroray %d ockingblay ignalssay onay ildchay eadsthray: %s"
|
||||||
|
|
||||||
|
#: daemon/x52d_main.c:378
|
||||||
|
#, c-format
|
||||||
|
msgid "Error %d unblocking signals on child threads: %s"
|
||||||
|
msgstr "Erroray %d unblockingay ignalssay onay ildchay eadsthray: %s"
|
||||||
|
|
||||||
|
#: daemon/x52d_main.c:396
|
||||||
msgid "Reloading X52 configuration"
|
msgid "Reloading X52 configuration"
|
||||||
msgstr "Eloadingray X52 onfigurationcay"
|
msgstr "Eloadingray X52 onfigurationcay"
|
||||||
|
|
||||||
#: daemon/x52d_main.c:386
|
#: daemon/x52d_main.c:403
|
||||||
msgid "Saving X52 configuration to disk"
|
msgid "Saving X52 configuration to disk"
|
||||||
msgstr "Avingsay X52 onfigurationcay otay iskday"
|
msgstr "Avingsay X52 onfigurationcay otay iskday"
|
||||||
|
|
||||||
#: daemon/x52d_main.c:392
|
#: daemon/x52d_main.c:409
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Received termination signal %s"
|
msgid "Received termination signal %s"
|
||||||
msgstr "Eceivedray erminationtay ignalsay %s"
|
msgstr "Eceivedray erminationtay ignalsay %s"
|
||||||
|
|
||||||
#: daemon/x52d_main.c:415
|
#: daemon/x52d_main.c:432
|
||||||
msgid "Shutting down X52 daemon"
|
msgid "Shutting down X52 daemon"
|
||||||
msgstr "Uttingshay ownday X52 aemonday"
|
msgstr "Uttingshay ownday X52 aemonday"
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue