update name of code to labcodes
This commit is contained in:
48
labcodes/lab7/kern/sync/wait.h
Normal file
48
labcodes/lab7/kern/sync/wait.h
Normal file
@@ -0,0 +1,48 @@
|
||||
#ifndef __KERN_SYNC_WAIT_H__
|
||||
#define __KERN_SYNC_WAIT_H__
|
||||
|
||||
#include <list.h>
|
||||
|
||||
typedef struct {
|
||||
list_entry_t wait_head;
|
||||
} wait_queue_t;
|
||||
|
||||
struct proc_struct;
|
||||
|
||||
typedef struct {
|
||||
struct proc_struct *proc;
|
||||
uint32_t wakeup_flags;
|
||||
wait_queue_t *wait_queue;
|
||||
list_entry_t wait_link;
|
||||
} wait_t;
|
||||
|
||||
#define le2wait(le, member) \
|
||||
to_struct((le), wait_t, member)
|
||||
|
||||
void wait_init(wait_t *wait, struct proc_struct *proc);
|
||||
void wait_queue_init(wait_queue_t *queue);
|
||||
void wait_queue_add(wait_queue_t *queue, wait_t *wait);
|
||||
void wait_queue_del(wait_queue_t *queue, wait_t *wait);
|
||||
|
||||
wait_t *wait_queue_next(wait_queue_t *queue, wait_t *wait);
|
||||
wait_t *wait_queue_prev(wait_queue_t *queue, wait_t *wait);
|
||||
wait_t *wait_queue_first(wait_queue_t *queue);
|
||||
wait_t *wait_queue_last(wait_queue_t *queue);
|
||||
|
||||
bool wait_queue_empty(wait_queue_t *queue);
|
||||
bool wait_in_queue(wait_t *wait);
|
||||
void wakeup_wait(wait_queue_t *queue, wait_t *wait, uint32_t wakeup_flags, bool del);
|
||||
void wakeup_first(wait_queue_t *queue, uint32_t wakeup_flags, bool del);
|
||||
void wakeup_queue(wait_queue_t *queue, uint32_t wakeup_flags, bool del);
|
||||
|
||||
void wait_current_set(wait_queue_t *queue, wait_t *wait, uint32_t wait_state);
|
||||
|
||||
#define wait_current_del(queue, wait) \
|
||||
do { \
|
||||
if (wait_in_queue(wait)) { \
|
||||
wait_queue_del(queue, wait); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#endif /* !__KERN_SYNC_WAIT_H__ */
|
||||
|
||||
Reference in New Issue
Block a user