ck_queue: add CK_*_FOREACH_FROMThis is a variant of CK_*_FOREACH from FreeBSD queue.h which startsiteration at the specified item. If the item pointer is NULL, iterationstarts from the beginning
ck_queue: add CK_*_FOREACH_FROMThis is a variant of CK_*_FOREACH from FreeBSD queue.h which startsiteration at the specified item. If the item pointer is NULL, iterationstarts from the beginning of the list.Upstream commit 74366be35a6f4635f248a3c62d2d23245a4eb0f4.MFC after: 2 weeksSponsored by: Klara, Inc.
show more ...
Merge commit 'ce929fe84f9c453263af379f3b255ff8eca01d48'Import CK as of commit 2265c7846f4ce667f5216456afe2779b23c3e5f7.
ck: Correct asm output operand widths in amd64 pointer intrinsicsThis does not appear to change generated code with the defaulttoolchain. However, KMSAN makes use of output operand specifications
ck: Correct asm output operand widths in amd64 pointer intrinsicsThis does not appear to change generated code with the defaulttoolchain. However, KMSAN makes use of output operand specifications toinstrument inline asm, and with incorrect specifications we get falsepositives in code that uses the CK_(S)LIST macros.This was submitted upstream:https://github.com/concurrencykit/ck/pull/175The commit applies the same change locally to make KMSAN usable untilsomething equivalent is merged upstream.MFC after: 1 weekSponsored by: The FreeBSD Foundation
Remove FreeBSD/armv4 specific bits from CK.Now that armv4/v5 is gone, remove the bits that implemented atomic operationsby disabling interrupts.Those were specific to FreeBSD and never reached up
Remove FreeBSD/armv4 specific bits from CK.Now that armv4/v5 is gone, remove the bits that implemented atomic operationsby disabling interrupts.Those were specific to FreeBSD and never reached upstream.
Remove sparc64 kernel supportRemove all sparc64 specific filesRemove all sparc64 ifdefsRemovee indireeect sparc64 ifdefs
Import CK as of 21d3e319407d19dece16ee317c757ffc54a452bc, which makes itssparcv9 atomics compatible with the FreeBSD kernel by using instructionswhich access the appropriate address space.Atomic o
Import CK as of 21d3e319407d19dece16ee317c757ffc54a452bc, which makes itssparcv9 atomics compatible with the FreeBSD kernel by using instructionswhich access the appropriate address space.Atomic operations within the kernel must access the nucleus address spaceinstead of the default primary one. Without this change but the increaseduse of CK in the kernel, machines started to panic after some minutes ofuptime due to an unresolvable fault in ck_pr_cas_64_value().
Import CK as of commit 08813496570879fbcc2adcdd9ddc0a054361bfde, mostlyto avoid using lwsync on ppc32.
MFV CK@r336629: Import CK as of commit 1c1f9901c2dea7a883342cd03d3906a1bc482583This adds CK_SLIST_INSERT_PREVPTR and CK_SLIST_REMOVE_PREVPTR macrosas well as ck_pr_dec_is_zero family of functions.
MFV CK@r336629: Import CK as of commit 1c1f9901c2dea7a883342cd03d3906a1bc482583This adds CK_SLIST_INSERT_PREVPTR and CK_SLIST_REMOVE_PREVPTR macrosas well as ck_pr_dec_is_zero family of functions.MFC after: 3 weeks
Import CK as of commit 0f017230ccc86929f56bf44ef2dca93d7df8076b.This brings us the renaming of fields in ck_queue, so that our ownLIST/SLIST/TAILQ/etc won't accidentally work with them.
ck: add support for executing callbacks outside of main poll loopPull in change from upstream deca119d14bfffd440770eb67cbdbeaf7b57eb7b| ck_epoch: introduce ck_epoch_deferred|| Allow for d
ck: add support for executing callbacks outside of main poll loopPull in change from upstream deca119d14bfffd440770eb67cbdbeaf7b57eb7b| ck_epoch: introduce ck_epoch_deferred|| Allow for deferral to occur outside epoch poll critical loop (which may access per-CPU structures).|Approved by: sbruno
Import CK as of commit b19ed4c6a56ec93215ab567ba18ba61bf1cfbac8It should fix ck_pr_[load|store]_ptr on mips and riscv, make sure no*fence instructions are used on i386, as older cpus don't support
Import CK as of commit b19ed4c6a56ec93215ab567ba18ba61bf1cfbac8It should fix ck_pr_[load|store]_ptr on mips and riscv, make sure no*fence instructions are used on i386, as older cpus don't support it, andmake sure we don't rely on gcc builtins that can lead to calls tolibatomic when linked with -O0.MFC after: 1 week
Define CK_MD_TSO for the relevant arches (i386, amd64 and sparc64).Defaulting to CK_MD_RMO has the unfortunate side effect of generatingmemory barriers that are useless on those arches, and the eve
Define CK_MD_TSO for the relevant arches (i386, amd64 and sparc64).Defaulting to CK_MD_RMO has the unfortunate side effect of generatingmemory barriers that are useless on those arches, and the even moreunfortunate side effect of generating lfence/sfence/mfence on i386, evenif older CPUs don't support it.This should fix the panic reported when using IPFW on a Pentium 3.Note that mfence and sfence might still be used in a few case, but thatshouldn't happen in FreeBSD right now, and should be fixed upstream first.MFC after: 1 week
Import CK as of commit 6b141c0bdd21ce8b3e14147af8f87f22b20ecf32This brings us changes we needed in ck_epoch.
Merge CK as of commit 24d26965d1a28039062ba3bcf9433b623f3d2c5e, to geta fix in ck_epoch.
Merge CK as of commit 255a47553aa5e8d0bb5f8eec63acac7f4c25a6d8, mostlyto make sure we don't use any FP instruction.
Add FreeBSD-specific files.
Import Concurrency Kit in the kernel.CK is a toolkit providing different lockfree algorithms/data structures.More information can be found here : www.concurrencykit.org