Various parts of the kernel API didn't need to exist before, so add them: - spin_trylock() - DECLARE_FLEX_ARRAY - vmalloc - __vmalloc_node - kvmalloc - kvfree_rcu_mightsleep Signed-off-by: Matthew Wilcox (Oracle) <willy@xxxxxxxxxxxxx> --- tools/include/linux/compiler.h | 4 ++++ tools/include/linux/compiler_types.h | 2 ++ tools/include/linux/spinlock.h | 2 ++ tools/include/linux/stddef.h | 3 +++ tools/testing/radix-tree/linux/kernel.h | 2 ++ tools/testing/radix-tree/linux/vmalloc.h | 14 ++++++++++++++ 6 files changed, 27 insertions(+) create mode 100644 tools/include/linux/stddef.h create mode 100644 tools/testing/radix-tree/linux/vmalloc.h diff --git a/tools/include/linux/compiler.h b/tools/include/linux/compiler.h index 8a63a9913495..936b5153b0fe 100644 --- a/tools/include/linux/compiler.h +++ b/tools/include/linux/compiler.h @@ -62,6 +62,10 @@ #define __nocf_check __attribute__((nocf_check)) #endif +#ifndef __refdata +#define __refdata +#endif + /* Are two types/vars the same type (ignoring qualifiers)? */ #ifndef __same_type # define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b)) diff --git a/tools/include/linux/compiler_types.h b/tools/include/linux/compiler_types.h index d09f9dc172a4..18bd8767cebc 100644 --- a/tools/include/linux/compiler_types.h +++ b/tools/include/linux/compiler_types.h @@ -17,6 +17,7 @@ /* context/locking */ # define __must_hold(x) __attribute__((context(x,1,1))) # define __acquires(x) __attribute__((context(x,0,1))) +# define __cond_acquires(x) __attribute__((context(x,0,-1))) # define __releases(x) __attribute__((context(x,1,0))) # define __acquire(x) __context__(x,1) # define __release(x) __context__(x,-1) @@ -27,6 +28,7 @@ # define __acquires(x) # define __releases(x) # define __acquire(x) (void)0 +# define __cond_acquires(x) # define __release(x) (void)0 # define __cond_lock(x,c) (c) #endif /* __CHECKER__ */ diff --git a/tools/include/linux/spinlock.h b/tools/include/linux/spinlock.h index a6cdf25b6b9d..871a6a305b9d 100644 --- a/tools/include/linux/spinlock.h +++ b/tools/include/linux/spinlock.h @@ -20,6 +20,8 @@ #define spin_lock_irqsave(x, f) (void)f, pthread_mutex_lock(x) #define spin_unlock_irqrestore(x, f) (void)f, pthread_mutex_unlock(x) +#define spin_trylock(x) (pthread_mutex_trylock(x) == 0) + #define arch_spinlock_t pthread_mutex_t #define __ARCH_SPIN_LOCK_UNLOCKED PTHREAD_MUTEX_INITIALIZER diff --git a/tools/include/linux/stddef.h b/tools/include/linux/stddef.h new file mode 100644 index 000000000000..337f520eba1d --- /dev/null +++ b/tools/include/linux/stddef.h @@ -0,0 +1,3 @@ +#include <uapi/linux/stddef.h> + +#define DECLARE_FLEX_ARRAY(TYPE, NAME) __DECLARE_FLEX_ARRAY(TYPE, NAME) diff --git a/tools/testing/radix-tree/linux/kernel.h b/tools/testing/radix-tree/linux/kernel.h index c0a2bb785b92..72a95fd9708c 100644 --- a/tools/testing/radix-tree/linux/kernel.h +++ b/tools/testing/radix-tree/linux/kernel.h @@ -26,4 +26,6 @@ #define __must_hold(x) #define EXPORT_PER_CPU_SYMBOL_GPL(x) + +#define PAGE_SIZE 4096 #endif /* _KERNEL_H */ diff --git a/tools/testing/radix-tree/linux/vmalloc.h b/tools/testing/radix-tree/linux/vmalloc.h new file mode 100644 index 000000000000..2857c37472bb --- /dev/null +++ b/tools/testing/radix-tree/linux/vmalloc.h @@ -0,0 +1,14 @@ +#include <malloc.h> + +#define vmalloc(x) malloc(x) +#define __vmalloc_node(size, align, gfp, node, caller) memalign(size, align) +#define vfree(x) free(x) + +#define kvmalloc(x, gfp) memalign(x, x) +#define kvfree(x) free(x) + +/* A correct but slow implementation */ +#define kvfree_rcu_mightsleep(x) { \ + synchronize_rcu(); \ + free(x); \ +} -- 2.43.0