What does a user-space application generally do w.r.t the other file-system resource (other then interacting with user)? Reading some configuration file, or flushing logs. Let's say we are browsing internet in our chrome, then chrome would be ultimately operating on the network socket files (there may be some hierarchy). Let's say we played some song in VLC player, ultimately our VLC will read the mp3 file, write the data to some audio device file, after which the audio driver will get the data and configs the corresponding CODEC register to get the audio output. Now, for all the operation above, for an user-space the resources (mp3, device file, socket file, log file) will look like a file. Thus the application would do nothing more then calling open, read, write which are file based operations. For a user-space application, a kernel device driver also looks like a file ( /dev/demochardrv ) In this article we will focus on how to achieve these file based operation ...