| Notes on the scheduler in sched.c: | 
 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 
 |  | 
 |   'sched.c' provides an very simplistic multi-threading scheduler. | 
 |    See the example, function 'sched(...)', in the same file for its | 
 |    API usage. | 
 |  | 
 |    Until an exhaustive testing can be done, the implementation cannot | 
 |    qualify as that of production quality. It works with the example | 
 |    in 'sched.c', it may or may not work in other cases. | 
 |  | 
 |  | 
 | Limitations: | 
 | ~~~~~~~~~~~~ | 
 |  | 
 |   - There are NO primitives for thread synchronization (locking, | 
 |     notify etc). | 
 |  | 
 |   - Only the GPRs and FPRs context is saved during a thread context | 
 |     switch. Other registers on the PowerPC processor (60x, 7xx, 7xxx | 
 |     etc) are NOT saved. | 
 |  | 
 |   - The scheduler is NOT transparent to the user. The user | 
 |     applications must invoke thread_yield() to allow other threads to | 
 |     scheduler. | 
 |  | 
 |   - There are NO priorities, and the scheduling policy is round-robin | 
 |     based. | 
 |  | 
 |   - There are NO capabilities to collect thread CPU usage, scheduler | 
 |     stats, thread status etc. | 
 |  | 
 |   - The semantics are somewhat based on those of pthreads, but NOT | 
 |     the same. | 
 |  | 
 |   - Only seven threads are allowed. These can be easily increased by | 
 |     changing "#define MAX_THREADS" depending on the available memory. | 
 |  | 
 |   - The stack size of each thread is 8KBytes. This can be easily | 
 |     increased depending on the requirement and the available memory, | 
 |     by increasing "#define STK_SIZE". | 
 |  | 
 |   - Only one master/parent thread is allowed, and it cannot be | 
 |     stopped or deleted. Any given thread is NOT allowed to stop or | 
 |     delete itself. | 
 |  | 
 |   - There NOT enough safety checks as are probably in the other | 
 |     threads implementations. | 
 |  | 
 |   - There is no parent-child relationship between threads. Only one | 
 |     thread may thread_join, preferably the master/parent thread. | 
 |  | 
 | (C) 2003 Arun Dharankar <ADharankar@ATTBI.Com> |