自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

六六哥的博客

Linux内核,虚拟化,云计算

  • 博客(392)
  • 资源 (10)
  • 收藏
  • 关注

原创 声明 & 推荐博客[置顶]

因网易私加广告,搬家至优快云,但有些博客图片未搬迁成功,如有需要请参考原博客原博客为网易博客,地址为 blog.163.com/eric_liufeng.

2015-09-28 09:57:41 1677 1

原创 eSwitch manager 简介

通常指的是能够配置和管理 eSwitch(嵌入式交换机)的实体或接口。在 NVIDIA/Mellanox 的网络架构中,Physical Function(PF)在 switchdev 模式下充当 eSwitch manager,负责管理 eSwitch 的所有端口和流量转发规则[3]。eSwitch manager 通过内核接口(如 devlink)、DOCA Switching 库、Open vSwitch(OVS)等方式,配置和管理 eSwitch 的转发、虚拟化、流表等功能[1][3]。

2025-05-16 23:48:03 86

原创 ECPF 简介

ECPF是DPU侧的功能,由嵌入式Arm系统完全控制,是DPU模式的核心。PF、VF是主机侧功能,主机操作系统管理。ECPF和PF/VF可以共存,但权限和控制权不同,ECPF优先级更高,主机侧需等待ECPF配置完成后才能加载驱动和使用网络资源。简单理解:ECPF是DPU的“主控功能”,PF/VF是主机的“普通功能”,ECPF可以有自己的VF,和主机侧VF不同,所有主机流量最终都需经过ECPF管理的DPU侧虚拟交换机[1][2][3][4][5]。

2025-05-16 23:40:17 295

原创 vhca_id 简介,以及同 pf, vf 的关系

vhca_id是为每一个物理或虚拟功能(PF/VF/SF等)分配的唯一标识符,用于在硬件、固件和软件之间区分和管理不同的“通道适配器”实例[5]。每个 PF、VF、SF(Scalable Function)等都可以有自己的 vhca_id,vhca_id 贯穿于硬件资源分配、隔离和管理的全过程[4][5]。vhca_id是每个 PF、VF、SF(以及 ECPF 等)在 NVIDIA/Mellanox 网络设备中分配的唯一虚拟通道适配器编号。PF、VF、SF 都有自己的 vhca_id。

2025-05-16 23:24:43 417

原创 内核内存锁定机制与用户空间内存锁定的交互分析

在Linux系统中,内存锁定机制通过mlock和mlockall系统调用实现用户空间内存的物理驻留保证。但当应用程序通过ioctl。

2025-05-08 04:06:34 1177

原创 交换空间简介

在操作系统的内存管理机制中,“换出到交换空间”(Swap Out)是一个关键概念,其核心功能是。这一机制直接关联到虚拟内存系统的实现,对系统稳定性和性能有深远影响。

2025-05-08 03:55:56 1007

原创 mlock, mlock2, munlock, mlockall, munlockall 简介

内存锁定系统调用是Linux系统提供的重要功能,允许应用程序控制内存页的驻留行为。这些功能对于实时系统、安全应用和高性能计算尤为重要。mlock()和munlock()提供了基本的内存区域锁定和解锁能力,mlock2()增加了更灵活的锁定方式,而mlockall()和则提供了对整个进程地址空间的控制。在使用这些系统调用时,需要注意权限要求、资源限制以及对系统整体性能的影响。合理使用内存锁定机制可以提高特定场景下的应用程序性能和可靠性,但过度使用可能导致系统资源紧张,影响整体系统稳定性。

2025-05-08 03:54:14 592

原创 “PSP tunnel protocol“ 和 ”PSP transport protocol” 简介

PSP安全协议作为Google为大规模数据中心设计的加密解决方案,其核心技术突破在于支持两种不同的封装模式:隧道模式(Tunnel Protocol)与传输模式(Transport Protocol)。这两种模式在数据封装机制、应用场景以及硬件卸载效率等方面存在显著差异,共同构成了PSP协议体系的核心架构。

2025-05-07 05:25:01 920

原创 PSP 协议简介

PSP安全协议(PSP Security Protocol)是Google开发的一种用于数据传输加密的安全协议。在了解这一协议之前,我们需要首先明确,这里的PSP并非指AMD的平台安全处理器(Platform Security Processor),而是一个递归缩写,代表"PSP安全协议"本身。

2025-05-07 04:09:10 831

原创 cancel_work_sync 简介

是 Linux 内核中用于取消工作队列(workqueue)中的一个工作项(work)的同步接口。这个函数常用于驱动卸载或模块退出时,确保不会有未完成的工作项残留,避免资源泄漏或竞争条件。是阻塞的,调用它的线程会一直等待,直到目标 work 执行完毕或被成功取消[2][5]。

2025-05-06 04:28:29 309

原创 flush_workqueue 简介

是 Linux 内核中用于同步工作队列(workqueue)任务的一个函数。它的主要作用是阻塞当前调用者,直到指定工作队列中的所有已排队任务都被执行完毕。调用时,新的任务即使被加入队列,也不会影响当前的等待,只有在 flush_workqueue 调用时已经存在于队列中的任务会被等待执行完[2][4][6]。常见用法场景包括模块卸载、驱动关闭等场合,确保所有异步任务都已完成,避免资源冲突或内存泄漏[6]。是针对整个工作队列[1][2][5]。用于等待单个 work 完成,而。

2025-05-06 04:26:10 177

原创 RDMA连接和ID

【代码】RDMA连接和ID。

2025-04-16 08:21:24 242

原创 DIV_ROUND_UP 简介

DIV_ROUND_UP 是一个常用于 Linux 内核中的宏定义,用于执行向上取整的除法运算。1这个宏的作用是计算 n 除以 d 的结果,并且总是向上取整(即取大于或等于实际商的最小整数)[1][2][3]。

2025-04-10 02:43:53 860

原创 dma_pool_zalloc 简介

dma_pool_zalloc 是 Linux 内核中的一个函数,用于从 DMA 内存池中分配并清零内存。它是 dma_pool_alloc 的一个变体,主要区别在于 dma_pool_zalloc 会自动将分配的内存初始化为零[1][3].

2025-04-10 02:06:44 389

原创 dma_pool_free 简介

可以有效管理小块 DMA 内存,特别是当需要频繁分配和释放小块 DMA 内存时[2].在驱动程序中,通常会在不再需要 DMA 内存时(如设备断开连接或驱动卸载时)调用。是一个用于释放从 DMA 内存池中分配的内存块的函数。在释放 DMA 内存池之前,必须确保所有从该池中分配的内存都已经被释放[2].可以减少内存碎片,提高内存利用效率[1][2].分配的内存归还给 DMA 内存池[1][6].来释放资源,以防止内存泄漏[1][7].时使用的 pool 相同[6].,使用 DMA 内存池和。

2025-04-10 01:58:03 227

原创 模块传感器数和ASIC平台传感器

模块传感器和ASIC平台传感器是两种不同类型的传感器技术,它们在结构、功能和应用场景上有明显区别。

2025-04-09 04:18:26 910

原创 SerDes 和 PMLP

SerDes (Serializer/Deserializer) 是高速串行通信中的关键组件。在网络交换机和路由器的设计中,SerDes的配置和映射对于端口功能至关重要。

2025-04-09 03:37:08 878

原创 ASIC和环境传感器

系统传感器映射是一种表示设备支持哪些传感器的二进制表示方法。在这种映射中,每个比特位代表一个特定的传感器,其中只有ASIC和环境传感器被包含在内。

2025-04-09 03:02:05 472

原创 网卡温控滞后机制简介

滞后机制(hysteresis mechanism)是一种系统设计方法,其特点是系统的输出不仅取决于当前输入,还取决于系统的历史状态。在温度阈值控制中,这种机制通过设置两个不同的阈值(threshold_hi和threshold_lo)来防止指示状态的频繁切换(toggling)[1][3]。

2025-04-09 01:57:14 602

原创 READ_ONCE 简介

volatiletypeoftypeof(x):GNU 扩展,用于获取变量 x 的类型[1][2]volatile:关键字告诉编译器不要对变量的读取进行优化,确保每次访问都直接从内存中读取[1][2]&(x):获取变量 x 的地址[1][2]*(...):对上述操作结果进行解引用,从而获取变量的值[1][2]

2025-04-05 10:42:41 540

原创 wait_for_completion_timeout 简介

参数说明第一个参数:指向 struct completion 结构体的指针,包含等待队列信息及状态第二个参数:unsigned long 类型变量,表示等待的超时时间(以时钟节拍为单位)[1][2]返回值返回剩余的系统时钟节拍数(传入的超时时间减去等待消耗的时间)如果等待正常结束,返回值范围在 0 到传入的超时时间之间如果返回 0,表示等待超时[1][2]

2025-04-05 03:59:16 753

原创 schedule_delayed_work 简介

schedule_delayed_work 是 Linux 内核中一种延迟执行工作的机制,它是工作队列(workqueue)的一部分。这个函数允许内核开发者安排一个任务在指定的延迟时间后执行。

2025-04-05 03:15:16 411

原创 queue_work 简介

queue_work 是 Linux 内核中 workqueue 机制的一个关键函数,用于将工作(work)提交到工作队列(workqueue)中异步执行。

2025-04-05 03:00:09 602

原创 INIT_DELAYED_WORK 和 INIT_WORK

INIT_DELAYED_WORK和INIT_WORK都是Linux内核中用于初始化工作队列项的宏,它们本身并不是执行函数,而是初始化结构体的工具。这两个宏的执行顺序取决于代码中调用它们的顺序,而不是它们内部注册的回调函数的执行顺序。

2025-04-05 02:50:59 251

原创 INIT_DELAYED_WORK 简介

INIT_DELAYED_WORK是Linux内核中用于初始化延迟工作队列项的宏。它允许内核开发者安排一个函数在未来某个时间点执行,是内核中延迟执行代码的重要机制。

2025-04-05 02:47:51 303

原创 refcount_dec_and_test 简介

refcount_dec_and_test 是 Linux 内核中的一个函数,用于处理引用计数的递减和测试操作。这个函数是引用计数机制的核心组件之一,主要用于确定何时可以安全地释放资源。

2025-04-05 02:21:39 831

原创 lockdep_assert_held 简介

lockdep_assert_held() 是 Linux 内核中的一个断言宏,用于验证在代码执行到特定点时,指定的锁已经被持有。这是一种锁定点注释机制,属于 Linux 内核死锁检测系统 Lockdep 的一部分[5][6]。

2025-04-05 02:10:44 831

原创 down_trylock 简介

down_trylock是Linux内核中用于获取信号量的函数,它与其他信号量操作函数(如down和down_interruptible)有明显区别。

2025-04-05 00:20:59 295

原创 怎么查看 write_seqlock_irqsave(&clock->lock, flags); 是不是在中断上下文中还是进程上下文中

通过查看该行代码的调用栈,可以判断它是由中断处理程序调用还是普通进程调用。如果调用栈中包含中断处理相关函数,则很可能是在中断上下文中。通过这些方法,我们可以确定该代码是在哪种上下文中执行的。在实际开发中,了解执行上下文对于编写正确的同步代码至关重要。通常用于可能在中断上下文中访问的共享数据。如果周围代码明显是中断处理程序,那么很可能是在中断上下文中。如 ftrace 或 SystemTap 等内核调试工具可以帮助跟踪函数调用和执行上下文。在中断上下文中,它可能指向被中断的进程,但不应该被依赖。

2025-03-19 05:51:50 350

原创 lockdep 工具使用简介

lockdep是Linux内核中用于检测潜在死锁问题的调试工具。

2025-03-19 05:37:18 329

原创 write_sequnlock_irqrestore 会调用 _raw_spin_unlock_irqrestore 么

通过调用链完成底层锁释放和中断恢复。理解这一关系对调试锁争用和优化内核性能至关重要。

2025-03-19 05:25:54 249

原创 write_sequnlock_irqrestore 简介

是 Linux 内核中与配对的解锁函数,用于释放顺序锁并恢复中断状态。flags。

2025-03-19 05:16:17 480

原创 write_seqlock_irqsave 简介

需要注意的是,虽然 write_seqlock_irqsave 允许在持有锁的同时进行写操作,但它并不会阻止读操作。读操作可以并发进行,但如果在读取过程中发生了写操作,读操作需要重试以确保获取到一致的数据[1][2].:它将保存中断状态、禁用中断和获取写锁这三个操作合并为一个原子操作,提高了效率并减少了出错的可能性[3].:通过在获取锁之前禁用中断,可以避免因中断处理程序尝试获取同一个锁而导致的死锁情况[4].:它确保在访问共享资源时不会被其他写操作或中断干扰,从而保证数据的一致性[1][2].

2025-03-19 05:12:05 334

原创 RFR 简介

RFR是Reset Firmware Request的缩写,是一种固件向驱动发出复位请求的机制。

2025-03-19 04:06:45 844

原创 pci_channel_offline 简介

被用来检查 PCI 错误恢复过程是否正在进行[2]. 如果 PCI 通道处于离线状态,说明错误恢复正在进行中,此时不应该执行重置操作,因为这可能会导致恢复机制失败。是一个用于检查 PCI 设备通道是否离线的函数。它通常在处理 PCI 设备错误或超时情况时使用[1][2].这种检查机制确保了在 PCI 错误恢复过程中不会执行可能干扰恢复的操作,从而提高了系统的稳定性和可靠性。,表示应该重置计时器而不是执行其他错误处理操作[2].在 NVMe 驱动程序的超时处理函数中,如果 PCI 通道离线,函数会返回。

2025-03-19 03:53:34 94

原创 smp_load_acquire smp_store_mb 和 smp_store_release 简介

和是 Linux 内核中用于多核数据同步的关键内存屏障原语。它们通过控制指令和内存访问顺序,确保多核系统中的数据可见性和操作原子性。

2025-03-19 02:00:48 253

原创 timecounter_read 简介

这个函数的主要作用是读取基于 start_tstamp 的当前时间值,并将其转换为纳秒单位[2].其他模块可以通过 arch_timer_get_timecounter 函数获取这个 timecounter[1][3].获取 timecounter 后,模块可以调用 timecounter_read 函数来获取当前的纳秒值[1][3].驱动初始化时,会创建一个全局的 timecounter 变量[1][3].这种转换方法使用移位操作来提高性能,但可能会牺牲一些精度[2].

2025-03-19 01:45:33 230

原创 schedule_delayed_work 简介

它的主要作用是将一个任务(work)安排在指定的延迟时间后在内核全局工作队列中执行[1][2].使用 schedule_delayed_work() 的优势在于它将工作交给内核线程执行,避免在中断上下文中执行耗时操作,提高了系统的响应性和可靠性[7][8].对于周期性任务,可以在工作函数中再次调用 schedule_delayed_work() 来实现循环执行[1][2].当指定的延迟时间到达时,delayed_work 结构体中的 work 成员的 func() 函数会被执行[1].

2025-03-19 01:41:05 444

原创 如果关闭 CONFIG_MODULE_SIG

来自 Perplexity 的回答: pplx.ai/share。通过这些步骤,你可以关闭内核模块签名验证功能。修改配置后,重新编译并安装内核以使更改生效。,可能需要同时修改这些依赖项。,你需要在内核配置中将其设置为。,你可能需要调整或禁用它。

2025-03-14 21:00:04 777

原创 ble.sh 的安装和用法

ble.sh 是一个 Bash Line Editor,提供了类似于 zsh-autosuggestions 的自动补全和语法高亮功能。通过这些步骤,你可以成功安装和使用 ble.sh,享受其带来的自动补全和语法高亮功能!如果你想自定义 ble.sh 的颜色设置,可以使用。要使这些设置持久化,请将它们添加到。

2025-03-09 22:47:55 801

2. pg302-qdma.pdf

基于Xilinx的QDMA 2019.1 硬件开发者手册,应用于5G PHY层的云化硬件加速

2020-07-16

Debug Hacks中文版—

Debug Hacks中文版—深入调试的技术和工具.pdf 个人收集电子书,仅用学习使用,不可用于商业用途,如有版权问题,请联系删除!

2017-08-11

深入Linux内核架构(中文版)-超高清-由Word转pdf而成

深入Linux内核架构(中文版)-超高清-由Word转pdf而成 深入Linux内核架构(中文版)-超高清-由Word转pdf而成 深入Linux内核架构(中文版)-超高清-由Word转pdf而成 深入Linux内核架构(中文版)-超高清-由Word转pdf而成 深入Linux内核架构(中文版)-超高清-由Word转pdf而成

2017-05-20

EPA的完整集合

EPA 合集

2016-10-09

SoruceTree 1.6 完美中文破解版

SoruceTree 1.6 完美中文破解版 下载地址见文档 破解方法见压缩包内的说明文档

2016-04-14

ARM GICV3 中断控制器规范

ARM GICV3 中断控制器规范

2016-01-22

ARMV8 cortex-a57 64位 aarch64 开发者手册

ARMV8 cortex-a57 64位 aarch64 开发者手册

2016-01-22

ARM® Cortex®-A57 MPCore Processor Technical Reference Manual.pd

ARM开发必备

2015-12-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除