Messages in this thread | | | From | Rusty Russell <> | Subject | Re: [regression] sched_getaffinity fails with EINVAL in 2.6.31-rc4 | Date | Wed, 29 Jul 2009 11:18:53 +0930 |
| |
On Tue, 28 Jul 2009 03:42:15 am David Rientjes wrote: > On Mon, 27 Jul 2009, Gregory Haskins wrote: > > > I am not sure when this started, but noticed that sched_getaffinity is > > not working in -rc4. > > > > [pid 6254] sched_getaffinity(0, 128, 0x7f80586b1fe0) = -1 EINVAL > > (Invalid argument) > > > > Here is a simple program for reproduction: > > > > #include <sched.h> > > > > int main(void) > > { > > cpu_set_t mask; > > int ret; > > > > ret = sched_getaffinity(0, sizeof(mask), &mask); > > if (ret < 0) > > perror("getaffinity"); > > > > return ret; > > } > > > > If I get time, I will bisect this later today. > > > > It's most likely due to the cpumask changes. I don't know what cpu_set_t > is, but it's probably smaller than CONFIG_NR_CPUS rounded up to a multiple > of sizeof(long).
It's simply that you finally ran this on a kernel which had CONFIG_NR_CPUS > 1024.
I argued strongly against the set and getaffinity interfaces when they were introduced; they can't be used in general without a loop (enlarge cpu_set, retry).
Cheers, Rusty.
| |