| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- (* Release 3.10 *)
- (*-------------------------------------------------------------------------*
- * *
- * CPROCESS.DEF - Modula-2 interface to CPROCESS.H *
- * *
- * COPYRIGHT (C) 1989..1992 Clarion Software Corporation. *
- * All Rights Reserved *
- * *
- *--------------------------------------------------------------------------*)
- (*# project("#set tsc='on'") *)
- (*# call(o_a_size=>off, o_a_copy=>off, c_conv=>on, result_optional=>on) *)
- (*# module(implementation=>off, init_code=>off) *)
- (*# name(prefix=>c) *)
- DEFINITION MODULE cprocess;
- CONST
- P_WAIT = 0;
- P_NOWAIT = 1;
- P_OVERLAY = 2;
- TYPE
- VarProc = PROCEDURE(FarADDRESS);
- VAR
- _psp: CARDINAL;
- PROCEDURE abort;
- PROCEDURE atexit(func: PROC): INTEGER;
- PROCEDURE onexit(func: PROC): PROC;
- (*%T _mthread *)
- PROCEDURE _dosbeginthread(func: PROC; _stlen: CARDINAL; VAR _stck: CARDINAL): CARDINAL;
- PROCEDURE _dosendthread;
- PROCEDURE _beginthread(func: VarProc; stack: FarADDRESS; stack_size: CARDINAL;
- arg: FarADDRESS);
- PROCEDURE _endthread();
- PROCEDURE _dosfreestack(_stck: CARDINAL);
- (*%E *)
- (*# save *)
- (*# call(c_conv=>on, var_arg=>on, reg_param=>()) *)
- PROCEDURE execl(_path, _arg0: ARRAY OF CHAR): INTEGER;
- PROCEDURE execle(_path, _arg0: ARRAY OF CHAR): INTEGER;
- PROCEDURE execlp(_path, _arg0: ARRAY OF CHAR): INTEGER;
- PROCEDURE execlpe(_path, _arg0: ARRAY OF CHAR): INTEGER;
- PROCEDURE execv(_path: ARRAY OF CHAR): INTEGER;
- PROCEDURE execve(_path: ARRAY OF CHAR): INTEGER;
- PROCEDURE execvp(_path: ARRAY OF CHAR): INTEGER;
- PROCEDURE execvpe(_path: ARRAY OF CHAR): INTEGER;
- (*# restore *)
- PROCEDURE exit(_status: CARDINAL);
- PROCEDURE _exit(_status: CARDINAL);
- PROCEDURE delay(_msecs: CARDINAL);
- (*%T _mthread *)
- PROCEDURE _getTID(): CARDINAL;
- (*%E *)
- (*# save *)
- (*# call(c_conv=>on, var_arg=>on, reg_param=>()) *)
- PROCEDURE spawnl(_mode: CARDINAL; _path,_arg0: ARRAY OF CHAR): INTEGER;
- PROCEDURE spawnle(_mode: CARDINAL; _path,_arg0: ARRAY OF CHAR): INTEGER;
- PROCEDURE spawnlp(_mode: CARDINAL; _path,_arg0: ARRAY OF CHAR): INTEGER;
- PROCEDURE spawnlpe(_mode: CARDINAL; _path,_arg0: ARRAY OF CHAR): INTEGER;
- PROCEDURE spawnv(_mode: CARDINAL; _path: ARRAY OF CHAR): INTEGER;
- PROCEDURE spawnve(_mode: CARDINAL; _path: ARRAY OF CHAR): INTEGER;
- PROCEDURE spawnvp(_mode: CARDINAL; _path: ARRAY OF CHAR): INTEGER;
- PROCEDURE spawnvpe(_mode: CARDINAL; _path: ARRAY OF CHAR): INTEGER;
- PROCEDURE system(_command: ARRAY OF CHAR): INTEGER;
- (*# restore *)
- (*%T _mthread *)
- CONST
- MAXTHREAD = 32;
- MaxProcess = 32;
- TYPE
- tm = RECORD
- tm_sec,
- tm_min,
- tm_hour,
- tm_mday,
- tm_mon,
- tm_year,
- tm_wday,
- tm_yday,
- tm_isdst: CARDINAL;
- END;
- thread = RECORD
- error: INTEGER;
- _asct_buf: ARRAY[0..27] OF CHAR;
- _tm_buf: tm;
- token: POINTER TO CHAR;
- END;
- PROCESS = ADDRESS;
- _TaskDescriptorPtr = POINTER TO _TaskDescriptor;
- _SigRec = RECORD
- count: INTEGER;
- waiting: _TaskDescriptorPtr;
- END;
- SIGNAL = POINTER TO _SigRec;
- _TaskDescriptor = RECORD
- next: _TaskDescriptorPtr;
- priority: CARDINAL;
- cor: PROCESS;
- due: CARDINAL;
- wsp: ADDRESS;
- wspsize: CARDINAL;
- nextdue: _TaskDescriptorPtr;
- END;
- Task = POINTER TO TaskDescriptor;
- PROCEDURE StartProcess(_entry:PROC;_N,_Pr: CARDINAL);
- (*# save *)
- (*# call(reg_saved=>(ds,di,si,st1,st2)) *)
- PROCEDURE StartScheduler;
- PROCEDURE StopScheduler;
- PROCEDURE StopProcess;
- PROCEDURE SEND(_s: SIGNAL);
- PROCEDURE WAIT(_s: SIGNAL);
- PROCEDURE Notify(_s: SIGNAL);
- PROCEDURE Awaited(_s: SIGNAL): INTEGER;
- PROCEDURE Init(VAR _s: SIGNAL);
- PROCEDURE Delay(_T: CARDINAL);
- (*# restore *)
- PROCEDURE Lock;
- PROCEDURE Unlock;
- (*%E *)
- END cprocess.
|