Changeset ea5f46d in mainline for contrib/arch/uspace/srv/vfs/vfs.bp


Ignore:
Timestamp:
2009-09-15T16:07:26Z (15 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
2a70672
Parents:
1993f9a
Message:

hierarchical composition of components
(tmpfs, fat, devfs are logical subcomponents of vfs, kbd and fb are subcomponents of console, rd is subcomponent of bd)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • contrib/arch/uspace/srv/vfs/vfs.bp

    r1993f9a rea5f46d  
    1 !ns.ipc_m_connect_to_me
     1?ipc_m_connect_me_to ;
     2(
     3        ?register {
     4                ?ipc_m_data_write /* fs name */ ;
     5                tentative {
     6                        /* callback connection */
     7                        ?ipc_m_connect_to_me ;
     8                        ?ipc_m_share_in
     9                }
     10        } +
     11       
     12        ?mount {
     13                ?ipc_m_data_write /* mount point */ ;
     14                tentative {
     15                        ?ipc_m_data_write /* mount options */ ;
     16                        tentative {
     17                                ?ipc_m_data_write /* fs name */ ;
     18                                tentative {
     19                                        ?ipc_m_ping ;
     20                                        tentative {
     21                                                (
     22                                                        /* root fs */
     23                                                        !fs.mounted ;
     24                                                        !fs.ipc_m_data_write /* mount options */
     25                                                ) +
     26                                                (
     27                                                        /* non-root fs */
     28                                                        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] ;
     36                                                                        tentative {
     37                                                                                !fs.vfs_m_data_write /* mount options */
     38                                                                        }
     39                                                                        [fnc.vfs_release_phone] ;
     40                                                                }
     41                                                        }
     42                                                )
     43                                        }
     44                                }
     45                        }
     46                }
     47        } +
     48       
     49        ?open {
     50                tentative {
     51                        ?ipc_m_data_write /* path */ ;
     52                        tentative {
     53                                [fnc.vfs_lookup_internal] ;
     54                                tentative {
     55                                        [fnc.vfs_grab_phone] ;
     56                                        !fs.truncate ;
     57                                        [fnc.vfs_release_phone]
     58                                }
     59                        }
     60                }
     61        } +
     62       
     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 {
     83                                [fnc.vfs_grab_phone] ;
     84                                !fs.read ;
     85                                !fs.ipc_m_data_read /* forward payload */ ;
     86                                [fnc.vfs_release_phone]
     87                        }
     88                }
     89        } +
     90       
     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        ?fstat {
     111                tentative {
     112                        ?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]
     117                        }
     118                }
     119        } +
     120       
     121        ?stat {
     122                ?ipc_m_data_write /* path */ ;
     123                tentative {
     124                        ?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 */
     129                                }
     130                        }
     131                }
     132        } +
     133       
     134        ?mkdir {
     135                ?ipc_m_data_write /* path */ ;
     136                tentative {
     137                        [fnc.vfs_lookup_internal]
     138                }
     139        } +
     140       
     141        ?unlink {
     142                ?ipc_m_data_write /* path */ ;
     143                tentative {
     144                        [fnc.vfs_lookup_internal]
     145                }
     146        } +
     147       
     148        ?rename {
     149                ?ipc_m_data_write /* old path */ ;
     150                tentative {
     151                        ?ipc_m_data_write /* new path */ ;
     152                        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 */ ;
     158                                                tentative {
     159                                                        [fnc.vfs_lookup_internal] /* create new link for the new path */ ;
     160                                                        tentative {
     161                                                                [fnc.vfs_lookup_internal] /* destroy link for the old path */
     162                                                        }
     163                                                }
     164                                        }
     165                                }
     166                        }
     167                }
     168        } +
     169       
     170        ?sync {
     171                tentative {
     172                        !fs.sync
     173                }
     174        } +
     175       
     176        ?seek
     177       
     178)* ;
     179?ipc_m_phne_hungup
Note: See TracChangeset for help on using the changeset viewer.