util-rohash.h File Reference
#include "queue.h"
Include dependency graph for util-rohash.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  ROHashTable_


typedef struct ROHashTable_ ROHashTable


ROHashTableROHashInit (uint8_t hash_bits, uint16_t item_size)
 initialize a new rohash More...
int ROHashInitFinalize (ROHashTable *table)
 create final hash data structure More...
void ROHashFree (ROHashTable *table)
int ROHashInitQueueValue (ROHashTable *table, void *value, uint16_t size)
 Add a new value to the hash. More...
uint32_t ROHashMemorySize (ROHashTable *table)
void * ROHashLookup (ROHashTable *table, void *data, uint16_t size)

Detailed Description

Typedef Documentation

◆ ROHashTable

typedef struct ROHashTable_ ROHashTable

Function Documentation

◆ ROHashFree()

void ROHashFree ( ROHashTable table)

Definition at line 92 of file util-rohash.c.

References ROHashTable_::data, and SCFree.

◆ ROHashInit()

ROHashTable* ROHashInit ( uint8_t  hash_bits,
uint16_t  item_size 

initialize a new rohash

hash_bitshash size as 2^hash_bits, so power of 2, max 31
item_sizesize of the data to store
Return values
tableptr or NULL on error

Definition at line 64 of file util-rohash.c.

References ROHashTable_::hash_bits, hashsize, ROHashTable_::item_size, ROHashTable_::items, SC_ERR_HASH_TABLE_INIT, SCLogError, SCMalloc, TAILQ_INIT, and unlikely.

◆ ROHashInitFinalize()

int ROHashInitFinalize ( ROHashTable table)

create final hash data structure

tablethe hash table
Return values
after this call the nothing can be added to the hash anymore.

Definition at line 183 of file util-rohash.c.

References ROHashTableOffsets_::cnt, ROHashTable_::data, ROHashTable_::hash_bits, hashmask, hashsize, hashword(), ROHashTable_::item_size, ROHashTable_::items, ROHashTable_::locked, next, offset, ROHashTableOffsets_::offset, ROHashTableItem_::pos, SC_ERR_HASH_TABLE_INIT, SCFree, SCLogError, SCMalloc, TAILQ_FIRST, TAILQ_FOREACH, and TAILQ_REMOVE.

Here is the call graph for this function:

◆ ROHashInitQueueValue()

int ROHashInitQueueValue ( ROHashTable table,
void *  value,
uint16_t  size 

Add a new value to the hash.

can only be done when table isn't in a locked state yet
tablethe hash table
valuevalue to add
sizevalue size. MUST match table item_size
Return values

Definition at line 152 of file util-rohash.c.

References ROHashTable_::item_size, ROHashTable_::locked, next, SC_ERR_HASH_TABLE_INIT, SCLogError, SCMalloc, and TAILQ_INSERT_TAIL.

◆ ROHashLookup()

void* ROHashLookup ( ROHashTable table,
void *  data,
uint16_t  size 
Return values
NULLnot found

Definition at line 113 of file util-rohash.c.

References ROHashTableOffsets_::cnt, ROHashTable_::data, ROHashTable_::hash_bits, hashmask, hashword(), ROHashTable_::item_size, offset, ROHashTableOffsets_::offset, SCMemcmp, and SCReturnPtr.

Here is the call graph for this function:

◆ ROHashMemorySize()

uint32_t ROHashMemorySize ( ROHashTable table)