I am trying to make linux kernel module to read two files and match data between them. I am unable to do so because of syntax as well as header library problems.
Can you please provide me a code which can help me to complete this task ASAP.

I am using Ubuntu.

I have tried to code but am getting lot of errors.

#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/fs.h>
//#include <linux/stdio.h>
//#include <stdlib.h>
//#include <linux/uaccess.h>
//#include <stdio.h>
//#include <linux/proc_fs.h>

//Maximum size of the array
#define MAX_SIZE 200
typedef struct
int pos;
int line;
} sMismatchingPos;
ssize_t proc_read(const FILE *fp1, const FILE *fp2,sMismatchingPos *psMismatchPos)
// pos and line to track of position of mismatch
int pos = 0, line = 1;
int ch1 =0, ch2 = 0;
int isContentMatch = 0;
// iterate loop until EOF
//fetch character of both file
ch1 = fgetc(fp1);
ch2 = fgetc(fp2);
// if both variable encounters new
// line then line variable is incremented
// and pos variable is set to 0
if ((ch1 == '\n') && (ch2 == '\n'))
pos = 0;
//update structure variable
psMismatchPos->pos = pos;
psMismatchPos->line = line;
// if fetched data is not equal then
// set the mismatched flag
if(ch1!= ch2)
isContentMatch =1;
while (ch1 != eof && ch2 != eof);
//return flag status
return isContentMatch;

int init_close_module()
printk(" Kernel Panic \n");
return 0;

int init_module()
//file pointers
FILE *fp1 = NULL;
FILE *fp2 = NULL;
//structure variable
sMismatchingPos misMatchPos = {0};
int isContentMatch = 0;
// opening both file in read only mode
fp1 = fopen("aticleworld1.txt", "r");
fp2 = fopen("aticleworld2.txt", "r");
//checking file open or not
if (fp1 == NULL || fp2 == NULL)
printk("Error : Files not open");
//if 1, then file mismatch
isContentMatch = proc_read(fp1, fp2,&misMatchPos);


printk("Both files are different\n");

//print line and pos where both file mismatch
// printf("Line Number : %d \n",misMatchPos.line);
// printf("Position : %d \n",misMatchPos.pos);
printk("Both files are same\n");
// closing both file
return 0;

In the above code,
I am getting problems in header files.

Errors which I am getting is :
1- Unknown type name FILE
2- implicit declaration of function ‘fgetc’ [-Werror=implicit-function-declaration]
ch1 = fgetc(fp1);
3- ‘eof’ undeclared (first use in this function)
while (ch1 != eof && ch2 != eof);

4- implicit declaration of function ‘fopen’ [-Werror=implicit-function-declaration]
fp1 = fopen("aticleworld1.txt", "r");

5- assignment makes pointer from integer without a cast [enabled by default]
fp1 = fopen("aticleworld1.txt", "r");

6- implicit declaration of function ‘exit’ [-Werror=implicit-function-declaration]

Members online

Latest posts