Skip to content

A simple fifo-like linux kernel module, meant as a learning exercise.

License

Notifications You must be signed in to change notification settings

natebragg/ipcdevice

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

The goal of this project is to:

Implement a Linux kernel character device driver to pass messages between two
processes.  The message passing should be bi-directional.  Also implement a
series of ioctls that can transform the messages as they pass through the
kernel:

1) An ioctl to ROT13 encode the message.
2) An ioctl to base64 encode the message.
3) An ioctl to reverse the message.

----

For the sake of disclosure, my references for this project include the following:

http://www.freesoftwaremagazine.com/articles/drivers_linux
http://www.xml.com/ldd/chapter/book/ch05.html
drivers/char/generic_nvram.c, drivers/char/raw.c (and a few others)
Documentation/ioctl/ioctl-number.txt
http://www.makelinux.net/ldd3/chp-3-sect-4
http://lwn.net/Articles/119652/

----

Before first use, add a udev rule - something like this:

echo "KERNEL==\"ipcdevice\",    MODE:=\"666\"" > /etc/udev/rules.d/99-ipcdevice.rules

To use:

make
make demo_p_c
make demo_duplex
insmod ipcdevice.ko
./demo_p_c -f corpora/lipsum_biggest
./demo_duplex $(cat corpora/lipsum_small)
# to test the IOCTLs, use any combination of -13, -r and -64:
./demo_p_c -13 -f corpora/lipsum_small
rmmod ipcdevice

About

A simple fifo-like linux kernel module, meant as a learning exercise.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages