source: mainline/contrib/arch/uspace/srv/vfs/vfs.adl@ 2a70672

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since 2a70672 was 2a70672, checked in by Martin Decky <martin@…>, 16 years ago

more sophisticated ADL parser

  • Property mode set to 100644
File size: 3.7 KB
Line 
1interface vfs extends service {
2 /* Establish connection */
3 ipcarg_t ipc_m_connect_me_to(void);
4
5 /* Register a filesystem driver */
6 ipcarg_t register(in_copy string name);
7
8 /* Mount filesystem */
9 ipcarg_t mount(in ipcarg_t device, in ipcarg_t flags, in_copy string point, in_copy string opts, in_copy string fs);
10
11 /* Open file */
12 ipcarg_t open(in ipcarg_t lflag, in ipcarg_t oflag, in ipcarg_t mode, in_copy string path, out ipcarg_t fd);
13
14 /* Open file using node */
15 ipcarg_t open_node(in ipcarg_t fs_handle, in ipcarg_t dev_handle, in ipcarg_t index, in ipcarg_t oflag, out ipcarg_t fd);
16
17 /* Read data from file */
18 ipcarg_t read(in ipcarg_t fd, out_copy stream data);
19
20 /* Write data to file */
21 ipcarg_t write(in ipcarg_t fd, in_copy stream data);
22
23 /* Seek in file */
24 ipcarg_t seek(in ipcarg_t fd, in ipcarg_t offset, in ipcarg_t whence);
25
26 /* Truncate file */
27 ipcarg_t truncate(in ipcarg_t fd, in ipcarg_t size);
28
29 /* Get file metadata */
30 ipcarg_t fstat(in ipcarg_t fd, out_copy stream stat);
31
32 /* Get directory entry metadata */
33 ipcarg_t stat(in_copy string path, out_copy stream stat);
34
35 /* Create directory */
36 ipcarg_t mkdir(in ipcarg_t mode, in_copy string path);
37
38 /* Delete directory entry */
39 ipcarg_t unlink(in ipcarg_t lflag, in_copy string path);
40
41 /* Rename directory entry */
42 ipcarg_t rename(in_copy string old, in_copy string new);
43
44 /* Flush file buffers */
45 ipcarg_t sync(in ipcarg_t fd);
46
47 /* In-protocol status value */
48 ipcarg_t ipc_m_ping(void);
49
50 /* Close connection */
51 ipcarg_t ipc_m_phone_hungup(void);
52 protocol:
53 [vfs.bp]
54};
55
56interface fs extends service {
57 /* Establish connection */
58 ipcarg_t ipc_m_connect_me_to(void);
59
60 /* Notify filesystem that it was mounted */
61 ipcarg_t mounted(in ipcarg_t dev_handle, in_copy string opts);
62
63 /* Mount filesystem */
64 ipcarg_t mount(in ipcarg_t device, in ipcarg_t flags, in_copy string point, in_copy string opts, ...);
65
66 /* Open file by node */
67 ipcarg_t open_node(in ipcarg_t lflag, in ipcarg_t oflag, in ipcarg_t mode, ...);
68
69 /* Lookup file */
70 ipcarg_t lookup(in ipcarg_t lflag, in ipcarg_t oflag, in ipcarg_t mode, ...);
71
72 /* Read data from file */
73 ipcarg_t read(in ipcarg_t dev_handle, in ipcarg_t fs_index, in ipcarg_t offset, out_copy stream data);
74
75 /* Write data to file */
76 ipcarg_t write(in ipcarg_t dev_handle, in ipcarg_t fs_index, in ipcarg_t offset, out_copy stream data);
77
78 /* Truncate file */
79 ipcarg_t truncate(in ipcarg_t dev_handle, in ipcarg_t fs_index, in ipcarg_t size);
80
81 /* Get directory entry metadata */
82 ipcarg_t stat(in ipcarg_t dev_handle, in ipcarg_t fs_index, out_copy stream stat);
83
84 /* Flush file buffers */
85 ipcarg_t sync(in ipcarg_t dev_handle, in ipcarg_t fs_index);
86
87 /* Notify on file close */
88 ipcarg_t close(in ipcarg_t dev_handle, in ipcarg_t fs_index);
89
90 /* Close connection */
91 ipcarg_t ipc_m_phone_hungup(void);
92};
93
94frame vfs_manager {
95 provides:
96 vfs vfs;
97 requires:
98 [/uspace/lib/libc/requires]
99 fs fs;
100 ns ns;
101 protocol:
102 [/uspace/lib/libc/protocol] +
103 [vfs_server.bp]
104};
105
106architecture vfs {
107 inst vfs_manager vfs;
108 inst tmpfs tmpfs;
109 inst fat fat;
110 inst devfs devfs;
111
112 bind vfs:fs to tmpfs:fs;
113 bind vfs:fs to fat:fs;
114 bind vfs:fs to devfs:fs;
115
116 bind tmpfs:vfs to vfs:vfs;
117 bind fat:vfs to vfs:vfs;
118 bind devfs:vfs to vfs:vfs;
119
120 delegate vfs to vfs:vfs;
121
122 [/uspace/lib/libc/subsume%vfs]
123 [/uspace/lib/libc/subsume%tmpfs]
124 [/uspace/lib/libc/subsume%fat]
125 [/uspace/lib/libc/subsume%devfs]
126
127 subsume vfs:ns to ns;
128 subsume tmpfs:ns to ns;
129 subsume fat:ns to ns;
130 subsume devfs:ns to ns;
131
132 subsume tmpfs:bd to bd;
133 subsume fat:bd to bd;
134
135 subsume devfs:devmap_client to devmap_client;
136 subsume devfs:device to device;
137};
Note: See TracBrowser for help on using the repository browser.