mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 23:17:45 +00:00
Kernel: Add a comment block about the Device class.
This commit is contained in:
parent
f7a23f3668
commit
d7cf841d3d
1 changed files with 33 additions and 0 deletions
|
@ -1,5 +1,38 @@
|
|||
#pragma once
|
||||
|
||||
// Device is the base class of everything that lives in the /dev directory.
|
||||
//
|
||||
// All Devices will automatically register with the VFS.
|
||||
// To expose a Device to the filesystem, simply pass two unique numbers to the constructor,
|
||||
// and then mknod a file in /dev with those numbers.
|
||||
//
|
||||
// There are two main subclasses:
|
||||
// - BlockDevice (random access)
|
||||
// - CharacterDevice (sequential)
|
||||
//
|
||||
// The most important functions in Device are:
|
||||
//
|
||||
// class_name()
|
||||
// - Used in the /proc filesystem to identify the type of Device.
|
||||
//
|
||||
// read() and write()
|
||||
// - Implement reading and writing.
|
||||
// - Return the number of bytes read/written, OR a negative error code.
|
||||
//
|
||||
// can_read() and can_write()
|
||||
//
|
||||
// - Used to implement blocking I/O, and the select() and poll() syscalls.
|
||||
// - Return true if read() or write() would succeed, respectively.
|
||||
// - Note that can_read() should return true in EOF conditions,
|
||||
// and a subsequent call to read() should return 0.
|
||||
//
|
||||
// ioctl()
|
||||
//
|
||||
// - Optional. If unimplemented, ioctl() on the device will fail with -ENOTTY.
|
||||
// - Can be overridden in subclasses to implement arbitrary functionality.
|
||||
// - Subclasses should take care to validate incoming addresses before dereferencing.
|
||||
//
|
||||
|
||||
#include <AK/Retainable.h>
|
||||
#include <AK/Types.h>
|
||||
#include <Kernel/FileSystem/FileDescriptor.h>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue