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 */