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