1 02/06/84  ring0_get_
  2 
  3 The ring0_get_ subroutine returns the name and pointer information
  4 about hardcore segments.
  5 
  6 
  7 Entry points in ring0_get_:
  8    (List is generated by the help command)
  9 
 10 
 11 :Entry:  definition:  02/06/84 ring0_get_$definition
 12 
 13 
 14 Function:  This entry point is used to ascertain the offset of a symbol
 15 in a hardcore segment in the running Multics supervisor.
 16 
 17 
 18 Syntax:
 19 declare ring0_get_$definition entry (ptr, char(*), char(*),
 20      fixed bin(18), fixed bin, fixed bin(35));
 21 call ring0_get_$definition (seg_ptr, component_name, sym_name, offset,
 22      type, code);
 23 
 24 
 25 Arguments:
 26 seg_ptr
 27    is a pointer to the base of the segment in which it is desired to
 28    obtain a symbol offset.  (Input/Output).  If supplied as null, the
 29    segment that bears the name component_name in the SLT is used, and
 30    seg_ptr is returned as output as a pointer to the base of this
 31    segment.
 32 component_name
 33    is the name of the segment or segment bound component in which the
 34    symbol, sym_name, is to be found.  (Input).  If sym_name is an
 35    unambiguous reference in the segment defined by seg_ptr, this
 36    parameter can be given as a null string.  If seg_ptr is given as
 37    null, this parameter must be supplied, and specifies the segment
 38    name as well.
 39 
 40 
 41 sym_name
 42    is the name of the external symbol in the segment specified by
 43    seg_ptr or component_name.  (Input).  If more than one external
 44    symbol of this name appears in this segment, component_name is used
 45    to select the correct component.
 46 offset
 47    is the offset of this definition, if found, into the section of the
 48    specified segment as specified by type.  (Output)
 49 type
 50    is the definition type of this definition, detailing in which
 51    section of the specified segment this definition resides.  (Output)
 52 code
 53    is a standard status code.  (Output).  If the the segment specified
 54    has no definitions, error_table_$no_defs is returned.
 55 
 56 
 57 :Entry:  definition_given_slt:
 58 02/06/84 ring0_get_$definition_given_slt
 59 
 60 
 61 Function:  This entry point is used to ascertain the offset of a symbol
 62 in a hardcore segment in other than the running Multics supervisor.
 63 Copies of the Segment Loading Table (SLT), SLT name table, and hardcore
 64 definitions segment are supplied.
 65 
 66 
 67 Syntax:
 68 declare ring0_get_$definition_given_slt entry (ptr, char(*), char(*),
 69      fixed bin(18), fixed bin, fixed bin(35), ptr, ptr, ptr);
 70 call ring0_get_$definition_given_slt (seg_ptr, component_name,
 71      sym_name, offset, type, code, slt_ptr, nametbl_ptr, deftbl_ptr):
 72 
 73 
 74 Arguments:
 75 seg_ptr
 76    is a pointer to the base of the segment in which it is desired to
 77    obtain a symbol offset.  (Input/Output).  If supplied as null, the
 78    segment that bears the name component_name in the SLT is used, and
 79    seg_ptr is returned as output as a pointer to the base of this
 80    segment.
 81 component_name
 82    is the name of the segment or segment bound component in which the
 83    symbol, sym_name, is to be found.  (Input).  If sym_name is an
 84    unambiguous reference in the segment defined by seg_ptr, this
 85    parameter can be given as a null string.  If seg_ptr is given as
 86    null, this parameter must be supplied, and specifies the segment
 87    name as well.
 88 
 89 
 90 sym_name
 91    is the name of the external symbol in the segment specified by
 92    seg_ptr or component_name.  (Input).  If more than one external
 93    symbol of this name appears in this segment, component_name is used
 94    to select the correct component.
 95 offset
 96    is the offset of this definition, if found, into the section of the
 97    specified segment as specified by type.  (Output)
 98 type
 99    is the definition type of this definition, detailing in which
100    section of the specified segment this definition resides.  (Output)
101 code
102    is a standard status code.  (Output).  If the the segment specified
103    has no definitions, error_table_$no_defs is returned.
104 
105 
106 slt_ptr
107    is a pointer to the copy of the segment loading table (SLT) to be
108    used.  (Input).
109 nametbl_ptr
110    is a pointer to the corresponding copy of the SLT name table.
111    (Input)
112 deftbl_ptr
113    is a pointer to the corresponding copy of the hardcore definitions
114    segment (definitions_).  (Input)
115 
116 
117 :Entry:  name:  02/06/84 ring0_get_$name
118 
119 
120 Function:  This entry point returns the primary name and directory name
121 of a ring 0 segment when given a pointer to the segment.
122 
123 
124 Syntax:
125 declare ring0_get_$name entry (char(*), char(*), ptr, fixed bin);
126 call ring0_get_$name (dir_name, entryname, seg_ptr, code);
127 
128 
129 Arguments:
130 dir_name
131    is the pathname of the directory of the segment.  (Output).  If the
132    segment does not have a pathname (as is the case for most hardcore
133    segments), this is returned as a null string.
134 entryname
135    is the primary name of the segment.  (Output)
136 seg_ptr
137    is a pointer to the ring 0 segment.  (Input)
138 code
139    is a standard status code.  (Output).  It is nonzero if, and only
140    if, seg_ptr does not point to a ring 0 segment.
141 
142 
143 :Entry:  name_given_slt:  02/06/84 ring0_get_$name_given_slt
144 
145 
146 Function:  This entry point is analogous to the name entry point except
147 that external SLT and name tables are used, instead of the versions of
148 these tables currently being used by the system.
149 
150 
151 Syntax:
152 declare ring0_get_$name_given_slt entry (char(*), char(*), ptr,
153      fixed bin);
154 call ring0_get_$name_given_slt (dir_name, entryname, seg_ptr, code,
155      sltp, namep);
156 
157 
158 Arguments:
159 dir_name
160    is the pathname of the directory of the segment.  (Output).  If the
161    segment does not have a pathname (as is the case for most hardcore
162    segments), this is returned as a null string.
163 entryname
164    is the primary name of the segment.  (Output)
165 seg_ptr
166    is a pointer to the ring 0 segment.  (Input)
167 code
168    is a standard status code.  (Output).  It is nonzero if, and only
169    if, seg_ptr does not point to a ring 0 segment.
170 
171 
172 sltp
173    is a pointer to an SLT that contains information about the segment.
174    (Input)
175 namep
176    is a pointer to a name table (associated with the above SLT)
177    containing the names of segments.  (Input)
178 
179 
180 :Entry:  names:  02/06/84 ring0_get_$names
181 
182 
183 Function:  This entry point returns all the names and the directory
184 name of a ring 0 segment when given a pointer to the segment.
185 
186 
187 Syntax:
188 declare ring0_get_$names entry (char(*), ptr, ptr, fixed bin);
189 call ring0_get_$names (dir_name, names_ptr, seg_ptr, code);
190 
191 
192 Arguments:
193 dir_name
194    is the pathname of the directory of the segment.  (Output)
195 names_ptr
196    is a pointer to a structure (described in "Notes" below) containing
197    the names of the segment.  (Output)
198 seg_ptr
199    is a pointer to the ring 0 segment.  (Input)
200 code
201    is nonzero if, and only if, seg_ptr does not point to a ring 0
202    segment.  (Output)
203 
204 
205 Notes:  The following structure is used--
206 
207    dcl 1 segnames      based (namesptr) aligned,
208          2 count       fixed bin,
209          2 names       (50 refer (segnames.count)),
210            3 length    fixed bin,
211            3 name      char(32);
212 
213 
214 Structure elements:
215    count
216       is the number of names.
217    names
218       is a substructure containing an array of segment names.
219    length
220       is the length of the name in characters.
221    name
222       is the space for the name.
223 
224 
225 :Entry:  segptr:  02/06/84 ring0_get_$segptr
226 
227 
228 Function:  This entry point returns a pointer to a specified ring 0
229 segment.  Only the name is used to determine the pointer.
230 
231 
232 Syntax:
233 declare ring0_get_$segptr entry (char(*), char(*), ptr, fixed bin(35));
234 call ring0_get_$segptr (dir_name, entryname, seg_ptr, code);
235 
236 
237 Arguments:
238 dir_name
239    is ignored.  (Input)
240 entryname
241    is the name of the ring 0 segment for which a pointer is desired.
242    (Input)
243 seg_ptr
244    is a pointer to the segment.  (Output)
245 code
246    is a standard status code.  (Output).  It is nonzero if, and only
247    if, the entry is not found.
248 
249 
250 Notes:  If the entry is not found, seg_ptr is returned as a null
251 pointer.
252 
253 
254 :Entry:  segptr_given_slt:  02/06/84 ring0_get_$segptr_given_slt
255 
256 
257 Function:  This entry point is analogous to the segptr entry point
258 except that external SLT name tables are used, instead of the versions
259 of these tables currently being used by the system.
260 
261 
262 Syntax:
263 declare ring0_get_$segptr_given_slt entry (char(*), char(*), ptr,
264      fixed bin(35), ptr, ptr);
265 call ring0_get_$segptr_given_slt (dir_name, entryname, seg_ptr, code,
266      sltp, namep);
267 
268 
269 Arguments:
270 dir_name
271    is ignored.  (Input)
272 entryname
273    is the name of the ring 0 segment for which a pointer is desired.
274    (Input)
275 seg_ptr
276    is a pointer to the segment.  (Output)
277 code
278    is a standard status code.  (Output).  It is nonzero if, and only
279    if, the entry is not found.
280 
281 
282 sltp
283    is a pointer to an SLT that contains information about the segment.
284    (Input)
285 namep
286    is a pointer to a name table (associated with the above SLT)
287    containing the names of segments.  (Input)