Linux下,基于EETI触屏控制器的触屏失灵解决方法

Linux(kernel 3.2.x)下,基于EETI触屏控制器、USB触控线的触屏应用,发现将USB触控线拔掉再插上后,触屏失灵,此时触屏驱动 eGTouhD的CPU急剧飙升,占用率在90%以上。

查看触屏设备,发现USB触控线拔掉后,/dev/hidraw仍然存在,没有及时remove,此时再插上USB触控线,会在/dev下出现hidraw0的设备。因此判断故障点出在这里:USB触控线拔掉后,触控设备实际上已不存在,但是/dev/hidraw的存在使eGTouhD认为触控设备还存在,一直在读取/dev/hidraw,而不是读取重新插上后生成的新设备号/dev/hidraw1。

运行udevadm --monitor,发现在拔掉USB触控线,内核没有发出remove 设备的信息。

后从kernel.org官网找到一篇文档,更改drivers/hid/hidraw.c中更改device_destory执行的位置后,问题斛决,更改内容如下:


diff --git a/drivers/hid/hidraw.c b/drivers/hid/hidraw.c
index cb0137b..ab24ce2 100644
--- a/drivers/hid/hidraw.c
+++ b/drivers/hid/hidraw.c

@@ -320,13 +320,13 @@ static void drop_ref(struct hidraw *hidraw, int exists_bit)

hid_hw_close(hidraw->hid);

wake_up_interruptible(&hidraw->wait);

}

+ device_destroy(hidraw_class,

+ MKDEV(hidraw_major, hidraw->minor));

} else {

--hidraw->open;

}

if (!hidraw->open) {

if (!hidraw->exist) {

- device_destroy(hidraw_class,

- MKDEV(hidraw_major, hidraw->minor));

hidraw_table[hidraw->minor] = NULL;

kfree(hidraw);

} else {

参考文档:

https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/drivers/hid/hidraw.c?id=47587fc098451c2100dc1fb618855fc2e2d937af

时间: 2024-10-29 19:07:42

Linux下,基于EETI触屏控制器的触屏失灵解决方法的相关文章

Linux 下shell显示-bash-4.1$不显示用户名路径的解决方法

Linux CentOS下shell显示-bash-4.1$不显示用户名路径的解决方法 问题描述: CentOS下新增一个用户,登录进去之后shell脚本的信息如下: 而不是我们经常看到的[email protected]的组合,看起来很不舒服. 解决方案: 问题的原因是因为没有配置.bash_profile的问题,可以通过配置这个文件来解决问题. 1.在Terminal输入: vi ~/.bash_profile 2.如果没有.bash_profile可以自己添加.然后往文件中添加如下内容:e

Linux下重新安装MySql后出现'MySQL Daemon failed to start‘解决方法

Linux下重新安装MySql后出现'MySQL Daemon failed to start‘解决方法 近日在搭建lepus环境时,发现安装了xampp后,mysql启动不了. 运行service mysqld start或者/etc/init.d/mysqld start,出现: 运行mysql -uroot -p123456,出现: 后面在网上找到一种方法解决了此问题 rm -fr /var/lib/mysql/* rm /var/lock/subsys/mysqld killall my

Linux下MySQL的写文件时权限错误(Errcode: 13)解决方法

在数据库中select * into outfile '/home/mysql/data.sql',mysql又提示错误: ERROR 1 (HY000): Can't create/write to file '/home/mysql/data.sql' (Errcode: 13)   权限错误(Errcode: 13)解决方法 1  查看导出目录的权限 是否有mysql用户写的权限 2 如果有多级目录,要确保到处目录的上级目录有可执行权限,如果是/root目录 700要修改705 否则写不进

SecureCRT远程连接Linux下的sqlplus中退格键不能使用之解决方法

^H不是H键的意思,是backspace 主要是当你的终端backspace有问题的时候才需要设置 在linux环境下使用sqlplus,在回删(backspace)时往往会出现 一串的乱码.出现乱码是由于oracle的sqlplus不使用gnu的readline库造成的. 解决方法有2种: 1. 要使用回删键(backspace)时,同时按住ctrl键 2. 设定环境变量 在bash下:$ stty erase ^H 或者把 stty erase ^? 添加到.bash_profile中. 在

Linux下安装QT和OpenGL后QT无法使用OpenGL的解决方法

我的系统为Ubuntu14.04,用apt-get安装了实现了OpenGl的mesa,QT则是用官网下载的run文件来安装的. 好了,现在两个都分别有了,所以要在qt下尝试写OpenGl代码. 之前试过在Vim粘贴代码然后编译,经测试成功的是包含以下一条编译选项的语句. 1 gcc a.c -o a 但是直接将代码粘贴到qt creator上点击运行,却出现多条报错信息,各条调用函数都提示找不到,即是qt还未能连接使用安装了的OpenGL库. 网上查了很多解决方案都是在qt项目的.pro文件中添

linux下mysql提示"mysql deamon failed to start"错误的解决方法

操作系统为centos,网站突然连接不上数据库,于是朋友直接重启了一下服务器.进到cli模式下,执行 service myqsld start 发现还是提示"mysql deamon failed to start"错误信息. # /etc/init.d/mysqld start MySQL Daemon failed to start. Starting mysqld: [FAILED] 查看mysqld的log文件 #less /var/log/mysqld.log 141201

Linux下安装Memcache以及安装过程中一些问题的解决方法

一.下载安装libevent cd /tmp #切换到tmp目录 wget http://www.monkey.org/~provos/libevent-1.2.tar.gz #下载 tar zxvf libevent-1.2.tar.gz #解压 cd libevent-1.2 #切换到libevent目录 ./configure --prefix=/usr #配置安装路径 #如果此步骤报错,检查一下有没有安装编译器,没有的话运行以下命令进行安装 yum install gcc make #编

首次使用windows管理界面访问安装在UNIX或linux下的DP服务器时提示无权限访问的解决方法

用windwos GUI管理界面连接时提示无权限访问: 在/etc/opt/omni/server/users/userlist 添加一行: "" "*" "*" * "admin"  再次运行DP的图形界面即可正常访问DP了.

Linux下基于nw音乐电台

Linux下基于nw音乐电台,希望大神改进 百度云:下载

Linux下基于源码方式安装MySQL 5.6

MySQL为开源数据库,因此可以基于源码实现安装.基于源码安装有更多的灵活性.也就是说我们可以针对自己的硬件平台选用合适的编译器来优化编译后的二进制代码,根据不同的软件平台环境调整相关的编译参数,选择自身需要选择不同的安装组件,设定需要的字符集等等一些可以根据特定应用场景所作的各种调整.本文描述了如何在源码方式下安装MySQL. 1.安装环境及介质#安装环境SZDB:~ # cat /etc/issueWelcome to SUSE Linux Enterprise Server 10 SP3