Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fcd05809 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* git://git.kernel.org/pub/scm/linux/kernel/git/mingo/linux-2.6-sched:
  sched: mark CONFIG_FAIR_GROUP_SCHED as !EXPERIMENTAL
  sched: isolate SMP balancing code a bit more
  sched: reduce balance-tasks overhead
  sched: make cpu_shares_{show,store}() static
  sched: clean up some control group code
  sched: constify sched.h
  sched: document profile=sleep requiring CONFIG_SCHEDSTATS
  sched: use show_regs() to improve __schedule_bug() output
  sched: clean up sched_domain_debug()
  sched: fix fastcall mismatch in completion APIs
  sched: fix sched_domain sysctl registration again
parents f9e83489 8ef93cf1
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -1444,7 +1444,8 @@ and is between 256 and 4096 characters. It is defined in the file
			Param: "schedule" - profile schedule points.
			Param: <number> - step/bucket size as a power of 2 for
				statistical time based profiling.
			Param: "sleep" - profile D-state sleeping (millisecs)
			Param: "sleep" - profile D-state sleeping (millisecs).
				Requires CONFIG_SCHEDSTATS
			Param: "kvm" - profile VM exits.

	processor.max_cstate=	[HW,ACPI]
+9 −9
Original line number Diff line number Diff line
@@ -42,15 +42,15 @@ static inline void init_completion(struct completion *x)
	init_waitqueue_head(&x->wait);
}

extern void FASTCALL(wait_for_completion(struct completion *));
extern int FASTCALL(wait_for_completion_interruptible(struct completion *x));
extern unsigned long FASTCALL(wait_for_completion_timeout(struct completion *x,
						   unsigned long timeout));
extern unsigned long FASTCALL(wait_for_completion_interruptible_timeout(
			struct completion *x, unsigned long timeout));

extern void FASTCALL(complete(struct completion *));
extern void FASTCALL(complete_all(struct completion *));
extern void wait_for_completion(struct completion *);
extern int wait_for_completion_interruptible(struct completion *x);
extern unsigned long wait_for_completion_timeout(struct completion *x,
						   unsigned long timeout);
extern unsigned long wait_for_completion_interruptible_timeout(
			struct completion *x, unsigned long timeout);

extern void complete(struct completion *);
extern void complete_all(struct completion *);

#define INIT_COMPLETION(x)	((x).done = 0)

+21 −16
Original line number Diff line number Diff line
@@ -828,12 +828,17 @@ struct sched_class {
	struct task_struct * (*pick_next_task) (struct rq *rq);
	void (*put_prev_task) (struct rq *rq, struct task_struct *p);

#ifdef CONFIG_SMP
	unsigned long (*load_balance) (struct rq *this_rq, int this_cpu,
			struct rq *busiest,
			unsigned long max_nr_move, unsigned long max_load_move,
			struct rq *busiest, unsigned long max_load_move,
			struct sched_domain *sd, enum cpu_idle_type idle,
			int *all_pinned, int *this_best_prio);

	int (*move_one_task) (struct rq *this_rq, int this_cpu,
			      struct rq *busiest, struct sched_domain *sd,
			      enum cpu_idle_type idle);
#endif

	void (*set_curr_task) (struct rq *rq);
	void (*task_tick) (struct rq *rq, struct task_struct *p);
	void (*task_new) (struct rq *rq, struct task_struct *p);
@@ -1196,7 +1201,7 @@ static inline int rt_prio(int prio)
	return 0;
}

static inline int rt_task(struct task_struct *p)
static inline int rt_task(const struct task_struct *p)
{
	return rt_prio(p->prio);
}
@@ -1211,22 +1216,22 @@ static inline void set_task_pgrp(struct task_struct *tsk, pid_t pgrp)
	tsk->signal->__pgrp = pgrp;
}

static inline struct pid *task_pid(struct task_struct *task)
static inline struct pid *task_pid(const struct task_struct *task)
{
	return task->pids[PIDTYPE_PID].pid;
}

static inline struct pid *task_tgid(struct task_struct *task)
static inline struct pid *task_tgid(const struct task_struct *task)
{
	return task->group_leader->pids[PIDTYPE_PID].pid;
}

static inline struct pid *task_pgrp(struct task_struct *task)
static inline struct pid *task_pgrp(const struct task_struct *task)
{
	return task->group_leader->pids[PIDTYPE_PGID].pid;
}

static inline struct pid *task_session(struct task_struct *task)
static inline struct pid *task_session(const struct task_struct *task)
{
	return task->group_leader->pids[PIDTYPE_SID].pid;
}
@@ -1255,7 +1260,7 @@ struct pid_namespace;
 * see also pid_nr() etc in include/linux/pid.h
 */

static inline pid_t task_pid_nr(struct task_struct *tsk)
static inline pid_t task_pid_nr(const struct task_struct *tsk)
{
	return tsk->pid;
}
@@ -1268,7 +1273,7 @@ static inline pid_t task_pid_vnr(struct task_struct *tsk)
}


static inline pid_t task_tgid_nr(struct task_struct *tsk)
static inline pid_t task_tgid_nr(const struct task_struct *tsk)
{
	return tsk->tgid;
}
@@ -1281,7 +1286,7 @@ static inline pid_t task_tgid_vnr(struct task_struct *tsk)
}


static inline pid_t task_pgrp_nr(struct task_struct *tsk)
static inline pid_t task_pgrp_nr(const struct task_struct *tsk)
{
	return tsk->signal->__pgrp;
}
@@ -1294,7 +1299,7 @@ static inline pid_t task_pgrp_vnr(struct task_struct *tsk)
}


static inline pid_t task_session_nr(struct task_struct *tsk)
static inline pid_t task_session_nr(const struct task_struct *tsk)
{
	return tsk->signal->__session;
}
@@ -1321,7 +1326,7 @@ static inline pid_t task_ppid_nr_ns(struct task_struct *tsk,
 * If pid_alive fails, then pointers within the task structure
 * can be stale and must not be dereferenced.
 */
static inline int pid_alive(struct task_struct *p)
static inline int pid_alive(const struct task_struct *p)
{
	return p->pids[PIDTYPE_PID].pid != NULL;
}
@@ -1332,7 +1337,7 @@ static inline int pid_alive(struct task_struct *p)
 *
 * Check if a task structure is the first user space task the kernel created.
 */
static inline int is_global_init(struct task_struct *tsk)
static inline int is_global_init(const struct task_struct *tsk)
{
	return tsk->pid == 1;
}
@@ -1469,7 +1474,7 @@ extern int rt_mutex_getprio(struct task_struct *p);
extern void rt_mutex_setprio(struct task_struct *p, int prio);
extern void rt_mutex_adjust_pi(struct task_struct *p);
#else
static inline int rt_mutex_getprio(struct task_struct *p)
static inline int rt_mutex_getprio(const struct task_struct *p)
{
	return p->normal_prio;
}
@@ -1721,7 +1726,7 @@ extern void wait_task_inactive(struct task_struct * p);
 * all we care about is that we have a task with the appropriate
 * pid, we don't actually care if we have the right task.
 */
static inline int has_group_leader_pid(struct task_struct *p)
static inline int has_group_leader_pid(const struct task_struct *p)
{
	return p->pid == p->tgid;
}
@@ -1738,7 +1743,7 @@ static inline struct task_struct *next_thread(const struct task_struct *p)
			  struct task_struct, thread_group);
}

static inline int thread_group_empty(struct task_struct *p)
static inline int thread_group_empty(const struct task_struct *p)
{
	return list_empty(&p->thread_group);
}
+0 −1
Original line number Diff line number Diff line
@@ -322,7 +322,6 @@ config CPUSETS
config FAIR_GROUP_SCHED
	bool "Fair group CPU scheduler"
	default y
	depends on EXPERIMENTAL
	help
	  This feature lets CPU scheduler recognize task groups and control CPU
	  bandwidth allocation to such task groups.
+5 −0
Original line number Diff line number Diff line
@@ -60,6 +60,7 @@ static int __init profile_setup(char * str)
	int par;

	if (!strncmp(str, sleepstr, strlen(sleepstr))) {
#ifdef CONFIG_SCHEDSTATS
		prof_on = SLEEP_PROFILING;
		if (str[strlen(sleepstr)] == ',')
			str += strlen(sleepstr) + 1;
@@ -68,6 +69,10 @@ static int __init profile_setup(char * str)
		printk(KERN_INFO
			"kernel sleep profiling enabled (shift: %ld)\n",
			prof_shift);
#else
		printk(KERN_WARNING
			"kernel sleep profiling requires CONFIG_SCHEDSTATS\n");
#endif /* CONFIG_SCHEDSTATS */
	} else if (!strncmp(str, schedstr, strlen(schedstr))) {
		prof_on = SCHED_PROFILING;
		if (str[strlen(schedstr)] == ',')
Loading