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

FreeBSD Manual Pages

  
 
  

home | help
NAME
     ck_hs_init -- initialize a hash set

LIBRARY
     Concurrency Kit (libck, -lck)

SYNOPSIS
     #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);

     bool
     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);

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

     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:

     CK_HS_MODE_OBJECT
	     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 argu-
	     ment.  Any unused pointer bits are leveraged for internal optimiza-
	     tions.

     CK_HS_MODE_DIRECT
	     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:

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

     CK_HS_MODE_MPMC
	     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:

     CK_HS_MODE_DELETE
	     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
	     accumulation.

     The  argument hash_function is a mandatory pointer to a user-specified hash
     function.	A user-specified hash function takes two arguments. The key  ar-
     gument is a pointer to a key. The seed argument is the initial seed associ-
     ated  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 compar-
     ison function. If NULL is specified in this argument, then pointer equality
     will be used to determine key equality. A user-specified  comparison  func-
     tion  takes  two  arguments representing pointers to the objects being com-
     pared 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 im-
     plementation is free to allocate more or less memory than necessary to con-
     tain 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.

RETURN VALUES
     Upon  successful completion ck_hs_init() returns a value of true and other-
     wise returns a value of false to indicate an error.

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

SEE ALSO
     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_re-
     build(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 http://concurrencykit.org/

			       September 17, 2012		   CK_HS_INIT(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=ck_hs_init&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help