Subversion Repositories HelenOS-historic

Compare Revisions

Ignore whitespace Rev 553 → Rev 557

/kernel/trunk/generic/include/synch/waitq.h
38,8 → 38,15
#define WAKEUP_FIRST 0
#define WAKEUP_ALL 1
 
/** Wait queue structure. */
struct waitq {
 
/** Lock protecting wait queue structure.
*
* Must be acquired before T.lock for each T of type thread_t.
*/
spinlock_t lock;
 
int missed_wakeups; /**< Number of waitq_wakeup() calls that didn't find a thread to wake up. */
link_t head; /**< List of sleeping threads for wich there was no missed_wakeup. */
};
51,7 → 58,7
 
extern void waitq_initialize(waitq_t *wq);
extern int waitq_sleep_timeout(waitq_t *wq, __u32 usec, int nonblocking);
extern void waitq_wakeup(waitq_t *wq, int all);
extern void _waitq_wakeup_unsafe(waitq_t *wq, int all);
extern void waitq_wakeup(waitq_t *wq, bool all);
extern void _waitq_wakeup_unsafe(waitq_t *wq, bool all);
 
#endif
/kernel/trunk/generic/include/proc/thread.h
64,7 → 64,12
link_t th_link; /**< Links to threads within containing task. */
link_t threads_link; /**< Link to the list of all threads. */
/* items below are protected by lock */
/** Lock protecting thread structure.
*
* Protects the whole thread structure except list links above.
* Must be acquired before T.lock for each T of type task_t.
*
*/
spinlock_t lock;
 
void (* thread_code)(void *); /**< Function implementing the thread. */
109,7 → 114,14
__u8 *ustack; /**< Thread's user stack. */
};
 
extern spinlock_t threads_lock; /**< Lock protecting threads_head list. */
/** Thread list lock.
*
* This lock protects all link_t structures chained in threads_head.
* Must be acquired before T.lock for each T of type thread_t.
*
*/
extern spinlock_t threads_lock;
 
extern link_t threads_head; /**< List of all threads in the system. */
 
extern void thread_init(void);