Re: terminology: execution domain, personality
Martin Eberhard Schauer wrote:
> the German translation team startet the effort to update the German manpage
> translations. There was a critical response to my initial German version of
>>> #: ../english/manpages-dev/man2/personality.2:45
>>> msgid ""
>>> "Linux supports different execution domains, or personalities, for each "
>>> "process. Among other things, execution domains tell Linux how to map"
>>> "signal numbers into signal actions. The execution domain system allows "
>>> "Linux to provide limited support for binaries compiled under other Unix-like "
>>> operating systems."
> Am I wrong to say that "execution domain" and "personality" are different names
> for the same thing?
That's certainly what the English suggests; they're offered as more
or less equivalent alternative labels. I don't know anything about
Linux personality support, though; all the Google hits seem to be
talking about the Linux Kernel Personality software for SCO UnixWare
that groklaw had so much fun with.
> If I am right, should rewriting the paragraph be considered?
I'm reading this as "if I'm right to suggest that the manpage is
wrong to say they're the same" - correct me if I'm scrambling it!
But if the manpage is technically wrong, yes, a rewrite sounds
> And most important: how can these terms by described in other words to get
> a translation that doesn't just import another English technical term?
> I found something from the founder of the Linux manpages project, Andries
> E. Brouwer:
> Linux has the concept of /personality/ of an executable (since 1.1.20). The
> purpose is to make the Linux environment more similar to some other
> environment, like BSD or SCO or Solaris or older Linux, so that foreign
> or old binaries have better chances of working without modification.
A few paragraphs further on:
| The personality value is composed of a 2-byte value identifying the system
| (Linux, SVR4, SUNOS, HPUX etc), and a number of 1-bit flags. See <linux/
| personality.h>. [...]
Okay, I'll see <personality.h>:
| * Handling of different ABIs (personalities).
| struct exec_domain;
| struct pt_regs;
| extern int register_exec_domain(struct exec_domain *);
| extern int unregister_exec_domain(struct exec_domain *);
| extern int __set_personality(unsigned long);
Put together these seem to imply that the manpage should say
something more like "Linux supports different personalities
(Unix-like ABIs) for each process via execution domains."
Googling for /proc/execdomains I find this:
| This file lists the execution domains currently supported by the Linux kernel,
| along with the range of personalities they support.
| 0-0 Linux [kernel]
| Think of execution domains as the "personality" for an operating system.
| Because other binary formats, such as Solaris, UnixWare, and FreeBSD, can be
| used with Linux, programmers can change the way the operating system treats
| system calls from these binaries by changing the personality of the task.
| Except for the PER_LINUX execution domain, different personalities can be
| implemented as dynamically loadable modules.
That first sentence definitely distinguishes the two ideas, but the
rest goes back to treating them as synonyms.
> To me it sounds like some kind of adaption of the process environment. I
> would describe execution domain as "customized process execution
> Any technical and linguistic insight is appreciated.
My last piece of Googlage seems to be saying that the execution
domain itself isn't customised; each execdomain potentially supports
a range of personalities, and it's those which can be customised
(e.g. with the STICKY_TIMEOUTS flag). But I'm at the limits of my
technical insight here.
It's possible that trying to explain the term "execution domain"
would be a waste of effort - if they're a thingumabob whose sole
purpose is to support personalities, the kind of explanation they
need is one that describes what personalities are and how they work!
JBR with qualifications in linguistics, experience as a Debian
sysadmin, and probably no clue about this particular package