#include <system_data_cells.h>
#include <linux/kernel.h>
#include <asm/uaccess.h>
#include <asm/hw_irq.h>
#include <vms_drivers.h>
#include <cpudef.h>
#include <ipldef.h>
#include <pridef.h>
#include <irpdef.h>
#include <acbdef.h>
#include <tastdef.h>
#include <ttyucbdef.h>
#include <com_routines.h>
#include <sch_routines.h>
#include <smp_routines.h>
#include <ipl.h>
#include <queue.h>
#include <linux/mm.h>
#include <linux/slab.h>
#include <internals.h>
Go to the source code of this file.
Functions | |
void | com_std_delattnastp (struct _acb **acb_lh, struct _ucb *ucb, int ipid) |
delivery of attention asts - see 5.2 7.9.2 | |
void | com_post (struct _irp *i, struct _ucb *u) |
void | com_std_delattnast (struct _acb **acb_lh, struct _ucb *ucb) |
delivery of attention asts - see 5.2 7.9.2 | |
void | fork_routine (fr3, fr4, fr5) |
void | dealloc_tast (long arg) |
void | fork_routine2 (fr3, fr4, fr5) |
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 | |
void | com_std_delctrlast (struct _acb **acb_lh, struct _ucb *ucb, int matchchar, int *inclchar_p) |
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, int *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 |
Definition in file comdrvsub.c.
Definition at line 35 of file comdrvsub.c.
References CPU_M_IOPOST, ctl_gl_pcb, ioc_gq_postiq, IPL__IOPOST, smp_send_work(), and SPIN_IOPOST.
Referenced by com_std_post(), exe_cancel(), mb_chanunwait(), and mb_finishread().
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().
delivery of attention asts - see 5.2 7.9.2
acb | pointer to acb list head | |
ucb | ||
ipid | internal pid |
scan acb/fkb list
compare pid if requested, that is non-zero
remove from list
fork it
Definition at line 100 of file comdrvsub.c.
References _acb::acb_l_astqfl, _acb::acb_l_kast, fork, and fork_routine().
Referenced by com_std_delattnast().
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.
void dealloc_tast | ( | long | arg | ) |
Definition at line 71 of file comdrvsub.c.
References kfree(), _tast::tast_v_busy, and _tast::tast_v_lost.
Referenced by fork_routine2().
void fork_routine | ( | fr3 | , | |
fr4 | , | |||
fr5 | ||||
) |
Definition at line 59 of file comdrvsub.c.
References _acb::acb_b_rmod, _acb::acb_l_ast, _acb::acb_l_astprm, _acb::acb_l_kast, _acb::acb_l_pid, and sch_qast().
Referenced by com_std_delattnastp().
void fork_routine2 | ( | fr3 | , | |
fr4 | , | |||
fr5 | ||||
) |
Definition at line 80 of file comdrvsub.c.
References _acb::acb_b_rmod, _acb::acb_l_ast, _acb::acb_l_astprm, _acb::acb_l_kast, _acb::acb_l_pid, dealloc_tast(), sch_qast(), and _tast::tast_b_rmod.
Referenced by com_std_delctrlastp().