.\" .\" Copyright 2012 Abel P. Mathew .\" Copyright 2012 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/