view defs/pipedefs @ 1955:b377521221d9

Update dirsort by Robert Gault
author boisy
date Tue, 20 Dec 2005 19:47:47 +0000
parents 8d4b5ee1cee4
children e396d4f24b27
line wrap: on
line source

         IFNE  PIPEDEFS-1

PIPEDEFS set   1

********************************************************************
* PipeDefs - Pipe File Manager Definitions
*
* $Id$
*
* Edt/Rev  YYYY/MM/DD  Modified by
* Comment
* ------------------------------------------------------------------
*          1988/12/03  Chris J. Burke
* Coded from new PIPEMAN comments.


         nam   PipeDefs
         ttl   Pipe File Manager Definitions


*
*   IOMan equates duplicated for PipeMan use
*

NPATHS   set   16         ;Maximum local paths per task -- must match IOMan
NameMax  set   29         ;Maximum length of a file name

*
*   Device Driver Static Storage Layout
*
         org   V.User
V.List   rmb   2          ;Pointer to 1st pipe's pipe buffer
PManMem  equ   .          ;Device driver memory (drive table equivalent)

*
*   Pipe Buffer Data Structure
*
         org   0
PP.PD    rmb   2          ;Pointer to shared path descriptor
PP.Next  rmb   2          ;Pointer to next pipe buffer in system map
PP.Prev  rmb   2          ;Pointer to previous pipe buffer in system map
PP.Rsrv  rmb   2          ;Reserved
PP.Data  equ   .          ;Data buffer begins at this offset

*
*   Unique Path Descriptor Variables
*
         org   PD.FST
*** PP.Read must have bit 4 clear; PP.Writ must be PP.Read XOR 4
PD.Read  equ   .
PD.RPID  rmb   1          ;Process ID of reader waiting on signal
PD.RCT   rmb   1          ;Number of blocked readers
PD.RSIG  rmb   1          ;Signal to send reader
PD.REOR  rmb   1          ;Read EOR character
PD.Writ  equ   .
PD.WPID  rmb   1          ;Process ID of writer waiting on signal
PD.WCT   rmb   1          ;Number of blocked writers
PD.WSIG  rmb   1          ;Signal to send writer
PD.WEOR  rmb   1          ;Write EOR character (dummy)
*** End of special section
PD.End   rmb   2          ;Pointer to end of pipe buffer
PD.NxtI  rmb   2          ;Next in pointer
PD.NxtO  rmb   2          ;Next out pointer
PD.RFlg  rmb   1          ;"Ready" flag
PD.Wrtn  rmb   1          ;"Written" flag
PD.BCnt  rmb   2          ;# queue elements currently bufered
PD.Own   rmb   1          ;Process ID of pipe original creator
PD.Keep  rmb   1          ;Non-zero if pipe has been kept open artificailly
PD.QSiz  rmb   2          ;Max. elements in queue (copied from OPT section)

*
*   Path descriptor option section
*
*   Note that PD.Name overlaps with the last byte of PD.ECnt.
*   PD.ECnt is copied to PD.QSiz as part of OPEN or CREATE,
*   to make room for the pipe name.
*
         org   (PD.OPT+1)
PD.ESiz  rmb   1          ;Size of each queue element
PD.ECnt  rmb   2          ;Max. elements in queue (initial position)
         IFGT  Level-1
         org   (PD.OPT+3)
PD.Name  rmb   NameMax
         ENDC

*
*   Device Descriptor definitions
*
IT.PDC   equ   $12        ;Pipe device class (like IT.DTP, IT.DVC)
         org   IT.PDC
         rmb   1          ;Leave room for device class
IT.ESiz  rmb   1          ;Size of each queue element
IT.ECnt  rmb   2          ;Max. elements in queue (initial position)

*   End of pipedefs

         ENDC