summaryrefslogtreecommitdiff
path: root/hurd/fsys.defs
blob: f13198584c626bdb1e850619d3cc9c54311b6317 (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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
/* Definitions for the filesystem control interface
   Copyright (C) 1992, 1993 Free Software Foundation

This file is part of the GNU Hurd.

The GNU Hurd is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.

The GNU Hurd is distributed in the hope that it will be useful, 
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with the GNU Hurd; see the file COPYING.  If not, write to
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */

subsystem fsys 22000;

#include <hurd/hurd_types.defs>

#ifdef FSYS_IMPORTS
FSYS_IMPORTS
#endif

/* Sent by filesystem on its bootstrap port upon startup.
   REALNODE is the node this filesystem is the translator for,
   with all permissions.  */
routine fsys_startup (
	bootstrap: mach_port_t;
	control_port: fsys_t;
	out realnode: mach_port_send_t;
	out dotdot_node: mach_port_send_t);

/* Filesystem should go away.  Bye.  */
routine fsys_goaway (
	fsys: fsys_t;
	flags: int);

/* Return a file to the root of the filesystem.
   FLAGS are as for dir_pathtrans. */
routine fsys_getroot (
	fsys: fsys_t;
#ifdef	FSYS_GETROOT_UREPLY
	ureplyport ureply: mig_reply_port_t;
#endif
	flags: int;
	gen_uids: idarray_t;
	gen_gids: idarray_t;
	out file: mach_port_send_t);

/* Get a file given a file handle (see file_getfh).  */
routine fsys_getfile (
	fsys: fsys_t;
	gen_uids: idarray_t;
	gen_gids: idarray_t;
	filehandle: data_t;
	out file: mach_port_send_t);

/* Bootstrap filesystems should first arrange to have an execserver
   running, by whatever mechanism they prefer.  Using that execserver,
   they should then exec the startup server.  The startup server will
   start the authentication server, and then file_getcontrol on its
   current directory, and then this call on the resulting control
   port, giving that information to the fileserver.  */
routine fsys_here_is_auth (
	fsys: fsys_t;
	auth_handle: auth_t);