Changeset 1626cd4 in mainline for uspace/srv/bd/vbd/vbd.c
- Timestamp:
- 2015-07-02T19:01:37Z (9 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 6a0d4ce2
- Parents:
- 3faa03d
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/bd/vbd/vbd.c
r3faa03d r1626cd4 40 40 #include <ipc/vbd.h> 41 41 #include <loc.h> 42 #include <macros.h> 42 43 #include <stdio.h> 43 44 #include <stdlib.h> … … 112 113 disk_sid = IPC_GET_ARG1(*icall); 113 114 rc = vbds_disk_info(disk_sid, &dinfo); 114 async_answer_1(iid, (sysarg_t)rc, (sysarg_t)dinfo.ltype); 115 if (rc != EOK) { 116 log_msg(LOG_DEFAULT, LVL_NOTE, "vbd_disk_info() call failed"); 117 async_answer_0(iid, rc); 118 return; 119 } 120 121 log_msg(LOG_DEFAULT, LVL_NOTE, "vbd_disk_info() data_read_receive"); 122 ipc_callid_t callid; 123 size_t size; 124 if (!async_data_read_receive(&callid, &size)) { 125 log_msg(LOG_DEFAULT, LVL_NOTE, "vbd_disk_info() failed"); 126 async_answer_0(callid, EREFUSED); 127 async_answer_0(iid, EREFUSED); 128 return; 129 } 130 131 log_msg(LOG_DEFAULT, LVL_NOTE, "vbd_disk_info() check size"); 132 if (size != sizeof(vbds_disk_info_t)) { 133 log_msg(LOG_DEFAULT, LVL_NOTE, "vbd_disk_info() wrong size"); 134 async_answer_0(callid, EINVAL); 135 async_answer_0(iid, EINVAL); 136 return; 137 } 138 139 log_msg(LOG_DEFAULT, LVL_NOTE, "vbd_disk_info() data_read_finalize"); 140 rc = async_data_read_finalize(callid, &dinfo, 141 min(size, sizeof(dinfo))); 142 if (rc != EOK) { 143 async_answer_0(callid, rc); 144 async_answer_0(iid, rc); 145 return; 146 } 147 148 log_msg(LOG_DEFAULT, LVL_NOTE, "vbd_disk_info() reply EOK"); 149 async_answer_0(iid, EOK); 115 150 } 116 151 … … 143 178 static void vbds_label_get_parts_srv(ipc_callid_t iid, ipc_call_t *icall) 144 179 { 145 // service_id_t disk_sid; 146 // int rc; 180 ipc_callid_t callid; 181 size_t size; 182 size_t act_size; 183 service_id_t sid; 184 int rc; 147 185 148 186 log_msg(LOG_DEFAULT, LVL_NOTE, "vbds_label_get_parts_srv()"); 149 187 150 // disk_sid = IPC_GET_ARG1(*icall); 151 // rc = vbds_label_delete(disk_sid); 152 // async_answer_0(iid, (sysarg_t) rc); 153 async_answer_0(iid, ENOTSUP); 154 } 188 if (!async_data_read_receive(&callid, &size)) { 189 async_answer_0(callid, EREFUSED); 190 async_answer_0(iid, EREFUSED); 191 return; 192 } 193 194 sid = IPC_GET_ARG1(*icall); 195 196 category_id_t *id_buf = (category_id_t *) malloc(size); 197 if (id_buf == NULL) { 198 async_answer_0(callid, ENOMEM); 199 async_answer_0(iid, ENOMEM); 200 return; 201 } 202 203 rc = vbds_get_parts(sid, id_buf, size, &act_size); 204 if (rc != EOK) { 205 async_answer_0(callid, rc); 206 async_answer_0(iid, rc); 207 return; 208 } 209 210 sysarg_t retval = async_data_read_finalize(callid, id_buf, size); 211 free(id_buf); 212 213 async_answer_1(iid, retval, act_size); 214 } 215 155 216 156 217 static void vbds_part_get_info_srv(ipc_callid_t iid, ipc_call_t *icall) … … 164 225 part = IPC_GET_ARG1(*icall); 165 226 rc = vbds_part_get_info(part, &pinfo); 166 async_answer_0(iid, (sysarg_t)rc); 227 async_answer_5(iid, (sysarg_t)rc, pinfo.index, 228 LOWER32(pinfo.block0), UPPER32(pinfo.block0), 229 LOWER32(pinfo.nblocks), UPPER32(pinfo.nblocks)); 167 230 } 168 231
Note:
See TracChangeset
for help on using the changeset viewer.