日韩av色在线_av不卡在线观看_亚洲国产精品第一页_在线看日本不卡_色成人综合网_国产丝袜在线视频_国产精成人品localhost_国产91富婆露脸刺激对白_韩国视频一区_国产精品人成电影

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > udev機制

udev機制 時間:2018-08-16      來源:未知

問題背景:用戶插入U盤后需要自動打開U盤目錄,但是發現U盤每次掛載點都不一樣,測試兩個U盤的掛載點分別是/media/sda1和/media/sda4,所以就需要了解一下linux的udev機制了

我們知道,每個設備注冊后會自動產生設備節點,以字符設備為例,不管是misc_register還是配合cdev_add接口注冊驅動,都需要調用device_create來創建設備節點,就從這個函數入手,看其在3.2.0內核版本的注冊流程

device_create

device_create_vargs

device_register(struct device *dev)

device_add(dev);

kobject_uevent(&dev->kobj, KOBJ_ADD);

kobject_uevent_env(kobj, action, NULL);

char *action_string = kobject_actions[action]; //action_string = "add"

struct kobj_uevent_env *env = kzalloc(sizeof(struct kobj_uevent_env), GFP_KERNEL);

add_uevent_var(env, "ACTION=%s", action_string); //env[0] = "ACTION=add"

add_uevent_var(env, "DEVPATH=%s", devpath); //這兩個先不關注

add_uevent_var(env, "SUBSYSTEM=%s", subsystem);

argv [0] = uevent_helper;

argv [1] = (char *)subsystem;

argv [2] = NULL;

add_uevent_var(env, "HOME=/"); //設置其他環境變量

add_uevent_var(env, "PATH=/sbin:/bin:/usr/sbin:/usr/bin");

//調用argv[0]指向的應用程序來根據環境變量env->envp一些參數來創建設備節點

call_usermodehelper(argv[0], argv, env->envp, UMH_WAIT_EXEC);

到這里,我們基本知道,內核在啟動時候已經設置了一些環境變量,可以在終端用命令env看一下

TSLIB_TSDEVICE=/dev/input/event0

QTDIR=/usr/gui/qt

PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin

HOME=/home/root

我的板子由于需要QT,所以一些環境變量已經改過或者添加了新的

那么上面提到用戶空間的argv[0]即uevent_helper到底是什么呢?

從內核源碼看uevent_helper初始化地方看是全部設置為"/sbin/hotplug"

可是我在板子上執行 ls /sbin/hotplug 命令并沒有發現這個程序,簡單的辦法就是打印一下了。

在調用call_usermodehelper之前加上下面打印

 

printk("uevent_helper = %s\n", uevent_helper);

for(i=0; env->envp[i]; i++)

{

printk("envp[%d] = %s\n", i,env->envp[i]);

}

重新編譯內核然后啟動截取部分打印如下(每注冊一個驅動都會出現這一串打印):

看門狗注冊

uevent_helper = /sbin/hotplug

envp[0] = ACTION=add

envp[1] = DEVPATH=/devices/platform/omap/omap_wdt/misc/watchdog

envp[2] = SUBSYSTEM=misc

envp[3] = MAJOR=10

envp[4] = MINOR=130

envp[5] = DEVNAME=watchdog

envp[6] = SEQNUM=520

envp[7] = HOME=/

envp[8] = PATH=/sbin:/bin:/usr/sbin:/usr/bin

按鍵注冊

uevent_helper = /sbin/hotplug

envp[0] = ACTION=add

envp[1] = DEVPATH=/devices/platform/gpio-keys/input/input2

envp[2] = SUBSYSTEM=input

envp[3] = PRODUCT=19/1/1/100

envp[4] = NAME="gpio-keys" envp[5] = PHYS="gpio-keys/input0" envp[6] = PROP=0 envp[7] = EV=3 envp[8] = KEY=14001 40000000 envp[9] = MODALIAS=input:b0019v0001p0001e0100-e0,1,kramlsfw envp[10] = SEQNUM=572 envp[11] = HOME=/ envp[12] = PATH=/sbin:/bin:/usr/sbin:/usr/bin

我插入的2GB U盤 uevent_helper = /sbin/hotplug envp[0] = ACTION=add envp[1] = DEVPATH=/bus/hid/drivers/generic-usb envp[2] = SUBSYSTEM=drivers envp[3] = SEQNUM=551 envp[4] = HOME=/ envp[5] = PATH=/sbin:/bin:/usr/sbin:/usr/bin sd 0:0:0:0: [sda] 3919872 512-byte logical blocks: (2.00 GB/1.86 GiB)

uevent_helper仍然是hotplug,查了一些資料,貌似是說2.6以后udev機制替換了hotplug,而嵌入式中的udev即mdev,所以要去看下文件系統busybox的mdev源碼 相關資料鏈接:

//blog.chinaunix.net/uid-14753126-id-2978523.html

//www.cnblogs.com/hnrainll/archive/2011/06/23/2088250.html

mdev.c mdev_main action = getenv("ACTION"); //插入u盤就是"add" env_path = getenv("DEVPATH"); sprintf(temp, "/sys%s", env_path); //u盤的 temp = "/sys/bus/hid/drivers/generic-usb" make_device(temp, 0); device_name = bb_basename(path); //根據上面temp取出設備名字 if (ENABLE_FEATURE_MDEV_CONF) { //如果配置了支持mdev.conf選項,那么就解析里邊內容并執行 .... } type = path[5]=='c' ? S_IFCHR : S_IFBLK; //判斷是字符還是塊設備 sscanf(temp, "%d:%d", &major, &minor) //取出主次設備號 mknod(device_name, mode | type, makedev(major, minor)) //創建設備節點

 

這就是設備從內核到用戶空間創建設備節點的整個過程,而如果我們要對設備節點做手腳,就需要從mdev下手了 busybox源碼有個幫助文檔mdev.txt講了應該如何去操作mdev.conf,從而實現一些高級功能,比如U盤自動掛載

 

文檔很短,其中重要就是下面這段內容: ---------------------------------------------------------------------------- ------------- MDEV Config (/etc/mdev.conf) ------------- Mdev has an optional config file for controlling ownership/permissions of device nodes if your system needs something more than the default root/root 660 permissions. The file has the format: : For example: hd[a-z][0-9]* 0:3 660 The config file parsing stops at the first matching line. If no line is matched, then the default of 0:0 660 is used. To set your own default, simply create your own total match like so: .* 1:1 777 If you also enable support for executing your own commands, then the file has the format: : [<@|$|*>   
  
 
 
] The special characters have the meaning: @ Run after creating the device. $ Run before removing the device. * Run both after creating and before removing the device. The command is executed via the system() function (which means you're giving a command to the shell), so make sure you have a shell installed at /bin/sh. For your convenience, the shell env var $MDEV is set to the device name. So if the device 'hdc' was matched, MDEV would be set to "hdc". ----------------------------------------------------------------------------

大體意思就是: 配置文件格式: : [<@|$|*>   
  
 
 
] 各個參數代表的含義如下: device regex:正則表達式,表示哪一個設備 uid: owner gid: 組ID octal permissions:以八進制表示的屬性 @:創建設備節點之后執行命令 $:刪除設備節點之前執行命令 *: 創建設備節點之后 和 刪除設備節點之前 執行命令 command:要執行的命令 所以如果要想讓U盤自動掛載怎么辦呢?就需要在/etc下建立mdev.conf文件,并編輯內容如下: sda[1-9]+ 0:3 660 * if [ $ACTION = "add" ]; then mount /dev/$MDEV /mnt; else umount /mnt; fi 其中sda[1-9]+是一個正則表達式,表示sda1...sda9(U盤默認設備節點名),0:3 660就是 : 這部分內容,剩下的一大串shell命令就是掛載命令了 搞懂了這些再去操作U盤相關修改就很容易了。

 

---------------------------------------------------------------------------- 公司fs的配置非常麻煩,不符合上述流程,后是通過搜"mount"關鍵字找到其實是/etc/udev/scripts/mount.sh操控這個流程 那么需要做如下內容修改: 第23-25行: ! test -d "/media/$name" && mkdir -p "/media/$name" if ! $MOUNT -t auto $DEVNAME "/media/$name" 改為: ! test -d "/upan" && mkdir -p "/upan" if ! $MOUNT -t auto $DEVNAME "/upan" 這樣無論哪個u盤都會掛載到/upan目錄下了

上一篇:STM32F030 Nucleo-做個準確的延時SysTick

下一篇:利用udev、sys動態創建linux設備結點

熱點文章推薦
華清學員就業榜單
高薪學員經驗分享
熱點新聞推薦
前臺專線:010-82525158 企業培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,京ICP備16055225號-5京公海網安備11010802025203號

回到頂部

欧美一区二区三区另类| 国产精品十八以下禁看| 91精品一区二区三区在线观看| 伊人开心综合网| 日韩理论片网站| 亚洲国产精华液网站w| 久久这里都是精品| 久久午夜国产精品| 久久久久久久久99精品| 99国产精品久久久久久久久久久| 成人福利电影精品一区二区在线观看 | 日韩一级片在线播放| 日本高清不卡视频| 欧美午夜影院一区| 欧美一区二区三区系列电影| 欧美一区二区成人| 精品成人一区二区三区四区| 亚洲国产精品悠悠久久琪琪| 免费成人美女在线观看| 久久久久久久欧美精品| 欧美aⅴ一区二区三区视频| 免播放器亚洲一区| 成人午夜视频在线| 国产日韩欧美一区二区三区乱码| 国产精品女主播av| 午夜精品久久久久久久久久| 岛国av午夜精品| 欧美亚洲一区二区三区四区| 日韩一级黄色大片| 亚洲乱亚洲乱妇无码| 最近的2019中文字幕免费一页 | 88久久精品| 任我爽精品视频在线播放| 国产精品密蕾丝视频下载| re久久精品视频| 国内精品99| 日本在线不卡视频一二三区| 国产精品一二三区在线| 久久久综合视频| 亚洲黄色性网站| 色婷婷综合视频在线观看| 欧美一区二区大片| 国产亚洲精品一区二555| 欧美老女人性生活| 国产精品丝袜久久久久久高清| 1卡2卡3卡精品视频| 久久精品国产第一区二区三区最新章节 | 婷婷丁香六月天| 黄色小视频在线免费观看| 青青草原av在线| 激情五月综合婷婷| 国精一区二区| 久久久夜夜夜| 久久综合色天天久久综合图片| 综合久久综合久久| 欧美日韩一区在线| 亚洲天堂av图片| 欧美一区第一页| 国产美女在线精品免费观看| 亚洲爆乳无码精品aaa片蜜桃| 99精品免费在线观看| 国产精品二区视频| 顶级黑人搡bbw搡bbbb搡| 在线观看 亚洲| 中文天堂网在线www| 天天射狠狠干| 青草青在线视频| 超碰成人97| 夜夜精品视频| 久久久91精品国产一区二区三区| 色噜噜狠狠成人中文综合| 亚洲美女av网站| 国产精品电影观看| 日韩hd视频在线观看| 欧美www在线| 成人免费在线一区二区三区| 精品少妇人欧美激情在线观看| 久草福利在线观看| 日韩精品在线免费看| 顶级嫩模一区二区三区| 美女xx视频| 91超碰国产在线| 大色综合视频网站在线播放| 韩国女主播成人在线| 亚洲国产欧美日韩另类综合| 国产午夜精品久久久| 国产精品欧美日韩| 欧美这里只有精品| 国产精品三级在线观看无码| 中文字幕乱码一区二区| 免费尤物视频| 日本在线视频中文有码| 亚州av一区| 国内精品第一页| 亚洲高清一区二区三区| 永久免费精品影视网站| 成人在线免费观看视视频| 亚洲人精品午夜射精日韩| 2017亚洲天堂| 亚洲av电影一区| 操碰在线免费| 欧美视频第一| 欧美一级播放| 亚洲高清视频的网址| 日韩在线资源网| 欧美12av| 国产精久久久久| 亚洲熟女乱色一区二区三区久久久| 91激情视频| 超碰在线资源| 狠狠入ady亚洲精品经典电影| 国产欧美一区二区精品性色| 亚洲国产日韩欧美在线99| 欧美在线啊v一区| 国内免费久久久久久久久久久 | www免费在线观看视频| 桃子视频成人app| 国产亚洲激情| 欧美日韩中文在线观看| 国内精品小视频在线观看| 99色这里只有精品| 国产精品白浆一区二小说| 夜先锋资源网| 午夜不卡影院| 日韩福利电影在线观看| 日本福利一区二区| 国产91在线视频| 97公开免费视频| 中文字幕+乱码+中文乱码91| 老司机aⅴ毛片免费观看| 清纯唯美激情亚洲| 岛国一区二区在线观看| 日韩av在线免播放器| 鲁鲁视频www一区二区| 国产传媒国产传媒| 久久亚洲国产中v天仙www| 国产一线二线在线观看| 一区二区激情| 欧美久久婷婷综合色| 亚洲tv在线观看| 国产精品美女免费| 日本三级免费观看| 国产成人无码专区| 午夜成在线www| 天天久久夜夜| 中文字幕在线视频一区| 欧美大片免费看| 国产性生交xxxxx免费| 国产精品国产三级国产普通话对白| 在线电影av| 欧美xxav| 色婷婷亚洲综合| 亚洲一区二区中文字幕| 日批在线观看视频| 久久免费精品一区二区| 欧美大片1688| 国产一区二区三区四区在线观看 | 天天做天天干天天操| 亚洲精品成av人片天堂无码| 黄色在线观看网站| 国产精品日韩精品欧美精品| 欧美精品第1页| 精品国产91亚洲一区二区三区www| 国产又粗又猛又爽又黄av| 国产精品视频一区二区免费不卡| 日韩欧美2区| 99久久综合狠狠综合久久| 中文字幕在线精品| 国产资源在线视频| 国产伦精品一区二区三区视频痴汉| 国产剧情在线观看| 1000部精品久久久久久久久| 欧美日韩免费高清一区色橹橹| 国产美女99p| 欧美激情精品久久久久久免费| 毛片女人与拘交视频| 久久久精品区| 欧美韩国日本一区| 97香蕉久久超级碰碰高清版| 国产吃瓜黑料一区二区| 国产精品乱码一区二区三区视频 | 三级黄色片在线观看| www.操操操| 自拍欧美一区| 欧美性xxxxx极品娇小| 99理论电影网| 男女免费视频网站| 国产有码在线| 蜜臀av一区二区| 中文字幕精品一区久久久久| 99热一区二区| 欧美最猛黑人xxxx黑人猛交3p | 91精品久久久久久久久久久久久久| 88av在线播放| 成人免费淫片免费观看| 9999国产精品| 337p亚洲精品色噜噜| 欧美 亚洲 视频| 午夜性色福利影院| 亚洲国产91视频| 一区二区三区毛片| 久久精品一区二区三区不卡免费视频 | 日韩成人精品视频在线观看| 亚洲精品aaaa| 成人爽a毛片| 国产高清一区二区三区四区| 国产二级片在线| 欧美三级小说| 日韩经典第一页| 亚洲xxxx2d动漫1| 国产精品爱久久久久久久小说| 国产精品xxx在线观看| 色综合天天综合网天天看片| 在线观看欧美激情| 天天干天天干天天干| 视频在线亚洲| 在线亚洲一区二区| 亚洲精品国产精品国自产在线| 欧美成人高潮一二区在线看| 人与人69性欧美三人交| 免费一区二区三区视频导航| 日韩欧美第一区| 中文字幕天天干| h视频在线网站| 尤物精品在线| 久久综合久中文字幕青草| 成人午夜剧场视频网站| 婷婷国产在线| 精品一区二区在线播放| 777777777亚洲妇女| 一起操在线播放| 国产在线观看av| 亚洲国产精品激情在线观看| 国产一区二区视频在线免费观看| 国产情侣小视频| av成人亚洲| 色婷婷国产精品久久包臀| www.国产在线播放| 一色屋免费视频| 亚洲性感美女99在线| 日韩中文综合网| 少妇视频在线播放| gogo在线高清视频| 中文字幕一区二区日韩精品绯色| 欧美综合77777色婷婷| 天堂av在线免费| 偷窥自拍亚洲色图精选| 精品欧美乱码久久久久久 | 欧美伊人久久久久久久久影院| 国产乱子伦农村叉叉叉| 禁网站在线观看免费视频| 亚洲人成免费| 久久久欧美一区二区| www.av视频在线观看| abab456成人免费网址| 欧美日韩精品福利| 黄色片子免费看| 在线电影av| 日本一区二区三级电影在线观看 | 2022亚洲天堂| 成人漫画网站免费| 狠狠色丁香久久婷婷综合丁香| 91精品在线观看视频| 国产 欧美 精品| 日韩电影免费网址| 久久99国产综合精品女同| 久久久一区二区三区四区| 久久青草免费| 亚洲国产精彩中文乱码av在线播放| 日本不卡视频一区| 免费黄色在线| 狠狠躁18三区二区一区| 欧美三级午夜理伦三级富婆| 头脑特工队2在线播放| 1区2区3区精品视频| www精品久久| 诱受h嗯啊巨肉高潮| 国产日产精品一区| 一二三四中文字幕| 国产毛片视频| 久久精品欧美日韩| 日韩视频一二三| 啦啦啦在线视频免费观看高清中文 | 欧美成人h版| 91精品国产色综合久久不卡蜜臀 | 国产99久久久| 日韩超碰人人爽人人做人人添| 日韩中文字幕免费| 日韩三级免费看| 加勒比视频一区| 日韩在线播放av| 国产又大又粗又爽| 精品freesex老太交| 国语自产精品视频在线看一大j8| 国产精品无码久久av| 亚洲在线久久| 亚洲japanese制服美女| 欧美xxxxx性| 久久99国产精品免费| 日韩精品资源| 免费在线播放av| 国产性做久久久久久| 日本一极黄色片| 看黄网站在线观看| 欧美日本一区二区| 免费精品在线视频| 国产精品自在| 国产91精品视频在线观看| 婷婷在线免费观看| 日本网站在线观看一区二区三区| 久久精品日产第一区二区三区精品版 | 黄色污污在线观看| 一级毛片aaaaaa免费看| 亚洲精品视频一区二区| 女教师高潮黄又色视频| 日本在线影院| 永久555www成人免费| 中文字幕日产av| 亚洲视频观看| 蜜桃传媒视频麻豆第一区免费观看| h网站免费看| 亚洲免费在线视频| 国产女主播在线播放| 户外露出一区二区三区| 伊人男人综合视频网| 国产乱子伦精品无码码专区| 首页亚洲欧美制服丝腿| 先锋影音网一区| 国产美女在线播放| 精品国产91乱高清在线观看| a级片在线观看| 露出调教综合另类| 国产精品美女久久久久久免费| 在线播放黄色网址| 国产精品久久久久久久久免费相片 | 欧美成人一区二免费视频软件| ts人妖另类在线| www.黄色在线观看| 亚洲色图.com| jizz日本免费| 成人资源在线播放| 国产精品白嫩美女在线观看 | 日韩欧美国产网站| 一本色道久久88| av一区二区高清| 国产精品二区在线| 午夜影院免费播放| 欧美视频中文一区二区三区在线观看 | 欧美日韩亚洲成人| 中文字幕求饶的少妇| 欧美一级本道电影免费专区| 91午夜在线播放| qvod激情图片| 欧美制服丝袜第一页| 国产免费av一区二区| 国产精品普通话对白| 青青在线视频免费观看| 女人黄色免费在线观看| 日韩有码在线电影| 最近免费中文字幕mv视频| 久久久综合精品| 我和岳m愉情xxxⅹ视频| 免费一区二区| 精品日韩欧美| 日韩电影网址| 欧美精品一区二区三区很污很色的 | 可以看av的网站久久看| 97超碰人人澡| 毛片无码国产| 91超碰中文字幕久久精品| 非洲黑人最猛性xxxx交| 色拍拍在线精品视频8848| 九九精品免费视频| 黑人巨大精品欧美黑白配亚洲| 网站一区二区三区| 综合激情网...| 含羞草久久爱69一区| av资源网站在线观看| 中文字幕不卡av| 欧美专区日韩| 亚洲一二三四区不卡| 五月天婷婷丁香| 麻豆精品视频在线观看免费| 国产一区二区在线观看免费视频| 成人在线超碰| 欧美色欧美亚洲另类七区| 秋霞影院午夜丰满少妇在线视频| 精品国内产的精品视频在线观看| 国产一卡2卡3卡4卡网站免费| 亚洲国产日韩综合久久精品| 国产视频91在线| 国产乱人伦偷精品视频免下载| 国产免费a级片| 亚洲成人日韩| 欧美极品欧美精品欧美| 久久亚洲精精品中文字幕| 久久精品女人的天堂av| 182在线播放| 国产精品欧美日韩久久| 精品视频二区|