From: bernie Date: Sun, 27 Nov 2005 03:04:38 +0000 (+0000) Subject: Add POSIX emulation for IRQ_* macros; Add Qt support. X-Git-Tag: 1.0.0~793 X-Git-Url: https://codewiz.org/gitweb?a=commitdiff_plain;h=2039edbef30cfdf57f9b8b50d622ce3f8be03d8e;p=bertos.git Add POSIX emulation for IRQ_* macros; Add Qt support. git-svn-id: https://src.develer.com/svnoss/bertos/trunk@448 38d2e660-2303-0410-9eaa-f027e97ec537 --- diff --git a/cfg/cpu.h b/cfg/cpu.h index a687275f..51b142d6 100755 --- a/cfg/cpu.h +++ b/cfg/cpu.h @@ -17,6 +17,9 @@ /*#* *#* $Log$ + *#* Revision 1.7 2005/11/27 03:04:38 bernie + *#* Add POSIX emulation for IRQ_* macros; Add Qt support. + *#* *#* Revision 1.6 2005/07/19 07:26:49 bernie *#* Add missing #endif. *#* @@ -93,12 +96,17 @@ #elif CPU_X86 #define NOP asm volatile ("nop") - #define IRQ_DISABLE FIXME - #define IRQ_ENABLE FIXME - #define IRQ_SAVE_DISABLE(x) FIXME - #define IRQ_RESTORE(x) FIXME - typedef uint32_t cpuflags_t; // FIXME + /* Get IRQ_* definitions from the hosting environment. */ + #include + #if OS_EMBEDDED + #define IRQ_DISABLE FIXME + #define IRQ_ENABLE FIXME + #define IRQ_SAVE_DISABLE(x) FIXME + #define IRQ_RESTORE(x) FIXME + typedef uint32_t cpuflags_t; // FIXME + #endif /* OS_EMBEDDED */ + #define CPU_REGS_CNT 7 #define CPU_STACK_GROWS_UPWARD 0 @@ -121,6 +129,7 @@ #elif CPU_PPC #define NOP asm volatile ("nop" ::) + #define IRQ_DISABLE FIXME #define IRQ_ENABLE FIXME #define IRQ_SAVE_DISABLE(x) FIXME diff --git a/cfg/os.h b/cfg/os.h index 9a803768..04165040 100755 --- a/cfg/os.h +++ b/cfg/os.h @@ -1,7 +1,7 @@ /*! * \file * * @@ -14,6 +14,9 @@ /*#* *#* $Log$ + *#* 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. *#* @@ -27,9 +30,9 @@ #ifndef DEVLIB_OS_H #define DEVLIB_OS_H - /*! 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) /* * OS autodetection (Some systems trigger multiple OS definitions) @@ -44,7 +47,40 @@ #ifdef __unix__ #define OS_UNIX 1 #define OS_POSIX 1 /* Not strictly UNIX, but no way to autodetect it. */ - #define OS_ID unix + #define OS_ID posix + + /* + * 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 IRQ_DISABLE \ + do { \ + sigset_t sigs; \ + sigfillset(&sigs); \ + sigprocmask(SIG_BLOCK, &sigs, NULL); \ + } while (0) + + #define IRQ_ENABLE \ + do { \ + sigset_t sigs; \ + sigemptyset(&sigs); \ + sigprocmask(SIG_UNBLOCK, &sigs, NULL); \ + } while (0) + + #define IRQ_SAVE_DISABLE(old_sigs) \ + do { \ + sigset_t sigs; \ + sigemptyset(&sigs); \ + sigprocmask(SIG_SETMASK, &sigs, &old_sigs); \ + } while (0) + + #define IRQ_RESTORE(old_sigs) \ + do { \ + sigprocmask(SIG_SETMASK, &old_sigs, NULL); \ + } while (0) #else #define OS_UNIX 0 #define OS_POSIX 0 @@ -63,28 +99,32 @@ #endif /* - * Summarize hosted environments as OS_HOSTED. + * We want Qt and other frameworks to look like OSes because you would + * tipically want their portable abstractions if you're using one of these. */ -#if OS_WIN32 || OS_UNIX - #define OS_HOSTED 1 +#if defined(_QT) + #define OS_QT 1 + #undef OS_ID + #define OS_ID qt #else - #define OS_HOSTED 0 + #define OS_QT 0 #endif + + /* - * Summarize embedded environments as OS_EMBEDDED. + * Summarize hosted environments as OS_HOSTED and embedded + * environment with OS_EMBEDDED. */ -#if CPU_AVR || CPU_DSP56K || CPU_I196 || defined(__embedded__) - #define OS_EMBEDDED 1 +#if OS_WIN32 || OS_UNIX + #define OS_HOSTED 1 + #define OS_EMBEDDED 0 #else - #define OS_EMBEDDED 0 + #define OS_HOSTED 0 + #define OS_EMBEDDED 1 #endif - /* Self-check for the detection */ -#if CPU_I196 + CPU_X86 + CPU_DSP56K + CPU_AVR == 0 - #error Unknown CPU -#endif #if !defined(OS_ID) #error OS_ID not defined #endif