乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      i2c_set_clientdata

       dwlinux_gs 2015-03-16

      在i2c驅(qū)動中有很多函數(shù)和數(shù)據(jù)結(jié)構(gòu),很多一時難以理解,所以寫下本文共同學習。

      一、i2c_set_clientdata函數(shù) 

             在probe方式的I2C驅(qū)動中的probe函數(shù)中經(jīng)常出現(xiàn)i2c_set_clientdata函數(shù),一直很不解這個函數(shù)什么意思,后來查看內(nèi)核源碼,發(fā)現(xiàn)了一點大家都知道的秘密。偷笑

      這是某個I2C設(shè)備驅(qū)動中的probe函數(shù),選取了部分代碼:

      struct i2c_mydev         //struct i2c_mydev是自定義的設(shè)備結(jié)構(gòu)

      {

           struct i2c_client *client;

           ...

      };

      static int xxx_probe(struct i2c_client *client,const struct i2c_device_id *id)
      {

      struct i2c_mydev *dev;            

      ...

      dev->client=client;                           

      i2c_set_clientdata(client, dev);    

      ...

      }

      /*

      client是在板級信息初始化的時候自動創(chuàng)建的設(shè)備,將client賦值給dev中的client

      然后又將設(shè)備文件結(jié)構(gòu)dev賦值給client的私有驅(qū)動數(shù)據(jù)指針。i2c_set_clientdata函數(shù)到底是什么作用呢?

      在該函數(shù)中調(diào)用了dev_set_drvdata函數(shù),在dev-set_drvdata函數(shù)實現(xiàn)代碼中有一行代碼:dev->p->driver_data=data

      driver_data是什么呢,內(nèi)核中一句注釋:driver_data - private pointer for driver specific info。driver_data是驅(qū)動特殊信息的私有指針,i2c_set_clientdata(client, dev)就是將自定義的設(shè)備結(jié)構(gòu)dev賦給設(shè)備驅(qū)動client的私有指針,目的是什么呢,我猜測是用來區(qū)別其他驅(qū)動client,不知道這樣理解對不對。敬請指正,這也是本文面世的一個原因。

      */

      static inline void i2c_set_clientdata(struct i2c_client *dev, void *data)
      {
      dev_set_drvdata(&dev->dev, data);
      }

      void dev_set_drvdata(struct device *dev, void *data)

      {

      ...

      dev->p->driver_data = data;

      ...

      }

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多