Description
Assignment Description Part 1
The first task is to implement the Kernel Data Structures assignment on page 99-101 of the
textbook using the Linux include files, macros, and sample code provided as a reference. You should
output to the kernel module a simple statement of ‘Adding Birthday Day:# Month:# Year:#’ each time
you create a new node on the linked list. The # should be the same as what is in the example figure
below. Ensure that your code is working properly by checking the contents of the kernel buffer for the
appropriate output messages. When deleting the nodes from the linked list you should similarly output
a message for each deleted node of ‘Deleting Birthday Day:# Month:# Year:#’. For deleting the elements
from the list, you should do this in reverse order, instead of the way the book does it. See the figure
below for an example of what your kernel buffer should look like after loading and removing your kernel
module.
I have provided a Makefile to help you to build your kernel module. Place the provided Makefile into
your work directory and update it with the appropriate object file name for your submission.
Assignment Description Part 2
The second task for your assignment is to repeat the first task, but to instead implement your
own versions of the functions for building a linked list. You must replace any functions/macros that
come from the types.h or lists.h with your own functions. Your second solution should build a circular
doubly-linked list and repeat the same process of adding five elements and traversing those elements
when the kernel module is loaded and traversing the list and removing the elements in reverse order
when the kernel module is removed. Be sure to remember to free the kernel memory in each task.
Submission
The assignment is due Tuesday, October 2 @ 11:59pm and should following the name scheme
ppape_CSCI4300_HW1A.c and ppape_CSCI4300_HW1B.c where you would use your own first initial and
last name instead of ‘ppape’. You should submit your solution to part 1 as HW1A and part 2 as HW1B.