The following patch, against 2.4.19-pre8-ac4, implements the task CPU affinity syscalls found in 2.5. This is not suggested for inclusion in 2.4 until the 2.5 interface is assuredly what we want. I post it now for discussion and those who are interested. The syscalls are: sched_getaffinity(pid_t pid, unsigned long len, unsigned long *mask) sched_setaffinity(pid_t pid, unsigned long len, unsigned long *mask) which get and set the affinity of any given task (provided proper permission) to the given CPU bitmask. I believe we solved the locking issue I presented before: handle it as in 2.5. Acquire tasklist_lock, translate the pid into a valid task_struct, call get_task_struct to bump the task_struct's page reference count, drop tasklist_lock, call set_cpus_allowed, then call free_task_struct which does free_pages. Since the pages usage count was bumped, it will not be freed unless the task prematurely deallocated in the middle. Comments? Hopefully this works and - assuming the 2.5 interface stays as is - I can put this aside until it is time to merge it. Robert Love