#include <chardev.h>
Inherits BazisLib::Linux::Device.
Inherited by BazisLib::Linux::BasicTextDevice, and BazisLib::Linux::BasicUsbCharacterDevice [private]
.
Classes | |
class | Initializer |
Initializes BasicCharacterDevice::m_FileOperations. More... | |
Public Member Functions | |
virtual LKSTATUS __bzslib_extern | RegisterDevice (class Driver *pDriver) override |
virtual file_operations * | GetFileOperations () |
Protected Member Functions | |
virtual ssize_t __bzslib_extern | OnRead (struct file *pFile, UserBuffer Buffer, size_t lSize, loff_t Offset) |
virtual ssize_t __bzslib_extern | OnWrite (struct file *pFile, UserBuffer Buffer, size_t lSize, loff_t Offset) |
virtual LKSTATUS __bzslib_extern | OnIoctl (struct inode *pInode, struct file *pFile, unsigned int num, unsigned long param) |
virtual LKSTATUS __bzslib_extern | OnOpen (struct inode *pInode, struct file *pFile) |
virtual LKSTATUS __bzslib_extern | OnClose (struct inode *pInode, struct file *pFile) |
bool __bzslib_extern | HasDeviceNumber () |
LKSTATUS __bzslib_extern | AllocateDeviceNumbers (unsigned MinorCount=1, unsigned FirstMinor=0) |
LKSTATUS __bzslib_extern | RegisterCharacterDeviceObject (unsigned MinorCount=1, module *pOwner=THIS_MODULE) |
__bzslib_extern | BasicCharacterDevice (const char *pszDeviceName) |
__bzslib_extern | ~BasicCharacterDevice () |
Static Protected Member Functions | |
static void __bzslib_extern | InitializeFileOperations (file_operations *pOperations, module *pOwner=THIS_MODULE) |
Protected Attributes | |
unsigned | m_MinorCount |
Private Types | |
enum | { BAD_DEVICE_NUMBER = 0 } |
typedef Device | __super |
Static Private Member Functions | |
static ssize_t __bzslib_extern | s_read (struct file *pFile, char __user *pBuffer, size_t lSize, loff_t *pOffset) |
static ssize_t __bzslib_extern | s_write (struct file *pFile, const char __user *pBuffer, size_t lSize, loff_t *pOffset) |
static int __bzslib_extern | s_ioctl (struct inode *pInode, struct file *pFile, unsigned CtlCode, unsigned long Parameter) |
static int __bzslib_extern | s_open (struct inode *pInode, struct file *pFile) |
static int __bzslib_extern | s_release (struct inode *pInode, struct file *pFile) |
Private Attributes | |
dev_t | m_DeviceNumber |
Allocated device number. Freed on device deletion. | |
cdev | m_DeviceObject |
bool | m_bDeviceRegistered |
unsigned | m_RegisteredMinors |
Static Private Attributes | |
static file_operations __bzslib_extern | m_FileOperations |
static Initializer __bzslib_extern | m_Initializer |
typedef Device BazisLib::Linux::BasicCharacterDevice::__super [private] |
__bzslib_extern BazisLib::Linux::BasicCharacterDevice::BasicCharacterDevice | ( | const char * | pszDeviceName | ) | [protected] |
__bzslib_extern BazisLib::Linux::BasicCharacterDevice::~BasicCharacterDevice | ( | ) | [protected] |
LKSTATUS __bzslib_extern BazisLib::Linux::BasicCharacterDevice::AllocateDeviceNumbers | ( | unsigned | MinorCount = 1 , |
|
unsigned | FirstMinor = 0 | |||
) | [protected] |
Allocates a linux character device number. If current device has already allocated a number, this method returns a -EALREADY status code.
virtual file_operations* BazisLib::Linux::BasicCharacterDevice::GetFileOperations | ( | ) | [inline, virtual] |
bool __bzslib_extern BazisLib::Linux::BasicCharacterDevice::HasDeviceNumber | ( | ) | [inline, protected] |
static void __bzslib_extern BazisLib::Linux::BasicCharacterDevice::InitializeFileOperations | ( | file_operations * | pOperations, | |
module * | pOwner = THIS_MODULE | |||
) | [static, protected] |
virtual LKSTATUS __bzslib_extern BazisLib::Linux::BasicCharacterDevice::OnClose | ( | struct inode * | pInode, | |
struct file * | pFile | |||
) | [inline, protected, virtual] |
Reimplemented in BazisLib::Linux::BasicUsbCharacterDevice.
virtual LKSTATUS __bzslib_extern BazisLib::Linux::BasicCharacterDevice::OnIoctl | ( | struct inode * | pInode, | |
struct file * | pFile, | |||
unsigned int | num, | |||
unsigned long | param | |||
) | [inline, protected, virtual] |
Reimplemented in BazisLib::Linux::BasicUsbCharacterDevice.
virtual LKSTATUS __bzslib_extern BazisLib::Linux::BasicCharacterDevice::OnOpen | ( | struct inode * | pInode, | |
struct file * | pFile | |||
) | [inline, protected, virtual] |
Reimplemented in BazisLib::Linux::BasicUsbCharacterDevice.
virtual ssize_t __bzslib_extern BazisLib::Linux::BasicCharacterDevice::OnRead | ( | struct file * | pFile, | |
UserBuffer | Buffer, | |||
size_t | lSize, | |||
loff_t | Offset | |||
) | [inline, protected, virtual] |
Reimplemented in BazisLib::Linux::BasicTextDevice, and BazisLib::Linux::BasicUsbCharacterDevice.
virtual ssize_t __bzslib_extern BazisLib::Linux::BasicCharacterDevice::OnWrite | ( | struct file * | pFile, | |
UserBuffer | Buffer, | |||
size_t | lSize, | |||
loff_t | Offset | |||
) | [inline, protected, virtual] |
Reimplemented in BazisLib::Linux::BasicTextDevice, and BazisLib::Linux::BasicUsbCharacterDevice.
LKSTATUS __bzslib_extern BazisLib::Linux::BasicCharacterDevice::RegisterCharacterDeviceObject | ( | unsigned | MinorCount = 1 , |
|
module * | pOwner = THIS_MODULE | |||
) | [protected] |
This method initializes the cdev structure and registers the device object within Linux kernel. If the device number was not allocated before this method call, it is automatically allocated using AllocateDeviceNumbers method.
virtual LKSTATUS __bzslib_extern BazisLib::Linux::BasicCharacterDevice::RegisterDevice | ( | class Driver * | pDriver | ) | [override, virtual] |
This method registers the character device within the system. Currently, it calls Device::RegisterDevice(), allocates a device number and registers the character device.
Reimplemented from BazisLib::Linux::Device.
static int __bzslib_extern BazisLib::Linux::BasicCharacterDevice::s_ioctl | ( | struct inode * | pInode, | |
struct file * | pFile, | |||
unsigned | CtlCode, | |||
unsigned long | Parameter | |||
) | [static, private] |
static int __bzslib_extern BazisLib::Linux::BasicCharacterDevice::s_open | ( | struct inode * | pInode, | |
struct file * | pFile | |||
) | [static, private] |
static ssize_t __bzslib_extern BazisLib::Linux::BasicCharacterDevice::s_read | ( | struct file * | pFile, | |
char __user * | pBuffer, | |||
size_t | lSize, | |||
loff_t * | pOffset | |||
) | [static, private] |
static int __bzslib_extern BazisLib::Linux::BasicCharacterDevice::s_release | ( | struct inode * | pInode, | |
struct file * | pFile | |||
) | [static, private] |
static ssize_t __bzslib_extern BazisLib::Linux::BasicCharacterDevice::s_write | ( | struct file * | pFile, | |
const char __user * | pBuffer, | |||
size_t | lSize, | |||
loff_t * | pOffset | |||
) | [static, private] |
bool BazisLib::Linux::BasicCharacterDevice::m_bDeviceRegistered [private] |
dev_t BazisLib::Linux::BasicCharacterDevice::m_DeviceNumber [private] |
Allocated device number. Freed on device deletion.
cdev BazisLib::Linux::BasicCharacterDevice::m_DeviceObject [private] |
file_operations __bzslib_extern BazisLib::Linux::BasicCharacterDevice::m_FileOperations [static, private] |
Initializer __bzslib_extern BazisLib::Linux::BasicCharacterDevice::m_Initializer [static, private] |
unsigned BazisLib::Linux::BasicCharacterDevice::m_MinorCount [protected] |
unsigned BazisLib::Linux::BasicCharacterDevice::m_RegisteredMinors [private] |