2332
|
1 ********************************************************************
|
|
2 * PipeDefs - Pipe File Manager Definitions
|
|
3 *
|
|
4 * $Id$
|
|
5 *
|
|
6 * Edt/Rev YYYY/MM/DD Modified by
|
|
7 * Comment
|
|
8 * ------------------------------------------------------------------
|
|
9 * 1988/12/03 Chris J. Burke
|
|
10 * Coded from new PIPEMAN comments.
|
|
11
|
|
12 NAM PipeDefs
|
|
13 TTL Pipe File Manager Definitions
|
|
14
|
|
15 *
|
|
16 * IOMan equates duplicated for PipeMan use
|
|
17 *
|
|
18
|
|
19 NPATHS: SET 16 ;Maximum local paths per task -- must match IOMan
|
|
20 NameMax: SET 29 ;Maximum length of a file name
|
|
21
|
|
22 *
|
|
23 * Device Driver Static Storage Layout
|
|
24 *
|
|
25 csect
|
|
26 RMB V.USER
|
|
27 V.List: RMB 2 ;Pointer to 1st pipe's pipe buffer
|
|
28 PManMem: EQU * ;Device driver memory (drive table equivalent)
|
|
29 endsect
|
|
30
|
|
31 *
|
|
32 * Pipe Buffer Data Structure
|
|
33 *
|
|
34 csect
|
|
35 PP.PD: RMB 2 ;Pointer to shared path descriptor
|
|
36 PP.Next: RMB 2 ;Pointer to next pipe buffer in system map
|
|
37 PP.Prev: RMB 2 ;Pointer to previous pipe buffer in system map
|
|
38 PP.Rsrv: RMB 2 ;Reserved
|
|
39 PP.Data: EQU * ;Data buffer begins at this offset
|
|
40 endsect
|
|
41
|
|
42 *
|
|
43 * Unique Path Descriptor Variables
|
|
44 *
|
|
45 csect
|
|
46 RMB PD.FST
|
|
47 *** PP.Read must have bit 4 clear; PP.Writ must be PP.Read XOR 4
|
|
48 PD.Read: EQU *
|
|
49 PD.RPID: RMB 1 ;Process ID of reader waiting on signal
|
|
50 PD.RCT: RMB 1 ;Number of blocked readers
|
|
51 PD.RSIG: RMB 1 ;Signal to send reader
|
|
52 PD.REOR: RMB 1 ;Read EOR character
|
|
53 PD.Writ: EQU *
|
|
54 PD.WPID: RMB 1 ;Process ID of writer waiting on signal
|
|
55 PD.WCT: RMB 1 ;Number of blocked writers
|
|
56 PD.WSIG: RMB 1 ;Signal to send writer
|
|
57 PD.WEOR: RMB 1 ;Write EOR character (dummy)
|
|
58 *** End of special section
|
|
59 PD.End: RMB 2 ;Pointer to end of pipe buffer
|
|
60 PD.NxtI: RMB 2 ;Next in pointer
|
|
61 PD.NxtO: RMB 2 ;Next out pointer
|
|
62 PD.RFlg: RMB 1 ;"Ready" flag
|
|
63 PD.Wrtn: RMB 1 ;"Written" flag
|
|
64 PD.BCnt: RMB 2 ;# queue elements currently bufered
|
|
65 PD.Own: RMB 1 ;Process ID of pipe original creator
|
|
66 PD.Keep: RMB 1 ;Non-zero if pipe has been kept open artificailly
|
|
67 PD.QSiz: RMB 2 ;Max. elements in queue (copied from OPT section)
|
|
68 endsect
|
|
69
|
|
70 *
|
|
71 * Path descriptor option section
|
|
72 *
|
|
73 * Note that PD.Name overlaps with the last byte of PD.ECnt.
|
|
74 * PD.ECnt is copied to PD.QSiz as part of OPEN or CREATE,
|
|
75 * to make room for the pipe name.
|
|
76 *
|
|
77 csect
|
|
78 RMB (PD.OPT+1)
|
|
79 PD.ESiz: RMB 1 ;Size of each queue element
|
|
80 PD.ECnt: RMB 2 ;Max. elements in queue (initial position)
|
|
81 IFGT Level-1
|
|
82 RMB (PD.OPT+3)-*
|
|
83 PD.Name: RMB NameMax
|
|
84 ENDC
|
|
85 endsect
|
|
86
|
|
87 *
|
|
88 * Device Descriptor definitions
|
|
89 *
|
|
90 IT.PDC: EQU $12 ;Pipe device class (like IT.DTP, IT.DVC)
|
|
91 csect
|
|
92 RMB IT.PDC
|
|
93 RMB 1 ;Leave room for device class
|
|
94 IT.ESiz: RMB 1 ;Size of each queue element
|
|
95 IT.ECnt: RMB 2 ;Max. elements in queue (initial position)
|
|
96 endsect
|
|
97
|