File: [local] / funnyos / sys / kern_sched.h (download)
Revision 1.2, Tue Nov 20 12:57:37 2007 UTC (16 years, 6 months ago) by nbrk
Branch: MAIN
Changes since 1.1: +11 -3 lines
rework some..
|
/*
* $Id: kern_sched.h,v 1.2 2007/11/20 12:57:37 nbrk Exp $
*/
#ifndef _SYS_KERN_SCHED_H
#define _SYS_KERN_SCHED_H
#include <sys/types.h>
/*
* Task header is used by user to describe task in config.c
*/
struct taskheader {
const char *th_name; /* task name */
uint8_t th_priority; /* priority, bigger the value = higher priority */
void (*th_enter)(void); /* entry point */
};
/*
* Kernel sees each system task as struct task;
* it is used for scheduling and context switches.
*/
struct task {
struct taskheader *ta_theader; /* points to user-described data */
uint8_t ta_taskid; /* task id (TID) */
uint8_t ta_state; /* task state (running, blocked, etc.) */
uint32_t ta_timeo; /* timeout (in HZ) if task is blocked */
uint32_t *ta_stackptr; /* task stack addr (used to switch-back to that task) */
struct task *ta_nextp;
};
/*
* Tasks states.
*/
#define TASK_NOSCHED 0x00 /* task not ready or halted; will not schedule this */
#define TASK_READY 0x01 /* ready for schedule */
#define TASK_RUNNING 0x02 /* running now */
#define TASK_SLEEPING 0x04 /* task waits for (planned) timeout */
/*
* Functions.
*/
void sched_init(void);
#endif /* not _SYS_KERN_SCHED_H */