GNAT: The GNU New York University Ada Translator
By Gavin Smyth
Dr. Dobb's Journal December 1997
Dpmi_Error: exception; -- Thrown if there is a system problem Start_Of_Locked_Code, End_Of_Locked_Code: Unsigned_Char; pragma Import( Asm, Start_Of_Locked_Code, "start_of_locked_code" ); pragma Import( Asm, End_Of_Locked_Code, "end_of_locked_code" ); Code: aliased Dpmi_Mem_Info; ... Dpmi_Get_Segment_Base_Address( My_Cs, Code.Address ); Code.Address := Code.Address + To_Long( Start_Of_Locked_Code'Address ); Code.Size := To_Long( End_Of_Locked_Code'Address ) - To_Long( Start_Of_Locked_Code'Address ); if( Dpmi_Lock_Linear_Region( Code'access ) /= 0 ) then raise Dpmi_Error; end if;
Example 4: Locking the keyboard-interrupt code area.
Copyright © 1997, Dr. Dobb's Journal