You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by so...@apache.org on 2014/08/01 22:44:33 UTC
[20/20] git commit: TS-2950: Initial commit of libck.
TS-2950: Initial commit of libck.
Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/f098175e
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/f098175e
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/f098175e
Branch: refs/heads/master
Commit: f098175e9620743ab632f0fa23104f6498d45d44
Parents: f5a3d5a
Author: Phil Sorber <so...@apache.org>
Authored: Fri Aug 1 14:41:51 2014 -0600
Committer: Phil Sorber <so...@apache.org>
Committed: Fri Aug 1 14:44:01 2014 -0600
----------------------------------------------------------------------
lib/ck/.gitignore | 178 +++
lib/ck/LICENSE | 54 +
lib/ck/Makefile.in | 103 ++
lib/ck/README | 21 +
lib/ck/build/ck.build.aarch64 | 1 +
lib/ck/build/ck.build.arm | 1 +
lib/ck/build/ck.build.in | 10 +
lib/ck/build/ck.build.ppc | 1 +
lib/ck/build/ck.build.ppc64 | 1 +
lib/ck/build/ck.build.sparcv9 | 1 +
lib/ck/build/ck.build.x86 | 1 +
lib/ck/build/ck.build.x86_64 | 1 +
lib/ck/build/ck.pc.in | 10 +
lib/ck/build/ck.spec.in | 74 +
lib/ck/build/regressions.build.in | 10 +
lib/ck/configure | 708 ++++++++++
lib/ck/doc/CK_ARRAY_FOREACH | 79 ++
lib/ck/doc/CK_COHORT_INIT | 66 +
lib/ck/doc/CK_COHORT_INSTANCE | 59 +
lib/ck/doc/CK_COHORT_LOCK | 61 +
lib/ck/doc/CK_COHORT_PROTOTYPE | 76 +
lib/ck/doc/CK_COHORT_TRYLOCK | 69 +
lib/ck/doc/CK_COHORT_TRYLOCK_PROTOTYPE | 90 ++
lib/ck/doc/CK_COHORT_UNLOCK | 61 +
lib/ck/doc/CK_HS_HASH | 71 +
lib/ck/doc/CK_RWCOHORT_INIT | 61 +
lib/ck/doc/CK_RWCOHORT_INSTANCE | 64 +
lib/ck/doc/CK_RWCOHORT_PROTOTYPE | 65 +
lib/ck/doc/CK_RWCOHORT_READ_LOCK | 66 +
lib/ck/doc/CK_RWCOHORT_READ_UNLOCK | 65 +
lib/ck/doc/CK_RWCOHORT_WRITE_LOCK | 66 +
lib/ck/doc/CK_RWCOHORT_WRITE_UNLOCK | 65 +
lib/ck/doc/Makefile.in | 182 +++
lib/ck/doc/ck_array_buffer | 60 +
lib/ck/doc/ck_array_commit | 58 +
lib/ck/doc/ck_array_deinit | 62 +
lib/ck/doc/ck_array_init | 69 +
lib/ck/doc/ck_array_initialized | 62 +
lib/ck/doc/ck_array_length | 57 +
lib/ck/doc/ck_array_put | 65 +
lib/ck/doc/ck_array_put_unique | 67 +
lib/ck/doc/ck_array_remove | 64 +
lib/ck/doc/ck_bitmap_base | 58 +
lib/ck/doc/ck_bitmap_bits | 56 +
lib/ck/doc/ck_bitmap_buffer | 65 +
lib/ck/doc/ck_bitmap_clear | 56 +
lib/ck/doc/ck_bitmap_init | 84 ++
lib/ck/doc/ck_bitmap_iterator_init | 70 +
lib/ck/doc/ck_bitmap_next | 90 ++
lib/ck/doc/ck_bitmap_reset | 57 +
lib/ck/doc/ck_bitmap_set | 57 +
lib/ck/doc/ck_bitmap_size | 62 +
lib/ck/doc/ck_bitmap_test | 62 +
lib/ck/doc/ck_bitmap_union | 58 +
lib/ck/doc/ck_brlock | 121 ++
lib/ck/doc/ck_cohort | 211 +++
lib/ck/doc/ck_elide | 252 ++++
lib/ck/doc/ck_epoch_barrier | 120 ++
lib/ck/doc/ck_epoch_begin | 71 +
lib/ck/doc/ck_epoch_call | 136 ++
lib/ck/doc/ck_epoch_end | 65 +
lib/ck/doc/ck_epoch_init | 69 +
lib/ck/doc/ck_epoch_poll | 73 +
lib/ck/doc/ck_epoch_reclaim | 92 ++
lib/ck/doc/ck_epoch_recycle | 102 ++
lib/ck/doc/ck_epoch_register | 67 +
lib/ck/doc/ck_epoch_synchronize | 123 ++
lib/ck/doc/ck_epoch_unregister | 73 +
lib/ck/doc/ck_hs_count | 70 +
lib/ck/doc/ck_hs_destroy | 77 +
lib/ck/doc/ck_hs_fas | 98 ++
lib/ck/doc/ck_hs_gc | 88 ++
lib/ck/doc/ck_hs_get | 88 ++
lib/ck/doc/ck_hs_grow | 81 ++
lib/ck/doc/ck_hs_init | 169 +++
lib/ck/doc/ck_hs_iterator_init | 78 +
lib/ck/doc/ck_hs_move | 90 ++
lib/ck/doc/ck_hs_next | 92 ++
lib/ck/doc/ck_hs_put | 98 ++
lib/ck/doc/ck_hs_put_unique | 98 ++
lib/ck/doc/ck_hs_rebuild | 76 +
lib/ck/doc/ck_hs_remove | 92 ++
lib/ck/doc/ck_hs_reset | 77 +
lib/ck/doc/ck_hs_reset_size | 80 ++
lib/ck/doc/ck_hs_set | 102 ++
lib/ck/doc/ck_hs_stat | 81 ++
lib/ck/doc/ck_ht_count | 77 +
lib/ck/doc/ck_ht_destroy | 87 ++
lib/ck/doc/ck_ht_entry_empty | 90 ++
lib/ck/doc/ck_ht_entry_key | 88 ++
lib/ck/doc/ck_ht_entry_key_direct | 91 ++
lib/ck/doc/ck_ht_entry_key_length | 88 ++
lib/ck/doc/ck_ht_entry_key_set | 93 ++
lib/ck/doc/ck_ht_entry_key_set_direct | 88 ++
lib/ck/doc/ck_ht_entry_set | 95 ++
lib/ck/doc/ck_ht_entry_set_direct | 94 ++
lib/ck/doc/ck_ht_entry_value | 88 ++
lib/ck/doc/ck_ht_entry_value_direct | 89 ++
lib/ck/doc/ck_ht_gc | 96 ++
lib/ck/doc/ck_ht_get_spmc | 177 +++
lib/ck/doc/ck_ht_grow_spmc | 98 ++
lib/ck/doc/ck_ht_hash | 90 ++
lib/ck/doc/ck_ht_hash_direct | 90 ++
lib/ck/doc/ck_ht_init | 188 +++
lib/ck/doc/ck_ht_iterator_init | 88 ++
lib/ck/doc/ck_ht_next | 107 ++
lib/ck/doc/ck_ht_put_spmc | 146 ++
lib/ck/doc/ck_ht_remove_spmc | 117 ++
lib/ck/doc/ck_ht_reset_size_spmc | 84 ++
lib/ck/doc/ck_ht_reset_spmc | 81 ++
lib/ck/doc/ck_ht_set_spmc | 140 ++
lib/ck/doc/ck_ht_stat | 85 ++
lib/ck/doc/ck_pflock | 95 ++
lib/ck/doc/ck_pr | 71 +
lib/ck/doc/ck_pr_add | 93 ++
lib/ck/doc/ck_pr_and | 93 ++
lib/ck/doc/ck_pr_barrier | 66 +
lib/ck/doc/ck_pr_btc | 90 ++
lib/ck/doc/ck_pr_btr | 90 ++
lib/ck/doc/ck_pr_bts | 90 ++
lib/ck/doc/ck_pr_cas | 147 ++
lib/ck/doc/ck_pr_dec | 124 ++
lib/ck/doc/ck_pr_faa | 99 ++
lib/ck/doc/ck_pr_fas | 100 ++
lib/ck/doc/ck_pr_fence_acquire | 72 +
lib/ck/doc/ck_pr_fence_atomic | 111 ++
lib/ck/doc/ck_pr_fence_atomic_load | 108 ++
lib/ck/doc/ck_pr_fence_atomic_store | 109 ++
lib/ck/doc/ck_pr_fence_load | 113 ++
lib/ck/doc/ck_pr_fence_load_atomic | 113 ++
lib/ck/doc/ck_pr_fence_load_depends | 75 +
lib/ck/doc/ck_pr_fence_load_store | 113 ++
lib/ck/doc/ck_pr_fence_memory | 113 ++
lib/ck/doc/ck_pr_fence_release | 71 +
lib/ck/doc/ck_pr_fence_store | 112 ++
lib/ck/doc/ck_pr_fence_store_atomic | 108 ++
lib/ck/doc/ck_pr_fence_store_load | 107 ++
lib/ck/doc/ck_pr_inc | 124 ++
lib/ck/doc/ck_pr_load | 96 ++
lib/ck/doc/ck_pr_neg | 122 ++
lib/ck/doc/ck_pr_not | 92 ++
lib/ck/doc/ck_pr_or | 93 ++
lib/ck/doc/ck_pr_rtm | 112 ++
lib/ck/doc/ck_pr_stall | 86 ++
lib/ck/doc/ck_pr_store | 96 ++
lib/ck/doc/ck_pr_sub | 93 ++
lib/ck/doc/ck_pr_xor | 93 ++
lib/ck/doc/ck_queue | 147 ++
lib/ck/doc/ck_ring_capacity | 55 +
lib/ck/doc/ck_ring_dequeue_spmc | 117 ++
lib/ck/doc/ck_ring_dequeue_spsc | 115 ++
lib/ck/doc/ck_ring_enqueue_spmc | 115 ++
lib/ck/doc/ck_ring_enqueue_spmc_size | 127 ++
lib/ck/doc/ck_ring_enqueue_spsc | 113 ++
lib/ck/doc/ck_ring_enqueue_spsc_size | 128 ++
lib/ck/doc/ck_ring_init | 62 +
lib/ck/doc/ck_ring_size | 55 +
lib/ck/doc/ck_ring_trydequeue_spmc | 126 ++
lib/ck/doc/ck_rwcohort | 203 +++
lib/ck/doc/ck_rwlock | 143 ++
lib/ck/doc/ck_sequence | 144 ++
lib/ck/doc/ck_spinlock | 259 ++++
lib/ck/doc/ck_swlock | 138 ++
lib/ck/doc/ck_tflock | 95 ++
lib/ck/include/ck_array.h | 101 ++
lib/ck/include/ck_backoff.h | 58 +
lib/ck/include/ck_barrier.h | 165 +++
lib/ck/include/ck_bitmap.h | 491 +++++++
lib/ck/include/ck_brlock.h | 280 ++++
lib/ck/include/ck_bytelock.h | 187 +++
lib/ck/include/ck_cc.h | 155 ++
lib/ck/include/ck_cohort.h | 162 +++
lib/ck/include/ck_elide.h | 322 +++++
lib/ck/include/ck_epoch.h | 163 +++
lib/ck/include/ck_fifo.h | 475 +++++++
lib/ck/include/ck_hp.h | 107 ++
lib/ck/include/ck_hp_fifo.h | 222 +++
lib/ck/include/ck_hp_stack.h | 114 ++
lib/ck/include/ck_hs.h | 133 ++
lib/ck/include/ck_ht.h | 262 ++++
lib/ck/include/ck_limits.h | 32 +
lib/ck/include/ck_malloc.h | 40 +
lib/ck/include/ck_md.h.in | 54 +
lib/ck/include/ck_pflock.h | 143 ++
lib/ck/include/ck_pr.h | 1152 +++++++++++++++
lib/ck/include/ck_queue.h | 418 ++++++
lib/ck/include/ck_rhs.h | 130 ++
lib/ck/include/ck_ring.h | 435 ++++++
lib/ck/include/ck_rwcohort.h | 318 +++++
lib/ck/include/ck_rwlock.h | 298 ++++
lib/ck/include/ck_sequence.h | 126 ++
lib/ck/include/ck_spinlock.h | 62 +
lib/ck/include/ck_stack.h | 355 +++++
lib/ck/include/ck_stdint.h | 33 +
lib/ck/include/ck_swlock.h | 218 +++
lib/ck/include/ck_tflock.h | 133 ++
lib/ck/include/gcc/arm/ck_f_pr.h | 150 ++
lib/ck/include/gcc/arm/ck_pr.h | 516 +++++++
lib/ck/include/gcc/ck_cc.h | 137 ++
lib/ck/include/gcc/ck_f_pr.h | 106 ++
lib/ck/include/gcc/ck_pr.h | 281 ++++
lib/ck/include/gcc/ppc/ck_f_pr.h | 79 ++
lib/ck/include/gcc/ppc/ck_pr.h | 322 +++++
lib/ck/include/gcc/ppc64/ck_f_pr.h | 97 ++
lib/ck/include/gcc/ppc64/ck_pr.h | 419 ++++++
lib/ck/include/gcc/sparcv9/ck_f_pr.h | 26 +
lib/ck/include/gcc/sparcv9/ck_pr.h | 225 +++
lib/ck/include/gcc/x86/ck_f_pr.h | 152 ++
lib/ck/include/gcc/x86/ck_pr.h | 388 +++++
lib/ck/include/gcc/x86_64/ck_f_pr.h | 202 +++
lib/ck/include/gcc/x86_64/ck_pr.h | 545 +++++++
lib/ck/include/gcc/x86_64/ck_pr_rtm.h | 109 ++
lib/ck/include/spinlock/anderson.h | 165 +++
lib/ck/include/spinlock/cas.h | 121 ++
lib/ck/include/spinlock/clh.h | 117 ++
lib/ck/include/spinlock/dec.h | 143 ++
lib/ck/include/spinlock/fas.h | 118 ++
lib/ck/include/spinlock/hclh.h | 145 ++
lib/ck/include/spinlock/mcs.h | 149 ++
lib/ck/include/spinlock/ticket.h | 298 ++++
lib/ck/regressions/Makefile | 128 ++
lib/ck/regressions/Makefile.unsupported | 9 +
lib/ck/regressions/ck_array/validate/Makefile | 17 +
lib/ck/regressions/ck_array/validate/serial.c | 178 +++
lib/ck/regressions/ck_backoff/validate/Makefile | 15 +
.../regressions/ck_backoff/validate/validate.c | 60 +
.../regressions/ck_barrier/benchmark/Makefile | 14 +
.../ck_barrier/benchmark/throughput.c | 136 ++
lib/ck/regressions/ck_barrier/validate/Makefile | 34 +
.../ck_barrier/validate/barrier_centralized.c | 121 ++
.../ck_barrier/validate/barrier_combining.c | 143 ++
.../ck_barrier/validate/barrier_dissemination.c | 144 ++
.../ck_barrier/validate/barrier_mcs.c | 131 ++
.../ck_barrier/validate/barrier_tournament.c | 142 ++
lib/ck/regressions/ck_bitmap/validate/Makefile | 17 +
lib/ck/regressions/ck_bitmap/validate/serial.c | 350 +++++
lib/ck/regressions/ck_brlock/benchmark/Makefile | 17 +
.../regressions/ck_brlock/benchmark/latency.c | 103 ++
.../ck_brlock/benchmark/throughput.c | 164 +++
lib/ck/regressions/ck_brlock/validate/Makefile | 17 +
.../regressions/ck_brlock/validate/validate.c | 155 ++
.../regressions/ck_bytelock/benchmark/Makefile | 14 +
.../regressions/ck_bytelock/benchmark/latency.c | 99 ++
.../regressions/ck_bytelock/validate/Makefile | 17 +
.../regressions/ck_bytelock/validate/validate.c | 166 +++
lib/ck/regressions/ck_cohort/benchmark/Makefile | 17 +
.../regressions/ck_cohort/benchmark/ck_cohort.c | 8 +
.../ck_cohort/benchmark/throughput.c | 239 ++++
lib/ck/regressions/ck_cohort/ck_cohort.h | 35 +
lib/ck/regressions/ck_cohort/validate/Makefile | 17 +
.../regressions/ck_cohort/validate/validate.c | 204 +++
lib/ck/regressions/ck_epoch/validate/Makefile | 26 +
.../ck_epoch/validate/ck_epoch_poll.c | 245 ++++
.../ck_epoch/validate/ck_epoch_synchronize.c | 258 ++++
lib/ck/regressions/ck_epoch/validate/ck_stack.c | 164 +++
lib/ck/regressions/ck_fifo/benchmark/Makefile | 14 +
lib/ck/regressions/ck_fifo/benchmark/latency.c | 157 ++
lib/ck/regressions/ck_fifo/validate/Makefile | 29 +
.../regressions/ck_fifo/validate/ck_fifo_mpmc.c | 168 +++
.../ck_fifo/validate/ck_fifo_mpmc_iterator.c | 90 ++
.../regressions/ck_fifo/validate/ck_fifo_spsc.c | 177 +++
.../ck_fifo/validate/ck_fifo_spsc_iterator.c | 83 ++
lib/ck/regressions/ck_hp/benchmark/Makefile | 17 +
.../regressions/ck_hp/benchmark/fifo_latency.c | 94 ++
.../regressions/ck_hp/benchmark/stack_latency.c | 95 ++
lib/ck/regressions/ck_hp/validate/Makefile | 33 +
lib/ck/regressions/ck_hp/validate/ck_hp_fifo.c | 187 +++
.../ck_hp/validate/ck_hp_fifo_donner.c | 213 +++
lib/ck/regressions/ck_hp/validate/ck_hp_stack.c | 165 +++
.../regressions/ck_hp/validate/nbds_haz_test.c | 224 +++
lib/ck/regressions/ck_hp/validate/serial.c | 127 ++
lib/ck/regressions/ck_hs/benchmark/Makefile | 20 +
.../ck_hs/benchmark/parallel_bytestring.c | 602 ++++++++
lib/ck/regressions/ck_hs/benchmark/serial.c | 517 +++++++
lib/ck/regressions/ck_hs/validate/Makefile | 17 +
lib/ck/regressions/ck_hs/validate/serial.c | 253 ++++
lib/ck/regressions/ck_ht/benchmark/Makefile | 27 +
.../ck_ht/benchmark/parallel_bytestring.c | 565 ++++++++
.../ck_ht/benchmark/parallel_direct.c | 552 ++++++++
lib/ck/regressions/ck_ht/benchmark/serial.c | 398 ++++++
lib/ck/regressions/ck_ht/validate/Makefile | 21 +
lib/ck/regressions/ck_ht/validate/serial.c | 292 ++++
lib/ck/regressions/ck_pflock/benchmark/Makefile | 17 +
.../regressions/ck_pflock/benchmark/latency.c | 72 +
.../ck_pflock/benchmark/throughput.c | 163 +++
lib/ck/regressions/ck_pflock/validate/Makefile | 17 +
.../regressions/ck_pflock/validate/validate.c | 151 ++
lib/ck/regressions/ck_pr/benchmark/Makefile | 18 +
lib/ck/regressions/ck_pr/benchmark/benchmark.h | 130 ++
.../regressions/ck_pr/benchmark/ck_pr_cas_64.c | 16 +
.../ck_pr/benchmark/ck_pr_cas_64_2.c | 17 +
.../regressions/ck_pr/benchmark/ck_pr_fas_64.c | 17 +
lib/ck/regressions/ck_pr/validate/Makefile | 84 ++
lib/ck/regressions/ck_pr/validate/ck_pr_add.c | 151 ++
lib/ck/regressions/ck_pr/validate/ck_pr_and.c | 147 ++
lib/ck/regressions/ck_pr/validate/ck_pr_bin.c | 94 ++
lib/ck/regressions/ck_pr/validate/ck_pr_btc.c | 96 ++
lib/ck/regressions/ck_pr/validate/ck_pr_btr.c | 97 ++
lib/ck/regressions/ck_pr/validate/ck_pr_bts.c | 97 ++
lib/ck/regressions/ck_pr/validate/ck_pr_btx.c | 112 ++
lib/ck/regressions/ck_pr/validate/ck_pr_cas.c | 158 +++
lib/ck/regressions/ck_pr/validate/ck_pr_dec.c | 143 ++
lib/ck/regressions/ck_pr/validate/ck_pr_faa.c | 152 ++
lib/ck/regressions/ck_pr/validate/ck_pr_fas.c | 148 ++
lib/ck/regressions/ck_pr/validate/ck_pr_fax.c | 121 ++
lib/ck/regressions/ck_pr/validate/ck_pr_inc.c | 143 ++
lib/ck/regressions/ck_pr/validate/ck_pr_load.c | 149 ++
lib/ck/regressions/ck_pr/validate/ck_pr_n.c | 90 ++
lib/ck/regressions/ck_pr/validate/ck_pr_or.c | 149 ++
lib/ck/regressions/ck_pr/validate/ck_pr_store.c | 150 ++
lib/ck/regressions/ck_pr/validate/ck_pr_sub.c | 151 ++
lib/ck/regressions/ck_pr/validate/ck_pr_unary.c | 117 ++
lib/ck/regressions/ck_pr/validate/ck_pr_xor.c | 147 ++
lib/ck/regressions/ck_queue/validate/Makefile | 26 +
lib/ck/regressions/ck_queue/validate/ck_list.c | 236 ++++
lib/ck/regressions/ck_queue/validate/ck_slist.c | 217 +++
.../regressions/ck_queue/validate/ck_stailq.c | 256 ++++
lib/ck/regressions/ck_rhs/benchmark/Makefile | 17 +
.../ck_rhs/benchmark/parallel_bytestring.c | 599 ++++++++
lib/ck/regressions/ck_rhs/benchmark/serial.c | 517 +++++++
lib/ck/regressions/ck_rhs/validate/Makefile | 17 +
lib/ck/regressions/ck_rhs/validate/serial.c | 245 ++++
lib/ck/regressions/ck_ring/benchmark/Makefile | 14 +
lib/ck/regressions/ck_ring/benchmark/latency.c | 93 ++
lib/ck/regressions/ck_ring/validate/Makefile | 29 +
.../regressions/ck_ring/validate/ck_ring_spmc.c | 340 +++++
.../ck_ring/validate/ck_ring_spmc_template.c | 347 +++++
.../regressions/ck_ring/validate/ck_ring_spsc.c | 213 +++
.../regressions/ck_rwcohort/benchmark/Makefile | 32 +
.../ck_rwcohort/benchmark/ck_neutral.c | 7 +
.../regressions/ck_rwcohort/benchmark/ck_rp.c | 7 +
.../regressions/ck_rwcohort/benchmark/ck_wp.c | 7 +
.../regressions/ck_rwcohort/benchmark/latency.h | 106 ++
.../ck_rwcohort/benchmark/throughput.h | 245 ++++
lib/ck/regressions/ck_rwcohort/ck_neutral.h | 8 +
lib/ck/regressions/ck_rwcohort/ck_rp.h | 8 +
lib/ck/regressions/ck_rwcohort/ck_wp.h | 8 +
.../regressions/ck_rwcohort/validate/Makefile | 25 +
.../ck_rwcohort/validate/ck_neutral.c | 2 +
lib/ck/regressions/ck_rwcohort/validate/ck_rp.c | 2 +
lib/ck/regressions/ck_rwcohort/validate/ck_wp.c | 2 +
.../regressions/ck_rwcohort/validate/validate.h | 209 +++
lib/ck/regressions/ck_rwlock/benchmark/Makefile | 17 +
.../regressions/ck_rwlock/benchmark/latency.c | 134 ++
.../ck_rwlock/benchmark/throughput.c | 254 ++++
lib/ck/regressions/ck_rwlock/validate/Makefile | 17 +
.../regressions/ck_rwlock/validate/validate.c | 447 ++++++
.../regressions/ck_sequence/benchmark/Makefile | 18 +
.../ck_sequence/benchmark/ck_sequence.c | 91 ++
.../regressions/ck_sequence/validate/Makefile | 17 +
.../ck_sequence/validate/ck_sequence.c | 168 +++
.../regressions/ck_spinlock/benchmark/Makefile | 87 ++
.../ck_spinlock/benchmark/ck_anderson.c | 8 +
.../regressions/ck_spinlock/benchmark/ck_cas.c | 8 +
.../regressions/ck_spinlock/benchmark/ck_clh.c | 7 +
.../regressions/ck_spinlock/benchmark/ck_dec.c | 7 +
.../regressions/ck_spinlock/benchmark/ck_fas.c | 7 +
.../regressions/ck_spinlock/benchmark/ck_hclh.c | 7 +
.../regressions/ck_spinlock/benchmark/ck_mcs.c | 7 +
.../ck_spinlock/benchmark/ck_spinlock.c | 7 +
.../ck_spinlock/benchmark/ck_ticket.c | 8 +
.../ck_spinlock/benchmark/ck_ticket_pb.c | 7 +
.../regressions/ck_spinlock/benchmark/latency.h | 76 +
.../ck_spinlock/benchmark/linux_spinlock.c | 7 +
.../ck_spinlock/benchmark/throughput.h | 218 +++
lib/ck/regressions/ck_spinlock/ck_anderson.h | 11 +
lib/ck/regressions/ck_spinlock/ck_cas.h | 6 +
lib/ck/regressions/ck_spinlock/ck_clh.h | 9 +
lib/ck/regressions/ck_spinlock/ck_dec.h | 6 +
lib/ck/regressions/ck_spinlock/ck_fas.h | 6 +
lib/ck/regressions/ck_spinlock/ck_hclh.h | 16 +
lib/ck/regressions/ck_spinlock/ck_mcs.h | 7 +
lib/ck/regressions/ck_spinlock/ck_spinlock.h | 6 +
lib/ck/regressions/ck_spinlock/ck_ticket.h | 11 +
lib/ck/regressions/ck_spinlock/ck_ticket_pb.h | 6 +
lib/ck/regressions/ck_spinlock/linux_spinlock.h | 39 +
.../regressions/ck_spinlock/validate/Makefile | 56 +
.../ck_spinlock/validate/ck_anderson.c | 2 +
.../regressions/ck_spinlock/validate/ck_cas.c | 2 +
.../regressions/ck_spinlock/validate/ck_clh.c | 2 +
.../regressions/ck_spinlock/validate/ck_dec.c | 2 +
.../regressions/ck_spinlock/validate/ck_fas.c | 2 +
.../regressions/ck_spinlock/validate/ck_hclh.c | 2 +
.../regressions/ck_spinlock/validate/ck_mcs.c | 2 +
.../ck_spinlock/validate/ck_spinlock.c | 2 +
.../ck_spinlock/validate/ck_ticket.c | 2 +
.../ck_spinlock/validate/ck_ticket_pb.c | 2 +
.../ck_spinlock/validate/linux_spinlock.c | 14 +
.../regressions/ck_spinlock/validate/validate.h | 181 +++
lib/ck/regressions/ck_stack/benchmark/Makefile | 14 +
lib/ck/regressions/ck_stack/benchmark/latency.c | 176 +++
lib/ck/regressions/ck_stack/validate/Makefile | 56 +
lib/ck/regressions/ck_stack/validate/pair.c | 249 ++++
lib/ck/regressions/ck_stack/validate/pop.c | 269 ++++
lib/ck/regressions/ck_stack/validate/push.c | 248 ++++
lib/ck/regressions/ck_stack/validate/serial.c | 84 ++
lib/ck/regressions/ck_swlock/benchmark/Makefile | 17 +
.../regressions/ck_swlock/benchmark/latency.c | 86 ++
.../ck_swlock/benchmark/throughput.c | 183 +++
lib/ck/regressions/ck_swlock/validate/Makefile | 17 +
.../regressions/ck_swlock/validate/validate.c | 455 ++++++
lib/ck/regressions/ck_tflock/benchmark/Makefile | 17 +
.../regressions/ck_tflock/benchmark/latency.c | 73 +
.../ck_tflock/benchmark/throughput.c | 182 +++
lib/ck/regressions/ck_tflock/validate/Makefile | 17 +
.../regressions/ck_tflock/validate/validate.c | 158 +++
lib/ck/regressions/common.h | 457 ++++++
lib/ck/src/Makefile.in | 62 +
lib/ck/src/ck_array.c | 241 ++++
lib/ck/src/ck_barrier_centralized.c | 60 +
lib/ck/src/ck_barrier_combining.c | 208 +++
lib/ck/src/ck_barrier_dissemination.c | 124 ++
lib/ck/src/ck_barrier_mcs.c | 141 ++
lib/ck/src/ck_barrier_tournament.c | 184 +++
lib/ck/src/ck_epoch.c | 429 ++++++
lib/ck/src/ck_hp.c | 324 +++++
lib/ck/src/ck_hs.c | 845 +++++++++++
lib/ck/src/ck_ht.c | 1030 ++++++++++++++
lib/ck/src/ck_ht_hash.h | 269 ++++
lib/ck/src/ck_internal.h | 119 ++
lib/ck/src/ck_rhs.c | 1335 ++++++++++++++++++
lib/ck/tools/feature.sh | 5 +
422 files changed, 53672 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/f098175e/lib/ck/.gitignore
----------------------------------------------------------------------
diff --git a/lib/ck/.gitignore b/lib/ck/.gitignore
new file mode 100644
index 0000000..2c6cb8b
--- /dev/null
+++ b/lib/ck/.gitignore
@@ -0,0 +1,178 @@
+/Makefile
+build/ck.build
+build/ck.pc
+build/regressions.build
+build/ck.spec
+include/ck_md.h
+src/Makefile
+doc/Makefile
+build/Makefile
+.DS_Store
+*.html
+*.gz
+*.o
+*.a
+*.so
+*.dSYM
+.*.sw[op]
+GPATH
+GRTAGS
+GTAGS
+ID
+regressions/ck_array/validate/serial
+regressions/ck_backoff/validate/validate
+regressions/ck_bag/validate/order
+regressions/ck_barrier/benchmark/throughput
+regressions/ck_barrier/validate/barrier_centralized
+regressions/ck_barrier/validate/barrier_combining
+regressions/ck_barrier/validate/barrier_dissemination
+regressions/ck_barrier/validate/barrier_mcs
+regressions/ck_barrier/validate/barrier_tournament
+regressions/ck_bitmap/validate/serial
+regressions/ck_brlock/benchmark/latency
+regressions/ck_brlock/benchmark/throughput
+regressions/ck_brlock/validate/validate
+regressions/ck_bytelock/benchmark/latency
+regressions/ck_bytelock/validate/validate
+regressions/ck_cohort/benchmark/ck_cohort.LATENCY
+regressions/ck_cohort/benchmark/ck_cohort.LATENCY
+regressions/ck_cohort/benchmark/ck_cohort.THROUGHPUT
+regressions/ck_cohort/benchmark/ck_cohort.THROUGHPUT
+regressions/ck_cohort/validate/validate
+regressions/ck_epoch/validate/ck_epoch_poll
+regressions/ck_epoch/validate/ck_epoch_synchronize
+regressions/ck_epoch/validate/ck_stack
+regressions/ck_epoch/validate/ck_stack_read
+regressions/ck_fifo/benchmark/latency
+regressions/ck_fifo/validate/ck_fifo_mpmc
+regressions/ck_fifo/validate/ck_fifo_mpmc_iterator
+regressions/ck_fifo/validate/ck_fifo_spsc
+regressions/ck_fifo/validate/ck_fifo_spsc_iterator
+regressions/ck_hp/benchmark/fifo_latency
+regressions/ck_hp/benchmark/stack_latency
+regressions/ck_hp/validate/ck_hp_fifo
+regressions/ck_hp/validate/ck_hp_fifo_donner
+regressions/ck_hp/validate/ck_hp_stack
+regressions/ck_hp/validate/nbds_haz_test
+regressions/ck_hp/validate/serial
+regressions/ck_hs/benchmark/parallel_bytestring
+regressions/ck_hs/benchmark/parallel_bytestring.delete
+regressions/ck_hs/benchmark/serial
+regressions/ck_hs/validate/serial
+regressions/ck_ht/benchmark/parallel_bytestring
+regressions/ck_ht/benchmark/parallel_bytestring.delete
+regressions/ck_ht/benchmark/parallel_direct
+regressions/ck_ht/benchmark/serial
+regressions/ck_ht/benchmark/serial.delete
+regressions/ck_ht/validate/serial
+regressions/ck_ht/validate/serial.delete
+regressions/ck_pflock/benchmark/latency
+regressions/ck_pflock/benchmark/throughput
+regressions/ck_pflock/validate/validate
+regressions/ck_pr/benchmark/ck_pr_cas_64
+regressions/ck_pr/benchmark/ck_pr_cas_64_2
+regressions/ck_pr/benchmark/ck_pr_fas_64
+regressions/ck_pr/validate/ck_pr_add
+regressions/ck_pr/validate/ck_pr_and
+regressions/ck_pr/validate/ck_pr_bin
+regressions/ck_pr/validate/ck_pr_btc
+regressions/ck_pr/validate/ck_pr_btr
+regressions/ck_pr/validate/ck_pr_bts
+regressions/ck_pr/validate/ck_pr_btx
+regressions/ck_pr/validate/ck_pr_cas
+regressions/ck_pr/validate/ck_pr_dec
+regressions/ck_pr/validate/ck_pr_faa
+regressions/ck_pr/validate/ck_pr_fas
+regressions/ck_pr/validate/ck_pr_fax
+regressions/ck_pr/validate/ck_pr_inc
+regressions/ck_pr/validate/ck_pr_load
+regressions/ck_pr/validate/ck_pr_n
+regressions/ck_pr/validate/ck_pr_or
+regressions/ck_pr/validate/ck_pr_store
+regressions/ck_pr/validate/ck_pr_sub
+regressions/ck_pr/validate/ck_pr_unary
+regressions/ck_pr/validate/ck_pr_xor
+regressions/ck_queue/validate/ck_list
+regressions/ck_queue/validate/ck_slist
+regressions/ck_queue/validate/ck_stailq
+regressions/ck_rhs/benchmark/parallel_bytestring
+regressions/ck_rhs/benchmark/serial
+regressions/ck_rhs/validate/serial
+regressions/ck_ring/benchmark/latency
+regressions/ck_ring/validate/ck_ring_spmc
+regressions/ck_ring/validate/ck_ring_spmc_template
+regressions/ck_ring/validate/ck_ring_spsc
+regressions/ck_ring/validate/ck_ring_spsc_template
+regressions/ck_rwcohort/benchmark/ck_neutral.LATENCY
+regressions/ck_rwcohort/benchmark/ck_neutral.THROUGHPUT
+regressions/ck_rwcohort/benchmark/ck_rp.LATENCY
+regressions/ck_rwcohort/benchmark/ck_rp.THROUGHPUT
+regressions/ck_rwcohort/benchmark/ck_wp.LATENCY
+regressions/ck_rwcohort/benchmark/ck_wp.THROUGHPUT
+regressions/ck_rwcohort/validate/ck_neutral
+regressions/ck_rwcohort/validate/ck_rp
+regressions/ck_rwcohort/validate/ck_wp
+regressions/ck_rwlock/benchmark/latency
+regressions/ck_rwlock/benchmark/throughput
+regressions/ck_rwlock/validate/validate
+regressions/ck_sequence/benchmark/ck_sequence
+regressions/ck_sequence/validate/ck_sequence
+regressions/ck_spinlock/benchmark/ck_anderson.LATENCY
+regressions/ck_spinlock/benchmark/ck_anderson.THROUGHPUT
+regressions/ck_spinlock/benchmark/ck_cas.LATENCY
+regressions/ck_spinlock/benchmark/ck_cas.THROUGHPUT
+regressions/ck_spinlock/benchmark/ck_clh.LATENCY
+regressions/ck_spinlock/benchmark/ck_clh.THROUGHPUT
+regressions/ck_spinlock/benchmark/ck_dec.LATENCY
+regressions/ck_spinlock/benchmark/ck_dec.THROUGHPUT
+regressions/ck_spinlock/benchmark/ck_fas.LATENCY
+regressions/ck_spinlock/benchmark/ck_fas.THROUGHPUT
+regressions/ck_spinlock/benchmark/ck_hclh.LATENCY
+regressions/ck_spinlock/benchmark/ck_hclh.THROUGHPUT
+regressions/ck_spinlock/benchmark/ck_mcs.LATENCY
+regressions/ck_spinlock/benchmark/ck_mcs.THROUGHPUT
+regressions/ck_spinlock/benchmark/ck_spinlock.LATENCY
+regressions/ck_spinlock/benchmark/ck_spinlock.THROUGHPUT
+regressions/ck_spinlock/benchmark/ck_ticket.LATENCY
+regressions/ck_spinlock/benchmark/ck_ticket.THROUGHPUT
+regressions/ck_spinlock/benchmark/ck_ticket_pb.LATENCY
+regressions/ck_spinlock/benchmark/ck_ticket_pb.THROUGHPUT
+regressions/ck_spinlock/benchmark/linux_spinlock.LATENCY
+regressions/ck_spinlock/benchmark/linux_spinlock.THROUGHPUT
+regressions/ck_spinlock/validate/ck_anderson
+regressions/ck_spinlock/validate/ck_cas
+regressions/ck_spinlock/validate/ck_clh
+regressions/ck_spinlock/validate/ck_dec
+regressions/ck_spinlock/validate/ck_fas
+regressions/ck_spinlock/validate/ck_hclh
+regressions/ck_spinlock/validate/ck_mcs
+regressions/ck_spinlock/validate/ck_spinlock
+regressions/ck_spinlock/validate/ck_ticket
+regressions/ck_spinlock/validate/ck_ticket_pb
+regressions/ck_spinlock/validate/linux_spinlock
+regressions/ck_stack/benchmark/latency
+regressions/ck_stack/validate/mpmc_pair
+regressions/ck_stack/validate/mpmc_pop
+regressions/ck_stack/validate/mpmc_push
+regressions/ck_stack/validate/mpmc_trypair
+regressions/ck_stack/validate/mpmc_trypop
+regressions/ck_stack/validate/mpmc_trypush
+regressions/ck_stack/validate/mpnc_push
+regressions/ck_stack/validate/pthreads_pair
+regressions/ck_stack/validate/serial
+regressions/ck_stack/validate/spinlock_eb_pair
+regressions/ck_stack/validate/spinlock_eb_pop
+regressions/ck_stack/validate/spinlock_eb_push
+regressions/ck_stack/validate/spinlock_pair
+regressions/ck_stack/validate/spinlock_pop
+regressions/ck_stack/validate/spinlock_push
+regressions/ck_stack/validate/upmc_pop
+regressions/ck_stack/validate/upmc_push
+regressions/ck_stack/validate/upmc_trypop
+regressions/ck_stack/validate/upmc_trypush
+regressions/ck_swlock/benchmark/latency
+regressions/ck_swlock/benchmark/throughput
+regressions/ck_swlock/validate/validate
+regressions/ck_tflock/benchmark/latency
+regressions/ck_tflock/benchmark/throughput
+regressions/ck_tflock/validate/validate
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/f098175e/lib/ck/LICENSE
----------------------------------------------------------------------
diff --git a/lib/ck/LICENSE b/lib/ck/LICENSE
new file mode 100644
index 0000000..73b0eeb
--- /dev/null
+++ b/lib/ck/LICENSE
@@ -0,0 +1,54 @@
+Copyright 2010-2014 Samy Al Bahra.
+Copyright 2011-2013 AppNexus, Inc.
+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 AUTHOR 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 AUTHOR 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.
+
+Hazard Pointers (src/ck_hp.c) also includes this license:
+
+(c) Copyright 2008, IBM Corporation.
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+ck_pr_rtm leverages work from Andi Kleen:
+Copyright (c) 2012,2013 Intel Corporation
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that: (1) source code distributions
+retain the above copyright notice and this paragraph in its entirety, (2)
+distributions including binary code include the above copyright notice and
+this paragraph in its entirety in the documentation or other materials
+provided with the distribution
+
+THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/f098175e/lib/ck/Makefile.in
----------------------------------------------------------------------
diff --git a/lib/ck/Makefile.in b/lib/ck/Makefile.in
new file mode 100644
index 0000000..7e73f70
--- /dev/null
+++ b/lib/ck/Makefile.in
@@ -0,0 +1,103 @@
+.PHONY: all check clean dist distclean doc install install-headers regressions uninstall
+
+BUILD_DIR=@BUILD_DIR@
+SRC_DIR=@SRC_DIR@
+CFLAGS=@CFLAGS@
+VERSION=@VERSION@
+VERSION_MAJOR=@VERSION_MAJOR@
+PREFIX=@PREFIX@
+LIBRARY=@LIBRARY@
+HEADERS=@HEADERS@
+PKGCONFIG_DATA=@LIBRARY@/pkgconfig
+LDNAME=@LDNAME@
+LDNAME_VERSION=@LDNAME_VERSION@
+LDNAME_MAJOR=@LDNAME_MAJOR@
+
+all: doc
+ $(MAKE) -C src all || exit
+ @echo
+ @echo
+ @echo ---[ Concurrency Kit has built successfully. You may now \"make install\".
+
+doc:
+ $(MAKE) -C doc all || exit
+ @echo ---[ Manual pages are ready for installation.
+
+regressions:
+ $(MAKE) -C regressions all || exit
+ @echo ---[ Regressions have built successfully.
+
+check: regressions
+ @echo ---[ Executing unit tests...
+ $(MAKE) -C regressions check
+ @echo ---[ Unit tests have completed successfully.
+
+install-headers:
+ mkdir -p $(DESTDIR)/$(HEADERS) || exit
+ cp $(SRC_DIR)/include/*.h $(DESTDIR)/$(HEADERS) || exit
+ chmod 644 $(DESTDIR)/$(HEADERS)/ck_*.h || exit
+ mkdir -p $(DESTDIR)$(HEADERS)/gcc || exit
+ cp -r $(SRC_DIR)/include/gcc/* $(DESTDIR)/$(HEADERS)/gcc || exit
+ cp include/ck_md.h $(DESTDIR)/$(HEADERS)/ck_md.h || exit
+ chmod 755 $(DESTDIR)/$(HEADERS)/gcc
+ chmod 644 $(DESTDIR)/$(HEADERS)/gcc/ck_*.h $(DESTDIR)/$(HEADERS)/gcc/*/ck_*.h || exit
+ mkdir -p $(DESTDIR)$(HEADERS)/spinlock || exit
+ cp -r $(SRC_DIR)/include/spinlock/* $(DESTDIR)/$(HEADERS)/spinlock || exit
+ chmod 755 $(DESTDIR)/$(HEADERS)/spinlock
+ chmod 644 $(DESTDIR)/$(HEADERS)/spinlock/*.h || exit
+
+install-so:
+ mkdir -p $(DESTDIR)/$(LIBRARY)
+ cp src/libck.so $(DESTDIR)/$(LIBRARY)/$(LDNAME_VERSION)
+ ln -sf $(LDNAME_VERSION) $(DESTDIR)/$(LIBRARY)/$(LDNAME)
+ ln -sf $(LDNAME_VERSION) $(DESTDIR)/$(LIBRARY)/$(LDNAME_MAJOR)
+ chmod 744 $(DESTDIR)/$(LIBRARY)/$(LDNAME_VERSION) \
+ $(DESTDIR)/$(LIBRARY)/$(LDNAME) \
+ $(DESTDIR)/$(LIBRARY)/$(LDNAME_MAJOR)
+
+install-lib:
+ mkdir -p $(DESTDIR)/$(LIBRARY)
+ cp src/libck.a $(DESTDIR)/$(LIBRARY)/libck.a
+ chmod 644 $(DESTDIR)/$(LIBRARY)/libck.a
+
+install: all install-headers @INSTALL_LIBS@
+ $(MAKE) -C doc install
+ mkdir -p $(DESTDIR)/$(LIBRARY) || exit
+ mkdir -p $(DESTDIR)/$(PKGCONFIG_DATA) || exit
+ chmod 755 $(DESTDIR)/$(PKGCONFIG_DATA)
+ cp build/ck.pc $(DESTDIR)/$(PKGCONFIG_DATA)/ck.pc || exit
+ @echo
+ @echo
+ @echo ---[ Concurrency Kit has installed successfully.
+
+uninstall:
+ $(MAKE) -C doc uninstall
+ rm -f $(DESTDIR)/$(LIBRARY)/$(LDNAME_VERSION) \
+ $(DESTDIR)/$(LIBRARY)/$(LDNAME) \
+ $(DESTDIR)/$(LIBRARY)/$(LDNAME_MAJOR)
+ rm -f $(DESTDIR)/$(LIBRARY)/libck.so*
+ rm -f $(DESTDIR)/$(LIBRARY)/libck.a
+ rm -f $(DESTDIR)/$(HEADERS)/ck_*.h
+ rm -f $(DESTDIR)/$(HEADERS)/spinlock/*.h
+ rm -f $(DESTDIR)/$(HEADERS)/gcc/ck_*.h
+ rm -f $(DESTDIR)/$(HEADERS)/gcc/*/ck_*.h
+ rm -f $(DESTDIR)/$(PKGCONFIG_DATA)/ck.pc
+
+clean:
+ $(MAKE) -C doc clean
+ $(MAKE) -C src clean
+ $(MAKE) -C regressions clean
+ rm -f $(BUILD_DIR)/*~ $(BUILD_DIR)/*.o $(BUILD_DIR)/*.tar.gz
+
+dist:
+ git archive --remote=$(SRC_DIR) --format=tar --prefix=ck-$(VERSION)/ HEAD \
+ | gzip > $(BUILD_DIR)/ck-$(VERSION).tar.gz
+
+distclean: clean
+ rm -f $(BUILD_DIR)/include/ck_md.h
+ rm -f $(BUILD_DIR)/build/regressions.build
+ rm -f $(BUILD_DIR)/build/ck.build
+ rm -f $(BUILD_DIR)/build/ck.pc
+ rm -f $(BUILD_DIR)/Makefile
+ rm -f $(BUILD_DIR)/doc/Makefile
+
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/f098175e/lib/ck/README
----------------------------------------------------------------------
diff --git a/lib/ck/README b/lib/ck/README
new file mode 100644
index 0000000..81fb5ac
--- /dev/null
+++ b/lib/ck/README
@@ -0,0 +1,21 @@
+ ____ _ ___ _
+ / ___|___ _ __ ___ _ _ _ __ _ __ ___ _ __ ___ _ _ | |/ (_) |_
+| | / _ \| '_ \ / __| | | | '__| '__/ _ \ '_ \ / __| | | | | ' /| | __|
+| |__| (_) | | | | (__| |_| | | | | | __/ | | | (__| |_| | | . \| | |_
+ \____\___/|_| |_|\___|\__,_|_| |_| \___|_| |_|\___|\__, | |_|\_\_|\__|
+ |___/
+
+Step 1.
+ ./configure
+ For additional options try ./configure --help
+
+Step 2.
+ In order to compile regressions (requires POSIX threads) use
+ "make regressions". In order to compile libck use "make all" or "make".
+
+Step 3.
+ In order to install use "make install"
+ To uninstall use "make uninstall".
+
+See http://concurrencykit.org/ for more information.
+
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/f098175e/lib/ck/build/ck.build.aarch64
----------------------------------------------------------------------
diff --git a/lib/ck/build/ck.build.aarch64 b/lib/ck/build/ck.build.aarch64
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/lib/ck/build/ck.build.aarch64
@@ -0,0 +1 @@
+
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/f098175e/lib/ck/build/ck.build.arm
----------------------------------------------------------------------
diff --git a/lib/ck/build/ck.build.arm b/lib/ck/build/ck.build.arm
new file mode 100644
index 0000000..3fa739c
--- /dev/null
+++ b/lib/ck/build/ck.build.arm
@@ -0,0 +1 @@
+CFLAGS+=-D__arm__
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/f098175e/lib/ck/build/ck.build.in
----------------------------------------------------------------------
diff --git a/lib/ck/build/ck.build.in b/lib/ck/build/ck.build.in
new file mode 100644
index 0000000..6bcd044
--- /dev/null
+++ b/lib/ck/build/ck.build.in
@@ -0,0 +1,10 @@
+CC=@CC@
+MAKE=make
+SRC_DIR=@SRC_DIR@
+BUILD_DIR=@BUILD_DIR@
+CFLAGS=@CFLAGS@ -I$(SRC_DIR)/include -I$(BUILD_DIR)/include
+LDFLAGS=@LDFLAGS@
+ALL_LIBS=@ALL_LIBS@
+LD=@LD@
+
+include $(BUILD_DIR)/build/ck.build.@PROFILE@
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/f098175e/lib/ck/build/ck.build.ppc
----------------------------------------------------------------------
diff --git a/lib/ck/build/ck.build.ppc b/lib/ck/build/ck.build.ppc
new file mode 100644
index 0000000..bd0c2fd
--- /dev/null
+++ b/lib/ck/build/ck.build.ppc
@@ -0,0 +1 @@
+CFLAGS+=-m32 -D__ppc__
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/f098175e/lib/ck/build/ck.build.ppc64
----------------------------------------------------------------------
diff --git a/lib/ck/build/ck.build.ppc64 b/lib/ck/build/ck.build.ppc64
new file mode 100644
index 0000000..7dcb4f4
--- /dev/null
+++ b/lib/ck/build/ck.build.ppc64
@@ -0,0 +1 @@
+CFLAGS+=-m64 -D__ppc64__
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/f098175e/lib/ck/build/ck.build.sparcv9
----------------------------------------------------------------------
diff --git a/lib/ck/build/ck.build.sparcv9 b/lib/ck/build/ck.build.sparcv9
new file mode 100644
index 0000000..d866841
--- /dev/null
+++ b/lib/ck/build/ck.build.sparcv9
@@ -0,0 +1 @@
+CFLAGS+=-m64 -D__sparcv9__
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/f098175e/lib/ck/build/ck.build.x86
----------------------------------------------------------------------
diff --git a/lib/ck/build/ck.build.x86 b/lib/ck/build/ck.build.x86
new file mode 100644
index 0000000..2758c8a
--- /dev/null
+++ b/lib/ck/build/ck.build.x86
@@ -0,0 +1 @@
+CFLAGS+=-m32 -D__x86__ -msse -msse2
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/f098175e/lib/ck/build/ck.build.x86_64
----------------------------------------------------------------------
diff --git a/lib/ck/build/ck.build.x86_64 b/lib/ck/build/ck.build.x86_64
new file mode 100644
index 0000000..54643ef
--- /dev/null
+++ b/lib/ck/build/ck.build.x86_64
@@ -0,0 +1 @@
+CFLAGS+=-m64 -D__x86_64__
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/f098175e/lib/ck/build/ck.pc.in
----------------------------------------------------------------------
diff --git a/lib/ck/build/ck.pc.in b/lib/ck/build/ck.pc.in
new file mode 100644
index 0000000..5f0e97a
--- /dev/null
+++ b/lib/ck/build/ck.pc.in
@@ -0,0 +1,10 @@
+prefix=@PREFIX@
+includedir=@HEADERS@
+libdir=@LIBRARY@
+
+Name: Concurrency Kit
+Description: Toolkit for well-specified design and implementation of concurrent systems
+URL: http://concurrencykit.org/
+Version: @VERSION@
+Libs: -L${libdir} -lck
+Cflags: -D__@PROFILE@__ -I${includedir}
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/f098175e/lib/ck/build/ck.spec.in
----------------------------------------------------------------------
diff --git a/lib/ck/build/ck.spec.in b/lib/ck/build/ck.spec.in
new file mode 100644
index 0000000..e486d53
--- /dev/null
+++ b/lib/ck/build/ck.spec.in
@@ -0,0 +1,74 @@
+Name: ck
+Version: @VERSION@
+Release: 1%{?dist}
+Group: Development/Libraries
+Summary: Concurrency Kit
+License: Simplified BSD License
+URL: http://concurrencykit.org
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+
+Source: http://concurrencykit.org/releases/ck-%{version}.tar.gz
+
+%description
+Concurrency Kit provides a plethora of concurrency primitives, safe memory
+reclamation mechanisms and lock-less and lock-free data structures designed to
+aid in the design and implementation of high performance concurrent systems. It
+is designed to minimize dependencies on operating system-specific interfaces
+and most of the interface relies only on a strict subset of the standard
+library and more popular compiler extensions.
+
+%package devel
+Group: Development/Libraries
+Summary: Header files and libraries for CK development
+Requires: %{name} = %{version}-%{release}
+
+%description devel
+Concurrency Kit provides a plethora of concurrency primitives, safe memory
+reclamation mechanisms and lock-less and lock-free data structures designed to
+aid in the design and implementation of high performance concurrent systems. It
+is designed to minimize dependencies on operating system-specific interfaces
+and most of the interface relies only on a strict subset of the standard
+library and more popular compiler extensions.
+
+This package provides the libraries, include files, and other
+resources needed for developing Concurrency Kit applications.
+
+%prep
+%setup -q
+
+%build
+CFLAGS=$RPM_OPT_FLAGS ./configure \
+ --libdir=%{_libdir} \
+ --includedir=%{_includedir}/%{name} \
+ --mandir=%{_mandir} \
+ --prefix=%{_prefix}
+make %{?_smp_mflags}
+
+%install
+rm -rf $RPM_BUILD_ROOT
+make DESTDIR=$RPM_BUILD_ROOT install
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%files
+%defattr(-,root,root,-)
+%{_libdir}/libck.so.@VERSION@
+%{_libdir}/libck.so.@VERSION_MAJOR@
+
+%files devel
+%defattr(-,root,root)
+%{_libdir}/libck.so
+%{_includedir}/%{name}/*.h
+%{_includedir}/%{name}/*/*.h
+%{_includedir}/%{name}/*/*/*.h
+%{_libdir}/libck.a
+%{_libdir}/pkgconfig/%{name}.pc
+%{_mandir}/man3/*.3.gz
+
+%post
+/sbin/ldconfig
+
+%postun
+/sbin/ldconfig
+
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/f098175e/lib/ck/build/regressions.build.in
----------------------------------------------------------------------
diff --git a/lib/ck/build/regressions.build.in b/lib/ck/build/regressions.build.in
new file mode 100644
index 0000000..6d79a8b
--- /dev/null
+++ b/lib/ck/build/regressions.build.in
@@ -0,0 +1,10 @@
+CC=@CC@
+MAKE=make
+CORES=@CORES@
+CFLAGS=@CFLAGS@ -I../../../include -DCORES=@CORES@
+LD=@LD@
+LDFLAGS=@LDFLAGS@
+PTHREAD_CFLAGS=@PTHREAD_CFLAGS@
+BUILD_DIR=@BUILD_DIR@
+
+include $(BUILD_DIR)/build/ck.build.@PROFILE@
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/f098175e/lib/ck/configure
----------------------------------------------------------------------
diff --git a/lib/ck/configure b/lib/ck/configure
new file mode 100755
index 0000000..9e24c0e
--- /dev/null
+++ b/lib/ck/configure
@@ -0,0 +1,708 @@
+#!/bin/sh
+#
+# Copyright © 2009-2013 Samy Al Bahra.
+# Copyright © 2011 Devon H. O'Dell <de...@gmail.com>
+# 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 AUTHOR 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 AUTHOR 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.
+#
+
+REQUIRE_HEADER="stdbool.h stddef.h stdint.h string.h"
+
+EXIT_SUCCESS=0
+EXIT_FAILURE=1
+WANT_PIC=yes
+
+P_PWD=`pwd`
+MAINTAINER='sbahra@repnop.org'
+VERSION=${VERSION:-'0.4.3'}
+VERSION_MAJOR='0'
+BUILD="$PWD/build/ck.build"
+PREFIX=${PREFIX:-"/usr/local"}
+LDNAME="libck.so"
+LDNAME_VERSION="libck.so.$VERSION"
+LDNAME_MAJOR="libck.so.$VERSION_MAJOR"
+
+export CFLAGS
+export PREFIX
+LC_ALL=C
+export LC_ALL
+
+if test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+ set -o posix
+fi
+
+trap epilog 1 2 3 6
+
+epilog()
+{
+ rm -f .1.c .1
+}
+
+assert()
+{
+
+ if test "$#" -eq 2; then
+ fail=$2
+ print=true
+ elif test "$#" -eq 3; then
+ fail=$3
+ print=echo
+ else
+ echo "Usage: assert <test> <fail string> or assert <test> <success string> <fail string>" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ if test -z "$1"; then
+ echo "failed [$fail]"
+ exit $EXIT_FAILURE
+ else
+ ${print} "success [$1]"
+ fi
+}
+
+generate()
+{
+ sed -e "s#@PROFILE@#$PROFILE#g" \
+ -e "s#@VERSION@#$VERSION#g" \
+ -e "s#@VERSION_MAJOR@#$VERSION_MAJOR#g" \
+ -e "s#@CC@#$CC#g" \
+ -e "s#@CFLAGS@#$CFLAGS#g" \
+ -e "s#@HEADERS@#$HEADERS#g" \
+ -e "s#@LIBRARY@#$LIBRARY#g" \
+ -e "s#@PREFIX@#$PREFIX#g" \
+ -e "s#@CORES@#$CORES#g" \
+ -e "s#@ALL_LIBS@#$ALL_LIBS#g" \
+ -e "s#@INSTALL_LIBS@#$INSTALL_LIBS#g" \
+ -e "s#@LD@#$LD#g" \
+ -e "s#@LDFLAGS@#$LDFLAGS#g" \
+ -e "s#@PTHREAD_CFLAGS@#$PTHREAD_CFLAGS#g" \
+ -e "s#@MANDIR@#$MANDIR#g" \
+ -e "s#@GZIP@#$GZIP#g" \
+ -e "s#@GZIP_SUFFIX@#$GZIP_SUFFIX#g" \
+ -e "s#@POINTER_PACK_ENABLE@#$POINTER_PACK_ENABLE#g" \
+ -e "s#@RTM_ENABLE@#$RTM_ENABLE#g" \
+ -e "s#@VMA_BITS@#$VMA_BITS_R#g" \
+ -e "s#@VMA_BITS_VALUE@#$VMA_BITS_VALUE_R#g" \
+ -e "s#@MM@#$MM#g" \
+ -e "s#@BUILD_DIR@#$P_PWD#g" \
+ -e "s#@SRC_DIR@#$BUILD_DIR#g" \
+ -e "s#@LDNAME@#$LDNAME#g" \
+ -e "s#@LDNAME_MAJOR@#$LDNAME_MAJOR#g" \
+ -e "s#@LDNAME_VERSION@#$LDNAME_VERSION#g" \
+ $1 > $2
+}
+
+generate_stdout()
+{
+
+ echo
+ echo " VERSION = $VERSION"
+ echo " BUILD_DIR = $P_PWD"
+ echo " SRC_DIR = $BUILD_DIR"
+ echo " SYSTEM = $SYSTEM"
+ echo " PROFILE = $PROFILE"
+ echo " CC = $CC"
+ echo " COMPILER = $COMPILER"
+ echo " CFLAGS = $CFLAGS"
+ echo " PTHREAD_CFLAGS = $PTHREAD_CFLAGS"
+ echo " LD = $LD"
+ echo " LDNAME = $LDNAME"
+ echo " LDNAME_VERSION = $LDNAME_VERSION"
+ echo " LDNAME_MAJOR = $LDNAME_MAJOR"
+ echo " LDFLAGS = $LDFLAGS"
+ echo " GZIP = $GZIP"
+ echo " CORES = $CORES"
+ echo " POINTER_PACK = $POINTER_PACK_ENABLE"
+ echo " VMA_BITS = $VMA_BITS"
+ echo " MEMORY_MODEL = $MM"
+ echo " RTM = $RTM_ENABLE"
+ echo
+ echo "Headers will be installed in $HEADERS"
+ echo "Libraries will be installed in $LIBRARY"
+ echo "Documentation will be installed in $MANDIR"
+}
+
+for option in $*; do
+ value=`echo "$option" | sed -e 's/^[^=]*=\(.*\)/\1/'`
+
+ case "$option" in
+ --help)
+ echo "Usage: $0 [OPTIONS]"
+ echo
+ echo "The following options may be used for cross-building."
+ echo " --profile=N Use custom build profile (use in conjunction with \$CC)"
+ echo
+ echo "The following options may be used to modify installation behavior."
+ echo " --includedir=N Headers directory (default is ${PREFIX}/include)"
+ echo " --libdir=N Libraries directory (default is ${PREFIX}/lib)"
+ echo " --mandir=N Manual pages directory (default is ${PREFIX}/man)"
+ echo " --prefix=N Installs library files in N (default is $PREFIX)"
+ echo
+ echo "The following options will modify code generation."
+ echo " --cores=N Specify number of cores available on target machine"
+ echo " --enable-pointer-packing Assumes address encoding is subset of pointer range"
+ echo " --enable-rtm Enable restricted transactional memory (x86_64 only)"
+ echo " --memory-model=N Specify memory model (currently tso, pso or rmo)"
+ echo " --vma-bits=N Specify valid number of VMA bits"
+ echo
+ echo "The following environment variables may be used:"
+ echo " CC C compiler command"
+ echo " CFLAGS C compiler flags"
+ echo " LDFLAGS Linker flags"
+ echo " GZIP GZIP compression tool"
+ echo
+ echo "Report bugs to ${MAINTAINER}."
+ exit $EXIT_SUCCESS
+ ;;
+ --memory-model=*)
+ case "$value" in
+ "tso")
+ MM="CK_MD_TSO"
+ ;;
+ "rmo")
+ MM="CK_MD_RMO"
+ ;;
+ "pso")
+ MM="CK_MD_PSO"
+ ;;
+ *)
+ echo "./configure [--help]"
+ exit $EXIT_FAILURE
+ ;;
+ esac
+ ;;
+ --vma-bits=*)
+ VMA_BITS=$value
+ ;;
+ --enable-pointer-packing)
+ POINTER_PACK_ENABLE="CK_MD_POINTER_PACK_ENABLE"
+ ;;
+ --enable-rtm)
+ RTM_ENABLE_SET="CK_MD_RTM_ENABLE"
+ ;;
+ --cores=*)
+ CORES=$value
+ ;;
+ --profile=*)
+ PROFILE=$value
+ ;;
+ --prefix=*)
+ PREFIX=$value
+ ;;
+ --includedir=*)
+ HEADERS=$value
+ ;;
+ --libdir=*)
+ LIBRARY=$value
+ ;;
+ --mandir=*)
+ MANDIR=$value
+ ;;
+ --with-pic)
+ WANT_PIC=yes
+ ;;
+ --without-pic)
+ WANT_PIC=no
+ ;;
+ --build=*|--host=*|--target=*|--exec-prefix=*|--bindir=*|--sbindir=*|\
+ --sysconfdir=*|--datadir=*|--libexecdir=*|--localstatedir=*|\
+ --enable-static|\
+ --sharedstatedir=*|--infodir=*|--enable-shared|--disable-shared)
+ # ignore for compat with regular configure
+ ;;
+ --*)
+ echo "$0 [--help]"
+ echo "Unknown option $option"
+ exit $EXIT_FAILURE
+ ;;
+ *=*)
+ NAME=`expr "$option" : '\([^=]*\)='`
+ VALUE=`echo "$value" | sed "s/'/'\\\\\\\\''/g"`
+ eval "$NAME='$VALUE'"
+ export $NAME
+ ;;
+ *)
+ echo "$0 [--help]"
+ echo "Unknown option $option"
+ exit $EXIT_FAILURE
+ ;;
+ esac
+done
+
+HEADERS=${HEADERS:-"${PREFIX}/include"}
+LIBRARY=${LIBRARY:-"${PREFIX}/lib"}
+MANDIR=${MANDIR:-"${PREFIX}/share/man"}
+GZIP=${GZIP:-"gzip -c"}
+POINTER_PACK_ENABLE=${POINTER_PACK_ENABLE:-"CK_MD_POINTER_PACK_DISABLE"}
+RTM_ENABLE=${RTM_ENABLE_SET:-"CK_MD_RTM_DISABLE"}
+VMA_BITS=${VMA_BITS:-"unknown"}
+
+if test "$PROFILE"; then
+ printf "Using user-specified profile....."
+
+ if test -z "$CC"; then
+ echo "failed [specify compiler]"
+ exit $EXIT_FAILURE
+ fi
+
+ if test ! -f build/ck.build.$PROFILE; then
+ echo "failed [$PROFILE]"
+ exit $EXIT_FAILURE
+ fi
+
+ echo "success [$PROFILE]"
+ printf "Generating header files.........."
+ generate include/ck_md.h.in include/ck_md.h
+ echo "success"
+ printf "Generating build files..........."
+ generate doc/Makefile.in doc/Makefile
+ generate build/ck.build.in build/ck.build
+ generate build/regressions.build.in build/regressions.build
+ generate build/ck.pc.in build/ck.pc
+ generate build/ck.spec.in build/ck.spec
+ generate Makefile.in Makefile
+ echo "success"
+ generate_stdout
+ exit $EXIT_SUCCESS
+fi
+
+DCORES=2
+printf "Detecting operating system......."
+SYSTEM=`uname -s 2> /dev/null`
+case "$SYSTEM" in
+ "SunOS")
+ SYSTEM=solaris
+ ;;
+ "Linux"|"uClinux")
+ DCORES=`egrep '(^CPU[0-9]+|^processor.*:.*)' /proc/cpuinfo|wc -l`
+ SYSTEM=linux
+ ;;
+ "FreeBSD"|"GNU/kFreeBSD")
+ DCORES=`sysctl -n hw.ncpu`
+ SYSTEM=freebsd
+ ;;
+ "NetBSD")
+ DCORES=`sysctl -n hw.ncpu`
+ SYSTEM=netbsd
+ ;;
+ "OpenBSD")
+ DCORES=`sysctl -n hw.ncpu`
+ SYSTEM=openbsd
+ ;;
+ "DragonFly")
+ DCORES=`sysctl -n hw.ncpu`
+ SYSTEM=dragonflybsd
+ ;;
+ "Darwin")
+ DCORES=`sysctl -n hw.ncpu`
+ SYSTEM=darwin
+ ;;
+ MINGW32*)
+ SYSTEM=mingw32
+ LDFLAGS="-mthreads $LDFLAGS"
+ ;;
+ *)
+ SYSTEM=
+ ;;
+esac
+
+assert "$SYSTEM" "$SYSTEM" "unsupported"
+
+CORES=${CORES:-${DCORES}}
+printf "Detecting machine architecture..."
+PLATFORM=`uname -m 2> /dev/null`
+case $PLATFORM in
+ "macppc"|"Power Macintosh"|"powerpc")
+ RTM_ENABLE="CK_MD_RTM_DISABLE"
+ MM="${MM:-"CK_MD_RMO"}"
+ PLATFORM=ppc
+ ENVIRONMENT=32
+ LDFLAGS="-m32 $LDFLAGS"
+ ;;
+ "sun4u"|"sun4v"|"sparc64")
+ RTM_ENABLE="CK_MD_RTM_DISABLE"
+ MM="${MM:-"CK_MD_TSO"}"
+ PLATFORM=sparcv9
+ ENVIRONMENT=64
+ LDFLAGS="-m64 $LDFLAGS"
+ ;;
+ i386|i486|i586|i686|i586_i686|pentium*|athlon*|k5|k6|k6_2|k6_3)
+ MM="${MM:-"CK_MD_TSO"}"
+ case $SYSTEM in
+ darwin)
+ ENVIRONMENT=64
+ PLATFORM=x86_64
+ ;;
+ freebsd)
+ PLATFORM=x86
+ ENVIRONMENT=32
+
+ # FreeBSD doesn't give us a nice way to determine the CPU
+ # class of the running system, reporting any 32-bit x86
+ # architecture as i386. 486 is its minimum supported CPU
+ # class and cmpxchg8b was implemented first in i586.
+ dmesg | grep -q "486-class"
+ if test "$?" -eq 0; then
+ assert "" "" "Must have an i586 class or higher CPU"
+ fi
+
+ # FreeBSD still generates code for 486-class CPUs as its
+ # default 32-bit target, but we need 586 at the least.
+ echo "$CFLAGS" | grep -q 'march='
+ if test "$?" -ne 0; then
+ # Needed for cmpxchg8b
+ CFLAGS="$CFLAGS -march=i586"
+ fi
+ ;;
+ linux)
+ case $PLATFORM in
+ i386|i486)
+ assert "" "" "Must have an i586 class or higher CPU"
+ ;;
+ esac
+
+ PLATFORM=x86
+ ENVIRONMENT=32
+ ;;
+
+ *)
+ PLATFORM=x86
+ ENVIRONMENT=32
+ assert "$PLATFORM $ENVIRONMENT" "$PLATFORM $ENVIRONMENT" "unsupported"
+ ;;
+ esac
+ ;;
+ "amd64"|"x86_64")
+ PLATFORM=x86_64
+ ENVIRONMENT=64
+ LDFLAGS="-m64 $LDFLAGS"
+ MM="${MM:-"CK_MD_TSO"}"
+ ;;
+ "i86pc")
+ RTM_ENABLE="CK_MD_RTM_DISABLE"
+ MM="${MM:-"CK_MD_TSO"}"
+ ISA=`isainfo -n 2> /dev/null || echo i386`
+ case "$ISA" in
+ "amd64")
+ RTM_ENABLE=${RTM_ENABLE_SET:-"CK_MD_RTM_DISABLE"}
+ PLATFORM=x86_64
+ ENVIRONMENT=64
+ ;;
+ *)
+ PLATFORM=x86
+ ENVIRONMENT=32
+ assert "$PLATFORM $ENVIRONMENT" "$PLATFORM $ENVIRONMENT" "unsupported"
+ ;;
+ esac
+ ;;
+ "ppc64"|"ppc64le")
+ RTM_ENABLE="CK_MD_RTM_DISABLE"
+ MM="${MM:-"CK_MD_RMO"}"
+ PLATFORM=ppc64
+ ENVIRONMENT=64
+ ;;
+ arm|armv6l|armv7l)
+ RTM_ENABLE="CK_MD_RTM_DISABLE"
+ MM="${MM:-"CK_MD_RMO"}"
+ PLATFORM=arm
+ ENVIRONMENT=32
+ ;;
+ "aarch64")
+ RTM_ENABLE="CK_MD_RTM_DISABLE"
+ MM="${MM:-"CK_MD_RMO"}"
+ PLATFORM=aarch64
+ ENVIRONMENT=64
+ ;;
+ *)
+ RTM_ENABLE="CK_MD_RTM_DISABLE"
+ PLATFORM=
+ MM="${MM:-"CK_MD_RMO"}"
+ ;;
+esac
+
+assert "$PLATFORM" "$PLATFORM" "unsupported"
+
+if test "$VMA" = "unknown"; then
+ VMA_BITS_R="CK_MD_VMA_BITS_UNKNOWN"
+ VMA_BITS_VALUE_R=""
+ POINTER_PACK_ENABLE="CK_MD_POINTER_PACK_DISABLE"
+else
+ VMA_BITS_R="CK_MD_VMA_BITS"
+ VMA_BITS_VALUE_R="${VMA_BITS}ULL"
+fi
+
+# `which` on Solaris sucks
+pathsearch()
+{
+ what=$1
+ oldFS="$IFS"
+ IFS=":"
+ for d in $PATH ; do
+ if test -x "$d/$what" ; then
+ echo "$d/$what";
+ IFS="$oldFS"
+ return
+ fi
+ done
+ IFS="$oldFS"
+}
+
+printf "Finding dirname command.........."
+DIRNAME=`pathsearch "${DIRNAME:-dirname}"`
+if test -z "$DIRNAME" -o ! -x "$DIRNAME"; then
+ DIRNAME=`pathsearch "${DIRNAME:-dirname}"`
+ DIRNAME="$DIRNAME"
+else
+ echo "success [$DIRNAME]"
+fi
+
+if test -z "$DIRNAME"; then
+ echo "not found (out of source build unsupported)"
+else
+ printf "Determining build directory......"
+
+ BUILD_DIR=`$DIRNAME $0`
+ cd `$DIRNAME $0`
+ BUILD_DIR=`pwd`
+
+ echo "success [$BUILD_DIR]"
+fi
+
+printf "Finding gzip tool................"
+GZIP=`pathsearch "${GZIP:-gzip}"`
+if test -z "$GZIP" -o ! -x "$GZIP"; then
+ GZIP=`pathsearch "${GZIP:-gzip}"`
+ GZIP="$GZIP"
+fi
+
+if test -z "$GZIP"; then
+ echo "not found"
+ GZIP=cat
+ GZIP_SUFFIX=""
+else
+ echo "success [$GZIP]"
+ GZIP="$GZIP -c"
+ GZIP_SUFFIX=".gz"
+fi
+
+printf "Finding suitable compiler........"
+CC=`pathsearch "${CC:-cc}"`
+if test -z "$CC" -o ! -x "$CC"; then
+ CC=`pathsearch "${CC:-gcc}"`
+fi
+assert "$CC" "not found"
+
+cat << EOF > .1.c
+#include <stdio.h>
+int main(void) {
+#if defined(_WIN32)
+#if defined(__MINGW64__)
+ puts("mingw64");
+ return (0);
+#elif defined(__MINGW32__) && (__MINGW32_MAJOR_VERSION >= 3)
+ puts("mingw32");
+ return (0);
+#else
+ return (1);
+#endif /* __MINGW32__ && __MINGW32_MAJOR_VERSION >= 3 */
+#elif defined(__clang__) && (__clang_major__ >= 4)
+ puts("clang");
+ return (0);
+#elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x5110)
+ puts("suncc");
+ return (0);
+#elif defined(__GNUC__) && (__GNUC__ >= 4)
+ puts("gcc");
+ return (0);
+#else
+ return (1);
+#endif
+}
+EOF
+
+$CC -o .1 .1.c
+COMPILER=`./.1`
+r=$?
+rm -f .1.c .1
+
+if test "$r" -ne 0; then
+ assert "" "update compiler"
+else
+ echo "success [$CC]"
+fi
+
+if test "$COMPILER" = "suncc"; then
+ LD=/bin/ld
+ LDFLAGS="-G -z text -h libck.so.$VERSION_MAJOR $LDFLAGS"
+ CFLAGS="-xO5 $CFLAGS"
+ PTHREAD_CFLAGS="-mt -lpthread"
+elif test "$COMPILER" = "gcc" || test "$COMPILER" = "clang" || test "$COMPILER" = "mingw32" || test "$COMPILER" = "mingw64"; then
+ LD=$CC
+ SONAME="$LDNAME_MAJOR"
+ if test "$SYSTEM" = "darwin"; then
+ CC_WL_OPT="-install_name"
+ LDNAME="libck.dylib"
+ LDNAME_VERSION="libck.$VERSION.dylib"
+ LDNAME_MAJOR="libck.$VERSION_MAJOR.dylib"
+ SONAME="$LIBRARY/$LDNAME_MAJOR"
+ else
+ CC_WL_OPT="-soname"
+ fi
+
+ LDFLAGS="-Wl,$CC_WL_OPT,$SONAME $LDFLAGS"
+ if test "$WANT_PIC" = "yes"; then
+ LDFLAGS="$LDFLAGS -shared -fPIC"
+ CFLAGS="$CFLAGS -fPIC"
+ ALL_LIBS="libck.so libck.a"
+ INSTALL_LIBS="install-so install-lib"
+ else
+ LDFLAGS="$LDFLAGS -fno-PIC"
+ CFLAGS="$CFLAGS -fno-PIC"
+ ALL_LIBS="libck.a"
+ INSTALL_LIBS="install-lib"
+ fi
+
+ CFLAGS="-D_XOPEN_SOURCE=600 -D_BSD_SOURCE -std=gnu99 -pedantic -Wall -W -Wundef -Wendif-labels -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Winline -Wdisabled-optimization -fstrict-aliasing -O2 -pipe -Wno-parentheses $CFLAGS"
+ PTHREAD_CFLAGS="-pthread"
+ if test "$COMPILER" = "mingw64"; then
+ ENVIRONMENT=64
+ PLATFORM=x86_64
+ fi
+else
+ assert "" "unknown compiler"
+fi
+
+printf "Detecting VMA bits..............."
+VMA="unknown"
+if test "$VMA_BITS" = "unknown"; then
+ if test "$PLATFORM" = "x86" || test $PLATFORM = "x86_64"; then
+ case $SYSTEM in
+ darwin)
+ VMA=`sysctl -n machdep.cpu.address_bits.virtual`
+ ;;
+ linux)
+ VMA=`awk '/address sizes/ {print $7;exit}' /proc/cpuinfo`
+ ;;
+ *)
+ if test "$PLATFORM" = "x86"; then
+ VMA="32"
+ else
+ cat << EOF > .1.c
+ #include <stdio.h>
+
+ int main(int argc, char *argv[])
+ {
+ unsigned long ret = 0x80000000;
+
+ __asm __volatile("cpuid\n"
+ : "+a" (ret));
+ if (ret >= 0x80000008) {
+ ret = 0x80000008;
+ __asm __volatile("cpuid\n"
+ : "+a" (ret));
+ printf("%lu\n", (ret >> 8) & 0xff);
+ } else {
+ return (1);
+ }
+ return (0);
+ }
+EOF
+
+ $CC -o .1 .1.c 2>/dev/null
+ VMA=`./.1 2>/dev/null`
+ if test $? -ne 0; then
+ VMA="unknown"
+ fi
+ rm -f .1.c .1
+ fi
+ esac
+ fi
+
+ VMA_BITS=$VMA
+else
+ VMA=$VMA_BITS
+fi
+
+if test "$VMA" = "unknown"; then
+ echo "unknown"
+ VMA_BITS_R="CK_MD_VMA_BITS_UNKNOWN"
+ VMA_BITS_VALUE_R=""
+ POINTER_PACK_ENABLE="CK_MD_POINTER_PACK_DISABLE"
+else
+ echo "success [$VMA]"
+ VMA_BITS_R="CK_MD_VMA_BITS"
+ VMA_BITS_VALUE_R="${VMA_BITS}ULL"
+fi
+
+for i in $REQUIRE_HEADER; do
+ printf "Checking header file usability..."
+
+ cat << EOF > .1.c
+#include <$i>
+int main(void){return(0);}
+EOF
+ $CC -o .1 .1.c 2> /dev/null
+ hf_s=$?
+
+ rm -f .1 .1.c
+ if test $hf_s -eq 0; then
+ echo "success [$i]"
+ else
+ echo "failed [$i]"
+ exit $EXIT_FAILURE
+ fi
+done
+
+# Platform will be used as a macro.
+PROFILE="${PROFILE:-$PLATFORM}"
+PLATFORM="__${PLATFORM}__"
+
+printf "Generating header files.........."
+generate include/ck_md.h.in include/ck_md.h
+echo "success"
+
+printf "Generating build files..........."
+
+mkdir -p $P_PWD/doc
+mkdir -p $P_PWD/build
+mkdir -p $P_PWD/include
+mkdir -p $P_PWD/src
+
+if test "$P_PWD" '!=' "$BUILD_DIR"; then
+ mkdir -p $P_PWD/regressions
+ cp $BUILD_DIR/regressions/Makefile.unsupported $P_PWD/regressions/Makefile &> /dev/null
+ cp $BUILD_DIR/build/ck.build.$PROFILE $P_PWD/build/ck.build.$PROFILE &> /dev/null
+ cp $BUILD_DIR/include/ck_md.h $P_PWD/include/ck_md.h &> /dev/null
+fi
+
+generate src/Makefile.in $P_PWD/src/Makefile
+generate doc/Makefile.in $P_PWD/doc/Makefile
+generate build/ck.build.in $P_PWD/build/ck.build
+generate build/regressions.build.in $P_PWD/build/regressions.build
+generate build/ck.pc.in $P_PWD/build/ck.pc
+generate build/ck.spec.in $P_PWD/build/ck.spec
+generate Makefile.in $P_PWD/Makefile
+touch src/*.c
+echo "success"
+generate_stdout
+
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/f098175e/lib/ck/doc/CK_ARRAY_FOREACH
----------------------------------------------------------------------
diff --git a/lib/ck/doc/CK_ARRAY_FOREACH b/lib/ck/doc/CK_ARRAY_FOREACH
new file mode 100644
index 0000000..d85b767
--- /dev/null
+++ b/lib/ck/doc/CK_ARRAY_FOREACH
@@ -0,0 +1,79 @@
+.\"
+.\" Copyright 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 October 18, 2013
+.Dt CK_ARRAY_FOREACH 3
+.Sh NAME
+.Nm CK_ARRAY_FOREACH
+.Nd iterate through an array
+.Sh LIBRARY
+Concurrency Kit (libck, \-lck)
+.Sh SYNOPSIS
+.In ck_array.h
+.Ft bool
+.Fn CK_ARRAY_FOREACH "ck_array_t *array" "ck_array_iterator_t *iterator" "void **b"
+.Sh DESCRIPTION
+The
+.Fn CK_ARRAY_FOREACH 3
+macro iterates through the array pointed to by
+.Fa array .
+A pointer to an iterator object must be specified by
+.Fa iterator
+and
+.Fa b
+must point to a void pointer.
+.Sh EXAMPLE
+.Bd -literal -offset indent
+#include <ck_array.h>
+
+/* Assume this was already previously initialized. */
+ck_array_t array;
+
+void
+example(void)
+{
+ ck_array_iterator_t iterator;
+ void *pointer;
+
+ CK_ARRAY_FOREACH(&array, &iterator, &pointer) {
+ do_something(pointer);
+ }
+}
+.Ed
+.Sh RETURN VALUES
+This macro has no return value.
+.Sh SEE ALSO
+.Xr ck_array_init 3 ,
+.Xr ck_array_commit 3 ,
+.Xr ck_array_put 3 ,
+.Xr ck_array_put_unique 3 ,
+.Xr ck_array_remove 3 ,
+.Xr ck_array_deinit 3
+.Xr ck_array_length 3 ,
+.Xr ck_array_buffer 3 ,
+.Xr ck_array_initialized 3
+.Pp
+Additional information available at http://concurrencykit.org/
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/f098175e/lib/ck/doc/CK_COHORT_INIT
----------------------------------------------------------------------
diff --git a/lib/ck/doc/CK_COHORT_INIT b/lib/ck/doc/CK_COHORT_INIT
new file mode 100644
index 0000000..42a2294
--- /dev/null
+++ b/lib/ck/doc/CK_COHORT_INIT
@@ -0,0 +1,66 @@
+.\"
+.\" Copyright 2013 Brendon Scheinman.
+.\" 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 February 24, 2013.
+.Dt CK_COHORT_INIT 3
+.Sh NAME
+.Nm CK_COHORT_INIT
+.Nd initialize instance of a cohort type
+.Sh LIBRARY
+Concurrency Kit (libck, \-lck)
+.Sh SYNOPSIS
+.In ck_cohort.h
+.Fn CK_COHORT_INIT "COHORT_NAME cohort_name" "COHORT *cohort" "void *global_lock" \
+"void *local_lock" "unsigned int pass_limit"
+.Sh DESCRIPTION
+Until a cohort instance is initialized using the CK_COHORT_INIT macro, any operations
+involving it will have undefined behavior. After this macro has been called, the cohort
+pointed to by the
+.Fa cohort
+argument will use the lock pointed to by
+.Fa global_lock
+as its global lock and the lock pointed to by
+.Fa local_lock
+as its local lock.
+.Pp
+The cohort will relinquish its global lock after
+.Fa pass_limit
+consecutive acquisitions of its local lock, even if there are other threads waiting.
+If you are unsure of a value to use for the
+.Fa pass_limit
+argument, you should use CK_COHORT_DEFAULT_LOCAL_PASS_LIMIT.
+.Sh SEE ALSO
+.Xr ck_cohort 3 ,
+.Xr CK_COHORT_PROTOTYPE 3 ,
+.Xr CK_COHORT_TRYLOCK_PROTOTYPE 3 ,
+.Xr CK_COHORT_INSTANCE 3 ,
+.Xr CK_COHORT_INITIALIZER 3 ,
+.Xr CK_COHORT_LOCK 3 ,
+.Xr CK_COHORT_UNLOCK 3 ,
+.Xr CK_COHORT_LOCKED 3 ,
+.Xr CK_COHORT_TRYLOCK 3 ,
+.Pp
+Additional information available at http://concurrencykit.org/
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/f098175e/lib/ck/doc/CK_COHORT_INSTANCE
----------------------------------------------------------------------
diff --git a/lib/ck/doc/CK_COHORT_INSTANCE b/lib/ck/doc/CK_COHORT_INSTANCE
new file mode 100644
index 0000000..cec1617
--- /dev/null
+++ b/lib/ck/doc/CK_COHORT_INSTANCE
@@ -0,0 +1,59 @@
+.\"
+.\" Copyright 2013 Brendon Scheinman.
+.\" 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 February 24, 2013.
+.Dt CK_COHORT_INSTANCE 3
+.Sh NAME
+.Nm CK_COHORT_INSTANCE
+.Nd declare an instance of a cohort type
+.Sh LIBRARY
+Concurrency Kit (libck, \-lck)
+.Sh SYNOPSIS
+.In ck_cohort.h
+.Fn CK_COHORT_INSTANCE "COHORT_NAME cohort_name"
+.Sh DESCRIPTION
+The user must use this macro to declare instances of cohort types that they have
+defined. For instance, if they have used the CK_COHORT_PROTOTYPE macro to define
+a cohort type with name foo, they would create an instance of this type as follows:
+.br
+CK_COHORT_INSTANCE(foo) cohort;
+.Pp
+This macro should also be used when allocating memory for cohorts. For instance,
+to allocate a block of 4 cohorts:
+.br
+CK_COHORT_INSTANCE(foo) *cohorts = malloc(4 * sizeof(CK_COHORT_INSTANCE(foo)));
+.Sh SEE ALSO
+.Xr ck_cohort 3 ,
+.Xr CK_COHORT_PROTOTYPE 3 ,
+.Xr CK_COHORT_TRYLOCK_PROTOTYPE 3 ,
+.Xr CK_COHORT_INSTANCE 3 ,
+.Xr CK_COHORT_INITIALIZER 3 ,
+.Xr CK_COHORT_LOCK 3 ,
+.Xr CK_COHORT_UNLOCK 3 ,
+.Xr CK_COHORT_LOCKED 3 ,
+.Xr CK_COHORT_TRYLOCK 3 ,
+.Pp
+Additional information available at http://concurrencykit.org/
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/f098175e/lib/ck/doc/CK_COHORT_LOCK
----------------------------------------------------------------------
diff --git a/lib/ck/doc/CK_COHORT_LOCK b/lib/ck/doc/CK_COHORT_LOCK
new file mode 100644
index 0000000..df39ad4
--- /dev/null
+++ b/lib/ck/doc/CK_COHORT_LOCK
@@ -0,0 +1,61 @@
+.\"
+.\" Copyright 2013 Brendon Scheinman.
+.\" 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 February 24, 2013.
+.Dt CK_COHORT_LOCK 3
+.Sh NAME
+.Nm CK_COHORT_LOCK
+.Nd acquire cohort lock
+.Sh LIBRARY
+Concurrency Kit (libck, \-lck)
+.Sh SYNOPSIS
+.In ck_cohort.h
+.Fn CK_COHORT_LOCK "COHORT_NAME cohort_name" "COHORT *cohort" "void *global_context" \
+"void *local_context"
+.Sh DESCRIPTION
+This call attempts to acquire both the local and global (if necessary) locks from
+.Fa cohort .
+The call will block until both locks have been acquired.
+.Fa global_context
+will be passed as the second argument to the function that was provided as the
+.Fa global_lock_method
+argument to CK_COHORT_PROTOTYPE if that method is called, and
+.Fa local_context
+will be passed to the function specified by
+.Fa local_lock_method
+.
+.Sh SEE ALSO
+.Xr ck_cohort 3 ,
+.Xr CK_COHORT_PROTOTYPE 3 ,
+.Xr CK_COHORT_TRYLOCK_PROTOTYPE 3 ,
+.Xr CK_COHORT_INSTANCE 3 ,
+.Xr CK_COHORT_INITIALIZER 3 ,
+.Xr CK_COHORT_INIT 3 ,
+.Xr CK_COHORT_UNLOCK 3 ,
+.Xr CK_COHORT_LOCKED 3 ,
+.Xr CK_COHORT_TRYLOCK 3 ,
+.Pp
+Additional information available at http://concurrencykit.org/
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/f098175e/lib/ck/doc/CK_COHORT_PROTOTYPE
----------------------------------------------------------------------
diff --git a/lib/ck/doc/CK_COHORT_PROTOTYPE b/lib/ck/doc/CK_COHORT_PROTOTYPE
new file mode 100644
index 0000000..f058fb8
--- /dev/null
+++ b/lib/ck/doc/CK_COHORT_PROTOTYPE
@@ -0,0 +1,76 @@
+.\"
+.\" Copyright 2013 Brendon Scheinman.
+.\" 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 February 24, 2013.
+.Dt CK_COHORT_PROTOTYPE 3
+.Sh NAME
+.Nm CK_COHORT_PROTOTYPE
+.Nd define cohort type with specified lock types
+.Sh LIBRARY
+Concurrency Kit (libck, \-lck)
+.Sh SYNOPSIS
+.In ck_cohort.h
+.Fn CK_COHORT_PROTOTYPE "COHORT_NAME cohort_name" "TYPE global_lock_method" \
+"LOCK_FXN global_unlock_method" "LOCK_FXN local_lock_method" "LOCK_FXN local_unlock_method"
+.Sh DESCRIPTION
+The ck_cohort.h header file does not define any cohort types. Instead, the user must use
+the CK_COHORT_PROTOTYPE or
+.Xr CK_COHORT_TRYLOCK_PROTOTYPE 3
+macros to define any types they want to use. They must use CK_COHORT_TRYLOCK_PROTOTYPE
+if they want their cohort type to support trylock operations.
+The CK_COHORT_PROTOTYPE macro takes the following arguments:
+.Pp
+.Fa cohort_name
+: An identifier used for this cohort type. This will have to be passed to each
+of the other CK_COHORT macros.
+.br
+.Fa global_lock_method
+: The method that should be called to acquire the global lock
+.br
+.Fa global_unlock_method
+: The method that should be called to relinquish the global lock
+.br
+.Fa local_lock_method
+: The method that should be called to acquire the local lock
+.br
+.Fa local_unlock_method
+: The method that should be called to relinquish the local lock
+.Pp
+Instances of the defined cohort type can be declared as:
+.br
+ CK_COHORT_INSTANCE(cohort_name) cohort;
+.Sh SEE ALSO
+.Xr ck_cohort 3 ,
+.Xr CK_COHORT_TRYLOCK_PROTOTYPE 3 ,
+.Xr CK_COHORT_INSTANCE 3 ,
+.Xr CK_COHORT_INITIALIZER 3 ,
+.Xr CK_COHORT_INIT 3 ,
+.Xr CK_COHORT_LOCK 3 ,
+.Xr CK_COHORT_UNLOCK 3 ,
+.Xr CK_COHORT_LOCKED 3 ,
+.Xr CK_COHORT_TRYLOCK 3 ,
+.Pp
+Additional information available at http://concurrencykit.org/
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/f098175e/lib/ck/doc/CK_COHORT_TRYLOCK
----------------------------------------------------------------------
diff --git a/lib/ck/doc/CK_COHORT_TRYLOCK b/lib/ck/doc/CK_COHORT_TRYLOCK
new file mode 100644
index 0000000..fd9306e
--- /dev/null
+++ b/lib/ck/doc/CK_COHORT_TRYLOCK
@@ -0,0 +1,69 @@
+.\"
+.\" Copyright 2013 Brendon Scheinman.
+.\" 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 March 9, 2013.
+.Dt CK_COHORT_TRYLOCK 3
+.Sh NAME
+.Nm CK_COHORT_TRYLOCK
+.Nd try to acquire cohort lock
+.Sh LIBRARY
+Concurrency Kit (libck, \-lck)
+.Sh SYNOPSIS
+.In ck_cohort.h
+.Fn CK_COHORT_TRYLOCK "COHORT_NAME cohort_name" "COHORT *cohort" "void *global_trylock_context" \
+"void *local_trylock_context" "void *lock_unlock_context"
+.Sh DESCRIPTION
+This call attempts to acquire both the local and global (if necessary) locks from
+.Fa cohort .
+It can only be used with cohort types that were defined using the
+.Xr CK_COHORT_TRYLOCK_PROTOTYPE 3
+macro. The call will not block and will return a bool that will evaluate to true iff
+the cohort was successfully acquired.
+.Fa global_trylock_context
+will be passed as the second argument to the function that was provided as the
+.Fa global_trylock_method
+argument to CK_COHORT_TRYLOCK_PROTOTYPE if that method is called, and
+.Fa local_trylock_context
+will be passed to the function specified by
+.Fa local_trylock_method .
+If the global lock acquisition fails, then the cohort will immediately release its
+local lock as well, and
+.Fa local_unlock_context
+will be passed to the function specified by
+.Fa local_unlock_method
+when this call is made.
+.Sh SEE ALSO
+.Xr ck_cohort 3 ,
+.Xr CK_COHORT_PROTOTYPE 3 ,
+.Xr CK_COHORT_TRYLOCK_PROTOTYPE 3 ,
+.Xr CK_COHORT_INSTANCE 3 ,
+.Xr CK_COHORT_INITIALIZER 3 ,
+.Xr CK_COHORT_INIT 3 ,
+.Xr CK_COHORT_LOCK 3 ,
+.Xr CK_COHORT_UNLOCK 3 ,
+.Xr CK_COHORT_LOCKED 3 ,
+.Pp
+Additional information available at http://concurrencykit.org/
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/f098175e/lib/ck/doc/CK_COHORT_TRYLOCK_PROTOTYPE
----------------------------------------------------------------------
diff --git a/lib/ck/doc/CK_COHORT_TRYLOCK_PROTOTYPE b/lib/ck/doc/CK_COHORT_TRYLOCK_PROTOTYPE
new file mode 100644
index 0000000..7edc032
--- /dev/null
+++ b/lib/ck/doc/CK_COHORT_TRYLOCK_PROTOTYPE
@@ -0,0 +1,90 @@
+.\"
+.\" Copyright 2013 Brendon Scheinman.
+.\" 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 March 9, 2013.
+.Dt CK_COHORT_TRYLOCK_PROTOTYPE 3
+.Sh NAME
+.Nm CK_COHORT_TRYLOCK_PROTOTYPE
+.Nd define cohort type with specified lock types
+.Sh LIBRARY
+Concurrency Kit (libck, \-lck)
+.Sh SYNOPSIS
+.In ck_cohort.h
+.Fn CK_COHORT_TRYLOCK_PROTOTYPE "COHORT_NAME cohort_name" "LOCK_FXN global_lock_method" \
+"LOCK_FXN global_unlock_method" "BOOL_LOCK_FXN global_locked_method" \
+"BOOL_LOCK_FXN global_trylock_method" "LOCK_FXN local_lock_method" \
+"LOCK_FXN local_unlock_method" "BOOL_LOCK_FXN local_locked_method" "BOOL_LOCK_FXN local_trylock_method"
+.Sh DESCRIPTION
+The ck_cohort.h header file does not define any cohort types. Instead, the user must use
+the CK_COHORT_PROTOTYPE or CK_COHORT_TRYLOCK_PROTOTYPE macros to define any types
+they want to use. They must use CK_COHORT_TRYLOCK_PROTOTYPE if they want their cohort type to have support
+for trylock operations. The CK_COHORT_TRYLOCK_PROTOTYPE macro takes the following arguments:
+.Pp
+.Fa cohort_name
+: An identifier used for this cohort type. This will have to be passed to each
+of the other CK_COHORT macros.
+.br
+.Fa global_lock_method
+: The method that should be called to acquire the global lock
+.br
+.Fa global_unlock_method
+: The method that should be called to relinquish the global lock
+.br
+.Fa global_locked_method
+: This method should return true iff the global lock is acquired by a thread.
+.br
+.Fa global_trylock_method
+: The method that should be called to try to acquire the global lock.
+It should not block and return true iff the lock was successfully acquired.
+.br
+.Fa local_lock_method
+: The method that should be called to acquire the local lock
+.br
+.Fa local_unlock_method
+: The method that should be called to relinquish the local lock
+.br
+.Fa global_locked_method
+: This method should return true iff the global lock is acquired by a thread.
+.br
+.Fa local_trylock_method
+: The method that should be called to try to acquire the local lock.
+It should not block and return true iff the lock was successfully acquired.
+.Pp
+Instances of the defined cohort type can be declared as:
+.br
+ CK_COHORT_INSTANCE(cohort_name) cohort;
+.Sh SEE ALSO
+.Xr ck_cohort 3 ,
+.Xr CK_COHORT_PROTOTYPE 3 ,
+.Xr CK_COHORT_INSTANCE 3 ,
+.Xr CK_COHORT_INITIALIZER 3 ,
+.Xr CK_COHORT_INIT 3 ,
+.Xr CK_COHORT_LOCK 3 ,
+.Xr CK_COHORT_UNLOCK 3 ,
+.Xr CK_COHORT_LOCKED 3 ,
+.Xr CK_COHORT_TRYLOCK 3 ,
+.Pp
+Additional information available at http://concurrencykit.org/