CK_PR(3)
β¨ ck_pr(3) β¨
okay so bestie, welcome to ck_pr β the concurrency primitives interface π
this is the main character of the Concurrency Kit man pages and honestly? iconic. it's the doorway, the vibe check, the "hey here's everything we've got" page. let's get into it π«Ά
πΈ LIBRARY πΈ
Concurrency Kit β that's libck, and you link it with -lck π no cap.
π SYNOPSIS π
#include <ck_pr.h>
that's it. that's the whole vibe. one include and you're in π
π¦ DESCRIPTION π¦
so ck_pr.h hands you an interface to volatile atomic instructions, memory barriers and busy-wait facilities β all as provided by the underlying processor underneath you π like, your CPU's got the goods, and this header is the group chat where it tells you about them.
here's the part that matters though, fr fr: you figure out whether an atomic operation exists by checking whether the corresponding CK_F_PR macro exists. that's the detection mechanism. that's the whole system. it's giving "if the macro's there, the op's there."
example time because examples slay:
- wanna know if
ck_pr_add_16(3)is available? β¨ check forCK_F_PR_ADD_16. β¨
that's it. that's the pattern. macro present β operation present. macro absent β don't even try it, bestie π
this is the parent page, btw. every actual primitive has its own man page (see below) and this one is just the intro, the vibe-setter, the "here's the map" moment πΊοΈ
π SEE ALSO π
the whole fam, in order, no one left out π:
ck_pr_stall(3)ck_pr_fence_acquire(3)ck_pr_fence_release(3)ck_pr_fence_load(3)ck_pr_fence_load_depends(3)ck_pr_fence_store(3)ck_pr_fence_memory(3)ck_pr_barrier(3)ck_pr_fas(3)ck_pr_load(3)ck_pr_store(3)ck_pr_faa(3)ck_pr_inc(3)ck_pr_dec(3)ck_pr_neg(3)ck_pr_not(3)ck_pr_add(3)ck_pr_sub(3)ck_pr_and(3)ck_pr_or(3)ck_pr_xor(3)ck_pr_cas(3)ck_pr_btc(3)ck_pr_bts(3)ck_pr_btr(3)
and if you want even more lore, additional information is available at http://concurrencykit.org/ π go read it, it's free, it's giving knowledge π§
and that's the page!! π this one's from the Concurrency Kit, dated April 7, 2013 β yeah she's an elder but she still ate and left no crumbs π mwah, go write some lock-free code, ily, bye β¨π«Ά
π¦ where this page comes from
- alpine 3.24: ck-doc 0.7.2-r1 Β· BSD-2-Clause AND Apache-2.0
- debian bookworm: libck-dev 0.7.1-10 Β· BSD-2-Clause
- debian trixie: libck-dev 0.7.2-6 Β· BSD-2-Clause
- epel 10: ck-devel 0.7.2-1.el10_1 Β· BSD-2-clause AND Apache-2.0 AND BSD-3-clause
- epel 9: ck-devel 0.7.0-10.el9 Β· BSD
- fedora 43: ck-devel 0.7.2-2.fc43 Β· BSD-2-clause AND Apache-2.0 AND BSD-3-clause
- fedora 43: ck-devel 0.7.2-2.fc43 Β· BSD-2-clause AND Apache-2.0 AND BSD-3-clause
- fedora 44: ck-devel 0.7.2-4.fc44 Β· BSD-2-clause AND Apache-2.0 AND BSD-3-clause
- fedora 44: ck-devel 0.7.2-4.fc44 Β· BSD-2-clause AND Apache-2.0 AND BSD-3-clause
- nixos 26.05: ck 0.7.2
- nixpkgs unstable: ck 0.7.2
- opensuse-leap 16.0: ck-devel 0.7.2-bp160.1.9 Β· Apache-2.0 AND BSD-2-Clause
- opensuse-leap 16.0: ck-devel 0.7.2-bp160.1.9 Β· Apache-2.0 AND BSD-2-Clause
- opensuse-leap 16.0: ck-devel 0.7.2-bp160.1.9 Β· Apache-2.0 AND BSD-2-Clause
- ubuntu jammy: libck-dev 0.7.1-6ubuntu2 Β· BSD-2-Clause
- ubuntu noble: libck-dev 0.7.1-13build1 Β· BSD-2-Clause
- ubuntu questing: libck-dev 0.7.2-5ubuntu1
- ubuntu resolute: libck-dev 0.7.2-5ubuntu2 Β· BSD-2-Clause
- ubuntu stonking: libck-dev 0.7.2-11 Β· BSD-2-Clause
- Copyright 2013 Samy Al Bahra
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms