Annotation of os2sdk/os2doc/devhlp.txt, revision 1.1

1.1     ! root        1: ###############
        !             2: 
        !             3: Additional Device Helpers Routines
        !             4: 
        !             5: The following describe additional device helper routines that
        !             6: are not documented in the MS OS/2 Device Drivers Guide Update.
        !             7: There are the following additional routines:
        !             8: 
        !             9:         AllocateGDTSelector     2DH
        !            10:         PhysToGDTSelector       2EH
        !            11:         RealToProt              2FH
        !            12:         ProtToReal              30H
        !            13: 
        !            14: Also note that the correct call code for the VerifyAccess
        !            15: routine is 27H, not 29H as previously listed.
        !            16: 
        !            17: AllocateGDTSelector - Allocate GDT Selectors
        !            18: 
        !            19: 
        !            20: Purpose
        !            21: 
        !            22: The AllocateGDTSelector routines allocates one or more GDT selectors,
        !            23: copying them to the specified array.
        !            24: 
        !            25: Calling Sequence:
        !            26: 
        !            27: 
        !            28: MOV            ES, SelectorArrayHigh    ; Pointer to array
        !            29: MOV            DI, SelectorArrayLow     ;
        !            30: MOV            CX, Selectors            ;Number of selectors 
        !            31: MOV            DL, DEVHLP_ALLOCATEGDT
        !            32: CALL           [Device_Help]
        !            33: 
        !            34: where:
        !            35: 
        !            36: 
        !            37: SelectorArrayHigh and SelectorArrayLow are the high- and low-order words of
        !            38: the address of an array to recieve the allocated selectors.
        !            39: 
        !            40: 
        !            41: Selectors specifies the number of selectors to allocate.
        !            42: 
        !            43: Returns:
        !            44: 
        !            45: C - set if error.
        !            46: 
        !            47: 
        !            48: AX = Error code:
        !            49:   o Invalid address
        !            50: 
        !            51: 
        !            52:   o Zero selectors requested
        !            53: 
        !            54: 
        !            55:   o Not enough selectors available
        !            56: 
        !            57: C -cleared if successful.
        !            58: 
        !            59: See Also:
        !            60: 
        !            61: PhysToGDTSelector
        !            62: 
        !            63: 
        !            64: 
        !            65: 
        !            66: PhysToGDTSelector - Convert Physical Address to GDT Selector
        !            67: 
        !            68: 
        !            69: Purpose:
        !            70: 
        !            71: The PhysToGDTSelector routine converts a physical memory address to a
        !            72: designated GDT selector.  The indicated segment must be locked (either long
        !            73: or short term) before issuing this request.
        !            74: 
        !            75: 
        !            76: Once this call has been issued for a particular selector, that
        !            77: addressability will remain valid until the device driver changes its
        !            78: content via a subsequent PhysToGDTSelector request referencing the same GDT
        !            79: selector.  This call can be made in protect mode only.
        !            80: 
        !            81: Calling Sequence:
        !            82: 
        !            83: 
        !            84: MOV            AX, AddressHigh  ; 32-bit physical address
        !            85: MOV            BX, AddressLow   ;
        !            86: MOV            CX, Size
        !            87: MOV            SI, Selector
        !            88: MOV            DL, DEVHLP_PHYSTOGDT
        !            89: CALL [Device_Helper]
        !            90: 
        !            91: where:
        !            92: 
        !            93: AddressHigh and AddressLow are the high- and low-order words of the 
        !            94: current 32-bit physical address.
        !            95: 
        !            96: Size is the 16-bit segment size, not the limit. It is converted to a limit
        !            97: before editing descriptors. A value of zero indicates 65536 bytes.
        !            98: 
        !            99: 
        !           100: Selector identifies the descriptor to be setup.
        !           101: 
        !           102: Returns:
        !           103: 
        !           104: C - set if error.
        !           105: 
        !           106: 
        !           107: AX = Error codes:
        !           108: 
        !           109:   o Invalid address
        !           110:   o Invalid selector
        !           111: 
        !           112: 
        !           113: C -cleared if successful.
        !           114: 
        !           115: See Also:
        !           116: 
        !           117: 
        !           118: 
        !           119: 
        !           120: RealToProt
        !           121: 
        !           122: RealToProt - Switch from Real to Protect Mode
        !           123: 
        !           124: 
        !           125: Purpose:
        !           126: 
        !           127: The RealToProt routine changes the machine's execution mode from Real to
        !           128: Protected. This call is used by a device driver which has received control
        !           129: in Real mode but which has GDT selectors filled in by a PhysToGDTSelector
        !           130: request it must access.  Callable only at interrupt time.
        !           131: 
        !           132: 
        !           133: This routine performs the necessary operations required to switch the
        !           134: processor from Real to Protect mode.  The ES register will contain zero
        !           135: upon exit.  The SS register will point to the interrupt stack.
        !           136: 
        !           137: Calling Sequence:
        !           138: 
        !           139: 
        !           140: MOV            DS, HeaderHigh   ; Device header
        !           141: MOV            SI, HeaderLow    ;
        !           142: MOV            DH, DEVHLP_REALTOPROT
        !           143: CALL           [Device_Helper]
        !           144: 
        !           145: where:
        !           146: 
        !           147: 
        !           148: HeaderHigh and HeaderLow are the high- and low-order words of the address
        !           149: of the device header of requesting device driver.
        !           150: 
        !           151: Returns:
        !           152: 
        !           153: C -set if processor is already in Protect Mode.
        !           154: 
        !           155: 
        !           156: C -cleared if successful. ES set to 0 on success.
        !           157: 
        !           158: 
        !           159: CS set to caller's protect mode CS on success.
        !           160: 
        !           161: 
        !           162: DS set to caller's protect mode DS on success.
        !           163: 
        !           164: 
        !           165: SS set to the interrupt stack on success.
        !           166: 
        !           167: See Also:
        !           168: 
        !           169: ProtToReal
        !           170: 
        !           171: 
        !           172: 
        !           173: ProtToReal - Switch from Protect to Real Mode
        !           174: 
        !           175: 
        !           176: Purpose:
        !           177: 
        !           178: The ProtToReal routine changes the machine's execution mode from Protected
        !           179: back to Real.  This call is used following device driver processing which
        !           180: was done in Protected mode as a result of an earlier RealToProt request.
        !           181: Callable only at interrupt time.
        !           182: 
        !           183: 
        !           184: This routine performs the necessary operations required to switch the
        !           185: processor from Protect to Real mode. This routine should only be called
        !           186: when the processor is in protect mode.
        !           187: 
        !           188: Calling Sequence:
        !           189: 
        !           190: 
        !           191: MOV            DS, HeaderHigh   ;Device header
        !           192: MOV            SI, HeaderLow    ;
        !           193: MOV            DH, DEVHLP_PROTTOREAL
        !           194: CALL           [Device_Helper]
        !           195: 
        !           196: where:
        !           197: 
        !           198: 
        !           199: HeaderHigh and HeaderLow are the high- and low-order words of the address
        !           200: of the device header of requesting device driver.
        !           201: 
        !           202: Returns:
        !           203: 
        !           204: C -set if processor is already in Real Mode.
        !           205: 
        !           206: 
        !           207: C -cleared if successful. ES set to caller's real mode DS on success.
        !           208: 
        !           209: 
        !           210: CS set to caller's real mode CS on success.
        !           211: 
        !           212: 
        !           213: DS set to caller's real mode DS on success.
        !           214: 
        !           215: 
        !           216: SS set to the interrupt stack on success.
        !           217: 
        !           218: See Also:
        !           219: 
        !           220: RealToProt

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.