diff options
| author | Ingo Molnar <mingo@elte.hu> | 2007-07-09 12:51:58 -0400 |
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2007-07-09 12:51:58 -0400 |
| commit | 20b8a59f2461e1be911dce2cfafefab9d22e4eee (patch) | |
| tree | e40e8558726629818b6dbdcdd64e93823f719fcd | |
| parent | fa72e9e484c16f0c9aee23981917d8c8c03f0482 (diff) | |
sched: cfs, core data types
add the CFS data types to sched.h.
(the old scheduler is still fully intact.)
Signed-off-by: Ingo Molnar <mingo@elte.hu>
| -rw-r--r-- | include/linux/sched.h | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/include/linux/sched.h b/include/linux/sched.h index 90420321994f..995eb407c234 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
| @@ -820,6 +820,86 @@ enum sleep_type { | |||
| 820 | }; | 820 | }; |
| 821 | 821 | ||
| 822 | struct prio_array; | 822 | struct prio_array; |
| 823 | struct rq; | ||
| 824 | struct sched_domain; | ||
| 825 | |||
| 826 | struct sched_class { | ||
| 827 | struct sched_class *next; | ||
| 828 | |||
| 829 | void (*enqueue_task) (struct rq *rq, struct task_struct *p, | ||
| 830 | int wakeup, u64 now); | ||
| 831 | void (*dequeue_task) (struct rq *rq, struct task_struct *p, | ||
| 832 | int sleep, u64 now); | ||
| 833 | void (*yield_task) (struct rq *rq, struct task_struct *p); | ||
| 834 | |||
| 835 | void (*check_preempt_curr) (struct rq *rq, struct task_struct *p); | ||
| 836 | |||
| 837 | struct task_struct * (*pick_next_task) (struct rq *rq, u64 now); | ||
| 838 | void (*put_prev_task) (struct rq *rq, struct task_struct *p, u64 now); | ||
| 839 | |||
| 840 | int (*load_balance) (struct rq *this_rq, int this_cpu, | ||
| 841 | struct rq *busiest, | ||
| 842 | unsigned long max_nr_move, unsigned long max_load_move, | ||
| 843 | struct sched_domain *sd, enum cpu_idle_type idle, | ||
| 844 | int *all_pinned, unsigned long *total_load_moved); | ||
| 845 | |||
| 846 | void (*set_curr_task) (struct rq *rq); | ||
| 847 | void (*task_tick) (struct rq *rq, struct task_struct *p); | ||
| 848 | void (*task_new) (struct rq *rq, struct task_struct *p); | ||
| 849 | }; | ||
| 850 | |||
| 851 | struct load_weight { | ||
| 852 | unsigned long weight, inv_weight; | ||
| 853 | }; | ||
| 854 | |||
| 855 | /* | ||
| 856 | * CFS stats for a schedulable entity (task, task-group etc) | ||
| 857 | * | ||
| 858 | * Current field usage histogram: | ||
| 859 | * | ||
| 860 | * 4 se->block_start | ||
| 861 | * 4 se->run_node | ||
| 862 | * 4 se->sleep_start | ||
| 863 | * 4 se->sleep_start_fair | ||
| 864 | * 6 se->load.weight | ||
| 865 | * 7 se->delta_fair | ||
| 866 | * 15 se->wait_runtime | ||
| 867 | */ | ||
| 868 | struct sched_entity { | ||
| 869 | long wait_runtime; | ||
| 870 | unsigned long delta_fair_run; | ||
| 871 | unsigned long delta_fair_sleep; | ||
| 872 | unsigned long delta_exec; | ||
| 873 | s64 fair_key; | ||
| 874 | struct load_weight load; /* for load-balancing */ | ||
| 875 | struct rb_node run_node; | ||
| 876 | unsigned int on_rq; | ||
| 877 | |||
| 878 | u64 wait_start_fair; | ||
| 879 | u64 wait_start; | ||
| 880 | u64 exec_start; | ||
| 881 | u64 sleep_start; | ||
| 882 | u64 sleep_start_fair; | ||
| 883 | u64 block_start; | ||
| 884 | u64 sleep_max; | ||
| 885 | u64 block_max; | ||
| 886 | u64 exec_max; | ||
| 887 | u64 wait_max; | ||
| 888 | u64 last_ran; | ||
| 889 | |||
| 890 | u64 sum_exec_runtime; | ||
| 891 | s64 sum_wait_runtime; | ||
| 892 | s64 sum_sleep_runtime; | ||
| 893 | unsigned long wait_runtime_overruns; | ||
| 894 | unsigned long wait_runtime_underruns; | ||
| 895 | #ifdef CONFIG_FAIR_GROUP_SCHED | ||
| 896 | struct sched_entity *parent; | ||
| 897 | /* rq on which this entity is (to be) queued: */ | ||
| 898 | struct cfs_rq *cfs_rq; | ||
| 899 | /* rq "owned" by this entity/group: */ | ||
| 900 | struct cfs_rq *my_q; | ||
| 901 | #endif | ||
| 902 | }; | ||
| 823 | 903 | ||
| 824 | struct task_struct { | 904 | struct task_struct { |
| 825 | volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */ | 905 | volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */ |
| @@ -839,6 +919,8 @@ struct task_struct { | |||
| 839 | int prio, static_prio, normal_prio; | 919 | int prio, static_prio, normal_prio; |
| 840 | struct list_head run_list; | 920 | struct list_head run_list; |
| 841 | struct prio_array *array; | 921 | struct prio_array *array; |
| 922 | struct sched_class *sched_class; | ||
| 923 | struct sched_entity se; | ||
| 842 | 924 | ||
| 843 | unsigned short ioprio; | 925 | unsigned short ioprio; |
| 844 | #ifdef CONFIG_BLK_DEV_IO_TRACE | 926 | #ifdef CONFIG_BLK_DEV_IO_TRACE |
