sched: add current_task(), current_thread(), and preempt_disable/enable()
This commit is contained in:
@@ -15,8 +15,9 @@ typedef enum cpu_flags {
|
||||
typedef struct cpu_data {
|
||||
cpu_flags_t c_flags;
|
||||
unsigned int c_id;
|
||||
unsigned int c_preempt_count;
|
||||
|
||||
task_t *c_current_task;
|
||||
thread_t *c_current_thread;
|
||||
runqueue_t c_rq;
|
||||
} cpu_data_t;
|
||||
|
||||
@@ -35,6 +36,9 @@ extern void cpu_set_online(unsigned int cpu_id);
|
||||
#define irq_enable() ml_int_enable()
|
||||
#define irq_disable() ml_int_disable()
|
||||
|
||||
extern void preempt_disable(void);
|
||||
extern void preempt_enable(void);
|
||||
|
||||
extern unsigned int cpu_get_highest_available(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
@@ -73,6 +73,9 @@ typedef struct runqueue {
|
||||
} runqueue_t;
|
||||
|
||||
extern kern_status_t sched_init(void);
|
||||
extern void schedule(void);
|
||||
extern void preempt_disable(void);
|
||||
extern void preempt_enable(void);
|
||||
|
||||
extern void runqueue_init(runqueue_t *rq);
|
||||
|
||||
@@ -82,6 +85,10 @@ static inline void task_deref(task_t *task) { object_deref(object_header(task));
|
||||
extern task_t *task_from_pid(unsigned int pid);
|
||||
extern task_t *kernel_task(void);
|
||||
|
||||
extern bool need_resched(void);
|
||||
extern task_t *current_task(void);
|
||||
extern thread_t *current_thread(void);
|
||||
|
||||
static inline void task_lock_irqsave(task_t *task, unsigned long *flags)
|
||||
{
|
||||
object_lock(object_header(task), flags);
|
||||
|
||||
Reference in New Issue
Block a user