root/trunk/compat.h

Revision 2589, 2.9 KB (checked in by dhozac, 3 years ago)

Add support for a separate filesystem tag, and in the process improve the support for network contexts.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1// $Id$    --*- c++ -*--
2
3// Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
4// 
5// This program is free software; you can redistribute it and/or modify
6// it under the terms of the GNU General Public License as published by
7// the Free Software Foundation; version 2 of the License.
8// 
9// This program is distributed in the hope that it will be useful,
10// but WITHOUT ANY WARRANTY; without even the implied warranty of
11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12// GNU General Public License for more details.
13// 
14// You should have received a copy of the GNU General Public License
15// along with this program; if not, write to the Free Software
16// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17
18
19#ifndef H_UTIL_VSERVER_COMPAT_H
20#define H_UTIL_VSERVER_COMPAT_H
21
22#if defined(__dietlibc__) && !defined(ENSC_DIETLIBC_C99) && defined(__STRICT_ANSI__) && defined(__STDC_VERSION__)
23#  include <sys/cdefs.h>
24#  undef inline
25
26#  undef  __STRICT_ANSI__
27#  include <stdint.h>
28#  define __STRICT_ANSI__
29#endif
30
31#if defined(__dietlibc__)
32#  define ENSC_FIX_IOCTL(X)     do { if ((X)<-1) { errno=-(X); (X) = -1; } } while (0)
33#else
34#  define ENSC_FIX_IOCTL(X)     do { } while (0)
35#endif
36
37#if defined(__GNUC__)
38#  define UNUSED                __attribute__((__unused__))
39#  define NORETURN              __attribute__((__noreturn__))
40#  define CONST                 __attribute__((__const__))
41#  if __GNUC__*0x10000 + __GNUC_MINOR__*0x100 + __GNUC_PATCHLEVEL__ >= 0x30300
42#    define NONNULL(ARGS)       __attribute__((__nonnull__ ARGS))
43#    define ALWAYSINLINE        __attribute__((__always_inline__))
44#  else
45#    define NONNULL(ARGS)
46#    define ALWAYSINLINE
47#    define PURE
48#  endif
49#  if __GNUC__*0x10000 + __GNUC_MINOR__*0x100 + __GNUC_PATCHLEVEL__ >= 0x30303
50#    define PURE                __attribute__((__pure__))
51#  else
52#    define PURE
53#  endif
54#else
55#  define NONNULL(ARGS)
56#  define UNUSED
57#  define NORETURN
58#  define ALWAYSINLINE
59#  define PURE
60#  define CONST
61#endif
62
63  // shamelessly stolen from dietlibc
64#define LINK_WARNING(symbol,msg)                                        \
65  __asm__ (".section .gnu.warning." symbol "\n\t.string \"" msg "\"\n\t.previous")
66
67#if !defined(__builtin_expect) && (__GNUC__+0)<3
68#  define __builtin_expect(foo,bar)     (foo)
69#endif
70
71#if !defined(__STDC_VERSION__) || (__STDC_VERSION__<199901L)
72#  define restrict
73#endif
74
75#if !defined(HAVE_DECL_MS_MOVE) || !(HAVE_DECL_MS_MOVE)
76  // from <linux/fs.h>
77#  define MS_MOVE               8192
78#endif
79
80#ifndef HAVE_XID_T
81#include <stdint.h>
82typedef uint32_t                xid_t;
83#endif
84
85#ifndef HAVE_NID_T
86#include <stdint.h>
87typedef uint32_t                nid_t;
88#endif
89
90#ifndef HAVE_TAG_T
91#include <stdint.h>
92typedef uint32_t                tag_t;
93#endif
94
95
96#if defined(__dietlibc__)
97  #define TEMP_FAILURE_RETRY(expression)                                \
98  (__extension__                                                        \
99   ({ long int __result;                                                \
100   do __result = (long int) (expression);                               \
101   while (__result == -1L && errno == EINTR);                           \
102  __result; }))
103#endif
104
105#define FMT_PREFIX              utilvserver_fmt_
106
107#endif  //  H_UTIL_VSERVER_COMPAT_H
Note: See TracBrowser for help on using the browser.