• 2024-07-02内存管理-11-buddy伙伴子系统-2-Per-CPU页帧缓存
    基于msm-5.4一、概述1.实现背景buddy子系统管理的物理页面,绝大多数都是放在zone::free_area[]中的链表中,少部分放在zone::lowmem_reserve[]中。还有少量页面放在zone::__percpupageset这个每CPU变量中,每种迁移类型也都对应一个链表,但是没有order,都是单页大小的内存块。
  • 2024-07-02Android SurfaceFlinger——创建Surface(二十一)
           通过前面的篇文章我们简单了解了Surface和Layer,并且知道了SurfaceComposerClient的createSurface()方法最终创建的其实是一个Layer,这里我们来看一下真正的获取Surface的方法。一、获取Surface       通过系统动画的播放流程中我们知道真正
  • 2024-07-02C++:类与面向对象&static和this关键字&其他关键字
    类与面向对象struct和class(1)struct是C中用户自定义类型,主要功能是对功能相关数据的封装(2)struct不能直接封装函数,但可以通过封装函数指针来间接封装函数(3)struct就是class的初级阶段,class在struct基础上做了很多扩展,便有了面向对象访问权限(1)类是对数据(成员变
  • 2024-07-02linux 4.19 ip重组
    IP重组ip重组这部分4.19内核与3.10内核有些差别,4.9.134以后内核中不使用低水位和工作队列了,同时使用了rhashtable替代了hashbucket的概念,在3.10内核中使用1024个hashbucket,每个bucket中最多存放128个分片队列,在4.19内核中所有的分片队列都保存在可动态调整的rhashtable中
  • 2024-07-01HarmonyOS 开发探索: ArkUI常用样式布局
     ArkUI布局简介ArkUI支持多种布局方式,包括但不限于Column、Row、Stack、Flex等。这些布局方式能够满足不同的UI设计需求,帮助开发者高效地创建复杂的界面。1.Column布局Column布局用于垂直排列子组件,适用于需要纵向排列元素的场景。它在创建列表、表单等界面时非常实用。@
  • 2024-07-01x264 编码器x264.h文件中结构体详细介绍
    x264_picture_t定义:在x264.h文件中定义typedefstructx264_picture_t{/*In:forcepicturetype(ifnotauto)*Ifx264encodingparametersareviolatedintheforcingofpicturetypes,*x264willcorrecttheinputpicture
  • 2024-07-01Golang:go-querystring将struct编码为URL查询参数的库
    Golang:go-querystring将struct编码为URL查询参数的库原创 吃个大西瓜 CodingBigTree 2024-05-0908:30 北京go-querystringisaGolibraryforencodingstructsintoURLqueryparameters.译文:go-querystring将struct编码为URL查询参数的Golang库文档ht
  • 2024-07-01linux内核 list_for_each_entry
    1.linux内核中的list用法在linus内核中,list一般这样使用:structlist_head{structlist_head*priv;structlist_head*next;}structxxx{intvalue;//结构体的真实成员structlist_head*lh;} 2.list遍历结构体xxx里面有structlist_head*lh
  • 2024-06-30struct 和 class 的异同
    在C++编程语言中,struct和class是两个定义数据类型的关键字。尽管它们看起来相似,但它们之间有一些关键的异同。基本定义structstruct是从C语言继承而来的,它用于定义一个结构体(structure),结构体是由多个数据成员组成的一种用户自定义数据类型。在C++中,struct不仅仅用于定义数据
  • 2024-06-30【驱动篇】龙芯LS2K0300之i2c设备驱动
    实验背景由于官方内核i2c的BSP有问题(怀疑是设备树这块),本次实验将不通过设备树来驱动aht20(i2c)模块,大致的操作过程如下:模块连接,查看aht20设备地址编写device驱动,通过i2c_get_adapter注册i2c_client设备编写i2c_driver驱动,需要匹device部分的i2c_device_id编写测试用例,读取两
  • 2024-06-23OpenCL中的SVM使用案例
    SVM(共享虚拟内存)是为了解决向显卡传输数据中包含指针的问题。此时仅用cl::Buffer拷贝数据是不够的,因为数据中的指针会因为拷贝变成野指针。这就需要SVM的帮助,它可以保证数据中的指针到达GPU后仍然可以使用。这里给出一个计算单向链表中数字的和的例子。代码运行环境是VS2017,OpenCL
  • 2024-06-22SElinux内核态的实现-avc、avd的设计篇
    文章目录avc_has_perm的处理逻辑[部分]av_decision访问向量决策的设计allowed、auditallow、auditdenyseqnoflagsavc_has_perm_noaudit检查点函数函数原型参数解释函数逻辑selinux检查结果缓存AVC的设计与实现structselinux_avcstructavc_cacheavc的初始化avc_s
  • 2024-06-22Linux驱动开发笔记(九)IIC子系统及其驱动
    文章目录前言一、IIC驱动框架二、总线驱动2.1iic总线的运行机制2.2重要数据结构2.2.1i2c_driver结构体2.2.2i2c总线结构体2.3匹配规则三、设备树的修改四、设备驱动的编写4.1相关API函数4.1.1i2c_add_adapter()4.1.2i2c_register_driver()4.1.3i2c_transfer
  • 2024-06-22随机链表的复制 && 排序链表
    随机链表的复制题目.-力扣(LeetCode)思路:思路:       ①一个结点一个节点去拷贝,当拷贝了第一个节点的时候,把原节点与拷贝节点连接起来,直接到所有的节点拷贝完毕,这样做的目的是为下一步处理random指针做准备      ②处理random       ③处理
  • 2024-06-21进程(一万字学习笔记)
    ------------------------本文为学习进程记录的学习笔记,如有问题欢迎指正--------------------------目录1.定义2.进程的种类2.进程的内存布局3.进程控制块(PCB)4.进程源语fork()写时复制exec()execl函数wait() #进程回收waitpid()函数5.僵尸进程僵尸进程产生
  • 2024-06-21c语言程序实验————实验报告十三
    c语言程序实验————实验报告十三实验项目名称:实验报告十三结构体运用程序设计实验项目类型:验证性实验日期:2024年5月30日一、实验目的1.掌握结构体类型变量的定义和使用2.掌握结构体类型数组的概念和应用3.掌握结构体类型指针的概念和应用4.掌握共用体的概念和
  • 2024-06-21异步通知实验
    异步通知实验Linux应用程序可以通过阻塞或者非阻塞这两种方式来访问驱动设备,通过阻塞方式访问的话应用程序会处于休眠态,等待驱动设备可以使用,非阻塞方式的话会通过poll函数来不断的轮询.查看驱动设备文件是否可以使用。这两种方式都需要应用程序主动的去查询设备的使用情况,“
  • 2024-06-21PTP简介及Linux phy ptp驱动实现
    1、PTP简介        PTP(precisiontimeprotocol)精确时间协议,是一种时间同步的协议,对应IEEE1588标准,是基于网络数据包的一种时间同步协议,1588v2的同步精度可以达到ns级,但1588协议对硬件有依赖。2、PTP原理          时间同步的核心就是不同时钟源之间
  • 2024-06-20嵌入式Linux中platform平台设备模型的框架(实现LED驱动)
    在前面讨论的所有LED驱动程序中,把全部设备信息和驱动代码都写在了一个文件中,从本质上看,这种开发方式与单片机的开发并没有太大的区别,一旦硬件信息发生变化,就必须要修改驱动程序的源码。然而,Linux作为一个发展成熟、功能齐全、结构复杂的操作系统,它对于代码的可维护性、复用性非常
  • 2024-06-20自定义类型:结构体,枚举,联合
    目录一.结构体1.0 C语言中为什么要引入结构体?1.1 结构体的声明1.2特殊的声明1.3结构体变量的定义和初始化二.枚举1.0类型的定义 1.1我们可以使用#define定义常量,为什么非要使用枚举?三.联合(共用体)1.0联合类型的定义1.1 联合的声明一.结构体1.0 C
  • 2024-06-20【C语言】自定义类型
    目录一、结构体:1、结构体的声明:2、结构体的自引用:3、结构体变量的定义和初始化:4、结构体内存对齐:5、结构体传参:6、位段:二、枚举类型:三、联合体:一、结构体:1、结构体的声明:首先要了解什么是结构:结构是一些值的集合,与数组不同的是结构的每一个成员变量可以使不同
  • 2024-06-20第6章 设备驱动程序(1)
    目录6.1I/O体系结构6.2访问设备6.2.1设备文件6.2.2字符设备、块设备和其他设备6.2.3ioctl寻址设备6.2.4主从设备号的表示6.2.5注册本专栏文章将有70篇左右,欢迎+关注,查看后续文章。6.1I/O体系结构1.扩展硬件总线的作用:        用于连接CPU和外
  • 2024-06-19移植案例与原理 - HDF驱动框架-OSAL
    为了提升驱动代码在不同内核子系统间的可复用能力,OpenHarmonyHDF(HardwareDriverFoundation)驱动框架提供了OSAL(OperatingSystemAbstractionLayer)操作系统抽象层接口。OSAL为驱动程序提供了任务、定时器、互斥锁、信号量等基础库相关接口,使驱动相关的实现不再依赖于具
  • 2024-06-19C语言程序设计-11 结构体与共用体
    11.1定义一个结构的一般形式11.2结构类型变量的说明1.先定义结构,再说明结构变量。2.在定义结构类型的同时说明结构变量。3.直接说明结构变量。11.3结构变量成员的表示方法11.4结构变量的赋值结构变量的赋值就是给各成员赋值。可用输入语句或赋值语句来完成。
  • 2024-06-19Linux 中断实验
    Linux中断实验先来回顾一下裸机实验里面中断的处理方法:①、使能中断,初始化相应的寄存器。②、注册中断服务函数,也就是向irqTable数组的指定标号处写入中断服务函数②、中断发生以后进入IRQ中断服务函数,在IRQ中断服务函数在数组irqTable里面查找具体的中断处理函数,找