#include <linux/smp.h>
#include <linux/kernel.h>
#include <linux/sched.h>
#include <asm/hw_irq.h>
#include <cxbdef.h>
#include <bufiodef.h>
#include <dyndef.h>
#include <irpdef.h>
#include <acbdef.h>
#include <ipldef.h>
#include <pridef.h>
#include <ipl.h>
#include <phddef.h>
#include <system_data_cells.h>
#include <internals.h>
#include <rsndef.h>
#include <exe_routines.h>
#include <ioc_routines.h>
#include <sch_routines.h>
#include <queue.h>
#include <linux/slab.h>
#include <statedef.h>
Go to the source code of this file.
Defines | |
#define | IO__WRITEPBLK 11 |
#define | IO__WRITELBLK 32 |
#define | IO__WRITEVBLK 48 |
Functions | |
kfreebuf (void *d) | |
free single buffer or buffer chain | |
movbuf (struct _irp *i) | |
move i/o buffer data | |
dirpost (struct _irp *i) | |
dirpost entry point | |
bufpost (struct _irp *i) | |
buffered read completion - see 5.2 21.7.3.1 | |
asmlinkage void | ioc_iopost (void) |
I/O postprocessing - se 5.2 21.7. | |
ioc_bufpost (struct _irp *i) |
Definition in file iociopost.c.
#define IO__WRITELBLK 32 |
#define IO__WRITEPBLK 11 |
Referenced by bufpost(), and generic_direct_IO().
#define IO__WRITEVBLK 48 |
bufpost | ( | struct _irp * | i | ) |
buffered read completion - see 5.2 21.7.3.1
dirpost may be mixed into this, too? TODO check
i | irp |
TODO common entrypoint and if bufio bit set only do bufio part?
increment biocnt TODO redo
21.7.3.1 buffered read completion
a little workaround, must be there, but forgot most of it TODO
TODO maybe because some dirio ended up here? TODO check driver configs
invoke movbuf
if mailbox read, call ravail. TODO check read func
dirpost to begin here?
21.7.3.2 common completion
should be either of these iocnt increments
copy eventual diagnostic with movbuf - MISSING
decr ccb_w_ioc - MISSING
if last channel i/o and deaccess pending, call ioc_wakacp - MISSING
set iosb iost etc
do an eventual setting of common event flag - MISSING
deallocate irpes, if any - MISSING?
check for quota bit set, then do ast - MISSING TODO redo
post event flag
queue ast
otherwise free irp
return to sch_astdel
Definition at line 123 of file iociopost.c.
References _pcb, _acb::acb_b_rmod, _acb::acb_l_ast, ctl_gl_pcb, IO__WRITEPBLK, _irp::irp_l_func, _irp::irp_l_iosb, _irp::irp_l_sts, _irp::irp_l_svapte, kfree(), movbuf(), _phd::phd_l_biocnt, _phd::phd_l_diocnt, sch_postef(), sch_qast(), and sch_std_ravail().
Referenced by ioc_bufpost(), and ioc_iopost().
dirpost | ( | struct _irp * | i | ) |
dirpost entry point
TODO restructure
Definition at line 113 of file iociopost.c.
Referenced by ioc_iopost().
ioc_bufpost | ( | struct _irp * | i | ) |
needed by end of file system dispatcher
Definition at line 333 of file iociopost.c.
References bufpost(), _irp::irp_b_rmod, _irp::irp_l_astprm, and _irp::irp_l_wind.
Referenced by ioc_iopost().
asmlinkage void ioc_iopost | ( | void | ) |
I/O postprocessing - se 5.2 21.7.
set ipl
extra global cli TODO check why and still needed?
fetch irp from postprocessing queues
21.7.1 check if negative irp pid (a routine), then perform system i/o completion and call this - MISSING
21.7.2 normal i/o completion
checks bufio flag
21.7.2.2 buffered i/o completion
maybe do ioc_mapvblk - MISSING
do mmg_unlock - MISSING
test present irpes - MISSING
increment diocnt - MISSING?
store bufpost ast in irp and use kast
21.7.2.3 final steps in ioc_iopost - TODO restructure, double
spinlock
spinunlock
reiterate
21.7.2.1 buffered i/o completion
increment biocnt - MISSING?
if filacp set also incr diocnt - MISSING
invoke credit_bytcnt - MISSING
store bufpost ast in irp and use kast
21.7.2.3 final steps in ioc_iopost - TODO restructure, double
spinlock
spinunlock
reiterate
Definition at line 207 of file iociopost.c.
References _pcb, bufpost(), ctl_gl_pcb, dirpost(), exe_ipid_to_pcb(), ioc_bufpost(), ioc_gq_postiq, IPL__IOPOST, IPL__SYNCH, _irp::irp_b_rmod, _irp::irp_l_ast, _irp::irp_l_sts, sch_postef(), sch_qast(), smp_gl_cpu_data, SPIN_IOPOST, and SPIN_SCHED.
kfreebuf | ( | void * | d | ) |
free single buffer or buffer chain
d | buffer |
Definition at line 39 of file iociopost.c.
References _bufio::bufio_b_type, _cxb::cxb_l_link, _cxb::cxb_ps_pktdata, DYN_C_BUFIO, DYN_C_CXB, and kfree().
Referenced by movbuf().
movbuf | ( | struct _irp * | i | ) |
move i/o buffer data
may be single buffer or chain, then free the buffer
i | irp containing the buffer |
Definition at line 69 of file iociopost.c.
References _bufio::bufio_b_type, _bufio::bufio_ps_uva32, _bufio::bufio_w_size, _cxb::cxb_l_link, _cxb::cxb_ps_uva32, _cxb::cxb_w_length, DYN_C_BUFIO, DYN_C_CXB, _irp::irp_l_bcnt, _irp::irp_l_svapte, and kfreebuf().
Referenced by bufpost().