Results 1 to 2 of 2
Hi,
I wrote small code in read_write.c in linux-2.6.35.4/fs/. I am trying to retrieve entire path of some file where read operation is being performed. I changed 'SYSCALL_DEFINE3(read, unsigned int, ...
Enjoy an ad free experience by logging in. Not a member yet? Register.
- 11-19-2010 #1Just Joined!
- Join Date
- Nov 2006
- Posts
- 9
kernel code not working
Hi,
I wrote small code in read_write.c in linux-2.6.35.4/fs/. I am trying to retrieve entire path of some file where read operation is being performed. I changed 'SYSCALL_DEFINE3(read, unsigned int, fd, char __user *, buf, size_t, count)' to call my function 'getEntirePath(file->f_dentry, path, &length)'.
The definition of getEntirePath is as follows:
This code takes the dentry *self as input parameter and should trace back the path up to '/'.Code:void getEntirePath(struct dentry *self, char *filePath, int *length) { int i=0; //int offset; int MAX_PATH_DEPTH=30; char stack[MAX_PATH_DEPTH][40]; do { strcpy(stack[i], self->d_name.name); printk("swapnil: Dir::%s",stack[i]); if(i!=0 && stack[i][0]!='/') { stack[i][self->d_name.len]='/'; } self=self->d_parent; }while(stack[i++][0]!='/' && i<MAX_PATH_DEPTH); while(i>0) strcat(filePath,stack[--i]); *length=strlen(filePath); }
This code hangs as soon as I enable it through a driver. Also I want to know from which function I should call this code for getting the entire path of file being read/written? I called it from vfs_write/vfs_read, do_sync_write/do_sync_read, but the function is not getting called each time some file is read/wrote.
Thanks for help.
- 11-29-2010 #2Just Joined!
- Join Date
- Nov 2006
- Posts
- 9
Someone please answer, my project is stuck due to this.


Reply With Quote
