02/06/84 ring0_get_ The ring0_get_ subroutine returns the name and pointer information about hardcore segments. Entry points in ring0_get_: (List is generated by the help command) :Entry: definition: 02/06/84 ring0_get_$definition Function: This entry point is used to ascertain the offset of a symbol in a hardcore segment in the running Multics supervisor. Syntax: declare ring0_get_$definition entry (ptr, char(*), char(*), fixed bin(18), fixed bin, fixed bin(35)); call ring0_get_$definition (seg_ptr, component_name, sym_name, offset, type, code); Arguments: seg_ptr is a pointer to the base of the segment in which it is desired to obtain a symbol offset. (Input/Output). If supplied as null, the segment that bears the name component_name in the SLT is used, and seg_ptr is returned as output as a pointer to the base of this segment. component_name is the name of the segment or segment bound component in which the symbol, sym_name, is to be found. (Input). If sym_name is an unambiguous reference in the segment defined by seg_ptr, this parameter can be given as a null string. If seg_ptr is given as null, this parameter must be supplied, and specifies the segment name as well. sym_name is the name of the external symbol in the segment specified by seg_ptr or component_name. (Input). If more than one external symbol of this name appears in this segment, component_name is used to select the correct component. offset is the offset of this definition, if found, into the section of the specified segment as specified by type. (Output) type is the definition type of this definition, detailing in which section of the specified segment this definition resides. (Output) code is a standard status code. (Output). If the the segment specified has no definitions, error_table_$no_defs is returned. :Entry: definition_given_slt: 02/06/84 ring0_get_$definition_given_slt Function: This entry point is used to ascertain the offset of a symbol in a hardcore segment in other than the running Multics supervisor. Copies of the Segment Loading Table (SLT), SLT name table, and hardcore definitions segment are supplied. Syntax: declare ring0_get_$definition_given_slt entry (ptr, char(*), char(*), fixed bin(18), fixed bin, fixed bin(35), ptr, ptr, ptr); call ring0_get_$definition_given_slt (seg_ptr, component_name, sym_name, offset, type, code, slt_ptr, nametbl_ptr, deftbl_ptr): Arguments: seg_ptr is a pointer to the base of the segment in which it is desired to obtain a symbol offset. (Input/Output). If supplied as null, the segment that bears the name component_name in the SLT is used, and seg_ptr is returned as output as a pointer to the base of this segment. component_name is the name of the segment or segment bound component in which the symbol, sym_name, is to be found. (Input). If sym_name is an unambiguous reference in the segment defined by seg_ptr, this parameter can be given as a null string. If seg_ptr is given as null, this parameter must be supplied, and specifies the segment name as well. sym_name is the name of the external symbol in the segment specified by seg_ptr or component_name. (Input). If more than one external symbol of this name appears in this segment, component_name is used to select the correct component. offset is the offset of this definition, if found, into the section of the specified segment as specified by type. (Output) type is the definition type of this definition, detailing in which section of the specified segment this definition resides. (Output) code is a standard status code. (Output). If the the segment specified has no definitions, error_table_$no_defs is returned. slt_ptr is a pointer to the copy of the segment loading table (SLT) to be used. (Input). nametbl_ptr is a pointer to the corresponding copy of the SLT name table. (Input) deftbl_ptr is a pointer to the corresponding copy of the hardcore definitions segment (definitions_). (Input) :Entry: name: 02/06/84 ring0_get_$name Function: This entry point returns the primary name and directory name of a ring 0 segment when given a pointer to the segment. Syntax: declare ring0_get_$name entry (char(*), char(*), ptr, fixed bin); call ring0_get_$name (dir_name, entryname, seg_ptr, code); Arguments: dir_name is the pathname of the directory of the segment. (Output). If the segment does not have a pathname (as is the case for most hardcore segments), this is returned as a null string. entryname is the primary name of the segment. (Output) seg_ptr is a pointer to the ring 0 segment. (Input) code is a standard status code. (Output). It is nonzero if, and only if, seg_ptr does not point to a ring 0 segment. :Entry: name_given_slt: 02/06/84 ring0_get_$name_given_slt Function: This entry point is analogous to the name entry point except that external SLT and name tables are used, instead of the versions of these tables currently being used by the system. Syntax: declare ring0_get_$name_given_slt entry (char(*), char(*), ptr, fixed bin); call ring0_get_$name_given_slt (dir_name, entryname, seg_ptr, code, sltp, namep); Arguments: dir_name is the pathname of the directory of the segment. (Output). If the segment does not have a pathname (as is the case for most hardcore segments), this is returned as a null string. entryname is the primary name of the segment. (Output) seg_ptr is a pointer to the ring 0 segment. (Input) code is a standard status code. (Output). It is nonzero if, and only if, seg_ptr does not point to a ring 0 segment. sltp is a pointer to an SLT that contains information about the segment. (Input) namep is a pointer to a name table (associated with the above SLT) containing the names of segments. (Input) :Entry: names: 02/06/84 ring0_get_$names Function: This entry point returns all the names and the directory name of a ring 0 segment when given a pointer to the segment. Syntax: declare ring0_get_$names entry (char(*), ptr, ptr, fixed bin); call ring0_get_$names (dir_name, names_ptr, seg_ptr, code); Arguments: dir_name is the pathname of the directory of the segment. (Output) names_ptr is a pointer to a structure (described in "Notes" below) containing the names of the segment. (Output) seg_ptr is a pointer to the ring 0 segment. (Input) code is nonzero if, and only if, seg_ptr does not point to a ring 0 segment. (Output) Notes: The following structure is used-- dcl 1 segnames based (namesptr) aligned, 2 count fixed bin, 2 names (50 refer (segnames.count)), 3 length fixed bin, 3 name char(32); Structure elements: count is the number of names. names is a substructure containing an array of segment names. length is the length of the name in characters. name is the space for the name. :Entry: segptr: 02/06/84 ring0_get_$segptr Function: This entry point returns a pointer to a specified ring 0 segment. Only the name is used to determine the pointer. Syntax: declare ring0_get_$segptr entry (char(*), char(*), ptr, fixed bin(35)); call ring0_get_$segptr (dir_name, entryname, seg_ptr, code); Arguments: dir_name is ignored. (Input) entryname is the name of the ring 0 segment for which a pointer is desired. (Input) seg_ptr is a pointer to the segment. (Output) code is a standard status code. (Output). It is nonzero if, and only if, the entry is not found. Notes: If the entry is not found, seg_ptr is returned as a null pointer. :Entry: segptr_given_slt: 02/06/84 ring0_get_$segptr_given_slt Function: This entry point is analogous to the segptr entry point except that external SLT name tables are used, instead of the versions of these tables currently being used by the system. Syntax: declare ring0_get_$segptr_given_slt entry (char(*), char(*), ptr, fixed bin(35), ptr, ptr); call ring0_get_$segptr_given_slt (dir_name, entryname, seg_ptr, code, sltp, namep); Arguments: dir_name is ignored. (Input) entryname is the name of the ring 0 segment for which a pointer is desired. (Input) seg_ptr is a pointer to the segment. (Output) code is a standard status code. (Output). It is nonzero if, and only if, the entry is not found. sltp is a pointer to an SLT that contains information about the segment. (Input) namep is a pointer to a name table (associated with the above SLT) containing the names of segments. (Input) ----------------------------------------------------------- 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