-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
yaml --- r: 135699 b: refs/heads/master c: 49d2d26 h: refs/heads/master i: 135697: 845f065 135695: 71c53d6 v: v3
- Loading branch information
Ingo Molnar
committed
Mar 5, 2009
1 parent
b3ec44c
commit e4a74ab
Showing
128 changed files
with
1,385 additions
and
608 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,2 @@ | ||
--- | ||
refs/heads/master: b67802ea8061393f7bd2d4db934646e76096027c | ||
refs/heads/master: 49d2d266adff27793fed247a2e9e672d59b6ddc6 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,126 @@ | ||
Reference for various scheduler-related methods in the O(1) scheduler | ||
Robert Love <rml@tech9.net>, MontaVista Software | ||
|
||
|
||
Note most of these methods are local to kernel/sched.c - this is by design. | ||
The scheduler is meant to be self-contained and abstracted away. This document | ||
is primarily for understanding the scheduler, not interfacing to it. Some of | ||
the discussed interfaces, however, are general process/scheduling methods. | ||
They are typically defined in include/linux/sched.h. | ||
|
||
|
||
Main Scheduling Methods | ||
----------------------- | ||
|
||
void load_balance(runqueue_t *this_rq, int idle) | ||
Attempts to pull tasks from one cpu to another to balance cpu usage, | ||
if needed. This method is called explicitly if the runqueues are | ||
imbalanced or periodically by the timer tick. Prior to calling, | ||
the current runqueue must be locked and interrupts disabled. | ||
|
||
void schedule() | ||
The main scheduling function. Upon return, the highest priority | ||
process will be active. | ||
|
||
|
||
Locking | ||
------- | ||
|
||
Each runqueue has its own lock, rq->lock. When multiple runqueues need | ||
to be locked, lock acquires must be ordered by ascending &runqueue value. | ||
|
||
A specific runqueue is locked via | ||
|
||
task_rq_lock(task_t pid, unsigned long *flags) | ||
|
||
which disables preemption, disables interrupts, and locks the runqueue pid is | ||
running on. Likewise, | ||
|
||
task_rq_unlock(task_t pid, unsigned long *flags) | ||
|
||
unlocks the runqueue pid is running on, restores interrupts to their previous | ||
state, and reenables preemption. | ||
|
||
The routines | ||
|
||
double_rq_lock(runqueue_t *rq1, runqueue_t *rq2) | ||
|
||
and | ||
|
||
double_rq_unlock(runqueue_t *rq1, runqueue_t *rq2) | ||
|
||
safely lock and unlock, respectively, the two specified runqueues. They do | ||
not, however, disable and restore interrupts. Users are required to do so | ||
manually before and after calls. | ||
|
||
|
||
Values | ||
------ | ||
|
||
MAX_PRIO | ||
The maximum priority of the system, stored in the task as task->prio. | ||
Lower priorities are higher. Normal (non-RT) priorities range from | ||
MAX_RT_PRIO to (MAX_PRIO - 1). | ||
MAX_RT_PRIO | ||
The maximum real-time priority of the system. Valid RT priorities | ||
range from 0 to (MAX_RT_PRIO - 1). | ||
MAX_USER_RT_PRIO | ||
The maximum real-time priority that is exported to user-space. Should | ||
always be equal to or less than MAX_RT_PRIO. Setting it less allows | ||
kernel threads to have higher priorities than any user-space task. | ||
MIN_TIMESLICE | ||
MAX_TIMESLICE | ||
Respectively, the minimum and maximum timeslices (quanta) of a process. | ||
|
||
Data | ||
---- | ||
|
||
struct runqueue | ||
The main per-CPU runqueue data structure. | ||
struct task_struct | ||
The main per-process data structure. | ||
|
||
|
||
General Methods | ||
--------------- | ||
|
||
cpu_rq(cpu) | ||
Returns the runqueue of the specified cpu. | ||
this_rq() | ||
Returns the runqueue of the current cpu. | ||
task_rq(pid) | ||
Returns the runqueue which holds the specified pid. | ||
cpu_curr(cpu) | ||
Returns the task currently running on the given cpu. | ||
rt_task(pid) | ||
Returns true if pid is real-time, false if not. | ||
|
||
|
||
Process Control Methods | ||
----------------------- | ||
|
||
void set_user_nice(task_t *p, long nice) | ||
Sets the "nice" value of task p to the given value. | ||
int setscheduler(pid_t pid, int policy, struct sched_param *param) | ||
Sets the scheduling policy and parameters for the given pid. | ||
int set_cpus_allowed(task_t *p, unsigned long new_mask) | ||
Sets a given task's CPU affinity and migrates it to a proper cpu. | ||
Callers must have a valid reference to the task and assure the | ||
task not exit prematurely. No locks can be held during the call. | ||
set_task_state(tsk, state_value) | ||
Sets the given task's state to the given value. | ||
set_current_state(state_value) | ||
Sets the current task's state to the given value. | ||
void set_tsk_need_resched(struct task_struct *tsk) | ||
Sets need_resched in the given task. | ||
void clear_tsk_need_resched(struct task_struct *tsk) | ||
Clears need_resched in the given task. | ||
void set_need_resched() | ||
Sets need_resched in the current task. | ||
void clear_need_resched() | ||
Clears need_resched in the current task. | ||
int need_resched() | ||
Returns true if need_resched is set in the current task, false | ||
otherwise. | ||
yield() | ||
Place the current process at the end of the runqueue and call schedule. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.