Question: C programming: My code is not running correctly and I am sure what's wrong. Please help. I have provided a screenshot and everything below. Assignment:
C programming: My code is not running correctly and I am sure what's wrong. Please help. I have provided a screenshot and everything below.
Assignment:
-
Design a kernel module that creates a /proc file named /proc/jiffies that reports the current value of jiffies when the /proc/jiffies file is read, such as with the command
cat /proc/jiffies Be sure to remove /proc/jiffies when the module is removed.
Source Code:
jiffies.c
#include
#include
#include
#include
#define PROC_NAME "jiffies"
/* File operation on proc */ static struct file_operations proc_ops = { .owner=THIS_MODULE, .read=proc_read, };
/* This function is called when the module is loaded. */
int proc_init(void)
{
/* creates the /proc/jiffies entry */
proc_create(PROC_NAME, 0666, NULL, &proc_ops);
return 0;
}
/* This function is called when the module is removed. */
void proc_exit(void)
{
/* removes the /proc/jiffies entry */
remove_proc_entry(PROC_NAME, NULL);
}
/* This function is called each time /proc/jiffies is read */
ssize_t proc_read(struct file *file, char __user *usr_buf, size_t count, loff_t *pos)
{
int rv = 0;
char buffer[BUFFER_SIZE];
static int completed = 0;
if (completed) {
completed = 0;
return 0;
}
completed = 1;
rv = sprintf(buffer, "%lu ", jiffies);
/* copies kernel space buffer to user space usr buf */
copy_to_user(usr_buf, buffer, rv);
return rv;
}
Makefile
obj-m += jiffies.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
