#ifndef __KSU_H_SUCOMPAT #define __KSU_H_SUCOMPAT #include #include extern bool ksu_su_compat_enabled; void ksu_sucompat_init(void); void ksu_sucompat_exit(void); void ksu_sucompat_enable(void); void ksu_sucompat_disable(void); void ksu_mark_running_process(void); #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 10, 0) && defined(KSU_KPROBE_HOOK) #include static inline void ksu_set_task_tracepoint_flag(struct task_struct *t) { #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 11, 0) set_task_syscall_work(t, SYSCALL_TRACEPOINT); #else set_tsk_thread_flag(t, TIF_SYSCALL_TRACEPOINT); #endif } static inline void ksu_clear_task_tracepoint_flag(struct task_struct *t) { #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 11, 0) clear_task_syscall_work(t, SYSCALL_TRACEPOINT); #else clear_tsk_thread_flag(t, TIF_SYSCALL_TRACEPOINT); #endif } #else static inline void ksu_set_task_tracepoint_flag(struct task_struct *t) { return; } static inline void ksu_clear_task_tracepoint_flag(struct task_struct *t) { return; } #endif #endif