DevHelp RegisterStackUsage

This service indicates the expected stack usage of the physical device driver to the interrupt manager.

C
USHORT APIENTRY DevHelp_RegisterStackUsage( PVOID StackUsageData )

Assembler
 MOV  BX,OFFSET DS:StackUsage MOV  DL,DevHlp_RegisterStackUsage

CALL [Device_Help] 

C
 typedef struc _STACKUSAGEDATA { USHORT Size;          /*  num of bytes in structure including itself (14) */ USHORT Flags;        /*  Bit 0x0001 'on' indicates that the interrupt    */ /* procedure enables interrupts. All other bits  */ /* are reserved. */ USHORT IRQLevel;      /*  IRQ of interrupt handler that is being described*/ /* by the following data. */ USHORT CLIStack;      /*  Number of bytes of stack used in the interrupt  */ /* procedure when interrupts are disabled. */ USHORT STIStack;      /*  Number of bytes of stack used after interrupt   */ /* procedure enables interrupts. */ USHORT EOIStack;      /*  Number of bytes of stack used after interrupt   */ /* procedure issues EOI. */ USHORT NestingLevel;  /*  Maximum number of levels that the device driver */ /* expects to nest. */ } STACKUSAGEDATA; 
 * StackUsageData (PVOID):14 byte structure

Assembler
 MOV  BX,OFFSET DS:StackUsage 

C
Success Indicator: Clear if successful.

Possible errors: Carry flag set if stack usage exceeds system maximum. If this happens, the physical device driver must uninstall itself.

Assembler
 'C' Clear if successful.

'C' Set if stack usage exceeds system maximum. If this happens, the physical device driver must deinstall itself. 

Remarks
The StackUsage data structure has the following format: StackUsage    STRUC SU_cbStruct  DW 14     ; Number of bytes in structure, including itself. SU_flags     DW ? ; Bit 0x0001 'on' indicates that the interrupt ; procedure enables interrupts. All other bits ; are reserved. SU_iIRQ      DW ? ; IRQ of interrupt handler that is being ; described by the following data. SU_cbStackCLI DW ? ; Number of bytes of stack used in the ; interrupt procedure when interrupts are disabled. SU_cbStackSTI DW ? ; Number of bytes of stack used after interrupt ; procedure enables interrupts. SU_cbStackEOI DW ? ; Number of bytes of stack used after interrupt ; procedure issues EOI. SU_cNest     DW ? ; Maximum number of levels that the device ; driver expects to nest. StackUsage    ENDS A device must issue RegisterStackUsage once for each IRQ that it services. OS/2 2.1 (and later) supports a total of 8KB of interrupt stack.

C

 * 1) include "dhcalls.h"

USHORT APIENTRY DevHelp_RegisterStackUsage( PVOID StackUsageData ) 