Kernel+LibC: Implement sys$ioctl() FIONBIO

This is another (older) way of making a file descriptor non-blocking.
This commit is contained in:
Andreas Kling 2021-03-28 17:50:08 +02:00
parent 526b4bbfdb
commit 5f71bf0cc7
Notes: sideshowbarker 2024-07-18 21:00:00 +09:00
2 changed files with 8 additions and 1 deletions

View File

@ -26,6 +26,7 @@
#include <Kernel/FileSystem/FileDescription.h>
#include <Kernel/Process.h>
#include <LibC/sys/ioctl_numbers.h>
namespace Kernel {
@ -34,6 +35,10 @@ KResultOr<int> Process::sys$ioctl(int fd, unsigned request, FlatPtr arg)
auto description = file_description(fd);
if (!description)
return EBADF;
if (request == FIONBIO && arg != 0) {
description->set_blocking(false);
return KSuccess;
}
return description->file().ioctl(*description, request, arg);
}

View File

@ -68,7 +68,8 @@ enum IOCtlNumber {
SIOCSIFNETMASK,
SIOCADDRT,
SIOCDELRT,
FIBMAP
FIBMAP,
FIONBIO,
};
#define TIOCGPGRP TIOCGPGRP
@ -94,3 +95,4 @@ enum IOCtlNumber {
#define SIOCADDRT SIOCADDRT
#define SIOCDELRT SIOCDELRT
#define FIBMAP FIBMAP
#define FIONBIO FIONBIO