AMODE 64 callers use BPXYIPCQ — Map w_getipc structure.
BPXYIPCQ ,
***********************************************************************
* *
* BPXYIPCQ: w_getipc interface mapping *
* Used By: BPXGXGET *
* *
***********************************************************************
IPCQ DSECT , Interprocess Communications - Query
IPCQLENGTH DS F IPCQ#LENGTH used by system call. If not
* equal, check BPXYIPCQ and system levels.
IPCQTYPE DS CL4 "IMSG", "ISEM", "ISHM", "OVER", "IMAP"
IPCQOVER DS 0D OVERVIEW MAPPING STARTS HERE
*---------------------------------------------------------------------*
* For IPCQTYPE = OVER, data starts here and the rest of the fields *
* in this section of code are not filled in. *
*---------------------------------------------------------------------*
IPCQMID DS FL4 MEMBER ID
IPCQKEY DS XL4 KEY
IPCQIPCP DS CL20 MAPPED BY BPXYIPCP
IPCQGTIME DS XL4 TIME_T OF LAST ...GET()
IPCQCTIME DS XL4 TIME_T OF LAST ...CTL()
IPCQTTIME DS XL4 TIME_T CHANGED BY TERMINATION
*---------------------------------------------------------------------*
* Start of Unique data for IPCQTYPE requested *
*---------------------------------------------------------------------*
IPCQREST DS 0C IPCQMSG, IPCQSHM, IPCQSEM, MAPPED MEMORY
**********************************************************************
* Message Queue unique data *
**********************************************************************
ORG IPCQREST
DS 0F
IPCQBYTES DS F # BYTES OF MESSAGES ON QUEUE
IPCQQBYTES DS F MAX # BYTES OF MESSAGES ALLOWED ON QUEUE
IPCQLSPID DS F PID OF LAST MSGSND()
IPCQLRPID DS F PID OF LAST MSGRCV()
IPCQSTIME DS F TIME_T OF LAST MSGSND()
IPCQRTIME DS F TIME_T OF LAST MSGRCV()
IPCQNUM DS F # OF MESSAGES ON QUEUE
IPCQRCNT DS F COUNT OF WAITING MSGRCV
IPCQSCNT DS F COUNT OF WAITING MSGSND
DS 0CL16 MSGRCV AND MSGSND WAITERS
DS 0CL8 MSGRCV - WAIT FOR TYPE
IPCQQRPID DS F PROCESS ID
IPCQQRMSGTYPE DS F MESSAGE TYPE
DS 0CL8 MSGSND - WAIT FOR ROOM TO SEND
IPCQQSPID DS F PROCESS ID
IPCQQSMSGLEN DS F MESSAGE LENGTH
DS 9CL16 MSGSND AND MSGRCV WAITERS
DS 0CL8 MESSAGES WAITING TO BE RECEIVED
IPCQQMPID DS F PROCESS ID
IPCQQMMSGTYPE DS F MESSAGE TYPE
DS 9CL8 MESSAGES
DS F Reserved
DS 0D
* The 64 bit time fields will be set for either 31 or 64 bit mode
* Must define storage different, depending on how assembled
* AMODE 31
IPCQSTIME64 DS 2F TIME64_T OF LAST MSGSND()
IPCQRTIME64 DS 2F TIME64_T OF LAST MSGRCV()
IPCQQRMSGTYPE64 DS 20F MSGRCV 64 BIT MSG TYPE
IPCQQMMSGTYPE64 DS 20F MSG WAITING 64 BIT MSG TYPE
DS CL96 Reserved for expansion
**********************************************************************
* Semaphore unique data *
**********************************************************************
ORG IPCQREST
DS 0F
IPCQLOPID DS XL4 PID OF LAST SEMOP
IPCQOTIME DS F TIME_T LAST SEMOP
IPCQADJBADCNT DS F TERMINATION BUMPS SEM_VAL LIMITS
IPCQNSEMS DS FL2 NUMBER OF SEMAPHORES IN THIS SET
IPCQADJCNT DS FL2 NUMBER OF UNDO STRUCTURES
IPCQNCNT DS FL2 COUNT OF WAITERS FOR >0
IPCQZCNT DS FL2 COUNT OF WAITERS FOR =0
DS 0CL16 WAITERS AND ADJUSTERS
DS 0CL8 WAITER
IPCQSWPID DS F PROCESS ID
IPCQSWNUM DS H SEMAPHORE NUMBER
IPCQSWOP DS H SEMAPHORE OPERATION
DS 0CL8 ADJUSTER
IPCQSAPID DS F PROCESS ID
IPCQSANUM DS H SEMAPHORE NUMBER
IPCQSAADJ DS H SEMAPHORE OPERATION
DS 9CL16 WAITERS AND ADJUSTERS
DS 0D
* AMode 31
IPCQOTIME64 DS 2F TIME64_T LAST SEMOP
DS CL360 Reserved for expansion
**********************************************************************
* Shared Memory unique data *
**********************************************************************
ORG IPCQREST
DS 0F
IPCQACNT DS F USE COUNT (#SHMAT - #SHMDT)
IPCQSEGSZ DS F MEMORY SEGMENT SIZE
IPCQDTIME DS F TIME_T OF LAST SHMDT()
IPCQATIME DS F TIME_T OF LAST SHMAT()
IPCQLPID DS F PID OF LAST SHMAT() OR SHMDT()
IPCQCPID DS XL4 PID OF CREATOR
*---------------------------------------------------------------------*
* 31 bit callers - 10 Element array of segments attached *
* Each element is the 4 byte PID followed by the 31 bit address *
*---------------------------------------------------------------------*
IPCQATPID DS F ATTACHED PROCESS ID
IPCQATADDRESS DS F SEGMENT ADDRESS FOR PROCESS
DS 18F MORE ATTACHED PROCESS IDS AND
* SEGMENT ADDRESS
DS 20F Reserved - match 64 bit lengths for array
IPCQDTIME64 DS 2F TIME_T OF LAST SHMDT()
IPCQATIME64 DS 2F TIME_T OF LAST SHMAT()
DS 2F Reserved - segment size in 64 bit section
DS CL344 Reserved
**********************************************************************
* Mapped Memory unique data *
**********************************************************************
ORG IPCQREST Mapped Memory unique data
DS 0F
IPCQMAPCPID DS F CREATOR PROCESS ID
IPCQMAPUPID DS F USER PROCESS ID
IPCQMAPTOKEN DS 2F MAP TOKEN
IPCQMAPUID DS F USER'S EFFECTIVE UID
IPCQMAPGID DS F USER'S EFFECTIVE GID
IPCQMAPFLAGS DS XL4 FLAGS
* Flags in first byte
IPCQMAPSHUT EQU X'80' SHUTDOWN OF OBJECT
IPCQBLKSZ DS F SIZE OF BLOCKS IN MEGS
IPCQBLKSINUSE DS F NUMBER OF BLOCKS IN USE
IPCQBLKSINMAP DS F NUMBER OF BLOCKS IN MAP AREA
IPCQBLKSMAPPED DS F NUMBER OF BLOCKS MAPPED
* BY THIS PROCESS
DS CL508 Reserved for expansion
**********************************************************************
* Continuation of Common data *
* This next ORG gets us past the largest unique section of data *
* We need to preserve the field offsets from prior releases so *
* needed to add the rest of this common data at the end of the *
* unique data instead of within the common area defined above. *
**********************************************************************
ORG
IPCQGTIME64 DS 2F TIME64_T OF LAST ...GET()
IPCQCTIME64 DS 2F TIME64_T OF LAST ...CTL()
IPCQTTIME64 DS 2F TIME64_T CHANGED BY TERMINATION
IPCQSECLABEL DS 2F SECLABEL
**********************************************************************
* Overview - summary data for msgqs, semaphores, shared memory *
**********************************************************************
ORG IPCQOVER Overview
DS 0F MESSAGE QUEUES
IPCQOMSGNIDS DS F Maximum number MSQs allowed
IPCQOMSGHIGHH2O DS F Most MSQs at one time
IPCQOMSGFREE DS F Number MSQs available
IPCQOMSGPRIVATE DS F Number MSQs with Ipc_PRIVATE
IPCQOMSGKEYED DS F Number MSQs with KEYs
IPCQOMSGREJECTS DS F TIMES MSGGET DENIED
IPCQOMSGQBYTES DS F MAX BYTES PER QUEUE
IPCQOMSGQMNUM DS F MAX NUMBER MESSAGES PER QUEUE
IPCQOMSGNOALC DS F # MSGSNDS THAT RETURNED ENOMEM
DS F
DS 0F SEMAPHORE
IPCQOSEMNIDS DS F Maximum number SEMs allowed
IPCQOSEMHIGHH2O DS F Most SEMs at one time
IPCQOSEMFREE DS F Number SEMs available
IPCQOSEMPRIVATE DS F Number SEMs with Ipc_PRIVATE
IPCQOSEMKEYED DS F Number SEMs with KEYs
IPCQOSEMREJECTS DS F TIMES SEMGET DENIED
IPCQOSEMSNSEMS DS F MAX NUMBER OF SEMAPHORES PER SET
IPCQOSEMSNOPS DS F MAX NUMBER OPERATION IN SEMOP
IPCQOSEMSBYTES DS F STORAGE LIMIT
IPCQOSEMCBYTES DS F STORAGE COUNT
DS F
DS 0F SHARED MEMORY
IPCQOSHMNIDS DS F Maximum number SHMs allowed
IPCQOSHMHIGHH2O DS F Most SHMs at one time
IPCQOSHMFREE DS F Number SHMs available
IPCQOSHMPRIVATE DS F Number SHMs with Ipc_PRIVATE
IPCQOSHMKEYED DS F Number SHMs with KEYs
IPCQOSHMREJECTS DS F TIMES SHMGET DENIED
IPCQOSHMSPAGES DS F MAX # PAGES PER SYSTEM LIMIT
IPCQOSHMMPAGES DS F MAX # PAGES PER SEGMENT LIMIT - ZERO
* IF 32 BITS EXCEEDED - USE
* IPCQOSHMMPAGES64 FOR GREATER THAN 32
* BITS
IPCQOSHMNSEGS DS F MAX # SEGMENTS PER PROCESS LIMIT
IPCQOSHMCPAGES DS F CURRENT # BYTES SYSTEM WIDE
* This field does not include pages for
* shared memory requests processed with
* the ipc_MEGA option
IPCQOSHMBIGGEST DS F LARGEST SEGMENT ALLOCATED - ZERO IF
* 32 BITS EXCEEDED - USE
* IPCQOSHMBIGGEST64 FOR GREATER THAN 32
* BITS
DS 0D
IPCQOSHMMPAGES64 DS 2F MAX # PAGES PER SEGMENT LIMIT
IPCQOSHMBIGGEST64 DS 2F LARGEST SEGMENT ALLOCATED
ORG ,
IPCQ#LENGTH EQU *-IPCQ Storage needed for w_getipc function
* w-getipc Command:
IPCQ#MSG EQU 1 Retrieve next message queue
IPCQ#SHM EQU 2 Retrieve next shared memory segment
IPCQ#SEM EQU 3 Retrieve next semaphore set
IPCQ#ALL EQU 4 Retrieve next member, all mechanisms
IPCQ#OVER EQU 5 Retrieve overview
IPCQ#MAP EQU 6 Retrieve mapped memory
** BPXYIPCQ End