@@ -663,50 +663,53 @@ struct rtapi_module {
663663#define MAX_MODULES 64
664664#define MODULE_OFFSET 32768
665665
666- #define WRITE_STDERR_STR (str ) ((void )!write(STDERR_FILENO , str, strlen(str)))
666+ static inline void write_string (int fd, const char *str) {
667+ (void )!write (fd, str, strlen (str));
668+ }
669+
667670static void signal_handler (int sig, siginfo_t * /* si*/ , void * /* uctx*/ ) {
668671 // Read: https://www.man7.org/linux/man-pages/man7/signal-safety.7.html
669672 bool doAbort = true ;
670673 switch (sig) {
671674 case SIGXCPU :
672- WRITE_STDERR_STR ( " rtapi_app: SIGXCPU - aborting\n " );
675+ write_string ( STDERR_FILENO , " rtapi_app: SIGXCPU - aborting\n " );
673676 break ;
674677 case SIGSEGV :
675- WRITE_STDERR_STR ( " rtapi_app: SIGSEGV - aborting\n " );
678+ write_string ( STDERR_FILENO , " rtapi_app: SIGSEGV - aborting\n " );
676679 break ;
677680 case SIGILL :
678- WRITE_STDERR_STR ( " rtapi_app: SIGILL - aborting\n " );
681+ write_string ( STDERR_FILENO , " rtapi_app: SIGILL - aborting\n " );
679682 break ;
680683 case SIGFPE :
681- WRITE_STDERR_STR ( " rtapi_app: SIGFPE - aborting\n " );
684+ write_string ( STDERR_FILENO , " rtapi_app: SIGFPE - aborting\n " );
682685 break ;
683686 case SIGTERM :
684- WRITE_STDERR_STR ( " rtapi_app: SIGTERM - shutting down\n " );
687+ write_string ( STDERR_FILENO , " rtapi_app: SIGTERM - shutting down\n " );
685688 doAbort = false ; // TERM is a user signal, no need for a coredump
686689 break ;
687690 case SIGINT :
688- WRITE_STDERR_STR ( " rtapi_app: SIGINT - shutting down\n " );
691+ write_string ( STDERR_FILENO , " rtapi_app: SIGINT - shutting down\n " );
689692 doAbort = false ; // INT is a user signal, no need for a coredump
690693 break ;
691694 default :
692- WRITE_STDERR_STR ( " rtapi_app: UNKNOWN - aborting\n " );
695+ write_string ( STDERR_FILENO , " rtapi_app: UNKNOWN - aborting\n " );
693696 break ;
694697 }
695698
696699 // Write remaining messages
697700 rtapi_msg_queue.consume_all ([](const message_t &m) {
698- WRITE_STDERR_STR ( m.msg );
701+ write_string ( STDERR_FILENO , m.msg );
699702 });
700703
701- if (doAbort){
704+ if (doAbort) {
702705 // Call abort to generate a coredump if enabled
703706 // To enable coredumps for setuid applications:
704707 // echo 1 | sudo tee /proc/sys/fs/suid_dumpable #rtapi_app is setuid
705708 // In general:
706709 // ulimit -c unlimited or coredumpctl
707710 abort ();
708711 }
709- _exit (128 + sig); // 128+n: Fatal error signal "n"
712+ _exit (128 + sig); // 128+n: Fatal error signal "n"
710713}
711714
712715const static size_t PRE_ALLOC_SIZE = 1024 * 1024 * 32 ;
0 commit comments