Main Page | Directories | File List | Globals

wait.c File Reference

#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)


Function Documentation

void wait_list_add struct task_s *  task,
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 }

void wait_list_del struct task_s *  task,
struct wait_list_s *  waitlist
 

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 }

void wait_list_init struct wait_list_s *  waitlist  ) 
 

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 }

void wait_list_remove struct task_s *  task,
struct wait_list_s *  waitlist
 

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:

void wait_list_sleep_on struct task_s *  task,
struct wait_list_s *  waitlist
 

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:

void wait_list_wake_up struct wait_list_s *  waitlist  ) 
 

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:

Dokumentacje wygenerowano programem Doxygen 1.4.2 dla projektu Agnix