Reader small image

You're reading from  Linux Device Drivers Development

Product typeBook
Published inOct 2017
Reading LevelIntermediate
PublisherPackt
ISBN-139781785280009
Edition1st Edition
Languages
Right arrow
Author (1)
John Madieu
John Madieu
author image
John Madieu

John Madieu is an embedded Linux and kernel engineer living in Paris, France. His main activities consist of developing device drivers and Board Support Packages (BSPs) for companies in domains such as IoT, automation, transport, healthcare, energy, and the military. John is the founder and chief consultant at LABCSMART, a company that provides training and services for embedded Linux and Linux kernel engineering. He is an open source and embedded systems enthusiast, convinced that it is only by sharing knowledge that we can learn more. He is passionate about boxing, which he practiced for 6 years professionally, and continues to channel this passion through training sessions that he provides voluntarily.
Read more about John Madieu

Right arrow

Allocating and registering a character device

Character devices are represented in the kernel as instances of struct cdev. When writing a character device driver, your goal is to finally create and register an instance of that structure associated with struct file_operations, exposing a set of operations (functions) the user space can perform on the device. To reach that goal, there are some steps we must go through, which are as follows:

  1. Reserve a major and a range of minors with alloc_chrdev_region().
  2. Create a class for your devices with class_create(), visible in /sys/class/.
  3. Set up a struct file_operation (to be given to cdev_init), and for each device you need to create, call cdev_init() and cdev_add() to register the device.
  4. Then, create a device_create() for each device, with a proper name. It will result in your device being created in the /dev directory:
...
lock icon
The rest of the page is locked
Previous PageNext Page
You have been reading a chapter from
Linux Device Drivers Development
Published in: Oct 2017Publisher: PacktISBN-13: 9781785280009

Author (1)

author image
John Madieu

John Madieu is an embedded Linux and kernel engineer living in Paris, France. His main activities consist of developing device drivers and Board Support Packages (BSPs) for companies in domains such as IoT, automation, transport, healthcare, energy, and the military. John is the founder and chief consultant at LABCSMART, a company that provides training and services for embedded Linux and Linux kernel engineering. He is an open source and embedded systems enthusiast, convinced that it is only by sharing knowledge that we can learn more. He is passionate about boxing, which he practiced for 6 years professionally, and continues to channel this passion through training sessions that he provides voluntarily.
Read more about John Madieu