The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/sys/cdefs.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*
    2  * Copyright (c) 1991, 1993
    3  *      The Regents of the University of California.  All rights reserved.
    4  *
    5  * This code is derived from software contributed to Berkeley by
    6  * Berkeley Software Design, Inc.
    7  *
    8  * Redistribution and use in source and binary forms, with or without
    9  * modification, are permitted provided that the following conditions
   10  * are met:
   11  * 1. Redistributions of source code must retain the above copyright
   12  *    notice, this list of conditions and the following disclaimer.
   13  * 2. Redistributions in binary form must reproduce the above copyright
   14  *    notice, this list of conditions and the following disclaimer in the
   15  *    documentation and/or other materials provided with the distribution.
   16  * 3. All advertising materials mentioning features or use of this software
   17  *    must display the following acknowledgement:
   18  *      This product includes software developed by the University of
   19  *      California, Berkeley and its contributors.
   20  * 4. Neither the name of the University nor the names of its contributors
   21  *    may be used to endorse or promote products derived from this software
   22  *    without specific prior written permission.
   23  *
   24  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
   25  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   26  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   27  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
   28  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   29  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   30  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   31  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   32  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   33  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   34  * SUCH DAMAGE.
   35  *
   36  *      @(#)cdefs.h     8.8 (Berkeley) 1/9/95
   37  * $FreeBSD: src/sys/sys/cdefs.h,v 1.11.2.4 1999/10/31 12:54:06 jdp Exp $
   38  */
   39 
   40 #ifndef _SYS_CDEFS_H_
   41 #define _SYS_CDEFS_H_
   42 
   43 #if defined(__cplusplus)
   44 #define __BEGIN_DECLS   extern "C" {
   45 #define __END_DECLS     }
   46 #else
   47 #define __BEGIN_DECLS
   48 #define __END_DECLS
   49 #endif
   50 
   51 /*
   52  * The __CONCAT macro is used to concatenate parts of symbol names, e.g.
   53  * with "#define OLD(foo) __CONCAT(old,foo)", OLD(foo) produces oldfoo.
   54  * The __CONCAT macro is a bit tricky -- make sure you don't put spaces
   55  * in between its arguments.  __CONCAT can also concatenate double-quoted
   56  * strings produced by the __STRING macro, but this only works with ANSI C.
   57  *
   58  * __XSTRING is like __STRING, but it expands any macros in its argument
   59  * first.  It is only available with ANSI C.
   60  */
   61 #if defined(__STDC__) || defined(__cplusplus)
   62 #define __P(protos)     protos          /* full-blown ANSI C */
   63 #define __CONCAT1(x,y)  x ## y
   64 #define __CONCAT(x,y)   __CONCAT1(x,y)
   65 #define __STRING(x)     #x              /* stringify without expanding x */
   66 #define __XSTRING(x)    __STRING(x)     /* expand x, then stringify */
   67 
   68 #define __const         const           /* define reserved names to standard */
   69 #define __signed        signed
   70 #define __volatile      volatile
   71 #if defined(__cplusplus)
   72 #define __inline        inline          /* convert to C++ keyword */
   73 #else
   74 #ifndef __GNUC__
   75 #define __inline                        /* delete GCC keyword */
   76 #endif /* !__GNUC__ */
   77 #endif /* !__cplusplus */
   78 
   79 #else   /* !(__STDC__ || __cplusplus) */
   80 #define __P(protos)     ()              /* traditional C preprocessor */
   81 #define __CONCAT(x,y)   x/**/y
   82 #define __STRING(x)     "x"
   83 
   84 #ifndef __GNUC__
   85 #define __const                         /* delete pseudo-ANSI C keywords */
   86 #define __inline
   87 #define __signed
   88 #define __volatile
   89 /*
   90  * In non-ANSI C environments, new programs will want ANSI-only C keywords
   91  * deleted from the program and old programs will want them left alone.
   92  * When using a compiler other than gcc, programs using the ANSI C keywords
   93  * const, inline etc. as normal identifiers should define -DNO_ANSI_KEYWORDS.
   94  * When using "gcc -traditional", we assume that this is the intent; if
   95  * __GNUC__ is defined but __STDC__ is not, we leave the new keywords alone.
   96  */
   97 #ifndef NO_ANSI_KEYWORDS
   98 #define const                           /* delete ANSI C keywords */
   99 #define inline
  100 #define signed
  101 #define volatile
  102 #endif  /* !NO_ANSI_KEYWORDS */
  103 #endif  /* !__GNUC__ */
  104 #endif  /* !(__STDC__ || __cplusplus) */
  105 
  106 /*
  107  * GCC1 and some versions of GCC2 declare dead (non-returning) and
  108  * pure (no side effects) functions using "volatile" and "const";
  109  * unfortunately, these then cause warnings under "-ansi -pedantic".
  110  * GCC2.5 uses a new, peculiar __attribute__((attrs)) style.  All of
  111  * these work for GNU C++ (modulo a slight glitch in the C++ grammar
  112  * in the distribution version of 2.5.5).
  113  */
  114 #if __GNUC__ < 2
  115 #define __dead
  116 #define __dead2
  117 #define __pure
  118 #define __pure2
  119 #define __unused
  120 #define __attribute__(x)
  121 #endif
  122 #if __GNUC__ == 2 && __GNUC_MINOR__ < 5
  123 #define __dead          __volatile
  124 #define __dead2
  125 #define __pure          __const
  126 #define __pure2
  127 #define __unused
  128 #endif
  129 #if __GNUC__ == 2 && __GNUC_MINOR__ >= 5 && __GNUC_MINOR__ < 7
  130 #define __dead
  131 #define __dead2         __attribute__((__noreturn__))
  132 #define __pure
  133 #define __pure2         __attribute__((__const__))
  134 #define __unused
  135 #endif
  136 #if __GNUC__ == 2 && __GNUC_MINOR__ >= 7 || __GNUC__ >= 3
  137 #define __dead
  138 #define __dead2         __attribute__((__noreturn__))
  139 #define __pure
  140 #define __pure2         __attribute__((__const__))
  141 #define __unused        __attribute__((__unused__))
  142 #endif
  143 
  144 #if __GNUC__ < 2 || __GNUC__ == 2 && __GNUC_MINOR__ < 7
  145 #define __printflike(fmtarg, firstvararg)
  146 #define __scanflike(fmtarg, firstvararg)
  147 #else
  148 #define __printflike(fmtarg, firstvararg) \
  149             __attribute__((__format__ (__printf__, fmtarg, firstvararg)))
  150 #define __scanflike(fmtarg, firstvararg) \
  151             __attribute__((__format__ (__scanf__, fmtarg, firstvararg)))
  152 #endif
  153 
  154 #ifdef __GNUC__
  155 #ifdef __STDC__
  156 #define __weak_reference(sym,alias)     \
  157         __asm__(".stabs \"_" #alias "\",11,0,0,0");     \
  158         __asm__(".stabs \"_" #sym "\",1,0,0,0")
  159 #define __warn_references(sym,msg)      \
  160         __asm__(".stabs \"" msg "\",30,0,0,0");         \
  161         __asm__(".stabs \"_" #sym "\",1,0,0,0")
  162 #else
  163 #define __weak_reference(sym,alias)     \
  164         __asm__(".stabs \"_/**/alias\",11,0,0,0");      \
  165         __asm__(".stabs \"_/**/sym\",1,0,0,0")
  166 #define __warn_references(sym,msg)      \
  167         __asm__(".stabs msg,30,0,0,0");                 \
  168         __asm__(".stabs \"_/**/sym\",1,0,0,0")
  169 #endif
  170 #endif
  171 
  172 #define __IDSTRING(name,string) \
  173         static const char name[] __attribute__((__unused__)) = string
  174 
  175 #ifndef __RCSID
  176 #define __RCSID(s)      __IDSTRING(rcsid,s)
  177 #endif
  178 
  179 #ifndef __RCSID_SOURCE
  180 #define __RCSID_SOURCE(s) __IDSTRING(rcsid_source,s)
  181 #endif
  182 
  183 #ifndef __COPYRIGHT
  184 #define __COPYRIGHT(s)  __IDSTRING(copyright,s)
  185 #endif
  186 
  187 #endif /* !_SYS_CDEFS_H_ */

Cache object: 6d30efa81ed1d629c8515467a110d7bb


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.