#include <agnix/agnix.h>
#include <agnix/list.h>
#include <agnix/tasks.h>
#include <agnix/sched.h>
#include <agnix/spinlock.h>
#include <agnix/wait.h>
Include dependency graph for wait.c:
Go to the source code of this file.
Functions | |
void | wait_list_add (struct task_s *task, struct wait_list_s *waitlist) |
void | wait_list_del (struct task_s *task, struct wait_list_s *waitlist) |
void | wait_list_sleep_on (struct task_s *task, struct wait_list_s *waitlist) |
void | wait_list_remove (struct task_s *task, struct wait_list_s *waitlist) |
void | wait_list_wake_up (struct wait_list_s *waitlist) |
void | wait_list_init (struct wait_list_s *waitlist) |
|
Definition at line 21 of file wait.c. References flags. Referenced by wait_list_sleep_on(). 00022 { 00023 u32 flags; 00024 00025 spin_lock_irqsave(&(waitlist->lock), flags); 00026 list_add(&(task->wait_list), &(waitlist->list)); 00027 spin_unlock_irqrestore(&(waitlist->lock), flags); 00028 }
|
|
Definition at line 30 of file wait.c. References flags. Referenced by wait_list_remove(). 00031 { 00032 u32 flags; 00033 00034 spin_lock_irqsave(&(waitlist->lock), flags); 00035 list_del(&(task->wait_list)); 00036 spin_unlock_irqrestore(&(waitlist->lock), flags); 00037 }
|
|
Definition at line 74 of file wait.c. Referenced by adi_sysconsole_init(). 00075 { 00076 INIT_LIST_HEAD(&waitlist->list); 00077 spin_lock_init(&waitlist->lock); 00078 }
|
|
Definition at line 46 of file wait.c. References wait_list_del(). Referenced by syscons_read(). 00047 { 00048 wait_list_del(task, waitlist); 00049 }
Here is the call graph for this function: |
|
Definition at line 39 of file wait.c. References sched_deactivate_task(), schedule_task(), and wait_list_add(). Referenced by syscons_read(). 00040 { 00041 wait_list_add(task, waitlist); 00042 sched_deactivate_task(task); 00043 schedule_task(); 00044 }
Here is the call graph for this function: |
|
Definition at line 51 of file wait.c. References flags, and sched_activate_task(). Referenced by syscons_write_char(). 00052 { 00053 struct list_head *tmp; 00054 struct task_s *task; 00055 u32 flags; 00056 00057 spin_lock_irqsave(&waitlist->lock, flags); 00058 00059 if (list_empty(&waitlist->list)) { 00060 spin_unlock_irqrestore(&waitlist->lock, flags); 00061 return; 00062 } 00063 00064 list_for_each(tmp, &waitlist->list) { 00065 task = list_entry(tmp, struct task_s, wait_list); 00066 sched_activate_task(task); 00067 } 00068 00069 INIT_LIST_HEAD(&waitlist->list); 00070 00071 spin_unlock_irqrestore(&waitlist->lock, flags); 00072 }
Here is the call graph for this function: |