Component.cpp 931 B

12345678910111213141516171819202122232425262728293031323334
  1. /*
  2. * Copyright (c) 2022, Liav A. <liavalb@hotmail.co.il>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #include <AK/StringView.h>
  7. #include <Kernel/FileSystem/OpenFileDescription.h>
  8. #include <Kernel/FileSystem/SysFS/Subsystems/Firmware/BIOS/Component.h>
  9. #include <Kernel/Firmware/BIOS.h>
  10. #include <Kernel/KBufferBuilder.h>
  11. #include <Kernel/Memory/MemoryManager.h>
  12. #include <Kernel/Memory/TypedMapping.h>
  13. #include <Kernel/Sections.h>
  14. namespace Kernel {
  15. UNMAP_AFTER_INIT BIOSSysFSComponent::BIOSSysFSComponent()
  16. {
  17. }
  18. ErrorOr<size_t> BIOSSysFSComponent::read_bytes(off_t offset, size_t count, UserOrKernelBuffer& buffer, OpenFileDescription*) const
  19. {
  20. auto blob = TRY(try_to_generate_buffer());
  21. if ((size_t)offset >= blob->size())
  22. return 0;
  23. ssize_t nread = min(static_cast<off_t>(blob->size() - offset), static_cast<off_t>(count));
  24. TRY(buffer.write(blob->data() + offset, nread));
  25. return nread;
  26. }
  27. }