Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset 28ed0d9 in mainline for uspace/srv/bd/vbd/vbd.c


Ignore:
Timestamp:
2015-06-27T19:50:12Z (6 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
master
Children:
78d50bd
Parents:
22fb7ab
Message:

VBD client API, liblabel API, pass partition creation/deletion through to VBD.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/bd/vbd/vbd.c

    r22fb7ab r28ed0d9  
    4444#include <task.h>
    4545
     46#include "disk.h"
    4647#include "types/vbd.h"
    4748
    4849#define NAME  "vbd"
    4950
    50 static void vbd_client_conn(ipc_callid_t, ipc_call_t *, void *);
    51 
    52 static int vbd_init(void)
    53 {
    54         int rc;
    55         log_msg(LOG_DEFAULT, LVL_NOTE, "vbd_init()");
    56 
    57         async_set_client_connection(vbd_client_conn);
     51static void vbds_client_conn(ipc_callid_t, ipc_call_t *, void *);
     52
     53static int vbds_init(void)
     54{
     55        int rc;
     56        log_msg(LOG_DEFAULT, LVL_NOTE, "vbds_init()");
     57
     58        vbds_disks_init();
     59
     60        async_set_client_connection(vbds_client_conn);
    5861
    5962        rc = loc_server_register(NAME);
     
    7376}
    7477
    75 static int vbd_disk_add(service_id_t sid)
    76 {
    77         log_msg(LOG_DEFAULT, LVL_NOTE, "vbd_disk_add(%zu)", sid);
    78         return EOK;
    79 }
    80 
    81 static int vbd_disk_remove(service_id_t sid)
    82 {
    83         log_msg(LOG_DEFAULT, LVL_NOTE, "vbd_disk_remove(%zu)", sid);
    84         return EOK;
    85 }
    86 
    87 static int vbd_disk_info(service_id_t sid, vbd_disk_info_t *info)
    88 {
    89         log_msg(LOG_DEFAULT, LVL_NOTE, "vbd_disk_info(%zu)", sid);
    90         info->ltype = lt_mbr;
    91         return EOK;
    92 }
    93 
    94 static int vbd_label_create(service_id_t sid, label_type_t ltype)
    95 {
    96         log_msg(LOG_DEFAULT, LVL_NOTE, "vbd_label_create(%zu, %d)", sid,
    97             ltype);
    98         return EOK;
    99 }
    100 
    101 static int vbd_label_delete(service_id_t sid, label_type_t ltype)
    102 {
    103         log_msg(LOG_DEFAULT, LVL_NOTE, "vbd_label_delete(%zu, %d)", sid,
    104             ltype);
    105         return EOK;
    106 }
    107 
    108 static void vbd_disk_add_srv(ipc_callid_t iid, ipc_call_t *icall)
    109 {
    110         service_id_t disk_sid;
    111         int rc;
    112 
    113         log_msg(LOG_DEFAULT, LVL_NOTE, "vbd_disk_add_srv()");
    114 
    115         disk_sid = IPC_GET_ARG1(*icall);
    116         rc = vbd_disk_add(disk_sid);
    117         async_answer_0(iid, (sysarg_t) rc);
    118 }
    119 
    120 static void vbd_disk_remove_srv(ipc_callid_t iid, ipc_call_t *icall)
    121 {
    122         service_id_t disk_sid;
    123         int rc;
    124 
    125         log_msg(LOG_DEFAULT, LVL_NOTE, "vbd_disk_remove_srv()");
    126 
    127         disk_sid = IPC_GET_ARG1(*icall);
    128         rc = vbd_disk_remove(disk_sid);
    129         async_answer_0(iid, (sysarg_t) rc);
    130 }
    131 
    132 static void vbd_disk_info_srv(ipc_callid_t iid, ipc_call_t *icall)
    133 {
    134         service_id_t disk_sid;
    135         vbd_disk_info_t dinfo;
    136         int rc;
    137 
    138         log_msg(LOG_DEFAULT, LVL_NOTE, "vbd_disk_info_srv()");
    139 
    140         disk_sid = IPC_GET_ARG1(*icall);
    141         rc = vbd_disk_info(disk_sid, &dinfo);
     78
     79static void vbds_disk_add_srv(ipc_callid_t iid, ipc_call_t *icall)
     80{
     81        service_id_t disk_sid;
     82        int rc;
     83
     84        log_msg(LOG_DEFAULT, LVL_NOTE, "vbds_disk_add_srv()");
     85
     86        disk_sid = IPC_GET_ARG1(*icall);
     87        rc = vbds_disk_add(disk_sid);
     88        async_answer_0(iid, (sysarg_t) rc);
     89}
     90
     91static void vbds_disk_remove_srv(ipc_callid_t iid, ipc_call_t *icall)
     92{
     93        service_id_t disk_sid;
     94        int rc;
     95
     96        log_msg(LOG_DEFAULT, LVL_NOTE, "vbds_disk_remove_srv()");
     97
     98        disk_sid = IPC_GET_ARG1(*icall);
     99        rc = vbds_disk_remove(disk_sid);
     100        async_answer_0(iid, (sysarg_t) rc);
     101}
     102
     103static void vbds_disk_info_srv(ipc_callid_t iid, ipc_call_t *icall)
     104{
     105        service_id_t disk_sid;
     106        vbds_disk_info_t dinfo;
     107        int rc;
     108
     109        log_msg(LOG_DEFAULT, LVL_NOTE, "vbds_disk_info_srv()");
     110
     111        disk_sid = IPC_GET_ARG1(*icall);
     112        rc = vbds_disk_info(disk_sid, &dinfo);
    142113        async_answer_1(iid, (sysarg_t)rc, (sysarg_t)dinfo.ltype);
    143114}
    144115
    145 static void vbd_label_create_srv(ipc_callid_t iid, ipc_call_t *icall)
     116static void vbds_label_create_srv(ipc_callid_t iid, ipc_call_t *icall)
    146117{
    147118        service_id_t disk_sid;
     
    149120        int rc;
    150121
    151         log_msg(LOG_DEFAULT, LVL_NOTE, "vbd_label_create_srv()");
     122        log_msg(LOG_DEFAULT, LVL_NOTE, "vbds_label_create_srv()");
    152123
    153124        disk_sid = IPC_GET_ARG1(*icall);
    154125        ltype = IPC_GET_ARG2(*icall);
    155         rc = vbd_label_create(disk_sid, ltype);
    156         async_answer_0(iid, (sysarg_t) rc);
    157 }
    158 
    159 static void vbd_label_delete_srv(ipc_callid_t iid, ipc_call_t *icall)
    160 {
    161         service_id_t disk_sid;
    162         label_type_t ltype;
    163         int rc;
    164 
    165         log_msg(LOG_DEFAULT, LVL_NOTE, "vbd_label_delete_srv()");
    166 
    167         disk_sid = IPC_GET_ARG1(*icall);
    168         ltype = IPC_GET_ARG2(*icall);
    169         rc = vbd_label_delete(disk_sid, ltype);
    170         async_answer_0(iid, (sysarg_t) rc);
    171 }
    172 
    173 static void vbd_client_conn(ipc_callid_t iid, ipc_call_t *icall, void *arg)
    174 {
    175         log_msg(LOG_DEFAULT, LVL_NOTE, "vbd_client_conn()");
     126        rc = vbds_label_create(disk_sid, ltype);
     127        async_answer_0(iid, (sysarg_t) rc);
     128}
     129
     130static void vbds_label_delete_srv(ipc_callid_t iid, ipc_call_t *icall)
     131{
     132        service_id_t disk_sid;
     133        int rc;
     134
     135        log_msg(LOG_DEFAULT, LVL_NOTE, "vbds_label_delete_srv()");
     136
     137        disk_sid = IPC_GET_ARG1(*icall);
     138        rc = vbds_label_delete(disk_sid);
     139        async_answer_0(iid, (sysarg_t) rc);
     140}
     141
     142static void vbds_label_get_parts_srv(ipc_callid_t iid, ipc_call_t *icall)
     143{
     144//      service_id_t disk_sid;
     145//      int rc;
     146
     147        log_msg(LOG_DEFAULT, LVL_NOTE, "vbds_label_get_parts_srv()");
     148
     149//      disk_sid = IPC_GET_ARG1(*icall);
     150//      rc = vbds_label_delete(disk_sid);
     151//      async_answer_0(iid, (sysarg_t) rc);
     152        async_answer_0(iid, ENOTSUP);
     153}
     154
     155static void vbds_part_get_info_srv(ipc_callid_t iid, ipc_call_t *icall)
     156{
     157        vbds_part_id_t part;
     158        vbds_part_info_t pinfo;
     159        int rc;
     160
     161        log_msg(LOG_DEFAULT, LVL_NOTE, "vbds_part_get_info_srv()");
     162
     163        part = IPC_GET_ARG1(*icall);
     164        rc = vbds_part_get_info(part, &pinfo);
     165        async_answer_0(iid, (sysarg_t)rc);
     166}
     167
     168static void vbds_part_create_srv(ipc_callid_t iid, ipc_call_t *icall)
     169{
     170        service_id_t disk_sid;
     171        vbds_part_id_t part;
     172        int rc;
     173
     174        log_msg(LOG_DEFAULT, LVL_NOTE, "vbds_part_create_srv()");
     175
     176        disk_sid = IPC_GET_ARG1(*icall);
     177        rc = vbds_part_create(disk_sid, &part);
     178        async_answer_1(iid, (sysarg_t)rc, (sysarg_t)part);
     179}
     180
     181static void vbds_part_delete_srv(ipc_callid_t iid, ipc_call_t *icall)
     182{
     183        vbds_part_id_t part;
     184        int rc;
     185
     186        log_msg(LOG_DEFAULT, LVL_NOTE, "vbds_part_delete_srv()");
     187
     188        part = IPC_GET_ARG1(*icall);
     189        rc = vbds_part_delete(part);
     190        async_answer_0(iid, (sysarg_t) rc);
     191}
     192
     193static void vbds_client_conn(ipc_callid_t iid, ipc_call_t *icall, void *arg)
     194{
     195        log_msg(LOG_DEFAULT, LVL_NOTE, "vbds_client_conn()");
    176196
    177197        /* Accept the connection */
     
    191211                switch (method) {
    192212                case VBD_DISK_ADD:
    193                         vbd_disk_add_srv(callid, &call);
     213                        vbds_disk_add_srv(callid, &call);
    194214                        break;
    195215                case VBD_DISK_REMOVE:
    196                         vbd_disk_remove_srv(callid, &call);
     216                        vbds_disk_remove_srv(callid, &call);
    197217                        break;
    198218                case VBD_DISK_INFO:
    199                         vbd_disk_info_srv(callid, &call);
     219                        vbds_disk_info_srv(callid, &call);
    200220                        break;
    201221                case VBD_LABEL_CREATE:
    202                         vbd_label_create_srv(callid, &call);
     222                        vbds_label_create_srv(callid, &call);
    203223                        break;
    204224                case VBD_LABEL_DELETE:
    205                         vbd_label_delete_srv(callid, &call);
     225                        vbds_label_delete_srv(callid, &call);
     226                        break;
     227                case VBD_LABEL_GET_PARTS:
     228                        vbds_label_get_parts_srv(callid, &call);
     229                        break;
     230                case VBD_PART_GET_INFO:
     231                        vbds_part_get_info_srv(callid, &call);
     232                        break;
     233                case VBD_PART_CREATE:
     234                        vbds_part_create_srv(callid, &call);
     235                        break;
     236                case VBD_PART_DELETE:
     237                        vbds_part_delete_srv(callid, &call);
    206238                        break;
    207239                default:
     
    222254        }
    223255
    224         rc = vbd_init();
     256        rc = vbds_init();
    225257        if (rc != EOK)
    226258                return 1;
Note: See TracChangeset for help on using the changeset viewer.