1 /* BEGIN INCLUDE FILE dm_cm_reservation_map.incl.pl1 */
 2 
 3 /* DESCRIPTION:
 4 
 5         The collection_manager_'s file reservation map is used to keep track of
 6    those control intervals which have been reserved by a collection so that
 7    more than one collection in a file do not attempt to use the same control
 8    interval.  Logically the file reservation map is one long bit string
 9    containing a bit for each control interval of the file.  If the bit for
10    a control interval is "1"b, that control interval has been reserved.
11    Actually the map is divided into several fragments represented by
12    file_reservation_map_fragment structures, each a bit string of uniform
13    length and each stored as an element in the Header Collection.  Ideally,
14    each fragment is stored in a different control interval of the Header
15    Collection for enhanced concurrent access to the map.
16 
17         To increase speed of reference and concurrent throughput the fragments
18    are not chained together, but are kept track of by the file_reservation_map
19    structure.  This structure is an array with each entry describing the
20    location of a fragment, the number of the control interval for which the
21    first bit in the fragment represents, and a flag which, if on, indicates
22    that there are no unreserved control intervals in the fragment.  This flag
23    allows for skipping looking at fragments which are already full.
24 */
25 
26 /* HISTORY:
27 Written by Matthew Pierret, 2/23/83.
28 Modified:
29 09/24/84 by Matthew Pierret: Added DESCRIPTION section.
30 */
31 
32 /* format: style2,ind3,ll79 */
33 
34      dcl     1 file_reservation_map (frm_number_of_fragments) aligned
35                                     based (file_reservation_map_ptr),
36                2 flags              unal,
37                  3 no_control_intervals_are_available
38                                     bit (1) unal,
39                  3 must_be_zero     bit (11) unal,
40                2 lowest_numbered_control_interval
41                                     fixed bin (24) uns unal,
42                2 element_id         bit (36) aligned;
43 
44      dcl     file_reservation_map_fragment
45                                     aligned
46                                     based (file_reservation_map_fragment_ptr)
47                                     bit (frmf_number_of_control_intervals);
48 
49 
50      dcl     file_reservation_map_ptr
51                                     ptr;
52      dcl     frm_number_of_fragments
53                                     fixed bin (17);
54 
55      dcl     file_reservation_map_fragment_ptr
56                                     ptr;
57      dcl     frmf_number_of_control_intervals
58                                     fixed bin (17);
59 
60 
61 /* END INCLUDE FILE dm_cm_reservation_map.incl.pl1 */