492 return read(fd->fd, buf, nbyte); |
494 return read(fd->fd, buf, nbyte); |
493 } |
495 } |
494 |
496 |
495 ssize_t sys_file_write(SYS_FILE fd, const void *buf, size_t nbyte) { |
497 ssize_t sys_file_write(SYS_FILE fd, const void *buf, size_t nbyte) { |
496 return write(fd->fd, buf, nbyte); |
498 return write(fd->fd, buf, nbyte); |
|
499 } |
|
500 |
|
501 ssize_t sys_file_pread(SYS_FILE fd, void *buf, size_t nbyte, off_t offset) { |
|
502 return pread(fd->fd, buf, nbyte, offset); |
|
503 } |
|
504 |
|
505 ssize_t sys_file_pwrite(SYS_FILE fd, const void *buf, size_t nbyte, off_t offset) { |
|
506 return pwrite(fd->fd, buf, nbyte, offset); |
497 } |
507 } |
498 |
508 |
499 off_t sys_file_seek(SYS_FILE fd, off_t offset, int whence) { |
509 off_t sys_file_seek(SYS_FILE fd, off_t offset, int whence) { |
500 return lseek(fd->fd, offset, whence); |
510 return lseek(fd->fd, offset, whence); |
501 } |
511 } |
582 |
592 |
583 NSAPI_PUBLIC int system_fwrite(SYS_FILE fd, const void *buf, int nbyte) { |
593 NSAPI_PUBLIC int system_fwrite(SYS_FILE fd, const void *buf, int nbyte) { |
584 return fd->io->write(fd, buf, nbyte); |
594 return fd->io->write(fd, buf, nbyte); |
585 } |
595 } |
586 |
596 |
|
597 NSAPI_PUBLIC int system_pread(SYS_FILE fd, void *buf, int nbyte, off_t offset) { |
|
598 return fd->io->pread(fd, buf, nbyte, offset); |
|
599 } |
|
600 |
|
601 NSAPI_PUBLIC int system_pwrite(SYS_FILE fd, const void *buf, int nbyte, off_t offset) { |
|
602 return fd->io->pwrite(fd, buf, nbyte, offset); |
|
603 } |
|
604 |
587 NSAPI_PUBLIC off_t system_lseek(SYS_FILE fd, off_t offset, int whence) { |
605 NSAPI_PUBLIC off_t system_lseek(SYS_FILE fd, off_t offset, int whence) { |
588 return fd->io->seek(fd, offset, whence); |
606 return fd->io->seek(fd, offset, whence); |
589 } |
607 } |
590 |
608 |
591 NSAPI_PUBLIC int system_fclose(SYS_FILE fd) { |
609 NSAPI_PUBLIC int system_fclose(SYS_FILE fd) { |
624 return 0; |
642 return 0; |
625 } |
643 } |
626 } |
644 } |
627 |
645 |
628 static void* vfs_aio_read(aiocb_s *aiocb) { |
646 static void* vfs_aio_read(aiocb_s *aiocb) { |
629 system_lseek(aiocb->filedes, aiocb->offset, SEEK_SET); |
647 int result = system_pread(aiocb->filedes, aiocb->buf, aiocb->nbytes, aiocb->offset); |
630 int result = system_fread(aiocb->filedes, aiocb->buf, aiocb->nbytes); |
|
631 aiocb->result = result; |
648 aiocb->result = result; |
632 if(result < 0) { |
649 if(result < 0) { |
633 aiocb->result_errno = errno; |
650 aiocb->result_errno = errno; |
634 } |
651 } |
635 event_send(aiocb->evhandler, aiocb->event); |
652 event_send(aiocb->evhandler, aiocb->event); |
636 return NULL; |
653 return NULL; |
637 } |
654 } |
638 |
655 |
639 static void* vfs_aio_write(aiocb_s *aiocb) { |
656 static void* vfs_aio_write(aiocb_s *aiocb) { |
640 system_lseek(aiocb->filedes, aiocb->offset, SEEK_SET); |
657 int result = system_pwrite(aiocb->filedes, aiocb->buf, aiocb->nbytes, aiocb->offset); |
641 int result = system_fwrite(aiocb->filedes, aiocb->buf, aiocb->nbytes); |
|
642 aiocb->result = result; |
658 aiocb->result = result; |
643 if(result < 0) { |
659 if(result < 0) { |
644 aiocb->result_errno = errno; |
660 aiocb->result_errno = errno; |
645 } |
661 } |
646 event_send(aiocb->evhandler, aiocb->event); |
662 event_send(aiocb->evhandler, aiocb->event); |