home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / bpos2-v2.zip / RTL-FIX1.ZIP / OS2_16.PAS < prev    next >
Pascal/Delphi Source File  |  1993-11-29  |  14KB  |  364 lines

  1. Unit os2;
  2.  
  3. Interface
  4.  
  5. Function DosClose( handle : word ): word; Far;
  6.  
  7. function DosOpen ( name:pchar; var Handle : word; Var Action : word;
  8.                    Filesize : longint; Attrib : word; OpenFlag : word;
  9.                    openmode : word; reserved : longint):word;
  10.                    Far;
  11. Function DosRead (     Handle: word; Var buffer; bufferlen : word;
  12.                    Var BytesRead :word): word;
  13.                    Far;
  14.  
  15. Function DosWrite(     Handle: word; Var Buffer; bufferlen : word;
  16.                    Var BytesWrote : word ):word;
  17.                    Far;
  18.  
  19.  
  20. Function DosMakeNMPipe(    pipename : pchar;
  21.                        var PipeHandle : word;
  22.                            Openmode   : word;
  23.                            Pipemode   : word;
  24.                            OutBufSize : word;
  25.                            inbufsize  : word;
  26.                            timeout    : longint ):word; Far;
  27.  
  28. Function DosConnectNMPipe( pipehandle : word ):word; Far;
  29.  
  30. Function DosDisconnectNMpipe( pipehandle : word ):word; Far;
  31.  
  32. Function DosQNMPipeInfo ( Pipehandle : word; mode : word; Var buffer;
  33.                           bufferlen : word): word; Far;
  34. Type
  35.    tavailStruc = Record
  36.       Bytes_in_pipe : word;
  37.       Bytes_in_msg  : word;
  38.       end;
  39.  
  40. Function DosPeekNMPipe (pipehandle : word; Var Buffer; Bufferlen : word;
  41.                         Var Bytesread : word;
  42.                         Var availstruc : tAvailStruc;
  43.                         Var PipeState  : word): word; Far;
  44.  
  45. Const
  46.    cPipe_Disconnected = 1;
  47.    cPipe_Listening    = 2;
  48.    cPipe_Connected    = 3;
  49.    cPipe_Closing      = 4;
  50.  
  51. Function DosSetNMPHandState ( pipehandle : word; State : word):word; far;
  52.  
  53. Function DosWaitNMPipe ( pipename : Pchar; Timeout : word):word; Far;
  54.  
  55. Function DosSleep ( milliSeconds : Longint): Word; Far;
  56.  
  57. Function DosCreateQueue( var Handle: word; Mode : word; name : pchar ): word;
  58.          Far;
  59.  
  60. Function DosOpenQueue ( var OwnerPid: word; Var Handle : word; name : pchar)
  61.          :word; Far;
  62. type
  63.   QueueRequest_record = record
  64.      OwnerPID         : word;
  65.      AppSpecific      : word;
  66.      end;
  67.  
  68. function DosPeekQueue (    Handle : word;
  69.                        Var Request: Queuerequest_record;
  70.                        Var DataLen : word;
  71.                        Var Dataaddr;
  72.                        var Elementadr : word;
  73.                            NoWait     : Word;  {byte;  }
  74.                        var Elementpri : byte;
  75.                            SemHandle  : Longint ):word;Far;
  76.  
  77. function dosPurgeQueue( handle : word ):word; Far;
  78.  
  79. function DosReadQueue (    Handle : word;
  80.                        Var Request: Queuerequest_record;
  81.                        Var DataLen : word;
  82.                        Var Dataaddr;
  83.                        var Elementadr : word;
  84.                            NoWait     : Word;   {byte;}
  85.                        var Elementpri : byte;
  86.                            SemHandle  : Longint ):word;Far;
  87.  
  88. Function DosWriteQueue(    Handle : word;
  89.                            Request : word;
  90.                            Datalen : word;
  91.                        Var Dataadr;
  92.                            Elempri : word ):word; Far;
  93.  
  94. Function DosQueryQueue( Handle : word; Var Count : word ):word; Far;
  95.  
  96. Function DosCloseQueue( handle : word ):word; Far;
  97.  
  98. Type
  99.    FastSafeRamSem_record = Record
  100.       Blocklen           : word;
  101.       Pid                : word;
  102.       Tid                : word;
  103.       Usage_count        : word;
  104.       App_word           : word;
  105.       Semiphore          : longint;
  106.       end;
  107.  
  108. {Timeout values
  109.    -1 = Wait indefinitely
  110.     0 = return immediately
  111.    >0 = Wait indicated number of milliseconds for semiphore }
  112.  
  113. Function DOSFSRAMSEMREQUEST ( var Fs      : FastSafeRamSem_record;
  114.                                   Timeout : Longint): word; Far;
  115.  
  116. Function DOSFSRAMSEMCLEAR   ( Var FS      : FastSafeRamSem_record): word; Far;
  117.  
  118. Function DosSemSetWait      ( semHandle : Longint;
  119.                               timeout   : longint ): word; Far;
  120. Type
  121.    SemList_type = record
  122.       SemCount  : word;
  123.       SemEntry  : array [0..255] of record
  124.          Resrv  : word;
  125.          SemHandle : Longint;
  126.          end;
  127.       end;
  128.  
  129. Function DosMuxSemWait      ( Var IndexSem : word;
  130.                               Var SemList;  { SemList_Record }
  131.                                   Timeout : Longint ): word; Far;
  132.  
  133. Function DosCloseSem        ( Semhandle : longint ): word; Far;
  134.  
  135. { nonexclusive
  136.     0 = exclusive access for creating process.
  137.     1 = allows other processes access to the semiphore }
  138.  
  139. Function DosCreateSem       (     NonExclusive : word;
  140.                               Var SemHandle    : Longint;
  141.                                   Name         : pchar): word; far;
  142.  
  143. Function DosOpenSem         ( Var SemHandle    : longint;
  144.                                   Name         : pchar): word; Far;
  145.  
  146. Function DosSemRequest      (     Semhandle    : longint;
  147.                                   Timeout      : longint ): word; Far;
  148.  
  149. function DosSemClear        (    Semhandle     : longint ): word; Far;
  150.  
  151. Function DosSemWait         (    Semhandle     : longint;
  152.                                  Timeout       : longint ): word; Far;
  153.  
  154. Function DosSemSet          (    Semhandle     : longint ):word; Far;
  155.  
  156. {Flags bits
  157.   15-4 = 0;
  158.   3    = Resizeable if Shared;
  159.   2    = Discardable if unlocked;
  160.   1    = shareable with Get;
  161.   0    = Shareable with Give; }
  162.  
  163. Function DosAllocSeg        (     Size : word;
  164.                               Var Selector : word;
  165.                                   flags    : word ): word; Far;
  166.  
  167. Function DosAllocShrSeg     (     Size : word;
  168.                                   Name : pchar;
  169.                               Var Selector : word ):word; Far;
  170.  
  171. Function DosGetShrSeg       (     Name : pchar;
  172.                               Var Selector : word ):word; Far;
  173.  
  174. Function DosGiveSeg         (    Selector : word;
  175.                                  Target_PID : word;
  176.                              Var Target_selector : word ):word; Far;
  177.  
  178. Function DosReAllocSeg      ( Size : word;
  179.                               Selector : word ): word; Far;
  180.  
  181. Function DosFreeSeg         ( Selector : word ): word; Far;
  182.  
  183.  
  184. Implementation
  185.  
  186. function dosClose( Handle: word):Word; External 'DOSCALLS' index 59;
  187.  
  188. function DosOpen ( name:pchar; var Handle : word; Var Action : word;
  189.                    Filesize : longint; Attrib : word; OpenFlag : word;
  190.                    openmode : word; reserved : longint):word;
  191.                    External 'DOSCALLS' index 70;
  192.  
  193. Function DosRead (     Handle: word; Var buffer; bufferlen : word;
  194.                    Var BytesRead :word): word;
  195.                    External 'DOSCALLS' Index 137;
  196.  
  197. Function DosWrite(     Handle: word; Var Buffer; bufferlen : word;
  198.                    Var BytesWrote : word ):word;
  199.                    External 'DOSCALLS' Index 138;
  200.  
  201.  
  202. Function DosMakeNMPipe(    pipename   : Pchar;
  203.                        var PipeHandle : word;
  204.                            Openmode   : word;
  205.                            Pipemode   : word;
  206.                            OutBufSize : word;
  207.                            inbufsize  : word;
  208.                            timeout    : Longint):word; External 'NAMPIPES'
  209.                                                      Index 1;
  210.  
  211. Function DosConnectNMPipe( pipehandle : word ):word; External 'NAMPIPES'
  212.                                                      Index 3;
  213.  
  214. Function DosDisconnectNMpipe( pipehandle : word ):word; External 'NAMPIPES'
  215.                                                         Index 4;
  216.  
  217. Function DosQNMPipeInfo ( Pipehandle : word; mode : word; Var buffer;
  218.                           bufferlen : word): word; External 'NAMPIPES'
  219.                                                    index 2;
  220.  
  221. Function DosPeekNMPipe (pipehandle : word; Var Buffer; Bufferlen : word;
  222.                         Var Bytesread : word;
  223.                         Var availstruc : tAvailStruc;
  224.                         Var PipeState  : word): word; External 'NAMPIPES'
  225.                                                       index 7;
  226.  
  227. Function DosWaitNMPipe ( pipename : Pchar; Timeout : word):word;
  228.                          External 'NAMPIPES' index 8;
  229.  
  230. Function DosSleep ( milliSeconds : Longint): Word; External 'DOSCALLS'
  231.                                                  index 32;
  232.  
  233. Function DosSetNMPHandState ( pipehandle : word; State : word):word;
  234.                               External 'NAMPIPES' index 6;
  235.  
  236.  
  237. Function DosCreateQueue( var Handle: word; Mode : word; name : pchar ): word;
  238.          External 'QUECALLS' Index 8;
  239.  
  240. Function DosOpenQueue ( var OwnerPid: word; Var Handle : word; name : pchar)
  241.          :word; External 'QUECALLS' Index 7;
  242.  
  243. function DosPeekQueue (    Handle : word;
  244.                        Var Request: Queuerequest_record;
  245.                        Var DataLen : word;
  246.                        Var Dataaddr;
  247.                        var Elementadr : word;
  248.                            NoWait     : Word;  {byte;  }
  249.                        var Elementpri : byte;
  250.                            SemHandle  : Longint ):word;
  251.           External 'QUECALLS' Index 5;
  252.  
  253. function dosPurgeQueue( handle : word ):word; External 'QUECALLS' Index 2;
  254.  
  255. function DosReadQueue (    Handle : word;
  256.                        Var Request: Queuerequest_record;
  257.                        Var DataLen : word;
  258.                        Var Dataaddr;
  259.                        var Elementadr : word;
  260.                            NoWait     : Word;   {byte;}
  261.                        var Elementpri : byte;
  262.                            SemHandle  : Longint ):word;
  263.          External 'QUECALLS' Index 1;
  264.  
  265. Function DosWriteQueue(    Handle : word;
  266.                            Request : word;
  267.                            Datalen : word;
  268.                        Var Dataadr;
  269.                            Elempri : word ):word;
  270.          External 'QUECALLS' Index 6;
  271.  
  272. Function DosQueryQueue( Handle : word; Var Count : word ):word;
  273.          External 'QUECALLS' Index 4;
  274.  
  275. Function DosCloseQueue( handle : word ):word; External 'QUECALLS' Index 3;
  276.  
  277. Function DOSFSRAMSEMREQUEST ( var Fs      : FastSafeRamSem_record;
  278.                                   Timeout : Longint): word;
  279.          External 'DOSCALLS' Index 161;
  280.  
  281. Function DOSFSRAMSEMCLEAR   ( Var FS      : FastSafeRamSem_record): word;
  282.          External 'DOSCALLS' Index 162;
  283.  
  284. Function DosSemSetWait      ( semHandle : Longint;
  285.                               timeout   : longint ): word;
  286.          External 'DOSCALLS' Index 20;
  287.  
  288. Function DosMuxSemWait      ( Var IndexSem : word;
  289.                               Var SemList;  { SemList_Record }
  290.                                   Timeout : Longint ): word;
  291.          External 'DOSCALLS' Index  22;
  292.  
  293. Function DosCloseSem        ( Semhandle : longint ): word;
  294.          External 'DOSCALLS' Index  23;
  295.  
  296. Function DosCreateSem       (     NonExclusive : word;
  297.                               Var SemHandle    : Longint;
  298.                                   Name         : pchar): word;
  299.          External 'DOSCALLS' Index  24;
  300.  
  301. Function DosOpenSem         ( Var SemHandle    : longint;
  302.                                   Name         : pchar): word;
  303.          External 'DOSCALLS' Index  25;
  304.  
  305. Function DosSemRequest      (     Semhandle    : longint;
  306.                                   Timeout      : longint ): word;
  307.          External 'DOSCALLS' Index  140;
  308.  
  309. function DosSemClear        (    Semhandle     : longint ): word;
  310.          External 'DOSCALLS' Index  141;
  311.  
  312. Function DosSemWait         (    Semhandle     : longint;
  313.                                  Timeout       : longint ): word;
  314.          External 'DOSCALLS' Index  142;
  315.  
  316. Function DosSemSet          (    Semhandle     : longint ):word;
  317.          External 'DOSCALLS' Index  143;
  318.  
  319. {Flags bits
  320.   15-4 = 0;
  321.   3    = Resizeable if Shared;
  322.   2    = Discardable if unlocked;
  323.   1    = shareable with Get;
  324.   0    = Shareable with Give; }
  325.  
  326. Function DosAllocSeg        (     Size : word;
  327.                               Var Selector : word;
  328.                                   flags    : word ): word;
  329.          External 'DOSCALLS' Index  34;
  330.  
  331. Function DosAllocShrSeg     (     Size : word;
  332.                                   Name : pchar;
  333.                               Var Selector : word ):word;
  334.          External 'DOSCALLS' Index  35;
  335.  
  336. Function DosGetShrSeg       (     Name : pchar;
  337.                               Var Selector : word ):word;
  338.          External 'DOSCALLS' Index  36;
  339.  
  340. Function DosGiveSeg         (    Selector : word;
  341.                                  Target_PID : word;
  342.                              Var Target_selector : word ):word;
  343.          External 'DOSCALLS' Index  37;
  344.  
  345. Function DosReAllocSeg      ( Size : word;
  346.                               Selector : word ): word;
  347.          External 'DOSCALLS' Index  38;
  348.  
  349. Function DosFreeSeg         ( Selector : word ): word;
  350.          External 'DOSCALLS' Index  39;
  351.  
  352. {
  353. DOSQNMPHANDSTATE                 NAMPIPES.5
  354. DOSSETNMPHANDSTATE               NAMPIPES.6
  355. DOSTRANSACTNMPIPE                NAMPIPES.9
  356. DOSCALLNMPIPE                    NAMPIPES.10
  357. DOSRAWREADNMPIPE                 NAMPIPES.11
  358. DOSRAWWRITENMPIPE                NAMPIPES.12
  359. DOSSETNMPIPESEM                  NAMPIPES.13
  360. DOSQNMPIPESEMSTATE               NAMPIPES.14
  361. }
  362.  
  363.  
  364. end.