Changeset fd210de in mainline for uspace/lib/libc/generic/vfs/vfs.c
- Timestamp:
- 2009-08-13T17:26:25Z (15 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 8344d0a
- Parents:
- 75a2dc08 (diff), 64cbf94 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/libc/generic/vfs/vfs.c
r75a2dc08 rfd210de 122 122 int res; 123 123 ipcarg_t rc; 124 ipcarg_t rc_orig; 124 125 aid_t req; 125 126 dev_handle_t dev_handle; … … 141 142 rc = ipc_data_write_start(vfs_phone, (void *) mpa, mpa_size); 142 143 if (rc != EOK) { 143 async_wait_for(req, NULL);144 async_wait_for(req, &rc_orig); 144 145 async_serialize_end(); 145 146 futex_up(&vfs_phone_futex); 146 147 free(mpa); 147 return (int) rc; 148 if (rc_orig == EOK) 149 return (int) rc; 150 else 151 return (int) rc_orig; 148 152 } 149 153 150 154 rc = ipc_data_write_start(vfs_phone, (void *) opts, str_size(opts)); 151 155 if (rc != EOK) { 152 async_wait_for(req, NULL);156 async_wait_for(req, &rc_orig); 153 157 async_serialize_end(); 154 158 futex_up(&vfs_phone_futex); 155 159 free(mpa); 156 return (int) rc; 160 if (rc_orig == EOK) 161 return (int) rc; 162 else 163 return (int) rc_orig; 157 164 } 158 165 159 166 rc = ipc_data_write_start(vfs_phone, (void *) fs_name, str_size(fs_name)); 160 167 if (rc != EOK) { 161 async_wait_for(req, NULL);168 async_wait_for(req, &rc_orig); 162 169 async_serialize_end(); 163 170 futex_up(&vfs_phone_futex); 164 171 free(mpa); 165 return (int) rc; 172 if (rc_orig == EOK) 173 return (int) rc; 174 else 175 return (int) rc_orig; 166 176 } 167 177 … … 169 179 rc = async_req_0_0(vfs_phone, IPC_M_PING); 170 180 if (rc != EOK) { 171 async_wait_for(req, NULL);181 async_wait_for(req, &rc_orig); 172 182 async_serialize_end(); 173 183 futex_up(&vfs_phone_futex); 174 184 free(mpa); 175 return (int) rc; 185 if (rc_orig == EOK) 186 return (int) rc; 187 else 188 return (int) rc_orig; 176 189 } 177 190 … … 202 215 rc = ipc_data_write_start(vfs_phone, pa, pa_size); 203 216 if (rc != EOK) { 204 async_wait_for(req, NULL); 217 ipcarg_t rc_orig; 218 219 async_wait_for(req, &rc_orig); 205 220 async_serialize_end(); 206 221 futex_up(&vfs_phone_futex); 207 222 free(pa); 208 return (int) rc; 223 if (rc_orig == EOK) 224 return (int) rc; 225 else 226 return (int) rc_orig; 209 227 } 210 228 async_wait_for(req, &rc); … … 240 258 241 259 if (rc != EOK) 242 260 return (int) rc; 243 261 244 262 return (int) IPC_GET_ARG1(answer); … … 274 292 rc = ipc_data_read_start(vfs_phone, (void *)buf, nbyte); 275 293 if (rc != EOK) { 276 async_wait_for(req, NULL); 277 async_serialize_end(); 278 futex_up(&vfs_phone_futex); 279 return (ssize_t) rc; 294 ipcarg_t rc_orig; 295 296 async_wait_for(req, &rc_orig); 297 async_serialize_end(); 298 futex_up(&vfs_phone_futex); 299 if (rc_orig == EOK) 300 return (ssize_t) rc; 301 else 302 return (ssize_t) rc_orig; 280 303 } 281 304 async_wait_for(req, &rc); … … 301 324 rc = ipc_data_write_start(vfs_phone, (void *)buf, nbyte); 302 325 if (rc != EOK) { 303 async_wait_for(req, NULL); 304 async_serialize_end(); 305 futex_up(&vfs_phone_futex); 306 return (ssize_t) rc; 326 ipcarg_t rc_orig; 327 328 async_wait_for(req, &rc_orig); 329 async_serialize_end(); 330 futex_up(&vfs_phone_futex); 331 if (rc_orig == EOK) 332 return (ssize_t) rc; 333 else 334 return (ssize_t) rc_orig; 307 335 } 308 336 async_wait_for(req, &rc); … … 376 404 rc = ipc_data_read_start(vfs_phone, (void *)stat, sizeof(struct stat)); 377 405 if (rc != EOK) { 378 async_wait_for(req, NULL); 379 async_serialize_end(); 380 futex_up(&vfs_phone_futex); 381 return (ssize_t) rc; 406 ipcarg_t rc_orig; 407 408 async_wait_for(req, &rc_orig); 409 async_serialize_end(); 410 futex_up(&vfs_phone_futex); 411 if (rc_orig == EOK) 412 return (ssize_t) rc; 413 else 414 return (ssize_t) rc_orig; 382 415 } 383 416 async_wait_for(req, &rc); … … 391 424 { 392 425 ipcarg_t rc; 426 ipcarg_t rc_orig; 393 427 aid_t req; 394 428 … … 405 439 rc = ipc_data_write_start(vfs_phone, pa, pa_size); 406 440 if (rc != EOK) { 407 async_wait_for(req, NULL);441 async_wait_for(req, &rc_orig); 408 442 async_serialize_end(); 409 443 futex_up(&vfs_phone_futex); 410 444 free(pa); 411 return (int) rc; 445 if (rc_orig == EOK) 446 return (int) rc; 447 else 448 return (int) rc_orig; 412 449 } 413 450 rc = ipc_data_read_start(vfs_phone, stat, sizeof(struct stat)); 414 451 if (rc != EOK) { 415 async_wait_for(req, NULL);452 async_wait_for(req, &rc_orig); 416 453 async_serialize_end(); 417 454 futex_up(&vfs_phone_futex); 418 455 free(pa); 419 return (int) rc; 456 if (rc_orig == EOK) 457 return (int) rc; 458 else 459 return (int) rc_orig; 420 460 } 421 461 async_wait_for(req, &rc); … … 476 516 rc = ipc_data_write_start(vfs_phone, pa, pa_size); 477 517 if (rc != EOK) { 478 async_wait_for(req, NULL); 518 ipcarg_t rc_orig; 519 520 async_wait_for(req, &rc_orig); 479 521 async_serialize_end(); 480 522 futex_up(&vfs_phone_futex); 481 523 free(pa); 482 return (int) rc; 524 if (rc_orig == EOK) 525 return (int) rc; 526 else 527 return (int) rc_orig; 483 528 } 484 529 async_wait_for(req, &rc); … … 506 551 rc = ipc_data_write_start(vfs_phone, pa, pa_size); 507 552 if (rc != EOK) { 508 async_wait_for(req, NULL); 553 ipcarg_t rc_orig; 554 555 async_wait_for(req, &rc_orig); 509 556 async_serialize_end(); 510 557 futex_up(&vfs_phone_futex); 511 558 free(pa); 512 return (int) rc; 559 if (rc_orig == EOK) 560 return (int) rc; 561 else 562 return (int) rc_orig; 513 563 } 514 564 async_wait_for(req, &rc); … … 532 582 { 533 583 ipcarg_t rc; 584 ipcarg_t rc_orig; 534 585 aid_t req; 535 586 … … 553 604 rc = ipc_data_write_start(vfs_phone, olda, olda_size); 554 605 if (rc != EOK) { 555 async_wait_for(req, NULL);606 async_wait_for(req, &rc_orig); 556 607 async_serialize_end(); 557 608 futex_up(&vfs_phone_futex); 558 609 free(olda); 559 610 free(newa); 560 return (int) rc; 611 if (rc_orig == EOK) 612 return (int) rc; 613 else 614 return (int) rc_orig; 561 615 } 562 616 rc = ipc_data_write_start(vfs_phone, newa, newa_size); 563 617 if (rc != EOK) { 564 async_wait_for(req, NULL);618 async_wait_for(req, &rc_orig); 565 619 async_serialize_end(); 566 620 futex_up(&vfs_phone_futex); 567 621 free(olda); 568 622 free(newa); 569 return (int) rc; 623 if (rc_orig == EOK) 624 return (int) rc; 625 else 626 return (int) rc_orig; 570 627 } 571 628 async_wait_for(req, &rc);
Note:
See TracChangeset
for help on using the changeset viewer.