1 /* BEGIN INCLUDE FILE ... cpm_control_point_data.incl.pl1 */
 2 
 3 /****^  HISTORY COMMENTS:
 4   1) change(86-08-12,Kissel), approve(86-08-12,MCR7473),
 5      audit(86-10-08,Fawcett), install(86-11-03,MR12.0-1206):
 6      Written to support control point management in March 1985 by G. Palter.
 7                                                    END HISTORY COMMENTS */
 8 
 9 /* format: style3,linecom,idind22 */
10 
11 /* NOTE: This include file references structures contained in the following independent include files --
12           cpm_ctrl_pt_meters.incl.pl1             process_usage.incl.pl1        */
13 
14 
15 /* Definition of a single control point in the process */
16 
17 dcl       1 control_point_data  aligned based (cpd_ptr),
18             2 id                bit (36) aligned,           /* unique ID of this control point */
19             2 group_id          bit (36) aligned,           /* unique ID of containing group of control points */
20             2 state             fixed binary,               /* scheduling state (see below) */
21             2 flags,
22               3 preferred       bit (1) unaligned,          /* ON => this is the preferred task (infinite priority) */
23               3 swapped_switches                            /* ON => this control point's switches were swapped ... */
24                                 bit (1) unaligned,          /* ... with the root's during an unclaimed signal */
25               3 pad             bit (34) unaligned,
26             2 priority          fixed binary,               /* scheduling priority */
27             2 pad               bit (36) aligned,
28             2 stack_ptr         pointer,                    /* -> the stack used by this control point */
29             2 last_frame_ptr    pointer,                    /* -> last frame in said stack where control is to resume */
30             2 destroy           label,                      /* transferring to this label will kill the control point */
31             2 parent            pointer,                    /* -> defintion of this control point's parent */
32             2 peers,                                        /* linked list of this control point's peers */
33               3 prev_peer       pointer,
34               3 next_peer       pointer,
35             2 children,                                     /* linked list of this control point's children */
36               3 first_child     pointer,
37               3 last_child      pointer,
38             2 ready_queue,                                  /* ordered list of control points in the ready state */
39               3 prev_ready      pointer,
40               3 next_ready      pointer,
41             2 user_cl_intermediary                          /* procedure to be called by cpm_overseer_$cl_intermediary */
42                                 entry (bit (1) aligned),
43             2 comment           character (64),             /* a description of this control point */
44             2 saved_environment,                            /* data saved when the control point stops running ... */
45               3 ips_mask        bit (36) aligned,           /* ... IPS mask when it stopped running */
46               3 privileges      bit (36) aligned,           /* ... system privileges */
47               3 cl_intermediary entry (bit (36) aligned),   /* ... CL intermediary */
48               3 io_switches,                                /* ... standard I/O switches */
49                 4 user_io       pointer,
50                 4 user_input    pointer,
51                 4 user_output   pointer,
52                 4 error_output  pointer,
53             2 meters            like control_point_meters;  /* per control point metering data */
54 
55 dcl       cpd_ptr               pointer;
56 
57 
58 /* Scheduler states for a control point */
59 
60 dcl       (
61           CPM_DESTROYED         initial (0),                /* waiting to be deleted */
62           CPM_STOPPED           initial (1),                /* can not run without an explicit cpm_$start */
63           CPM_BLOCKED           initial (2),                /* blocked on an IPC event channel */
64           CPM_READY             initial (3)                 /* eligible to run on next call to cpm_$scheduler */
65           )                     fixed binary static options (constant);
66 
67 /* END INCLUDE FILE ... cpm_control_point_data.incl.pl1 */