44 lines
743 B
C
44 lines
743 B
C
#ifndef SOCKS_SCHED_H_
|
|
#define SOCKS_SCHED_H_
|
|
|
|
#include <socks/pmap.h>
|
|
#include <socks/queue.h>
|
|
#include <socks/btree.h>
|
|
#include <socks/status.h>
|
|
|
|
typedef enum task_state {
|
|
TASK_RUNNING,
|
|
TASK_STOPPED,
|
|
} task_state_t;
|
|
|
|
typedef enum task_thread_state {
|
|
TASK_THREAD_READY,
|
|
TASK_THREAD_SLEEPING,
|
|
TASK_THREAD_STOPPED,
|
|
} task_thread_state_t;
|
|
|
|
typedef struct task {
|
|
struct task *t_parent;
|
|
unsigned int t_id;
|
|
task_state_t t_state;
|
|
|
|
pmap_t t_pmap;
|
|
|
|
btree_node_t t_tasklist;
|
|
queue_t t_threads;
|
|
queue_t t_children;
|
|
} task_t;
|
|
|
|
typedef struct task_thread {
|
|
task_thread_state_t tr_state;
|
|
unsigned int tr_id;
|
|
unsigned int tr_prio;
|
|
|
|
queue_entry_t tr_threads;
|
|
void *tr_kstack;
|
|
} task_thread_t;
|
|
|
|
extern kern_status_t sched_init(void);
|
|
|
|
#endif
|