NullDevice.cpp 856 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. /*
  2. * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #include <AK/Singleton.h>
  7. #include <Kernel/Devices/NullDevice.h>
  8. #include <Kernel/Sections.h>
  9. namespace Kernel {
  10. static Singleton<NullDevice> s_the;
  11. UNMAP_AFTER_INIT void NullDevice::initialize()
  12. {
  13. s_the.ensure_instance();
  14. }
  15. NullDevice& NullDevice::the()
  16. {
  17. return *s_the;
  18. }
  19. UNMAP_AFTER_INIT NullDevice::NullDevice()
  20. : CharacterDevice(1, 3)
  21. {
  22. }
  23. UNMAP_AFTER_INIT NullDevice::~NullDevice()
  24. {
  25. }
  26. bool NullDevice::can_read(const FileDescription&, size_t) const
  27. {
  28. return true;
  29. }
  30. KResultOr<size_t> NullDevice::read(FileDescription&, u64, UserOrKernelBuffer&, size_t)
  31. {
  32. return 0;
  33. }
  34. KResultOr<size_t> NullDevice::write(FileDescription&, u64, const UserOrKernelBuffer&, size_t buffer_size)
  35. {
  36. return buffer_size;
  37. }
  38. }