logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

Linux内核NETLINK驱动

1. Linux内核netlink在内核态与用户态的交互中,字符设备/sys节点等通信方式上只能单向通信,并且应用层需要读取相应数据时只能循环遍历,当数据比较大时会影响程序运行上下文时间。当前存在的需求不仅仅是内核将事件上报,需要在内核中实现类型select超时接收用户态信息。本文主要记录学习过程中遇到的几个问题:内核使用组播组发送消息到应用层;内核使用单播发送消息到应用层应用层使用组播组发送消息

#linux#网络
Linux内核自旋锁

一、自旋锁概念自旋锁(spin lock)是一种对临界资源进行互斥所访问的典型手段,它是为防止多处理器并发而引入的一种锁,在内核钟大量用于中断处理部分。对于单处理器来说,防止中断钟的并发可简单采用关闭中断的方式,直接打开关闭中断不需要自旋锁。自旋锁在锁定的时候不会休眠,一直等待尝试,因此不合适进行长时间的锁保持。自旋锁要慎用,只有在内核可抢占式或SMP的情况下才会用到,自旋锁适用于锁使用者保持锁的

#linux
Linux内核等待队列

1. Linux内核等待队列Linux内核的等待队列是以双循环链表为基础数据结构,与进程调度机制紧密结合,能够用于实现核心的异步时间通知机制。在网络编程中,我们发送数据总要在收到反馈信息的时候才能发送下一帧数据,上层应用开发我们使用的iotcl进行读写控制时,底层便是以此开发比较合理。Linux内核休眠唤醒机制,在本文指的是在驱动运行的过程中可以使进程以休眠的方式等待数据,当事件发生的时候将其唤醒

#linux
Linux内核IOREMAP驱动

1 Linux内核IOREMAP驱动在内核驱动的代码中,存在大量代码使用ioremap进行物理地址和虚拟地址映射,使得内核更加容易操作硬件,对比于简单的gpio控制,实际的代码同样是使用了ioremap进行映射封装。2 ITOP4412示例2.1 硬件手册本次测试使用LED3(同理LED2),查看原理图或设备树可知 具体引脚号。当前使用的为LED3,使用时需要将设备树使用到的节点进行删除。因为设备

文章图片
#linux#其他
Linux内核工作队列

1 Linux workqueue工作队列Linux中的Workqueue机制就是为了简化内核线程的创建。通过调用workqueue的接口就能创建内核线程。并且可以根据当前系统CPU的个数创建线程的数量,使得线程处理的事务能够并行化。workqueue是内核中实现简单而有效的机制,他显然简化了内核daemon的创建,方便了用户的编程.它总是在进程上下问进行执行,并且可以执行中断下半部操作,允许重新

#linux
Linux内核Netconsole

1. netconsole当量产或试产的机器已经出货,产品出现系统问题却不能像应用层可以获取日志进行分析,出现问题只能拆机监听uart串口,因此将内核调试信息传递到网络并且查看成为一个产品所支持的必要手段。netconsole就是把内核调试信息通过网络传递到本地输出,完美解决痛点。2. netconsole编译netconsole默认是编译进内核,并且是可选编译的。以下以hi3516ev300sd

#linux
Linux内核线程驱动

1. Linux内核线程相关Linux内核线程问题Linux内核线程与工作队列有什么区别?workqueue是kthread的高一级别封装,可以让你把独立的,短时可以完成的工作推入队列中,然后由所指定的线程顺序执行。2. Linux内核线程知识点2.1 Linux内核完成量include/linux/completion.h(参考内核代码Linux-2.6.15.7)struct completi

#linux
到底了