Thanks for your help. I use another apporach to communicate with module,
similiar to the method you stated above.
What I did in the kernel source,
1. In fs.h, I added one line in struct super_operations
int (*query_module) (struct inode *);
2. In write_inode() of inode.c, added
result = inode->i_sb->s_op->query_module(inode);
What I did in the module,
1. Build up my own function, kernel_query_module(struct inode *inode)
2. In init_module(), added
struct super_block *sb_ptr;
sb_ptr = get_super(MKDEV(8,1)); /* suppose I want to
get super_block of /dev/sda1 */
sb_ptr -> s_op -> query_module = &kernel_query_module;
Then, I compile the module and didi not get error message
When I compile the kernel, I got the follow error message,
inode.c:195: structure has no member named `query_module'
It made me crazy. Why the module can access the s_op and register the
address of kernel_query_module, but not the kernel source? I already added
one more item in the struct super_operation, but got the error message the
struct has no such member.
Any thing I missed? Thanks.
-
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to majo...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html