- 論壇徽章:
- 0
|
在閱讀misc混雜設(shè)備驅(qū)動的時候遇到一個問題,原以為
在驅(qū)動的open函數(shù)內(nèi)會直接對filp->private_data賦值,如下:
filp->private_data = priv;
但令我困惑的是這樣對filp->private_data賦值:
struct my_dev *priv = container_of(filp->private_data,
struct my_dev, miscdev);
filp->private_data = priv;
注:miscdev是結(jié)構(gòu)體struct my_dev的一個成員,
那么按照struct my_dev *priv = container_of(filp->private_data,
struct my_dev, miscdev);
的理解,filp->private_data應(yīng)該存儲了結(jié)構(gòu)體struct my_dev中miscdev的地址,
但miscdev的地址是什么時候賦值給filp->private_data的呢?
/* Register the miscdevice */
ret = misc_register(&priv->miscdev); |
|