On Sat, Jul 20, 2013 at 2:04 PM, Don Raikes <don.raikes@oracle.com> wrote:
Hello all,****
** **
I am very new to kernel programming. In fact, I have been working on it for a week now.****
** **
I am taking a computer science class, and one of our assignments is to hook some of the system calls in a 2.6.28 kernel.****
** **
I have the basic module created, and I am hooking into the sys_read function. The assignment is to print to the log what is being read using sys_read.****
** **
I have some checks in my function to limit my printing to only a certain file, so I don’t get the contents of every file being read on the system.* ***
** **
OnceI know I have the right file, I decided to print the size of the buffer.****
** **
The function signature is:****
** **
Asmlinkage long sys_read(unsigned int fd, char __user *buf, size_t count); ****
** **
So I do:****
** **
Printk(KERN_INFO “Read buffer is [%d] bytes.\n”,count);****
** **
The particular file I am reading has 2 lines the first is 14 bytes long and the second is 30 bytes long.****
** **
The output from my printk statements are 8192 and 4096 respectively.****
Why is the count so large?
I think it is the size of one PAGE.I think reading from sys_read is PAGE aligned.Just print the size of the page and i think it will be 4K.
****
** **
Also I do a strlen(buf) and print the value as well, and it is 29 and 16 respectively.****
** **
Next I did copy_from_user(tbuf,buf,strlen(buf))****
And tried to print the contents of the buffer but it came out garbage.****
** **
Does anyone have any ideas how I can get this to work?****
** **
BTW: the assignment is due on Sunday so any help would be aappreciated.*** *
** **
** **
** **
-- Best Regards, Donald****
[image: Oracle] <http://www.oracle.com/> Donald raikes | Accessibility Specialist/ QA Engineer Phone: +15202717608 | Mobile: +15202717608 Oracle Quality Assurance | Tucson, Arizona ****
[image: Green Oracle] <http://www.oracle.com/commitment>****
Oracle is committed to developing practices and products that help protect the environment****
** **
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies