sys/src/forkcntrl.c File Reference

#include <linux/linkage.h>
#include <system_data_cells.h>
#include <ucbdef.h>
#include <irpdef.h>
#include <fkbdef.h>
#include <ipldef.h>
#include <ipl.h>
#include <internals.h>
#include <linux/smp.h>
#include <asm/current.h>
#include <linux/kernel.h>
#include <linux/sched.h>
#include <asm/hw_irq.h>
#include <queue.h>

Go to the source code of this file.

Classes

struct  fork_lock_struct

Functions

asmlinkage void exe_forkdspth (int i)
 requesting i/o completion processing - see 5.2 22.3.4
void exe_fork (struct _irp *i, struct _ucb *u)
 servicing the device interrupt - see 5.2 22.3.3
void exe_queue_fork (struct _irp *i, struct _ucb *u)
 servicing the device interrupt - see 5.2 22.3.3
int forklock (int i, signed int j)
 forklock - see 5.2 8.3.7
void forkunlock (int i, signed int j)
 forkunlock - see 5.2 8.3.7
asmlinkage void exe_frkipl6dsp (void)
 fork soft int - see 5.2 22.3.4
asmlinkage void exe_frkipl8dsp (void)
 fork soft int - see 5.2 22.3.4
asmlinkage void exe_frkipl9dsp (void)
 fork soft int - see 5.2 22.3.4
asmlinkage void exe_frkipl10dsp (void)
 fork soft int - see 5.2 22.3.4
asmlinkage void exe_frkipl11dsp (void)
 fork soft int - see 5.2 22.3.4
void exe_iofork (struct _irp *i, struct _ucb *u)
 servicing the device interrupt - see 5.2 22.3.3
void exe_std_queue_fork (struct _fkb *fkb)
void exe_std_primitive_fork (long fr3, long fr4, struct _fkb *fkb)


Function Documentation

void exe_fork ( struct _irp i,
struct _ucb u 
)

servicing the device interrupt - see 5.2 22.3.3

Parameters:
i irp
u ucb

call queue_fork

Definition at line 162 of file forkcntrl.c.

References exe_queue_fork(), and _ucb::ucb_l_fr3.

Referenced by exe_iofork().

asmlinkage void exe_forkdspth ( int  i  ) 

requesting i/o completion processing - see 5.2 22.3.4

Parameters:
i interrupt

remove one fork block at a time from the appropriate fork queue

get forklock

call fork routine

unlock fork

next entry TODO redo maybe

asmlinkage void exe_frkipl10dsp ( void   ) 

fork soft int - see 5.2 22.3.4

Definition at line 99 of file forkcntrl.c.

References exe_forkdspth().

asmlinkage void exe_frkipl11dsp ( void   ) 

fork soft int - see 5.2 22.3.4

Definition at line 107 of file forkcntrl.c.

References exe_forkdspth().

asmlinkage void exe_frkipl6dsp ( void   ) 

fork soft int - see 5.2 22.3.4

Definition at line 75 of file forkcntrl.c.

References exe_forkdspth().

asmlinkage void exe_frkipl8dsp ( void   ) 

fork soft int - see 5.2 22.3.4

Definition at line 83 of file forkcntrl.c.

References exe_forkdspth().

asmlinkage void exe_frkipl9dsp ( void   ) 

fork soft int - see 5.2 22.3.4

Definition at line 91 of file forkcntrl.c.

References exe_forkdspth().

void exe_iofork ( struct _irp i,
struct _ucb u 
)

servicing the device interrupt - see 5.2 22.3.3

Parameters:
i irp
u ucb

clear tim bit

call exe_fork

Definition at line 149 of file forkcntrl.c.

References exe_fork(), and _ucb::ucb_l_sts.

void exe_queue_fork ( struct _irp i,
struct _ucb u 
)

servicing the device interrupt - see 5.2 22.3.3

Parameters:
i irp
u ucb

get fork ipl - TODO smp/up support?

locate fork block queue and insert fork block

if first element request softint for it

Definition at line 175 of file forkcntrl.c.

References _fkb::fkb_b_flck, _fkb::fkb_l_fqbl, IPL__IOLOCK10, IPL__IOLOCK11, IPL__IOLOCK8, IPL__IOLOCK9, IPL__QUEUEAST, and smp_gl_cpu_data.

Referenced by exe_fork(), and exe_std_queue_fork().

void exe_std_primitive_fork ( long  fr3,
long  fr4,
struct _fkb fkb 
)

Definition at line 219 of file forkcntrl.c.

References exe_std_queue_fork(), _fkb::fkb_l_fr3, and _fkb::fkb_l_fr4.

void exe_std_queue_fork ( struct _fkb fkb  ) 

Definition at line 214 of file forkcntrl.c.

References exe_queue_fork().

Referenced by exe_std_primitive_fork().

int forklock ( int  i,
signed int  j 
) [inline]

forklock - see 5.2 8.3.7

forklock with spinlock and setipl not 100% according to spec

Parameters:
i lock type
j new ipl

Definition at line 49 of file forkcntrl.c.

References fork_lock_struct::ipl, and spin.

Referenced by exe_altquepkt(), exe_finishio(), exe_insioq(), and exe_std_abortio().

void forkunlock ( int  i,
signed int  j 
) [inline]

forkunlock - see 5.2 8.3.7

forkunlock with spinunlock and setipl not 100% according to spec

Parameters:
i lock type
j new ipl

Definition at line 64 of file forkcntrl.c.

References fork_lock_struct::ipl, and spin.

Referenced by exe_altquepkt(), exe_finishio(), exe_insioq(), and exe_std_abortio().


Generated on Fri Oct 9 10:26:01 2009 for FreeVMS by  doxygen 1.5.5