		   Processor Affinity Module Design
	           ================================
				   
Content
--------
 1. Requirements
 2. Curent Capabilities

1.  Requirements
----------------
 1. Be able to pin a process on to a processor.  
 2. Be able to get exclusive control of a processor with a process.

2.  Current Capabilities
------------------------ 
 1. Process Pinning
   We've based our solution off of Robert Love's cpu affinity
   patch. We merely exported his capabilities and solution into a
   module format.  User space processes are able to lock themselves to
   a processor via ioctl() calls to our module.  
 1.1. Usage
   To align your process to a CPU.
   cpu_mask = 1 << cpu;
   fd = open("/dev/cpu_affinity0", O_RDWR);
   ioctl(fd, AFFINITY_IOC_SET_AFFINITY, (struct affinity *)&{pid, cpu_mask});

 2. Exclusive Processor Control
   We have also allowed the user to ensure that only their process
   actually runs on a CPU.  We do this by masking all processes
   cpus_allowed field to exclude the desired processor and set the
   calling process's cpus_allowed field to include only the desired
   processor.  Note that while your exclusive task is not running
   (sleeping or waiting) the idle (init) task assigned to the cpu will
   run.

