linux
Jalon007
臣之所好者道也进乎技矣.始臣之解牛之时所见无非牛者.三年之后未尝见全牛也.
展开
-
linux inotify通知机制
inotify简介inotify是一个内核用于通知用户空间程序文件系统变化的系统,使用简单但功能是十分强大的! 在 inotify 之前有 dnotify。不幸的是,dnotify 有局限性,用户需要更好的产品。原创 2015-03-10 15:28:22 · 2918 阅读 · 0 评论 -
linux epoll机制
在linux 没有实现epoll事件驱动机制之前,我们一般选择用select或者poll等IO多路复用的方法来实现并发服务程序。在linux新的内核中,有了一种替换它的机制,就是epoll。原创 2015-03-09 11:10:32 · 6587 阅读 · 1 评论 -
linux驱动编译系统
前言从Linux内核2.6开始,Linux内核的编译采用Kbuild系统,这同过去的编译系统有很大的不同,尤其对于Linux内核模块的编译。在新的系统下,Linux编译系统会多次扫描Linux的Makefile。范列下面我们通过一个简单的驱动示例,来熟悉linux的编译系统,驱动代码如下:/** hello.c -- the example of printf "hello world!" in t原创 2015-03-14 16:25:33 · 1447 阅读 · 0 评论 -
MTK安卓第三方内核模块编译
在原生的linux环境中编译第三方驱动的资料比较多。只需要在驱动的makefile中指定交叉编译器和编译后内核的路径就可以开始编译了。具体可以参考linux驱动编译系统。 我不知道是安卓的原因还是变态的mtk不兼容原生驱动编译方式,导致花费了较长的时间去摸索如何编译驱动的问题。 在mtk8685SDK下,只能将原始驱动放入内核目录即mtkv1.33/kernel/drivers目录下。makef原创 2015-03-14 16:57:24 · 2157 阅读 · 0 评论 -
USB之概述
最近在安卓系统上开发usb应用,刚开始并不顺利自己也走了不少弯路。网上的资料也是参差不齐,或是讲解不够详细看完还是一头雾水,为了给遇到usb问题的同仁快速得定位问题,同时也作为自己的备忘录,将这段时间自己对usb的认识加以总结。该系列文章将按照linux中的usb系统构架(下图所示)从下到上进行讲解。 总体目录如下:Usb DeviceUsb CoreUsb Host DriverUs原创 2015-04-21 14:48:08 · 563 阅读 · 0 评论 -
linux 常用命令
拷贝指定的文件到指定的目录并保持原始的目录结构:tar c $(find . -type f -name '*.src*') | tar x -C destDirtar c $(find . -type f -ctime -5 -name '*.src*') | tar x -C destDirfind . -type f -ctime -5 -name '*.src*' | xargs tar原创 2015-10-10 19:03:10 · 512 阅读 · 0 评论 -
linux多线程编程总结
linux多线程编程总结原创 2017-02-07 18:52:53 · 647 阅读 · 0 评论 -
linux IPC 之管道
管道简介管道顾名思义类似于我们生活中的水管,只不过其中流动的是“数据”或者说一个一个字节,只能单向流动的我们称为“半双工”,能双向流动的称为“全双工”,其有两个端点,数据流入的那一端称为“写端”,反之则称为“读端”,这两个端点实际上是两个“描述字”。这样的管道可以连接在两个进程之间,成为数据传输的通道。原创 2015-03-03 15:31:39 · 700 阅读 · 0 评论 -
Linux 进程通信
linux IPC渊源Linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的。而对Unix发展做出重大贡献的两大主力AT&T的贝尔实验室及BSD(加州大学伯克利分校的伯克利软件发布中心)在进程间通信方面的侧重点有所不同。前者对Unix早期的进程间通信手段进行了系统的改进和扩充,形成了“system V IPC”,通信进程局限在单个计算机内;后者则跳过了该限制,形成了基于套接口(s原创 2015-03-03 11:30:02 · 674 阅读 · 0 评论 -
linux framebuffer
如果应用程序需要知道Framebuffer设备的相关参数,必须通过ioctl()系统调用来完成。在头文件中定义了所有的ioctl命令字,不过,最常用的ioctl命令字是下面这两个:FBIOGET_FSCREENINFO和FBIOGET_VSCREENINFO。前者返回与Framebuffer有关的固定的信息,比如图形硬件上实际的帧缓存空间的大小、能否硬件加速等信息。而后者返原创 2014-11-20 16:38:34 · 905 阅读 · 0 评论 -
Linux输入系统
输入系统简介:内核对多种不同类别的输入设备(如键盘,鼠标,跟踪球,操纵杆,触摸屏,加速计和手写板等)在字符设备驱动上进行了统一的抽象。输入子系统包括两类驱动程序:事件驱动程序(对应系统中的各种handler)和设备驱动程序。事件驱动程序负责和应用程序的接口,而设备驱动程序负责和底层输入设备的通信。列如鼠标事件生成文件mousedev.c属于事件驱动程序,而kernel/dr原创 2015-01-05 14:11:58 · 1426 阅读 · 0 评论 -
linux输入设备驱动实列
前言:本实列是在mtk8685平台做的一个按键检测,实现长按与短按发送不同的键值给应用。总体来说要实现一个输入设备驱动要通过如下过程:1.分配一个input_dev设备2.设置输入设备名称以及事件属性3.注册设置好了的输入设备4.监控输入事件,并上报键值源码如下:#include原创 2015-01-05 16:56:31 · 1589 阅读 · 0 评论 -
linux应用层获取输入事件
在Linux输入系统从内核层次较详细的介绍了输入系统构架,linux输入设备驱动实列介绍了如何实现一个简单的输如设备驱动。下面主要介绍如何通过非阻塞的方式,在应用层获取输入事件,代码如下:#include #include #include #include #include #include #include #include #include #i原创 2015-01-06 09:57:42 · 2890 阅读 · 1 评论 -
linux IPC之信号
信号可以说是ipc最复杂的的通信方式。在网上也有很多很多讲解得比较好的资料可以参考,我在这里只是初略的对自己的学习的内容做个总结!信号本质信号实际上是软中断,既然是中断那么信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。 信号是进程间通信机制中唯一的异步通信机制,可以看作是异步通知,通知接收信号的进程有哪些事情发生了。原创 2015-03-03 17:59:27 · 1122 阅读 · 0 评论 -
linux IPC之内存共享
Posix 内存共享: 先调用shm_open然后再调用mmap,共享内存区对象的大小可在任何时刻通过ftruncate修改。 System V内存共享: 共享内存区是先调用shmget再调用shmat,其大小是在调用shmget创建时固定下来的。 因为Posix 接口较简洁,下面实列介绍Posix 共享内存的使用。System V内存共享的使用请参考SystemV内存共享示例。原创 2015-03-03 13:48:22 · 619 阅读 · 0 评论 -
linux IPC之消息队列
消息队列相关概念消息队列就是一个消息的链表。可以把消息看作一个记录,具有特定的格式以及特定的优先级。对消息队列有写权限的进程可以向其中按照一定的规则添加新消息;对消息队列有读权限的进程则可以从消息队列中读走消息。在linux系统中消息队列与键值一一对应。原创 2015-03-04 11:01:38 · 678 阅读 · 0 评论 -
linux IPC之套接字
Linux下的Socket通信是一种基于文件的IPC通信,也可以是基于其他设备的IPC通信。它可以在本机内不同进程间实现通信,也可以在实现不同主机之间的通信。原创 2015-03-04 13:38:41 · 648 阅读 · 0 评论 -
多线程同步相关
多线程同步操作原创 2017-02-08 15:32:45 · 366 阅读 · 0 评论