1 ////////////////////////////////////////////////////////////////////////////////////
2 //         w32chan.h           Fish's new i/o scheduling logic
3 ////////////////////////////////////////////////////////////////////////////////////
4 // (c) Copyright "Fish" (David B. Trout), 2001-2009. Released under the Q Public License
5 // (http://www.hercules-390.org/herclic.html) as modifications to Hercules.
6 ////////////////////////////////////////////////////////////////////////////////////
7 
8 #ifndef _W32CHANN_H_
9 #define _W32CHANN_H_
10 
11 /////////////////////////////////////////////////////////////////////////////
12 // I/O Scheduler functions...
13 
14 extern void  InitIOScheduler    // initialize i/o scheduler vars
15 
16 //      Only call this function ONCE -- at startup! From
17 //      then on, just set the variables directly as needed.
18 
19 (
20     int    arch_mode,       // (for calling execute_ccw_chain)
21     int*   devt_prio,       // (ptr to device thread priority)
22     int    devt_timeout,    // (maximum device thread wait time)
23     long   devt_max         // (maximum #of device threads allowed)
24 );
25 
26 extern int   ScheduleIORequest(void* pDevBlk, unsigned short wDevNum, int* pnDevPrio);
27 extern void  TrimDeviceThreads();
28 extern void  KillAllDeviceThreads();
29 
30 /////////////////////////////////////////////////////////////////////////////
31 // I/O Scheduler variables...
32 
33 extern long   ios_devtwait;     // #of threads currently idle
34 extern int    ios_devtnbr;      // #of threads currently active
35 extern int    ios_devthwm;      // max #of threads that WERE active
36 extern int    ios_devtmax;      // max #of threads there can be
37 extern int    ios_devtunavail;  // #of times 'idle' thread unavailable
38 extern int    ios_arch_mode;    // architectural mode
39 
40 /////////////////////////////////////////////////////////////////////////////
41 
42 #endif // _W32CHANN_H_
43