home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / mod201j.zip / modula2.exe / os2api / dosproce.def < prev    next >
Text File  |  1994-05-03  |  10KB  |  291 lines

  1. DEFINITION MODULE DOSPROCESS;
  2.  
  3. (*************************************************************************
  4.   OS/2 2.0 interface for process and thread support.
  5.  
  6.   (c) 1992 by Juergen Neuhoff
  7. **************************************************************************)
  8.  
  9. (*$XL+       Modula-2 language extensions: '_' allowed for symbol names *)
  10. (*$CDECL+    C-style procedures                                         *)
  11. (*$A         default alignment for record fields                        *)
  12.  
  13. IMPORT SYSTEM;
  14. FROM   OS2DEF IMPORT TYPEPREFIX, APIRET, HMODULE, LHANDLE, TID, PID;
  15.  
  16.  
  17. TYPE (* Thread Information Block (TIB) *)
  18.   TIB2                = RECORD       (* system specifiy TIB *)
  19.     CASE                : TYPEPREFIX OF
  20.     | TRUE              :
  21.       tib2_ultid        : LONGCARD;  (* Thread I.D. *)
  22.       tib2_ulpri        : LONGCARD;  (* Thread priority *)
  23.       tib2_version      : LONGCARD;  (* Version number for this structure *)
  24.       tib2_usMCCount    : CARDINAL;  (* Must Complete count *)
  25.       tib2_fMCForceFlag : CARDINAL;  (* Must Complete force flag *)
  26.     | FALSE             :
  27.       Tid               : LONGCARD;  (* Thread I.D. *)
  28.       Pri               : LONGCARD;  (* Thread priority *)
  29.       Version           : LONGCARD;  (* Version number for this structure *)
  30.       MCCount           : CARDINAL;  (* Must Complete count *)
  31.       MCForceFlag       : CARDINAL;  (* Must Complete force flag *)
  32.     END;                END;
  33.   PTIB2               = POINTER TO TIB2;
  34.   TIB                 = RECORD      (* TIB Thread Information Block *)
  35.     CASE                : TYPEPREFIX OF
  36.     | TRUE              :
  37.       tib_pexchain      : SYSTEM.LONGWORD; (* Head of exception handler chain *)
  38.       tib_pstack        : SYSTEM.ADDRESS;  (* Pointer to base of stack *)
  39.       tib_pstacklimit   : SYSTEM.ADDRESS;  (* Pointer to end of stack *)
  40.       tib_ptib2         : PTIB2;           (* Pointer to system specific TIB *)
  41.       tib_version       : LONGCARD;        (* Version number for this TIB structure *)
  42.       tib_ordinal       : LONGCARD;        (* Thread ordinal number *)
  43.     | FALSE             :
  44.       ExChain           : SYSTEM.LONGWORD; (* Head of exception handler chain *)
  45.       Stack             : SYSTEM.ADDRESS;  (* Pointer to base of stack *)
  46.       StackLimit        : SYSTEM.ADDRESS;  (* Pointer to end of stack *)
  47.       Tib2              : PTIB2;           (* Pointer to system specific TIB *)
  48.       Version           : LONGCARD;        (* Version number for this TIB structure *)
  49.       Ordinal           : LONGCARD;        (* Thread ordinal number *)
  50.     END;                END;
  51.   tib_t               = TIB;
  52.   tib_s               = TIB;
  53.   PTIB                = POINTER TO TIB;
  54.  
  55.  
  56. TYPE (* Process Information Block (PIB) *)
  57.   PIB                 = RECORD
  58.     CASE                : TYPEPREFIX OF
  59.     | TRUE              :
  60.       pib_ulpid         : LONGCARD;        (* Process I.D. *)
  61.       pib_ulppid        : LONGCARD;        (* Parent process I.D. *)
  62.       pib_hmte          : LONGCARD;        (* Program (.EXE) module handle *)
  63.       pib_pchcmd        : POINTER TO CHAR; (* Command line pointer *)
  64.       pib_pchenv        : POINTER TO CHAR; (* Environment pointer *)
  65.       pib_flstatus      : LONGCARD;        (* Process' status bits *)
  66.       pib_ultype        : LONGCARD;        (* Process' type code *)
  67.     | FALSE             :
  68.       ProcessId         : LONGCARD;        (* Process I.D. *)
  69.       ParentProcessId   : LONGCARD;        (* Parent process I.D. *)
  70.       ProgramModule     : LONGCARD;        (* Program (.EXE) module handle *)
  71.       Cmd               : POINTER TO CHAR; (* Command line pointer *)
  72.       Env               : POINTER TO CHAR; (* Environment pointer *)
  73.       Status            : LONGCARD;        (* Process' status bits *)
  74.       Type              : LONGCARD;        (* Process' type code *)
  75.     END;                END;
  76.   pib_s               = PIB;
  77.   pib_t               = PIB;
  78.   PPIB                = POINTER TO PIB;
  79.  
  80.  
  81. PROCEDURE DosBeep
  82. ( Frequency         : LONGCARD;
  83.   Duration          : LONGCARD
  84. )                   : APIRET;
  85.  
  86. CONST (* for DosExit ActionCode *)
  87.   EXIT_THREAD  = 0;
  88.   EXIT_PROCESS = 1;
  89.  
  90. PROCEDURE DosExit
  91. ( ActionCode        : LONGCARD;
  92.   ResultCode        : LONGCARD
  93. );
  94.  
  95. TYPE
  96.   PFNTHREAD = PROCEDURE( SYSTEM.LONGWORD );
  97.  
  98. PROCEDURE DosCreateThread
  99. ( VAR ThreadId      : TID;
  100.   ThreadAddr        : PFNTHREAD;
  101.   ThreadArg         : SYSTEM.LONGWORD;
  102.   ThreadFlags       : LONGCARD;
  103.   StackSize         : LONGCARD
  104. )                   : APIRET;
  105.  
  106. PROCEDURE DosResumeThread
  107. ( ThreadId          : TID
  108. )                   : APIRET;
  109.  
  110. PROCEDURE DosSuspendThread
  111. ( ThreadId          : TID
  112. )                   : APIRET;
  113.  
  114. PROCEDURE DosGetInfoBlocks
  115. ( VAR TIBAddr       : PTIB;
  116.   VAR PIBAddr       : PPIB
  117. )                   : APIRET;
  118.  
  119. PROCEDURE DosKillThread
  120. ( ThreadId          : TID
  121. )                   : APIRET;
  122.  
  123. CONST (* ActionCode values *)
  124.    DCWA_PROCESS     = 0;
  125.    DCWA_PROCESSTREE = 1;
  126.  
  127. CONST (* WaitOption values *)
  128.    DCWW_WAIT        = 0;
  129.    DCWW_NOWAIT      = 1;
  130.  
  131. TYPE (* ReturnCodes for DosWaitChild, DosExecPgm *)
  132.   RESULTCODES = RECORD
  133.     codeTerminate   : LONGCARD;
  134.     codeResult      : LONGCARD;
  135.   END;
  136.   PRESULTCODES      = POINTER TO RESULTCODES;
  137.  
  138. CONST (* codeTerminate values (also passed to ExitList routines) *)
  139.   TC_EXIT           = 0;
  140.   TC_HARDERROR      = 1;
  141.   TC_TRAP           = 2;
  142.   TC_KILLPROCESS    = 3;
  143.   TC_EXCEPTION      = 4;
  144.  
  145. PROCEDURE DosWaitChild
  146. ( ActionCode        : LONGCARD;
  147.   WaitOption        : LONGCARD;
  148.   VAR ReturnCodes   : RESULTCODES;
  149.   VAR RetProcessId  : PID;
  150.   ProcessId         : PID
  151. )                   : APIRET;
  152.  
  153. PROCEDURE DosWaitThread
  154. ( VAR ThreadId      : TID;
  155.   WaitOption        : LONGCARD
  156. )                   : APIRET;
  157.  
  158. PROCEDURE DosSleep
  159. ( TimeInterval      : LONGCARD   (* in milliseconds *)
  160. )                   : APIRET;
  161.  
  162. TYPE (* DbgBuf structure *)
  163.   DebugT = RECORD
  164.     Pid      : PID;              (* Debuggee Process ID *)
  165.     Tid      : TID;              (* Debuggee Thread ID *)
  166.     Cmd      : LONGINT;          (* Command or Notification *)
  167.     Value    : LONGINT;          (* Generic Data Value *)
  168.     Addr     : SYSTEM.ADDRESS;   (* Debuggee Address *)
  169.     Buffer   : SYSTEM.ADDRESS;   (* Debugger Buffer Address *)
  170.     Len      : LONGCARD;         (* Length of Range *)
  171.     Index    : LONGCARD;         (* Generic Identifier Index *)
  172.     MTE      : HMODULE;          (* Module Handle *)
  173.     EAX      : LONGCARD;         (* Register Set *)
  174.     ECX      : LONGCARD;
  175.     EDX      : LONGCARD;
  176.     EBX      : LONGCARD;
  177.     ESP      : LONGCARD;
  178.     EBP      : LONGCARD;
  179.     ESI      : LONGCARD;
  180.     EDI      : LONGCARD;
  181.     EFlags   : LONGCARD;
  182.     EIP      : LONGCARD;
  183.     CSLim    : LONGCARD;         (* Byte Granular Limits *)
  184.     CSBase   : LONGCARD;         (* Byte Granular Base *)
  185.     CSAcc    : SHORTCARD;        (* AccessBytes *)
  186.     CSAtr    : SHORTCARD;        (* Attribute Bytes *)
  187.     CS       : CARDINAL;
  188.     DSLim    : LONGCARD;
  189.     DSBase   : LONGCARD;
  190.     DSAcc    : SHORTCARD;
  191.     DSAtr    : SHORTCARD;
  192.     DS       : CARDINAL;
  193.     ESLim    : LONGCARD;
  194.     ESBase   : LONGCARD;
  195.     ESAcc    : SHORTCARD;
  196.     ESAtr    : SHORTCARD;
  197.     ES       : CARDINAL;
  198.     FSLim    : LONGCARD;
  199.     FSBase   : LONGCARD;
  200.     FSAcc    : SHORTCARD;
  201.     FSAtr    : SHORTCARD;
  202.     FS       : CARDINAL;
  203.     GSLim    : LONGCARD;
  204.     GSBase   : LONGCARD;
  205.     GSAcc    : SHORTCARD;
  206.     GSAtr    : SHORTCARD;
  207.     GS       : CARDINAL;
  208.     SSLim    : LONGCARD;
  209.     SSBase   : LONGCARD;
  210.     SSAcc    : SHORTCARD;
  211.     SSAtr    : SHORTCARD;
  212.     SS       : CARDINAL;
  213.   END;
  214.  
  215. PROCEDURE DosDebug
  216. ( VAR DbgBuf        : DebugT
  217. )                   : APIRET;
  218.  
  219. PROCEDURE DosEnterCritSec
  220. ( )                 : APIRET;
  221.  
  222. PROCEDURE DosExitCritSec
  223. ( )                 : APIRET;
  224.  
  225. CONST (* DosExitList FuncionOrder *)
  226.   EXLST_ADD         = 1;
  227.   EXLST_REMOVE      = 2;
  228.   EXLST_EXIT        = 3;
  229.  
  230. TYPE
  231.   PFNEXITLIST       = PROC;
  232.  
  233. PROCEDURE DosExitList
  234. ( FunctionOrder     : LONGCARD;
  235.   RtnAddress        : PFNEXITLIST
  236. )                   : APIRET;
  237.  
  238. CONST (* DosExecPgm ExecFlags *)
  239.   EXEC_SYNC          = 0;
  240.   EXEC_ASYNC         = 1;
  241.   EXEC_ASYNCRESULT   = 2;
  242.   EXEC_TRACE         = 3;
  243.   EXEC_BACKGROUND    = 4;
  244.   EXEC_LOAD          = 5;
  245.   EXEC_ASYNCRESULTDB = 6;
  246.  
  247. PROCEDURE DosExecPgm
  248. ( VAR ObjNameBuf    : ARRAY OF CHAR;
  249.   ObjNameBufL       : LONGCARD;
  250.   ExecFlags         : LONGCARD;
  251.   ArgPointer        : SYSTEM.ADDRESS;
  252.   EnvPointer        : SYSTEM.ADDRESS;
  253.   VAR ReturnCodes   : RESULTCODES;   (* see DosWaitChild *)
  254.   PgmPointer        : ARRAY OF CHAR
  255. )                   : APIRET;
  256.  
  257. CONST (* Priority scopes *)
  258.   PRTYS_PROCESS          = 0;
  259.   PRTYS_PROCESSTREE      = 1;
  260.   PRTYS_THREAD           = 2;
  261.  
  262. CONST (* Priority classes *)
  263.   PRTYC_NOCHANGE         = 0;
  264.   PRTYC_IDLETIME         = 1;
  265.   PRTYC_REGULAR          = 2;
  266.   PRTYC_TIMECRITICAL     = 3;
  267.   PRTYC_FOREGROUNDSERVER = 4;
  268.  
  269. CONST (* Priority deltas *)
  270.   PRTYD_MINIMUM          = -31;
  271.   PRTYD_MAXIMUM          =  31;
  272.  
  273. PROCEDURE DosSetPriority
  274. ( Scope             : LONGCARD;
  275.   PriorityClass     : LONGCARD;
  276.   PriorityDelta     : LONGINT;
  277.   Id                : LHANDLE
  278. )                   : APIRET;
  279.  
  280. CONST (* DosKillProcess ActionCode values *)
  281.   DKP_PROCESSTREE   = 0;
  282.   DKP_PROCESS       = 1;
  283.  
  284. PROCEDURE DosKillProcess
  285. ( ActionCode        : LONGCARD;
  286.   ProcessId         : PID
  287. )                   : APIRET;
  288.  
  289.  
  290. END DOSPROCESS.
  291.