#include <far_pointers.h>
Go to the source code of this file.
Functions | |
void | com_std_delattnast (struct _acb **acb_lh, struct _ucb *ucb) |
delivery of attention asts - see 5.2 7.9.2 | |
void | com_std_delattnastp (struct _acb **acb_lh, struct _ucb *ucb, int ipid) |
void | com_std_delctrlast (struct _acb **acb_lh, struct _ucb *ucb, int matchchar, int32 *inclchar_p) |
void | com_std_delctrlastp (struct _acb **acb_lh, struct _ucb *ucb, int ipid, int matchchar, int32 *inclchar_p) |
delivery of out-of-band attention asts - see 5.2 7.9.5.3 | |
void | com_std_drvdealmem (void *ptr) |
int | com_std_flushattns (struct _pcb *pcb, struct _ucb *ucb, int chan, struct _acb **acb_lh) |
flushing an attention ast list - see 5.2 7.9.3 | |
int | com_std_flushctrls (struct _pcb *pcb, struct _ucb *ucb, int chan, struct _acb **acb_lh, int32 *mask_p) |
flushing an attention ast list - see 5.2 7.9.5.4 | |
void | com_std_post (struct _irp *irp, struct _ucb *ucb) |
void | com_std_post_nocnt (struct _irp *irp) |
int | com_std_setattnast (struct _irp *irp, struct _pcb *pcb, struct _ucb *ucb, struct _ccb *ccb, struct _acb **acb_lh) |
set attention ast mechanism - see 5.2 7.9.1 | |
int | com_std_setctrlast (struct _irp *irp, struct _pcb *pcb, struct _ucb *ucb, struct _ccb *ccb, struct _acb **acb_lh, int mask, struct _tast **tast_p) |
set out-of-band attention ast mechanism - see 5.2 7.9.5.2 |
delivery of attention asts - see 5.2 7.9.2
acb | pointer to acb list head | |
ucb |
Definition at line 55 of file comdrvsub.c.
References com_std_delattnastp().
Referenced by exe_std_wrtmailbox(), mb_fdt_read(), mb_fdt_setmode(), mb_fdt_write(), and mb_finishread().
void com_std_delctrlastp | ( | struct _acb ** | acb_lh, | |
struct _ucb * | ucb, | |||
int | ipid, | |||
int | matchchar, | |||
int * | inclchar_p | |||
) |
delivery of out-of-band attention asts - see 5.2 7.9.5.3
acb | pointer to acb list head | |
ucb | ||
ipid | internal pid | |
matchchar | ||
inclchar_p |
already entered with device lock and ipl
scan tast list
check for tast mask - MISSING
if pid nonzero, compare with tast
skip if busy
mark as busy
mark matchchar in ast param
do fork process
Definition at line 127 of file comdrvsub.c.
References _acb::acb_b_rmod, _acb::acb_l_astqfl, fork, fork_routine2(), _tast::tast_l_astprm, _tast::tast_l_mask, _tast::tast_l_pid, and _tast::tast_v_busy.
Referenced by com_std_delctrlast().
void com_std_drvdealmem | ( | void * | ptr | ) |
Definition at line 162 of file comdrvsub.c.
References kfree().
Referenced by com_std_flushctrls(), com_std_setctrlast(), and mb_finishread().
flushing an attention ast list - see 5.2 7.9.3
pcb | ||
ucb | ||
chan | i/o channel | |
acb | pointer to acb list head |
set ipl and device lock - MISSING
scan acb/fkb list
if pid matches
remove from queue
increment ast quota - MISSING
set ipl and device unlock - MISSING
Definition at line 174 of file comdrvsub.c.
References _acb::acb_l_astqfl, _acb::acb_l_kast, kfree(), SS__NORMAL, and _ucb::ucb_b_dipl.
Referenced by com_std_setattnast().
int com_std_flushctrls | ( | struct _pcb * | pcb, | |
struct _ucb * | ucb, | |||
int | chan, | |||
struct _acb ** | acb_lh, | |||
int * | mask_p | |||
) |
flushing an attention ast list - see 5.2 7.9.5.4
pcb | ||
ucb | ||
chan | i/o channel | |
acb | pointer to acb list head | |
mask |
device lock - MISSING
scan list
compare pid
remove from list
if bust mark as lost
dealloc if not busy
return ast quota - MISSING
build summary mask if no pid match
unlock device - lower down? - MISSING
replace summary mask with the one built
Definition at line 207 of file comdrvsub.c.
References _acb::acb_l_astqfl, com_std_drvdealmem(), SS__NORMAL, _tast::tast_l_flink, _tast::tast_l_mask, _tast::tast_l_pid, _tast::tast_v_busy, _tast::tast_v_lost, and _ltrm_ucb::ucb_l_tl_outband.
Referenced by com_std_setctrlast().
void com_std_post_nocnt | ( | struct _irp * | irp | ) |
int com_std_setattnast | ( | struct _irp * | irp, | |
struct _pcb * | pcb, | |||
struct _ucb * | ucb, | |||
struct _ccb * | ccb, | |||
struct _acb ** | acb_lh | |||
) |
set attention ast mechanism - see 5.2 7.9.1
irp | ||
pcb | ||
ucb | ||
ccb | ||
acb | pointer to acb list head |
if qio p1 is zero, then it is flush
allocate expanded acb, TODO: size
copy data
device lock and set ipl - MISSING lock
insert into list
device unlock and set ipl - MISSING unlock
Definition at line 262 of file comdrvsub.c.
References _acb::acb_b_rmod, _acb::acb_l_astqfl, _acb::acb_l_kast, com_std_flushattns(), ctl_gl_ccbbase, _irp::irp_l_qio_p1, _irp::irp_l_qio_p2, kmalloc(), SS__NORMAL, and _ucb::ucb_b_dipl.
Referenced by mb_fdt_setmode().
int com_std_setctrlast | ( | struct _irp * | irp, | |
struct _pcb * | pcb, | |||
struct _ucb * | ucb, | |||
struct _ccb * | ccb, | |||
struct _acb ** | acb_lh, | |||
int | mask, | |||
struct _tast ** | tast_p | |||
) |
set out-of-band attention ast mechanism - see 5.2 7.9.5.2
irp | ||
pcb | ||
ucb | ||
ccb | ||
acb | pointer to acb list head | |
tast_p | terminal ast list |
if qio p1 or p2 is zero, then it is flush
set ipl device lock - MISSING
scan list
find pid and channel
if tast in use mark it as lost and remove from list
else allocate, initialize a new terminal ast
charge ast quota - MISSING
copy irp data etc
insert tast
set ipl device unlock - MISSING
set outband
Definition at line 298 of file comdrvsub.c.
References _acb::acb_l_astqfl, com_std_drvdealmem(), com_std_flushctrls(), _irp::irp_l_qio_p1, kmalloc(), SS__NORMAL, _tast::tast_l_ast, _tast::tast_l_astprm, _tast::tast_l_flink, _tast::tast_l_mask, _tast::tast_l_pid, _tast::tast_v_busy, _tast::tast_v_lost, _tast::tast_w_chan, and _ltrm_ucb::ucb_l_tl_outband.