mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 13:57:35 +00:00
Kernel+LibC: Implement sys$ioctl() FIONBIO
This is another (older) way of making a file descriptor non-blocking.
This commit is contained in:
parent
526b4bbfdb
commit
5f71bf0cc7
2 changed files with 8 additions and 1 deletions
|
@ -26,6 +26,7 @@
|
||||||
|
|
||||||
#include <Kernel/FileSystem/FileDescription.h>
|
#include <Kernel/FileSystem/FileDescription.h>
|
||||||
#include <Kernel/Process.h>
|
#include <Kernel/Process.h>
|
||||||
|
#include <LibC/sys/ioctl_numbers.h>
|
||||||
|
|
||||||
namespace Kernel {
|
namespace Kernel {
|
||||||
|
|
||||||
|
@ -34,6 +35,10 @@ KResultOr<int> Process::sys$ioctl(int fd, unsigned request, FlatPtr arg)
|
||||||
auto description = file_description(fd);
|
auto description = file_description(fd);
|
||||||
if (!description)
|
if (!description)
|
||||||
return EBADF;
|
return EBADF;
|
||||||
|
if (request == FIONBIO && arg != 0) {
|
||||||
|
description->set_blocking(false);
|
||||||
|
return KSuccess;
|
||||||
|
}
|
||||||
return description->file().ioctl(*description, request, arg);
|
return description->file().ioctl(*description, request, arg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -68,7 +68,8 @@ enum IOCtlNumber {
|
||||||
SIOCSIFNETMASK,
|
SIOCSIFNETMASK,
|
||||||
SIOCADDRT,
|
SIOCADDRT,
|
||||||
SIOCDELRT,
|
SIOCDELRT,
|
||||||
FIBMAP
|
FIBMAP,
|
||||||
|
FIONBIO,
|
||||||
};
|
};
|
||||||
|
|
||||||
#define TIOCGPGRP TIOCGPGRP
|
#define TIOCGPGRP TIOCGPGRP
|
||||||
|
@ -94,3 +95,4 @@ enum IOCtlNumber {
|
||||||
#define SIOCADDRT SIOCADDRT
|
#define SIOCADDRT SIOCADDRT
|
||||||
#define SIOCDELRT SIOCDELRT
|
#define SIOCDELRT SIOCDELRT
|
||||||
#define FIBMAP FIBMAP
|
#define FIBMAP FIBMAP
|
||||||
|
#define FIONBIO FIONBIO
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue