mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 06:37:43 +00:00
UserspaceEmulator: Convert virt$ioctl to use switch-case
This commit is contained in:
parent
fcd97a3e19
commit
0c88a53d4c
1 changed files with 17 additions and 13 deletions
|
@ -1107,7 +1107,8 @@ int Emulator::virt$get_dir_entries(int fd, FlatPtr buffer, ssize_t size)
|
||||||
|
|
||||||
int Emulator::virt$ioctl([[maybe_unused]] int fd, unsigned request, [[maybe_unused]] FlatPtr arg)
|
int Emulator::virt$ioctl([[maybe_unused]] int fd, unsigned request, [[maybe_unused]] FlatPtr arg)
|
||||||
{
|
{
|
||||||
if (request == TIOCGWINSZ) {
|
switch (request) {
|
||||||
|
case TIOCGWINSZ: {
|
||||||
struct winsize ws;
|
struct winsize ws;
|
||||||
int rc = syscall(SC_ioctl, fd, TIOCGWINSZ, &ws);
|
int rc = syscall(SC_ioctl, fd, TIOCGWINSZ, &ws);
|
||||||
if (rc < 0)
|
if (rc < 0)
|
||||||
|
@ -1115,10 +1116,9 @@ int Emulator::virt$ioctl([[maybe_unused]] int fd, unsigned request, [[maybe_unus
|
||||||
mmu().copy_to_vm(arg, &ws, sizeof(winsize));
|
mmu().copy_to_vm(arg, &ws, sizeof(winsize));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (request == TIOCSPGRP) {
|
case TIOCSPGRP:
|
||||||
return syscall(SC_ioctl, fd, request, arg);
|
return syscall(SC_ioctl, fd, request, arg);
|
||||||
}
|
case TCGETS: {
|
||||||
if (request == TCGETS) {
|
|
||||||
struct termios termios;
|
struct termios termios;
|
||||||
int rc = syscall(SC_ioctl, fd, request, &termios);
|
int rc = syscall(SC_ioctl, fd, request, &termios);
|
||||||
if (rc < 0)
|
if (rc < 0)
|
||||||
|
@ -1126,33 +1126,37 @@ int Emulator::virt$ioctl([[maybe_unused]] int fd, unsigned request, [[maybe_unus
|
||||||
mmu().copy_to_vm(arg, &termios, sizeof(termios));
|
mmu().copy_to_vm(arg, &termios, sizeof(termios));
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
if (request == TCSETS || request == TCSETSF || request == TCSETSW) {
|
case TCSETS:
|
||||||
|
case TCSETSF:
|
||||||
|
case TCSETSW: {
|
||||||
struct termios termios;
|
struct termios termios;
|
||||||
mmu().copy_from_vm(&termios, arg, sizeof(termios));
|
mmu().copy_from_vm(&termios, arg, sizeof(termios));
|
||||||
return syscall(SC_ioctl, fd, request, &termios);
|
return syscall(SC_ioctl, fd, request, &termios);
|
||||||
}
|
}
|
||||||
if (request == TIOCNOTTY || request == TIOCSCTTY) {
|
case TIOCNOTTY:
|
||||||
|
case TIOCSCTTY:
|
||||||
return syscall(SC_ioctl, fd, request, 0);
|
return syscall(SC_ioctl, fd, request, 0);
|
||||||
}
|
case FB_IOCTL_GET_PROPERTIES: {
|
||||||
if (request == FB_IOCTL_GET_PROPERTIES) {
|
|
||||||
size_t size = 0;
|
size_t size = 0;
|
||||||
auto rc = syscall(SC_ioctl, fd, request, &size);
|
auto rc = syscall(SC_ioctl, fd, request, &size);
|
||||||
mmu().copy_to_vm(arg, &size, sizeof(size));
|
mmu().copy_to_vm(arg, &size, sizeof(size));
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
if (request == FB_IOCTL_SET_HEAD_RESOLUTION) {
|
case FB_IOCTL_SET_HEAD_RESOLUTION: {
|
||||||
FBHeadResolution user_resolution;
|
FBHeadResolution user_resolution;
|
||||||
mmu().copy_from_vm(&user_resolution, arg, sizeof(user_resolution));
|
mmu().copy_from_vm(&user_resolution, arg, sizeof(user_resolution));
|
||||||
auto rc = syscall(SC_ioctl, fd, request, &user_resolution);
|
auto rc = syscall(SC_ioctl, fd, request, &user_resolution);
|
||||||
mmu().copy_to_vm(arg, &user_resolution, sizeof(user_resolution));
|
mmu().copy_to_vm(arg, &user_resolution, sizeof(user_resolution));
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
if (request == FB_IOCTL_SET_HEAD_VERTICAL_OFFSET_BUFFER) {
|
case FB_IOCTL_SET_HEAD_VERTICAL_OFFSET_BUFFER:
|
||||||
return syscall(SC_ioctl, fd, request, arg);
|
return syscall(SC_ioctl, fd, request, arg);
|
||||||
|
default:
|
||||||
|
reportln("Unsupported ioctl: {}", request);
|
||||||
|
dump_backtrace();
|
||||||
|
TODO();
|
||||||
}
|
}
|
||||||
reportln("Unsupported ioctl: {}", request);
|
VERIFY_NOT_REACHED();
|
||||||
dump_backtrace();
|
|
||||||
TODO();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int Emulator::virt$emuctl(FlatPtr arg1, FlatPtr arg2, FlatPtr arg3)
|
int Emulator::virt$emuctl(FlatPtr arg1, FlatPtr arg2, FlatPtr arg3)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue