summaryrefslogtreecommitdiff
path: root/hurd/translator.mdwn
blob: 3265fac4cef33a98f254707570a1f81e250be49b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
[[license text="""
Copyright © 2007 Free Software Foundation, Inc.

Permission is granted to copy, distribute and/or modify this document under the
terms of the GNU Free Documentation License, Version 1.2 or any later version
published by the Free Software Foundation; with no Invariant Sections, no
Front-Cover Texts, and no Back-Cover Texts.  A copy of the license is included
in the section entitled [[GNU_Free_Documentation_License|/fdl.txt]].

By contributing to this page, you agree to assign copyright for your
contribution to the Free Software Foundation.  The Free Software Foundation
promises to always use either a verbatim copying license or a free
documentation license when publishing your contribution.  We grant you back all
your rights under copyright, including the rights to copy, modify, and
redistribute your contributions.
"""]]

A translator is simply a normal program acting as
an object server and participating in the Hurd's
distributed [[VirtualFileSystem]].  It is so-called
because it typically exports a file system
(although need not: cf. [[auth]], [[proc]]
and [[pfinet]]) and thus translates object invocations
into calls appropriate for the backing store
(e.g., ext2 file system, nfs server, etc.).

Translators do not require any special privilege
to run.  The privilege they require is simply
that to access the indiviudal resources they use.
This is primarily the backing store and the node
they attach to.  Typically, a translator can
only be attached to a node by the node's owner.
On Unix this is not possible because file systems
and the virtual file system are implemented in the
kernel and thus have absolute access to the machine.
As the protocols do not require any special privilege
to implement, this is not an issue on the Hurd.

See [[Translators]] for a list of Hurd translators.

To learn how to write a translator, read the code!
It is well documented, in particular, the header files.
The [[HurdHackingGuide]] also has a tutorial.