X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=compat.h;h=225af24e6e57c94e6180ac34333aa95c882effe3;hb=refs%2Fheads%2Fplanetlab-3_2-branch;hp=5b7291b49143b194b43c1cbdf72c885a88d3cd8f;hpb=96b9bc3416686cb4080beb8bda4283edaefafbe2;p=util-vserver.git diff --git a/compat.h b/compat.h index 5b7291b..225af24 100644 --- a/compat.h +++ b/compat.h @@ -1,4 +1,4 @@ -// $Id: compat.h,v 1.1.4.3 2003/12/30 13:47:56 ensc Exp $ --*- c++ -*-- +// $Id: compat.h,v 1.17 2004/04/22 20:47:31 ensc Exp $ --*- c++ -*-- // Copyright (C) 2003 Enrico Scholz // @@ -19,18 +19,57 @@ #ifndef H_UTIL_VSERVER_COMPAT_H #define H_UTIL_VSERVER_COMPAT_H +#if defined(__dietlibc__) && !defined(ENSC_DIETLIBC_C99) && defined(__STRICT_ANSI__) && defined(__STDC_VERSION__) +# include +# undef inline + +# undef __STRICT_ANSI__ +# include +# define __STRICT_ANSI__ +#endif + +#if defined(__dietlibc__) +# define ENSC_FIX_IOCTL(X) do { if ((X)<-1) { errno=-(X); (X) = -1; } } while (0) +#else +# define ENSC_FIX_IOCTL(X) do { } while (0) +#endif + #if defined(__GNUC__) # define UNUSED __attribute__((__unused__)) # define NORETURN __attribute__((__noreturn__)) -# if __GNUC__ >= 3 +# define CONST __attribute__((__const__)) +# if __GNUC__*0x10000 + __GNUC_MINOR__*0x100 + __GNUC_PATCHLEVEL__ >= 0x30300 +# define NONNULL(ARGS) __attribute__((__nonnull__ ARGS)) # define ALWAYSINLINE __attribute__((__always_inline__)) # else +# define NONNULL(ARGS) # define ALWAYSINLINE +# define PURE +# endif +# if __GNUC__*0x10000 + __GNUC_MINOR__*0x100 + __GNUC_PATCHLEVEL__ >= 0x30303 +# define PURE __attribute__((__pure__)) +# else +# define PURE # endif #else +# define NONNULL(ARGS) # define UNUSED # define NORETURN # define ALWAYSINLINE +# define PURE +# define CONST +#endif + + // shamelessly stolen from dietlibc +#define LINK_WARNING(symbol,msg) \ + __asm__ (".section .gnu.warning." symbol "\n\t.string \"" msg "\"\n\t.previous") + +#if !defined(__builtin_expect) && (__GNUC__+0)<3 +# define __builtin_expect(foo,bar) (foo) +#endif + +#if !defined(__STDC_VERSION__) || (__STDC_VERSION__<199901L) +# define restrict #endif #if !defined(HAVE_DECL_MS_MOVE) || !(HAVE_DECL_MS_MOVE) @@ -43,4 +82,21 @@ typedef uint32_t xid_t; #endif +#ifndef HAVE_NID_T +#include +typedef uint32_t nid_t; +#endif + + +#if defined(__dietlibc__) + #define TEMP_FAILURE_RETRY(expression) \ + (__extension__ \ + ({ long int __result; \ + do __result = (long int) (expression); \ + while (__result == -1L && errno == EINTR); \ + __result; })) +#endif + +#define FMT_PREFIX utilvserver_fmt_ + #endif // H_UTIL_VSERVER_COMPAT_H