1
2
3
4
5
6
7
8
9
10
11
12
13#include <linux/sched.h>
14
15
16#define DEFINE(sym, val) \
17 asm volatile("\n->" #sym " %0 " #val : : "i" (val))
18
19#define BLANK() asm volatile("\n->" : : )
20
21int foo(void)
22{
23 DEFINE(AOFF_task_thread, offsetof(struct task_struct, thread));
24 BLANK();
25
26 DEFINE(AOFF_task_pid, offsetof(struct task_struct, pid));
27 DEFINE(AOFF_task_uid, offsetof(struct task_struct, uid));
28 DEFINE(AOFF_task_gid, offsetof(struct task_struct, gid));
29 DEFINE(AOFF_task_euid, offsetof(struct task_struct, euid));
30 DEFINE(AOFF_task_egid, offsetof(struct task_struct, egid));
31
32 DEFINE(ASIZ_task_uid, sizeof(current->uid));
33 DEFINE(ASIZ_task_gid, sizeof(current->gid));
34 DEFINE(ASIZ_task_euid, sizeof(current->euid));
35 DEFINE(ASIZ_task_egid, sizeof(current->egid));
36 BLANK();
37 DEFINE(AOFF_thread_fork_kpsr,
38 offsetof(struct thread_struct, fork_kpsr));
39 BLANK();
40 DEFINE(AOFF_mm_context, offsetof(struct mm_struct, context));
41
42
43 return 0;
44}
45