diff --git a/headers/posix/devctl.h b/headers/posix/devctl.h new file mode 100644 index 0000000000..84b8c8ef1d --- /dev/null +++ b/headers/posix/devctl.h @@ -0,0 +1,22 @@ +/* + * Copyright 2024 Haiku, Inc. All Rights Reserved. + * Distributed under the terms of the MIT License. + */ +#ifndef _DEVCTL_H_ +#define _DEVCTL_H_ + +#include + + +#ifdef __cplusplus +extern "C" { +#endif + +int posix_devctl(int fd, int cmd, void* __restrict argument, size_t size, int* __restrict result); + +#ifdef __cplusplus +} +#endif + + +#endif // _DEVCTL_H_ diff --git a/src/system/libroot/posix/Jamfile b/src/system/libroot/posix/Jamfile index 68fdf3ef56..6af92bd9fd 100644 --- a/src/system/libroot/posix/Jamfile +++ b/src/system/libroot/posix/Jamfile @@ -29,6 +29,7 @@ for architectureObject in [ MultiArchSubDirSetup ] { MergeObject <$(architecture)>posix_main.o : assert.cpp cat.cpp + devctl.c dlfcn.c dirent.cpp errno.c diff --git a/src/system/libroot/posix/devctl.c b/src/system/libroot/posix/devctl.c new file mode 100644 index 0000000000..8545f404fa --- /dev/null +++ b/src/system/libroot/posix/devctl.c @@ -0,0 +1,23 @@ +/* + * Copyright 2024 Haiku, Inc. All Rights Reserved. + * Distributed under the terms of the MIT License. + */ + + +#include +#include + + +int +posix_devctl(int fd, int cmd, void* __restrict argument, size_t size, int* __restrict result) +{ + int status = _kern_ioctl(fd, cmd, argument, size); + + if (status < B_OK) + return status; + + if (result != NULL) + *result = status; + + return B_OK; +}