Rev 2090 | Rev 2093 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2090 | Rev 2092 | ||
---|---|---|---|
Line 33... | Line 33... | ||
33 | */ |
33 | */ |
34 | 34 | ||
35 | #ifndef KERN_TASK_H_ |
35 | #ifndef KERN_TASK_H_ |
36 | #define KERN_TASK_H_ |
36 | #define KERN_TASK_H_ |
37 | 37 | ||
- | 38 | #include <cpu.h> |
|
38 | #include <synch/spinlock.h> |
39 | #include <synch/spinlock.h> |
39 | #include <synch/mutex.h> |
40 | #include <synch/mutex.h> |
40 | #include <synch/rwlock.h> |
41 | #include <synch/rwlock.h> |
41 | #include <synch/futex.h> |
42 | #include <synch/futex.h> |
42 | #include <adt/btree.h> |
43 | #include <adt/btree.h> |
Line 131... | Line 132... | ||
131 | btree_t futexes; /**< B+tree of futexes referenced by this task. */ |
132 | btree_t futexes; /**< B+tree of futexes referenced by this task. */ |
132 | 133 | ||
133 | uint64_t cycles; /**< Accumulated accounting. */ |
134 | uint64_t cycles; /**< Accumulated accounting. */ |
134 | } task_t; |
135 | } task_t; |
135 | 136 | ||
136 | /** CPU structure. |
- | |
137 | * |
- | |
138 | * There is one structure like this for every processor. |
- | |
139 | */ |
- | |
140 | typedef struct { |
- | |
141 | SPINLOCK_DECLARE(lock); |
- | |
142 | - | ||
143 | tlb_shootdown_msg_t tlb_messages[TLB_MESSAGE_QUEUE_LEN]; |
- | |
144 | count_t tlb_messages_count; |
- | |
145 | - | ||
146 | context_t saved_context; |
- | |
147 | - | ||
148 | atomic_t nrdy; |
- | |
149 | runq_t rq[RQ_COUNT]; |
- | |
150 | volatile count_t needs_relink; |
- | |
151 | - | ||
152 | SPINLOCK_DECLARE(timeoutlock); |
- | |
153 | link_t timeout_active_head; |
- | |
154 | - | ||
155 | count_t missed_clock_ticks; /**< When system clock loses a tick, it is recorded here |
- | |
156 | so that clock() can react. This variable is |
- | |
157 | CPU-local and can be only accessed when interrupts |
- | |
158 | are disabled. */ |
- | |
159 | - | ||
160 | /** |
- | |
161 | * Processor ID assigned by kernel. |
- | |
162 | */ |
- | |
163 | unsigned int id; |
- | |
164 | - | ||
165 | int active; |
- | |
166 | int tlb_active; |
- | |
167 | - | ||
168 | uint16_t frequency_mhz; |
- | |
169 | uint32_t delay_loop_const; |
- | |
170 | - | ||
171 | cpu_arch_t arch; |
- | |
172 | - | ||
173 | struct thread *fpu_owner; |
- | |
174 | - | ||
175 | /** |
- | |
176 | * Stack used by scheduler when there is no running thread. |
- | |
177 | */ |
- | |
178 | uint8_t *stack; |
- | |
179 | } cpu_t; |
- | |
180 | - | ||
181 | typedef void (* timeout_handler_t)(void *arg); |
137 | typedef void (* timeout_handler_t)(void *arg); |
182 | 138 | ||
183 | typedef struct { |
139 | typedef struct { |
184 | SPINLOCK_DECLARE(lock); |
140 | SPINLOCK_DECLARE(lock); |
185 | 141 |