You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ck/doc/ck_bag_init

89 lines
3.2 KiB

.\"
.\" Copyright 2012-2013 Abel P. Mathew
.\" Copyright 2012-2013 Samy Al Bahra.
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\"
.Dd July 16th, 2012
.Dt CK_BAG_INIT 3
.Sh NAME
.Nm ck_bag_init
.Nd initialize ck_bag
.Sh LIBRARY
Concurrency Kit (libck, \-lck)
.Sh SYNOPSIS
.In ck_bag.h
.Ft bool
.Fn ck_bag_init "struct ck_bag *bag, size_t n_cachelines, enum ck_bag_allocation_strategy as"
.Sh DESCRIPTION
The
.Fn ck_bag_init
function will initialize the object pointed to by the
.Fa bag
argument. If the
.Fa n_cachelines
argument is equivalent to CK_BAG_DEFAULT, then the block_size for the bag will
be CK_BAG_PAGESIZE (CK_MD_PAGESIZE). Otherwise, the block_size for the bag will
be n_cachelines * CK_MD_CACHELINE. The block_size, the number of bytes in a
single ck_bag_block, is set on a bag basis.
.Pp
.Fn ck_bag_init
will return false if the calculated block_size is less than the number of bytes
required by block overhead. Block overhead includes any allocator overhead
established from a previous call to the
.Fn ck_bag_allocator_set
function.
.Fn ck_bag_init
will also return false if you have compiled ck to pointer pack
and the number of entries within a block is greater than CK_BAG_MAX_N_ENTRIES.
On x86_64, CK_BAG_MAX_N_ENTRIES is equal to 4096.
.Sh RETURN VALUES
If
.Fn ck_bag_init
returns true then the object pointed to by the
.Fa bag
argument has been initialized. Otherwise, the object pointed to by the
.Fa bag
argument is not a valid ck_bag.
.Sh ERRORS
Behavior is undefined if
.Fa bag
does not point to a valid ck_bag object or if ck_bag_allocator_set has not been
called previously.
.Sh SEE ALSO
.Xr ck_bag_allocator_set(3),
.Xr ck_bag_block_next(3),
.Xr ck_bag_destroy(3),
.Xr ck_bag_iterator_init(3),
.Xr ck_bag_next(3),
.Xr ck_bag_remove_spmc(3),
.Xr ck_bag_block_count(3),
.Xr ck_bag_count(3),
.Xr ck_bag_init(3),
.Xr ck_bag_member_spmc(3),
.Xr ck_bag_put_spmc(3),
.Xr ck_bag_set_spmc(3)
.Pp
Additional information available at http://concurrencykit.org/