home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / scripts / genksyms / genksyms.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-11-21  |  2.3 KB  |  82 lines

  1. /* Generate kernel symbol version hashes.
  2.    Copyright 1996, 1997 Linux International.
  3.  
  4.    New implementation contributed by Richard Henderson <rth@tamu.edu>
  5.    Based on original work by Bjorn Ekwall <bj0rn@blox.se>
  6.  
  7.    This file is part of the Linux modutils.
  8.  
  9.    This program is free software; you can redistribute it and/or modify it
  10.    under the terms of the GNU General Public License as published by the
  11.    Free Software Foundation; either version 2 of the License, or (at your
  12.    option) any later version.
  13.  
  14.    This program is distributed in the hope that it will be useful, but
  15.    WITHOUT ANY WARRANTY; without even the implied warranty of
  16.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  17.    General Public License for more details.
  18.  
  19.    You should have received a copy of the GNU General Public License
  20.    along with this program; if not, write to the Free Software Foundation,
  21.    Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
  22.  
  23. #ifndef MODUTILS_GENKSYMS_H
  24. #define MODUTILS_GENKSYMS_H 1
  25.  
  26. #include <stdio.h>
  27.  
  28. enum symbol_type {
  29.     SYM_NORMAL, SYM_TYPEDEF, SYM_ENUM, SYM_STRUCT, SYM_UNION
  30. };
  31.  
  32. struct string_list {
  33.     struct string_list *next;
  34.     enum symbol_type tag;
  35.     char *string;
  36. };
  37.  
  38. struct symbol {
  39.     struct symbol *hash_next;
  40.     const char *name;
  41.     enum symbol_type type;
  42.     struct string_list *defn;
  43.     struct symbol *expansion_trail;
  44.     int is_extern;
  45. };
  46.  
  47. typedef struct string_list **yystype;
  48. #define YYSTYPE yystype
  49.  
  50. extern int cur_line;
  51. extern char *cur_filename;
  52.  
  53. struct symbol *find_symbol(const char *name, enum symbol_type ns);
  54. struct symbol *add_symbol(const char *name, enum symbol_type type,
  55.               struct string_list *defn, int is_extern);
  56. void export_symbol(const char *);
  57.  
  58. void free_node(struct string_list *list);
  59. void free_list(struct string_list *s, struct string_list *e);
  60. struct string_list *copy_node(struct string_list *);
  61.  
  62. int yylex(void);
  63. int yyparse(void);
  64.  
  65. void error_with_pos(const char *, ...);
  66.  
  67. /*----------------------------------------------------------------------*/
  68. #define xmalloc(size) ({ void *__ptr = malloc(size);        \
  69.     if(!__ptr && size != 0) {                \
  70.         fprintf(stderr, "out of memory\n");        \
  71.         exit(1);                    \
  72.     }                            \
  73.     __ptr; })
  74. #define xstrdup(str)  ({ char *__str = strdup(str);        \
  75.     if (!__str) {                        \
  76.         fprintf(stderr, "out of memory\n");        \
  77.         exit(1);                    \
  78.     }                            \
  79.     __str; })
  80.  
  81. #endif                /* genksyms.h */
  82.