/* START OF: lib_node_.incl.pl1 * * * * * * * * * * * * * * * * */ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /* */ /* N__a_m_e: lib_node_.incl.pl1 */ /* */ /* This include segment defines the structures which form the tree of status nodes */ /* created by lib_get_tree_. Each node of the tree is associated with a directory */ /* entry or an archive component. The node lists the attributes of that entry, which is */ /* called the node target. */ /* */ /* S__t_a_t_u_s */ /* */ /* 0) Created: May, 1973 by G. C. Dixon */ /* 1) Modified: Aug, 1973 by G. C. Dixon - standardize descriptor format. */ /* 2) Modified: Oct, 1973 by G. C. Dixon - add object_info_ descriptor. */ /* 3) Modified: Apr, 1975 by G. C. Dixon - add ACL and IACL descriptors. */ /* 4) Modified: Oct, 1975 by G. C. Dixon - additional status info added. */ /* */ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /* */ /* The structure of each node whose target is a link is shown below. The */ /* structure of nodes for other types of targets is shown on the next page. Note that */ /* both types of nodes are the same length. */ /* */ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ dcl 1 link_node based (Pnode), /* node of a status tree. */ 2 Pparent ptr, /* ptr to: parent node (previous tree level). */ 2 PD ptr, /* ptr to: descriptor chain attached to node. */ 2 Svalid bit(72) aligned, /* switches: node data which is valid. */ 2 Sreq bit(72) aligned, /* switches: node data which is req'd for output.*/ /* (= node.Svalid & Srequirements) */ 2 T fixed bin(35), /* attribute: type of node target. */ 2 switches unaligned, 3 Smode bit(3), /* attribute: user's access mode to entry. */ 3 Sprev_mode bit(3), /* attribute: user's previous access mode to the */ /* entry before lib_access_mode_$set. */ 3 pad bit(22), 3 Smaster_dir bit(1), /* attribute: master directory */ 3 Stpd bit(1), /* attribute: transparent (never on) paging device*/ 3 Ssafety bit(1), /* attribute: safety switch. */ 3 Saim_security_oos bit(1), /* attribute: security out-of-service. */ 3 Saim_audit bit(1), /* attribute: AIM audit use of node target. */ 3 Saim_multiple_class bit(1), /* attribute: AIM multiple class segment. */ 3 Sterminal_account bit(1), /* attribute: if on, records charged against quota*/ /* in this directory; if off, records*/ /* charged against 1st superior */ /* directory with switch on. */ 3 Sterminal_account_dir bit(1), /* attribute: like Sterminal_account for dir quota*/ 3 Scopy bit(1), /* attribute: copy-on-write switch. */ 2 unique_id bit(36), /* attribute: unique identifier. */ 2 author char(32) varying, /* attribute: author of node target. */ 2 dtem bit(36), /* attribute: date-time attributes modified. */ 2 dtd bit(36), /* attribute: date-time node target dumped. */ /* From here on, link_nodes differ from nodes */ /* for other types of node targets. */ 2 link_target char(168) varying; /* attribute: target pathname of the link. */ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /* */ /* The structure of nodes for other types of node targets is shown below. */ /* */ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ dcl 1 node based (Pnode), /* node of a status tree. */ 2 Pparent ptr, /* ptr to: parent node (previous tree level). */ 2 PD ptr, /* ptr to: descriptor chain attached to node. */ 2 Svalid bit(72) aligned, /* switches: node data which is valid. */ 2 Sreq bit(72) aligned, /* switches: node data which is req'd for output.*/ /* (= node.Svalid & Srequirements) */ 2 T fixed bin(35), /* attribute: type of node target. */ 2 switches unaligned, 3 Smode bit(3), /* attribute: user's access mode to entry. */ 3 Sprev_mode bit(3), /* attribute: user's previous access mode to the */ /* entry before lib_access_mode_$set. */ 3 pad bit(22), 3 Smaster_dir bit(1), /* attribute: master directory */ 3 Stpd bit(1), /* attribute: transparent (never on) paging device*/ 3 Ssafety bit(1), /* attribute: safety switch. */ 3 Saim_security_oos bit(1), /* attribute: security out-of-service. */ 3 Saim_audit bit(1), /* attribute: AIM audit use of node target. */ 3 Saim_multiple_class bit(1), /* attribute: AIM multiple class segment. */ 3 Sterminal_account bit(1), /* attribute: if on, records charged against quota*/ /* in this directory; if off, records*/ /* charged against 1st superior */ /* directory with switch on. */ 3 Sterminal_account_dir bit(1), /* attribute: like Sterminal_account for dir quota*/ 3 Scopy bit(1), /* attribute: copy-on-write switch. */ 2 unique_id bit(36), /* attribute: unique identifier. */ 2 author char(32) varying, /* attribute: author of node target. */ 2 dtem bit(36), /* attribute: date-time attributes modified. */ 2 dtd bit(36), /* attribute: date-time node target dumped. */ /* From here on, other nodes differ from */ /* link_nodes. */ 2 dtm bit(36), /* attribute: date-time node target modified. */ 2 dtu bit(36), /* attribute: date-time node target last used. */ 2 rb (3) fixed bin(3), /* attribute: ring brackets. */ 2 pad1 (1) fixed bin, 2 access_class bit(72) aligned, /* attribute: access class assoc. with entry. */ 2 records_used fixed bin(35), /* attribute: storage used, in records. */ 2 current_length fixed bin(35), /* attribute: length, in records. */ 2 max_length fixed bin(35), /* attribute: maximum length. */ 2 msf_indicator fixed bin(35), /* attribute: msf indicator. */ 2 bit_count fixed bin(35), /* attribute: bit count. */ 2 bit_count_author char(32) varying, /* attribute: bit count/msf indicator author. */ 2 offset fixed bin(35), /* attribute: offset, in words, of an archive */ /* component from the base of archive.*/ 2 entry_bound fixed bin(35), /* attribute: entry limit for calls to a gate. */ 2 segment, /* group: segment quota information for a dir. */ 3 quota fixed bin(35), /* attribute: quota set. */ 3 quota_used fixed bin(35), /* attribute: quota used. */ 3 trp fixed bin(71), /* attribute: time-record product. */ 3 dttrp bit(36), /* attribute: date-time time-record product last */ /* updated. */ 3 Ninf_quota fixed bin(35), /* attribute: number of immediately-inferior */ /* directories with Sterminal_account */ /* on. */ 2 directory, /* group: directory quota information for a dir. */ 3 quota fixed bin(35), /* attribute: quota set. */ 3 quota_used fixed bin(35), /* attribute: quota used. */ 3 trp fixed bin(71), /* attribute: time-record product. */ 3 dttrp bit(36), /* attribute: date-time time-record product last */ /* updated. */ 3 Ninf_quota fixed bin(35), /* attribute: number of immediately-inferior */ /* directories with Sterminal_account */ /* on. */ 2 pvid bit(36), /* attribute: physical volume id. */ 2 lvid bit(36), /* attribute: logical volume id. */ 2 pad2 (5) fixed bin, Pnode ptr; /* ptr to: a tree node. */ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /* */ /* The descriptors attached to each node of the tree describe the variable-sized */ /* attributes of the directory entry or archive component associated with the node. */ /* Each descriptor must begin with a header shown in structure D below. The following */ /* descriptors are the only ones that have been defined. */ /* */ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ dcl 1 D based (PD), /* Header common to all descriptors. */ 2 length fixed bin(17) unal, /* descriptor: length, in words. */ 2 version fixed bin(17) unal, /* descriptor: version number. */ 2 T fixed bin, /* descriptor: type of descriptor. */ 2 Pnext ptr, /* ptr to: next descriptor attached to node. */ PD ptr; /* ptr to: a descriptor. */ dcl 1 Dacl based (PDacl), /* a segment ACL descriptor. */ 2 length fixed bin(17) unal, /* descriptor: length, in words. */ 2 version fixed bin(17) unal, /* descriptor: version number = 1. */ 2 T fixed bin, /* descriptor: type = Tacl. */ 2 Pnext ptr, /* ptr to: next descriptor attached to node. */ 2 C fixed bin(35), /* attribute: error code from filling descriptor. */ 2 N fixed bin, /* attribute: number of ACL entries. */ 2 acls (Nacls refer (Dacl.N)), /* attribute: ACL entries. */ 3 access_name char(32), /* attribute: access name associated with entry. */ 3 modes bit(36), /* attribute: access modes associated with entry. */ 3 zero_pad bit(36), 3 status_code fixed bin(35), /* attribute: status code associated with entry. */ Nacls fixed bin, /* temporary: number of entries in ACL descriptor.*/ PDacl ptr, /* ptr to: a segment ACL descriptor. */ Vacl_1 fixed bin int static options(constant) init (1), /* version: version of ACL descriptor. */ Tacl fixed bin int static options(constant) init (7); /* attribute: type of a segment ACL descriptor. */ dcl 1 Ddir_acl based (PDdir_acl), /* a directory ACL descriptor. */ 2 length fixed bin(17) unal, /* descriptor: length, in words. */ 2 version fixed bin(17) unal, /* descriptor: version number = 1. */ 2 T fixed bin, /* descriptor: type = Tdir_acl. */ 2 Pnext ptr, /* ptr to: next descriptor attached to node. */ 2 C fixed bin(35), /* attribute: error code from filling descriptor. */ 2 N fixed bin, /* attribute: number of ACL entries. */ 2 acls (Ndir_acls refer (Ddir_acl.N)), /* attribute: ACL entries. */ 3 access_name char(32), /* attribute: access name associated with entry. */ 3 dir_modes bit(36), /* attribute: access modes associated with entry. */ 3 status_code fixed bin(35), /* attribute: status code associated with entry. */ Ndir_acls fixed bin, /* temporary: number of entries in ACL descriptor.*/ PDdir_acl ptr, /* ptr to: a directory ACL descriptor. */ Vdir_acl_1 fixed bin int static options(constant) init (1), /* version: version of directory ACL descriptor.*/ Tdir_acl fixed bin int static options(constant) init (8); /* attribute: type of a directory ACL descriptor. */ dcl 1 Ddir_iacl based (PDdir_iacl), /* a directory IACL descriptor. */ 2 length fixed bin(17) unal, /* descriptor: length, in words. */ 2 version fixed bin(17) unal, /* descriptor: version number = 1. */ 2 T fixed bin, /* descriptor: type = Tdir_iacl. */ 2 Pnext ptr, /* ptr to: next descriptor attached to node. */ 2 C fixed bin(35), /* attribute: error code from filling descriptor. */ 2 N fixed bin, /* attribute: number of ACL entries. */ 2 Iring (0:7) fixed bin, /* attribute: index of first ACLe in each ring. */ 2 Nring (0:7) fixed bin, /* attribute: number of ACL entries in each ring. */ 2 acls (Ndir_iacls refer (Ddir_iacl.N)), /* attribute: ACL entries. */ 3 access_name char(32), /* attribute: access name associated with entry. */ 3 dir_modes bit(36), /* attribute: access modes associated with entry. */ 3 status_code fixed bin(35), /* attribute: status code associated with entry. */ Ndir_iacls fixed bin, /* temporary: number of entries in IACL descriptor*/ PDdir_iacl ptr, /* ptr to: a directory IACL descriptor. */ Vdir_iacl_1 fixed bin int static options(constant) init (1), /* version: version of dir IACL descriptor. */ Tdir_iacl fixed bin int static options(constant) init (9); dcl 1 Diacl based (PDiacl), /* a segment IACL descriptor. */ 2 length fixed bin(17) unal, /* descriptor: length, in words. */ 2 version fixed bin(17) unal, /* descriptor: version number = 1. */ 2 T fixed bin, /* descriptor: type = Tiacl. */ 2 Pnext ptr, /* ptr to: next descriptor attached to node. */ 2 C fixed bin(35), /* attribute: error code from filling descriptor. */ 2 N fixed bin, /* attribute: number of ACL entries. */ 2 Iring (0:7) fixed bin, /* attribute: index of first ACLe in each ring. */ 2 Nring (0:7) fixed bin, /* attribute: number of ACL entries in each ring. */ 2 acls (Niacls refer (Diacl.N)), /* attribute: ACL entries. */ 3 access_name char(32), /* attribute: access name associated with entry. */ 3 modes bit(36), /* attribute: access modes associated with entry. */ 3 zero_pad bit(36), 3 status_code fixed bin(35), /* attribute: status code associated with entry. */ Niacls fixed bin, /* temporary: number of entries in IACL descriptor*/ PDiacl ptr, /* ptr to: a segment IACL descriptor. */ Viacl_1 fixed bin int static options(constant) init (1), /* version: version of segment IACL descriptor. */ Tiacl fixed bin int static options(constant) init (10); /* attribute: type of a segment IACL descriptor. */ dcl 1 Dnames based (PDnames), /* name attribute descriptor. */ 2 length fixed bin(17) unal, /* descriptor: length, in words. */ 2 version fixed bin(17) unal, /* descriptor: version number = 1. */ 2 T fixed bin, /* descriptor: type = Tnames. */ 2 Pnext ptr, /* ptr to: next descriptor attached to node. */ 2 N fixed bin, /* attribute: number of names. */ 2 names (Nnames refer (Dnames.N)) char(32), /* attribute: names. */ Nnames fixed bin, /* temporary: number of names in name descriptor. */ PDnames ptr, /* ptr to: a name descriptor. */ Vnames_1 fixed bin int static options(constant) init (1), /* version: version of names descriptor. */ Tnames fixed bin int static options(constant) init (1); /* attribute: type of a name descriptor. */ dcl 1 Dnodes based (PDnodes), /* descriptor for array of immediately-inferior */ /* nodes. */ 2 header, 3 length fixed bin(17) unal, /* descriptor: length, in words. */ 3 version fixed bin(17) unal, /* descriptor: version number = 1. */ 3 T fixed bin, /* descriptor: type = Tnodes. */ 3 Pnext ptr, /* ptr to: next descriptor attached to node. */ 3 C fixed bin(35), /* attribute: error code from filling array. */ 3 N fixed bin, /* attribute: number of nodes in node array. */ 2 nodes (Nnodes refer (Dnodes.N)) /* attribute: node array */ like node, Nnodes fixed bin, /* temporary: number of nodes in node array. */ PDnodes ptr, /* ptr to: a node array descriptor. */ Vnodes_1 fixed bin int static options(constant) init (1), /* version: version of nodes descriptor. */ Tnodes fixed bin int static options(constant) init (2); /* attribute: type of a node descriptor. */ dcl 1 Dobj based (PDobj), /* an object_info_ descriptor. */ 2 length fixed bin(17) unal, /* descriptor: length, in words. */ 2 version fixed bin(17) unal, /* descriptor: version number = 1. */ 2 T fixed bin, /* descriptor: type = Tobj. */ 2 Pnext ptr, /* ptr to: next descriptor attached to node. */ 2 info, 3 Otext fixed bin(35), /* attribute: offset of text. */ 3 Odefinitions fixed bin(35), /* attribute: offset of definitions. */ 3 Olink fixed bin(35), /* attribute: offset of linkage section. */ 3 Ostatic fixed bin(35), /* attribute: offset of static section. */ 3 Osymbols fixed bin(35), /* attribute: offset of symbol section. */ 3 Obreaks fixed bin(35), /* attribute: offset of break map. */ 3 Ltext fixed bin(35), /* attribute: length of text, in words. */ 3 Ldefinitions fixed bin(35), /* attribute: length of definitions, in words. */ 3 Llink fixed bin(35), /* attribute: length of linkage section, in words.*/ 3 Lstatic fixed bin(35), /* attribute: length of static section, in words. */ 3 Lsymbols fixed bin(35), /* attribute: length of symbol section, in words. */ 3 Lbreaks fixed bin(35), /* attribute: length of break map, in words. */ 3 format aligned, 4 old_format bit(1) unal, /* attribute: segment is in old format. */ 4 bound bit(1) unal, /* attribute: a bound segment. */ 4 relocatable bit(1) unal, /* attribute: object is relocatable. */ 4 procedure bit(1) unal, /* attribute: executable procedure. */ 4 standard bit(1) unal, /* attribute: standard object segment. */ 4 gate bit(1) unal, /* attribute: gate procedure. */ 4 separate_static bit(1) unal, /* attribute: proc has separate static section. */ 4 links_in_text bit(1) unal, /* attribute: proc has links in text section. */ 4 pad bit(28) unal, 3 entry_bound fixed bin(35), /* attribute: entry point bound for a gate. */ 3 Otext_links fixed bin(35), /* attribute: offset of first link in text section*/ 3 compiler char(8), /* attribute: compiler of this object segment. */ 3 compile_time fixed bin(71), /* attribute: date/time of compilation. */ 3 userid char(32), /* attribute: id of user who compiled segment. */ 3 cversion, /* attribite: compiler version string. */ 4 O fixed bin(17) unal, /* offset */ 4 L fixed bin(17) unal, /* length */ 3 comment, /* attribute: compiler-generated comment. */ 4 O fixed bin(17) unal, /* offset */ 4 L fixed bin(17) unal, /* length */ 3 Osource fixed bin(35), /* attribute: offset of source map. */ 2 cversion char(64) varying, /* attribute: compiler version number */ 2 comment char(64) varying, /* attribute: compiler's comment info */ PDobj ptr, /* ptr to: an object_info_ descriptor. */ Vobj_1 fixed bin int static options(constant) init (1), /* version: version of object_info_ descriptor. */ Tobj fixed bin int static options(constant) init (3); /* attribute: type of a node descriptor. */ dcl 1 Dsearch_proc based (PDsearch_proc), /* library root search_proc attribute descriptor. */ 2 length fixed bin(17) unal, /* descriptor: length, in words. */ 2 version fixed bin(17) unal, /* descriptor: version number = 1. */ 2 T fixed bin, /* descriptor: type = Tsearch_proc. */ 2 Pnext ptr, /* ptr to: next descriptor attached to node. */ 2 search_proc char(65) varying, /* attribute: name of library search procedure. */ PDsearch_proc ptr, /* ptr to: a search_proc info descriptor. */ Vsearch_proc_1 fixed bin int static options(constant) init (1), /* version: version of search_proc info descrip.*/ Tsearch_proc fixed bin int static options(constant) init (5); /* attribute: type of a search_proc descriptor. */ dcl 1 Duser based (PDuser), /* user attribute descriptor. */ 2 length fixed bin(17) unal, /* descriptor: length, in words. */ 2 version fixed bin(17) unal, /* descriptor: version number = 1. */ 2 T fixed bin, /* descriptor: type = Tuser. */ 2 Pnext ptr, /* ptr to: next descriptor attached to node. */ 2 label char(18), /* attribute: label to be used for this field in */ /* output. */ 2 L fixed bin, /* attribute: length of user info string. */ 2 info char(Luser refer (Duser.L)), /* attribute: user info string. */ Luser fixed bin, /* temporary: length of user info string. */ PDuser ptr, /* ptr to: a user info descriptor. */ Vuser_1 fixed bin int static options(constant) init (1), /* version: version of user info descriptor. */ Tuser fixed bin int static options(constant) init (6); /* attribute: type of a user descriptor. */ %include lib_Svalid_req_; dcl 1 Svalid aligned based(addr(node.Svalid)) like Svalid_req, 1 Sreq aligned based(addr(node.Sreq)) like Svalid_req; %include lib_Scontrol_; /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /* */ /* The following entry type attributes have been defined. Note that the types */ /* for segments, archive components, and msf components all have the characteristic */ /* that: mod (type, 2) = 1; */ /* */ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ dcl (Tlink init (0), Tsegment init (1), Tdirectory init (2), Tmsf init (3), Tmsf_comp init (4), Tarchive init (5), Tarchive_comp init (6)) fixed bin(17) int static options(constant); /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /* */ /* The following character string arrays identify each entry type attribute by name. */ /* Both brief and long string arrays are provided. */ /* */ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ dcl node_type (0:6) char(32) varying aligned int static options(constant) init ( "link", "segment", "directory", "multisegment file", "multi-segment file component", "archive", "archive component"), brief_node_type (0:6) char(12) varying aligned int static options(constant) init ( "link", "segment", "directory", "msf", "msf comp", "archive", "arch comp"); /* END OF: lib_node_.incl.pl1 * * * * * * * * * * * * * * * * */ */ ----------------------------------------------------------- Historical Background This edition of the Multics software materials and documentation is provided and donated to Massachusetts Institute of Technology by Group Bull including Bull HN Information Systems Inc. as a contribution to computer science knowledge. This donation is made also to give evidence of the common contributions of Massachusetts Institute of Technology, Bell Laboratories, General Electric, Honeywell Information Systems Inc., Honeywell Bull Inc., Groupe Bull and Bull HN Information Systems Inc. to the development of this operating system. Multics development was initiated by Massachusetts Institute of Technology Project MAC (1963-1970), renamed the MIT Laboratory for Computer Science and Artificial Intelligence in the mid 1970s, under the leadership of Professor Fernando Jose Corbato. Users consider that Multics provided the best software architecture for managing computer hardware properly and for executing programs. Many subsequent operating systems incorporated Multics principles. Multics was distributed in 1975 to 2000 by Group Bull in Europe , and in the U.S. by Bull HN Information Systems Inc., as successor in interest by change in name only to Honeywell Bull Inc. and Honeywell Information Systems Inc. . ----------------------------------------------------------- Permission to use, copy, modify, and distribute these programs and their documentation for any purpose and without fee is hereby granted,provided that the below copyright notice and historical background appear in all copies and that both the copyright notice and historical background and this permission notice appear in supporting documentation, and that the names of MIT, HIS, Bull or Bull HN not be used in advertising or publicity pertaining to distribution of the programs without specific prior written permission. Copyright 1972 by Massachusetts Institute of Technology and Honeywell Information Systems Inc. Copyright 2006 by Bull HN Information Systems Inc. Copyright 2006 by Bull SAS All Rights Reserved */