0% found this document useful (0 votes)
118 views11 pages

Device Driver Presentation

This document discusses character device drivers in Linux. It begins by explaining that character devices provide unbuffered, synchronous access to transfer byte streams directly from the kernel to user space. It then covers how character devices are represented as device files that can be accessed like regular files, and how the driver resides in kernel space but interfaces with user space applications through these device files. The document also provides examples of registering a character device driver and controlling devices through ioctl calls.

Uploaded by

mridul mayank
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
118 views11 pages

Device Driver Presentation

This document discusses character device drivers in Linux. It begins by explaining that character devices provide unbuffered, synchronous access to transfer byte streams directly from the kernel to user space. It then covers how character devices are represented as device files that can be accessed like regular files, and how the driver resides in kernel space but interfaces with user space applications through these device files. The document also provides examples of registering a character device driver and controlling devices through ioctl calls.

Uploaded by

mridul mayank
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 11

Character device drivers

Praktikum „Kernel Programming“

December 17, 2014 - Albrecht Oster, Walter König


Outline

• What is a character device driver?

• How can we use it?

• What does it look like?

• Let’s write our own!

2
What is a character device driver?

• two common types: character devices and block devices

• character devices are byte-oriented

• transfers a stream of bytes directly from kernel to user space

• unbuffered and synchronous access

• basic I/O (real serial devices, virtual devices)

3
Examples for character devices

• most common type of device driver

• is represented as a device file (e.g. /dev/ttyS0)

• can be used like a regular file from user space

• open, read, write, close

4
How does it fit in the Linux architecture?

• remains in kernel space

• used by user space apps through the


device file in the VFS

• usual file operations

• outcome may differ

• the driver has final low level access to the


actual device

5
How does it fit in the Linux architecture?

• four entities involved

• user space app

• character device file (virtual file system)

• character device driver (kernel space)

• actual character device

6
Loading / Unloading

• module_init(function_ref)

• module_exit(function_ref)

• insmod loads the driver

• rmmod unloads the driver

7
Registering a device file

• devices are referred to by major and minor numbers

• int register_chrdev(unsigned int major, const char *name, struct


file_operations *fops);

• driver is registered to one major number

• several instances of the same driver are distinguished by minor


numbers

• can define file operations it supports

8
ioctl

• represents a way to control the device itself

• every device can have its own ioctl commands

• defined in file operations struct

• used by a user space app with a file descriptor and macro from
header files

• int ioctl(int file_handle, int request, char *data);

9
• blocking I/O

• restricting access to the device

• single-user lock

• system-wide lock

• „device busy“

10
Literature
• „Character Device Drivers“

http://linux.die.net/lkmpg/x569.html

• „Enhanced Char Driver Operations"



http://www.xml.com/ldd/chapter/book/ch05.html

• Wikipedia: „Device File“



http://en.wikipedia.org/wiki/Device_file

• „Decoding Character Device File Operations"



http://www.opensourceforu.com/2011/05/decoding-character-device-file-operations/

• „I/O Control in Linux“



http://www.opensourceforu.com/2011/08/io-control-in-linux/

• „Mknod"

http://linuxwiki.de/mknod

11

You might also like