1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 10:18:11 +00:00
serenity/Kernel/Devices/ZeroDevice.cpp
Liav A 29f9a38f76 Kernel: Don't use naked new statements in init process
Instead, try to create the device objects in separate static methods,
and if we fail for some odd reason to allocate memory for such devices,
just panic with that reason.
2021-06-19 09:30:43 +02:00

45 lines
890 B
C++

/*
* Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#include "ZeroDevice.h"
#include <AK/Memory.h>
#include <AK/StdLibExtras.h>
#include <Kernel/Panic.h>
namespace Kernel {
UNMAP_AFTER_INIT NonnullRefPtr<ZeroDevice> ZeroDevice::must_create()
{
return adopt_ref_if_nonnull(new ZeroDevice).release_nonnull();
}
UNMAP_AFTER_INIT ZeroDevice::ZeroDevice()
: CharacterDevice(1, 5)
{
}
UNMAP_AFTER_INIT ZeroDevice::~ZeroDevice()
{
}
bool ZeroDevice::can_read(const FileDescription&, size_t) const
{
return true;
}
KResultOr<size_t> ZeroDevice::read(FileDescription&, u64, UserOrKernelBuffer& buffer, size_t size)
{
if (!buffer.memset(0, size))
return EFAULT;
return size;
}
KResultOr<size_t> ZeroDevice::write(FileDescription&, u64, const UserOrKernelBuffer&, size_t size)
{
return size;
}
}