Changeset ea5f46d in mainline for contrib/arch/uspace/srv


Ignore:
Timestamp:
2009-09-15T16:07:26Z (16 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)

Location:
contrib/arch/uspace/srv
Files:
15 added
5 deleted
8 edited
5 moved

Legend:

Unmodified
Added
Removed
  • contrib/arch/uspace/srv/bd/bd.adl

    r1993f9a rea5f46d  
    1 interface block_device extends service {
     1interface bd extends service {
    22                /* Establish connection */
    33                ipcarg_t ipc_m_connect_me_to(void);
     
    1818                ipcarg_t ipc_m_phone_hungup(void);
    1919        protocol:
    20                 [block_device.bp]
     20                [bd.bp]
    2121};
     22
     23architecture bd {
     24        inst rd rd;
     25       
     26        [/uspace/lib/libc/subsume%rd]
     27       
     28        delegate bd to rd:bd;
     29       
     30        subsume rd:ns to ns;
     31        subsume rd:devmap to devmap;
     32};
  • contrib/arch/uspace/srv/bd/rd/rd.adl

    r1993f9a rea5f46d  
    11frame rd {
    22        provides:
    3                 block_device bd;
     3                bd bd;
    44        requires:
    55                [/uspace/lib/libc/requires%]
    6                 naming_service ns;
    7                 device_mapper_driver dm_driver;
     6                ns ns;
     7                devmap_driver devmap_driver;
    88        protocol:
    99                [/uspace/lib/libc/protocol] +
  • contrib/arch/uspace/srv/devmap/devmap.adl

    r1993f9a rea5f46d  
    1 interface device_mapper_driver {
     1interface devmap_driver {
    22                /* Establish connection (iface is DEVMAP_DRIVER) */
    33                ipcarg_t ipc_m_connect_me_to(in ipcarg_t iface);
     
    2424                ipcarg_t ipc_m_phone_hungup(void);
    2525        protocol:
    26                 [device_mapper_driver.bp]
     26                [devmap_driver.bp]
    2727};
    2828
    29 interface device_mapper_client {
     29interface devmap_client {
    3030                /* Establish connection (iface is DEVMAP_CLIENT) or forward to device (iface is DEVMAP_CONNECT_TO_DEVICE) */
    3131                ipcarg_t ipc_m_connect_me_to(in ipcarg_t iface, in ipcarg_t handle);
     
    5252                ipcarg_t ipc_m_phone_hungup(void);
    5353        protocol:
    54                 [device_mapper_client.bp]
     54                [devmap_client.bp]
    5555       
    5656};
     
    5858frame devmap {
    5959        provides:
    60                 device_mapper_driver dm_driver;
    61                 device_mapper_client dm_client;
     60                devmap_driver devmap_driver;
     61                devmap_client devmap_client;
    6262        requires:
    6363                [/uspace/lib/libc/requires%]
    6464        protocol:
    65                 [devmap.bp]
     65                [devmap_server.bp]
    6666};
  • contrib/arch/uspace/srv/kbd/kbd.bp

    r1993f9a rea5f46d  
     1?ipc_m_connect_me_to ;
    12(
    2         !ns.IPC_M_CONNECT_ME_TO /* cir */ +
    3         NULL
    4 ) ;
    5 !ns.IPC_M_CONNECT_TO_ME ;
    6 (
    7         ?kbd.IPC_M_CONNECT_ME_TO ;
    8         (
    9                 (
    10                         ?kbd.KBD_YIELD +
    11                         ?kbd.KBD_RECLAIM +
    12                 ) |
    13                 !console.KBD_EVENT
    14         )* ;
    15         ?kbd.IPC_M_PHONE_HUNGUP
     3        ?ipc_m_connect_to_me +
     4        ?yield +
     5        ?reclam
    166)* ;
    17 (
    18         !cir.IPC_M_PHONE_HUNGUP +
    19         NULL
    20 )
     7?ipc_m_phone_hungup
  • contrib/arch/uspace/srv/loader/loader.bp

    r1993f9a rea5f46d  
    1 !ns.NS_ID_INTRO ;
    2 !ns.IPC_M_CONNECT_TO_ME ;
    31(
    4         ?loader.LOADER_GET_TASKID {
    5                 ?loader.IPC_M_DATA_READ /* task id */
     2        ?get_taskid {
     3                ?ipc_m_data_read /* task ID */
    64        } +
    75       
    8         ?loader.LOADER_SET_PATHNAME {
    9                 ?loader.IPC_M_DATA_WRITE /* path */
     6        ?set_pathname {
     7                ?ipc_m_data_write /* pathname */
    108        } +
    119       
    12         ?loader.LOADER_SET_ARGS {
    13                 ?loader.IPC_M_DATA_WRITE /* arguments */
     10        ?set_args {
     11                ?ipc_m_data_write /* arguments */
    1412        } +
    1513       
    16         ?loader.LOADER_SET_FILES {
    17                 ?loader.IPC_M_DATA_WRITE /* files */
     14        ?set_files {
     15                ?ipc_m_data_write /* files */
    1816        } +
    1917       
    20         ?loader.LOADER_LOAD
     18        ?load
    2119)* ;
    2220(
    23         ?loader.LOADER_RUN +
    24         ?loader.IPC_M_PHONE_HUNGUP
     21        ?run +
     22        ?ipc_m_phone_hungup
    2523)
  • contrib/arch/uspace/srv/ns/ns.adl

    r1993f9a rea5f46d  
    1 interface naming_service {
     1interface ns {
    22                /* Register a clonable service or a generic service */
    33                ipcarg_t ipc_m_connect_to_me(in ipcarg_t service);
     
    2424                ipcarg_t ipc_m_phone_hungup(void);
    2525        protocol:
    26                 [naming_service.bp]
     26                [ns.bp]
    2727};
    2828
    2929frame ns {
    3030        provides:
    31                 naming_service ns;
     31                ns ns;
    3232        requires:
    3333                [/uspace/lib/libc/requires]
  • contrib/arch/uspace/srv/pci/pci.bp

    r1993f9a rea5f46d  
    1 !ns.IPC_M_CONNECT_TO_ME ;
    2 (
    3         ?pci.IPC_M_CONNECT_ME_TO ;
    4         ?pci.IPC_M_PHONE_HUNGUP
    5 )*
     1?ipc_m_connect_me_to ;
     2?ipc_m_phone_hungup
  • contrib/arch/uspace/srv/vfs/vfs.adl

    r1993f9a rea5f46d  
    1 interface vfs {
     1interface vfs extends service {
    22                /* Establish connection */
    33                ipcarg_t ipc_m_connect_me_to(void);
     
    5151                ipcarg_t ipc_m_phone_hungup(void);
    5252        protocol:
    53                 [virtual_fs.bp]
     53                [vfs.bp]
    5454};
    5555
    56 frame vfs {
     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 {
    5795        provides:
    5896                vfs vfs;
    5997        requires:
    6098                [/uspace/lib/libc/requires%]
    61                 naming_service ns;
     99                fs fs;
     100                ns ns;
    62101        protocol:
    63102                [/uspace/lib/libc/protocol] +
    64                 [vfs.bp]
     103                [vfs_server.bp]
    65104};
     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};
  • 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.