mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 14:28:12 +00:00

Now that all KResult and KResultOr are used consistently throughout the kernel, it's no longer necessary to return negative error codes. However, we were still doing that in some places, so let's fix all those (bugs) by removing the minuses. :^)
42 lines
1.4 KiB
C++
42 lines
1.4 KiB
C++
/*
|
|
* Copyright (c) 2021, Liav A. <liavalb@hotmail.co.il>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <AK/String.h>
|
|
#include <AK/Types.h>
|
|
#include <Kernel/Devices/CharacterDevice.h>
|
|
#include <Kernel/PhysicalAddress.h>
|
|
|
|
namespace Kernel {
|
|
|
|
class MemoryDevice final : public CharacterDevice {
|
|
AK_MAKE_ETERNAL
|
|
public:
|
|
static NonnullRefPtr<MemoryDevice> must_create();
|
|
~MemoryDevice();
|
|
|
|
virtual KResultOr<Region*> mmap(Process&, FileDescription&, const Range&, u64 offset, int prot, bool shared) override;
|
|
|
|
// ^Device
|
|
virtual mode_t required_mode() const override { return 0660; }
|
|
virtual String device_name() const override { return "mem"; };
|
|
|
|
private:
|
|
MemoryDevice();
|
|
virtual StringView class_name() const override { return "MemoryDevice"; }
|
|
virtual bool can_read(const FileDescription&, size_t) const override { return true; }
|
|
virtual bool can_write(const FileDescription&, size_t) const override { return false; }
|
|
virtual bool is_seekable() const override { return true; }
|
|
virtual KResultOr<size_t> read(FileDescription&, u64, UserOrKernelBuffer&, size_t) override;
|
|
virtual KResultOr<size_t> write(FileDescription&, u64, const UserOrKernelBuffer&, size_t) override { return EINVAL; }
|
|
|
|
virtual void did_seek(FileDescription&, off_t) override;
|
|
|
|
bool is_allowed_range(PhysicalAddress, const Range&) const;
|
|
};
|
|
|
|
}
|