#ifndef _LINUX_RSEQ_H
#define _LINUX_RSEQ_H
#ifdef CONFIG_RSEQ
#include <linux/preempt.h>
#include <linux/sched.h>
enum rseq_event_mask_bits { … };
enum rseq_event_mask { … };
static inline void rseq_set_notify_resume(struct task_struct *t)
{ … }
void __rseq_handle_notify_resume(struct ksignal *sig, struct pt_regs *regs);
static inline void rseq_handle_notify_resume(struct ksignal *ksig,
struct pt_regs *regs)
{ … }
static inline void rseq_signal_deliver(struct ksignal *ksig,
struct pt_regs *regs)
{ … }
static inline void rseq_preempt(struct task_struct *t)
{ … }
static inline void rseq_migrate(struct task_struct *t)
{ … }
static inline void rseq_fork(struct task_struct *t, unsigned long clone_flags)
{ … }
static inline void rseq_execve(struct task_struct *t)
{ … }
#else
static inline void rseq_set_notify_resume(struct task_struct *t)
{
}
static inline void rseq_handle_notify_resume(struct ksignal *ksig,
struct pt_regs *regs)
{
}
static inline void rseq_signal_deliver(struct ksignal *ksig,
struct pt_regs *regs)
{
}
static inline void rseq_preempt(struct task_struct *t)
{
}
static inline void rseq_migrate(struct task_struct *t)
{
}
static inline void rseq_fork(struct task_struct *t, unsigned long clone_flags)
{
}
static inline void rseq_execve(struct task_struct *t)
{
}
#endif
#ifdef CONFIG_DEBUG_RSEQ
void rseq_syscall(struct pt_regs *regs);
#else
static inline void rseq_syscall(struct pt_regs *regs)
{
}
#endif
#endif