HP3000-L Archives

February 1995, Week 2

HP3000-L@RAVEN.UTC.EDU

Options: Use Monospaced Font
Show Text Part by Default
Show All Mail Headers

Message: [<< First] [< Prev] [Next >] [Last >>]
Topic: [<< First] [< Prev] [Next >] [Last >>]
Author: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
Subject:
From:
Mike Belshe <[log in to unmask]>
Reply To:
Mike Belshe <[log in to unmask]>
Date:
Fri, 10 Feb 1995 20:21:05 GMT
Content-Type:
text/plain
Parts/Attachments:
text/plain (224 lines)
Ross Ridge ([log in to unmask]) wrote:
: Mike Belshe <[log in to unmask]> wrote:
: >... The use of globals all over the place is another.  MPE had
: >abandoned globals 10 years ago, and now, for portability, we have to
: >introduce them.  There are a lot of problems that arise in accomodating
: >UNIX's globals. ...
 
: Huh?  What globals?  The only two global variables that I can think of
: are errno and environ, both of which are maintained by the C runtime on
: Unix systems, not the operating system.
 
I consider system calls to be part of the operating system.  You're right,
the OS doesn't *know* about the globals, that is the job of the linker/
loader.  But if the system calls use globals, I think it is fair to say
that the OS uses globals.
 
Let me try to elaborate.  The problem for MPE stems from the fact that
the loader was designed to share code but not to share data in dynamic
libraries (XLs).  This could be considered a flaw in itself.  The only
excuse I can think of is that since MPE's system calls (intrinsics)
don't use globals, shared data wasn't needed in dynamic libraries.
I don't like that answer, though, because there are a lot of users
out there who would probably want to have globals in their own private
dynamic libraries.
 
( I guess that I am somewhat contradicting myself here; in the original
post, I said that we had to introduce shared globals to accommodate
UNIX's globals- which is true, but that isn't really fair.  If we had
supported shared globals in the first place (which we probably should
have), it never would have been an issue.  I apologize for the
inconsistency. )
 
UNIX, on the other hand, designed most of its system calls and library
routines to access globals.  MPE does not.  So when you write a program
on MPE that uses MPE system calls (intrinsics), the only globals that
you'd get linked in would be your own.  On UNIX, a whole slew of globals
get linked in at runtime to satisfy the various system calls that your
program calls.  In order for us to support these types of calls, we
had to go back and add the shared globals to our linker/loader.
 
This isn't really a bad thing, but I think its interesting.  I like
UNIX very much anyway... :-)
 
Here is a list of globals from HP-UX's libc.sl (all 160 of them).
 
4000b10c 00000013 Data  Univ   0 ......S  0 00000 _1kanji
4000b110 00000013 Data  Univ   0 ......S  0 00000 _2kanji
40007bb8 00000010 Data  Univ   0 .......  0 00000 _Dir
00076198 ffffffff Data  Unsat  0 .......  0 00000 _SYSTEM_ID
4000b10c 00000013 Data  Univ   0 .......  0 00000 __1kanji
4000b110 00000013 Data  Univ   0 .......  0 00000 __2kanji
400071b0 0000000f Data  Univ   0 .......  0 00000 __C_ctype
4000753c 0000000f Data  Univ   0 .......  0 00000 __C_ctype2
40006d48 0000000f Data  Univ   0 .......  0 00000 __C_downshift
4000733c 0000000f Data  Univ   0 .......  0 00000 __C_e_cset
4000743c 0000000f Data  Univ   0 .......  0 00000 __C_ein_csize
4000aa58 00000012 Data  Univ   0 .......  0 00000 __C_langinfo
40006e48 0000000f Data  Univ   0 .......  0 00000 __C_upshift
40007bc0 00000010 Data  Univ   0 .......  0 00000 ___Argv
40029aa8 ffffffff Data  Unsat  0 .......  0 00000 ___stdio_unsup_2
4000b1b8 00000013 Data  Univ   0 .......  0 00000 ___stdio_unsup_3
4000b1bc 00000013 Data  Univ   0 .......  0 00000 ___stdio_unsup_4
4000b108 00000013 Data  Univ   0 .......  0 00000 __alnum
40007b94 00000010 Data  Univ   0 .......  0 00000 __argv_value
4000b0d0 00000012 Data  Univ   0 .......  0 00000 __bufendtab
4000a818 00000012 Data  Univ   0 .......  0 00000 __category_name
4000b144 00000013 Data  Univ   0 .......  0 00000 __cs_EUC
4000b140 00000013 Data  Univ   0 .......  0 00000 __cs_HP15
4000b13c 00000013 Data  Univ   0 .......  0 00000 __cs_SBYTE
4000b100 00000013 Data  Univ   0 .......  0 00000 __ctype
4000b104 00000013 Data  Univ   0 .......  0 00000 __ctype2
4000b0fc 00000013 Data  Univ   0 .......  0 00000 __daylight
40007c38 00000010 Data  Univ   0 .......  0 00000 __downshift
4000b114 00000013 Data  Univ   0 .......  0 00000 __e_cset
4000b118 00000013 Data  Univ   0 .......  0 00000 __ein_csize
4000b11c 00000013 Data  Univ   0 .......  0 00000 __eout_csize
400291a0 ffffffff Data  Unsat  0 .......  0 00000 __error_store
40007c18 00000010 Data  Univ   0 .......  0 00000 __errptr
40007b3c 0000000f Data  Univ   0 .......  0 00000 __euc_template
4000b148 00000013 Data  Univ   0 .......  0 00000 __in_csize
4000b050 00000012 Data  Univ   0 .......  0 00000 __iob
40008b70 00000012 Data  Univ   0 .......  0 00000 __ipc_result_map
4000a648 00000012 Data  Univ   0 .......  0 00000 __langmap
400294e8 ffffffff Data  Unsat  0 .......  0 00000 __modmap
4000b134 00000013 Data  Univ   0 .......  0 00000 __nl_char_size
4000b138 00000013 Data  Univ   0 .......  0 00000 __nl_code_scheme
40007bf8 00000010 Data  Univ   0 .......  0 00000 __nl_failid
40007c28 00000010 Data  Univ   0 .......  0 00000 __nl_info
40007b20 0000000f Data  Univ   0 .......  0 00000 __nl_langid
4000b14c 00000013 Data  Univ   0 .......  0 00000 __out_csize
40009298 00000012 Data  Univ   0 .......  0 00000 __res_opcodes
400092d8 00000012 Data  Univ   0 .......  0 00000 __res_resultcodes
4002a404 ffffffff Data  Unsat  0 .......  0 00000 __sdt_dst
40006248 0000000f Data  Univ   0 .......  0 00000 __sec_tab
4002e680 ffffffff Data  Unsat  0 .......  0 00000 __smbuf
40006258 0000000f Data  Univ   0 .......  0 00000 __status_tab
4000b0f8 00000013 Data  Univ   0 .......  0 00000 __timezone
4000b0f0 00000013 Data  Univ   0 .......  0 00000 __tzname
40007c40 00000010 Data  Univ   0 .......  0 00000 __upshift
40007a9c 0000000f Data  Univ   0 .......  0 00000 _a
40009910 00000012 Data  Univ   0 .......  0 00000 _aclentrystart
40007bd0 00000010 Data  Univ   0 .......  0 00000 _check_rhosts_file
400071b0 0000000f Data  Univ   0 ......S  0 00000 _ctype
4000753c 0000000f Data  Univ   0 ......S  0 00000 _ctype2
4000b124 00000013 Data  Univ   0 .......  0 00000 _curbrk
40007c38 00000010 Data  Univ   0 ......S  0 00000 _downshift
400076d8 0000000f Data  Univ   0 .......  0 00000 _e
40007640 0000000f Data  Univ   0 .......  0 00000 _e0
4000768c 0000000f Data  Univ   0 .......  0 00000 _e1
00007b20 ffffffff Data  Unsat  0 .......  0 00000 _end
40007c20 00000010 Data  Univ   0 .......  0 00000 _environ
40007c00 00000010 Data  Univ   0 .......  0 00000 _faillang
40007b98 00000010 Data  Univ   0 .......  0 00000 _getdate_err
40008ad0 00000012 Data  Univ   0 .......  0 00000 _h_errlist
40007bc8 00000010 Data  Univ   0 .......  0 00000 _h_errno
40007bb0 00000010 Data  Univ   0 .......  0 00000 _h_nerr
4000b050 00000012 Data  Univ   0 ......S  0 00000 _iob
40007c48 00000010 Data  Univ   0 .......  0 00000 _lconv
4000aff8 00000012 Data  Univ   0 .......  0 00000 _lconv_data
40007bfc 00000010 Data  Univ   0 .......  0 00000 _loadlang
40007a1c 0000000f Data  Univ   0 .......  0 00000 _ls
40006c78 0000000f Data  Univ   0 .......  0 00000 _marshalled_client
4002a400 ffffffff Data  Unsat  0 .......  0 00000 _mcas_util_addr
4000b120 00000013 Data  Univ   0 .......  0 00000 _minbrk
4000b180 00000013 Data  Univ   0 .......  0 00000 _nl_collate_on
4000b154 00000013 Data  Univ   0 .......  0 00000 _nl_context
4000b1ac 00000013 Data  Univ   0 .......  0 00000 _nl_cwc
4000b174 00000013 Data  Univ   0 .......  0 00000 _nl_dascii
4000b168 00000013 Data  Univ   0 .......  0 00000 _nl_dgt_alt
4000b150 00000013 Data  Univ   0 .......  0 00000 _nl_direct
4002a3c0 ffffffff Data  Unsat  0 .......  0 00000 _nl_era
40029eb0 ffffffff Data  Unsat  0 .......  0 00000 _nl_errno
40007bf8 00000010 Data  Univ   0 ......S  0 00000 _nl_failid
40007c08 00000010 Data  Univ   0 .......  0 00000 _nl_fn
4000b178 00000013 Data  Univ   0 .......  0 00000 _nl_map21
4000b19c 00000013 Data  Univ   0 .......  0 00000 _nl_mb_cls
4000b184 00000013 Data  Univ   0 .......  0 00000 _nl_mb_collate
4000b198 00000013 Data  Univ   0 .......  0 00000 _nl_mb_hdr
4000b1a0 00000013 Data  Univ   0 .......  0 00000 _nl_mb_toL
4000b1a4 00000013 Data  Univ   0 .......  0 00000 _nl_mb_toU
4000b15c 00000013 Data  Univ   0 .......  0 00000 _nl_mode
4000b17c 00000013 Data  Univ   0 .......  0 00000 _nl_onlyseq
4000b158 00000013 Data  Univ   0 .......  0 00000 _nl_order
4000b160 00000013 Data  Univ   0 .......  0 00000 _nl_outdigit
4000b170 00000013 Data  Univ   0 .......  0 00000 _nl_pascii
4000b16c 00000013 Data  Univ   0 .......  0 00000 _nl_punct_alt
4000b128 00000013 Data  Univ   0 .......  0 00000 _nl_radix
4000b164 00000013 Data  Univ   0 .......  0 00000 _nl_space_alt
4000b1a8 00000013 Data  Univ   0 .......  0 00000 _nl_wc
4002a408 ffffffff Data  Unsat  0 .......  0 00000 _null_auth
40007bac 00000010 Data  Univ   0 .......  0 00000 _optarg
40007ba0 00000010 Data  Univ   0 .......  0 00000 _opterr
40007ba4 00000010 Data  Univ   0 .......  0 00000 _optind
40007ba8 00000010 Data  Univ   0 .......  0 00000 _optopt
4000b18c 00000013 Data  Univ   0 .......  0 00000 _pritab
40007724 0000000f Data  Univ   0 .......  0 00000 _q0
400078a0 0000000f Data  Univ   0 .......  0 00000 _q1
4002a418 ffffffff Data  Unsat  0 .......  0 00000 _raw_buf
400097b0 00000012 Data  Univ   0 .......  0 00000 _res
40009298 00000012 Data  Univ   0 ......S  0 00000 _res_opcodes
400092d8 00000012 Data  Univ   0 ......S  0 00000 _res_resultcodes
40006c90 0000000f Data  Univ   0 .......  0 00000 _rpc_createerr
40006248 0000000f Data  Univ   0 ......S  0 00000 _sec_tab
4000b188 00000013 Data  Univ   0 .......  0 00000 _seqtab
4000b130 00000013 Data  Univ   0 .......  0 00000 _sh_high
4000b12c 00000013 Data  Univ   0 .......  0 00000 _sh_low
4002c678 ffffffff Data  Unsat  0 .......  0 00000 _sibuf
40025160 ffffffff Data  Unsat  0 .......  0 00000 _sobuf
40029554 ffffffff Data  Unsat  0 .......  0 00000 _sort_rules
40006258 0000000f Data  Univ   0 ......S  0 00000 _status_tab
4000b1b0 00000013 Data  Univ   0 .......  0 00000 _stdbuf
40005e80 0000000f Data  Univ   0 .......  0 00000 _svc_fdset
40009980 00000012 Data  Univ   0 .......  0 00000 _sys_errlist
40007be0 00000010 Data  Univ   0 .......  0 00000 _sys_nerr
4000b194 00000013 Data  Univ   0 .......  0 00000 _tab12
4000b190 00000013 Data  Univ   0 .......  0 00000 _tab21
40007c50 00000010 Data  Univ   0 .......  0 00000 _ulimit_called
40007c40 00000010 Data  Univ   0 ......S  0 00000 _upshift
40007bd8 00000010 Data  Univ   0 .......  0 00000 _usingyellow
4000a618 00000012 Data  Univ   0 .......  0 00000 _ypbind_resp_arms
4000a5d8 00000012 Data  Univ   0 .......  0 00000 _yprequest_arms
4000a5f8 00000012 Data  Univ   0 .......  0 00000 _ypresponse_arms
40007bec 00000010 Data  Univ   0 .......  0 00000 _ypserv_timeout
40007be8 00000010 Data  Univ   0 .......  0 00000 _ypsleeptime
40009910 00000012 Data  Univ   0 ......S  0 00000 aclentrystart
4000b0fc 00000013 Data  Univ   0 ......S  0 00000 daylight
40007c20 00000010 Data  Univ   0 ......S  0 00000 environ
4002e6c0 ffffffff Data  Unsat  0 .......  0 00000 errno
40007b98 00000010 Data  Univ   0 ......S  0 00000 getdate_err
40008ad0 00000012 Data  Univ   0 ......S  0 00000 h_errlist
40007bc8 00000010 Data  Univ   0 ......S  0 00000 h_errno
40007bb0 00000010 Data  Univ   0 ......S  0 00000 h_nerr
40008b70 00000012 Data  Univ   0 ......S  0 00000 ipc_result_map
40006c78 0000000f Data  Univ   0 ......S  0 00000 marshalled_client
40007bac 00000010 Data  Univ   0 ......S  0 00000 optarg
40007ba0 00000010 Data  Univ   0 ......S  0 00000 opterr
40007ba4 00000010 Data  Univ   0 ......S  0 00000 optind
40007ba8 00000010 Data  Univ   0 ......S  0 00000 optopt
40006c90 0000000f Data  Univ   0 ......S  0 00000 rpc_createerr
40005e80 0000000f Data  Univ   0 ......S  0 00000 svc_fdset
40009980 00000012 Data  Univ   0 ......S  0 00000 sys_errlist
40007be0 00000010 Data  Univ   0 ......S  0 00000 sys_nerr
4000b0f8 00000013 Data  Univ   0 ......S  0 00000 timezone
4000b0f0 00000013 Data  Univ   0 ......S  0 00000 tzname
40007bd8 00000010 Data  Univ   0 ......S  0 00000 usingyellow
 
In fairness, I should mention that many of the above globals are
not used by system calls but by libarary calls.  Libraries,
of course, are not intricately tied to the OS like system calls are.
 
Anyway, food for thought.
 
Mike
 
And the standard disclaimer:
 
  The words spoken here are the words of my own, and may not reflect
  the opinions of my employer.
 
---
Mike Belshe
[log in to unmask]
HP CSY Networking Lab

ATOM RSS1 RSS2