/* * This program is used to generate definitions needed by * assembly language modules. * * We use the technique used in the OSF Mach kernel code: * generate asm statements containing #defines, * compile this file to assembler, and then extract the * #defines from the assembly-language output. */ #include <linux/stddef.h> #include <linux/sched.h> #include <linux/kernel_stat.h> #include <linux/ptrace.h> #include <linux/hardirq.h> #include <asm/irq.h> #include <asm/errno.h> #define DEFINE(sym, val) \ asm volatile("\n->" #sym " %0 " #val : : "i" (val)) #define BLANK() asm volatile("\n->" : : ) int main (void) { /* offsets into the task struct */ DEFINE (TASK_STATE, offsetof (struct task_struct, state)); DEFINE (TASK_FLAGS, offsetof (struct task_struct, flags)); DEFINE (TASK_PTRACE, offsetof (struct task_struct, ptrace)); DEFINE (TASK_BLOCKED, offsetof (struct task_struct, blocked)); DEFINE (TASK_THREAD, offsetof (struct task_struct, thread)); DEFINE (TASK_THREAD_INFO, offsetof (struct task_struct, thread_info)); DEFINE (TASK_MM, offsetof (struct task_struct, mm)); DEFINE (TASK_ACTIVE_MM, offsetof (struct task_struct, active_mm)); DEFINE (TASK_PID, offsetof (struct task_struct, pid)); /* offsets into the kernel_stat struct */ DEFINE (STAT_IRQ, offsetof (struct kernel_stat, irqs)); /* signal defines */ DEFINE (SIGSEGV, SIGSEGV); DEFINE (SEGV_MAPERR, SEGV_MAPERR); DEFINE (SIGTRAP, SIGTRAP); DEFINE (SIGCHLD, SIGCHLD); DEFINE (SIGILL, SIGILL); DEFINE (TRAP_TRACE, TRAP_TRACE); /* ptrace flag bits */ DEFINE (PT_PTRACED, PT_PTRACED); DEFINE (PT_DTRACE, PT_DTRACE); /* error values */ DEFINE (ENOSYS, ENOSYS); /* clone flag bits */ DEFINE (CLONE_VFORK, CLONE_VFORK); DEFINE (CLONE_VM, CLONE_VM); return 0; }