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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
/* A server for keeping track of filesystems
Copyright (C) 1996 Free Software Foundation, Inc.
Written by Miles Bader <miles@gnu.ai.mit.edu>
This program 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.
This program 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 this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
#include <hurd/hurd_types.defs>
subsystem mount 37000;
import <hurd/mount_defs.h>;
type mount_t = mach_port_t
#ifdef MOUNT_INTRAN
intran: MOUNT_INTRAN
#endif
#ifdef MOUNT_OUTTRAN
outtran: MOUNT_OUTTRAN
#endif
#ifdef MOUNT_DESTRUCTOR
destructor: MOUNT_DESTRUCTOR
#endif
;
type mount_server_t = mach_port_t
#ifdef MOUNT_SERVER_INTRAN
intran: MOUNT_SERVER_INTRAN
#endif
#ifdef MOUNT_SERVER_OUTTRAN
outtran: MOUNT_SERVER_OUTTRAN
#endif
#ifdef MOUNT_SERVER_DESTRUCTOR
destructor: MOUNT_SERVER_DESTRUCTOR
#endif
;
type mount_state_t = int ctype: mount_state_t;
type mount_key_class_t = int ctype: mount_key_class_t;
type mount_excl_t = int ctype: mount_excl_t;
#ifdef MOUNT_IMPORTS
MOUNT_IMPORTS
#endif
INTR_INTERFACE
/* RPCs */
/* Begin mounting the filesystem designated by KEY & KEY_CLASS; the mount is
initially assumed to have a mode of 0 (see mount_set_mode). EXCL is the
mount exclusion mode which applies to KEY (only the first EXCL argument
for a particular KEY is used). A mount reference is returned in MOUNT,
and the current state of that filesystem is returned in STATE (and may be
used to, e.g., cause the mount to be read-only if STATE is SUSPICIOUS). */
routine mount_begin (
server : mount_server_t;
key : string_t;
key_class : mount_key_class_t;
excl : mount_excl_t;
out mount : mount_t;
out state : mount_state_t);
/* Assert that MOUNT is no longer active. If CLEAN is true, then the state
of the filesystem should be changed to CLEAN; however if the state was
previously SUSPICIOUS, this is only done if CHECKED is true. */
routine mount_end (
mount : mount_t;
clean : boolean_t;
checked : boolean_t);
/* Indicate that MOUNT is a real mount. TRANSLATOR and MPOINT should be the
filesystem control port and the node which is being translated. TIMESTAMP
is used to validate this mount if a reconnection to the mount server
becomes necessary. */
routine mount_set_translator (
mount : mount_t;
translator : fsys_t;
mpoint : file_t;
timestamp : time_spec_t);
/* If CLEAN is true, then the state of the filesystem should be changed to
CLEAN; however if the state was previously SUSPICIOUS, this is only done
if CHECKED is true. */
routine mount_set_clean (
mount : mount_t
clean : boolean_t;
checked : boolean_t);
/* Change the current writable state of MOUNT to MODE, which should be a
bitmask containg MOUNT_READ and/or MOUNT_WRITE. If other current mounts
preclude this, then EBUSY is returned. If MODE contains MOUNT_FORCE and
there are conflicting mounts, an attempt is made to use the --suspend
option on the other filesystems in order to force the issue. */
routine mount_set_mode (
mount : mount_t
mode : int);
|