Significant progress to getting pl1$pl1 to compile something, implemented many necess...
[multics_sim.git] / area_info.h
1 #ifndef _AREA_INFO_H
2 #define _AREA_INFO_H
3
4 #include "pointer.h"
5
6 // dcl area_info_version_1 fixed bin static init (1) options (constant);
7
8 // dcl 1 area_control aligned based,
9 struct area_control {
10   // 2 extend bit (1) unal, /* says area is extensible */
11   // 2 zero_on_alloc bit (1) unal, /* says block gets zerod at allocation time */
12   // 2 zero_on_free bit (1) unal, /* says block gets zerod at free time */
13   // 2 dont_free bit (1) unal, /* debugging aid, turns off free requests */
14   // 2 no_freeing bit (1) unal, /* for allocation method without freeing */
15   // 2 system bit (1) unal, /* says area is managed by system */
16   // 2 pad bit (30) unal;
17   uint64_t pad : 30;
18   uint64_t system : 1;
19   uint64_t no_freeing : 1;
20   uint64_t dont_free : 1;
21   uint64_t zero_on_free : 1;
22   uint64_t zero_on_alloc : 1;
23   uint64_t extend : 1;
24   uint64_t dummy0 : 28;
25 };
26
27 // dcl area_infop ptr;
28
29 // dcl 1 area_info aligned based (area_infop),
30 struct area_info {
31   // 2 version fixed bin, /* version number for this structure is 1 */
32   int64_t version : 18;
33   uint64_t dummy0 : 46;
34
35   // 2 control aligned like area_control, /* control bits for the area */
36   struct area_control control;
37
38   // 2 owner char (32) unal, /* creator of the area */
39   uint64_t owner[8];
40
41   // 2 n_components fixed bin, /* number of components in the area (returned only) */
42   int64_t n_components : 18;
43   uint64_t dummy1 : 46;
44
45   // 2 size fixed bin (18), /* size of the area in words */
46   int64_t size : 19;
47   uint64_t dummy2 : 45;
48
49   // 2 version_of_area fixed bin, /* version of area (returned only) */
50   int64_t version_of_area : 18;
51   uint64_t dummy3 : 46;
52
53   // 2 areap ptr, /* pointer to the area (first component on multisegment area) */
54   uint64_t dummy4;
55   struct its_pointer areap;
56
57   // 2 allocated_blocks fixed bin, /* number of blocks allocated */
58   int64_t allocated_blocks : 18;
59   uint64_t dummy5 : 46;
60
61   // 2 free_blocks fixed bin, /* number of free blocks not in virgin */
62   int64_t free_blocks : 18;
63   uint64_t dummy6 : 46;
64
65   // 2 allocated_words fixed bin (30), /* number of words allocated in the area */
66   int64_t allocated_words : 31;
67   uint64_t dummy7 : 33;
68
69   // 2 free_words fixed bin (30); /* number of words free in area not in virgin */
70   int64_t free_words : 31;
71   uint64_t dummy8 : 33;
72 };
73
74 #endif