X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=cfg%2Fos.h;h=2417ca1c232dd76c01c8a47a13b4cfa91675d720;hb=b69f8969fb0a96fd75172e8b88f81029efcefef5;hp=320afdd5f518d3f4973ed7c032a22c649471ce99;hpb=16aaf600a7002741fe9f93b0aac0d0a08f7cf325;p=bertos.git diff --git a/cfg/os.h b/cfg/os.h old mode 100755 new mode 100644 index 320afdd5..2417ca1c --- a/cfg/os.h +++ b/cfg/os.h @@ -1,8 +1,33 @@ -/*! +/** * \file * * * \brief OS-specific definitions @@ -14,6 +39,24 @@ /*#* *#* $Log$ + *#* Revision 1.11 2007/09/29 16:19:47 bernie + *#* Changes to compile with sparse. + *#* + *#* Revision 1.10 2006/07/19 12:56:25 bernie + *#* Convert to new Doxygen style. + *#* + *#* Revision 1.9 2006/03/22 13:34:34 bernie + *#* MSVC support. + *#* + *#* Revision 1.8 2006/02/23 09:09:28 bernie + *#* Remove Linux specific hack. + *#* + *#* Revision 1.7 2006/02/20 01:46:59 bernie + *#* Port to MacOSX. + *#* + *#* 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. *#* @@ -36,7 +79,7 @@ #ifndef DEVLIB_OS_H #define DEVLIB_OS_H -/*! Macro to include OS-specific versions of the headers. */ +/** Macro to include OS-specific versions of the headers. */ #define OS_HEADER(module) PP_STRINGIZE(PP_CAT3(module, _, OS_ID).h) #define OS_CSOURCE(module) PP_STRINGIZE(PP_CAT3(module, _, OS_ID).c) @@ -46,11 +89,19 @@ #ifdef _WIN32 #define OS_WIN32 1 #define OS_ID win32 + + // FIXME: Maybe disable Win32 exceptions? + typedef int cpuflags_t; + #define IRQ_DISABLE /* FIXME */ + #define IRQ_ENABLE /* FIXME */ + #define IRQ_SAVE_DISABLE(old_sigs) /* FIXME */ + #define IRQ_RESTORE(old_sigs) /* FIXME */ + #else #define OS_WIN32 0 #endif -#ifdef __unix__ +#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) #define OS_UNIX 1 #define OS_POSIX 1 /* Not strictly UNIX, but no way to autodetect it. */ #define OS_ID posix @@ -58,28 +109,35 @@ /* * 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. */ #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) @@ -120,7 +178,7 @@ * Summarize hosted environments as OS_HOSTED and embedded * environment with OS_EMBEDDED. */ -#if OS_WIN32 || OS_UNIX +#if OS_WIN32 || OS_UNIX || OS_DARWIN || OS_QT #define OS_HOSTED 1 #define OS_EMBEDDED 0 #else