2 * Implementation of the symbol table type.
4 * Author : Stephen Smalley, <sds@epoch.ncsc.mil>
6 #include <linux/kernel.h>
7 #include <linux/slab.h>
8 #include <linux/string.h>
9 #include <linux/errno.h>
12 static unsigned int symhash(struct hashtab
*h
, const void *key
)
21 for (p
= keyp
; (p
- keyp
) < size
; p
++)
22 val
= (val
<< 4 | (val
>> (8*sizeof(unsigned int)-4))) ^ (*p
);
23 return val
& (h
->size
- 1);
26 static int symcmp(struct hashtab
*h
, const void *key1
, const void *key2
)
28 const char *keyp1
, *keyp2
;
32 return strcmp(keyp1
, keyp2
);
36 int symtab_init(struct symtab
*s
, unsigned int size
)
38 s
->table
= hashtab_create(symhash
, symcmp
, size
);