ioctl.cpp 643 B

1234567891011121314151617181920212223242526
  1. /*
  2. * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #include <Kernel/FileSystem/FileDescription.h>
  7. #include <Kernel/Process.h>
  8. #include <LibC/sys/ioctl_numbers.h>
  9. namespace Kernel {
  10. KResultOr<FlatPtr> Process::sys$ioctl(int fd, unsigned request, FlatPtr arg)
  11. {
  12. VERIFY_PROCESS_BIG_LOCK_ACQUIRED(this)
  13. auto description = fds().file_description(fd);
  14. if (!description)
  15. return EBADF;
  16. if (request == FIONBIO) {
  17. description->set_blocking(arg == 0);
  18. return KSuccess;
  19. }
  20. return description->file().ioctl(*description, request, arg);
  21. }
  22. }