sched hardcode non-smp set_cpus_allowed
PATCH 1/1 sched hardcode non-smp set_cpus_allowed
Simplify the UP (1 CPU) implementatin of set_cpus_allowed.
The one CPU is hardcoded to be cpu 0 - so just test for that bit, and avoid having to pick up the cpu_online_map.
---
include/linux/sched.h | 2 +- 1 files changed, 1 insertion(+), 1 deletion(-)
include/linux/sched.h +1 -1
@@ -945,7 +945,7 @@ extern int set_cpus_allowed(task_t *p, c#else static inline int set_cpus_allowed (task_t *p,cpumask_t new_mask) { -if (!cpus_intersects (new_mask, cpu_online_map)) +if (!cpu_isset (0 , new_mask))return -EINVAL ;return 0 ; }
Signature · 3 lines
I won't rest till it's the best ...
Programmer, Linux Scalability
Paul Jackson <[email protected]> 1.650.933.1373, 1.925.600.0401include/linux/sched.h extern int set_cpus_allowed(task_t *p, c · line 951
Quoted 9 lines · Paul Jackson
include/linux/sched.h +1
-1@@ -945,7 +945,7 @@ extern int set_cpus_allowed(task_t *p, c#else static inline int set_cpus_allowed (task_t *p,cpumask_t new_mask) { -if (!cpus_intersects (new_mask, cpu_online_map)) +if (!cpu_isset (0 , new_mask))return -EINVAL ;return 0 ; }
Hmm, I do slightly prefer the former, since it is exactly the same as the SMP case, and doesn't hardcode 0. Perhaps worth making cpu_online_map a literal "1" for the UP case, which will help everywhere. With our include web, however, that might be tricky.
Rusty.
Signature · 1 line
A bad analogy is like a leaky screwdriver -- Richard Braakman
Quoted 2 lines · Rusty
Hmm, I do slightly prefer the former, since it is exactly the same as the SMP case,
I tend to agree with that, in theory.
But the cpu_online_map reference had broken some (driver, module, ...?) that had wasted a bit of Andrew's time, which was worth something to me as well. I was more than happy to make a one-line change if it removed a small pothole on Andrew's road.
We've got a couple of schools of thought here ... at least.
I tend to prefer having the source code express the general case, and then using header file magic to optimize the generated code for the uni- processor systems. I guess this would be Rusty-style source code, Andrew-style machine code, and esoteric style headers.
Quoted 1 line
With our include web, however, that might be tricky.
Yeah. Not worth messing with, in my book.
Signature · 3 lines
I won't rest till it's the best ...
Programmer, Linux Scalability
Paul Jackson <[email protected]> 1.925.600.0401