
Linux研究
philofly
这个作者很懒,什么都没留下…
展开
-
Qt下如何检测组合键
Qt下有一个类叫QAccel,可以处理含有CTRL, ALT和SHIFT的组合键。 如果组合键里面没有这几个键, 怎么处理呢? 有一个KeyPressEvent的Slot可以处理:bool is_key_f8 = false;bool is_key_f4 = false; class FreqDlg::KeyPressEvent(QKeyEvent *e){原创 2009-01-19 20:44:00 · 4417 阅读 · 2 评论 -
Linux程序员开发利器
工欲善其事,必先利其器。好的工具为程序员的开发提高效率。 有哪些好的工具呢?我来说一下我所使用的好工具。 编辑工具: vim, gedit, Emacs, ... Make生成工具: cmake,可以跨平台编译 自动生成API reference: doxygen(非常好用的工具,通过注释自动生成API reference) 调试工具: gdb, ddd,原创 2009-01-19 10:30:00 · 969 阅读 · 0 评论 -
使用gdb调试多线程
以前觉得调试多线程是个难题,今天和同事研究了一下,有点思路。 如果觉得程序有问题,使用ctrl+c停止程序运行,然后查看线程信息。 info threads:可以看出有多少个线程thread n:第几个线程bt:可以看出线程是否suspend还是sleep。如果suspend说明等待signal或者mutex。 还有几个问题:1。如何看出哪个线程suspend还原创 2009-06-04 19:46:00 · 1206 阅读 · 0 评论 -
程序调试中遇到的几种问题
1。无限等待signal 有线程1和线程2,线程1结束前需要等待线程2发送signal,才能结束。 结果线程1还未进入等待signal的时候,线程2已经发送signal完毕,造成线程1无限等待signal,程序陷入死循环。 2。相互等待signal线程1发送消息(往消息队列写入), 线程2接收消息(从消息队列读取),线程3处理消息命令,线程4负责播放状态切换。原创 2009-06-04 20:36:00 · 3884 阅读 · 0 评论 -
LIRC源码分析(1)
LIRC是Linux Infrared remote control的简写, 是红外信号解码和发送的开源套件。首先我们看一下LIRC的架构:原创 2010-06-24 15:29:00 · 7276 阅读 · 0 评论 -
LIRC源码分析(2)
下面我们来看LIRC到底如何工作的? 从哪儿下手呢?先看LIRC的工具mode2,看看mode2的源码。首先看初始化部分:int main(int argc,char **argv){ int fd; char buffer[sizeof(ir_code)]; lirc_t data; unsigned long mode; char *device=LIRC_DRIVER_DEVICE; struct stat s; int dmode=0; unsigned lon原创 2010-06-30 16:30:00 · 3697 阅读 · 0 评论 -
将驱动编译到内核注意一个小问题
这几天同事测试LIRC驱动发现,如果把LIRC驱动编译成模块,然后使用insmod命令将驱动load到内核,驱动使用起来没有任何问题,但是如果把驱动直接编译到内核,启动内核以后发现驱动无法使用。刚开始我怀疑可能是devfs的问题,但是查看代码跟这个没有任何关系。 然后查看了编译成模块时load模块的log, 与编译到内核,内核启动时的log,发现了问题。原来lirc_dev.c文件有这么一段代码#ifdef MODULEstatic int __init lirc_dev_init(void){原创 2010-10-12 15:33:00 · 1254 阅读 · 0 评论