File.cpp 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. /*
  2. * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #include <AK/StringView.h>
  7. #include <AK/Userspace.h>
  8. #include <Kernel/FileSystem/File.h>
  9. #include <Kernel/FileSystem/FileDescription.h>
  10. #include <Kernel/Process.h>
  11. namespace Kernel {
  12. File::File()
  13. {
  14. }
  15. File::~File()
  16. {
  17. }
  18. bool File::unref() const
  19. {
  20. if (deref_base())
  21. return false;
  22. delete this;
  23. return true;
  24. }
  25. KResultOr<NonnullRefPtr<FileDescription>> File::open(int options)
  26. {
  27. auto description = FileDescription::try_create(*this);
  28. if (!description.is_error()) {
  29. description.value()->set_rw_mode(options);
  30. description.value()->set_file_flags(options);
  31. }
  32. return description;
  33. }
  34. KResult File::close()
  35. {
  36. return KSuccess;
  37. }
  38. KResult File::ioctl(FileDescription&, unsigned, Userspace<void*>)
  39. {
  40. return ENOTTY;
  41. }
  42. KResultOr<Memory::Region*> File::mmap(Process&, FileDescription&, Memory::VirtualRange const&, u64, int, bool)
  43. {
  44. return ENODEV;
  45. }
  46. KResult File::attach(FileDescription&)
  47. {
  48. m_attach_count++;
  49. return KSuccess;
  50. }
  51. void File::detach(FileDescription&)
  52. {
  53. m_attach_count--;
  54. }
  55. }