腾讯云
开发者社区
文档
建议反馈
控制台
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
返回腾讯云官网
linux驱动个人学习
专栏作者
举报
698
文章
1317476
阅读量
180
订阅数
订阅专栏
申请加入专栏
全部文章(698)
编程算法(170)
linux(158)
其他(78)
kernel(57)
android(55)
缓存(53)
内核(36)
数据结构(35)
内存(24)
c++(22)
node.js(22)
单片机(21)
打包(20)
进程(20)
arm(19)
api(19)
http(19)
系统(19)
存储(18)
java(17)
硬件开发(16)
数据(16)
tcp/ip(14)
程序(14)
host(12)
c 语言(11)
腾讯云测试服务(11)
proc(11)
函数(11)
接口(10)
ide(9)
struct(9)
usb(9)
数据库(8)
容器(8)
编译(8)
git(7)
unix(7)
网站(7)
数据分析(7)
core(7)
driver(7)
指针(7)
shell(6)
二叉树(6)
系统架构(6)
device(6)
io(6)
sys(6)
性能(6)
c#(5)
xml(5)
汇编语言(5)
文件存储(5)
网络安全(5)
bit(5)
cpu(5)
init(5)
磁盘(5)
内存管理(5)
调试(5)
线程(5)
javascript(4)
sql(4)
命令行工具(4)
面向对象编程(4)
gcc(4)
任务调度(4)
clock(4)
max(4)
操作系统(4)
队列(4)
对象(4)
工具(4)
管理(4)
架构(4)
配置(4)
异常(4)
主机(4)
go(3)
makefile(3)
github(3)
容器镜像服务(3)
云函数(3)
云推荐引擎(3)
人工智能(3)
electron(3)
开源(3)
flash(3)
windows(3)
https(3)
nat(3)
迁移(3)
back(3)
count(3)
data(3)
int(3)
interface(3)
monitor(3)
panel(3)
pid(3)
set(3)
state(3)
task(3)
工作(3)
排序(3)
前端(3)
事件(3)
统计(3)
文件系统(3)
硬件(3)
ios(2)
python(2)
bash(2)
css(2)
html(2)
嵌入式(2)
access(2)
jar(2)
搜索引擎(2)
消息队列 CMQ 版(2)
检测工具(2)
serverless(2)
爬虫(2)
opencv(2)
udp(2)
kvm(2)
大数据(2)
安全(2)
kafka(2)
sdk(2)
action(2)
add(2)
buffer(2)
byte(2)
class(2)
config(2)
controller(2)
display(2)
dto(2)
fifo(2)
gpio(2)
input(2)
iso(2)
ld(2)
limit(2)
lock(2)
malloc(2)
overlay(2)
pixel(2)
root(2)
shared(2)
spi(2)
status(2)
trace(2)
video(2)
变量(2)
编码(2)
定时器(2)
服务(2)
后端(2)
基础(2)
链表(2)
连接(2)
设计(2)
实践(2)
数组(2)
索引(2)
同步(2)
效率(2)
协议(2)
优化(2)
字符串(2)
负载均衡(1)
官方文档(1)
php(1)
actionscript(1)
.net(1)
scala(1)
jquery ui(1)
jquery(1)
ajax(1)
android studio(1)
listview(1)
composer(1)
memcached(1)
vba(1)
ubuntu(1)
bash 指令(1)
solaris(1)
深度学习(1)
批量计算(1)
访问管理(1)
NAT 网关(1)
SSL 证书(1)
文字识别(1)
视频处理(1)
图像处理(1)
数据备份(1)
vr 视频解决方案(1)
数据安全(1)
游戏(1)
分布式(1)
黑客(1)
jvm(1)
ssh(1)
正则表达式(1)
gui(1)
asp(1)
ftp(1)
jenkins(1)
iis(1)
socket编程(1)
ntp(1)
小程序(1)
机器人(1)
物联网(1)
虚拟化(1)
小程序·云开发(1)
amp(1)
app(1)
arm64(1)
assert(1)
bat(1)
block(1)
bluetooth(1)
bootloader(1)
button(1)
channel(1)
char(1)
children(1)
default(1)
detect(1)
dp(1)
dpi(1)
dt(1)
dynamic(1)
elf(1)
equals(1)
error(1)
expression(1)
file(1)
filter(1)
google(1)
gpt(1)
header(1)
i2c(1)
include(1)
instance(1)
jni(1)
libc(1)
load(1)
loading(1)
local(1)
ls(1)
map(1)
matplotlib(1)
message(1)
migrate(1)
mips(1)
mmap(1)
module(1)
mutex(1)
output(1)
parent(1)
path(1)
point(1)
port(1)
profile(1)
provider(1)
qemu(1)
report(1)
route(1)
samsung(1)
save(1)
screen(1)
selection(1)
self(1)
semaphore(1)
stack(1)
static(1)
stderr(1)
summary(1)
super(1)
swap(1)
target(1)
text(1)
tools(1)
transfer(1)
translation(1)
transparent(1)
trim(1)
txt(1)
widget(1)
width(1)
x86(1)
备份(1)
编程(1)
编译器(1)
测试(1)
程序设计(1)
多线程(1)
二进制(1)
翻译(1)
高性能(1)
加密解密(1)
监控(1)
蓝牙(1)
命令行(1)
内存泄漏(1)
日志(1)
软件(1)
软件架构(1)
软件开发(1)
手机(1)
树莓派(1)
算法(1)
网络(1)
芯片(1)
虚拟机(1)
压缩(1)
异常处理(1)
语法(1)
源码(1)
原型(1)
状态机(1)
嵌入式系统(1)
搜索文章
搜索
搜索
关闭
BPF BTF 详解
字符串
数据结构
编码
程序
内核
BTF(BPF Type Format)是内嵌在BPF(Berkeley Packet Filter)程序中的数据结构描述信息。BPF原本是用于数据包过滤的编程语言,但随着eBPF(extended BPF)的发展,它的用途已经扩展到多种内核子系统中,包括性能监测、网络安全和配置管理等。 BTF是为了实现更复杂的eBPF程序而设计的。其提供了一种机制,通过它可以将编程时使用的数据结构(如C语言中的结构体、联合体、枚举等)的信息嵌入到eBPF程序中。这样做的主要目的是为了让eBPF程序在运行时能够具有类型安全(Type Safety),同时也便于内核和用户空间的程序理解和操作这些数据结构。 在eBPF程序开发过程中,用户通常会在用户空间编写C代码,然后使用特定的编译器(如clang)编译这些代码为eBPF字节码。由于C程序中定义的复杂数据结构信息在编译为eBPF字节码过程中会丢失,因此BTF被设计来保留这些信息。当eBPF程序加载到内核时,BTF信息可以被内核使用,以确保程序操作的数据结构与内核预期的一致,从而保证程序的正确运行。 举个例子,如果eBPF程序需要访问内核数据结构,BTF就能够提供这些内核数据结构的确切布局,让eBPF程序能够安全而准确地读取或修改这些数据。 总之,BTF使得eBPF程序能更安全且方便地与复杂的数据类型互动,并有助于提高eBPF程序与内核间的兼容性和稳定性。
233333
2024-03-08
88
0
/proc/zoneinfo
数据结构
proc
内存
内核
系统
通过查看 /proc/zoneinfo 文件,您可以了解内核如何管理系统的物理内存,并获得有关内存分配和使用的重要信息。请注意,这些信息特定于您的系统和内核配置,可能会因系统和内核版本而有所不同。
233333
2023-11-10
284
0
Linux内存管理2.6 -反向映射RMAP(最终版本)
linux
数据结构
struct
进程
内存管理
所谓反向映射是相对于从虚拟地址到物理地址的映射,反向映射是从物理页面到虚拟地址空间VMA的反向映射。
233333
2023-08-14
466
0
ftrace之function及function_graph使用
shell
数据结构
一 用途 (1)function 主要用于跟踪内核函数的调用栈(其被调用过程) (2)function_graph 主要用于跟踪内核函数内部调用流程及耗时 这两个对内核性能分析的作用不大,主要用来梳理内核模块的逻辑 二 使用 (1)function 使用 /sys/kernel/debug/tracing # echo nop > current_tracer ----清空跟踪器 /sys/kernel/debug/tracing # echo drm_open > set_ftrace
233333
2023-03-08
551
0
USB总线-Linux内核USB3.0设备控制器复合设备之USB gadget configfs分析(七)
编程算法
kernel
数据结构
configfs是基于ram的文件系统,与sysfs的功能有所不同。sysfs是基于文件系统的kernel对象视图,虽然某些属性允许用户读写,但对象是在kernel中创建、注册、销毁,由kernel控制其生命周期。而configfs是一个基于文件系统的内核对象管理器(或称为config_items),config_items在用户空间通过mkdir显式的创建,使用rmdir销毁,在mkdir之后会出现对应的属性,可以在用户空间对这些属性进行读写,与sysfs不同的是,这些对象的生命周期完全由用户空间控制,kernel只需要响应用户空间的操作即可。configfs和sysfs两者可以共存,但不能相互取代。
233333
2023-01-01
9.5K
0
ftrace利器之trace-cmd和kernelshark
命令行工具
数据结构
unix
trace-cmd是设置读取ftrace的命令行工具,kernelshark既可以记录数据,也可以图形化分析结果。
233333
2022-12-30
873
0
USB总线-Linux内核USB3.0设备控制器之dwc3 gadget驱动初始化过程分析(五)
http
数据结构
编程算法
USB设备控制器(UDC)驱动的框图如下图所示,由三部分组成。第一部分是UDC驱动核心层,在drivers/usb/gadget/udc/core.c文件中实现,该层是一个兼容层,将USB Function驱动和具体的USB gadget驱动隔离开,抽象了统一的接口和数据结构,向USB Function驱动提供了统一且稳定的接口,同时完成USB Function驱动和USB gadget驱动的匹配。第二部分是gadget driver层,负责驱动硬件工作,和具体的USB设备控制器硬件相关,dwc3的gadget driver驱动在drivers/usb/dwc3/gadget.c文件中实现。第三部分是USB设备控制器硬件。
233333
2022-12-18
4.9K
0
USB总线-Linux内核USB3.0设备控制器驱动框架分析(四)
数据结构
api
c 语言
面向对象编程
编程算法
如下图所示,USB控制器可以呈现出两种不同的状态。USB控制器作为Host时,称为USB主机控制器,使用USB主机控制器驱动。USB控制器作为Device时,称为USB设备控制器,使用UDC(usb device controller)驱动。本节只分析USB控制器作为Device时的驱动框架。
233333
2022-12-13
9.4K
0
USB总线-Linux内核USB3.0控制器初始化代码分析(三)
数据结构
编程算法
RK33999使用synopsys dwc3的USB3.0控制器IP。早期的初始化需要在两个模块中进行,一个在rockchip官方提供的驱动中初始化,位于drivers/usb/dwc3/dwc3-rockchip.c文件中,主要初始化和CPU紧密相关的内容,如时钟、复位、电源、extcon(用于USB模式切换),另一个在synopsys提供的驱动中初始化,位于drivers/usb/dwc3/core.c文件中,这部分和USB3.0控制器密切相关,如USB3.0控制器内部寄存器地址、USB3.0的PHY、中断等。只有两个模块都初始化完毕,USB3.0控制器才能正常工作。本节只分析USB驱动早期初始化部分。
233333
2022-12-09
5.8K
0
Linux 时钟子系统
数据结构
Clock 时钟就是 SoC 中的脉搏,由它来控制各个部件按各自的节奏跳动。比如,CPU主频设置,串口的波特率设置,I2S的采样率设置,I2C的速率设置等等。这些不同的clock设置,都需要从某个或某几个时钟源头而来,最终开枝散叶,形成一颗时钟树。可通过 cat /sys/kernel/debug/clk/clk_summary 查看这棵时钟树。
233333
2022-10-31
3.9K
0
Ftrace function graph简介
数据结构
linux
单片机
由于android开发的需要与systrace的普及,现在大家在进行性能与功耗分析时候,经常会用到systrace跟pefetto. 而systrace就是基于内核的event tracing来实现的。以如下的一段pefetto为例。可以看到tid=1845的线程,在被唤醒到CPU5上之后,在runnable状态上维持了503us才开始运行,一共运行了498us.
233333
2022-09-28
526
0
perf火炬图
数据结构
编程算法
让我们从 perf 命令(performance 的缩写)讲起, 它是 Linux 系统原生提供的性能分析工具, 会返回 CPU 正在执行的函数名以及调用栈(stack)
233333
2022-05-10
620
0
Linux SPI 驱动
kernel
数据结构
硬件开发
SPI是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,提供方便,简单易用。
233333
2021-12-29
18.2K
0
Android事件处理方法总结-基于回调的事件处理
android
数据结构
腾讯云测试服务
前面我们已经介绍了 Android事件处理方法总结-基于监听,这里我们总结一下 Android事件处理方法总结-基于回调
233333
2021-04-20
1.3K
0
内存页面共享-KSM
数据结构
编程算法
linux
数据分析
本文适合有基本Linux内存管理概念的新手阅读,且本文旨在从工作流程和设计思想上介绍KSM,在涉及到源代码的地方,进行了部分删减,如果想详细了解KSM,推荐阅读源代码及源代码中的注释。
233333
2020-08-28
2K
0
Linux ADF(Atomic Display Framework)浅析---概述
node.js
数据结构
因为工作关系,最近有涉及到ADF(Atomic Display Framework)相关的内容,部分内容来自互联网
233333
2020-07-20
1.6K
0
ARM32 页表映射
arm
编程算法
linux
数据结构
在32bit中的Linux内核中一般采用3层映射模型,第1层是页面目录(PGD),第2层是页面中间目录(PMD),第3层才是页面映射表(PTE)。但在ARM32系统中只用到两层映射,因此在实际代码中就要3层映射模型中合并一层。在ARM32架构中,可以按段(section)来映射,这时采用单层映射模式。使用页面映射需要两层映射结构,页面的选择可以是64KB的大页面或4KB的小页面,如图2.4所示。Linux内核通常使用4KB大小的小页面。
233333
2020-05-09
2.8K
0
内存管理相关数据结构之pg_data_t
node.js
数据结构
若系统节点多余一个,则内核会维护一个位图用于提供每个节点的状态信息,状态信息为一个enum。定义如下:
233333
2020-04-13
721
0
linux内核分析———SLAB原理及实现
c++
数据结构
缓存
编程算法
注:SLAB,SLOB,SLUB都是内核提供的分配器,其前端接口都是一致的,其中SLAB是通用的分配器,SLOB针对微小的嵌入式系统,其算法较为简单(最先适配算法),SLUB是面向配备大量物理内存的大规模并行系统,通过也描述符中未使用的字段来管理页组,降低SLUB本身数据结构的内存开销。
233333
2020-03-18
3.1K
0
最短路径问题:Dijkstra算法
编程算法
数据结构
所谓最短路径问题是指:如果从图中某一顶点(源点)到达另一顶点(终点)的路径可能不止一条,如何找到一条路径使得沿此路径上各边的权值总和(称为路径长度)达到最小。
233333
2020-02-11
5.3K
1
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
立即发文
Python精品学习库
代码在线跑,知识轻松学
立即查看
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
立即体验
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
立即查看
领券
问题归档
专栏文章
快讯文章归档
关键词归档
开发者手册归档
开发者手册 Section 归档