posix: move ioctl() from fdtable to posix

The ioctl() call should be a part of the _XOPEN_STREAMS
Option in posix, so move it there.

Create a zephyr-native zvfs_ioctl() in the layer below.

Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
This commit is contained in:
Chris Friedt 2024-06-05 13:12:11 -04:00 committed by Anas Nashif
commit 156eaab70e
6 changed files with 31 additions and 17 deletions

View file

@ -379,22 +379,6 @@ off_t zvfs_lseek(int fd, off_t offset, int whence)
whence);
}
int ioctl(int fd, unsigned long request, ...)
{
va_list args;
int res;
if (_check_fd(fd) < 0) {
return -1;
}
va_start(args, request);
res = fdtable[fd].vtable->ioctl(fdtable[fd].obj, request, args);
va_end(args);
return res;
}
int zvfs_fcntl(int fd, int cmd, va_list args)
{
int res;
@ -434,6 +418,16 @@ int zvfs_ftruncate(int fd, off_t length)
return zvfs_ftruncate_wrap(fd, ZFD_IOCTL_TRUNCATE, length);
}
int zvfs_ioctl(int fd, unsigned long request, va_list args)
{
if (_check_fd(fd) < 0) {
return -1;
}
return fdtable[fd].vtable->ioctl(fdtable[fd].obj, request, args);
}
#if defined(CONFIG_POSIX_DEVICE_IO)
/*
* fd operations for stdio/stdout/stderr

View file

@ -4,9 +4,11 @@
* SPDX-License-Identifier: Apache-2.0
*/
#include <zephyr/posix/stropts.h>
#include <errno.h>
#include <stdarg.h>
#include <zephyr/kernel.h>
#include <zephyr/posix/stropts.h>
int putmsg(int fildes, const struct strbuf *ctlptr, const struct strbuf *dataptr, int flags)
{
@ -79,3 +81,17 @@ int isastream(int fildes)
errno = ENOSYS;
return -1;
}
extern int zvfs_ioctl(int fd, unsigned long request, va_list args);
int ioctl(int fd, unsigned long request, ...)
{
int ret;
va_list args;
va_start(args, request);
ret = zvfs_ioctl(fd, request, args);
va_end(args);
return ret;
}

View file

@ -6,6 +6,7 @@ CONFIG_CPP=y
CONFIG_STD_CPP17=y
CONFIG_CPP_EXCEPTIONS=y
CONFIG_POSIX_API=y
CONFIG_XOPEN_STREAMS=y
CONFIG_COMMON_LIBC_THRD=y
CONFIG_DYNAMIC_THREAD=y
CONFIG_THREAD_STACK_INFO=y

View file

@ -6,6 +6,7 @@ CONFIG_CPP=y
CONFIG_STD_CPP17=y
CONFIG_CPP_EXCEPTIONS=y
CONFIG_POSIX_API=y
CONFIG_XOPEN_STREAMS=y
CONFIG_NET_SOCKETPAIR=y
CONFIG_HEAP_MEM_POOL_SIZE=16384
CONFIG_EVENTFD=y

View file

@ -7,6 +7,7 @@ CONFIG_STD_CPP17=y
CONFIG_CPP_EXCEPTIONS=y
CONFIG_GLIBCXX_LIBCPP=y
CONFIG_POSIX_API=y
CONFIG_XOPEN_STREAMS=y
CONFIG_NETWORKING=y
CONFIG_NET_TCP=y
CONFIG_NET_SOCKETS=y

View file

@ -9,4 +9,5 @@ CONFIG_TEST_RANDOM_GENERATOR=y
CONFIG_ZTEST=y
CONFIG_POSIX_API=y
CONFIG_XOPEN_STREAMS=y
CONFIG_EVENTFD=y