Linux那些事兒之我是隨身碟(4)想到達明天,現在就要啟程

來源:互聯網
上載者:User

既然知道了怎麼編寫一個模組,那麼編寫裝置驅動程式自然也就不難了.我相信,每一個會寫模組的人都不會覺得寫裝置驅動有困難.對自己行不行不確定的話,可以去問一下葛優,他准說:"(神州行),我看行."

真的,我沒說假話.寫驅動不是什麼難事,你完全可以很自信的說,你已經可以寫Device Driver了.對,沒錯,飄柔,就這麼自信.

前面說了每一個模組都是以module_init開始,以module_exit結束,那麼我們就來看一下隨身碟的驅動的這個模組.在茫茫人海中,我們很容易找到這個檔案:drivers/usb/storage/usb.c,在這個檔案中又不難發現下面這段:

/***********************************************************************
   1056  * Initialization and registration
   1057  ***********************************************************************/
   1058
   1059 static int __init usb_stor_init(void)
   1060 {
   1061         int retval;
   1062         printk(KERN_INFO "Initializing USB Mass Storage driver.../n");
   1063
   1064         /* register the driver, return usb_register return code if error */
   1065         retval = usb_register(&usb_storage_driver);
   1066         if (retval == 0)
   1067                 printk(KERN_INFO "USB Mass Storage support registered./n");
   1068
   1069         return retval;
   1070 }
   1071
   1072 static void __exit usb_stor_exit(void)
   1073 {
   1074         US_DEBUGP("usb_stor_exit() called/n");
   1075
   1076         /* Deregister the driver
   1077          * This will cause disconnect() to be called for each
   1078          * attached unit
   1079          */
   1080         US_DEBUGP("-- calling usb_deregister()/n");
   1081         usb_deregister(&usb_storage_driver) ;
   1082 }
   1083
   1084 module_init(usb_stor_init);
   1085 module_exit(usb_stor_exit);

  其實,module_init/module_exit只是一個宏,通常寫模組的人為了彰顯自己的個性,會給自己的初始化函數和登出函數另外起個名字,比如這裡module_init(usb_stor_init)以及module_exit(usb_stor_exit)實際上就是告訴這個世界,真正的函數是usb_stor_init和usb_stor_exit.這種伎倆在Linux核心代碼中屢見不鮮.見多了也就不必大驚小怪了,天要下雨娘要嫁人,隨她去吧.我們下面當然就從usb_stor_init正式開始我們的探索之旅.

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.