|
|
@@ -489,3 +489,20 @@ int fcntl(int fd, int cmd, ...)
|
|
|
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;
|
|
|
+}
|