From 2f529f9b558ca1c1bd74be7437a84e4711743404 Mon Sep 17 00:00:00 2001 From: hc <hc@nodka.com> Date: Fri, 01 Nov 2024 02:11:33 +0000 Subject: [PATCH] add xenomai --- kernel/include/linux/thread_info.h | 66 +++++++++++++++++++++++++++++++++ 1 files changed, 66 insertions(+), 0 deletions(-) diff --git a/kernel/include/linux/thread_info.h b/kernel/include/linux/thread_info.h index f3040b0..83187b9 100644 --- a/kernel/include/linux/thread_info.h +++ b/kernel/include/linux/thread_info.h @@ -170,6 +170,72 @@ static inline void arch_setup_new_exec(void) { } #endif +#ifdef ti_local_flags +/* + * If the arch defines a set of per-thread synchronous flags, provide + * generic accessors to them. + */ +static __always_inline +void set_ti_local_flags(struct thread_info *ti, unsigned int mask) +{ + ti_local_flags(ti) |= mask; +} + +static __always_inline void set_thread_local_flags(unsigned int mask) +{ + set_ti_local_flags(current_thread_info(), mask); +} + +static __always_inline +int test_and_set_ti_local_flags(struct thread_info *ti, unsigned int mask) +{ + int old = ti_local_flags(ti) & mask; + ti_local_flags(ti) |= mask; + return old != 0; +} + +static __always_inline int test_and_set_thread_local_flags(unsigned int mask) +{ + return test_and_set_ti_local_flags(current_thread_info(), mask); +} + +static __always_inline +void clear_ti_local_flags(struct thread_info *ti, unsigned int mask) +{ + ti_local_flags(ti) &= ~mask; +} + +static __always_inline +int test_and_clear_ti_local_flags(struct thread_info *ti, unsigned int mask) +{ + int old = ti_local_flags(ti) & mask; + ti_local_flags(ti) &= ~mask; + return old != 0; +} + +static __always_inline int test_and_clear_thread_local_flags(unsigned int mask) +{ + return test_and_clear_ti_local_flags(current_thread_info(), mask); +} + +static __always_inline void clear_thread_local_flags(unsigned int mask) +{ + clear_ti_local_flags(current_thread_info(), mask); +} + +static __always_inline +bool test_ti_local_flags(struct thread_info *ti, unsigned int mask) +{ + return (ti_local_flags(ti) & mask) != 0; +} + +static __always_inline bool test_thread_local_flags(unsigned int mask) +{ + return test_ti_local_flags(current_thread_info(), mask); +} + +#endif /* ti_local_flags */ + #endif /* __KERNEL__ */ #endif /* _LINUX_THREAD_INFO_H */ -- Gitblit v1.6.2