Linux Device Drivers Interview Questions & Answers

5 avg. rating (100% score) - 5879 votes

Linux Device Drivers Interview Questions & Answers

Linux Device Drivers jobs are one of a kind that challenges your skills to the full extent. If you are looking for an LDD job then log in to wisdom jobs to see the number of jobs that match your criteria. Generally, device drivers are defined as a program that handles or controls hardware devices that are attached to a computer. LDD is software that manages a shared library of memory resident, privileged and low-level hardware operational routines. LDD jobs require experience in Linux Kernel, Strong C programming, USB, and ETHERNET4 etc. LDD jobs are offered for various positions such as Linux Kernel developer, Device driver developer, and software engineer etc in popular cities of India. By accessing Linux Device Drivers job interview questions and answers page to fully utilize your skills for the interview. To know about latest job notifications, log in to our job portal.

Linux Device Drivers Interview Questions

Linux Device Drivers Interview Questions
    1. Question 1. What Is Mknod And It's Usage ?

      Answer :

      mknod is a command  which used create the device file (or) node in Linux file system.

      In unix or linux we will represent everything as a file .

      syntax: mknod Name { b | c }  Major  Minor

      Name : name of the device file

      { b | c } : type of device (ex; char or block device)

      Major  : Major number of the device file

      Minor  : Minor number of the device file

      ex : $  mknod /dev/rama  c  12  5

      MKDEV(int major, int minor);

    2. Question 2. In How Many Ways We Can Allocate Device Number ?

      Answer :

      In 2 ways we can allocate device numbers

      1. statically
      2. dynamically

    3. Question 3. How Can We Allocate Device Number Statically ?

      Answer :

      register_chrdev_region() function will statically allocate device numbers. which is declared in <linux/fs.h>

      int register_chrdev_region(dev_t first, unsigned int count, char *name);

      Return values : In case of success "0" will return , In case of failure  "-1 or negative value " will return 


      1. first is the beginning device number of the range you would like to allocate. The minor number portion of first is often 0.
      2. count is the total number of contiguous device numbers you are requesting.
      3. name is the name of the device that should be associated with this number range. it will appear in /proc/devices and sysfs.

    4. Question 4. How Can We Allocate Device Number Dynamically ?

      Answer :

      alloc_chrdev_region()will dynamically  allocate device numbers.

      int alloc_chrdev_region(dev_t *dev, unsigned int firstminor, 

                              unsigned int count, char *name);


      1. dev is an output-only parameter that will, on successful completion, hold the first number in your allocated range. 
      2. firstminor should be the requested first minor number to use; it is usually 0
      3. count is the total number of contiguous device numbers you are requesting.
      4. name is the name of the device that should be associated with this number range. it will appear in /proc/devices and sysfs.

    5. Question 5. How Can We Free Device Numbers ?

      Answer :

      void unregister_chrdev_region(dev_t first, unsigned int count);

    6. Question 6. What Is Major Number And It's Usage ?

      Answer :

      It's an  integer number  mainly used to provide the association between the device driver and device file . this number is used by kernel .


      The major number tells you which driver handles which device file. 

    7. Question 7. Can We Have Same Major Number For More Than One Device File ?

      Answer :

      yes . we can have .

    8. Question 8. What Is Minor Number And It's Usage ?

      Answer :

      The minor number is used only by the driver itself to differentiate which device it's operating on, just in case the driver handles more than one device.


      one driver can control more than one device .minor will be used to distinguish the one device from other devices   .

    9. Question 9. What Is Range Of Major And Minor Numbers?

      Answer :


    10. Question 10. What Is Use Of Dev_t Type ?

      Answer :

      This is used to hold device numbers—both the major and minor parts.

    11. Question 11. How To Retrieve Major And Minor Number From Dev_t Type ?

      Answer :

      To obtain the major or minor number  of a dev_t, use:

      MAJOR(dev_t dev); // to obtain major number

      MINOR(dev_t dev);  // to obtain minor number

      int major=MAJOR(dev_t dev);

      int minor =MINOR(dev_t dev);

    12. Question 12. How Can I Use My Own Major And Minor Number For A Device File ?

      Answer :

      if you have the major and minor numbers and need to turn them into a dev_t, use:

      register_chrdev_region works well if you know ahead of time exactly which device numbers you want. Often, however, you will not know which major numbers your device will use; there is a constant effort within the Linux kernel development community to move over to the use of dynamically-allocated device numbers.

    13. Question 13. How To See Statically Assigned Major Numbers ?

      Answer :

      Some major device numbers are statically assigned to the most common devices. A list of those devices can be found in Documentation/devices.txt within the kernel source tree.

    14. Question 14. What Is The Disadvantage Of Dynamic Device Number Assignment ?

      Answer :

      The disadvantage of dynamic assignment is that you can't create the device nodes in advance, because the major number assigned to your module will vary.

    15. Question 15. Where Can We Write Allocation And Freeing Of Device Number's Code ?

      Answer :

      allocation : init function of a module

      freeing : cleanup function of a module

Linux Tutorial

Linux Device Drivers Practice Tests

All rights reserved © 2018 Wisdom IT Services India Pvt. Ltd Protection Status

Linux Tutorial