X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=cfg%2Fos.h;h=2832779868f7fddf95f785862897779acfa41f34;hb=dd10467603da0be5d35d91bae7c62b0079128d09;hp=636a3fa8b37ea94f7a679d8f717f964bdb8ef358;hpb=0007248e32b0e774b484711cf9403966f6206772;p=bertos.git diff --git a/cfg/os.h b/cfg/os.h index 636a3fa8..28327798 100755 --- a/cfg/os.h +++ b/cfg/os.h @@ -14,6 +14,12 @@ /*#* *#* $Log$ + *#* Revision 1.6 2006/02/15 09:12:33 bernie + *#* Don't mask useful user signals on UNIX. + *#* + *#* Revision 1.5 2005/11/27 23:32:42 bernie + *#* Add CPU fallback for OS_ID. + *#* *#* Revision 1.4 2005/11/27 03:07:13 bernie *#* IRQ_SAVE_DISABLE(): Really block signals. *#* @@ -55,28 +61,37 @@ /* * The POSIX moral equivalent of disabling IRQs is disabling signals. */ - #define _XOPEN_SOURCE 600 /* Avoid BSDish stuff */ - #undef _GNU_SOURCE /* This implies _BSD_SOURCE and is predefined on Linux. */ +// #define _XOPEN_SOURCE 600 /* Avoid BSDish stuff */ +// #undef _GNU_SOURCE /* This implies _BSD_SOURCE and is predefined on Linux. */ #include typedef sigset_t cpuflags_t; + + #define SET_ALL_SIGNALS(sigs) \ + do { \ + sigfillset(&sigs); \ + sigdelset(&sigs, SIGINT); \ + sigdelset(&sigs, SIGSTOP); \ + sigdelset(&sigs, SIGCONT); \ + } while(0) + #define IRQ_DISABLE \ do { \ sigset_t sigs; \ - sigfillset(&sigs); \ + SET_ALL_SIGNALS(sigs); \ sigprocmask(SIG_BLOCK, &sigs, NULL); \ } while (0) #define IRQ_ENABLE \ do { \ sigset_t sigs; \ - sigemptyset(&sigs); \ + SET_ALL_SIGNALS(sigs); \ sigprocmask(SIG_UNBLOCK, &sigs, NULL); \ } while (0) #define IRQ_SAVE_DISABLE(old_sigs) \ do { \ sigset_t sigs; \ - sigemptyset(&sigs); \ + SET_ALL_SIGNALS(sigs); \ sigprocmask(SIG_BLOCK, &sigs, &old_sigs); \ } while (0) @@ -113,8 +128,6 @@ #define OS_QT 0 #endif - - /* * Summarize hosted environments as OS_HOSTED and embedded * environment with OS_EMBEDDED. @@ -125,6 +138,9 @@ #else #define OS_HOSTED 0 #define OS_EMBEDDED 1 + + /* Embedded environments fall back to CPU-specific code. */ + #define OS_ID CPU_ID #endif /* Self-check for the detection */