- 博客(19)
- 资源 (11)
- 收藏
- 关注
原创 Linux设备模型-总线,设备和驱动
1 参考书籍参考书籍 《嵌入式Linux驱动开发教程》 华清远见嵌入式学院2 范例代码/*vbus.c*/#include <linux/init.h>#include <linux/kernel.h>#include <linux/module.h>#include <linux/device.h>/*用于匹配驱动和设备的函数*/static int vbus_match(struct de
2018-01-29 10:48:32 303
原创 高级I/O操作-阻塞型I/O
1 参考书籍参考书籍 《嵌入式Linux驱动开发教程》 华清远见嵌入式学院 2 休眠程序的唤醒通常有两种 (1) 在中断处理程序负责唤醒 (2) 指定进程的最长休眠时间,超时后进程自动苏醒3 范例代码/*阻塞型I/O*//*vser.c*/#include <linux/init.h>#include <linux/kernel.h>#include <linux/module.h>#i
2018-01-28 22:51:55 384
原创 高级I/O操作-非阻塞型I/O
1 参考书籍 参考书籍 《嵌入式Linux驱动开发教程》 华清远见嵌入式学院 2 简介 如果应用程序以非阻塞的方式打开设备文件,当资源不可用时,驱动就应该立刻返回并用一个错误码EAGAIN来通知应用程序此时资源不可用。 3 范例代码/*非阻塞型I/O*//*vser.c*/#include <linux/init.h>#include <linux/kernel.h>#inc
2018-01-28 16:55:46 359
原创 高级I/O操作-ioctl设备操作
1 ioctl设备操作 参考书籍 《嵌入式Linux驱动开发教程》 华清远见嵌入式学院2 虚拟串口中添加unlocked_ioctl后的代码vser.h/*vser.h*/#ifndef _VSER_H#define _VSER_Hstruct option{ unsigned int datab; unsigned int parity; unsigned int s
2018-01-28 16:01:49 581
原创 Linux中断下半部——工作队列
1 参考书籍 《Linux设备驱动开发详解》 宋宝华 机械工业出版社 《嵌入式Linux驱动开发教程》 华清远见嵌入式学院 电子工业出版社 2 工作队列 下面的代码用于定义一个工作队列和一个底半部执行函数struct work_struct my_wq; /*定义一个工作队列*/void my_wq_func(struct work_struct *work); /*定义一个
2018-01-25 17:00:49 527
原创 混杂设备驱动
1 定义在Linux系统中,存在一类字符设备,它们拥有相同的主设备号(10),但次设备号不同,我们称这类设备为混杂设备(miscdevice)。所有的混杂设备形成一个链表,对设备访问时内核根据次设备号查找到相应的混杂设备2 开发流程3 相关结构体和函数Linux内核使用struct miscdeivce来描述一个混杂设备struct miscdevice { i
2018-01-24 10:42:21 337
原创 Linux编程之使用多路复用
1 推荐博客 https://www.cnblogs.com/Anker/archive/2013/08/14/3258674.html 我自己select()函数的使用和使用多路复用改写服务端代码理解的还不是特别深入,推荐上面的博客。 2 使用select()函数改写服务端源代码 服务端:/*net_selecy.c*///多路复用#include <stdio.h> #in
2018-01-19 16:59:49 555
原创 Linux编程之僵尸进程
1 僵尸进程概述 2 僵尸进程产生的条件 3 如何避免僵尸进程 僵尸进程产生的原因是系统保留了终止进程的状态信息以便于让父进程获得,而父进程在子进程结束之后没有及时回收资源,因此想要避免僵尸进程只需要让父进程及时”收尸“即可。wait()和waitpid()函数,不仅可以获得子进程的返回状态,更重要的是可以回收子进程的资源,也能有效的避免僵尸进程。 一个可行的办法是使用异步的方法
2018-01-19 10:51:09 275
原创 Linux编程之守护进程
1 守护进程的概述2 编写守护进程 (1)fork()创建子进程,exit()使父进程退出 (2)setsid()创建新会话 (3)chdir(“/”)设置工作目录 (4)umask(0)重设文件权限掩码 (5)close()关闭文件描述符3 实例 按照以上步骤创建守护进程,然后让该进程每隔10s向日志文件/tmp/dameon.log写入一句话 //守
2018-01-19 09:39:08 465
原创 linux信号通信---信号集函数组
信号处理的方法主要有两种,一种是使用signal()函数,另一种是使用信号集函数组。实例#include #include #include /*自定义的信号处理函数*/void my_func(int sign_no){ if(sign_no == SIGINT) { printf("\ni have get SIGINT\n");
2018-01-18 21:47:00 519
原创 linux网络编程之异步通信机制
内核通过使用异步I/O,在某一进程需要处理的事件发生(例如,接收到新的连接请求)时,向该进程发送一个SIGIO信号。这样,应用进程不需要不停地等待着某些事件的发生,而可以往下运行,以完成其他的工作。只有收到从内核发来的SIGIO信号时,才去处理它(例如,读取数据)。 异步I/O:使用fcntl()函数实现高效率的异步I/O,首先必须试用fcntl的F_SETOWN命令,使套接字归属于当前进程,以
2018-01-18 17:13:19 2323
原创 linux网络高级编程之非阻塞
在实际应用中,常常遇到多个客户端连接服务器的情况。如果资源没有准备好,则调用该函数的进程将进入睡眠状态,这样就不能处理其他请求了。有三种解决I/O多路复用的方式,分别为非阻塞和异步处理,以及多路复用处理。实例采用fcntl()函数将套接字设置为非阻塞I/O/*nonblock_server.c*//*nonblock_server.c*//*server.c*///使用fcntl()将套接字设
2018-01-18 16:15:16 542
原创 linux编程——套接字编程
一 TCP协议socket编程流程图二 编程实例/*server.c*//*server.c*///tcp网络协议编程#include #include #include #include #define PORT 4321#define MAX_QUE_CONN_NM 5#define BUFFER_SIZE 1024int main(){ int
2018-01-18 15:32:34 398
原创 多线程实验之”生产者——消费者“问题
一 实例 参考书籍《从实践中学linux应用程序开发》/*producer-customer.c*/#include #include #include #include #include #include #include #include #include #include #include #define MYFIFO "myfifo" /*缓冲区有名管道
2018-01-17 19:24:30 1523 1
原创 线程之间的同步与互斥
一 互斥锁 互斥锁机制主要包括以下基本函数 互斥锁初始化 pthread_mutex_init() 互斥锁上锁 pthread_mutex_lock() 互斥锁判断上锁 pthread_mutex_trylock() 互斥锁解锁 pthread_mutex_unlock() 删除互斥锁 pthread_mutex_destory()二 实例 在
2018-01-17 14:28:39 434
原创 linux多线程编程
一 线程 线程就是“轻量级”的进程,线程与创建它的进程共享代码段和数据段,线程拥有自己独立的栈。 ------此处建议参考《计算机操作系统》(第三版)汤小丹
2018-01-17 10:04:07 375 2
原创 消息队列编程
一 消息队列 消息队列就是一些消息的列表,用户可以在消息队列中添加消息和读取消息灯。消息队列具有一定的FIFO特性,但是它可以实现消息的随机查询,比FIFO更具有优势。同时,这些消息又是存在于内核中的,由“队列ID”来标识。二 函数学习三 实例 在该实例当中,发送端发送的消息类型设置为该进程的进程号(也可以取其他值),因此接受端根据消息类型来确定消息发送者的进程号。mess
2018-01-16 16:57:32 680
原创 共享内存
一 共享内存概念 共享内存是IPC机制中的一种,它允许两个不相关的进程访问同一段内存,这是传递数据的一种非常有效地方式。 共享存储区(Shared Memory)机制是UNIX 系统中通信速度最高的一种通信机制。该机制一方面可使若干进程共享主存中的某个区域,且使该区域出现在多个进程的虚地址空间中。另一方面,在一个进程的虚地址空间中又可连接多个共享存储区,每个共享存储区都有自己的名字
2018-01-16 10:40:39 837
原创 信号量互斥编程
一 公示栏问题1 公示栏问题程序化 两个同学交叉的使用公示栏发布公告,导致两者的信息发布的都不对 astudent: class match cancel bstudent: english examastudent://a student 写入数据后进行休息,然后再进行写入数据#include#include#includevoid main(){
2018-01-15 20:07:35 426
stm32低功耗之待机模式
2016-09-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人