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/port/lib.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  * functions (possibly) linked in, complete, from libc.
    3  */
    4 #define nelem(x)        (sizeof(x)/sizeof((x)[0]))
    5 #define offsetof(s, m)  (ulong)(&(((s*)0)->m))
    6 #define assert(x)       if(x){}else _assert("x")
    7 
    8 /*
    9  * mem routines
   10  */
   11 extern  void*   memccpy(void*, void*, int, ulong);
   12 extern  void*   memset(void*, int, ulong);
   13 extern  int     memcmp(void*, void*, ulong);
   14 extern  void*   memmove(void*, void*, ulong);
   15 extern  void*   memchr(void*, int, ulong);
   16 
   17 /*
   18  * string routines
   19  */
   20 extern  char*   strcat(char*, char*);
   21 extern  char*   strchr(char*, int);
   22 extern  char*   strrchr(char*, int);
   23 extern  int     strcmp(char*, char*);
   24 extern  char*   strcpy(char*, char*);
   25 extern  char*   strecpy(char*, char*, char*);
   26 extern  char*   strncat(char*, char*, long);
   27 extern  char*   strncpy(char*, char*, long);
   28 extern  int     strncmp(char*, char*, long);
   29 extern  long    strlen(char*);
   30 extern  char*   strstr(char*, char*);
   31 extern  int     atoi(char*);
   32 extern  int     fullrune(char*, int);
   33 extern  int     cistrcmp(char*, char*);
   34 extern  int     cistrncmp(char*, char*, int);
   35 
   36 enum
   37 {
   38         UTFmax          = 3,    /* maximum bytes per rune */
   39         Runesync        = 0x80, /* cannot represent part of a UTF sequence */
   40         Runeself        = 0x80, /* rune and UTF sequences are the same (<) */
   41         Runeerror       = 0x80, /* decoding error in UTF */
   42 };
   43 
   44 /*
   45  * rune routines
   46  */
   47 extern  int     runetochar(char*, Rune*);
   48 extern  int     chartorune(Rune*, char*);
   49 extern  char*   utfrune(char*, long);
   50 extern  int     utflen(char*);
   51 extern  int     utfnlen(char*, long);
   52 extern  int     runelen(long);
   53 
   54 extern  int     abs(int);
   55 
   56 /*
   57  * print routines
   58  */
   59 typedef struct Fmt      Fmt;
   60 typedef int (*Fmts)(Fmt*);
   61 struct Fmt{
   62         uchar   runes;                  /* output buffer is runes or chars? */
   63         void    *start;                 /* of buffer */
   64         void    *to;                    /* current place in the buffer */
   65         void    *stop;                  /* end of the buffer; overwritten if flush fails */
   66         int     (*flush)(Fmt *);        /* called when to == stop */
   67         void    *farg;                  /* to make flush a closure */
   68         int     nfmt;                   /* num chars formatted so far */
   69         va_list args;                   /* args passed to dofmt */
   70         int     r;                      /* % format Rune */
   71         int     width;
   72         int     prec;
   73         ulong   flags;
   74 };
   75 extern  int     print(char*, ...);
   76 extern  char*   seprint(char*, char*, char*, ...);
   77 extern  char*   vseprint(char*, char*, char*, va_list);
   78 extern  int     snprint(char*, int, char*, ...);
   79 extern  int     vsnprint(char*, int, char*, va_list);
   80 extern  int     sprint(char*, char*, ...);
   81 
   82 #pragma varargck        argpos  fmtprint        2
   83 #pragma varargck        argpos  print           1
   84 #pragma varargck        argpos  seprint         3
   85 #pragma varargck        argpos  snprint         3
   86 #pragma varargck        argpos  sprint          2
   87 
   88 #pragma varargck        type    "lld"   vlong
   89 #pragma varargck        type    "llx"   vlong
   90 #pragma varargck        type    "lld"   uvlong
   91 #pragma varargck        type    "llx"   uvlong
   92 #pragma varargck        type    "ld"    long
   93 #pragma varargck        type    "lx"    long
   94 #pragma varargck        type    "ld"    ulong
   95 #pragma varargck        type    "lx"    ulong
   96 #pragma varargck        type    "d"     int
   97 #pragma varargck        type    "x"     int
   98 #pragma varargck        type    "c"     int
   99 #pragma varargck        type    "C"     int
  100 #pragma varargck        type    "d"     uint
  101 #pragma varargck        type    "x"     uint
  102 #pragma varargck        type    "c"     uint
  103 #pragma varargck        type    "C"     uint
  104 #pragma varargck        type    "s"     char*
  105 #pragma varargck        type    "q"     char*
  106 #pragma varargck        type    "S"     Rune*
  107 #pragma varargck        type    "%"     void
  108 #pragma varargck        type    "p"     uintptr
  109 #pragma varargck        type    "p"     void*
  110 #pragma varargck        flag    ','
  111 
  112 extern  int     fmtinstall(int, int (*)(Fmt*));
  113 extern  void    quotefmtinstall(void);
  114 extern  int     fmtprint(Fmt*, char*, ...);
  115 extern  int     fmtstrcpy(Fmt*, char*);
  116 
  117 /*
  118  * one-of-a-kind
  119  */
  120 extern  char*   cleanname(char*);
  121 extern  ulong   getcallerpc(void*);
  122 
  123 extern  long    strtol(char*, char**, int);
  124 extern  ulong   strtoul(char*, char**, int);
  125 extern  vlong   strtoll(char*, char**, int);
  126 extern  uvlong  strtoull(char*, char**, int);
  127 extern  char    etext[];
  128 extern  char    edata[];
  129 extern  char    end[];
  130 extern  int     getfields(char*, char**, int, int, char*);
  131 extern  int     tokenize(char*, char**, int);
  132 extern  int     dec64(uchar*, int, char*, int);
  133 extern  int     encodefmt(Fmt*);
  134 extern  void    qsort(void*, long, long, int (*)(void*, void*));
  135 
  136 /*
  137  * Syscall data structures
  138  */
  139 #define MORDER  0x0003  /* mask for bits defining order of mounting */
  140 #define MREPL   0x0000  /* mount replaces object */
  141 #define MBEFORE 0x0001  /* mount goes before others in union directory */
  142 #define MAFTER  0x0002  /* mount goes after others in union directory */
  143 #define MCREATE 0x0004  /* permit creation in mounted directory */
  144 #define MCACHE  0x0010  /* cache some data */
  145 #define MMASK   0x0017  /* all bits on */
  146 
  147 #define OREAD   0       /* open for read */
  148 #define OWRITE  1       /* write */
  149 #define ORDWR   2       /* read and write */
  150 #define OEXEC   3       /* execute, == read but check execute permission */
  151 #define OTRUNC  16      /* or'ed in (except for exec), truncate file first */
  152 #define OCEXEC  32      /* or'ed in, close on exec */
  153 #define ORCLOSE 64      /* or'ed in, remove on close */
  154 #define OEXCL   0x1000  /* or'ed in, exclusive create */
  155 
  156 #define NCONT   0       /* continue after note */
  157 #define NDFLT   1       /* terminate after note */
  158 #define NSAVE   2       /* clear note but hold state */
  159 #define NRSTR   3       /* restore saved state */
  160 
  161 typedef struct Qid      Qid;
  162 typedef struct Dir      Dir;
  163 typedef struct OWaitmsg OWaitmsg;
  164 typedef struct Waitmsg  Waitmsg;
  165 
  166 #define ERRMAX                  128     /* max length of error string */
  167 #define KNAMELEN                28      /* max length of name held in kernel */
  168 
  169 /* bits in Qid.type */
  170 #define QTDIR           0x80            /* type bit for directories */
  171 #define QTAPPEND        0x40            /* type bit for append only files */
  172 #define QTEXCL          0x20            /* type bit for exclusive use files */
  173 #define QTMOUNT         0x10            /* type bit for mounted channel */
  174 #define QTAUTH          0x08            /* type bit for authentication file */
  175 #define QTFILE          0x00            /* plain file */
  176 
  177 /* bits in Dir.mode */
  178 #define DMDIR           0x80000000      /* mode bit for directories */
  179 #define DMAPPEND        0x40000000      /* mode bit for append only files */
  180 #define DMEXCL          0x20000000      /* mode bit for exclusive use files */
  181 #define DMMOUNT         0x10000000      /* mode bit for mounted channel */
  182 #define DMREAD          0x4             /* mode bit for read permission */
  183 #define DMWRITE         0x2             /* mode bit for write permission */
  184 #define DMEXEC          0x1             /* mode bit for execute permission */
  185 
  186 struct Qid
  187 {
  188         uvlong  path;
  189         ulong   vers;
  190         uchar   type;
  191 };
  192 
  193 struct Dir {
  194         /* system-modified data */
  195         ushort  type;   /* server type */
  196         uint    dev;    /* server subtype */
  197         /* file data */
  198         Qid     qid;    /* unique id from server */
  199         ulong   mode;   /* permissions */
  200         ulong   atime;  /* last read time */
  201         ulong   mtime;  /* last write time */
  202         vlong   length; /* file length: see <u.h> */
  203         char    *name;  /* last element of path */
  204         char    *uid;   /* owner name */
  205         char    *gid;   /* group name */
  206         char    *muid;  /* last modifier name */
  207 };
  208 
  209 struct OWaitmsg
  210 {
  211         char    pid[12];        /* of loved one */
  212         char    time[3*12];     /* of loved one and descendants */
  213         char    msg[64];        /* compatibility BUG */
  214 };
  215 
  216 struct Waitmsg
  217 {
  218         int     pid;            /* of loved one */
  219         ulong   time[3];        /* of loved one and descendants */
  220         char    msg[ERRMAX];    /* actually variable-size in user mode */
  221 };

Cache object: 7eb7acb3730b779841db40deb6897fb8


[ 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.