1 /* START OF: lib_node_.incl.pl1 * * * * * * * * * * * * * * * * */ 2 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 4 /* */ 5 /* N^H__^Ha_^Hm_^He: lib_node_.incl.pl1 */ 6 /* */ 7 /* This include segment defines the structures which form the tree of status nodes */ 8 /* created by lib_get_tree_. Each node of the tree is associated with a directory */ 9 /* entry or an archive component. The node lists the attributes of that entry, which is */ 10 /* called the node target. */ 11 /* */ 12 /* S^H__^Ht_^Ha_^Ht_^Hu_^Hs */ 13 /* */ 14 /* 0) Created: May, 1973 by G. C. Dixon */ 15 /* 1) Modified: Aug, 1973 by G. C. Dixon - standardize descriptor format. */ 16 /* 2) Modified: Oct, 1973 by G. C. Dixon - add object_info_ descriptor. */ 17 /* 3) Modified: Apr, 1975 by G. C. Dixon - add ACL and IACL descriptors. */ 18 /* 4) Modified: Oct, 1975 by G. C. Dixon - additional status info added. */ 19 /* */ 20 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 21 22 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 23 /* */ 24 /* The structure of each node whose target is a link is shown below. The */ 25 /* structure of nodes for other types of targets is shown on the next page. Note that */ 26 /* both types of nodes are the same length. */ 27 /* */ 28 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 29 30 dcl 1 link_node based (Pnode), /* node of a status tree. */ 31 2 Pparent ptr, /* ptr to: parent node (previous tree level). */ 32 2 PD ptr, /* ptr to: descriptor chain attached to node. */ 33 2 Svalid bit(72) aligned, /* switches: node data which is valid. */ 34 2 Sreq bit(72) aligned, /* switches: node data which is req'd for output.*/ 35 /* (= node.Svalid & Srequirements) */ 36 2 T fixed bin(35), /* attribute: type of node target. */ 37 2 switches unaligned, 38 3 Smode bit(3), /* attribute: user's access mode to entry. */ 39 3 Sprev_mode bit(3), /* attribute: user's previous access mode to the */ 40 /* entry before lib_access_mode_$set. */ 41 3 pad bit(22), 42 3 Smaster_dir bit(1), /* attribute: master directory */ 43 3 Stpd bit(1), /* attribute: transparent (never on) paging device*/ 44 3 Ssafety bit(1), /* attribute: safety switch. */ 45 3 Saim_security_oos bit(1), /* attribute: security out-of-service. */ 46 3 Saim_audit bit(1), /* attribute: AIM audit use of node target. */ 47 3 Saim_multiple_class bit(1), /* attribute: AIM multiple class segment. */ 48 3 Sterminal_account bit(1), /* attribute: if on, records charged against quota*/ 49 /* in this directory; if off, records*/ 50 /* charged against 1st superior */ 51 /* directory with switch on. */ 52 3 Sterminal_account_dir bit(1), /* attribute: like Sterminal_account for dir quota*/ 53 3 Scopy bit(1), /* attribute: copy-on-write switch. */ 54 2 unique_id bit(36), /* attribute: unique identifier. */ 55 2 author char(32) varying, /* attribute: author of node target. */ 56 2 dtem bit(36), /* attribute: date-time attributes modified. */ 57 2 dtd bit(36), /* attribute: date-time node target dumped. */ 58 59 /* From here on, link_nodes differ from nodes */ 60 /* for other types of node targets. */ 61 2 link_target char(168) varying; /* attribute: target pathname of the link. */ 62 63 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 64 /* */ 65 /* The structure of nodes for other types of node targets is shown below. */ 66 /* */ 67 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 68 69 dcl 1 node based (Pnode), /* node of a status tree. */ 70 2 Pparent ptr, /* ptr to: parent node (previous tree level). */ 71 2 PD ptr, /* ptr to: descriptor chain attached to node. */ 72 2 Svalid bit(72) aligned, /* switches: node data which is valid. */ 73 2 Sreq bit(72) aligned, /* switches: node data which is req'd for output.*/ 74 /* (= node.Svalid & Srequirements) */ 75 2 T fixed bin(35), /* attribute: type of node target. */ 76 2 switches unaligned, 77 3 Smode bit(3), /* attribute: user's access mode to entry. */ 78 3 Sprev_mode bit(3), /* attribute: user's previous access mode to the */ 79 /* entry before lib_access_mode_$set. */ 80 3 pad bit(22), 81 3 Smaster_dir bit(1), /* attribute: master directory */ 82 3 Stpd bit(1), /* attribute: transparent (never on) paging device*/ 83 3 Ssafety bit(1), /* attribute: safety switch. */ 84 3 Saim_security_oos bit(1), /* attribute: security out-of-service. */ 85 3 Saim_audit bit(1), /* attribute: AIM audit use of node target. */ 86 3 Saim_multiple_class bit(1), /* attribute: AIM multiple class segment. */ 87 3 Sterminal_account bit(1), /* attribute: if on, records charged against quota*/ 88 /* in this directory; if off, records*/ 89 /* charged against 1st superior */ 90 /* directory with switch on. */ 91 3 Sterminal_account_dir bit(1), /* attribute: like Sterminal_account for dir quota*/ 92 3 Scopy bit(1), /* attribute: copy-on-write switch. */ 93 2 unique_id bit(36), /* attribute: unique identifier. */ 94 2 author char(32) varying, /* attribute: author of node target. */ 95 2 dtem bit(36), /* attribute: date-time attributes modified. */ 96 2 dtd bit(36), /* attribute: date-time node target dumped. */ 97 98 /* From here on, other nodes differ from */ 99 /* link_nodes. */ 100 2 dtm bit(36), /* attribute: date-time node target modified. */ 101 2 dtu bit(36), /* attribute: date-time node target last used. */ 102 2 rb (3) fixed bin(3), /* attribute: ring brackets. */ 103 2 pad1 (1) fixed bin, 104 2 access_class bit(72) aligned, /* attribute: access class assoc. with entry. */ 105 2 records_used fixed bin(35), /* attribute: storage used, in records. */ 106 2 current_length fixed bin(35), /* attribute: length, in records. */ 107 2 max_length fixed bin(35), /* attribute: maximum length. */ 108 2 msf_indicator fixed bin(35), /* attribute: msf indicator. */ 109 2 bit_count fixed bin(35), /* attribute: bit count. */ 110 2 bit_count_author char(32) varying, /* attribute: bit count/msf indicator author. */ 111 2 offset fixed bin(35), /* attribute: offset, in words, of an archive */ 112 /* component from the base of archive.*/ 113 2 entry_bound fixed bin(35), /* attribute: entry limit for calls to a gate. */ 114 2 segment, /* group: segment quota information for a dir. */ 115 3 quota fixed bin(35), /* attribute: quota set. */ 116 3 quota_used fixed bin(35), /* attribute: quota used. */ 117 3 trp fixed bin(71), /* attribute: time-record product. */ 118 3 dttrp bit(36), /* attribute: date-time time-record product last */ 119 /* updated. */ 120 3 Ninf_quota fixed bin(35), /* attribute: number of immediately-inferior */ 121 /* directories with Sterminal_account */ 122 /* on. */ 123 2 directory, /* group: directory quota information for a dir. */ 124 3 quota fixed bin(35), /* attribute: quota set. */ 125 3 quota_used fixed bin(35), /* attribute: quota used. */ 126 3 trp fixed bin(71), /* attribute: time-record product. */ 127 3 dttrp bit(36), /* attribute: date-time time-record product last */ 128 /* updated. */ 129 3 Ninf_quota fixed bin(35), /* attribute: number of immediately-inferior */ 130 /* directories with Sterminal_account */ 131 /* on. */ 132 2 pvid bit(36), /* attribute: physical volume id. */ 133 2 lvid bit(36), /* attribute: logical volume id. */ 134 2 pad2 (5) fixed bin, 135 Pnode ptr; /* ptr to: a tree node. */ 136 ^L 137 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 138 /* */ 139 /* The descriptors attached to each node of the tree describe the variable-sized */ 140 /* attributes of the directory entry or archive component associated with the node. */ 141 /* Each descriptor must begin with a header shown in structure D below. The following */ 142 /* descriptors are the only ones that have been defined. */ 143 /* */ 144 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 145 146 dcl 1 D based (PD), /* Header common to all descriptors. */ 147 2 length fixed bin(17) unal, /* descriptor: length, in words. */ 148 2 version fixed bin(17) unal, /* descriptor: version number. */ 149 2 T fixed bin, /* descriptor: type of descriptor. */ 150 2 Pnext ptr, /* ptr to: next descriptor attached to node. */ 151 PD ptr; /* ptr to: a descriptor. */ 152 153 dcl 1 Dacl based (PDacl), /* a segment ACL descriptor. */ 154 2 length fixed bin(17) unal, /* descriptor: length, in words. */ 155 2 version fixed bin(17) unal, /* descriptor: version number = 1. */ 156 2 T fixed bin, /* descriptor: type = Tacl. */ 157 2 Pnext ptr, /* ptr to: next descriptor attached to node. */ 158 2 C fixed bin(35), /* attribute: error code from filling descriptor. */ 159 2 N fixed bin, /* attribute: number of ACL entries. */ 160 2 acls (Nacls refer (Dacl.N)), /* attribute: ACL entries. */ 161 3 access_name char(32), /* attribute: access name associated with entry. */ 162 3 modes bit(36), /* attribute: access modes associated with entry. */ 163 3 zero_pad bit(36), 164 3 status_code fixed bin(35), /* attribute: status code associated with entry. */ 165 Nacls fixed bin, /* temporary: number of entries in ACL descriptor.*/ 166 PDacl ptr, /* ptr to: a segment ACL descriptor. */ 167 Vacl_1 fixed bin int static options(constant) init (1), 168 /* version: version of ACL descriptor. */ 169 Tacl fixed bin int static options(constant) init (7); 170 /* attribute: type of a segment ACL descriptor. */ 171 172 dcl 1 Ddir_acl based (PDdir_acl), /* a directory ACL descriptor. */ 173 2 length fixed bin(17) unal, /* descriptor: length, in words. */ 174 2 version fixed bin(17) unal, /* descriptor: version number = 1. */ 175 2 T fixed bin, /* descriptor: type = Tdir_acl. */ 176 2 Pnext ptr, /* ptr to: next descriptor attached to node. */ 177 2 C fixed bin(35), /* attribute: error code from filling descriptor. */ 178 2 N fixed bin, /* attribute: number of ACL entries. */ 179 2 acls (Ndir_acls refer (Ddir_acl.N)), /* attribute: ACL entries. */ 180 3 access_name char(32), /* attribute: access name associated with entry. */ 181 3 dir_modes bit(36), /* attribute: access modes associated with entry. */ 182 3 status_code fixed bin(35), /* attribute: status code associated with entry. */ 183 Ndir_acls fixed bin, /* temporary: number of entries in ACL descriptor.*/ 184 PDdir_acl ptr, /* ptr to: a directory ACL descriptor. */ 185 Vdir_acl_1 fixed bin int static options(constant) init (1), 186 /* version: version of directory ACL descriptor.*/ 187 Tdir_acl fixed bin int static options(constant) init (8); 188 /* attribute: type of a directory ACL descriptor. */ 189 ^L 190 dcl 1 Ddir_iacl based (PDdir_iacl), /* a directory IACL descriptor. */ 191 2 length fixed bin(17) unal, /* descriptor: length, in words. */ 192 2 version fixed bin(17) unal, /* descriptor: version number = 1. */ 193 2 T fixed bin, /* descriptor: type = Tdir_iacl. */ 194 2 Pnext ptr, /* ptr to: next descriptor attached to node. */ 195 2 C fixed bin(35), /* attribute: error code from filling descriptor. */ 196 2 N fixed bin, /* attribute: number of ACL entries. */ 197 2 Iring (0:7) fixed bin, /* attribute: index of first ACLe in each ring. */ 198 2 Nring (0:7) fixed bin, /* attribute: number of ACL entries in each ring. */ 199 2 acls (Ndir_iacls refer (Ddir_iacl.N)), /* attribute: ACL entries. */ 200 3 access_name char(32), /* attribute: access name associated with entry. */ 201 3 dir_modes bit(36), /* attribute: access modes associated with entry. */ 202 3 status_code fixed bin(35), /* attribute: status code associated with entry. */ 203 Ndir_iacls fixed bin, /* temporary: number of entries in IACL descriptor*/ 204 PDdir_iacl ptr, /* ptr to: a directory IACL descriptor. */ 205 Vdir_iacl_1 fixed bin int static options(constant) init (1), 206 /* version: version of dir IACL descriptor. */ 207 Tdir_iacl fixed bin int static options(constant) init (9); 208 209 dcl 1 Diacl based (PDiacl), /* a segment IACL descriptor. */ 210 2 length fixed bin(17) unal, /* descriptor: length, in words. */ 211 2 version fixed bin(17) unal, /* descriptor: version number = 1. */ 212 2 T fixed bin, /* descriptor: type = Tiacl. */ 213 2 Pnext ptr, /* ptr to: next descriptor attached to node. */ 214 2 C fixed bin(35), /* attribute: error code from filling descriptor. */ 215 2 N fixed bin, /* attribute: number of ACL entries. */ 216 2 Iring (0:7) fixed bin, /* attribute: index of first ACLe in each ring. */ 217 2 Nring (0:7) fixed bin, /* attribute: number of ACL entries in each ring. */ 218 2 acls (Niacls refer (Diacl.N)), /* attribute: ACL entries. */ 219 3 access_name char(32), /* attribute: access name associated with entry. */ 220 3 modes bit(36), /* attribute: access modes associated with entry. */ 221 3 zero_pad bit(36), 222 3 status_code fixed bin(35), /* attribute: status code associated with entry. */ 223 Niacls fixed bin, /* temporary: number of entries in IACL descriptor*/ 224 PDiacl ptr, /* ptr to: a segment IACL descriptor. */ 225 Viacl_1 fixed bin int static options(constant) init (1), 226 /* version: version of segment IACL descriptor. */ 227 Tiacl fixed bin int static options(constant) init (10); 228 /* attribute: type of a segment IACL descriptor. */ 229 230 dcl 1 Dnames based (PDnames), /* name attribute descriptor. */ 231 2 length fixed bin(17) unal, /* descriptor: length, in words. */ 232 2 version fixed bin(17) unal, /* descriptor: version number = 1. */ 233 2 T fixed bin, /* descriptor: type = Tnames. */ 234 2 Pnext ptr, /* ptr to: next descriptor attached to node. */ 235 2 N fixed bin, /* attribute: number of names. */ 236 2 names (Nnames refer (Dnames.N)) 237 char(32), /* attribute: names. */ 238 Nnames fixed bin, /* temporary: number of names in name descriptor. */ 239 PDnames ptr, /* ptr to: a name descriptor. */ 240 Vnames_1 fixed bin int static options(constant) init (1), 241 /* version: version of names descriptor. */ 242 Tnames fixed bin int static options(constant) init (1); 243 /* attribute: type of a name descriptor. */ 244 ^L 245 dcl 1 Dnodes based (PDnodes), /* descriptor for array of immediately-inferior */ 246 /* nodes. */ 247 2 header, 248 3 length fixed bin(17) unal, /* descriptor: length, in words. */ 249 3 version fixed bin(17) unal, /* descriptor: version number = 1. */ 250 3 T fixed bin, /* descriptor: type = Tnodes. */ 251 3 Pnext ptr, /* ptr to: next descriptor attached to node. */ 252 3 C fixed bin(35), /* attribute: error code from filling array. */ 253 3 N fixed bin, /* attribute: number of nodes in node array. */ 254 2 nodes (Nnodes refer (Dnodes.N)) /* attribute: node array */ 255 like node, 256 Nnodes fixed bin, /* temporary: number of nodes in node array. */ 257 PDnodes ptr, /* ptr to: a node array descriptor. */ 258 Vnodes_1 fixed bin int static options(constant) init (1), 259 /* version: version of nodes descriptor. */ 260 Tnodes fixed bin int static options(constant) init (2); 261 /* attribute: type of a node descriptor. */ 262 263 dcl 1 Dobj based (PDobj), /* an object_info_ descriptor. */ 264 2 length fixed bin(17) unal, /* descriptor: length, in words. */ 265 2 version fixed bin(17) unal, /* descriptor: version number = 1. */ 266 2 T fixed bin, /* descriptor: type = Tobj. */ 267 2 Pnext ptr, /* ptr to: next descriptor attached to node. */ 268 2 info, 269 3 Otext fixed bin(35), /* attribute: offset of text. */ 270 3 Odefinitions fixed bin(35), /* attribute: offset of definitions. */ 271 3 Olink fixed bin(35), /* attribute: offset of linkage section. */ 272 3 Ostatic fixed bin(35), /* attribute: offset of static section. */ 273 3 Osymbols fixed bin(35), /* attribute: offset of symbol section. */ 274 3 Obreaks fixed bin(35), /* attribute: offset of break map. */ 275 3 Ltext fixed bin(35), /* attribute: length of text, in words. */ 276 3 Ldefinitions fixed bin(35), /* attribute: length of definitions, in words. */ 277 3 Llink fixed bin(35), /* attribute: length of linkage section, in words.*/ 278 3 Lstatic fixed bin(35), /* attribute: length of static section, in words. */ 279 3 Lsymbols fixed bin(35), /* attribute: length of symbol section, in words. */ 280 3 Lbreaks fixed bin(35), /* attribute: length of break map, in words. */ 281 3 format aligned, 282 4 old_format bit(1) unal, /* attribute: segment is in old format. */ 283 4 bound bit(1) unal, /* attribute: a bound segment. */ 284 4 relocatable bit(1) unal, /* attribute: object is relocatable. */ 285 4 procedure bit(1) unal, /* attribute: executable procedure. */ 286 4 standard bit(1) unal, /* attribute: standard object segment. */ 287 4 gate bit(1) unal, /* attribute: gate procedure. */ 288 4 separate_static bit(1) unal, /* attribute: proc has separate static section. */ 289 4 links_in_text bit(1) unal, /* attribute: proc has links in text section. */ 290 4 pad bit(28) unal, 291 3 entry_bound fixed bin(35), /* attribute: entry point bound for a gate. */ 292 3 Otext_links fixed bin(35), /* attribute: offset of first link in text section*/ 293 3 compiler char(8), /* attribute: compiler of this object segment. */ 294 3 compile_time fixed bin(71), /* attribute: date/time of compilation. */ 295 3 userid char(32), /* attribute: id of user who compiled segment. */ 296 3 cversion, /* attribite: compiler version string. */ 297 4 O fixed bin(17) unal, /* offset */ 298 4 L fixed bin(17) unal, /* length */ 299 3 comment, /* attribute: compiler-generated comment. */ 300 4 O fixed bin(17) unal, /* offset */ 301 4 L fixed bin(17) unal, /* length */ 302 3 Osource fixed bin(35), /* attribute: offset of source map. */ 303 2 cversion char(64) varying, /* attribute: compiler version number */ 304 2 comment char(64) varying, /* attribute: compiler's comment info */ 305 PDobj ptr, /* ptr to: an object_info_ descriptor. */ 306 Vobj_1 fixed bin int static options(constant) init (1), 307 /* version: version of object_info_ descriptor. */ 308 Tobj fixed bin int static options(constant) init (3); 309 /* attribute: type of a node descriptor. */ 310 311 dcl 1 Dsearch_proc based (PDsearch_proc), 312 /* library root search_proc attribute descriptor. */ 313 2 length fixed bin(17) unal, /* descriptor: length, in words. */ 314 2 version fixed bin(17) unal, /* descriptor: version number = 1. */ 315 2 T fixed bin, /* descriptor: type = Tsearch_proc. */ 316 2 Pnext ptr, /* ptr to: next descriptor attached to node. */ 317 2 search_proc char(65) varying, /* attribute: name of library search procedure. */ 318 PDsearch_proc ptr, /* ptr to: a search_proc info descriptor. */ 319 Vsearch_proc_1 fixed bin int static options(constant) init (1), 320 /* version: version of search_proc info descrip.*/ 321 Tsearch_proc fixed bin int static options(constant) init (5); 322 /* attribute: type of a search_proc descriptor. */ 323 324 dcl 1 Duser based (PDuser), /* user attribute descriptor. */ 325 2 length fixed bin(17) unal, /* descriptor: length, in words. */ 326 2 version fixed bin(17) unal, /* descriptor: version number = 1. */ 327 2 T fixed bin, /* descriptor: type = Tuser. */ 328 2 Pnext ptr, /* ptr to: next descriptor attached to node. */ 329 2 label char(18), /* attribute: label to be used for this field in */ 330 /* output. */ 331 2 L fixed bin, /* attribute: length of user info string. */ 332 2 info char(Luser refer (Duser.L)), 333 /* attribute: user info string. */ 334 Luser fixed bin, /* temporary: length of user info string. */ 335 PDuser ptr, /* ptr to: a user info descriptor. */ 336 Vuser_1 fixed bin int static options(constant) init (1), 337 /* version: version of user info descriptor. */ 338 Tuser fixed bin int static options(constant) init (6); 339 /* attribute: type of a user descriptor. */ 340 ^L 341 %include lib_Svalid_req_; 342 343 dcl 1 Svalid aligned based(addr(node.Svalid)) like Svalid_req, 344 1 Sreq aligned based(addr(node.Sreq)) like Svalid_req; 345 ^L 346 %include lib_Scontrol_; 347 348 349 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 350 /* */ 351 /* The following entry type attributes have been defined. Note that the types */ 352 /* for segments, archive components, and msf components all have the characteristic */ 353 /* that: mod (type, 2) = 1; */ 354 /* */ 355 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 356 357 358 dcl (Tlink init (0), 359 Tsegment init (1), 360 Tdirectory init (2), 361 Tmsf init (3), 362 Tmsf_comp init (4), 363 Tarchive init (5), 364 Tarchive_comp init (6)) fixed bin(17) int static options(constant); 365 366 367 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 368 /* */ 369 /* The following character string arrays identify each entry type attribute by name. */ 370 /* Both brief and long string arrays are provided. */ 371 /* */ 372 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 373 374 dcl node_type (0:6) char(32) varying aligned int static options(constant) init ( 375 "link", 376 "segment", 377 "directory", 378 "multisegment file", 379 "multi-segment file component", 380 "archive", 381 "archive component"), 382 brief_node_type (0:6) char(12) varying aligned int static options(constant) init ( 383 "link", 384 "segment", 385 "directory", 386 "msf", 387 "msf comp", 388 "archive", 389 "arch comp"); 390 391 392 /* END OF: lib_node_.incl.pl1 * * * * * * * * * * * * * * * * */