|
@@ -264,17 +264,6 @@ static struct cpuset top_cpuset = {
|
|
|
static DEFINE_MUTEX(cpuset_mutex);
|
|
|
static DEFINE_MUTEX(callback_mutex);
|
|
|
|
|
|
-/*
|
|
|
- * cpuset_buffer_lock protects both the cpuset_name and cpuset_nodelist
|
|
|
- * buffers. They are statically allocated to prevent using excess stack
|
|
|
- * when calling cpuset_print_task_mems_allowed().
|
|
|
- */
|
|
|
-#define CPUSET_NAME_LEN (128)
|
|
|
-#define CPUSET_NODELIST_LEN (256)
|
|
|
-static char cpuset_name[CPUSET_NAME_LEN];
|
|
|
-static char cpuset_nodelist[CPUSET_NODELIST_LEN];
|
|
|
-static DEFINE_SPINLOCK(cpuset_buffer_lock);
|
|
|
-
|
|
|
/*
|
|
|
* CPU / memory hotplug is handled asynchronously.
|
|
|
*/
|
|
@@ -2592,6 +2581,8 @@ int cpuset_mems_allowed_intersects(const struct task_struct *tsk1,
|
|
|
return nodes_intersects(tsk1->mems_allowed, tsk2->mems_allowed);
|
|
|
}
|
|
|
|
|
|
+#define CPUSET_NODELIST_LEN (256)
|
|
|
+
|
|
|
/**
|
|
|
* cpuset_print_task_mems_allowed - prints task's cpuset and mems_allowed
|
|
|
* @task: pointer to task_struct of some task.
|
|
@@ -2602,24 +2593,19 @@ int cpuset_mems_allowed_intersects(const struct task_struct *tsk1,
|
|
|
*/
|
|
|
void cpuset_print_task_mems_allowed(struct task_struct *tsk)
|
|
|
{
|
|
|
- struct dentry *dentry;
|
|
|
+ /* Statically allocated to prevent using excess stack. */
|
|
|
+ static char cpuset_nodelist[CPUSET_NODELIST_LEN];
|
|
|
+ static DEFINE_SPINLOCK(cpuset_buffer_lock);
|
|
|
|
|
|
- dentry = task_cs(tsk)->css.cgroup->dentry;
|
|
|
- spin_lock(&cpuset_buffer_lock);
|
|
|
+ struct cgroup *cgrp = task_cs(tsk)->css.cgroup;
|
|
|
|
|
|
- if (!dentry) {
|
|
|
- strcpy(cpuset_name, "/");
|
|
|
- } else {
|
|
|
- spin_lock(&dentry->d_lock);
|
|
|
- strlcpy(cpuset_name, (const char *)dentry->d_name.name,
|
|
|
- CPUSET_NAME_LEN);
|
|
|
- spin_unlock(&dentry->d_lock);
|
|
|
- }
|
|
|
+ spin_lock(&cpuset_buffer_lock);
|
|
|
|
|
|
nodelist_scnprintf(cpuset_nodelist, CPUSET_NODELIST_LEN,
|
|
|
tsk->mems_allowed);
|
|
|
printk(KERN_INFO "%s cpuset=%s mems_allowed=%s\n",
|
|
|
- tsk->comm, cpuset_name, cpuset_nodelist);
|
|
|
+ tsk->comm, cgroup_name(cgrp), cpuset_nodelist);
|
|
|
+
|
|
|
spin_unlock(&cpuset_buffer_lock);
|
|
|
}
|
|
|
|