-- --**************************************************************************** --* * --* Copyright (c) 2001 * --* by DIGITAL Equipment Corporation, Maynard, Mass. * --* * --* This software is furnished under a license and may be used and copied * --* only in accordance with the terms of such license and with the * --* inclusion of the above copyright notice. This software or any other * --* copies thereof may not be provided or otherwise made available to any * --* other person. No title to and ownership of the software is hereby * --* transferred. * --* * --* The information in this software is subject to change without notice * --* and should not be construed as a commitment by DIGITAL Equipment * --* Corporation. * --* * --* DIGITAL assumes no responsibility for the use or reliability of its * --* software on equipment which is not supplied by DIGITAL. * --* * --**************************************************************************** --******************************************************************************************************************** -- Created: 15-MAR-2001 22:50:24 by OpenVMS SDL EV1-33 -- Source: 28-FEB-1991 19:12:36 $11$DUA933:[LIB_ADA.LIS]CCBDEF.SDL;1 --******************************************************************************************************************** with SYSTEM; use SYSTEM; with STARLET; use STARLET; with CONDITION_HANDLING; use CONDITION_HANDLING; package CCBDEF is -- module $CCBDEF --+ -- CCB - CHANNEL CONTROL BLOCK -- -- THERE IS ONE CHANNEL CONTROL BLOCK FOR EACH SOFTWARE CHANNEL THAT A -- PROCESS MAY INITIATE I/O REQUESTS ON. THE NUMBER OF SUCH I/O CHANNELS -- IS DETERMINED BY THE FIXED NUMBER ASSIGNED TO A PROCESS PLUS ANY -- ADDITIONAL CHANNELS REQUIRED BY THE IMAGE CURRENTLY BEING EXECUTED -- BY THE PROCESS. -- -- **** WARNING **** -- THE CHANNEL CONTROL BLOCK IS ASSUMED TO BE FOUR LONG WORDS -- THROUGHOUT THE EXEC. ITS SIZE MAY BE CHANGED BUT ONLY BY POWERS OF 2. --- CCB_M_AMB : constant := 16#00000001#; CCB_M_IMGTMP : constant := 16#00000002#; CCB_M_RDCHKDON : constant := 16#00000004#; CCB_M_WRTCHKDON : constant := 16#00000008#; CCB_M_LOGCHKDON : constant := 16#00000010#; CCB_M_PHYCHKDON : constant := 16#00000020#; CCB_M_NOREADACC : constant := 16#00000040#; CCB_M_NOWRITEACC : constant := 16#00000080#; CCB_K_LENGTH : constant := 16; -- LENGTH OF CCB CCB_C_LENGTH : constant := 16; -- LENGTH OF CCB type CCB_STS_TYPE is -- CHANNEL STATUS record AMB : BOOLEAN; -- MAILBOX ASSOCIATED WITH CHANNEL IMGTMP : BOOLEAN; -- IMAGE TEMPORARY RDCHKDON : BOOLEAN; -- READ PROTECTION CHECK COMPLETED WRTCHKDON : BOOLEAN; -- WRITE PROTECTION CHECK COMPLETED LOGCHKDON : BOOLEAN; -- LOGICAL I/O ACCESS CHECK DONE PHYCHKDON : BOOLEAN; -- PHYSICAL I/O ACCESS CHECK DONE NOREADACC : BOOLEAN; -- READ ACCESS TO DEVICE DISABLED NOWRITEACC : BOOLEAN; -- WRITE ACCESS TO DEVICE DISABLED end record; for CCB_STS_TYPE use record AMB at 0 range 0 .. 0; IMGTMP at 0 range 1 .. 1; RDCHKDON at 0 range 2 .. 2; WRTCHKDON at 0 range 3 .. 3; LOGCHKDON at 0 range 4 .. 4; PHYCHKDON at 0 range 5 .. 5; NOREADACC at 0 range 6 .. 6; NOWRITEACC at 0 range 7 .. 7; end record; for CCB_STS_TYPE'SIZE use 8; CCB_STS_TYPE_INIT : constant CCB_STS_TYPE := (AMB => FALSE, IMGTMP => FALSE, RDCHKDON => FALSE, WRTCHKDON => FALSE, LOGCHKDON => FALSE, PHYCHKDON => FALSE, NOREADACC => FALSE, NOWRITEACC => FALSE); type CCB_TYPE is record UCB : UNSIGNED_LONGWORD; -- ADDRESS OF ASSIGNED DEVICE UCB WIND : UNSIGNED_LONGWORD; -- ADDRESS OF WINDOW BLOCK STS : CCB_STS_TYPE; -- CHANNEL STATUS AMOD : UNSIGNED_BYTE; -- ACCESS MODE THAT ASSIGNED CHANNEL IOC : UNSIGNED_WORD; -- NUMBER OF OUTSTANDING I/O REQUESTS ON CHANNEL DIRP : UNSIGNED_LONGWORD; -- DEACCESS I/O REQUEST PACKET ADDRESS end record; for CCB_TYPE use record UCB at 0 range 0 .. 31; WIND at 4 range 0 .. 31; STS at 8 range 0 .. 7; AMOD at 9 range 0 .. 7; IOC at 10 range 0 .. 15; DIRP at 12 range 0 .. 31; end record; for CCB_TYPE'SIZE use 128; CCB_TYPE_INIT : constant CCB_TYPE := (UCB => 0, WIND => 0, STS => CCB_STS_TYPE_INIT, AMOD => 0, IOC => 0, DIRP => 0); end CCBDEF;