Changeset a46e56b in mainline for uspace/srv/bd/vbd/vbd.c
- Timestamp:
- 2018-03-22T06:49:35Z (6 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 77f0a1d
- Parents:
- 3e242d2
- git-author:
- Jakub Jermar <jakub@…> (2018-03-21 23:29:06)
- git-committer:
- Jakub Jermar <jakub@…> (2018-03-22 06:49:35)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/bd/vbd/vbd.c
r3e242d2 ra46e56b 87 87 } 88 88 89 static void vbds_get_disks_srv(cap_call_handle_t i id, ipc_call_t *icall)90 { 91 cap_call_handle_t c allid;89 static void vbds_get_disks_srv(cap_call_handle_t icall_handle, ipc_call_t *icall) 90 { 91 cap_call_handle_t chandle; 92 92 size_t size; 93 93 size_t act_size; 94 94 errno_t rc; 95 95 96 if (!async_data_read_receive(&c allid, &size)) {97 async_answer_0(c allid, EREFUSED);98 async_answer_0(i id, EREFUSED);96 if (!async_data_read_receive(&chandle, &size)) { 97 async_answer_0(chandle, EREFUSED); 98 async_answer_0(icall_handle, EREFUSED); 99 99 return; 100 100 } … … 102 102 service_id_t *id_buf = (service_id_t *) malloc(size); 103 103 if (id_buf == NULL) { 104 async_answer_0(c allid, ENOMEM);105 async_answer_0(i id, ENOMEM);104 async_answer_0(chandle, ENOMEM); 105 async_answer_0(icall_handle, ENOMEM); 106 106 return; 107 107 } … … 110 110 if (rc != EOK) { 111 111 free(id_buf); 112 async_answer_0(c allid, rc);113 async_answer_0(i id, rc);114 return; 115 } 116 117 errno_t retval = async_data_read_finalize(c allid, id_buf, size);112 async_answer_0(chandle, rc); 113 async_answer_0(icall_handle, rc); 114 return; 115 } 116 117 errno_t retval = async_data_read_finalize(chandle, id_buf, size); 118 118 free(id_buf); 119 119 120 async_answer_1(i id, retval, act_size);121 } 122 123 static void vbds_disk_info_srv(cap_call_handle_t i id, ipc_call_t *icall)120 async_answer_1(icall_handle, retval, act_size); 121 } 122 123 static void vbds_disk_info_srv(cap_call_handle_t icall_handle, ipc_call_t *icall) 124 124 { 125 125 service_id_t disk_sid; … … 132 132 rc = vbds_disk_info(disk_sid, &dinfo); 133 133 if (rc != EOK) { 134 async_answer_0(i id, rc);135 return; 136 } 137 138 cap_call_handle_t c allid;139 size_t size; 140 if (!async_data_read_receive(&c allid, &size)) {141 async_answer_0(c allid, EREFUSED);142 async_answer_0(i id, EREFUSED);134 async_answer_0(icall_handle, rc); 135 return; 136 } 137 138 cap_call_handle_t chandle; 139 size_t size; 140 if (!async_data_read_receive(&chandle, &size)) { 141 async_answer_0(chandle, EREFUSED); 142 async_answer_0(icall_handle, EREFUSED); 143 143 return; 144 144 } 145 145 146 146 if (size != sizeof(vbd_disk_info_t)) { 147 async_answer_0(c allid, EINVAL);148 async_answer_0(i id, EINVAL);149 return; 150 } 151 152 rc = async_data_read_finalize(c allid, &dinfo,147 async_answer_0(chandle, EINVAL); 148 async_answer_0(icall_handle, EINVAL); 149 return; 150 } 151 152 rc = async_data_read_finalize(chandle, &dinfo, 153 153 min(size, sizeof(dinfo))); 154 154 if (rc != EOK) { 155 async_answer_0(c allid, rc);156 async_answer_0(i id, rc);157 return; 158 } 159 160 async_answer_0(i id, EOK);161 } 162 163 static void vbds_label_create_srv(cap_call_handle_t i id, ipc_call_t *icall)155 async_answer_0(chandle, rc); 156 async_answer_0(icall_handle, rc); 157 return; 158 } 159 160 async_answer_0(icall_handle, EOK); 161 } 162 163 static void vbds_label_create_srv(cap_call_handle_t icall_handle, ipc_call_t *icall) 164 164 { 165 165 service_id_t disk_sid; … … 172 172 ltype = IPC_GET_ARG2(*icall); 173 173 rc = vbds_label_create(disk_sid, ltype); 174 async_answer_0(i id, rc);175 } 176 177 static void vbds_label_delete_srv(cap_call_handle_t i id, ipc_call_t *icall)174 async_answer_0(icall_handle, rc); 175 } 176 177 static void vbds_label_delete_srv(cap_call_handle_t icall_handle, ipc_call_t *icall) 178 178 { 179 179 service_id_t disk_sid; … … 184 184 disk_sid = IPC_GET_ARG1(*icall); 185 185 rc = vbds_label_delete(disk_sid); 186 async_answer_0(i id, rc);187 } 188 189 static void vbds_label_get_parts_srv(cap_call_handle_t i id, ipc_call_t *icall)190 { 191 cap_call_handle_t c allid;186 async_answer_0(icall_handle, rc); 187 } 188 189 static void vbds_label_get_parts_srv(cap_call_handle_t icall_handle, ipc_call_t *icall) 190 { 191 cap_call_handle_t chandle; 192 192 size_t size; 193 193 size_t act_size; … … 197 197 log_msg(LOG_DEFAULT, LVL_DEBUG, "vbds_label_get_parts_srv()"); 198 198 199 if (!async_data_read_receive(&c allid, &size)) {200 async_answer_0(c allid, EREFUSED);201 async_answer_0(i id, EREFUSED);199 if (!async_data_read_receive(&chandle, &size)) { 200 async_answer_0(chandle, EREFUSED); 201 async_answer_0(icall_handle, EREFUSED); 202 202 return; 203 203 } … … 207 207 category_id_t *id_buf = (category_id_t *) malloc(size); 208 208 if (id_buf == NULL) { 209 async_answer_0(c allid, ENOMEM);210 async_answer_0(i id, ENOMEM);209 async_answer_0(chandle, ENOMEM); 210 async_answer_0(icall_handle, ENOMEM); 211 211 return; 212 212 } … … 214 214 rc = vbds_get_parts(sid, id_buf, size, &act_size); 215 215 if (rc != EOK) { 216 async_answer_0(c allid, rc);217 async_answer_0(i id, rc);218 return; 219 } 220 221 errno_t retval = async_data_read_finalize(c allid, id_buf, size);216 async_answer_0(chandle, rc); 217 async_answer_0(icall_handle, rc); 218 return; 219 } 220 221 errno_t retval = async_data_read_finalize(chandle, id_buf, size); 222 222 free(id_buf); 223 223 224 async_answer_1(i id, retval, act_size);225 } 226 227 static void vbds_part_get_info_srv(cap_call_handle_t i id, ipc_call_t *icall)224 async_answer_1(icall_handle, retval, act_size); 225 } 226 227 static void vbds_part_get_info_srv(cap_call_handle_t icall_handle, ipc_call_t *icall) 228 228 { 229 229 vbds_part_id_t part; … … 236 236 rc = vbds_part_get_info(part, &pinfo); 237 237 if (rc != EOK) { 238 async_answer_0(i id, rc);239 return; 240 } 241 242 cap_call_handle_t c allid;243 size_t size; 244 if (!async_data_read_receive(&c allid, &size)) {245 async_answer_0(c allid, EREFUSED);246 async_answer_0(i id, EREFUSED);238 async_answer_0(icall_handle, rc); 239 return; 240 } 241 242 cap_call_handle_t chandle; 243 size_t size; 244 if (!async_data_read_receive(&chandle, &size)) { 245 async_answer_0(chandle, EREFUSED); 246 async_answer_0(icall_handle, EREFUSED); 247 247 return; 248 248 } 249 249 250 250 if (size != sizeof(vbd_part_info_t)) { 251 async_answer_0(c allid, EINVAL);252 async_answer_0(i id, EINVAL);253 return; 254 } 255 256 rc = async_data_read_finalize(c allid, &pinfo,251 async_answer_0(chandle, EINVAL); 252 async_answer_0(icall_handle, EINVAL); 253 return; 254 } 255 256 rc = async_data_read_finalize(chandle, &pinfo, 257 257 min(size, sizeof(pinfo))); 258 258 if (rc != EOK) { 259 async_answer_0(c allid, rc);260 async_answer_0(i id, rc);261 return; 262 } 263 264 async_answer_0(i id, EOK);265 } 266 267 static void vbds_part_create_srv(cap_call_handle_t i id, ipc_call_t *icall)259 async_answer_0(chandle, rc); 260 async_answer_0(icall_handle, rc); 261 return; 262 } 263 264 async_answer_0(icall_handle, EOK); 265 } 266 267 static void vbds_part_create_srv(cap_call_handle_t icall_handle, ipc_call_t *icall) 268 268 { 269 269 service_id_t disk_sid; … … 276 276 disk_sid = IPC_GET_ARG1(*icall); 277 277 278 cap_call_handle_t c allid;279 size_t size; 280 if (!async_data_write_receive(&c allid, &size)) {281 async_answer_0(c allid, EREFUSED);282 async_answer_0(i id, EREFUSED);278 cap_call_handle_t chandle; 279 size_t size; 280 if (!async_data_write_receive(&chandle, &size)) { 281 async_answer_0(chandle, EREFUSED); 282 async_answer_0(icall_handle, EREFUSED); 283 283 return; 284 284 } 285 285 286 286 if (size != sizeof(vbd_part_spec_t)) { 287 async_answer_0(c allid, EINVAL);288 async_answer_0(i id, EINVAL);289 return; 290 } 291 292 rc = async_data_write_finalize(c allid, &pspec, sizeof(vbd_part_spec_t));293 if (rc != EOK) { 294 async_answer_0(c allid, rc);295 async_answer_0(i id, rc);287 async_answer_0(chandle, EINVAL); 288 async_answer_0(icall_handle, EINVAL); 289 return; 290 } 291 292 rc = async_data_write_finalize(chandle, &pspec, sizeof(vbd_part_spec_t)); 293 if (rc != EOK) { 294 async_answer_0(chandle, rc); 295 async_answer_0(icall_handle, rc); 296 296 return; 297 297 } … … 299 299 rc = vbds_part_create(disk_sid, &pspec, &part); 300 300 if (rc != EOK) { 301 async_answer_0(i id, rc);302 return; 303 } 304 305 async_answer_1(i id, rc, (sysarg_t)part);306 } 307 308 static void vbds_part_delete_srv(cap_call_handle_t i id, ipc_call_t *icall)301 async_answer_0(icall_handle, rc); 302 return; 303 } 304 305 async_answer_1(icall_handle, rc, (sysarg_t)part); 306 } 307 308 static void vbds_part_delete_srv(cap_call_handle_t icall_handle, ipc_call_t *icall) 309 309 { 310 310 vbds_part_id_t part; … … 315 315 part = IPC_GET_ARG1(*icall); 316 316 rc = vbds_part_delete(part); 317 async_answer_0(i id, rc);318 } 319 320 static void vbds_suggest_ptype_srv(cap_call_handle_t i id, ipc_call_t *icall)317 async_answer_0(icall_handle, rc); 318 } 319 320 static void vbds_suggest_ptype_srv(cap_call_handle_t icall_handle, ipc_call_t *icall) 321 321 { 322 322 service_id_t disk_sid; … … 332 332 rc = vbds_suggest_ptype(disk_sid, pcnt, &ptype); 333 333 if (rc != EOK) { 334 async_answer_0(i id, rc);335 return; 336 } 337 338 cap_call_handle_t c allid;339 size_t size; 340 if (!async_data_read_receive(&c allid, &size)) {341 async_answer_0(c allid, EREFUSED);342 async_answer_0(i id, EREFUSED);334 async_answer_0(icall_handle, rc); 335 return; 336 } 337 338 cap_call_handle_t chandle; 339 size_t size; 340 if (!async_data_read_receive(&chandle, &size)) { 341 async_answer_0(chandle, EREFUSED); 342 async_answer_0(icall_handle, EREFUSED); 343 343 return; 344 344 } 345 345 346 346 if (size != sizeof(label_ptype_t)) { 347 async_answer_0(c allid, EINVAL);348 async_answer_0(i id, EINVAL);349 return; 350 } 351 352 rc = async_data_read_finalize(c allid, &ptype, sizeof(label_ptype_t));353 if (rc != EOK) { 354 async_answer_0(c allid, rc);355 async_answer_0(i id, rc);356 return; 357 } 358 359 async_answer_0(i id, EOK);360 } 361 362 static void vbds_ctl_conn(cap_call_handle_t i id, ipc_call_t *icall, void *arg)347 async_answer_0(chandle, EINVAL); 348 async_answer_0(icall_handle, EINVAL); 349 return; 350 } 351 352 rc = async_data_read_finalize(chandle, &ptype, sizeof(label_ptype_t)); 353 if (rc != EOK) { 354 async_answer_0(chandle, rc); 355 async_answer_0(icall_handle, rc); 356 return; 357 } 358 359 async_answer_0(icall_handle, EOK); 360 } 361 362 static void vbds_ctl_conn(cap_call_handle_t icall_handle, ipc_call_t *icall, void *arg) 363 363 { 364 364 log_msg(LOG_DEFAULT, LVL_DEBUG, "vbds_client_conn()"); 365 365 366 366 /* Accept the connection */ 367 async_answer_0(i id, EOK);367 async_answer_0(icall_handle, EOK); 368 368 369 369 while (true) { 370 370 ipc_call_t call; 371 cap_call_handle_t c allid= async_get_call(&call);371 cap_call_handle_t chandle = async_get_call(&call); 372 372 sysarg_t method = IPC_GET_IMETHOD(call); 373 373 374 374 if (!method) { 375 375 /* The other side has hung up */ 376 async_answer_0(c allid, EOK);376 async_answer_0(chandle, EOK); 377 377 return; 378 378 } … … 380 380 switch (method) { 381 381 case VBD_GET_DISKS: 382 vbds_get_disks_srv(c allid, &call);382 vbds_get_disks_srv(chandle, &call); 383 383 break; 384 384 case VBD_DISK_INFO: 385 vbds_disk_info_srv(c allid, &call);385 vbds_disk_info_srv(chandle, &call); 386 386 break; 387 387 case VBD_LABEL_CREATE: 388 vbds_label_create_srv(c allid, &call);388 vbds_label_create_srv(chandle, &call); 389 389 break; 390 390 case VBD_LABEL_DELETE: 391 vbds_label_delete_srv(c allid, &call);391 vbds_label_delete_srv(chandle, &call); 392 392 break; 393 393 case VBD_LABEL_GET_PARTS: 394 vbds_label_get_parts_srv(c allid, &call);394 vbds_label_get_parts_srv(chandle, &call); 395 395 break; 396 396 case VBD_PART_GET_INFO: 397 vbds_part_get_info_srv(c allid, &call);397 vbds_part_get_info_srv(chandle, &call); 398 398 break; 399 399 case VBD_PART_CREATE: 400 vbds_part_create_srv(c allid, &call);400 vbds_part_create_srv(chandle, &call); 401 401 break; 402 402 case VBD_PART_DELETE: 403 vbds_part_delete_srv(c allid, &call);403 vbds_part_delete_srv(chandle, &call); 404 404 break; 405 405 case VBD_SUGGEST_PTYPE: 406 vbds_suggest_ptype_srv(c allid, &call);406 vbds_suggest_ptype_srv(chandle, &call); 407 407 break; 408 408 default: 409 async_answer_0(c allid, EINVAL);409 async_answer_0(chandle, EINVAL); 410 410 } 411 411 } 412 412 } 413 413 414 static void vbds_client_conn(cap_call_handle_t i id, ipc_call_t *icall, void *arg)414 static void vbds_client_conn(cap_call_handle_t icall_handle, ipc_call_t *icall, void *arg) 415 415 { 416 416 service_id_t sid; … … 421 421 422 422 if (sid == ctl_sid) 423 vbds_ctl_conn(i id, icall, arg);423 vbds_ctl_conn(icall_handle, icall, arg); 424 424 else 425 vbds_bd_conn(i id, icall, arg);425 vbds_bd_conn(icall_handle, icall, arg); 426 426 } 427 427
Note:
See TracChangeset
for help on using the changeset viewer.