CK_PR_SUB(3)
π ck_pr_sub(3) β atomic subtraction operations π
okay bestie, welcome to the manual page for the ck_pr_sub crew π
this one lives in the Concurrency Kit (that's libck, link it with -lck) and it's literally the whole family of atomic subtraction operations. yes, the whole family. we have nine siblings and they're all iconic π
the lineup, in order: ck_pr_sub_ptr, ck_pr_sub_double, ck_pr_sub_char, ck_pr_sub_uint, ck_pr_sub_int, ck_pr_sub_64, ck_pr_sub_32, ck_pr_sub_16, ck_pr_sub_8. memorize them, they're your new besties π«Ά
β¨ SYNOPSIS β¨
first, the vibe check β you gotta include the header:
#include <ck_pr.h>
then here's every single one of them, signatures exactly as they are, no notes:
void
ck_pr_sub_ptr(void *target, uintptr_t delta);
void
ck_pr_sub_double(double *target, double delta);
void
ck_pr_sub_char(char *target, char delta);
void
ck_pr_sub_uint(unsigned int *target, unsigned int delta);
void
ck_pr_sub_int(int *target, int delta);
void
ck_pr_sub_64(uint64_t *target, uint64_t delta);
void
ck_pr_sub_32(uint32_t *target, uint32_t delta);
void
ck_pr_sub_16(uint16_t *target, uint16_t delta);
void
ck_pr_sub_8(uint8_t *target, uint8_t delta);
πΈ DESCRIPTION πΈ
so here's the tea π the ck_pr_sub(3) family of functions atomically subtract the value specified by delta from the value pointed to by target.
that's it. that's the whole thing. no race conditions, no drama, just a subtraction that happens all at once like a main character entrance β¨
π« RETURN VALUES π«
ngl this family of functions does not have a return value. it's giving void. it does the thing and it leaves. no receipts, no follow-up text π
π SEE ALSO π
the whole friend group, fr fr:
ck_pr_fence_load(3)ck_pr_fence_load_depends(3)ck_pr_fence_store(3)ck_pr_fence_memory(3)ck_pr_load(3)ck_pr_store(3)ck_pr_fas(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_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/ π
okay that's the page!! this one's dated April 11, 2013, it's ck_pr_sub(3) from the Concurrency Kit crew, and yes you absolutely ate that read π
go subtract something atomically, bestie π¦π
π¦ 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