home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: Graphics / Graphics.zip / os2apipm.zip / OS2API / OS2-BSE.ADS < prev    next >
Text File  |  1996-08-10  |  8KB  |  208 lines

  1.  
  2. -- ╔═══════════════════════════════════════════════════════════════════╗
  3. -- ║       D E S I G N   E N G I N E R I N G              ║D║S║        ║
  4. -- ║            S O F T W A R E                           ╚═╩═╝        ║
  5. -- ║                                                                   ║
  6. -- ║        Package  OS2.BSE                                           ║
  7. -- ║                                                                   ║
  8. -- ║        Author :  Leonid Dulman     1995                           ║
  9. -- ║                                                                   ║
  10. -- ║             GNU ADA RUNTIME LIBRARY (GNARL) COMPONENTS            ║
  11. -- ║                                                                   ║
  12. -- ║             root part of os/2 api functions                       ║
  13. -- ║                                                                   ║
  14. -- ╚═══════════════════════════════════════════════════════════════════╝
  15.  
  16. with Interfaces.C;         use Interfaces.C;
  17. with Interfaces.C.Strings; use Interfaces.C.Strings;
  18.  
  19. package Os2.Bse is
  20. pragma Preelaborate (BSE);
  21.  
  22.    --*** General services --
  23.  
  24. function DosBeep (Freq : ULONG; Dur : ULONG) return APIRET;
  25. pragma Import (C, DosBeep, Link_Name => "_DosBeep");
  26.  
  27.        --** Process and Thread support --
  28. procedure DosExit(action:ULONG ; result:ULONG );
  29. pragma Import(c,DosExit, Link_name=>"_DosExit");
  30.  
  31.        -- DosExit codes --
  32.  
  33.  EXIT_THREAD  : constant ushort :=  0 ;
  34.  EXIT_PROCESS : constant ushort :=  1 ;
  35.  
  36. --  ╔════════════════════════════════════════════╗
  37. --  ║  #define DosCwait           DosWaitChild   ║
  38. --  ║  #define DosSetPrty         DosSetPriority ║
  39. --  ╚════════════════════════════════════════════╝
  40. --     #include <bsetib.h>
  41.  
  42.     --   type  VOID APIENTRY FNTHREAD(:ULONG);
  43.  
  44. type PFNTHREAD is access procedure (prm:ULONG);
  45.  
  46. function DosCreateThread(ptd    :PTID      ;
  47.                          pfn    :PFNTHREAD ;
  48.                          param  :ULONG     ;
  49.                          flag   :ULONG     ;
  50.                          cbStack:ULONG     ) return apiret;
  51. pragma Import(c,DosCreateThread, Link_name=>"_DosCreateThread");
  52.  
  53. function DosResumeThread(td:TID )return apiret;
  54. pragma Import(c,DosResumeThread, Link_name=>"_DosResumeThread");
  55.  
  56. function DosSuspendThread(td:TID )return apiret;
  57. pragma Import(c,DosSuspendThread, Link_name=>"_DosSuspendThread");
  58.  
  59.  
  60. --
  61. --      Thread Information Block (TIB)
  62. --
  63.  
  64. type TIB2 is record
  65.  tib2_ultid             :ULONG   ;      -- Thread I.D. --
  66.  tib2_ulpri             :ULONG   ;      -- Thread priority --
  67.  tib2_version           :ULONG   ;      -- Version number for this structure --
  68.  tib2_usMCCount         :USHORT  ;      -- Must Complete count --
  69.  tib2_fMCForceFlag      :USHORT  ;      -- Must Complete force flag --
  70. end record;
  71. type PTIB2 is access all TIB2;
  72.  
  73. type TIB is record                     -- TIB Thread Information Block --
  74.   tib_pexchain         :PVOID   ;      -- Head of exception handler chain --
  75.   tib_pstack           :PVOID   ;      -- Pointer to base of stack --
  76.   tib_pstacklimit      :PVOID   ;      -- Pointer to end of stack --
  77.   tib_ptib2            :PTIB2   ;      -- Pointer to system specific TIB --
  78.   tib_version          :ULONG   ;      -- Version number for this TIB structure --
  79.   tib_ordinal          :ULONG   ;      -- Thread ordinal number        --
  80. end record;
  81. type PTIB is access all TIB;
  82.  
  83. --
  84. --      Process Information Block (PIB)
  85. --
  86.  
  87. type PIB is record                     -- PIB Process Information Block --
  88.    pib_ulpid       :ULONG   ;          -- Process I.D. --
  89.    pib_ulppid      :ULONG   ;          -- Parent process I.D. --
  90.    pib_hmte        :ULONG   ;          -- Program (.EXE) module handle --
  91.    pib_pchcmd      :PCHAR   ;          -- Command line pointer --
  92.    pib_pchenv      :PCHAR   ;          -- Environment pointer --
  93.    pib_flstatus    :ULONG   ;          -- Process' status bits --
  94.    pib_ultype      :ULONG   ;          -- Process' type code --
  95. end record;
  96. type PPIB is access all PIB;
  97. function DosGetInfoBlocks(pptib:access PTIB;
  98.                           pppib:access PPIB) return apiret;
  99. pragma Import(c,DosGetInfoBlocks, Link_name=>"_DosGetInfoBlocks");
  100.  
  101. function DosKillThread(td:TID ) return apiret;
  102. pragma Import(c,DosKillThread, Link_name=>"_DosKillThread");
  103.  
  104.        -- Action code values --
  105.  DCWA_PROCESS       : constant ushort := 0 ;
  106.  DCWA_PROCESSTREE   : constant ushort := 1 ;
  107.  
  108.        -- Wait option values --
  109.  DCWW_WAIT          : constant ushort := 0 ;
  110.  DCWW_NOWAIT        : constant ushort := 1 ;
  111.  
  112. type RESULTCODES  is record      -- resc --
  113.    codeTerminate       :ULONG ;
  114.    codeResult          :ULONG ;
  115. end record;  -- RESULTCODES;
  116. type PRESULTCODES is access all RESULTCODES;
  117.  
  118. function DosWaitChild(action:ULONG        ;
  119.                       option:ULONG        ;
  120.                       pres  :PRESULTCODES ;
  121.                       ppi   :PPID         ;
  122.                            p:PID          ) return apiret;
  123. pragma Import(c,DosWaitChild, Link_name=>"_DosWaitChild");
  124.  
  125. function DosWaitThread(pti :PTID ;option:ULONG )  return apiret;
  126. pragma Import(c,DosWaitThread, Link_name=>"_DosWaitThread");
  127.  
  128. function DosSleep(msec:ULONG ) return apiret;
  129. pragma Import (C, DosSleep, Link_name => "_DosSleep");
  130.  
  131. function DosDebug(pdbgbuf:PVOID ) return apiret;
  132. pragma Import(c,DosDebug, Link_name=>"_DosDebug");
  133.  
  134.  
  135.        -- codeTerminate values (also passed to ExitList routines) --
  136.  
  137.  TC_EXIT            : constant ushort := 0 ;
  138.  TC_HARDERROR       : constant ushort := 1 ;
  139.  TC_TRAP            : constant ushort := 2 ;
  140.  TC_KILLPROCESS     : constant ushort := 3 ;
  141.  TC_EXCEPTION       : constant ushort := 4 ;
  142.  
  143. type PFNEXITLIST is access procedure(pfn:ULONG);
  144.  
  145. function DosEnterCritSec return apiret;
  146. pragma Import(c,DosEnterCritSec, Link_name=>"_DosEnterCritSec");
  147.  
  148. function DosExitCritSec return apiret;
  149. pragma Import(c,DosExitCritSec, Link_name=>"_DosExitCritSec");
  150.  
  151. function DosExitList(ordercode:ULONG       ;
  152.                      pfn      :PFNEXITLIST ) return apiret;
  153. pragma Import(c,DosExitList, Link_name=>"_DosExitList");
  154.  
  155.        -- DosExitList functions --
  156.  
  157.  EXLST_ADD          : constant ushort := 1 ;
  158.  EXLST_REMOVE       : constant ushort := 2 ;
  159.  EXLST_EXIT         : constant ushort := 3 ;
  160.  
  161. function DosExecPgm(pObjname :PCH          ;
  162.                     cbObjname:ULONG        ;
  163.                     execFlag :ULONG        ;
  164.                     pArg     :PSZ          ;
  165.                     pEnv     :PSZ          ;
  166.                     pRes     :PRESULTCODES ;
  167.                     pName    :PCH          ) return apiret;
  168. pragma Import(c,DosExecPgm, Link_name=>"_DosExecPgm");
  169.  
  170.        -- DosExecPgm functions --
  171.  
  172.  EXEC_SYNC          : constant ushort := 0 ;
  173.  EXEC_ASYNC         : constant ushort := 1 ;
  174.  EXEC_ASYNCRESULT   : constant ushort := 2 ;
  175.  EXEC_TRACE         : constant ushort := 3 ;
  176.  EXEC_BACKGROUND    : constant ushort := 4 ;
  177.  EXEC_LOAD          : constant ushort := 5 ;
  178.  EXEC_ASYNCRESULTDB : constant ushort := 6 ;
  179.  
  180. function DosSetPriority(scope :ULONG ;
  181.                         class :ULONG ;
  182.                         delt  :LONG  ;
  183.                         PorTid:ULONG ) return apiret;
  184. pragma Import(c,DosSetPriority, Link_name=>"_DosSetPriority");
  185.  
  186.        -- Priority scopes --
  187.  
  188.  PRTYS_PROCESS      : constant ushort := 0 ;
  189.  PRTYS_PROCESSTREE  : constant ushort := 1 ;
  190.  PRTYS_THREAD       : constant ushort := 2 ;
  191.        -- Priority classes --
  192.  
  193.  PRTYC_NOCHANGE         : constant ushort := 0 ;
  194.  PRTYC_IDLETIME         : constant ushort := 1 ;
  195.  PRTYC_REGULAR          : constant ushort := 2 ;
  196.  PRTYC_TIMECRITICAL     : constant ushort := 3 ;
  197.  PRTYC_FOREGROUNDSERVER : constant ushort := 4 ;
  198.  
  199.        -- Priority deltas --
  200.  
  201.  PRTYD_MINIMUM          : constant  short := -31;
  202.  PRTYD_MAXIMUM          : constant  short :=  31;
  203.  
  204. function DosKillProcess(action:ULONG ;p:PID)  return apiret;
  205. pragma Import(c,DosKillProcess, Link_name=>"_DosKillProcess");
  206.  
  207. end Os2.BSE;
  208.