cpuset_t interfaces

Ulrich Drepper drepper@redhat.com
Thu Mar 18 05:57:00 GMT 2004


I intend to change the interfaces taking a cpuset_t parameter.
Currently we have

extern int pthread_attr_setaffinity_np (pthread_attr_t *__attr,
                                        __const cpu_set_t *__cpuset);
extern int pthread_attr_getaffinity_np (__const pthread_attr_t *__attr,
                                        cpu_set_t *__cpuset);

and the sched_[sg]etaffinity interfaces which have no prototype yet.

The problem is the limited cpuset_t size.  Just thinking about HT
multicore processors in multi-processor machines should be enough that
1024 virtual processors isn't that hard to reach.


Therefore the interface should include a size parameter:

extern int pthread_attr_setaffinity_np (pthread_attr_t *__attr,
                                        __const cpu_set_t *__cpuset,
                                        size_t size);
extern int pthread_attr_getaffinity_np (__const pthread_attr_t *__attr,
                                        cpu_set_t *__cpuset,
                                        size_t size);


This way the data structure can be expanded if necessary.

The interfaces are in very little use today.  We keep the old interfaces
and make them simple wrappers with a fixed size of 128 bytes.


Unless I hear well-founded objections I'll make the change tomorrow.

-- 
➧ Ulrich Drepper ➧ Red Hat, Inc. ➧ 444 Castro St ➧ Mountain View, CA ❖



More information about the Libc-hacker mailing list