On Mon, Oct 06, 2025 at 09:42:20AM +0200, Morten Brørup wrote:
> Bruce,
> 
> cpu_set_t is a fixed size array, with the size CPU_SETSIZE.
> This is part of libc.
> 
> However, the kernel may be built with support for a different number of CPUs.
> This means that e.g. sched_getaffinity() will fail with EINVAL if cpusetsize 
> is smaller than the number of CPUs the kernel was built for.
> For more information, refer to the description about "Dynamically sized CPU 
> sets" here:
> https://linux.die.net/man/3/cpu_alloc_size
> 
> With this series, consider ensuring that all DPDK functions taking a cpu set 
> parameter also take a cpu set size parameter, to align with kernel APIs.
> E.g.:
> int sched_getaffinity(pid_t pid,
>       size_t cpusetsize, cpu_set_t *mask), and
> void CPU_ZERO_S(size_t setsize, cpu_set_t *set),
> instead of:
> void CPU_ZERO(cpu_set_t *set).
> 

Ok, that seems a feasible change.

> <feature creep>
> Consider not using fixed size cpu sets (and CPU_SETSIZE) at all, but 
> dynamically allocated cpu sets.
> </feature creep>
>

Will have to see what that involves. If it's fairly easy, I'll give it a
go, but we are rather late in this release cycle, so if it's taking too
long I'll have to give this bit a miss.

/Bruce

Reply via email to