- 博客(15)
- 收藏
- 关注
原创 wait_event_interruptible返回-ERESTARTSYS(-512)
最近做一个驱动,在等待FPGA结果的时候调用wait_event_interruptible,期望能进入睡眠状态,并且在需要的时候可以使用ctrl+c杀死进程,但是在使用过程中发现wait_event_interruptible一直返回-ERESTARTSYS(-512)值,究其原因是因为在wait_event_interruptible里会调用signal_pending(current)检查当...
2018-09-22 17:53:59
4900
原创 PCIe驱动调试过程中遇到的问题
PCIe驱动和fpga设备调试遇到的问题解决问题1. FPGA设备通过PCIe读取DDR内容失败现象:观察FPGA侧的PCIe核,发现在执行一段时间后,PCIe核发出读存储器请求,不能得到内存的数据;同时系统侧通过lspci -vvv命令发现设备的UESta信息出现overflow标志(RxOF+)。通过与正常系统上的PCIe设备的配置空间内容比较,发现我们设备的DevCtl设置了E...
2018-08-24 12:00:50
6155
1
原创 Linux x86_64/arm 分配大块物理连续内存
Linux x86 分配大于4M空间的内存实现一个PCIe设备驱动,需要分配几个128M的物理连续内存作为DM缓冲区,受制于伙伴系统最多分配4M,所以需要使用到CMA机制,来分配大块的物理连续内存:硬件平台:x86_64 软件平台:CentOs7.4 linux-3.10.0linux在x86下支持cma在x86下linux的swiotlb是使能的,这种情况下cma是不使能的,所以dm...
2018-04-18 20:08:42
2868
原创 linux USB调试
配置内核打开调试选项:Kernel hacking ---> [*] Debug Filesystem 挂载调试程序文件系统:mount -t debugfs none /sys/kernel/debug抓取总线0上的数据:cat /sys/kernel/debug/usb/usbmon/0u
2016-11-17 22:31:59
1225
原创 [linux系统编程]网络编程 服务器多路复用
作为一个命令台使用的服务器:#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #in
2014-01-27 16:53:39
523
原创 [linux系统编程]System V IPC 消息队列
//进程1 int msg_id = -1; if((msg_id = msgget((key_t)MSG_R_KEY, 0777|IPC_CREAT)) == -1 ) //创建或者获取KEY值的消息队列 { printf("msgget failure!!!\n"); return (-1); }
2014-01-24 11:16:25
765
原创 [linux系统编程]System V IPC 共享内存
用于Linux进程通信共享内存。 int segment_id; char *shared_memory; segment_id = shmget((key_t)123457, size, IPC_CREAT | 0644); //创建或者获取size字节的与KEY值相等的共享内存 if(segment_id == -1) {
2014-01-24 10:05:47
1010
原创 [linux系统编程]System V IPC 信号量做进程间互斥
static int sem_id;int lock_db(){ struct sembuf sops; sops.sem_num = 0; sops.sem_op = -1; sops.sem_flg = SEM_UNDO; //sops.sem_flg = 0; return semop(sem_id, (struct sembuf *)
2014-01-23 10:22:42
528
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人