摘要:
分析一下 Android 是如何读取按键及Touch Panel 的驱动的。主要在$(ANDROID_DIR)/frameworks/base/libs/ui/EventHub.cpp这个文件中,这是在 HAL 层,将一步步分析 Android 上层是如何接受事件的。一, 先看一下 Android HALClass EventHub 在$(ANDROID_DIR)/frameworks/base/include/ui/eventhub.h 定义.i. scan_dir(const char *dirname) // dirname = "/dev/input" 扫描 dir 阅读全文
摘要:
在编写ioctl代码之前,需要选择对应不同命令的编号。为了防止对错误的设备使用正确的命令,命令号应该在系统范围内唯一,这种错误匹配并不是不会发生,程序可能发现自己正在试图对FIFO和audio等这类非串行设备输入流修改波特率,如果每一个ioctl命令都是唯一的,应用程序进行这种操作时就会得到一个EINVAL错误,而不是无意间成功地完成了意想不到的操作。要按Linux内核的约定方法为驱动程序选择ioctl编号,应该首先看看include/asm/ioctl.h和Doucumention/ioctl-number.txt这两个文件。头文件定义了要使用的位字段:类型(幻数)、序数、传送方向以及参数大 阅读全文
摘要:
Android键盘系统 Android中的键盘系统的生命周期从系统的启动开始到系统的关闭一直存在着,因为,在这整个过程中我们希望按下的没一个按键都会有相应的事件发生。通过调研发现,Android键盘系统贯穿着Android框架的最底层——Linux内核(驱动)到上层JAVA架构层——SystemServer。与android键盘系统关系紧密的几个文件从下层往上层依次为:Goldfish_event.c(处于Linux内核)、EventHub.cpp(硬件抽象层)、com_android_server_KeyInputQueue.cpp(JNI本地方法)KeyInputQueue.java、Wi 阅读全文
摘要:
刚看到金山卫士开源了,而且是在Apache2 license下开源,也就是说可以用作商业用途,使用者自身不需要开源。http://code.ijinshan.com/ 看来金山豁出去了,非搞死360不可。 对开发者来说挺好的,有空可以观摩一下代码。 安全软件市场的门槛打破了! 可以有更多的程序员和厂商进入这个市场。 阅读全文
摘要:
EventHub.cpp文件中open_device函数浅析 用户态中,与内核态联系紧密的一个函数是open_device,它位于EventHub.cpp文件中,该函数有大量的底层操作,以完成上层对硬件的操作。该函数的首部为:int EventHub::open_device(const char *deviceName)其中参数有scan_dir()函数获得。在这里,deviceName=”/dev/input/event0”for (attempt = 0; attempt < 10; attempt++) {fd = open(deviceName, O_RDWR);if (fd 阅读全文
摘要:
Lists将元素按顺序储存在链表中. 与 向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢. assign() 给list赋值 back() 返回最后一个元素 begin() 返回指向第一个元素的迭代器 clear() 删除所有元素 empty() 如果list是空的则返回true end() 返回末尾的迭代器 erase() 删除一个元素 front() 返回第一个元素 get_allocator() 返回list的配置器 insert() 插入一个元素到list中 max_size() 返回list能容纳的最大元素数量 merge() 合并两个list pop_b 阅读全文