标签 struct 下的文章

  • 📂Linux 内核:设备驱动模型 平台设备驱动教程

    介绍Linux系统的驱动框架主要就是三个主要部分组成,驱动、总线、设备。随着电子行业的发展,控制器越来越强大,SOC(片上系统)出现了:在片内的CPU外围集成很多外设电路,这些外设都挂接在SOC内部的总线上。不同于IIC、SPI和USB等这一类实际存在外部PCB走线总线,片内外设从Chip之外是看不到的。为了统一驱动架构抽象,所以Linux从2.6版本开始引入了platform bus这个虚...

  • 📂linux bcm43455 wifi led状态灯调试教程

    前言: wifi 状态灯在嵌入式项目中很常见,同过状态灯可以判断wifi是否正常工作,不同的led status,可以表示数据发,收等。在nxp项目中,用到的是bcm43455 wifi (博通ap6255),需要增加一个led灯来表示wifi是否正常工作。有以下方案: 方案一:bcm43xx ap硬件有先关的led-gpio,由硬件来完成 方案二:无led-gpio,需要...

  • 📂进程描述符教程

    进程描述符(task_struct)包含了内核管理进程所需的全部信息,在kernel2.6之前,task_struct在创建进程时保存在内核栈的尾部,在kernel2.6之后,由slab分配器分配task_struct结构(通过预先分配和重复使用task_struct,可以避免动态分配和释放所带来的资源消耗),此时在内核栈thread_info结构有一个指向进程描述符的指针:current_...

  • 📂《操作系统真象还原》第十一章 ---- 实现用户进程 欺骗CPU通彻进程原理 眺望终点到达还需砥砺前行教程

    文章目录相关查阅博客链接本书中错误勘误定义并初始化TSS修改后的global.h编写后的tss.c编写后的tss.h修改后的init.c修改后的MakeFilemake all 验证成果实现用户进程进程相关的内存分配理解进程相关的创建进程理解修改后的thread.h修改后的global.h修改后的memory.c修改后的memory.h编写后的process.c编写后的process.h修改...

  • 📂Linux 网络层收发包流程及 Netfilter 框架浅析教程

    本文作者:sivenzhang,腾讯 IEG 测试开发工程师1. 前言本文主要对 Linux 系统内核协议栈中网络层接收,发送以及转发数据包的流程进行简要介绍,同时对 Netfilter 数据包过滤框架的基本原理以及使用方式进行简单阐述。内容如有理解错误而导致说明错误的地方,还请指正。如存在引用而没有添加说明的,也请及时告知,非常感谢!2. 基础网络知识2.1 网络分层模型OSI 模型中将网...

  • 📂linux虚拟文件系统(一)-文件系统架构教程

    Linux支持的文件系统有很多,比如Ext2、ext3、ext4、Reiserfs、Xfs、jfs、vfat、NTFS、ubifs等等。Linux为了屏蔽这些不同文件系统之间接口的差异,抽象出了虚拟文件系统(VFS),为下层的文件系统提供统一的系统调用接口。VFS使得用户可以直接使用open,read,write这样的系统调用而无需考虑具体的文件系统弄和介质。 Linux能够支持各种不同...

  • 📂【linux驱动基础】linux工作队列work_struct,delayed_work的使用教程

    工作队列work_struct,delayed_work的使用工作队列,work_struct1、定义 static struct work_struct work; static void work_callback_func(struct work_struct *work) { } 2、初始化 INIT_WORK(&work, work_callback_func)...

  • 📂linux学习-设备树教程

    设备树一,格式label:[email protected]二,标准属性1.compatible属性格式:“manufacturer,model”厂商,驱动名字根节点的compatible属性是为了匹配linux内核是否支持此设备2.model属性model也是一个字符串,描述设备模块信息exp:model=“wm8960-audio”3.status属性也是字符串,表示设备的状态...

  • 📂Linux 编写一个 字符设备驱动教程

    Linux-DEVICE_ATTR()介绍及使用示例驱动中动态创建设备号、设备节点<pre class="brush:cpp;gutter:true;">#include <linux/init.h> #include <linux/module.h> #include <linux/kernel.h> #include &...

  • 📂Linux网络收包总览教程

    因为要对百万、千万、甚至是过亿的用户提供各种网络服务,所以在一线互联网企业里面试和晋升后端开发同学的其中一个重点要求就是要能支撑高并发,要理解性能开销,会进行性能优化。而很多时候,如果你对Linux底层的理解不深的话,遇到很多线上性能瓶颈你会觉得狗拿刺猬,无从下手。我们今天用图解的方式,来深度理解一下在Linux下网络包的接收过程。还是按照惯例来借用一段最简单的代码开始思考。为了简单起见,我...

  • 📂CS162_HW2: Shell教程

    CS162_HW2: Shell作业要求:实现cd、pwd指令运行Program Execution解析路径输入输出重定向Optional:管道信号处理和停止控制前台、后台切换Get Started作业提供了Shell的骨架代码,包括一个分词工具tokenizer.c和shell的初始化、一个最简单的exit内建命令tokenizer.c的用法: int msg_namelen; ...

  • 📂Linux内核驱动:gpio模拟i2c驱动(待完善)教程

    目录一、配置1. config配置2. dts配置二、代码分析三、应用读写本文基于linux 4.19 版本内核进行分析。 Linux内核很多驱动都使用到I2C子系统。EEPROM、RTC,电池,tp等。 inux内核的i2c-gpio是使用GPIO模拟I2C协议的驱动,在内核中已经实现了,我们要做的只需要配置2根GPIO即可。 GPIO模拟I2C协议的驱动位于drivers/i...

  • 📂在Linux中用C语言写一个自己的ls -l命令教程

    在Linux中用C语言写一个自己的ls-l命令在Linux中我们会经常使用ls -l 这条命令来查看文件信息,但是这个命令到底是怎么实现的呢?下面我就带大家用C语言来实现ls -l 这条命令,直接上代码吧:#include <stdio.h> #include <string.h> #include <stdlib.h> #include <sys/...

  • 📂进程创建教程

    fork 是一个系统调用,流程的最后会在 sys_call_table 中找到相应的系统调用 sys_fork。SYSCALL_DEFINE0(fork) { ...... return _do_fork(SIGCHLD, 0, 0, NULL, NULL, 0); } long _do_fork(unsigned long clone_flags, unsign...

  • 📂结构体内存对齐(涉及#pragma pack() 和 offsetof)教程

    结构体内存对齐 - (计算结构体大小) - 拿空间换取时间的做法-对齐规则1.第一个成员在与结构体变量偏移量为0的地址处2.其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处对齐数 = 编译器默认的一个对齐数 与 该成员大小 比较取的较小值vs 默认是 8 , gcc没有默认对齐数-对齐数就是该成员大小3.结构体总大小为最大对齐数(每个成员变量都有一个对齐数)的整数倍-代码实例<p...

  • 📂Linux 内核:设备树(1)dtb格式教程

    Linux 内核:设备树(1)dtb格式背景==================================================================dtb作为二进制文件被加载到内存中,然后由内核读取并进行解析,如果对dtb文件的格式不了解,那么在看设备树解析相关的内核代码时将会寸步难行,而阅读源代码才是了解设备树最好的方式。所以,如果需要更透彻的了解设备树解析的细...

  • 📂Linux网桥工作原理与实现教程

    Linux网桥工作原理与实现 ===================================Linux 的 网桥 是一种虚拟设备(使用软件实现),可以将 Linux 内部多个网络接口连接起来,如下图所示:而将网络接口连接起来的结果就是,一个网络接口接收到网络数据包后,会复制到其他网络接口中,如下图所示:如上图所示,当网络接口A接收到数据包后,网桥 会将数据包复制并且发送给连接到 网...

  • 📂timerfd是Linux为用户程序提供的一个定时器接口教程

    timerfd是Linux为用户程序提供的一个定时器接口。这个接口基于文件描述符,通过文件描述符的可读事件进行超时通知,因此可以配合select/poll/epoll等使用。timerfd_create()函数#include <sys/timerfd.h> int timerfd_create(int clockid, int flags); /* timerfd_crea...

  • 📂linux kernel进程切换(寄存器保存与恢复)教程

    在threadA执行时,被调度了执行了threadB, 那么在threadB执行完之后是如何恢复threadA进程能够继续执行的呢?我们从代码中去寻找答案, 系统调度是schedule()函数,那么我们就从schedule()函数看起 schedule() --> __schedule(true) --> context_switch(rq, prev,next) -->...

  • 📂linux kernel变长数组使用示例教程

    在一个结构体中,定义了长度为0的数组,而我们有希望这个变成数组和结构体是物理连续的,如图所示: 可以参考linux kernel的代码,如下所示:struct skcipher_sg_list { struct list_head list; int cur; struct scatterlist sg[0]; }; #define MAX_SGL_ENTS ((4...

  • 📂linux kernelcrypto api学习教程

    struct blkcipher_walk { union { struct { struct page *page; unsigned long offset; } phys; struct { u8 *page; u8 *addr; ...

  • 📂Linux系统中链表的骚操作教程

    文章目录Linux系统内核队列的骚操作一、常规链表的实现二、Linux中的链表实现1. 链表节点的结构2. 数据节点3. 通过结构体成员访问结构体自身3.1 计算结构体成员的偏移量3.2 得到结构体本身的地址4. 组成链表Linux系统内核队列的骚操作本系统仿照Linux中的队列实现是一个双向链表,个人认为Linux中的双向链表实现简直太妙了。一、常规链表的实现在学习数据结构课程时,都学过双...

  • 📂TCP/IP协议栈在Linux内核中的运行时序分析【万字长文】教程

    1 Linux概述1.1 Linux操作系统架构简介Linux操作系统总体上由Linux内核和GNU系统构成,具体来讲由4个主要部分构成,即Linux内核、Shell、文件系统和应用程序。内核、Shell和文件系统构成了操作系统的基本结构,使得用户可以运行程序、管理文件并使用系统。内核是操作系统的核心,具有很多最基本功能,如虚拟内存、多任务、共享库、需求加载、可执行程序和TCP/IP网络功能...

  • 📂Linux块设备驱动-ramdisk模拟磁盘教程

    前言写文章的目的是想通过记录自己的学习过程,以便以后使用到相关的知识点可以回顾和参考。一、块设备驱动框架.1、 block_device 结构体linux 内核使用 block_device 表示块设备, block_device 为 一 个 结 构 体 , 定 义 在 include/linux/fs.h 文件中,结构体内容如下:struct block_device { dev_...

  • 📂(todo)Linux 内核:设备驱动模型(0)sysfs与kobject基类教程

    (todo)Linux 内核:设备驱动模型(0)sysfs与kobject背景===================================================================================学习Linux 设备驱动模型时,对 kobject 不太理解。因此,学习了一下。现在我知道了:kobj/kset是如何作为统一设备模型的基础,以及到底...

  • 📂Linux 内核:设备驱动模型(1)driver-bus-device与probe教程

    Linux 内核:设备驱动模型(1)driver-bus-device与probe ==============================================================参考:https://blog.csdn.net/lizuobin2/article/details/51570196https://blog.csdn.net/qq_69553800...

  • 📂linux字符设备驱动开发教程

    linux字符设备驱动开发从驱动框架图可以看出,在Linux操作系统中,用户要想使用外接硬件设备,是通过调用库函数获取设备文件,通过设备文件调用驱动,驱使硬件设备完成工作。设备驱动框架图-字符设备、字符设备驱动与用户空间访问该设备的程序三者之间的关系字符设备驱动模型文章目录linux字符设备驱动开发设备驱动框架图字符设备、字符设备驱动与用户空间访问该设备的程序三者之间的关系字符设备驱动模型前...

  • 📂Socket套接字的速率控制(linux)教程

    发送端系统:ubuntu18.04 接收端系统:ubuntu18.04 最近要做一些socket的实验,我对socket也不大了解,不过socket还算是比较好学的,算是在应用层和传输层中间,给你提供了调用了传输协议的api,还是很友好的哦! 哦吼!我要对socket发送文件的速率进行限制,想要把文件传输速率限制到想要设置的速率。大概原理如下:一、主要原理比如说,我要把文件的传输...