Changeset ea5f46d in mainline


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)

Location:
contrib
Files:
16 added
5 deleted
13 edited
5 moved

Legend:

Unmodified
Added
Removed
  • contrib/arch/HelenOS.adl

    r1993f9a rea5f46d  
    66        inst ns ns;
    77       
    8         /* RAM disk */
    9         inst rd rd;
     8        /* Loader (clonable service) */
     9        inst loader loader;
    1010       
    11         /* Klog */
     11        /* Block device */
     12        inst bd bd;
     13       
     14        /* VFS server */
     15        inst vfs vfs;
     16       
     17        /* Console */
     18        inst console console;
     19       
     20        /* Kernel log */
    1221        inst klog klog;
    1322       
    14         /* VFS */
    15         inst vfs vfs;
     23        [/uspace/lib/libc/bind%ns]
     24        [/uspace/lib/libc/bind%loader]
     25        [/uspace/lib/libc/bind%bd]
     26        [/uspace/lib/libc/bind%vfs]
     27        [/uspace/lib/libc/bind%console]
     28        [/uspace/lib/libc/bind%klog]
    1629       
    17         [/uspace/lib/libc/bind%ns]
     30        bind loader:ns to ns:ns;
    1831       
    19         [/uspace/lib/libc/bind%rd]
    20         bind rd:ns to ns:ns;
    21         bind rd:dm_driver to devmap:dm_driver;
     32        bind bd:ns to ns:ns;
     33        bind bd:devmap_driver to devmap:devmap_driver;
    2234       
    23         [/uspace/lib/libc/bind%klog]
     35        bind vfs:ns to ns:ns;
     36        bind vfs:bd to bd:bd;
     37        bind vfs:devmap_client to devmap:devmap_client;
     38        bind vfs:device to console:console;
     39       
     40        bind console:ns to ns:ns;
     41       
    2442        bind klog:ns to ns:ns;
    25        
    26         [/uspace/lib/libc/bind%vfs]
    27         bind vfs:ns to ns:ns;
    2843};
  • contrib/arch/kernel/kernel.adl

    r1993f9a rea5f46d  
    77                unative_t sys_klog(int fd, const void *buf, size_t size);
    88        protocol:
    9                 ?sys_klog*
     9                ?sys_klog
    1010};
    1111
     
    1717                uintptr_t sys_debug_disable_console(void);
    1818        protocol:
    19                 (?sys_debug_enable_console + ?sys_debug_disable_console)*
     19                ?sys_debug_enable_console +
     20                ?sys_debug_disable_console
    2021};
    2122
     
    2425                unative_t sys_tls_set(unative_t addr);
    2526        protocol:
    26                 ?sys_tls_set*
     27                ?sys_tls_set
    2728};
    2829
     
    3738                unative_t sys_thread_get_id(thread_id_t *uspace_thread_id);
    3839        protocol:
    39                 (?sys_thread_create + ?sys_thread_get_id)* ; ?sys_thread_exit
     40                (
     41                        ?sys_thread_create +
     42                        ?sys_thread_get_id
     43                )* ;
     44                ?sys_thread_exit
    4045};
    4146
     
    4752                unative_t sys_task_get_id(task_id_t *uspace_task_id);
    4853        protocol:
    49                 (?sys_task_set_name + ?sys_task_get_id)*
     54                ?sys_task_set_name +
     55                ?sys_task_get_id
    5056};
    5157
     
    5460                unative_t sys_program_spawn_loader(char *uspace_name, size_t name_len);
    5561        protocol:
    56                 ?sys_program_spawn_loader*
     62                ?sys_program_spawn_loader
    5763};
    5864
     
    6470                unative_t sys_futex_wakeup(uintptr_t uaddr);
    6571        protocol:
    66                 (?sys_futex_sleep_timeout + ?sys_futex_wakeup)*
     72                ?sys_futex_sleep_timeout +
     73                ?sys_futex_wakeup
    6774};
    6875
     
    7178                unative_t sys_smc_coherence(uintptr_t va, size_t size);
    7279        protocol:
    73                 ?sys_smc_coherence*
     80                ?sys_smc_coherence
    7481};
    7582
     
    8794                unative_t sys_as_area_destroy(uintptr_t address);
    8895        protocol:
    89                 (?sys_as_area_create + ?sys_as_area_resize + ?sys_as_area_change_flags + ?sys_as_area_destroy)*
     96                ?sys_as_area_create +
     97                ?sys_as_area_resize +
     98                ?sys_as_area_change_flags +
     99                ?sys_as_area_destroy
    90100};
    91101
     
    124134                unative_t sys_ipc_poke(void);
    125135        protocol:
    126                 (?sys_ipc_call_sync_fast + ?sys_ipc_call_sync_slow + ?sys_ipc_call_async_fast + ?sys_ipc_call_async_slow + ?sys_ipc_forward_fast + ?sys_ipc_forward_slow + ?sys_ipc_answer_fast + ?sys_ipc_answer_slow + ?sys_ipc_hangup + ?sys_ipc_wait_for_call + ?sys_ipc_poke)*
     136                ?sys_ipc_call_sync_fast +
     137                ?sys_ipc_call_sync_slow +
     138                ?sys_ipc_call_async_fast +
     139                ?sys_ipc_call_async_slow +
     140                ?sys_ipc_forward_fast +
     141                ?sys_ipc_forward_slow +
     142                ?sys_ipc_answer_fast +
     143                ?sys_ipc_answer_slow +
     144                ?sys_ipc_hangup +
     145                ?sys_ipc_wait_for_call +
     146                ?sys_ipc_poke
    127147};
    128148
     
    131151                unative_t sys_event_subscribe(unative_t evno, unative_t method);
    132152        protocol:
    133                 ?sys_event_subscribe*
     153                ?sys_event_subscribe
    134154};
    135155
     
    141161                unative_t sys_cap_revoke(sysarg64_t *uspace_taskid_arg, cap_t caps);
    142162        protocol:
    143                 (?sys_cap_grant + ?sys_cap_rewoke)*
     163                ?sys_cap_grant +
     164                ?sys_cap_rewoke
    144165};
    145166
     
    163184                unative_t sys_ipc_unregister_irq(inr_t inr, devno_t devno);
    164185        protocol:
    165                 (?sys_enable_iospace + ?sys_physmem_map + ?sys_device_assign_devno + ?sys_preempt_control + ?sys_ipc_register_irq + ?sys_ipc_unregister_irq)*
     186                ?sys_enable_iospace +
     187                ?sys_physmem_map +
     188                ?sys_device_assign_devno +
     189                ?sys_preempt_control +
     190                ?sys_ipc_register_irq +
     191                ?sys_ipc_unregister_irq
    166192};
    167193
     
    173199                unative_t sys_sysinfo_value(unatice_t ptr, unative_t len);
    174200        protocol:
    175                 (?sys_sysinfo_valid + ?sys_sysinfo_value)*
     201                ?sys_sysinfo_valid +
     202                ?sys_sysinfo_value
    176203};
    177204
     
    180207                unative_t sys_ipc_connect_kbox(sysarg64_t *uspace_taskid_arg);
    181208        protocol:
    182                 ?sys_ipc_connect_kbox*
     209                ?sys_ipc_connect_kbox
    183210};
    184211
  • contrib/arch/uspace/app/klog/klog.adl

    r1993f9a rea5f46d  
    22        requires:
    33                naming_service ns;
    4                 [/uspace/lib/libc/requires]
     4                [/uspace/lib/libc/requires%]
    55        protocol:
    66                [/uspace/lib/libc/protocol] +
  • contrib/arch/uspace/lib/libc/bind

    r1993f9a rea5f46d  
    1 /* Bindings to kernel interfaces */
     1/* Bind %% to kernel interfaces */
    22bind %%:kernel_klog to kernel:kernel_klog;
    33bind %%:kernel_console to kernel:kernel_console;
  • 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
  • contrib/highlight/bp.syntax

    r1993f9a rea5f46d  
    44context default
    55        keyword whole NULL yellow
    6         keyword whole try yellow
    7         keyword whole catch yellow
    86        keyword whole tentative yellow
    97       
Note: See TracChangeset for help on using the changeset viewer.