#include <linux/sched.h>
#include <linux/smp.h>
#include <cebdef.h>
#include <cpudef.h>
#include <ipldef.h>
#include <ssdef.h>
#include <system_data_cells.h>
#include <misc_routines.h>
#include <sch_routines.h>
#include <ipl.h>
#include <internals.h>
#include <queue.h>
Go to the source code of this file.
Functions | |
int | exe_wait (unsigned int efn, unsigned int mask, int waitallflag, void *dummy) |
waiting for av event flag - See 5.2 9.6 | |
int | exe_waitfr (unsigned int efn) |
int | exe_wflor (unsigned int efn, unsigned int mask) |
int | exe_wfland (unsigned int efn, unsigned int mask) |
Definition in file syswait.c.
int exe_wait | ( | unsigned int | efn, | |
unsigned int | mask, | |||
int | waitallflag, | |||
void * | dummy | |||
) |
waiting for av event flag - See 5.2 9.6
Most is implemented, but not some waitqueues, due to some forgotten problems. Must verify that common event flags works properly. Also something in the top of exe_wait modifies the return stack.
efn | event flag number | |
mask | event flag mask | |
waitallflag | should wait for all set in mask | |
dummy | for the stack return address change |
set ipl 2
legal efn check
determine event flag cluster
test if common event flag and existance
sched spinlock
find waitqueue
if the wait condition is not satisfied
unlock sched
if the wait condition is satisfied
handle waitall flag
TODO: check if waitall and mask is handled right
handle waitall set sts flag
TODO: check if this insque still has problems. should it be here
if unsatisfied, fix the return address
jump sch_wait
Definition at line 35 of file syswait.c.
References _pcb, _ceb::ceb_l_wqfl, ctl_gl_pcb, fixup_hib_pc(), getefc(), getefcp(), IPL__ASTDEL, IPL__SCHED, sch_gq_lefwq, sch_wait(), SPIN_SCHED, SS__ILLEFC, SS__NORMAL, SS__UNASEFC, and _wqh::wqh_l_wqfl.
Referenced by exe_waitfr(), exe_wfland(), and exe_wflor().
int exe_waitfr | ( | unsigned int | efn | ) |
int exe_wfland | ( | unsigned int | efn, | |
unsigned int | mask | |||
) |
int exe_wflor | ( | unsigned int | efn, | |
unsigned int | mask | |||
) |