From 27fb1bc00f1c291e364816f37f746d2ed543f008 Mon Sep 17 00:00:00 2001 From: Olivier Houchard Date: Sun, 20 Sep 2015 21:22:30 +0200 Subject: [PATCH] ck: Reimplement a few libc headers, to make CK build when compiling in the FreeBSD kernel. --- include/ck_array.h | 4 ++-- include/ck_bitmap.h | 8 +++++--- include/ck_brlock.h | 4 ++-- include/ck_bytelock.h | 4 ++-- include/ck_cohort.h | 2 +- include/ck_elide.h | 2 +- include/ck_epoch.h | 2 +- include/ck_fifo.h | 2 +- include/ck_hp_fifo.h | 2 +- include/ck_hp_stack.h | 2 +- include/ck_hs.h | 4 ++-- include/ck_ht.h | 4 ++-- include/ck_limits.h | 3 +++ include/ck_malloc.h | 2 +- include/ck_pr.h | 2 +- include/ck_rhs.h | 4 ++-- include/ck_ring.h | 4 ++-- include/ck_rwcohort.h | 2 +- include/ck_rwlock.h | 4 ++-- include/ck_sequence.h | 2 +- include/ck_stack.h | 4 ++-- include/ck_stdbool.h | 31 +++++++++++++++++++++++++++++++ include/ck_stddef.h | 31 +++++++++++++++++++++++++++++++ include/ck_stdint.h | 2 ++ include/ck_stdlib.h | 31 +++++++++++++++++++++++++++++++ include/ck_string.h | 31 +++++++++++++++++++++++++++++++ include/ck_swlock.h | 4 ++-- include/gcc/x86/ck_pr.h | 1 - include/gcc/x86_64/ck_pr.h | 1 - include/spinlock/anderson.h | 2 +- include/spinlock/cas.h | 2 +- include/spinlock/clh.h | 4 ++-- include/spinlock/dec.h | 2 +- include/spinlock/fas.h | 2 +- include/spinlock/hclh.h | 4 ++-- include/spinlock/mcs.h | 4 ++-- include/spinlock/ticket.h | 2 +- src/ck_array.c | 4 ++-- src/ck_barrier_mcs.c | 2 +- src/ck_epoch.c | 2 +- src/ck_hp.c | 8 ++++---- src/ck_hs.c | 4 ++-- src/ck_ht.c | 4 ++-- src/ck_ht_hash.h | 2 +- src/ck_rhs.c | 4 ++-- 45 files changed, 190 insertions(+), 61 deletions(-) create mode 100644 include/ck_stdbool.h create mode 100644 include/ck_stddef.h create mode 100644 include/ck_stdlib.h create mode 100644 include/ck_string.h diff --git a/include/ck_array.h b/include/ck_array.h index 6f901ea..9cb97b2 100644 --- a/include/ck_array.h +++ b/include/ck_array.h @@ -31,8 +31,8 @@ #include #include #include -#include -#include +#include +#include struct _ck_array { unsigned int n_committed; diff --git a/include/ck_bitmap.h b/include/ck_bitmap.h index b4259f1..f57e2f2 100644 --- a/include/ck_bitmap.h +++ b/include/ck_bitmap.h @@ -33,9 +33,11 @@ #include #include #include -#include -#include -#include +#include +#include +#include +#include +#include #if !defined(CK_F_PR_LOAD_UINT) || !defined(CK_F_PR_STORE_UINT) || \ !defined(CK_F_PR_AND_UINT) || !defined(CK_F_PR_OR_UINT) || \ diff --git a/include/ck_brlock.h b/include/ck_brlock.h index 2a5200c..d1b4ed1 100644 --- a/include/ck_brlock.h +++ b/include/ck_brlock.h @@ -41,8 +41,8 @@ */ #include -#include -#include +#include +#include struct ck_brlock_reader { unsigned int n_readers; diff --git a/include/ck_bytelock.h b/include/ck_bytelock.h index c9e3687..d437316 100644 --- a/include/ck_bytelock.h +++ b/include/ck_bytelock.h @@ -38,8 +38,8 @@ #include #include #include -#include -#include +#include +#include #include struct ck_bytelock { diff --git a/include/ck_cohort.h b/include/ck_cohort.h index 7a7a136..c13cfa0 100644 --- a/include/ck_cohort.h +++ b/include/ck_cohort.h @@ -36,7 +36,7 @@ #include #include -#include +#include enum ck_cohort_state { CK_COHORT_STATE_GLOBAL = 0, diff --git a/include/ck_elide.h b/include/ck_elide.h index 071587b..1b90041 100644 --- a/include/ck_elide.h +++ b/include/ck_elide.h @@ -35,7 +35,7 @@ #include #include -#include +#include /* * skip_-prefixed counters represent the number of consecutive diff --git a/include/ck_epoch.h b/include/ck_epoch.h index 1839c71..6c6fffd 100644 --- a/include/ck_epoch.h +++ b/include/ck_epoch.h @@ -37,7 +37,7 @@ #include #include #include -#include +#include #ifndef CK_EPOCH_LENGTH #define CK_EPOCH_LENGTH 4 diff --git a/include/ck_fifo.h b/include/ck_fifo.h index 6c4dbd1..6d50070 100644 --- a/include/ck_fifo.h +++ b/include/ck_fifo.h @@ -32,7 +32,7 @@ #include #include #include -#include +#include #ifndef CK_F_FIFO_SPSC #define CK_F_FIFO_SPSC diff --git a/include/ck_hp_fifo.h b/include/ck_hp_fifo.h index c53779f..fd78ae6 100644 --- a/include/ck_hp_fifo.h +++ b/include/ck_hp_fifo.h @@ -31,7 +31,7 @@ #include #include #include -#include +#include #define CK_HP_FIFO_SLOTS_COUNT (2) #define CK_HP_FIFO_SLOTS_SIZE (sizeof(void *) * CK_HP_FIFO_SLOTS_COUNT) diff --git a/include/ck_hp_stack.h b/include/ck_hp_stack.h index 06cec16..fb5a1e3 100644 --- a/include/ck_hp_stack.h +++ b/include/ck_hp_stack.h @@ -31,7 +31,7 @@ #include #include #include -#include +#include #define CK_HP_STACK_SLOTS_COUNT 1 #define CK_HP_STACK_SLOTS_SIZE sizeof(void *) diff --git a/include/ck_hs.h b/include/ck_hs.h index eeaf428..b3eb046 100644 --- a/include/ck_hs.h +++ b/include/ck_hs.h @@ -32,8 +32,8 @@ #include #include #include -#include -#include +#include +#include /* * Indicates a single-writer many-reader workload. Mutually diff --git a/include/ck_ht.h b/include/ck_ht.h index bc79df8..d9d3404 100644 --- a/include/ck_ht.h +++ b/include/ck_ht.h @@ -51,8 +51,8 @@ #include #include #include -#include -#include +#include +#include struct ck_ht_hash { uint64_t value; diff --git a/include/ck_limits.h b/include/ck_limits.h index 382b296..c874955 100644 --- a/include/ck_limits.h +++ b/include/ck_limits.h @@ -40,6 +40,9 @@ #define UINT64_MAX ULLONG_MAX #endif +#elif defined(__FreeBSD__) && defined(_KERNEL) +#include +#include #else #include #endif /* __linux__ && __KERNEL__ */ diff --git a/include/ck_malloc.h b/include/ck_malloc.h index eaf4c97..e14dde3 100644 --- a/include/ck_malloc.h +++ b/include/ck_malloc.h @@ -27,7 +27,7 @@ #ifndef CK_MALLOC_H #define CK_MALLOC_H -#include +#include #include struct ck_malloc { diff --git a/include/ck_pr.h b/include/ck_pr.h index 5cdc3c3..d688bc5 100644 --- a/include/ck_pr.h +++ b/include/ck_pr.h @@ -32,7 +32,7 @@ #include #include #include -#include +#include #ifndef CK_USE_CC_BUILTINS #if defined(__x86_64__) diff --git a/include/ck_rhs.h b/include/ck_rhs.h index d5b5ab3..2a21a73 100644 --- a/include/ck_rhs.h +++ b/include/ck_rhs.h @@ -32,8 +32,8 @@ #include #include #include -#include -#include +#include +#include /* * Indicates a single-writer many-reader workload. Mutually diff --git a/include/ck_ring.h b/include/ck_ring.h index f165dd4..48f347e 100644 --- a/include/ck_ring.h +++ b/include/ck_ring.h @@ -30,8 +30,8 @@ #include #include #include -#include -#include +#include +#include /* * Concurrent ring buffer. diff --git a/include/ck_rwcohort.h b/include/ck_rwcohort.h index eb6d14b..7519b5d 100644 --- a/include/ck_rwcohort.h +++ b/include/ck_rwcohort.h @@ -36,7 +36,7 @@ #include #include -#include +#include #include #define CK_RWCOHORT_WP_NAME(N) ck_rwcohort_wp_##N diff --git a/include/ck_rwlock.h b/include/ck_rwlock.h index ea05d03..b82b4b5 100644 --- a/include/ck_rwlock.h +++ b/include/ck_rwlock.h @@ -29,8 +29,8 @@ #include #include -#include -#include +#include +#include struct ck_rwlock { unsigned int writer; diff --git a/include/ck_sequence.h b/include/ck_sequence.h index 2aa0184..6a482b9 100644 --- a/include/ck_sequence.h +++ b/include/ck_sequence.h @@ -29,7 +29,7 @@ #include #include -#include +#include struct ck_sequence { unsigned int sequence; diff --git a/include/ck_stack.h b/include/ck_stack.h index a7f11de..eb2b685 100644 --- a/include/ck_stack.h +++ b/include/ck_stack.h @@ -29,8 +29,8 @@ #include #include -#include -#include +#include +#include struct ck_stack_entry { struct ck_stack_entry *next; diff --git a/include/ck_stdbool.h b/include/ck_stdbool.h new file mode 100644 index 0000000..b9a7982 --- /dev/null +++ b/include/ck_stdbool.h @@ -0,0 +1,31 @@ +/* + * Copyright 2015 Olivier Houchard. + * 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. + */ + +#if defined(__FreeBSD__) && defined(_KERNEL) +#include +#else +#include +#endif diff --git a/include/ck_stddef.h b/include/ck_stddef.h new file mode 100644 index 0000000..6019ea9 --- /dev/null +++ b/include/ck_stddef.h @@ -0,0 +1,31 @@ +/* + * Copyright 2015 Olivier Houchard. + * 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. + */ + +#if defined(__FreeBSD__) && defined(_KERNEL) +#include +#else +#include +#endif diff --git a/include/ck_stdint.h b/include/ck_stdint.h index 92273bc..8f416a9 100644 --- a/include/ck_stdint.h +++ b/include/ck_stdint.h @@ -27,6 +27,8 @@ #if defined(__linux__) && defined(__KERNEL__) #include #include +#elif defined(__FreeBSD__) && defined(_KERNEL) +#include #else #include #endif /* __linux__ && __KERNEL__ */ diff --git a/include/ck_stdlib.h b/include/ck_stdlib.h new file mode 100644 index 0000000..c1ac69b --- /dev/null +++ b/include/ck_stdlib.h @@ -0,0 +1,31 @@ +/* + * Copyright 2015 Olivier Houchard. + * 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. + */ + +#if defined(__FreeBSD__) && defined(_KERNEL) +#include +#else +#include +#endif diff --git a/include/ck_string.h b/include/ck_string.h new file mode 100644 index 0000000..8d2c252 --- /dev/null +++ b/include/ck_string.h @@ -0,0 +1,31 @@ +/* + * Copyright 2015 Olivier Houchard. + * 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. + */ + +#if defined(__FreeBSD__) && defined(_KERNEL) +#include +#else +#include +#endif diff --git a/include/ck_swlock.h b/include/ck_swlock.h index 8f8c67c..ad6d3a0 100644 --- a/include/ck_swlock.h +++ b/include/ck_swlock.h @@ -31,8 +31,8 @@ #include #include #include -#include -#include +#include +#include struct ck_swlock { uint32_t value; diff --git a/include/gcc/x86/ck_pr.h b/include/gcc/x86/ck_pr.h index c28381d..d3112e2 100644 --- a/include/gcc/x86/ck_pr.h +++ b/include/gcc/x86/ck_pr.h @@ -35,7 +35,6 @@ #include #include #include -#include /* * The following represent supported atomic operations. diff --git a/include/gcc/x86_64/ck_pr.h b/include/gcc/x86_64/ck_pr.h index 852a0a5..0e966e5 100644 --- a/include/gcc/x86_64/ck_pr.h +++ b/include/gcc/x86_64/ck_pr.h @@ -34,7 +34,6 @@ #include #include #include -#include /* * The following represent supported atomic operations. diff --git a/include/spinlock/anderson.h b/include/spinlock/anderson.h index 49f349f..bebc5d8 100644 --- a/include/spinlock/anderson.h +++ b/include/spinlock/anderson.h @@ -31,7 +31,7 @@ #include #include #include -#include +#include #ifndef CK_F_SPINLOCK_ANDERSON #define CK_F_SPINLOCK_ANDERSON diff --git a/include/spinlock/cas.h b/include/spinlock/cas.h index 8d07f6e..ff6d723 100644 --- a/include/spinlock/cas.h +++ b/include/spinlock/cas.h @@ -31,7 +31,7 @@ #include #include #include -#include +#include #ifndef CK_F_SPINLOCK_CAS #define CK_F_SPINLOCK_CAS diff --git a/include/spinlock/clh.h b/include/spinlock/clh.h index 1a3067c..1133806 100644 --- a/include/spinlock/clh.h +++ b/include/spinlock/clh.h @@ -30,8 +30,8 @@ #include #include #include -#include -#include +#include +#include #ifndef CK_F_SPINLOCK_CLH #define CK_F_SPINLOCK_CLH diff --git a/include/spinlock/dec.h b/include/spinlock/dec.h index 1a5ed51..11d36dd 100644 --- a/include/spinlock/dec.h +++ b/include/spinlock/dec.h @@ -31,7 +31,7 @@ #include #include #include -#include +#include #ifndef CK_F_SPINLOCK_DEC #define CK_F_SPINLOCK_DEC diff --git a/include/spinlock/fas.h b/include/spinlock/fas.h index 184cdef..4e6c123 100644 --- a/include/spinlock/fas.h +++ b/include/spinlock/fas.h @@ -31,7 +31,7 @@ #include #include #include -#include +#include #ifndef CK_F_SPINLOCK_FAS #define CK_F_SPINLOCK_FAS diff --git a/include/spinlock/hclh.h b/include/spinlock/hclh.h index ad6ef16..296448b 100644 --- a/include/spinlock/hclh.h +++ b/include/spinlock/hclh.h @@ -30,8 +30,8 @@ #include #include -#include -#include +#include +#include #ifndef CK_F_SPINLOCK_HCLH #define CK_F_SPINLOCK_HCLH diff --git a/include/spinlock/mcs.h b/include/spinlock/mcs.h index bc92e6e..262c720 100644 --- a/include/spinlock/mcs.h +++ b/include/spinlock/mcs.h @@ -29,8 +29,8 @@ #include #include -#include -#include +#include +#include #ifndef CK_F_SPINLOCK_MCS #define CK_F_SPINLOCK_MCS diff --git a/include/spinlock/ticket.h b/include/spinlock/ticket.h index 569a78d..3358547 100644 --- a/include/spinlock/ticket.h +++ b/include/spinlock/ticket.h @@ -32,7 +32,7 @@ #include #include #include -#include +#include #ifndef CK_F_SPINLOCK_TICKET #define CK_F_SPINLOCK_TICKET diff --git a/src/ck_array.c b/src/ck_array.c index 2caefd3..35b2502 100644 --- a/src/ck_array.c +++ b/src/ck_array.c @@ -28,8 +28,8 @@ #include #include #include -#include -#include +#include +#include static struct _ck_array * ck_array_create(struct ck_malloc *allocator, unsigned int length) diff --git a/src/ck_barrier_mcs.c b/src/ck_barrier_mcs.c index 3b1add6..cf06017 100644 --- a/src/ck_barrier_mcs.c +++ b/src/ck_barrier_mcs.c @@ -28,7 +28,7 @@ #include #include #include -#include +#include void ck_barrier_mcs_init(struct ck_barrier_mcs *barrier, unsigned int nthr) diff --git a/src/ck_epoch.c b/src/ck_epoch.c index e241a38..78723da 100644 --- a/src/ck_epoch.c +++ b/src/ck_epoch.c @@ -35,7 +35,7 @@ #include #include #include -#include +#include /* * Only three distinct values are used for reclamation, but reclamation occurs diff --git a/src/ck_hp.c b/src/ck_hp.c index 6d87dd9..32df92e 100644 --- a/src/ck_hp.c +++ b/src/ck_hp.c @@ -56,10 +56,10 @@ #include #include #include -#include -#include -#include -#include +#include +#include +#include +#include CK_STACK_CONTAINER(struct ck_hp_record, global_entry, ck_hp_record_container) CK_STACK_CONTAINER(struct ck_hp_hazard, pending_entry, ck_hp_hazard_container) diff --git a/src/ck_hs.c b/src/ck_hs.c index 6489d26..31510ec 100644 --- a/src/ck_hs.c +++ b/src/ck_hs.c @@ -30,8 +30,8 @@ #include #include #include -#include -#include +#include +#include #include "ck_internal.h" diff --git a/src/ck_ht.c b/src/ck_ht.c index 88c7117..fdbfdcc 100644 --- a/src/ck_ht.c +++ b/src/ck_ht.c @@ -38,8 +38,8 @@ #include #include #include -#include -#include +#include +#include #include "ck_ht_hash.h" #include "ck_internal.h" diff --git a/src/ck_ht_hash.h b/src/ck_ht_hash.h index 61b51ca..cd3d7a5 100644 --- a/src/ck_ht_hash.h +++ b/src/ck_ht_hash.h @@ -32,7 +32,7 @@ */ #include -#include +#include //----------------------------------------------------------------------------- // MurmurHash3 was written by Austin Appleby, and is placed in the public diff --git a/src/ck_rhs.c b/src/ck_rhs.c index f1b9a55..38304f4 100644 --- a/src/ck_rhs.c +++ b/src/ck_rhs.c @@ -31,8 +31,8 @@ #include #include #include -#include -#include +#include +#include #include "ck_internal.h"