[funini.com] -> [kei@sodan] -> Kernel Reading

root/security/selinux/ss/symtab.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. symhash
  2. symcmp
  3. symtab_init

/*
 * Implementation of the symbol table type.
 *
 * Author : Stephen Smalley, <sds@epoch.ncsc.mil>
 */
#include <linux/kernel.h>
#include <linux/slab.h>
#include <linux/string.h>
#include <linux/errno.h>
#include "symtab.h"

static unsigned int symhash(struct hashtab *h, const void *key)
{
        const char *p, *keyp;
        unsigned int size;
        unsigned int val;

        val = 0;
        keyp = key;
        size = strlen(keyp);
        for (p = keyp; (p - keyp) < size; p++)
                val = (val << 4 | (val >> (8*sizeof(unsigned int)-4))) ^ (*p);
        return val & (h->size - 1);
}

static int symcmp(struct hashtab *h, const void *key1, const void *key2)
{
        const char *keyp1, *keyp2;

        keyp1 = key1;
        keyp2 = key2;
        return strcmp(keyp1, keyp2);
}


int symtab_init(struct symtab *s, unsigned int size)
{
        s->table = hashtab_create(symhash, symcmp, size);
        if (!s->table)
                return -1;
        s->nprim = 0;
        return 0;
}


/* [<][>][^][v][top][bottom][index][help] */

[funini.com] -> [kei@sodan] -> Kernel Reading