私はキャラクターデバイスドライバーのプログラミングを勉強しています。私はいくつかの疑問を持っていました、そしてここでそれらを明らかにしたいと思っています:-
(a)「デバイスファイルはメジャー番号とマイナー番号に関連付けられています。また、ドライバーモジュールでは、関数に従って定義されたfopsフィールドと、デバイスファイルと同じメジャー番号とマイナー番号を使用してcdevオブジェクトを定義します。」
1. I want to know what exactly happens when a function is called on the device file.
Here is what I think. Suppose, I make a file called mydevfile using mknod(). Now
when I call open(mydevfile, O_RDWR), the kernel is searched for a cdev object with
same minor and major number. When found, the cdev 's fops is searched for function
for open() (say dev_open()). It is written that the dev_open() should have first
argument inode* and second argument file*. My question is how are these parameters
passed to the dev_open() function?
2. I learnt that inode is associated with a file on disk. Which file is it associated
with here? Also inode has a pointer to corresponding cdev. Now if we have already
got the cdev by searching major and minor number from mydevfile, why do we need
inode? W
3. What does the file*(i.e. the second argument) point to in this case?
これはお好みの方法で自由に説明できますが、例を使って説明していただければ幸いです。ありがとう!