mirror of
https://github.com/RGBCube/serenity
synced 2025-05-14 08:04:57 +00:00

There's no need to have separate syscall for this kind of functionality, as we can just have a device node in /dev, called "beep", that allows writing tone generation packets to emulate the same behavior. In addition to that, we remove LibC sysbeep function, as this function was never being used by any C program nor it was standardized in any way. Instead, we move the userspace implementation to LibCore.
36 lines
1 KiB
C++
36 lines
1 KiB
C++
/*
|
|
* Copyright (c) 2023, Liav A. <liavalb@hotmail.co.il>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <Kernel/Devices/CharacterDevice.h>
|
|
|
|
namespace Kernel {
|
|
|
|
class PCSpeakerDevice final : public CharacterDevice {
|
|
friend class DeviceManagement;
|
|
|
|
public:
|
|
virtual ~PCSpeakerDevice() override;
|
|
|
|
static NonnullRefPtr<PCSpeakerDevice> must_create();
|
|
|
|
private:
|
|
PCSpeakerDevice();
|
|
|
|
// ^Device
|
|
virtual bool is_openable_by_jailed_processes() const override { return true; }
|
|
|
|
// ^CharacterDevice
|
|
virtual ErrorOr<size_t> read(OpenFileDescription&, u64, UserOrKernelBuffer&, size_t) override;
|
|
virtual ErrorOr<size_t> write(OpenFileDescription&, u64, UserOrKernelBuffer const&, size_t) override;
|
|
virtual bool can_write(OpenFileDescription const&, u64) const override { return true; }
|
|
virtual bool can_read(OpenFileDescription const&, u64) const override;
|
|
virtual StringView class_name() const override { return "PCSpeakerDevice"sv; }
|
|
virtual bool is_seekable() const override { return true; }
|
|
};
|
|
|
|
}
|