On Wed, Nov 29, 2017 at 6:03 AM, Noel Chiappa <jnc(a)mercury.lcs.mit.edu>
wrote:
From: Charles
Anthony
Entry points are usually defined as
"foo$bar", where "foo" is the
segment name, and "bar" an entry point in the segment symbol table. I
believe that the degerate case of "foo$" is treated as "foo$foo" by
the
shell.
So I'm curious about how this, and additional names, interact. (For those
who
aren't familiar with Multics, a segment [file, sort of] can have multiple
names. This is sort of like 'hard links' in Unix, except that in Multics
one
name, the "primary name" is very slightly preeminent. See here:
http://web.mit.edu/multics-history/source/Multics/mdds/mdd006.compout
page 2-5, for more, if you're interested.)
They are also different in an important way: the additional name is part of
the segment, not of the directory. If the segment is moved to a different
directory, the names move with it.
So if I have a segment with primary name
'foo', and additional names 'bar'
and
'zap', and I say 'zap' to the Multics shell, I assume it does a call
to
zap$zap, which finds the segment with the primary name 'foo', and calls the
'zap' entry therein?
Turns out that it does (I thought it didn't, but I checked first).
Multics has a search path mechanism (like $PATH); the directories listed
therein are searched for a matching segment name or additional name.
For the hello$world example, the command "an hello world" would add the
name "world" to the "hello" segment and then the command
"world" would
become equivalent to "hello$world".
For the case of "bound" segments, (several object segments linked together
in a single segment, and the intersegment links "pre-snapped", the binder
control file (similar to ld's ifile) would list the entry points that were
to be made externally visible, and the binder automatically adds those
names to the the bound segment:
Eg, teco lines in "bound_teco"; the "ls" command sees that
"teco" is a name
of the "bound_teco" segment.
ls >tools>teco
Segments = 1, Lengths = 9.
re 9 bound_teco_
teco_ssd
teco
teco_get_macro_
teco_error
teco_error_mode
get_temp_seg_
assign_temp_seg_id_
release_temp_seg_
release_temp_segs_all_
get_seg_ptr_
get_seg_ptr_arg_
get_seg_ptr_full_path_
get_seg_ptr_search_
release_seg_ptr_
Multics rulez; UNIX droolz
Dude, you clearly have Very Large brass ones to send that to this list! :-)
Thank you (I think). Should be a nice change from the Microsoft fan boys,
tho.
-- Charles