Ignore:
File:
1 edited

Legend:

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

    rb988db0 r07fdf203  
    1 ?ipc_m_connect_me_to ;
     1!ns.IPC_M_CONNECT_TO_ME ;
    22(
    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
     3        ?vfs.IPC_M_CONNECT_ME_TO ;
     4        (
     5                ?vfs.VFS_IN_REGISTER {
     6                        ?vfs.IPC_M_DATA_WRITE ;
     7                        ?vfs.IPC_M_CONNECT_TO_ME ;
     8                        ?vfs.IPC_M_SHARE_IN
     9                } +
     10               
     11                ?vfs.VFS_IN_MOUNT {
     12                        ?vfs.IPC_M_DATA_WRITE /* mount point */ ;
     13                        ?vfs.IPC_M_DATA_WRITE /* mount options */ ;
     14                        ?vfs.IPC_M_DATA_WRITE /* fs name */ ;
     15                        ?vfs.IPC_M_PING ;
     16                        (
     17                               
     18                                !fs.VFS_OUT_MOUNTED ;
     19                                !fs.IPC_M_DATA_WRITE /* mount options */
     20                        ) /* root fs */ +
     21                        (
     22                                !fs.VFS_OUT_MOUNT ;
     23                                !fs.IPC_M_CONNECTION_CLONE ;
     24                                !fs.VFS_M_DATA_WRITE /* mount options */
     25                        ) /* non-root fs */
     26                } +
     27               
     28                ?vfs.VFS_IN_OPEN {
     29                        ?vfs.IPC_M_DATA_WRITE /* path */ ;
     30                        [vfs_lookup_internal] ;
     31                        (
     32                                (
     33                                        [vfs_grab_phone] ;
     34                                        !fs.VFS_OUT_TRUNCATE ;
     35                                        [vfs_release_phone]
     36                                ) +
     37                                NULL
     38                        )
     39                } +
     40               
     41                ?vfs.VFS_IN_OPEN_NODE {
     42                        [vfs_grab_phone] ;
     43                        !fs.VFS_OUT_OPEN_NODE ;
     44                        [vfs_release_phone] ;
     45                        (
     46                                (
     47                                        [vfs_grab_phone] ;
     48                                        !fs.VFS_OUT_TRUNCATE ;
     49                                        [vfs_release_phone]
     50                                ) +
     51                                NULL
     52                        )
     53                } +
     54               
     55                ?vfs.VFS_IN_CLOSE {
     56                        [vfs_grab_phone] ;
     57                        !fs.VFS_OUT_CLOSE ;
     58                        [vfs_release_phone]
     59                } +
     60               
     61                ?vfs.VFS_IN_READ {
     62                        ?vfs.IPC_M_DATA_READ {
     63                                [vfs_grab_phone] ;
     64                                !fs.VFS_OUT_READ /* payload */ ;
     65                                !fs.IPC_M_DATA_READ /* forwarded */ ;
     66                                [vfs_release_phone]
     67                        }
     68                } +
     69               
     70                ?vfs.VFS_IN_WRITE {
     71                        ?vfs.IPC_M_DATA_WRITE {
     72                                [vfs_grab_phone] ;
     73                                !fs.VFS_OUT_WRITE /* payload */ ;
     74                                !fs.IPC_M_DATA_WRITE /* forwarded */ ;
     75                                [vfs_release_phone]
     76                        }
     77                } +
     78               
     79                ?vfs.VFS_IN_SEEK +
     80               
     81                ?vfs.VFS_IN_TRUNCATE {
     82                        [vfs_grab_phone] ;
     83                        !fs.VFS_OUT_TRUNCATE ;
     84                        [vfs_release_phone]
     85                } +
     86               
     87                ?vfs.VFS_IN_FSTAT {
     88                        ?vfs.IPC_M_DATA_READ /* struct stat */ {
     89                                [vfs_grab_phone] ;
     90                                !fs.VFS_OUT_STAT ;
     91                                !fs.IPC_M_DATA_READ /* forwarded */ ;
     92                                [vfs_release_phone]
     93                        }
     94                } +
     95               
     96                ?vfs.VFS_IN_STAT {
     97                        ?vfs.IPC_M_DATA_WRITE /* path */ ;
     98                        ?vfs.IPC_M_DATA_READ /* struct stat */ {
     99                                [vfs_lookup_internal] ;
     100                                !fs.VFS_OUT_STAT ;
     101                                !fs.IPC_M_DATA_READ /* forwarded */
     102                        }
     103                } +
     104               
     105                ?vfs.VFS_IN_MKDIR {
     106                        ?vfs.IPC_M_DATA_WRITE /* path */ ;
     107                        [vfs_lookup_internal]
     108                } +
     109               
     110                ?vfs.VFS_IN_UNLINK {
     111                        ?vfs.IPC_M_DATA_WRITE /* path */ ;
     112                        [vfs_lookup_internal]
     113                } +
     114               
     115                ?vfs.VFS_IN_RENAME {
     116                        ?vfs.IPC_M_DATA_WRITE /* old path */ ;
     117                        ?vfs.IPC_M_DATE_WRITE /* new path */ ;
     118                        [vfs_lookup_internal] /* lookup old path */ ;
     119                        [vfs_lookup_internal] /* lookup parent of new path */ ;
     120                        [vfs_lookup_internal] /* destroy old link for the new path */ ;
     121                        [vfs_lookup_internal] /* create new link for the new path */ ;
     122                        [vfs_lookup_internal] /* destroy link for the old path */
     123                } +
     124               
     125                ?vfs.VFS_IN_SYNC {
     126                        !fs.VFS_OUT_SYNC
    9127                }
    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                                                         alternative (fs; tmpfs; fat; devfs) {
    24                                                                 !fs.mounted {
    25                                                                         !fs.ipc_m_data_write /* mount options */
    26                                                                 }
    27                                                         }
    28                                                 ) +
    29                                                 (
    30                                                         /* non-root fs */
    31                                                         tentative {
    32                                                                 alternative (fs; tmpfs; fat; devfs) {
    33                                                                         [fnc.vfs_lookup_internal] ;
    34                                                                         tentative {
    35                                                                                 [fnc.vfs_grab_phone] ;
    36                                                                                 [fnc.vfs_grab_phone] ;
    37                                                                                 !fs.mount ;
    38                                                                                 !fs.ipc_m_connection_clone ;
    39                                                                                 [fnc.vfs_release_phone] ;
    40                                                                                 tentative {
    41                                                                                         !fs.vfs_m_data_write /* mount options */
    42                                                                                 } ;
    43                                                                                 [fnc.vfs_release_phone]
    44                                                                         }
    45                                                                 }
    46                                                         }
    47                                                 )
    48                                         }
    49                                 }
    50                         }
    51                 }
    52         } +
    53        
    54         ?open {
    55                 tentative {
    56                         ?ipc_m_data_write /* path */ ;
    57                         tentative {
    58                                 alternative (fs; tmpfs; fat; devfs) {
    59                                         [fnc.vfs_lookup_internal] ;
    60                                         tentative {
    61                                                 [fnc.vfs_grab_phone] ;
    62                                                 !fs.truncate ;
    63                                                 [fnc.vfs_release_phone]
    64                                         }
    65                                 }
    66                         }
    67                 }
    68         } +
    69        
    70         ?open_node {
    71                 alternative (fs; tmpfs; fat; devfs) {
    72                         [fnc.vfs_open_node_internal] ;
    73                         tentative {
    74                                 [fnc.vfs_grab_phone] ;
    75                                 !fs.truncate ;
    76                                 [fnc.vfs_release_phone]
    77                         }
    78                 }
    79         } +
    80        
    81         ?close {
    82                 tentative {
    83                         alternative (fs; tmpfs; fat; devfs) {
    84                                 [fnc.vfs_grab_phone] ;
    85                                 !fs.close ;
    86                                 [fnc.vfs_release_phone]
    87                         }
    88                 }
    89         } +
    90        
    91         ?read {
    92                 tentative {
    93                         ?ipc_m_data_read {
    94                                 alternative (fs; tmpfs; fat; devfs) {
    95                                         [fnc.vfs_grab_phone] ;
    96                                         !fs.read {
    97                                                 !fs.ipc_m_data_read /* forward payload */
    98                                         } ;
    99                                         [fnc.vfs_release_phone]
    100                                 }
    101                         }
    102                 }
    103         } +
    104        
    105         ?write {
    106                 tentative {
    107                         ?ipc_m_data_write {
    108                                 alternative (fs; tmpfs; fat; devfs) {
    109                                         [fnc.vfs_grab_phone] ;
    110                                         !fs.write {
    111                                                 !fs.ipc_m_data_write /* forward payload */
    112                                         } ;
    113                                         [fnc.vfs_release_phone]
    114                                 }
    115                         }
    116                 }
    117         } +
    118        
    119         ?truncate {
    120                 tentative {
    121                         alternative (fs; tmpfs; fat; devfs) {
    122                                 [fnc.vfs_grab_phone] ;
    123                                 !fs.truncate ;
    124                                 [fnc.vfs_release_phone]
    125                         }
    126                 }
    127         } +
    128        
    129         ?fstat {
    130                 tentative {
    131                         ?ipc_m_data_read /* struct stat */ {
    132                                 alternative (fs; tmpfs; fat; devfs) {
    133                                         [fnc.vfs_grab_phone] ;
    134                                         !fs.stat {
    135                                                 !fs.ipc_m_data_read /* forward struct stat */
    136                                         } ;
    137                                         [fnc.vfs_release_phone]
    138                                 }
    139                         }
    140                 }
    141         } +
    142        
    143         ?stat {
    144                 ?ipc_m_data_write /* path */ ;
    145                 tentative {
    146                         ?ipc_m_data_read /* struct stat */ {
    147                                 alternative (fs; tmpfs; fat; devfs) {
    148                                         [fnc.vfs_lookup_internal] ;
    149                                         tentative {
    150                                                 !fs.stat {
    151                                                         !fs.ipc_m_data_read /* forward struct stat */
    152                                                 }
    153                                         }
    154                                 }
    155                         }
    156                 }
    157         } +
    158        
    159         ?mkdir {
    160                 ?ipc_m_data_write /* path */ ;
    161                 tentative {
    162                         alternative (fs; tmpfs; fat; devfs) {
    163                                 [fnc.vfs_lookup_internal]
    164                         }
    165                 }
    166         } +
    167        
    168         ?unlink {
    169                 ?ipc_m_data_write /* path */ ;
    170                 tentative {
    171                         alternative (fs; tmpfs; fat; devfs) {
    172                                 [fnc.vfs_lookup_internal]
    173                         }
    174                 }
    175         } +
    176        
    177         ?rename {
    178                 ?ipc_m_data_write /* old path */ ;
    179                 tentative {
    180                         ?ipc_m_data_write /* new path */ ;
    181                         tentative {
    182                                 alternative (fs; tmpfs; fat; devfs) {
    183                                         [fnc.vfs_lookup_internal] /* lookup old path */ ;
    184                                         tentative {
    185                                                 [fnc.vfs_lookup_internal] /* lookup parent of new path */ ;
    186                                                 tentative {
    187                                                         [fnc.vfs_lookup_internal] /* destroy old link for the new path */ ;
    188                                                         tentative {
    189                                                                 [fnc.vfs_lookup_internal] /* create new link for the new path */ ;
    190                                                                 tentative {
    191                                                                         [fnc.vfs_lookup_internal] /* destroy link for the old path */
    192                                                                 }
    193                                                         }
    194                                                 }
    195                                         }
    196                                 }
    197                         }
    198                 }
    199         } +
    200        
    201         ?sync {
    202                 tentative {
    203                         alternative (fs; tmpfs; fat; devfs) {
    204                                 !fs.sync
    205                         }
    206                 }
    207         } +
    208        
    209         ?seek
    210        
    211 )* ;
    212 ?ipc_m_phone_hungup
     128               
     129        )* ;
     130        ?vfs.IPC_M_PHONE_HUNGUP
     131)*
Note: See TracChangeset for help on using the changeset viewer.