Version:
~ [ 0.6-2.3.46 ] ~
Architecture:
~ [ um ] ~
** Warning: Cannot open xref database.
1 #ifndef __UM_PROCESSOR_H
2 #define __UM_PROCESSOR_H
3
4 struct pt_regs;
5
6 struct task_struct;
7
8 #include "asm/segment.h"
9 #include "asm/ptrace.h"
10 #include "asm/arch/signal.h"
11
12 struct mm_struct;
13
14 #define current_text_addr() (0L)
15
16 struct pending_sig {
17 int signal;
18 unsigned long handler;
19 };
20
21 struct thread_struct {
22 int extern_pid;
23 int tracing;
24 int want_tracing;
25 int forking;
26 unsigned long kernel_stack;
27 struct mm_struct *real_mm;
28 unsigned long forced_fault;
29 int block_sigs;
30 int starting_exec;
31 struct pending_sig signals[32];
32 int npending;
33 sigset_t saved_sigs;
34 int nsyscalls;
35 struct {
36 int id;
37 unsigned long args[5];
38 int have_result;
39 int result;
40 int again;
41 } syscall;
42 struct {
43 int op;
44 union {
45 struct {
46 unsigned long ip;
47 unsigned long sp;
48 } exec;
49 struct {
50 unsigned long regs[17];
51 struct task_struct *task;
52 unsigned long tramp_stack;
53 } fork;
54 struct {
55 struct task_struct *to;
56 struct task_struct *from;
57 } cswitch;
58 struct {
59 int (*proc)(void *);
60 void *arg;
61 int flags;
62 int new_pid;
63 struct task_struct *new_task;
64 int cpu;
65 } thread;
66 struct {
67 int op;
68 int fd;
69 void (*proc)(int);
70 int pid;
71 } input_request;
72 struct {
73 unsigned long stack;
74 unsigned long regs[17];
75 struct task_struct *from;
76 } fork_finish;
77 } u;
78 } request;
79 };
80
81 #define EMPTY_MM \
82 { NULL, NULL, NULL, NULL, { 0 }, { 0 }, 0, { { 0 }, 0, { { } } }, { }, 0, \
83 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
84 NULL }
85
86 #define INIT_MMAP \
87 { &init_mm, 0, 0, NULL, PAGE_SHARED, VM_READ | VM_WRITE | VM_EXEC, 1, NULL, \
88 NULL }
89
90 #define INIT_THREAD { -1, 0, 0, 0, 0, NULL, 0, 0, 0, \
91 { [ 0 ... 31 ] = { 0, 0 } }, 0, { { 0 } }, 0, \
92 { -1, { -1, -1, -1, -1, -1 }, 0, -1, 0 }, { 0 } }
93
94 #define THREAD_SIZE (2*PAGE_SIZE)
95
96 typedef struct {
97 unsigned long seg;
98 } mm_segment_t;
99
100 extern struct task_struct *alloc_task_struct(void);
101
102 #define free_task_struct(task) free_pages((unsigned long) task, 1)
103 #define get_task_struct(tsk) atomic_inc(&mem_map[MAP_NR(tsk)].count)
104
105 extern void release_thread(struct task_struct *);
106 extern int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags);
107
108 extern void copy_segments(struct task_struct *p, struct mm_struct * mm);
109 extern void release_segments(struct mm_struct * mm);
110
111 #define forget_segments() do ; while(0)
112
113 extern unsigned long thread_saved_pc(struct thread_struct *t);
114
115 /*
116 extern unsigned long init_task_ptr;
117
118 #define init_task_u (*((union task_union *) init_task_ptr))
119 */
120 #define init_task (init_task_union.task)
121 #define init_stack (init_task_union.stack)
122
123 /*
124 * User space process size: 3GB (default).
125 */
126 #define TASK_SIZE (0xc0000000)
127
128 /* This decides where the kernel will search for a free chunk of vm
129 * space during mmap's.
130 */
131 #define TASK_UNMAPPED_BASE (TASK_SIZE / 3)
132
133 extern void start_thread(struct pt_regs *regs, unsigned long entry,
134 unsigned long stack);
135
136 struct cpuinfo_um {
137 unsigned long loops_per_sec;
138 unsigned long *pgd_quick;
139 unsigned long *pte_quick;
140 unsigned long pgtable_cache_sz;
141 };
142
143 extern struct cpuinfo_um boot_cpu_data;
144
145 #ifdef __SMP__
146 extern struct cpuinfo_um cpu_data[];
147 #define current_cpu_data cpu_data[smp_processor_id()]
148 #else
149 #define cpu_data &boot_cpu_data
150 #define current_cpu_data boot_cpu_data
151 #endif
152
153 #define KSTK_EIP(tsk) (0)
154 #define KSTK_ESP(tsk) (0)
155 #define get_wchan(p) (0)
156
157 #endif
158
This page was automatically generated by the
LXR engine.
Visit the LXR main site for more
information.