|  | - we should probably extend pthread_mutexattr_t with a field to create a | 
|  | single linked list of all instances.  This requires changing the | 
|  | pthread_mutexattr_* functions. | 
|  |  | 
|  |  | 
|  | - a new attribute for mutexes: number of times we spin before calling | 
|  | sys_futex | 
|  |  | 
|  | - for adaptive mutexes: when releasing, determine whether somebody spins. | 
|  | If yes, for a short time release lock.  If someone else locks no wakeup | 
|  | syscall needed. | 
|  |  | 
|  |  | 
|  |  | 
|  | - test with threaded process terminating and semadj (?) being applied | 
|  | only after all threads are gone | 
|  |  | 
|  |  | 
|  |  | 
|  | - semaphore changes: | 
|  |  | 
|  | - sem_post should only wake one thread and only when the state of | 
|  | the semaphore changed from 0 to 1 | 
|  |  | 
|  | this also requires that sem_wait and sem_timedwait don't drop the | 
|  | post if they get canceled. | 
|  |  | 
|  | - possibly add counter field.  This requires reviving the | 
|  | differences between old and new semaphose funtions.  The old ones | 
|  | stay as they are now.  The new once can use an additional field | 
|  | wich is the counter for the number of waiters |