BazisLib::Linux::BasicCharacterDevice Class Reference

#include <chardev.h>

Inherits BazisLib::Linux::Device.

Inherited by BazisLib::Linux::BasicTextDevice, and BazisLib::Linux::BasicUsbCharacterDevice [private].

Collaboration diagram for BazisLib::Linux::BasicCharacterDevice:

Collaboration graph
[legend]

List of all members.

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


Member Typedef Documentation


Member Enumeration Documentation

anonymous enum [private]

Enumerator:
BAD_DEVICE_NUMBER 


Constructor & Destructor Documentation

__bzslib_extern BazisLib::Linux::BasicCharacterDevice::BasicCharacterDevice ( const char *  pszDeviceName  )  [protected]

__bzslib_extern BazisLib::Linux::BasicCharacterDevice::~BasicCharacterDevice (  )  [protected]


Member Function Documentation

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.

Remarks:
An allocated device number is automatically freed on device deletion, so no further action is required to maintain it.

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]

virtual LKSTATUS __bzslib_extern BazisLib::Linux::BasicCharacterDevice::OnIoctl ( struct inode *  pInode,
struct file *  pFile,
unsigned int  num,
unsigned long  param 
) [inline, protected, virtual]

virtual LKSTATUS __bzslib_extern BazisLib::Linux::BasicCharacterDevice::OnOpen ( struct inode *  pInode,
struct file *  pFile 
) [inline, protected, virtual]

virtual ssize_t __bzslib_extern BazisLib::Linux::BasicCharacterDevice::OnRead ( struct file *  pFile,
UserBuffer  Buffer,
size_t  lSize,
loff_t  Offset 
) [inline, protected, virtual]

virtual ssize_t __bzslib_extern BazisLib::Linux::BasicCharacterDevice::OnWrite ( struct file *  pFile,
UserBuffer  Buffer,
size_t  lSize,
loff_t  Offset 
) [inline, protected, virtual]

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]


Member Data Documentation

Allocated device number. Freed on device deletion.

file_operations __bzslib_extern BazisLib::Linux::BasicCharacterDevice::m_FileOperations [static, private]


The documentation for this class was generated from the following file:
SourceForge.net Logo