Linux内核驱动
Tasdily
脚踏实地,砥砺前行!程序猿最帅气课代表。。。
展开
-
编译grpc的过程中缺少库zlib package,报错:Package zlib, required by grpc, not found
问题描述在安装grpc的时候发现缺少相关依赖环境,报错:configure: error: Package requirements (grpc++ >= 1.17.0 grpc >= 7.0.0) were not met:Package 'zlib', required by 'grpc', not found到网上搜了相关教程,感觉杂乱不堪,摸索中安装特此记录安装过程:ubuntu下安装使用zlib库zlib是提供数据压缩用的函式库,我们先要在官方下载zli.原创 2020-05-20 22:50:53 · 3538 阅读 · 0 评论 -
Ubuntu手动挂载Windows共享文件夹命令
命令先直接给出:sudo mount -t cifs -o username=tasdily,password=115xck129,rw,file_mode=0777,dir_mode=0777,uid=0,gid=0 //192.30.42.193/TasdilyShare /mnt/shared先解释下这个命令相关参数的意义:mount:挂载-t:vfstype 指定文件系统的...原创 2020-03-21 22:40:46 · 4775 阅读 · 0 评论 -
网络设备之监测连接状态
通常网络设备会定时地检测设备是否处于可传递状态。当状态发生变化时,会调用netif_carrier_on或者netif_carrier_off来通知内核;从网上设备插拔网线或者另一端的设备关闭或禁止,都会导致连接状态改变;netif_carrier_on—-设备驱动监测到设备传递信号时调用netif_carrier_off—-设备驱动监测到设备丢失信号时调用上述两个状态改变函数均会...转载 2019-12-14 00:03:55 · 1895 阅读 · 1 评论 -
linux中Workqueue机制的分析—— create_workqueue和create_singlethread_workqueue 的使用和区别
软硬件协同设计是未来发展的主流,软硬件的界限越来越模糊,软硬件的设计思想是相通的,实现方法是各异的,实现的结果上当然也存在较大差别,因此,很有必要做好软硬件的协同设计。什么是workqueue?Linux中的Workqueue机制就是为了简化内核线程的创建。通过调用workqueue的接口就能创建内核线程。并且可以根据当前系统CPU的个数创建线程的数量,使得线程处理的事务能够并行化。workq...转载 2019-12-13 14:25:45 · 2028 阅读 · 0 评论 -
系统调用函数mmap和内核驱动mmap之间的联系与区别以及mmap原理详解以及实现内核用户空间之间的共享内存
mmap基础概念如果没有mmap,只有ioremap:那么将内核空间虚拟地址映射到物理内存/设备内存后,这段虚拟内存若想被用户空间使用,必然存在一个"从内核空间向用户控件内存拷贝"的过程。(深入linux设备驱动内核机制ch10.)malloc一般就是通过系统调用brk()+mmap()实现的mmap是一种内存映射文件的方法,即将一个文件或一块设备内存(如设备寄存器)映射到进程的地...转载 2019-12-06 20:46:02 · 2396 阅读 · 0 评论 -
linux /proc/pid/maps 文件信息分析
Proc/pid/maps显示进程映射了的内存区域和访问权限。对应内核中的操作集为proc_pid_maps_op,具体的导出函数为show_map。内核中进程的一段地址空间用一个vm_area_struct结构体表示,所有地址空间存储在task->mm->mmap链表中。一个文件可以映射到进程的一段内存区域中,映射的文件描述符保存在vm_area_struct->vm...转载 2019-11-25 14:49:01 · 6539 阅读 · 0 评论 -
Linux驱动mmap内存映射详解及例子实现
mmap在linux哪里?什么是mmap?上图说了,mmap是操作这些设备的一种方法,所谓操作设备,比如IO端口(点亮一个LED)、LCD控制器、磁盘控制器,实际上就是往设备的物理地址读写数据。但是,由于应用程序不能直接操作设备硬件地址,所以操作系统提供了这样的一种机制——内存映射,把设备地址映射到进程虚拟地址,mmap就是实现内存映射的接口。操作设备还有很多方法,如ioctl...转载 2019-11-24 19:51:06 · 4912 阅读 · 3 评论 -
KVM详解,教科书般的经典讲解
KVM 介绍(1):简介及安装http://www.cnblogs.com/sammyliu/p/4543110.html学习 KVM 的系列文章:(1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接分配和 SR-IOV (5)libvirt 介绍 (6)No...转载 2019-11-14 17:11:01 · 3555 阅读 · 0 评论 -
零拷贝原理详解
引言传统的 Linux 操作系统的标准 I/O 接口是基于数据拷贝操作的,即 I/O 操作会导致数据在操作系统内核地址空间的缓冲区和应用程序地址空间定义的缓冲区之间进行传输。这样做最大的好处是可以减少磁盘 I/O 的操作,因为如果所请求的数据已经存放在操作系统的高速缓冲存储器中,那么就不需要再进行实际的物理磁盘 I/O 操作。但是数据传输过程中的数据拷贝操作却导致了极大的 CPU 开销,限制了操...转载 2019-11-11 20:21:37 · 60460 阅读 · 6 评论 -
epoll概述和epoll内核源码分析(epoll最全讲解)
epoll概述epoll是linux中IO多路复用的一种机制,I/O多路复用就是通过一种机制,一个进程可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。当然linux中IO多路复用不仅仅是epoll,其他多路复用机制还有select、poll,但是接下来介绍epoll的内核实现。网上关于epoll接口的介绍非常多,这个不是我关注的重点,但是还...转载 2019-11-11 16:28:49 · 1840 阅读 · 0 评论 -
epoll事件通知机制详解,水平触发和边沿触发的区别
看到网上有不少讨论epoll,但大多不够详细准确,以前面试有被问到这个问题。不去更深入的了解,只能停留在知其然而不知其所以然。于是,把epoll手册翻译一遍,更深入理解和掌握epoll事件处理相关知识,也涉及到了操作系统内核的知识。EPOLL(7) Linux Programmer's Manual NAMEepoll - I/O...转载 2019-11-11 16:26:13 · 1733 阅读 · 0 评论 -
Linux下DIR,dirent,stat等结构体详解
copy from点击打开链接最近在看Linux下文件操作相关章节,遇到了这么几个结构体,被搞的晕乎乎的,今日有空,仔细研究了一下,受益匪浅。首先说说DIR这一结构体,以下为DIR结构体的定义: struct__dirstream { void*__fd; char*__data; int__entry_data;...转载 2019-11-10 22:12:22 · 909 阅读 · 0 评论 -
socket、sock、sk_buff的关系
在Linux2.6中,struct sk_buf承担了socket的输入输出的传输缓存的任务。首先,还是先看struct socket的定义 /** * struct socket - general BSD socket * @state: socket state (%SS_CONNECTED, etc) * @type: socket type (...转载 2019-11-06 10:03:30 · 1731 阅读 · 0 评论 -
UIO用户空间的简单程序经典案例——熟悉UIO程序工作原理以及编译运行过程
1、UIO背景第一,硬件设备可以根据功能分为网络设备,块设备,字符设备,或者根据与CPU相连的方式分为PCI设备,USB设备等。它们被不同的内核子系统支持。这些标准的设备的驱动编写较为容易而且容易维护。很容易加入主内核源码树。但是,又有很多设备难以划分到这些子系统中,比如I/O卡,现场总线接口或者定制的FPGA。通常这些非标准设备的驱动被实现为字符驱动。这些驱动使用了很多内核内部函数和宏。而这些...原创 2019-09-30 10:15:56 · 2072 阅读 · 0 评论 -
Linux源码Kconfig文件语法分析
Kconfig是我们进行内核配置的关键文件,用于生成menuconfig的界面并生成最终确定编译选项的.config文件。关于Kconfig文件的编写规则,在Documentation/kbuild/kconfig-language.txt有详尽的叙述。这里主要用实例进行语法分析。config确定了条目前面是否有选项,menuconfig界面中的条目中一共有3种主动选项,分别是[ ],&l...转载 2019-09-20 14:27:04 · 374 阅读 · 0 评论 -
Linux网络设备驱动-驱动模型
Linux素来以其强大的网络功能著名,同时, 网络设备也作为三大设备之一, 成为Linux驱动学习中必不可少的设备类型, 此外, 由于历史原因, Linux并没有强制对网络设备贯彻其"一切皆文件"的思想, 网络设备不以/dev下的设备文件为接口,用户程序通过socket作为访问硬件的接口。本文以Linux3.14.0内核为例, 讨论Linux中的网络驱动模型Linux的网络设备并不使用文件作为用...转载 2019-09-20 11:25:11 · 667 阅读 · 0 评论 -
Linux设备树语法详解
概念Linux内核从3.x开始引入设备树的概念,用于实现驱动代码与设备信息相分离。在设备树出现以前,所有关于设备的具体信息都要写在驱动里,一旦外围设备变化,驱动代码就要重写。引入了设备树之后,驱动代码只负责处理驱动的逻辑,而关于设备的具体信息存放到设备树文件中,这样,如果只是硬件接口信息的变化而没有驱动逻辑的变化,驱动开发者只需要修改设备树文件信息,不需要改写驱动代码。比如在ARM Linux...转载 2019-09-20 11:11:48 · 965 阅读 · 0 评论