Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
CK_HS_INIT(3)		 BSD Library Functions Manual		 CK_HS_INIT(3)

     ck_hs_init	-- initialize a	hash set

     Concurrency Kit (libck, -lck)

     #include <ck_hs.h>

     typedef unsigned long
     ck_hs_hash_cb_t(const void	*key, unsigned long seed);

     typedef bool
     ck_hs_compare_cb_t(const void *c1,	const void *c2);

     ck_hs_init(ck_hs_t	*hs, unsigned int mode,
	 ck_hs_hash_cb_t *hash_function, ck_hs_compare_cb_t *compare,
	 struct	ck_malloc *allocator, unsigned long capacity,
	 unsigned long seed);

     The ck_hs_init() function initializes the hash set	pointed	to by the hs

     The argument mode specifies the type of key-value pairs to	be stored in
     the hash set as well as the expected concurrent access model.  The	value
     of	mode consists of a bitfield of one of the following:

	     The hash set is meant to store pointers to	objects. This provides
	     a hint that only CK_MD_VMA_BITS are necessary to encode the key
	     argument. Any unused pointer bits are leveraged for internal op-

	     The hash set is meant to directly store key values	and that all
	     bits of the key are used to encode	values.

     The concurrent access model is specified by:

	     The hash set should allow for concurrent readers in the presence
	     of	a single writer.

	     The hash set should allow for concurrent readers in the presence
	     of	concurrent writers. This is currently unsupported.

     The developer is free to specify additional workload hints.  These	hints
     are one of:

	     The hash set is expected to have a	delete-heavy workload.	At the
	     cost of approximately 13% increased memory	usage, allow for
	     stronger per-slot probe bounds to combat the effects of tombstone

     The argument hash_function	is a mandatory pointer to a user-specified
     hash function.  A user-specified hash function takes two arguments. The
     key argument is a pointer to a key. The seed argument is the initial seed
     associated	with the hash set.  This initial seed is specified by the user
     in	ck_hs_init(3).

     The compare argument is an	optional pointer to a user-specified key com-
     parison function. If NULL is specified in this argument, then pointer
     equality will be used to determine	key equality. A	user-specified compar-
     ison function takes two arguments representing pointers to	the objects
     being compared for	equality. It is	expected to return true	if the keys
     are of equal value	and false otherwise.

     The allocator argument is a pointer to a structure	containing malloc and
     free function pointers which respectively define the memory allocation
     and destruction functions to be used by the hash set being	initialized.

     The argument capacity represents the initial number of keys the hash set
     is	expected to contain. This argument is simply a hint and	the underlying
     implementation is free to allocate	more or	less memory than necessary to
     contain the number	of entries capacity specifies.

     The argument seed specifies the initial seed used by the underlying hash
     function.	The user is free to choose a value of their choice.

     Upon successful completion	ck_hs_init() returns a value of	true and oth-
     erwise returns a value of false to	indicate an error.

     The behavior of ck_hs_init() is undefined if hs is	not a pointer to a
     ck_hs_t object.

     ck_hs_move(3), ck_hs_destroy(3), CK_HS_HASH(3), ck_hs_iterator_init(3),
     ck_hs_next(3), ck_hs_get(3), ck_hs_put(3),	ck_hs_put_unique(3),
     ck_hs_set(3), ck_hs_fas(3), ck_hs_remove(3), ck_hs_grow(3),
     ck_hs_rebuild(3), ck_hs_gc(3), ck_hs_count(3), ck_hs_reset(3),
     ck_hs_reset_size(3), ck_hs_stat(3)

     Additional	information available at

			      September	17, 2012


Want to link to this manual page? Use this URL:

home | help