version 1.3, 2007/11/20 16:07:23 |
version 1.4, 2007/11/23 13:37:43 |
|
|
#ifndef _SYS_KERN_SCHED_H |
#ifndef _SYS_KERN_SCHED_H |
#define _SYS_KERN_SCHED_H |
#define _SYS_KERN_SCHED_H |
#include <sys/types.h> |
#include <sys/types.h> |
|
#include <sys/pcb.h> |
|
|
/* |
/* |
* Task header is used by user to describe task in config.c. |
* u_task is used by user to describe task in config.c. |
* "user task". |
* "user task". |
*/ |
*/ |
struct u_task { |
struct u_task { |
|
|
}; |
}; |
|
|
|
|
#if 0 |
|
/* |
/* |
* Task PCB (process control block). |
|
* this is task's hardware context. |
|
*/ |
|
struct pcb __attribute__((packed)) { |
|
|
|
/* ARM general purpose registers */ |
|
uint32_t p_r0; |
|
|
|
} |
|
#endif /* 0 */ |
|
|
|
/* |
|
* Kernel sees each system task as struct k_task; |
* Kernel sees each system task as struct k_task; |
* it is used for scheduling and context switches. |
* it is used for scheduling and context switches. |
* "kernel task". |
* "kernel task". |
|
|
|
|
uint8_t kt_state; /* task state (running, blocked, etc.) */ |
uint8_t kt_state; /* task state (running, blocked, etc.) */ |
// uint32_t kt_timeo; /* timeout (in HZ) if task is blocked */ |
// uint32_t kt_timeo; /* timeout (in HZ) if task is blocked */ |
uint32_t kt_pcb[15]; /* hardware context (15 ARM registers) */ |
struct pcb kt_pcb; /* hardware context (15 ARM registers) */ |
|
|
|
|
struct k_task *kt_next; |
struct k_task *kt_next; |
|
|
* Functions. |
* Functions. |
*/ |
*/ |
void sched_init(void); |
void sched_init(void); |
|
void sched_tick(void); |
|
|
#endif /* not _SYS_KERN_SCHED_H */ |
#endif /* not _SYS_KERN_SCHED_H */ |
|
|