Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
genksyms.h
Go to the documentation of this file.
1 /* Generate kernel symbol version hashes.
2  Copyright 1996, 1997 Linux International.
3 
4  New implementation contributed by Richard Henderson <[email protected]>
5  Based on original work by Bjorn Ekwall <[email protected]>
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 
31 };
32 
35 };
36 
37 struct string_list {
38  struct string_list *next;
41  char *string;
42 };
43 
44 struct symbol {
45  struct symbol *hash_next;
46  const char *name;
48  struct string_list *defn;
50  struct symbol *visited;
51  int is_extern;
55 };
56 
57 typedef struct string_list **yystype;
58 #define YYSTYPE yystype
59 
60 extern int cur_line;
61 extern char *cur_filename, *source_file;
62 extern int in_source_file;
63 
64 struct symbol *find_symbol(const char *name, enum symbol_type ns, int exact);
65 struct symbol *add_symbol(const char *name, enum symbol_type type,
66  struct string_list *defn, int is_extern);
67 void export_symbol(const char *);
68 
69 void free_node(struct string_list *list);
70 void free_list(struct string_list *s, struct string_list *e);
71 struct string_list *copy_node(struct string_list *);
73  struct string_list *end);
74 
75 int yylex(void);
76 int yyparse(void);
77 
78 void error_with_pos(const char *, ...);
79 
80 /*----------------------------------------------------------------------*/
81 #define xmalloc(size) ({ void *__ptr = malloc(size); \
82  if(!__ptr && size != 0) { \
83  fprintf(stderr, "out of memory\n"); \
84  exit(1); \
85  } \
86  __ptr; })
87 #define xstrdup(str) ({ char *__str = strdup(str); \
88  if (!__str) { \
89  fprintf(stderr, "out of memory\n"); \
90  exit(1); \
91  } \
92  __str; })
93 
94 #endif /* genksyms.h */