|
MentOS
0.8.0
The Mentoring Operating System
|
Go to the source code of this file.
Classes | |
| struct | wait_queue_head_t |
| Head of the waiting queue. More... | |
| struct | wait_queue_entry_t |
| Entry of the waiting queue. More... | |
Macros | |
| #define | WNOHANG 0x00000001 |
| Return immediately if no child is there to be waited for. | |
| #define | WUNTRACED 0x00000002 |
| Return for children that are stopped, and whose status has not been reported. | |
| #define | WIFSIGNALED(status) (!WIFSTOPPED(status) && !WIFEXITED(status)) |
| returns true if the child process exited because of a signal that was not caught. | |
| #define | WIFSTOPPED(status) (((status)&0xff) == 0x7f) |
| returns true if the child process that caused the return is currently stopped; this is only possible if the call was done using WUNTRACED(). | |
| #define | WEXITSTATUS(status) (((status)&0xff00) >> 8) |
| evaluates to the least significant eight bits of the return code of the child that terminated, which may have been set as the argument to a call to exit() or as the argument for a return statement in the main program. This macro can only be evaluated if WIFEXITED() returned nonzero. | |
| #define | WTERMSIG(status) ((status)&0x7f) |
| returns the number of the signal that caused the child process to terminate. This macro can only be evaluated if WIFSIGNALED() returned nonzero. | |
| #define | WIFEXITED(status) (WTERMSIG(status) == 0) |
| Is nonzero if the child exited normally. | |
| #define | WSTOPSIG(status) (WEXITSTATUS(status)) |
| returns the number of the signal that caused the child to stop. This macro can only be evaluated if WIFSTOPPED() returned nonzero. | |
| #define | TASK_RUNNING 0x00 |
| The process is either: 1) running on CPU or 2) waiting in a run queue. | |
| #define | TASK_INTERRUPTIBLE (1 << 0) |
| The process is sleeping, waiting for some event to occur. | |
| #define | TASK_UNINTERRUPTIBLE (1 << 1) |
| Similar to TASK_INTERRUPTIBLE, but it doesn't process signals. | |
| #define | TASK_STOPPED (1 << 2) |
| Stopped, it's not running, and not able to run. | |
| #define | TASK_TRACED (1 << 3) |
| Is being monitored by other processes such as debuggers. | |
| #define | EXIT_ZOMBIE (1 << 4) |
| The process has terminated. | |
| #define | EXIT_DEAD (1 << 5) |
| The final state. | |
| #define | WQ_FLAG_EXCLUSIVE 0x01 |
| When an entry has this flag is added to the end of the wait queue. Entries without that flag are, instead, added to the beginning. | |
Typedefs | |
| typedef struct wait_queue_head_t | wait_queue_head_t |
| Head of the waiting queue. | |
| typedef struct wait_queue_entry_t | wait_queue_entry_t |
| Entry of the waiting queue. | |
Functions | |
| wait_queue_entry_t * | wait_queue_entry_alloc (void) |
| Allocates the memory for a wait_queue_entry. More... | |
| void | wait_queue_entry_dealloc (wait_queue_entry_t *wait_queue_entry) |
| Frees the memory of a wait_queue_entry. More... | |
| void | init_waitqueue_entry (wait_queue_entry_t *wq, struct task_struct *task) |
| Initialize the waiting queue entry. More... | |
| void | add_wait_queue (wait_queue_head_t *head, wait_queue_entry_t *wq) |
| Adds the element to the waiting queue. More... | |
| void | remove_wait_queue (wait_queue_head_t *head, wait_queue_entry_t *wq) |
| Removes the element from the waiting queue. More... | |
| int | default_wake_function (wait_queue_entry_t *wait, unsigned mode, int sync) |
| The default wake function, a wrapper for try_to_wake_up. More... | |
| wait_queue_entry_t * | sleep_on (wait_queue_head_t *wq) |
| Sets the state of the current process to TASK_UNINTERRUPTIBLE and inserts it into the specified wait queue. More... | |
| void add_wait_queue | ( | wait_queue_head_t * | head, |
| wait_queue_entry_t * | wq | ||
| ) |
Adds the element to the waiting queue.
| head | The head of the waiting queue. |
| wq | The entry we insert inside the waiting queue. |
| int default_wake_function | ( | wait_queue_entry_t * | wait, |
| unsigned | mode, | ||
| int | sync | ||
| ) |
The default wake function, a wrapper for try_to_wake_up.
| wait | The pointer to the wait queue. |
| mode | The type of wait (TASK_INTERRUPTIBLE or TASK_UNINTERRUPTIBLE). |
| sync | Specifies if the wakeup should be synchronous. |
| void init_waitqueue_entry | ( | wait_queue_entry_t * | wq, |
| struct task_struct * | task | ||
| ) |
Initialize the waiting queue entry.
| wq | The entry we initialize. |
| task | The task associated with the entry. |
| void remove_wait_queue | ( | wait_queue_head_t * | head, |
| wait_queue_entry_t * | wq | ||
| ) |
Removes the element from the waiting queue.
| head | The head of the waiting queue. |
| wq | The entry we remove from the waiting queue. |
| wait_queue_entry_t* sleep_on | ( | wait_queue_head_t * | wq | ) |
Sets the state of the current process to TASK_UNINTERRUPTIBLE and inserts it into the specified wait queue.
| wq | Waitqueue where to sleep. |
| wait_queue_entry_t* wait_queue_entry_alloc | ( | void | ) |
Allocates the memory for a wait_queue_entry.
| void wait_queue_entry_dealloc | ( | wait_queue_entry_t * | wait_queue_entry | ) |
Frees the memory of a wait_queue_entry.
| wait_queue_entry | pointer to the wait_queue_entry. |