|
|
Message-Id: <1374691013.3031.6@driftwood>
Date: Wed, 24 Jul 2013 13:36:53 -0500
From: Rob Landley <rob@...dley.net>
To: musl@...ts.openwall.com
Cc: musl@...ts.openwall.com
Subject: Re: Proposed roadmap to 1.0
On 07/17/2013 11:02:05 AM, Rich Felker wrote:
> > - Affinity/cpuset interfaces.
>
> Last time I started working on this, I got sick of it before I got
> very far. There are just so many tedious macros/inline-functions to
> implement. I was also frustrated with having to put so much code in a
> public header. For this, I'd really like some help on both:
>
> - ideas for making it less hideous, and
> - actually writing it out.
For toybox I ignored the glibc interfaces and just used the raw
syscall, manipulating the arguments myself with bit shifts. Let's see...
Wow the man 3 CPU_SET macros are crazy. Very first one, CPU_ZERO() does
not specify the size of the array. So how does it determine it? It's
gotta be getting it from cpu_set_t which is defined in
/usr/include/*/bits/sched.h:
/* Data structure to describe CPU mask. */
typedef struct
{
__cpu_mask __bits[__CPU_SETSIZE / __NCPUBITS];
} cpu_set_t;
So what's _NCPUBITS?
/* Size definition for CPU sets. */
# define __CPU_SETSIZE 1024
# define __NCPUBITS (8 * sizeof (__cpu_mask))
/* Type for array elements in 'cpu_set_t'. */
typedef unsigned long int __cpu_mask;
So... it's hardwired to 1024 cpus.
I don't think there _is_ a way to make this non-ugly. What actually
uses this?
Rob
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.