X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=cfg%2Fos.h;h=924daadea7f9c79e6e253b6d7fb00207186eebaf;hb=755c2da31880953298481b3747c2472f13bc00a1;hp=2832779868f7fddf95f785862897779acfa41f34;hpb=dd10467603da0be5d35d91bae7c62b0079128d09;p=bertos.git diff --git a/cfg/os.h b/cfg/os.h old mode 100755 new mode 100644 index 28327798..924daade --- a/cfg/os.h +++ b/cfg/os.h @@ -1,8 +1,33 @@ -/*! +/** * \file * * * \brief OS-specific definitions @@ -12,34 +37,10 @@ * \author Bernardo Innocenti */ -/*#* - *#* $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. - *#* - *#* Revision 1.3 2005/11/27 03:02:40 bernie - *#* Add POSIX emulation for IRQ_* macros; Add Qt support. - *#* - *#* Revision 1.2 2005/11/04 16:20:01 bernie - *#* Fix reference to README.devlib in header. - *#* - *#* Revision 1.1 2005/04/11 19:04:13 bernie - *#* Move top-level headers to cfg/ subdir. - *#* - *#* Revision 1.1 2004/12/31 17:40:24 bernie - *#* Add OS detection code. - *#* - *#*/ #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) @@ -49,11 +50,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 @@ -61,8 +70,6 @@ /* * 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; @@ -99,6 +106,14 @@ do { \ sigprocmask(SIG_SETMASK, &old_sigs, NULL); \ } while (0) + + #define IRQ_ENABLED() \ + ({ \ + sigset_t sigs; \ + sigprocmask(SIG_SETMASK, NULL, &sigs); \ + sigismember(&sigs, SIGALRM) ? false : true; \ + }) + #else #define OS_UNIX 0 #define OS_POSIX 0 @@ -132,7 +147,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