Changeset cf7b3e0 in mainline for contrib/arch/uspace/srv/vfs
- Timestamp:
- 2009-09-16T22:46:58Z (17 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 51d4040
- Parents:
- 57688fe2
- Location:
- contrib/arch/uspace/srv/vfs
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
contrib/arch/uspace/srv/vfs/vfs.adl
r57688fe2 rcf7b3e0 1 1 interface vfs extends service { 2 /* Establish connection */3 ipcarg_t ipc_m_connect_me_to(void);4 5 2 /* Register a filesystem driver */ 6 3 ipcarg_t register(in_copy string name); … … 55 52 56 53 interface fs extends service { 57 /* Establish connection */58 ipcarg_t ipc_m_connect_me_to(void);59 60 54 /* Notify filesystem that it was mounted */ 61 55 ipcarg_t mounted(in ipcarg_t dev_handle, in_copy string opts); … … 87 81 /* Notify on file close */ 88 82 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 83 }; 93 84 94 frame vfs_manager {85 frame dispatcher { 95 86 provides: 96 87 vfs vfs; 97 88 requires: 98 89 [/uspace/lib/libc/requires] 99 fs fs; 90 tmpfs tmpfs; 91 fat fat; 92 devfs devfs; 100 93 ns ns; 101 94 protocol: 102 [/uspace/lib/libc/protocol] +95 [/uspace/lib/libc/protocol] | 103 96 [vfs_server.bp] 104 97 }; 105 98 106 99 architecture vfs { 107 inst vfs_manager vfs;100 inst dispatcher dispatcher; 108 101 inst tmpfs tmpfs; 109 102 inst fat fat; 110 103 inst devfs devfs; 111 104 112 bind vfs:fs to tmpfs:fs;113 bind vfs:fs to fat:fs;114 bind vfs:fs to devfs:fs;105 bind dispatcher:tmpfs to tmpfs:tmpfs; 106 bind dispatcher:fat to fat:fat; 107 bind dispatcher:devfs to devfs:devfs; 115 108 116 bind tmpfs:vfs to vfs:vfs;117 bind fat:vfs to vfs:vfs;118 bind devfs:vfs to vfs:vfs;109 bind tmpfs:vfs to dispatcher:vfs; 110 bind fat:vfs to dispatcher:vfs; 111 bind devfs:vfs to dispatcher:vfs; 119 112 120 delegate vfs to vfs:vfs;113 delegate vfs to dispatcher:vfs; 121 114 122 [/uspace/lib/libc/subsume% vfs]115 [/uspace/lib/libc/subsume%dispatcher] 123 116 [/uspace/lib/libc/subsume%tmpfs] 124 117 [/uspace/lib/libc/subsume%fat] 125 118 [/uspace/lib/libc/subsume%devfs] 126 119 127 subsume vfs:ns to ns;120 subsume dispatcher:ns to ns; 128 121 subsume tmpfs:ns to ns; 129 122 subsume fat:ns to ns; 130 123 subsume devfs:ns to ns; 131 124 132 subsume tmpfs: bd to bd;133 subsume fat: bd to bd;125 subsume tmpfs:rd to rd; 126 subsume fat:rd to rd; 134 127 135 128 subsume devfs:devmap_client to devmap_client; -
contrib/arch/uspace/srv/vfs/vfs.bp
r57688fe2 rcf7b3e0 21 21 ( 22 22 /* root fs */ 23 !fs.mounted ; 24 !fs.ipc_m_data_write /* mount options */ 23 alternative fs tmpfs fat devfs { 24 !fs.mounted ; 25 !fs.ipc_m_data_write /* mount options */ 26 } 25 27 ) + 26 28 ( 27 29 /* non-root fs */ 28 30 tentative { 29 [fnc.vfs_lookup_internal] ; 30 tentative { 31 [fnc.vfs_grab_phone] ; 32 [fnc.vfs_grab_phone] ; 33 !fs.mount ; 34 !fs.ipc_m_connection_clone ; 35 [fnc.vfs_release_phone] ; 31 alternative fs tmpfs fat devfs { 32 [fnc.vfs_lookup_internal] ; 36 33 tentative { 37 !fs.vfs_m_data_write /* mount options */ 38 } ; 39 [fnc.vfs_release_phone] 34 [fnc.vfs_grab_phone] ; 35 [fnc.vfs_grab_phone] ; 36 !fs.mount ; 37 !fs.ipc_m_connection_clone ; 38 [fnc.vfs_release_phone] ; 39 tentative { 40 !fs.vfs_m_data_write /* mount options */ 41 } ; 42 [fnc.vfs_release_phone] 43 } 40 44 } 41 45 } … … 51 55 ?ipc_m_data_write /* path */ ; 52 56 tentative { 53 [fnc.vfs_lookup_internal] ; 54 tentative { 57 alternative fs tmpfs fat devfs { 58 [fnc.vfs_lookup_internal] ; 59 tentative { 60 [fnc.vfs_grab_phone] ; 61 !fs.truncate ; 62 [fnc.vfs_release_phone] 63 } 64 } 65 } 66 } 67 } + 68 69 ?open_node { 70 alternative fs tmpfs fat devfs { 71 [fnc.vfs_open_node_internal] ; 72 tentative { 73 [fnc.vfs_grab_phone] ; 74 !fs.truncate ; 75 [fnc.vfs_release_phone] 76 } 77 } 78 } + 79 80 ?close { 81 tentative { 82 alternative fs tmpfs fat devfs { 83 [fnc.vfs_grab_phone] ; 84 !fs.close ; 85 [fnc.vfs_release_phone] 86 } 87 } 88 } + 89 90 ?read { 91 tentative { 92 ?ipc_m_data_read { 93 alternative fs tmpfs fat devfs { 55 94 [fnc.vfs_grab_phone] ; 56 !fs.truncate ; 95 !fs.read ; 96 !fs.ipc_m_data_read /* forward payload */ ; 57 97 [fnc.vfs_release_phone] 58 98 } … … 61 101 } + 62 102 63 ?open_node { 64 [fnc.vfs_open_node_internal] ; 65 tentative { 66 [fnc.vfs_grab_phone] ; 67 !fs.truncate ; 68 [fnc.vfs_release_phone] 69 } 70 } + 71 72 ?close { 73 tentative { 74 [fnc.vfs_grab_phone] ; 75 !fs.close ; 76 [fnc.vfs_release_phone] 77 } 78 } + 79 80 ?read { 81 tentative { 82 ?ipc_m_data_read { 103 ?write { 104 tentative { 105 ?ipc_m_data_write { 106 alternative fs tmpfs fat devfs { 107 [fnc.vfs_grab_phone] ; 108 !fs.write ; 109 !fs.ipc_m_data_write /* forward payload */ ; 110 [fnc.vfs_release_phone] 111 } 112 } 113 } 114 } + 115 116 ?truncate { 117 tentative { 118 alternative fs tmpfs fat devfs { 83 119 [fnc.vfs_grab_phone] ; 84 !fs.read ; 85 !fs.ipc_m_data_read /* forward payload */ ; 120 !fs.truncate ; 86 121 [fnc.vfs_release_phone] 87 122 } … … 89 124 } + 90 125 91 ?write {92 tentative {93 ?ipc_m_data_write {94 [fnc.vfs_grab_phone] ;95 !fs.write ;96 !fs.ipc_m_data_write /* forward payload */ ;97 [fnc.vfs_release_phone]98 }99 }100 } +101 102 ?truncate {103 tentative {104 [fnc.vfs_grab_phone] ;105 !fs.truncate ;106 [fnc.vfs_release_phone]107 }108 } +109 110 126 ?fstat { 111 127 tentative { 112 128 ?ipc_m_data_read /* struct stat */ { 113 [fnc.vfs_grab_phone] ; 114 !fs.stat ; 115 !fs.ipc_m_data_read /* forward struct stat */ ; 116 [fnc.vfs_release_phone] 129 alternative fs tmpfs fat devfs { 130 [fnc.vfs_grab_phone] ; 131 !fs.stat ; 132 !fs.ipc_m_data_read /* forward struct stat */ ; 133 [fnc.vfs_release_phone] 134 } 117 135 } 118 136 } … … 123 141 tentative { 124 142 ?ipc_m_data_read /* struct stat */ { 125 [fnc.vfs_lookup_internal] ; 126 tentative { 127 !fs.stat ; 128 !fs.ipc_m_data_read /* forward struct stat */ 143 alternative fs tmpfs fat devfs { 144 [fnc.vfs_lookup_internal] ; 145 tentative { 146 !fs.stat ; 147 !fs.ipc_m_data_read /* forward struct stat */ 148 } 129 149 } 130 150 } … … 135 155 ?ipc_m_data_write /* path */ ; 136 156 tentative { 137 [fnc.vfs_lookup_internal] 157 alternative fs tmpfs fat devfs { 158 [fnc.vfs_lookup_internal] 159 } 138 160 } 139 161 } + … … 142 164 ?ipc_m_data_write /* path */ ; 143 165 tentative { 144 [fnc.vfs_lookup_internal] 166 alternative fs tmpfs fat devfs { 167 [fnc.vfs_lookup_internal] 168 } 145 169 } 146 170 } + … … 151 175 ?ipc_m_data_write /* new path */ ; 152 176 tentative { 153 [fnc.vfs_lookup_internal] /* lookup old path */ ; 154 tentative { 155 [fnc.vfs_lookup_internal] /* lookup parent of new path */ ; 156 tentative { 157 [fnc.vfs_lookup_internal] /* destroy old link for the new path */ ; 177 alternative fs tmpfs fat devfs { 178 [fnc.vfs_lookup_internal] /* lookup old path */ ; 179 tentative { 180 [fnc.vfs_lookup_internal] /* lookup parent of new path */ ; 158 181 tentative { 159 [fnc.vfs_lookup_internal] /* create newlink for the new path */ ;182 [fnc.vfs_lookup_internal] /* destroy old link for the new path */ ; 160 183 tentative { 161 [fnc.vfs_lookup_internal] /* destroy link for the old path */ 184 [fnc.vfs_lookup_internal] /* create new link for the new path */ ; 185 tentative { 186 [fnc.vfs_lookup_internal] /* destroy link for the old path */ 187 } 162 188 } 163 189 } … … 170 196 ?sync { 171 197 tentative { 172 !fs.sync 198 alternative fs tmpfs fat devfs { 199 !fs.sync 200 } 173 201 } 174 202 } +
Note:
See TracChangeset
for help on using the changeset viewer.
