int (*fcntl_p)(void* ctx, int fd, int cmd, va_list args);
int (*fcntl)(int fd, int cmd, va_list args);
};
+ union {
+ int (*ioctl_p)(void* ctx, int fd, int cmd, va_list args);
+ int (*ioctl)(int fd, int cmd, va_list args);
+ };
} esp_vfs_t;
va_end(args);
return ret;
}
+
+int ioctl(int fd, int cmd, ...)
+{
+ const vfs_entry_t* vfs = get_vfs_for_fd(fd);
+ struct _reent* r = __getreent();
+ if (vfs == NULL) {
+ __errno_r(r) = EBADF;
+ return -1;
+ }
+ int local_fd = translate_fd(vfs, fd);
+ int ret;
+ va_list args;
+ va_start(args, cmd);
+ CHECK_AND_CALL(ret, r, vfs, ioctl, local_fd, cmd, args);
+ va_end(args);
+ return ret;
+}