orca-software
kernel.h
Go to the documentation of this file.
1 #ifndef _KERNEL_H
2 #define _KERNEL_H
3 
20 /* task status definitions */
21 #define TASK_IDLE 0
22 #define TASK_READY 1
23 #define TASK_RUNNING 2
24 #define TASK_BLOCKED 3
25 #define TASK_DELAYED 4
26 #define TASK_WAITING 5
31 struct tcb_entry {
32  uint16_t id;
33  int8_t name[20];
34  uint8_t state;
35  uint8_t priority;
36  uint8_t priority_rem;
37  uint8_t critical;
38  uint32_t delay;
39  uint32_t rtjobs;
40  uint32_t bgjobs;
41  uint32_t deadline_misses;
42  uint16_t period;
43  uint16_t capacity;
44  uint16_t deadline;
45  uint16_t capacity_rem;
46  uint16_t deadline_rem;
47  context task_context;
48  void (*ptask)(void);
49  size_t *pstack;
50  uint32_t stack_size;
51  void *other_data;
52 };
53 
54 struct pcb_entry {
55  int32_t (*sched_rt)();
56  int32_t (*sched_be)();
57  uint32_t coop_cswitch;
58  uint32_t preempt_cswitch;
59  uint32_t interrupts;
60  uint32_t tick_time;
61  /* much more stuff should be here! */
62 };
63 
67 //struct tcb_entry krnl_tcb[MAX_TASKS];
68 //struct pcb_entry krnl_pcb;
69 
70 
71 //struct tcb_entry *krnl_task; /*!< pointer to a task control block entry */
72 //uint16_t krnl_tasks; /*!< number of tasks in the system */
73 //uint16_t krnl_current_task; /*!< the current running task id */
74 //uint16_t krnl_schedule; /*!< scheduler enable / disable flag */
75 //struct queue *krnl_run_queue; /*!< pointer to a queue of best effort tasks */
76 //struct queue *krnl_delay_queue; /*!< pointer to a queue of delayed tasks */
77 //struct queue *krnl_rt_queue; /*!< pointer to a queue of real time tasks */
78 //struct queue *krnl_event_queue; /*!< pointer to a queue of tasks waiting for an event */
79 //uint8_t krnl_heap[HEAP_SIZE]; /*!< contiguous heap memory area to be used as a memory pool. the memory allocator (malloc() and free()) controls this data structure */
80 //uint32_t krnl_free; /*!< amount of free heap memory, in bytes */
81 
82 extern struct tcb_entry krnl_tcb[MAX_TASKS];
83 extern struct pcb_entry krnl_pcb;
84 
85 extern struct tcb_entry *krnl_task;
86 extern uint16_t krnl_tasks;
87 extern uint16_t krnl_current_task;
88 extern uint16_t krnl_schedule;
89 extern struct queue *krnl_run_queue;
90 extern struct queue *krnl_delay_queue;
91 extern struct queue *krnl_rt_queue;
92 extern struct queue *krnl_event_queue;
93 extern uint8_t krnl_heap[HEAP_SIZE];
94 extern uint32_t krnl_free;
96 #endif
struct queue * krnl_run_queue
Definition: kernel.c:15
int32_t(* sched_be)()
Definition: kernel.h:56
void * other_data
Definition: kernel.h:51
context task_context
Definition: kernel.h:47
uint32_t krnl_free
Definition: kernel.c:20
uint8_t priority
Definition: kernel.h:35
uint32_t tick_time
Definition: kernel.h:60
struct tcb_entry krnl_tcb[MAX_TASKS]
The task control block and processor control block.
Definition: kernel.c:8
Definition: kernel.h:54
uint16_t deadline_rem
Definition: kernel.h:46
Queue data structure.
Definition: queue.h:7
uint16_t period
Definition: kernel.h:42
uint8_t state
Definition: kernel.h:34
struct tcb_entry * krnl_task
Definition: kernel.c:11
struct queue * krnl_delay_queue
Definition: kernel.c:16
uint8_t priority_rem
Definition: kernel.h:36
Task control block (TCB) and processor control block (PCB) entry data structures. ...
Definition: kernel.h:31
uint32_t preempt_cswitch
Definition: kernel.h:58
uint32_t rtjobs
Definition: kernel.h:39
uint16_t id
Definition: kernel.h:32
int32_t(* sched_rt)()
Definition: kernel.h:55
uint32_t bgjobs
Definition: kernel.h:40
uint32_t stack_size
Definition: kernel.h:50
uint16_t krnl_current_task
Definition: kernel.c:13
uint8_t krnl_heap[HEAP_SIZE]
Definition: kernel.c:19
uint16_t capacity_rem
Definition: kernel.h:45
size_t * pstack
Definition: kernel.h:49
struct queue * krnl_rt_queue
Definition: kernel.c:17
uint16_t krnl_tasks
Definition: kernel.c:12
uint32_t coop_cswitch
Definition: kernel.h:57
uint8_t critical
Definition: kernel.h:37
uint16_t deadline
Definition: kernel.h:44
uint32_t deadline_misses
Definition: kernel.h:41
uint32_t delay
Definition: kernel.h:38
uint16_t krnl_schedule
Definition: kernel.c:14
uint32_t interrupts
Definition: kernel.h:59
struct queue * krnl_event_queue
Definition: kernel.c:18
uint16_t capacity
Definition: kernel.h:43