EmbLogic's Blog

Author Archives: deepak.jain

PIPE : IPC mechanism

Pipe is a method of creating the standard output of one process to the standard input of another process.When a process creates a pipe using pipe() system call , the pipe() system call finds the first two available file-descriptors in … Continue reading

Posted in Project 03: Client Server Communication using Linux and IPC | Leave a comment

Module code to show how to implement a semaphore(a type of locking technique) in scull to synchronize same operations issued by multiple applications.

Semaphore in Scull Scenario :Writer application must execute before the reader application. There are two applications which have to perform several operations on the node 1. Application 1: Application 1 is a multithreaded application in which open() , write() and … Continue reading

Posted in Character Driver, Device Drivers | Leave a comment

Rotating a single linked list by k-nodes in counter-clockwise direction in C language.

RCS file: rotate_linked_list.c,v Working file: rotate_linked_list.c head: 1.14 branch: locks: strict root: 1.14 access list: symbolic names: keyword substitution: kv total revisions: 14;    selected revisions: 14 description: Code to demonstrate how to rotate the single linked list counter clockwise by … Continue reading

Posted in Data Structures with C | Leave a comment

Implementation of a generic double linked list in C.

RCS file: generic_double_linkedlist.c,v Working file: generic_double_linkedlist.c head: 1.15 branch: locks: strict access list: symbolic names: keyword substitution: kv total revisions: 15;    selected revisions: 15 description: Code to demonstrate how to implement create , insert , display and delete operations in … Continue reading

Posted in Data Structures with C | Leave a comment

Module code showing the difference between *loff and filep->f_pos when multiple write() system calls are issued by the application.

  Difference between loff_t *loff and filep->f_pos: When an application issues write() system call , chardev_write() function is called because it is mapped to (*write) function pointer.chardev_write() function contains 4 arguments namely: 1. A pointer to the struct file structure. … Continue reading

Posted in Character Driver, Device Drivers | Leave a comment

Module code to show how to perform read operation in multiple qset arrays.

RCS file: readf.c,v Working file: readf.c head: 1.18 branch: locks: strict root: 1.18 access list: symbolic names: keyword substitution: kv total revisions: 18;    selected revisions: 18 description: chardev_read() function reside here which is responsible for performing the read operation. —————————- … Continue reading

Posted in Character Driver, Device Drivers | Leave a comment

Module code to show how to perform read operation in multiple quantums.

RCS file: readf.c,v Working file: readf.c head: 1.14 branch: locks: strict access list: symbolic names: keyword substitution: kv total revisions: 14;    selected revisions: 14 description: chardev_read() function reside here which is responsible for performing the read operation. —————————- revision 1.14 … Continue reading

Posted in Character Driver, Device Drivers | Leave a comment

Module code showing how to read data in a single quantum using copy_to_user() function.

RCS file: readf.c,v Working file: readf.c head: 1.11 branch: locks: strict root: 1.11 access list: symbolic names: keyword substitution: kv total revisions: 11;    selected revisions: 11 description: chardev_read() function is implemented here in this file. —————————- revision 1.11    locked by: … Continue reading

Posted in Character Driver, Device Drivers | Leave a comment

Module code showing how to write data in multiple quantums from a user application.

RCS file: writef.c,v Working file: writef.c head: 1.19 branch: locks: strict root: 1.19 access list: symbolic names: keyword substitution: kv total revisions: 19;    selected revisions: 19 description: chardev_write() function reside here. —————————- revision 1.19    locked by: root; date: 2014/03/03 19:00:50;  … Continue reading

Posted in Character Driver, Device Drivers | Leave a comment

Module code showing how to write data in multiple qset arrays from a user application.

RCS file: writef.c,v Working file: writef.c head: 1.37 branch: locks: strict root: 1.37 access list: symbolic names: keyword substitution: kv total revisions: 37;    selected revisions: 37 description: chardev_write() function reside here. —————————- revision 1.37    locked by: root; date: 2014/03/04 18:55:04;  … Continue reading

Posted in Character Driver, Device Drivers | Leave a comment

Module code to show how to perform “trim” operation by calling chardev_trim() before the device is opened for writing.

RCS file: openf.c,v Working file: openf.c head: 1.14 branch: locks: strict root: 1.14 access list: symbolic names: keyword substitution: kv total revisions: 14;    selected revisions: 14 description: The functionality of chardev_open() is implemented here inside this file.Whenever the application calls … Continue reading

Posted in Character Driver, Device Drivers | Leave a comment

Module code to show how to write data in a single quantum using copy_from_user() function.

RCS file: writef.c,v Working file: writef.c head: 1.15 branch: locks: strict root: 1.15 access list: symbolic names: keyword substitution: kv total revisions: 15;    selected revisions: 15 description: chardev_write() function reside here. —————————- revision 1.15    locked by: root; date: 2014/03/01 11:19:07;  … Continue reading

Posted in Character Driver, Device Drivers | Leave a comment

Module code to show how to use container_of() macro inside driver’s open function and storing the return value of container_of() inside filep->private_data.

RCS file: openf.c,v Working file: openf.c head: 1.6 branch: locks: strict root: 1.6 access list: symbolic names: keyword substitution: kv total revisions: 6;    selected revisions: 6 description: The functionality of chardev_open() is implemented here inside this file.Whenever the application calls … Continue reading

Posted in Character Driver, Device Drivers | Leave a comment

module code to show how to perform an open and release operation, when an application issues open() and close() system call.

RCS file: header.h,v Working file: header.h head: 1.16 branch: locks: strict root: 1.16 access list: symbolic names: keyword substitution: kv total revisions: 16;    selected revisions: 16 description: Base header file that includes the definitions of all the macros,structures and contains … Continue reading

Posted in Character Driver, Device Drivers | Leave a comment

module code to show how an open operation is performed on the device file when an application calls ” open() function”.

RCS file: header.h,v Working file: header.h head: 1.16 branch: locks: strict root: 1.16 access list: symbolic names: keyword substitution: kv total revisions: 16;    selected revisions: 16 description: Base header file that includes the definitions of all the macros,structures and contains … Continue reading

Posted in Character Driver, Device Drivers | Leave a comment