OpenCores
URL https://opencores.org/ocsvn/test_project/test_project/trunk

Subversion Repositories test_project

[/] [test_project/] [trunk/] [linux_sd_driver/] [security/] [selinux/] [ss/] [symtab.c] - Blame information for rev 67

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 62 marcus.erl
/*
2
 * Implementation of the symbol table type.
3
 *
4
 * Author : Stephen Smalley, <sds@epoch.ncsc.mil>
5
 */
6
#include <linux/kernel.h>
7
#include <linux/slab.h>
8
#include <linux/string.h>
9
#include <linux/errno.h>
10
#include "symtab.h"
11
 
12
static unsigned int symhash(struct hashtab *h, const void *key)
13
{
14
        const char *p, *keyp;
15
        unsigned int size;
16
        unsigned int val;
17
 
18
        val = 0;
19
        keyp = key;
20
        size = strlen(keyp);
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);
24
}
25
 
26
static int symcmp(struct hashtab *h, const void *key1, const void *key2)
27
{
28
        const char *keyp1, *keyp2;
29
 
30
        keyp1 = key1;
31
        keyp2 = key2;
32
        return strcmp(keyp1, keyp2);
33
}
34
 
35
 
36
int symtab_init(struct symtab *s, unsigned int size)
37
{
38
        s->table = hashtab_create(symhash, symcmp, size);
39
        if (!s->table)
40
                return -1;
41
        s->nprim = 0;
42
        return 0;
43
}
44
 

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.