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 bin18 fixed bin fixed bin35;
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 bin18 fixed bin fixed bin35 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 char32;
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 bin35;
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 bin35 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