blob: 6cd49028d56242ec517c0943105c5278678b554b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
/** @file task.H
* @brief Defines kernel information about tasks.
*/
#ifndef __KERNEL_TASK_H
#define __KERNEL_TASK_H
#include <kernel/types.h>
/** @struct context_t
* @brief Defines the save-restore context for the task.
*
* See PowerISA for information on registers listed.
*/
struct context_t
{
void* stack_ptr;
void* nip;
uint64_t gprs[32];
uint64_t lr;
uint64_t cr;
uint64_t ctr;
uint64_t xer;
};
/** @struct task_t
* @brief The kernel-level task structure.
*/
struct task_t
{
/** Pointer to the CPU this task is assigned to. */
cpu_t* cpu;
/** Context information. This MUST stay here due to
* save-restore asm code. */
context_t context;
/** Task ID */
tid_t tid;
/** Determines if user-space would like this task pinned to a CPU.
* This value is considered a count of the number of times the pinned
* as been requested, so pinning can be used recursively. */
uint64_t affinity_pinned;
// Pointers for queue containers.
task_t* prev;
task_t* next;
};
enum { TASK_DEFAULT_STACK_SIZE = 4 };
#endif
|