source: mainline/contrib/arch/uspace/srv/vfs/vfs.adl

Last change on this file was f1380b7, checked in by Jiří Zárevúcky <zarevucky.jiri@…>, 7 years ago

style: Remove trailing whitespace on _all_ lines, including empty ones, remaining files.

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