getEvent命令的实现
2015-07-01 22:49
351 查看
在终端操作的时候经常会用到一些shell命令,以getevent为例子看了下这些命令都是什么东西。
首先在网上了解了下getevent命令:/article/9017456.html
根据文章中说的,在system/core/toolbox/getevent.c中可以了解这个命令的实现,就找出来看了下
//getevent.c
在自己添加键值映射的时候,会发现有时候getevent -l得到的打印没能显示成字符串形式,而是十六进制数字的形式。
通过分析源码就能知道原因是没有在getevent.h中的表中的key_labels中也添加相应的字串。(添加后确实getevent -l打印出来的就是字符串形式了)
另外可以知到getevent指令实际获取事件的是:pollres = poll(ufds, nfds, -1);这个poll函数可以在poll.h中找到
可知getevent,top这些命令就是一些system/core/toolbox中实现的工具程序,有兴趣的话,可以自己写一些shell工具放在这里了。
首先在网上了解了下getevent命令:/article/9017456.html
根据文章中说的,在system/core/toolbox/getevent.c中可以了解这个命令的实现,就找出来看了下
//getevent.c
while(1) { pollres = poll(ufds, nfds, -1); //printf("poll %d, returned %d\n", nfds, pollres); if(ufds[0].revents & POLLIN) { read_notify(device_path, ufds[0].fd, print_flags); } for(i = 1; i < nfds; i++) { if(ufds[i].revents) { if(ufds[i].revents & POLLIN) { res = read(ufds[i].fd, &event, sizeof(event)); if(res < (int)sizeof(event)) { fprintf(stderr, "could not get event\n"); return 1; } if(get_time) { printf("[%8ld.ld] ", event.time.tv_sec, event.time.tv_usec); } if(print_device) printf("%s: ", device_names[i]); print_event(event.type, event.code, event.value, print_flags); if(sync_rate && event.type == 0 && event.code == 0) { int64_t now = event.time.tv_sec * 1000000LL + event.time.tv_usec; if(last_sync_time) printf(" rate %lld", 1000000LL / (now - last_sync_time)); last_sync_time = now; } printf("%s", newline); if(event_count && --event_count == 0) return 0; } } } }
在自己添加键值映射的时候,会发现有时候getevent -l得到的打印没能显示成字符串形式,而是十六进制数字的形式。
通过分析源码就能知道原因是没有在getevent.h中的表中的key_labels中也添加相应的字串。(添加后确实getevent -l打印出来的就是字符串形式了)
另外可以知到getevent指令实际获取事件的是:pollres = poll(ufds, nfds, -1);这个poll函数可以在poll.h中找到
可知getevent,top这些命令就是一些system/core/toolbox中实现的工具程序,有兴趣的话,可以自己写一些shell工具放在这里了。
相关文章推荐
- 码讲——Common-IO
- Entity Framework 使用注意:Where查询条件中用到的关联实体不需要Include
- 黑马程序员-OC语言-多态的实现(听课笔记)
- 【继续思考】排序算法——基数排序与桶排序
- chapter5test4
- meta 刷新网页
- 手斧Linux – 从LFS到Funtoo (114)
- 码讲——Java集合基础
- HADOOP之HDFS文件操作
- 开始学习马哥视频 第一天
- Redis 数据库(2) redis键过期策略
- 2015.7.1 第三堂 init与继承
- 深入Java集合学习系列:HashMap的实现原理
- 手斧Linux – 从LFS到Funtoo (113)
- JavaEE——day01——html
- mysql数据库存放emoj等表情内容
- java中用数组模拟的酒店管理系统
- py列表函数
- 手斧Linux – 从LFS到Funtoo (112)
- 手斧Linux – 从LFS到Funtoo (111)