/*Tested on kernel 5.3*/

#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/proc_fs.h>
#include<linux/sched.h>
#include <asm/uaccess.h>
#include<linux/sched/clock.h>	
#include<linux/slab.h>


int len;

char *msg;
ssize_t size;
struct timespec ts;
u64 inittime;

ssize_t read_proc(struct file *filp,char *buf,size_t count,loff_t *offp ) 
{

u64 time=sched_clock();
char *temp;
temp=kmalloc(50*sizeof(char),GFP_KERNEL);
sprintf(temp,"%lld",time);
len=strlen(temp);
size=sizeof(char)*len;

return simple_read_from_buffer(buf,count,offp,temp,size);
}

struct file_operations proc_fops = {
read:	read_proc
};
void create_new_proc_entry(void) 
{
msg="hello";
size=strlen(msg);
proc_create("hello",0,NULL,&proc_fops);
inittime=sched_clock();

}


int proc_init (void) {
	create_new_proc_entry();
	return 0;
}

void proc_cleanup(void) {
		remove_proc_entry("hello",NULL);
}

MODULE_LICENSE("GPL");	
module_init(proc_init);
module_exit(proc_cleanup);