X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;ds=sidebyside;f=compiler.h;h=ba98f5f9e641c7979f5deabe7df87e8c3fd9ab9a;hb=f530f9a7018684f5ad744076220f845ed7732244;hp=bbceaaa8b435a4f18eeecf3471e8a90db0a5c32a;hpb=0480653a2b43a2fb4892016d6e8ea7607eae2611;p=bertos.git diff --git a/compiler.h b/compiler.h index bbceaaa8..ba98f5f9 100755 --- a/compiler.h +++ b/compiler.h @@ -14,6 +14,18 @@ /*#* *#* $Log$ + *#* Revision 1.36 2004/12/08 08:55:54 bernie + *#* Rename sigset_t to sigmask_t and time_t to mtime_t, to avoid conflicts with POSIX definitions. + *#* + *#* Revision 1.35 2004/12/08 07:35:51 bernie + *#* Typo in macro name. + *#* + *#* Revision 1.34 2004/11/28 23:21:33 bernie + *#* Use mtime_t instead of overloading ANSI time_t with new semantics. + *#* + *#* Revision 1.33 2004/11/16 23:09:40 bernie + *#* size_t: Add 64bit definitions; time_t: Add 16bit hack for tiny CPUs. + *#* *#* Revision 1.32 2004/11/16 22:42:44 bernie *#* Doxygen fixes. *#* @@ -166,7 +178,6 @@ #elif defined(_MSC_VER) /* Win32 emulation support */ #include - #include /* for time_t */ /* FIXME: I can't remember why exactly this was needed (NdBernie) */ #define float double @@ -210,12 +221,9 @@ #if CPU_X86 - /* Hack to avoid conflicts with system type */ - #define sigset_t system_sigset_t #include #include #include - #undef system_sigset_t #elif CPU_AVR @@ -267,8 +275,8 @@ * \def COMPILER_VARIADIC_MACROS * Support for macros with variable arguments. */ -#ifndef COMPILER_HAVE_VARIADIC_MACROS -#define COMPILER_HAVE_VARIADIC_MACROS (COMPILER_C99 != 0) +#ifndef COMPILER_VARIADIC_MACROS +#define COMPILER_VARIADIC_MACROS (COMPILER_C99 != 0) #endif /*! @@ -400,7 +408,32 @@ #endif -/* +#if CPU_AVR_ATMEGA8 + /* + * The ATmega8 has a very small Flash, so we can't afford + * to link in support routines for 32bit integer arithmetic. + */ + typedef int16_t mtime_t; /*!< Type for time expressed in milliseconds. */ + typedef int16_t utime_t; /*!< Type for time expressed in microseconds. */ + #define SIZEOF_MTIME_T (16 / CPU_BITS_PER_CHAR) + #define SIZEOF_UTIME_T (16 / CPU_BITS_PER_CHAR) +#else + typedef int32_t mtime_t; /*!< Type for time expressed in milliseconds. */ + typedef int32_t utime_t; /*!< Type for time expressed in microseconds. */ + #define SIZEOF_MTIME_T (32 / CPU_BITS_PER_CHAR) + #define SIZEOF_UTIME_T (32 / CPU_BITS_PER_CHAR) +#endif + +/*! Bulk storage large enough for both pointers or integers. */ +typedef void * iptr_t; +typedef const void * const_iptr_t; + +typedef unsigned char sig_t; /*!< Type for signal bits. */ +typedef unsigned char sigmask_t; /*!< Type for signal masks. */ +typedef unsigned char page_t; /*!< Type for banked memory pages. */ + + +/*! * \name Standard type definitions. * * These should be in , but many compilers lack them. @@ -408,22 +441,27 @@ * \{ */ #if !(defined(size_t) || defined(_SIZE_T_DEFINED)) - typedef unsigned int size_t; - typedef int ssize_t; + #if CPU_REG_BITS > 32 + /* 64bit. */ + typedef unsigned long size_t; + typedef long ssize_t; + #else + /* 32bit or 16bit. */ + typedef unsigned int size_t; + typedef int ssize_t; + #endif #endif -#if !(defined(_TIME_T_DEFINED) || defined(__time_t_defined)) - typedef long time_t; + +#if !(defined(_TIME_T_DEFINED) || defined(__time_t_defined) || defined(_EMUL)) + /*! For backwards compatibility. Use mtime_t in new code. */ + #define time_t mtime_t + #define SIZEOF_TIME_T SIZEOF_MTIME_T +#else + /* Just a guess, but quite safe. */ + #define SIZEOF_TIME_T SIZEOF_LONG #endif /* _TIME_T_DEFINED || __time_t_defined */ /*\}*/ -/*! Bulk storage large enough for both pointers or integers. */ -typedef void * iptr_t; -typedef const void * const_iptr_t; - -typedef long utime_t; /*!< Type for time expressed in microseconds. */ -typedef unsigned char sig_t; /*!< Type for signal bits. */ -typedef unsigned char sigset_t; /*!< Type for signal masks. */ -typedef unsigned char page_t; /*!< Type for banked memory pages. */ /*! * \name Types for hardware registers.