1 /* Begin include file as_user_message_system.incl.pl1 BIM 1985-01-11 */
 2 /* format: style4 */
 3 
 4 /**** Per-system and per-user information on the as_user_message segments */
 5 
 6 /**** Declaration used to construct the name of one of the set of segments */
 7 
 8 declare  1 as_user_message_segment_name unaligned,
 9            2 constant char (16),                            /* as_user_message_ */
10            2 index picture "99";
11 
12 declare  AS_USER_MESSAGE_SEGMENT_NAME_CONSTANT char (16) init ("as_user_message_") int static options (constant);
13 
14 /**** as_user_messages (mis)-use the pad bits in a message segment
15       message ID to identify which of one of a series of segments
16       to find the message in. */
17 
18 declare  1 as_user_message_id aligned,                      /* use UNSPEC, not based (addr) */
19            2 segment_index fixed bin (9) unsigned unaligned,
20            2 pad bit (11) unaligned,
21            2 pad_clock bit (52) unaligned;
22 
23 /**** Data stored in the as_user_message_system segment.
24       This is the shared overhead database, including the
25       associative memory of messages and destination processes. */
26 
27 declare  AS_USER_MESSAGE_SYSTEM_NAME char (32) init ("as_user_message_system") int static options (constant);
28 
29 declare  as_user_message_system_info_ptr pointer;
30 declare  1 as_user_message_system_info aligned based (as_user_message_system_info_ptr),
31            2 header aligned,
32              3 sentinel char (8) aligned,                   /* Version, but mostly validity check */
33              3 time_of_bootload fixed bin (71),             /* was this segment initialized in this bootload? */
34              3 lock bit (36) aligned,                       /* on segment creation/deletion */
35              3 n_segments fixed bin,                        /* total created */
36 
37              3 highest_in_use fixed bin (35),               /* update with stacq */
38            2 pad (9) bit (36) aligned,
39            2 destination_am (16000) aligned, /* each entry is 16 words. Listen UP, compiler */
40              3 process_id bit (36) aligned,
41              3 ring fixed bin (3) unsigned unaligned,
42              3 reader_deletes bit (1) unaligned,
43              3 pad bit (32) unaligned,
44              3 handle bit (72) aligned,
45              3 message_id bit (72) aligned,
46              3 group_id char (32) unaligned,
47              3 access_class bit (72) aligned;
48 
49 declare  AS_USER_ANY_PROCESS_ID bit (36) aligned init ("777777777777"b3) int static options (constant);
50 
51 
52 /**** + To look for a message, do the following:
53       initialize the message_id to 72 1's.
54       loop on the process_id_list, setting px as index;
55       if the process_id (px) is ANY_PROCESS_ID or the target process id then do;
56       if handle_list (px) is the desired handle then do;
57       if the process_id match was exact then
58       message_id = min (message_id, message_id (px));
59       otherwise do;
60       read out the mesage for message_id (px),
61       determine if it is really for target_process. If so,
62       message_id = min (message_id, message_id (px));
63       end;
64       end;
65       end;
66 
67       If message_id = 72 1's, then there is no message destined for this handle
68       for this process.
69 
70       Otherwise, message_id is the id of the first message for this handle.
71 */
72 
73 declare  AS_USER_MESSAGE_SYSTEM_SENTINEL char (8) aligned init ("asumsys1") int static options (constant);
74 
75 /**** Data for each user process */
76 
77 /**** *system variable to find this stuff with */
78 
79 declare  as_user_message_perprocess_info_ptr pointer;
80 
81 declare  1 as_user_message_perprocess_info aligned based (as_user_message_perprocess_info_ptr),
82            2 sentinel char (8) aligned,
83            2 mseg_ptr (0:99) pointer options (packed);      /* for mseg_ */
84 
85 declare  AS_USER_MESSAGE_PROCESS_SENTINEL char (8) aligned init ("asumprc1") int static options (constant);
86 
87 /* End include file as_user_message_system.incl.pl1 */