Attached is my procfs-based implementation of a user interface for getting and setting a task's CPU affinity. Patch is against 2.4.16. The kernel already respects affinity, which is stored in task_struct->cpus_allowed. Reading and writing /proc//affinity will get and set the affinity. Security is implemented: the writer must possess CAP_SYS_NICE or be the same uid as the task in question. Anyone can read the data. The read mask will be ANDed with cpu_online_map, so that only valid bits are returned. The written data must have _some_ valid bits in it. I.e., ffffffff is valid on a 2-way system but 01000000 probably is not. Note you don't need to pass the full mask, e.g. "64" is legal. When a new mask is set, a reschedule is forced to put the task on a legal CPU. Note I had to implement a proc_write function for the procfs (pid) code. This is generic and can be used by other, writable, entries. This patch comes as an alternative to Ingo Molnar's syscall-implemented variant. Ingo's code is good; however I and others expressed discontent at yet another group of syscalls. Other benefits include the ease with which to set the affinity of tasks that are unaware of the new interface and that with this approach applications don't need to check for the existence of a syscall. Comments? Robert Love