Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 127615
b: refs/heads/master
c: 6af866a
h: refs/heads/master
i:
  127613: 65080c8
  127611: 357f6f9
  127607: 48e20e4
  127599: 792825c
  127583: 9b29fff
  127551: eb16623
  127487: 0882586
v: v3
  • Loading branch information
Li Zefan authored and Linus Torvalds committed Jan 8, 2009
1 parent dc14335 commit 364791c
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 18 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 300ed6cbb70718872cb4936d1d22ef295f9ba44d
refs/heads/master: 6af866af34a96fed24a55979a78b6f73bd4e8e87
10 changes: 6 additions & 4 deletions trunk/include/linux/cpuset.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,9 @@ extern int number_of_cpusets; /* How many cpusets are defined in system? */
extern int cpuset_init_early(void);
extern int cpuset_init(void);
extern void cpuset_init_smp(void);
extern void cpuset_cpus_allowed(struct task_struct *p, cpumask_t *mask);
extern void cpuset_cpus_allowed_locked(struct task_struct *p, cpumask_t *mask);
extern void cpuset_cpus_allowed(struct task_struct *p, struct cpumask *mask);
extern void cpuset_cpus_allowed_locked(struct task_struct *p,
struct cpumask *mask);
extern nodemask_t cpuset_mems_allowed(struct task_struct *p);
#define cpuset_current_mems_allowed (current->mems_allowed)
void cpuset_init_current_mems_allowed(void);
Expand Down Expand Up @@ -86,12 +87,13 @@ static inline int cpuset_init_early(void) { return 0; }
static inline int cpuset_init(void) { return 0; }
static inline void cpuset_init_smp(void) {}

static inline void cpuset_cpus_allowed(struct task_struct *p, cpumask_t *mask)
static inline void cpuset_cpus_allowed(struct task_struct *p,
struct cpumask *mask)
{
*mask = cpu_possible_map;
}
static inline void cpuset_cpus_allowed_locked(struct task_struct *p,
cpumask_t *mask)
struct cpumask *mask)
{
*mask = cpu_possible_map;
}
Expand Down
28 changes: 15 additions & 13 deletions trunk/kernel/cpuset.c
Original file line number Diff line number Diff line change
Expand Up @@ -289,7 +289,8 @@ static struct file_system_type cpuset_fs_type = {
* Call with callback_mutex held.
*/

static void guarantee_online_cpus(const struct cpuset *cs, cpumask_t *pmask)
static void guarantee_online_cpus(const struct cpuset *cs,
struct cpumask *pmask)
{
while (cs && !cpumask_intersects(cs->cpus_allowed, cpu_online_mask))
cs = cs->parent;
Expand Down Expand Up @@ -610,26 +611,27 @@ update_domain_attr_tree(struct sched_domain_attr *dattr, struct cpuset *c)
* element of the partition (one sched domain) to be passed to
* partition_sched_domains().
*/
static int generate_sched_domains(cpumask_t **domains,
/* FIXME: see the FIXME in partition_sched_domains() */
static int generate_sched_domains(struct cpumask **domains,
struct sched_domain_attr **attributes)
{
LIST_HEAD(q); /* queue of cpusets to be scanned */
struct cpuset *cp; /* scans q */
struct cpuset **csa; /* array of all cpuset ptrs */
int csn; /* how many cpuset ptrs in csa so far */
int i, j, k; /* indices for partition finding loops */
cpumask_t *doms; /* resulting partition; i.e. sched domains */
struct cpumask *doms; /* resulting partition; i.e. sched domains */
struct sched_domain_attr *dattr; /* attributes for custom domains */
int ndoms = 0; /* number of sched domains in result */
int nslot; /* next empty doms[] cpumask_t slot */
int nslot; /* next empty doms[] struct cpumask slot */

doms = NULL;
dattr = NULL;
csa = NULL;

/* Special case for the 99% of systems with one, full, sched domain */
if (is_sched_load_balance(&top_cpuset)) {
doms = kmalloc(sizeof(cpumask_t), GFP_KERNEL);
doms = kmalloc(cpumask_size(), GFP_KERNEL);
if (!doms)
goto done;

Expand Down Expand Up @@ -708,7 +710,7 @@ static int generate_sched_domains(cpumask_t **domains,
* Now we know how many domains to create.
* Convert <csn, csa> to <ndoms, doms> and populate cpu masks.
*/
doms = kmalloc(ndoms * sizeof(cpumask_t), GFP_KERNEL);
doms = kmalloc(ndoms * cpumask_size(), GFP_KERNEL);
if (!doms)
goto done;

Expand All @@ -720,7 +722,7 @@ static int generate_sched_domains(cpumask_t **domains,

for (nslot = 0, i = 0; i < csn; i++) {
struct cpuset *a = csa[i];
cpumask_t *dp;
struct cpumask *dp;
int apn = a->pn;

if (apn < 0) {
Expand All @@ -743,7 +745,7 @@ static int generate_sched_domains(cpumask_t **domains,
continue;
}

cpus_clear(*dp);
cpumask_clear(dp);
if (dattr)
*(dattr + nslot) = SD_ATTR_INIT;
for (j = i; j < csn; j++) {
Expand Down Expand Up @@ -790,7 +792,7 @@ static int generate_sched_domains(cpumask_t **domains,
static void do_rebuild_sched_domains(struct work_struct *unused)
{
struct sched_domain_attr *attr;
cpumask_t *doms;
struct cpumask *doms;
int ndoms;

get_online_cpus();
Expand Down Expand Up @@ -2044,7 +2046,7 @@ static int cpuset_track_online_cpus(struct notifier_block *unused_nb,
unsigned long phase, void *unused_cpu)
{
struct sched_domain_attr *attr;
cpumask_t *doms;
struct cpumask *doms;
int ndoms;

switch (phase) {
Expand Down Expand Up @@ -2114,15 +2116,15 @@ void __init cpuset_init_smp(void)
/**
* cpuset_cpus_allowed - return cpus_allowed mask from a tasks cpuset.
* @tsk: pointer to task_struct from which to obtain cpuset->cpus_allowed.
* @pmask: pointer to cpumask_t variable to receive cpus_allowed set.
* @pmask: pointer to struct cpumask variable to receive cpus_allowed set.
*
* Description: Returns the cpumask_var_t cpus_allowed of the cpuset
* attached to the specified @tsk. Guaranteed to return some non-empty
* subset of cpu_online_map, even if this means going outside the
* tasks cpuset.
**/

void cpuset_cpus_allowed(struct task_struct *tsk, cpumask_t *pmask)
void cpuset_cpus_allowed(struct task_struct *tsk, struct cpumask *pmask)
{
mutex_lock(&callback_mutex);
cpuset_cpus_allowed_locked(tsk, pmask);
Expand All @@ -2133,7 +2135,7 @@ void cpuset_cpus_allowed(struct task_struct *tsk, cpumask_t *pmask)
* cpuset_cpus_allowed_locked - return cpus_allowed mask from a tasks cpuset.
* Must be called with callback_mutex held.
**/
void cpuset_cpus_allowed_locked(struct task_struct *tsk, cpumask_t *pmask)
void cpuset_cpus_allowed_locked(struct task_struct *tsk, struct cpumask *pmask)
{
task_lock(tsk);
guarantee_online_cpus(task_cs(tsk), pmask);
Expand Down

0 comments on commit 364791c

Please sign in to comment.