Hi,
When the inode of a file is created?Whether on creation time or at
opening time.
Because I am writing a driver and testing it.
After inserting the module i am creating a file at /dev/ eith major
number same as the module's major number using mknod.
Then i am seeng the inode number by
ls -i
It is giving some number.
Next In a test file i opened a file.In my actual driver's open function
i am printing the i node number.But it is not the same as that before.
Why is that difference?will you please tell me.
My driver's code is written below.
#ifndef __KERNEL__
#define __KERNEL__
#endif
#ifndef MODULE
#define MODULE
#endif
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/fs.h>
MODULE_LICENSE("GPL");
MODULE_DESCRIPTION("BASIC CHAR DEVICE 1");
MODULE_AUTHOR("RAJA");
#define MODULENAME "chardev_1"
#define MOD_INC_USE_COUNT
#define MOD_DEC_USE_COUNT
dev_t devno;
static int __init init_module1(void);
static void __exit exit_module1(void);
int open_chardev1(struct inode *, struct file *);
struct file_operations fops = {
.owner = THIS_MODULE,
.open = open_chardev1
};
static int __init init_module1()
{
printk("Hello World!\n");
devno = register_chrdev(0,MODULENAME,&fops);
if(devno < 0)
printk("Unable To Create Character Device\n ");
else
printk("Character Device Is Created With Major Number : %d\n
",devno);
printk("Major Number : %d\n ",MAJOR(devno));
printk("Minor Number : %d\n ",MINOR(devno));
return devno;
}
int open_chardev1(struct inode *inode, struct file *file)
{
printk("Entered Into open function\n");
printk("Flags : %d\n",file->f_flags);
printk("Inode Number : %d\n",file->f_dentry->d_inode);
printk("Device Number : %d\n",inode->i_rdev);
printk("Major Number : %d\n",imajor(inode));
printk("Minor Number : %d\n",iminor(inode));
printk("Device Number : %d\n",MKDEV(imajor(inode),iminor(inode)));
MOD_INC_USE_COUNT;
return 0;
}
static void __exit exit_module1()
{
printk("Cruel World ! Bye\n");
unregister_chrdev(devno,MODULENAME);
}
module_init(init_module1);
module_exit(exit_module1);
--
Kernelnewbies: Help each other learn about the Linux kernel.
Archive: http://mail.nl.linux.org/kernelnewbies/
FAQ: http://kernelnewbies.org/faq/