《Linux设备节点创建》内核kobject上报uevent过滤规则Word文档格式.docx

上传人:b****2 文档编号:811267 上传时间:2023-04-29 格式:DOCX 页数:19 大小:23.02KB
下载 相关 举报
《Linux设备节点创建》内核kobject上报uevent过滤规则Word文档格式.docx_第1页
第1页 / 共19页
《Linux设备节点创建》内核kobject上报uevent过滤规则Word文档格式.docx_第2页
第2页 / 共19页
《Linux设备节点创建》内核kobject上报uevent过滤规则Word文档格式.docx_第3页
第3页 / 共19页
《Linux设备节点创建》内核kobject上报uevent过滤规则Word文档格式.docx_第4页
第4页 / 共19页
《Linux设备节点创建》内核kobject上报uevent过滤规则Word文档格式.docx_第5页
第5页 / 共19页
《Linux设备节点创建》内核kobject上报uevent过滤规则Word文档格式.docx_第6页
第6页 / 共19页
《Linux设备节点创建》内核kobject上报uevent过滤规则Word文档格式.docx_第7页
第7页 / 共19页
《Linux设备节点创建》内核kobject上报uevent过滤规则Word文档格式.docx_第8页
第8页 / 共19页
《Linux设备节点创建》内核kobject上报uevent过滤规则Word文档格式.docx_第9页
第9页 / 共19页
《Linux设备节点创建》内核kobject上报uevent过滤规则Word文档格式.docx_第10页
第10页 / 共19页
《Linux设备节点创建》内核kobject上报uevent过滤规则Word文档格式.docx_第11页
第11页 / 共19页
《Linux设备节点创建》内核kobject上报uevent过滤规则Word文档格式.docx_第12页
第12页 / 共19页
《Linux设备节点创建》内核kobject上报uevent过滤规则Word文档格式.docx_第13页
第13页 / 共19页
《Linux设备节点创建》内核kobject上报uevent过滤规则Word文档格式.docx_第14页
第14页 / 共19页
《Linux设备节点创建》内核kobject上报uevent过滤规则Word文档格式.docx_第15页
第15页 / 共19页
《Linux设备节点创建》内核kobject上报uevent过滤规则Word文档格式.docx_第16页
第16页 / 共19页
《Linux设备节点创建》内核kobject上报uevent过滤规则Word文档格式.docx_第17页
第17页 / 共19页
《Linux设备节点创建》内核kobject上报uevent过滤规则Word文档格式.docx_第18页
第18页 / 共19页
《Linux设备节点创建》内核kobject上报uevent过滤规则Word文档格式.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

《Linux设备节点创建》内核kobject上报uevent过滤规则Word文档格式.docx

《《Linux设备节点创建》内核kobject上报uevent过滤规则Word文档格式.docx》由会员分享,可在线阅读,更多相关《《Linux设备节点创建》内核kobject上报uevent过滤规则Word文档格式.docx(19页珍藏版)》请在冰点文库上搜索。

《Linux设备节点创建》内核kobject上报uevent过滤规则Word文档格式.docx

15. 

len;

16. 

char 

buf[4096];

17. 

iovec 

iov;

18. 

msghdr 

msg;

19. 

i;

20. 

21. 

memset(&

sa,0,sizeof(sa));

22. 

sa.nl_family=AF_NETLINK;

23. 

sa.nl_groups=NETLINK_KOBJECT_UEVENT;

24. 

sa.nl_pid 

0;

//getpid();

both 

is 

ok 

25. 

msg,0,sizeof(msg));

26. 

iov.iov_base=(void 

*)buf;

27. 

iov.iov_len=sizeof(buf);

28. 

msg.msg_name=(void 

*)&

29. 

msg.msg_namelen=sizeof(sa);

30. 

msg.msg_iov=&

31. 

msg.msg_iovlen=1;

32. 

33. 

sockfd=socket(AF_NETLINK,SOCK_RAW,NETLINK_KOBJECT_UEVENT);

34. 

if(sockfd==-1) 

35. 

printf("

socket 

creating 

failed:

%s\n"

strerror(errno));

36. 

if(bind(sockfd,(struct 

sockaddr 

sa,sizeof(sa))==-1) 

37. 

bind 

error:

38. 

while

(1){ 

39. 

memset(buf,0,sizeof(buf));

40. 

len=recvmsg(sockfd,&

msg,0);

41. 

if(len<

0){} 

42. 

//printf("

receive 

error\n"

);

43. 

else 

32||len>

sizeof(buf)) 

44. 

invalid 

message"

45. 

for(i=0;

i<

i++) 

46. 

if(*(buf+i)=='

\0'

) 

47. 

buf[i]='

\n'

;

48. 

received 

%d 

bytes\n%s\n"

len,buf);

49. 

50.} 

51. 

52.int 

main(int 

argc,char 

**argv) 

53.{ 

54. 

MonitorNetlinkUevent();

55. 

return 

56.} 

Android.mk

[plain] 

1.LOCAL_PATH:

$(call 

my-dir) 

2.include 

$(CLEAR_VARS) 

3. 

4.LOCAL_SRC_FILES:

5. 

testnet.c 

6. 

7.LOCAL_SHARED_LIBRARIES 

:

8. 

libutils 

9. 

10.LOCAL_MODULE:

testnet 

11. 

12.LOCAL_MODULE_TAGS 

optional 

14.include 

$(BUILD_EXECUTABLE) 

二、如下是添加打印后的信息(Android用户空间udev为ueventd,属于init的一个软连接)

1.总线驱动

root@android:

/data/tank#insmodtestbus.ko 

1.//内核模块加载成功,会上报netlink 

2.TK------->

>

kobject_uevent.c>

kobject_uevent_env 

3.kobject:

'

testbus'

(bf02d1c8):

4.TK------->

kobject_uevent_env>

netlink_broadcast 

5.//总线注册上报netlink 

6.TK---testlddbus.c----->

ldd_bus_init 

7.TK--------->

bus.c>

bus_register,,,bus->

name 

ldd 

8.TK-------_>

kobject.c>

kset_register 

9.TK-------_>

kset_register>

kobject_uevent 

10.TK------->

11.kobject:

ldd'

(cfcdb1c8):

12.TK------->

13.//设备注册由于没有分配主设备号,不上报netlink 

14.TK-------_>

core.c>

device_register 

15.TK-------_>

device_add 

16.TK-------_>

device_add>

17.TK------->

18.TK-------_>

drivers/base/core.c>

dev_uevent_filter>

ktype 

0xc032137c,&

device_ktype 

0xc032137c 

19.TK-------->

dev->

uevent_suppress 

20.TK-------->

bus 

0x0 

21.TK-------->

class 

22.kobject:

ldd0'

(bf02d074):

23.kobject:

kobject_uevent_env:

filter 

function 

caused 

the 

event 

to 

drop!

24.//用户空间ueventd的处理,2个uevent事件 

25.init:

TK-------_>

uevent.c>

ueventd_main>

ufd.fd 

26.init:

device.c.>

handle_device_fd 

27.init:

TK------------>

device.c>

handle_device_event>

uevent->

major 

-1,uevent->

minor 

-1 

28.init:

and 

29.init:

30.init:

31.received 

83 

bytes 

32.add@/module/testbus 

33.ACTION=add 

34.DEVPATH=/module/testbus 

35.SUBSYSTEM=module 

36.SEQNUM=649 

38.received 

66 

39.add@/bus/ldd 

40.ACTION=add 

41.DEVPATH=/bus/ldd 

42.SUBSYSTEM=bus 

43.SEQNUM=650 

drivers/base/bus.c

1.int 

bus_register(struct 

bus_type 

*bus){ 

2. 

retval 

kset_register(&

priv->

subsys);

/* 

4. 

lib/kobject.c 

kset_register(struct 

kset 

*k){ 

kobject_uevent(&

k->

kobj, 

KOBJ_ADD);

7. 

*/ 

bus_create_file(bus, 

&

bus_attr_uevent);

devices_kset 

kset_create_and_add("

devices"

 

NULL, 

subsys.kobj);

drivers_kset 

drivers"

12.} 

2.插入设备

/data/tank#insmodtestdev.ko 

1.//内核模块加载会上报netlink 

testdev'

(bf0334e0):

5.//没有主设备号,不会上报netlink 

6.TK---testdev.c----->

mini_init 

7.TK-------_>

mini'

(bf0333dc):

12.TK-------_>

13.TK-------->

14.TK-------->

0xbf001130 

15.TK---testlddbus.c----->

ldd_uevent 

dev_uevent>

-12 

17.kobject:

uevent() 

returned 

18.//用户空间ueventd的处理,1个uevent事件 

19.init:

20.init:

21.init:

22.init:

23.received 

24.add@/module/testdev 

25.ACTION=add 

26.DEVPATH=/module/testdev 

27.SUBSYSTEM=module 

28.SEQNUM=651 

3.设备驱动

/data/tank#insmodtestdriver.ko 

1.//内核模块成功加载,会上报netlink 

testdriver'

(bf039c34):

5.//类注册会上报netlink(class_creat) 

6.TK---testdriver.c----->

driver_init 

7.Tk--------->

driver.c>

driver_register 

8.TK---------_>

bus_add_driver 

9.TK---testbus.c----->

ldd_match 

10.TK---testbus.c----->

11.TK---testlddbus.c----->

ldd_drv_probe 

12.TK----testdriver.c------>

driver_probe 

mini 

13.TK-------_>

15.TK------->

16.kobject:

mymodule'

(cfee5b68):

18.//有主设备号时设备注册上报netlink 

device_create 

20.TK-------_>

21.TK-------_>

22.TK-------_>

23.TK------->

24.kobject:

mymod0'

(caa4e724):

25.TK-------_>

26.TK-------->

27.TK-------->

28.TK-------->

0xcaade760 

29.TK-------_>

30.TK------->

31.//驱动注册都会上报netlink 

32.TK---------_>

bus_add_driver>

33.TK------->

34.kobject:

(c8aa48c0):

35.TK------->

36.//用户空间ueventd的处理,4个uevent事件 

37.init:

38.init:

39.init:

40.init:

41.init:

42.init:

43.init:

248,uevent->

44.init:

TK------_

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2