How to create a device in /dev automatically upon loading of the kernel module for a device driver?

时光怂恿深爱的人放手 提交于 2019-11-28 09:13:52
  • Include the header file linux/device.h and linux/kdev_t.h

  • static struct class c_dev;

  • static struct dev_t dev;

Add the below API 's inside __init fuction of the driver

  • cl = class_create(THIS_MODULE ,"x");

where x - Name to be displayed inside /sys/class/ when driver is loaded.

  • Use device_create () kernel api with device_create(cl, NULL, dev, NULL, "d");

where d - device file to be created under /dev.

where dev is variable for the first device number that is initialized during the usage of alloc_chrdev_region API for dynamic allocation of major number for the driver

For Further reference please go through the link http://opensourceforu.com/2011/04/character-device-files-creation-operations/

You may have to create some udev rules to tell the system what device node(s) you need it to create.

Shash316

I could see entries within /dev after creating node by running following command at console.

sudo mknod -m 0666 /dev/msio c 22 0

The user was not root, so I had to use sudo. My entry name was msio, a character device with major and minor number 22, 0 respectively.

I will let you know if this can be achieved programatically.

CONFIG_DEVTMPFS is quite nice if you can use that with your distro. You can have the kernel automount that for you at boot (CONFIG_DEVTMPFS_MOUNT) or mount it manually (mount -t devtmpfs none /dev).

First you have to use : sudo mknod /dev/devicename c 81 0

It creates device file in /dev but you have to give it read/write permission. to do so,

sudo chmod 777 /dev/devicename

Done !!!

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!