off_t fio_seek(int fd, off_t offset, int whence) { off_t r = 0; // DBGOUT("fio_seek(%i, %i, %i)\r\n", fd, offset, whence); if (fio_is_open_int(fd)) { if (fio_fds[fd].fdseek) { r = fio_fds[fd].fdseek(fio_fds[fd].opaque, offset, whence); } else { r = -3; } } else { r = -2; } return r; }
int fio_close(int fd) { int r = 0; // DBGOUT("fio_close(%i)\r\n", fd); if (fio_is_open_int(fd)) { if (fio_fds[fd].fdclose) r = fio_fds[fd].fdclose(fio_fds[fd].opaque); xSemaphoreTake(fio_sem, portMAX_DELAY); memset(fio_fds + fd, 0, sizeof(struct fddef_t)); xSemaphoreGive(fio_sem); } else { r = -2; } return r; }
ssize_t fio_write(int fd, const void * buf, size_t count) { ssize_t r = 0; // DBGOUT("fio_write(%i, %p, %i)\r\n", fd, buf, count); if (fio_is_open_int(fd)) { if (fio_fds[fd].fdwrite) { r = fio_fds[fd].fdwrite(fio_fds[fd].opaque, buf, count); } else { r = -3; } } else { r = -2; } return r; }
void fio_set_opaque(int fd, void * opaque) { if (fio_is_open_int(fd)) fio_fds[fd].opaque = opaque; }