#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.
1.5.5