Changes in uspace/lib/c/generic/vbd.c [372df8f:b7fd2a0] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/generic/vbd.c
r372df8f rb7fd2a0 33 33 */ 34 34 35 #include <abi/ipc/interfaces.h> 35 36 #include <errno.h> 36 37 #include <ipc/services.h> … … 43 44 #include <vbd.h> 44 45 45 static int vbd_get_ids_internal(vbd_t *, sysarg_t, sysarg_t, sysarg_t **,46 static errno_t vbd_get_ids_internal(vbd_t *, sysarg_t, sysarg_t, sysarg_t **, 46 47 size_t *); 47 48 48 int vbd_create(vbd_t **rvbd)49 errno_t vbd_create(vbd_t **rvbd) 49 50 { 50 51 vbd_t *vbd; 51 52 service_id_t vbd_svcid; 52 int rc;53 errno_t rc; 53 54 54 55 vbd = calloc(1, sizeof(vbd_t)); … … 65 66 } 66 67 67 vbd->sess = loc_service_connect( EXCHANGE_SERIALIZE, vbd_svcid,68 vbd->sess = loc_service_connect(vbd_svcid, INTERFACE_VBD, 68 69 IPC_FLAG_BLOCKING); 69 70 if (vbd->sess == NULL) { … … 94 95 * @param count Place to store length of array (number of entries) 95 96 * 96 * @return EOK on success or negativeerror code97 */ 98 int vbd_get_disks(vbd_t *vbd, service_id_t **data, size_t *count)97 * @return EOK on success or an error code 98 */ 99 errno_t vbd_get_disks(vbd_t *vbd, service_id_t **data, size_t *count) 99 100 { 100 101 return vbd_get_ids_internal(vbd, VBD_GET_DISKS, 0, data, count); … … 102 103 103 104 /** Get disk information. */ 104 int vbd_disk_info(vbd_t *vbd, service_id_t sid, vbd_disk_info_t *vinfo)105 { 106 async_exch_t *exch; 107 sysarg_t retval;105 errno_t vbd_disk_info(vbd_t *vbd, service_id_t sid, vbd_disk_info_t *vinfo) 106 { 107 async_exch_t *exch; 108 errno_t retval; 108 109 ipc_call_t answer; 109 110 110 111 exch = async_exchange_begin(vbd->sess); 111 112 aid_t req = async_send_1(exch, VBD_DISK_INFO, sid, &answer); 112 int rc = async_data_read_start(exch, vinfo, sizeof(vbd_disk_info_t));113 async_exchange_end(exch); 114 115 if (rc != EOK) { 116 async_forget(req); 117 return EIO; 118 } 119 120 async_wait_for(req, &retval); 121 if (retval != EOK) 122 return EIO; 123 124 return EOK; 125 } 126 127 int vbd_label_create(vbd_t *vbd, service_id_t sid, label_type_t ltype)128 { 129 async_exch_t *exch; 130 int retval;113 errno_t rc = async_data_read_start(exch, vinfo, sizeof(vbd_disk_info_t)); 114 async_exchange_end(exch); 115 116 if (rc != EOK) { 117 async_forget(req); 118 return EIO; 119 } 120 121 async_wait_for(req, &retval); 122 if (retval != EOK) 123 return EIO; 124 125 return EOK; 126 } 127 128 errno_t vbd_label_create(vbd_t *vbd, service_id_t sid, label_type_t ltype) 129 { 130 async_exch_t *exch; 131 errno_t retval; 131 132 132 133 exch = async_exchange_begin(vbd->sess); … … 140 141 } 141 142 142 int vbd_label_delete(vbd_t *vbd, service_id_t sid)143 { 144 async_exch_t *exch; 145 int retval;143 errno_t vbd_label_delete(vbd_t *vbd, service_id_t sid) 144 { 145 async_exch_t *exch; 146 errno_t retval; 146 147 147 148 exch = async_exchange_begin(vbd->sess); … … 164 165 * @param act_size Place to store actual size of complete data. 165 166 * 166 * @return EOK on success or negativeerror code.167 */ 168 static int vbd_get_ids_once(vbd_t *vbd, sysarg_t method, sysarg_t arg1,167 * @return EOK on success or an error code. 168 */ 169 static errno_t vbd_get_ids_once(vbd_t *vbd, sysarg_t method, sysarg_t arg1, 169 170 sysarg_t *id_buf, size_t buf_size, size_t *act_size) 170 171 { … … 173 174 ipc_call_t answer; 174 175 aid_t req = async_send_1(exch, method, arg1, &answer); 175 int rc = async_data_read_start(exch, id_buf, buf_size);176 errno_t rc = async_data_read_start(exch, id_buf, buf_size); 176 177 177 178 async_exchange_end(exch); … … 182 183 } 183 184 184 sysarg_t retval;185 errno_t retval; 185 186 async_wait_for(req, &retval); 186 187 … … 202 203 * @param data Place to store pointer to array of IDs 203 204 * @param count Place to store number of IDs 204 * @return EOK on success or negativeerror code205 */ 206 static int vbd_get_ids_internal(vbd_t *vbd, sysarg_t method, sysarg_t arg1,205 * @return EOK on success or an error code 206 */ 207 static errno_t vbd_get_ids_internal(vbd_t *vbd, sysarg_t method, sysarg_t arg1, 207 208 sysarg_t **data, size_t *count) 208 209 { … … 211 212 212 213 size_t act_size = 0; 213 int rc = vbd_get_ids_once(vbd, method, arg1, NULL, 0, &act_size);214 errno_t rc = vbd_get_ids_once(vbd, method, arg1, NULL, 0, &act_size); 214 215 if (rc != EOK) 215 216 return rc; … … 246 247 * @param count Place to store length of array (number of entries) 247 248 * 248 * @return EOK on success or negativeerror code249 */ 250 int vbd_label_get_parts(vbd_t *vbd, service_id_t disk,249 * @return EOK on success or an error code 250 */ 251 errno_t vbd_label_get_parts(vbd_t *vbd, service_id_t disk, 251 252 service_id_t **data, size_t *count) 252 253 { … … 255 256 } 256 257 257 int vbd_part_get_info(vbd_t *vbd, vbd_part_id_t part, vbd_part_info_t *pinfo)258 { 259 async_exch_t *exch; 260 sysarg_t retval;258 errno_t vbd_part_get_info(vbd_t *vbd, vbd_part_id_t part, vbd_part_info_t *pinfo) 259 { 260 async_exch_t *exch; 261 errno_t retval; 261 262 ipc_call_t answer; 262 263 263 264 exch = async_exchange_begin(vbd->sess); 264 265 aid_t req = async_send_1(exch, VBD_PART_GET_INFO, part, &answer); 265 int rc = async_data_read_start(exch, pinfo, sizeof(vbd_part_info_t));266 async_exchange_end(exch); 267 268 if (rc != EOK) { 269 async_forget(req); 270 return EIO; 271 } 272 273 async_wait_for(req, &retval); 274 if (retval != EOK) 275 return EIO; 276 277 return EOK; 278 } 279 280 int vbd_part_create(vbd_t *vbd, service_id_t disk, vbd_part_spec_t *pspec,266 errno_t rc = async_data_read_start(exch, pinfo, sizeof(vbd_part_info_t)); 267 async_exchange_end(exch); 268 269 if (rc != EOK) { 270 async_forget(req); 271 return EIO; 272 } 273 274 async_wait_for(req, &retval); 275 if (retval != EOK) 276 return EIO; 277 278 return EOK; 279 } 280 281 errno_t vbd_part_create(vbd_t *vbd, service_id_t disk, vbd_part_spec_t *pspec, 281 282 vbd_part_id_t *rpart) 282 283 { 283 284 async_exch_t *exch; 284 sysarg_t retval;285 errno_t retval; 285 286 ipc_call_t answer; 286 287 287 288 exch = async_exchange_begin(vbd->sess); 288 289 aid_t req = async_send_1(exch, VBD_PART_CREATE, disk, &answer); 289 int rc = async_data_write_start(exch, pspec, sizeof(vbd_part_spec_t));290 errno_t rc = async_data_write_start(exch, pspec, sizeof(vbd_part_spec_t)); 290 291 async_exchange_end(exch); 291 292 … … 304 305 } 305 306 306 int vbd_part_delete(vbd_t *vbd, vbd_part_id_t part)307 { 308 async_exch_t *exch; 309 int retval;307 errno_t vbd_part_delete(vbd_t *vbd, vbd_part_id_t part) 308 { 309 async_exch_t *exch; 310 errno_t retval; 310 311 311 312 exch = async_exchange_begin(vbd->sess); … … 331 332 * @param ptype Place to store suggested partition type 332 333 * 333 * @return EOK on success or negativeerror code334 */ 335 int vbd_suggest_ptype(vbd_t *vbd, service_id_t disk, label_pcnt_t pcnt,334 * @return EOK on success or an error code 335 */ 336 errno_t vbd_suggest_ptype(vbd_t *vbd, service_id_t disk, label_pcnt_t pcnt, 336 337 label_ptype_t *ptype) 337 338 { 338 339 async_exch_t *exch; 339 sysarg_t retval;340 errno_t retval; 340 341 ipc_call_t answer; 341 342 342 343 exch = async_exchange_begin(vbd->sess); 343 344 aid_t req = async_send_2(exch, VBD_SUGGEST_PTYPE, disk, pcnt, &answer); 344 int rc = async_data_read_start(exch, ptype, sizeof(label_ptype_t));345 errno_t rc = async_data_read_start(exch, ptype, sizeof(label_ptype_t)); 345 346 async_exchange_end(exch); 346 347
Note:
See TracChangeset
for help on using the changeset viewer.