午夜无码人妻aⅴ大片色欲张津瑜,国产69久久久欧美黑人A片,色妺妺视频网,久久久久国产综合AV天堂

驅(qū)動學習之led-class.c源碼分析-創(chuàng)新互聯(lián)

1:subsys_initcall宏

成都創(chuàng)新互聯(lián)網(wǎng)站建設(shè)由有經(jīng)驗的網(wǎng)站設(shè)計師、開發(fā)人員和項目經(jīng)理組成的專業(yè)建站團隊,負責網(wǎng)站視覺設(shè)計、用戶體驗優(yōu)化、交互設(shè)計和前端開發(fā)等方面的工作,以確保網(wǎng)站外觀精美、成都做網(wǎng)站、網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)易于使用并且具有良好的響應性。
#define __define_initcall(level,fn,id) \  static initcall_t __initcall_##fn##id __used \
    __attribute__((__section__(".initcall" level ".init"))) = fn
    
#define subsys_initcall(fn)        __define_initcall("4",fn,4)

2:module_init宏

module_init
   __initcall
      device_initcall
         __define_initcall("6",fn,6)

 通過分析發(fā)現(xiàn),subsys_initcall和module_init這兩個后最終都是調(diào)用__define_initcall();這個宏。

 內(nèi)核在啟動過程中需要順序的做很多事,內(nèi)核如何實現(xiàn)按照先后順序去做很多初始化操作。內(nèi)核的解決方案就是給內(nèi)核啟動時要調(diào)用的所有函數(shù)歸類,然后每個類按照一定的次序去調(diào)用執(zhí)行。這些分類名就叫.initcalln.init。n的值從1到8。內(nèi)核開發(fā)者在編寫內(nèi)核代碼時只要將函數(shù)設(shè)置合適的級別,這些函數(shù)就會被鏈接的時候放入特定的段,內(nèi)核啟動時再按照段順序去依次執(zhí)行各個段即可。所以subsys_initcall和module_init的作用是一樣的,都是在內(nèi)核啟動的時候去加載驅(qū)動,不同之處在于內(nèi)核啟動時執(zhí)行的順序不同而已。

3:static int __init leds_init(void)

static int __init leds_init(void)
{
    leds_class = class_create(THIS_MODULE, "leds");
    if (IS_ERR(leds_class))
        return PTR_ERR(leds_class);
    leds_class->suspend = led_suspend;
    leds_class->resume = led_resume;
    leds_class->dev_attrs = led_class_attrs;
    return 0;
}

 這個函數(shù)是作用是通過調(diào)用class_create函數(shù)來創(chuàng)建了一個類名為“l(fā)eds”的設(shè)備類,也就是我們/sys/class/下的leds這個文件夾

4:led_class_attrs

static struct device_attribute led_class_attrs[] = {
    __ATTR(brightness, 0644, led_brightness_show, led_brightness_store),
    __ATTR(max_brightness, 0444, led_max_brightness_show, NULL),
#ifdef CONFIG_LEDS_TRIGGERS
    __ATTR(trigger, 0644, led_trigger_show, led_trigger_store),
#endif
    __ATTR_NULL,
};

 (1)什么是attribute,對應將來/sys/class/leds/目錄里的內(nèi)容,一般是文件和文件夾。這些文件其實就是sysfs開放給應用層的一些操作接口(非常類似于/dev/目錄下的那些設(shè)備文件)
 (2)attribute有什么用,作用就是讓應用程序可以通過/sys/class/leds/目錄下面的屬性文件來操作驅(qū)動進而操作硬件設(shè)備。
(3)attribute其實是另一條驅(qū)動實現(xiàn)的路線。有區(qū)別于之前講的file_operations那條線。

5:led_classdev_register

 這個函數(shù)里面通過調(diào)用device_create,來創(chuàng)建一個屬于leds設(shè)備類的設(shè)備,其在系統(tǒng)中的體現(xiàn)就是在/sys/class/leds/里面會得到相應的設(shè)備節(jié)點文件。其實這個函數(shù)就是內(nèi)核開發(fā)者為驅(qū)動開發(fā)者提供的一個注冊leds類設(shè)備的一個接口函數(shù),將來我們在寫驅(qū)動去注冊led設(shè)備的時候就是調(diào)用這個函數(shù)去進行注冊的。

6:led_classdev_unregister

通過調(diào)用device_unregister函數(shù)來注銷注冊的LED設(shè)備,和led_classdev_register函數(shù)類似,只是功能相反。

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

網(wǎng)站欄目:驅(qū)動學習之led-class.c源碼分析-創(chuàng)新互聯(lián)
新聞來源:http://www.ekvhdxd.cn/article40/djoeho.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、企業(yè)網(wǎng)站制作、移動網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈電子商務、商城網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護公司