自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(201)
  • 资源 (34)
  • 问答 (1)
  • 收藏
  • 关注

原创 cfs调度类深入解刨——CAS科普篇

本文介绍了Linux内核中的缓存感知调度(CAS)技术及其架构设计。CAS通过理解硬件缓存拓扑,减少多线程应用中的缓存未命中和颠簸问题,显著提升了高并发任务性能(14%-44%)。传统调度器仅关注CPU负载均衡,而CAS在负载均衡中引入"任务聚合"逻辑,优先将数据共享线程调度在同一缓存域内,同时通过动态负载平衡避免过度迁移。内核为此扩展了task_struct结构,并与mm_cid机制协同工作,实现高效的无锁切换。文章还列出相关结构体(如mm_sched)及系列技术文章的链接。

2026-06-16 17:22:48 337

原创 cfs调度类深入解刨——mm_cid科普篇

Linux内核mm_cid机制解析 核心作用 mm_cid(内存描述符并发ID)是Linux内核5.15引入、6.3完善的关键优化技术,旨在解决高并发进程的调度与内存管理痛点。其核心思想是为每个进程内存空间(mm_struct)维护一套紧凑的并发ID池,替代传统的物理CPU核心ID,显著提升多核系统性能并降低硬件资源消耗。 技术突破 动态ID分配:根据进程实际并发线程数动态分配ID(如1000线程仅需4个ID),突破物理CPU数量限制。 调度深度融合:通过快/慢路径协同机制,实现无锁ID分配与惰性回收,单次

2026-06-16 15:23:37 343

原创 cfs调度类深入解刨——RDT科普篇

本文介绍了Linux内核中Intel RDT(资源导向技术)的实现背景与设计方案。RDT通过硬件级"标签与配额"机制解决多核共享资源的"嘈杂邻居效应",主要包括缓存分配(CAT)、内存带宽分配(MBA)及监测功能(CMT/MBM)。文章详细分析了RDT的CLOSID/RMID硬件标识、资源控制架构、内核配置演进以及用户界面使用方法,展现了软硬件协同实现服务质量隔离的技术原理。

2026-06-15 16:59:18 410

原创 cfs调度类深入解刨——cfs任务状态统计细节篇

本文深入分析了Linux CFS调度器中关于任务阻塞、睡眠的统计机制,重点剖析了三个关键时间戳(block_start、in_iowait、sleep_start)的作用原理和应用场景。block_start记录进程因资源竞争被迫阻塞的起始时间,用于诊断D状态延迟;in_iowait标记I/O等待状态,影响CPU利用率统计和调频策略;sleep_start跟踪进程主动休眠时长。文章通过内核源码解析了这些统计量的生命周期和更新时机,并阐述了它们在性能调优(如schedutil调频器)和系统监控(如PSI机制)

2026-06-15 11:33:44 236

原创 cfs调度类深入解刨——pelt细节篇

文章摘要: 本文深入剖析Linux内核中的PELT(Per-Entity Load Tracking)机制及其相关特性。PELT通过指数加权移动平均(EWMA)算法,以微秒级精度跟踪CPU核心、进程及容器等实体的负载历史,为调度决策(如CFS负载均衡、EAS异构调度)、频率调节(schedutil)及算力分配(Cgroups)提供关键依据。针对PELT的冷启动/退场延迟问题,内核引入补丁如Util Clamp(强制设定利用率边界)和util_est(快速预测唤醒任务负载),优化了瞬态响应能力。文章详细解析了

2026-06-12 11:41:06 531

原创 cfs调度类深入解刨——psi科普篇

本文介绍了Linux内核中的PSI(Pressure Stall Information)机制,它通过量化CPU、内存和I/O资源紧张对任务执行效率的影响,提供比传统指标更精准的系统健康评估。PSI将资源压力分为"some"(部分阻塞)和"full"(完全阻塞)两个维度,分别反映部分或全部任务因资源不足而停滞的情况。其核心价值在于: 直接测量资源不足导致的时间损失,而非简单的利用率 提供纳秒级精度的压力统计,嵌入调度器/内存管理/I/O路径 支持基于事件的实时通知机制,支持主动防御 特别适用于云原生环境,可

2026-06-11 13:54:45 507

原创 cfs调度类深入解刨——HZ科普篇

本文深入分析了Linux内核中时钟HZ相关配置的发展历程和实现机制。首先介绍了HZ参数的基本概念及其对系统调度、时间统计等关键功能的影响,详细对比了不同HZ值的适用场景及性能权衡(100Hz/250Hz/300Hz/1000Hz)。随后阐述了CONFIG_HZ_PERIODIC的工作模式和被淘汰的原因,重点讲解了现代内核采用的动态无滴答技术:CONFIG_NO_HZ_IDLE和CONFIG_NO_HZ_FULL,包括其节能原理、实现机制(单次触发模式)以及在不同CPU状态下的行为差异。文章还讨论了这些技术对

2026-06-10 14:29:49 292

原创 cfs调度类深入解刨——clock科普篇

本文介绍了Linux内核中时钟定时器的原理与实现方式。内核通过硬件时钟源(如TSC、HPET)生成原始时间信号,并将其转化为jiffies(低精度)和ktime_t(高精度)两种时间轴。定时器分为传统低精度定时器(基于时间轮算法)和高精度定时器(基于红黑树),分别处理不同精度的定时任务。同时,文章还详细讲解了sched_clock_data结构体在多核系统中校正时钟漂移、保证时钟单调性的关键作用,以及它与硬件时钟源和全局时间系统的协同机制。

2026-06-08 13:45:22 342

原创 cfs调度类深入解刨——EAS科普篇

#define HAVE_RT_PUSH_IPI int push_cpu; 记录一个CPU,用于在实时任务调度时进行IPI(处理器间中断)推送 struct irq_work rt_push_work; 用于执行RT推送工作的中断工作队列。当某个CPU上的实时任务需要迁移时,会通过这个工作队列发送IPI raw_spinlock_t rto_lock; 保护RT过载状态的自旋锁 #endif struct cpupri cpupri; 用于实时调度器的CPU优先级管理 unsigned long max_

2026-06-05 15:23:18 510

原创 cfs调度类深入解刨——irq科普篇

本文深入解析Linux内核中断处理机制,重点介绍IRQ(中断请求)的工作原理及上下半部分工。硬件中断通过中断控制器(APIC/GIC)向CPU发送信号,触发中断服务程序执行。内核通过两次技术革新优化中断处理:动态时钟(NO_HZ)降低空闲功耗,高精度定时器(HRTIMER)提升响应精度。文章详细分析中断对CFS调度的影响及优化策略,如中断绑核隔离,并阐述上半部(快速硬件响应)和下半部(耗时任务处理)的分工机制。

2026-06-04 16:36:08 453

原创 cfs调度类深入解刨——MMU科普篇

上一篇中讲述了kernel 7.1版本中的调度组的实现原理及历史背景。本篇文章讲述MMU和TLB原理及实际运行情况。

2026-06-03 17:45:04 245

原创 cfs调度类深入解刨——最新内核细节分析6

本文深入解析了Linux内核中CFS调度组的实现原理,包括任务组的基本架构、CFS带宽控制机制以及突发负载处理。文章从历史背景出发,介绍了任务组的引入初衷,并详细剖析了struct task_group的数据结构及其层级关系。重点分析了CFS带宽控制的配额管理、限流机制和突发流量处理(burst特性),同时提供了cgroup v1/v2的实际配置示例。通过内核源码和参数说明,揭示了调度组如何实现CPU资源的公平分配和突发负载应对。

2026-06-03 11:34:28 247

原创 cfs调度类深入解刨——最新内核细节分析5

本文深入解析了NUMA(非一致性内存访问)架构在内核调度中的关键细节。主要内容包括:1)NUMA节点的性能特点,CPU访问本地节点内存快于远端节点;2)NUMA拓扑结构类型(DIRECT、GLUELESS_MESH、BACKPLANE)及其特点;3)NUMA调度均衡机制,包括任务自主驱动的PTE扫描、故障统计和内存迁移策略;4)多线程共享内存空间的协同扫描机制;5)扫描周期的动态调整(1秒到60秒),根据NUMA故障情况优化性能。文章还提供了相关系列文章的链接,帮助读者系统了解CFS调度器的实现细节。

2026-06-02 15:20:15 343

原创 cfs调度类深入解刨——最新内核细节分析4

本文分析了Linux内核7.1版本中的任务调度机制,重点剖析了CFS调度类的任务选取逻辑和核心调度功能。文章首先介绍了基础任务选取函数__pick_next_task的工作流程,包括again、simple和idle三个主要分支:again分支处理常规任务选取过程,simple分支处理简单调度场景,idle分支处理CPU空闲时的任务拉取逻辑。随后详细讲解了调度核心(CONFIG_SCHED_CORE)功能,该功能自5.14版本引入,用于管理超线程环境中的任务调度,通过定义可共享物理核心的任务组来平衡安全与性

2026-06-01 17:53:29 307

原创 cfs调度类深入解刨——最新内核细节分析3

本文分析了Linux内核7.1版本中dl服务器(dl_server)的实现技术和deadline调度类原理。dl服务器是kernel 6.8新增功能,通过创建高优先级的dl调度实体,为低优先级任务保留5%的CPU时间配额(50ms/1000ms),解决了实时任务独占CPU导致系统空闲的问题。deadline调度类采用类似eevdf的简易实现,维护dl_rq红黑树和cpudl结构,通过截止日期排序和过载检测机制确保实时性。文章还提供了系列分析文章的索引,涵盖CFS调度类的核心结构、实现细节等内容。

2026-05-29 18:20:17 579

原创 cfs调度类深入解刨——最新内核细节分析2

本文深入解析Linux内核7.1版本中的"代理调度运行"(SCHED_PROXY_EXEC)机制,该功能通过让锁持有者优先执行来避免优先级反转问题。文章首先阐述了优先级反转的经典场景,介绍了RT-Mutex和PI-Futex的历史解决方案。随后详细分析了代理调度的7步执行逻辑,其核心是确保锁持有者优先执行以释放资源。此外还介绍了配套的"延迟出列"(sched_delayed)功能,该机制通过控制任务出列行为来优化调度效率。本文是CFS调度器系列分析的第四篇,前序文章可通过文末链接查看。

2026-05-28 18:24:10 494

原创 cfs调度类深入解刨——最新内核细节分析1

本文分析了Linux内核7.0及以上版本中CFS调度类的关键改进,重点关注权重溢出和优先级反转问题的优化。文章介绍了热任务判定标准、最小虚拟运行时间(min_vruntime)的调整、新增的受保护截止时间(vprot)机制,以及虚拟运行时间权重总和(sum_w_vruntime)的计算方式。还详细说明了多重抢占唤醒模式(PREEMPT_WAKEUP)的四种类型及其触发条件,以及CFS队列叶子链表节点的作用机制。这些改进旨在解决大规模服务器(如512核)面临的CPU负载不均衡和优先级反转问题。

2026-05-27 18:35:00 455

原创 cfs调度类深入解刨——核心结构细节分析

本文对比分析了CFS基础版本与EEVDF版本在调度策略、任务选取机制和时间补偿方面的核心差异。基础版本通过TIF_NEED_RESCHED标志实现抢占,但虚拟时间更新机制可能导致实时性不足;EEVDF版本引入deadline概念,通过NEXT_BUDDY特性和虚拟时间片补偿机制显著提升实时性。在时间补偿方面,基础版本采用归一化虚拟时间处理新任务,而EEVDF通过虚拟滞后值计算和半时间片初始化补偿优化任务响应。这些改进使EEVDF版本在任务切换效率和实时性方面更具优势,尤其适合需要快速响应的场景。

2026-05-22 16:30:30 482

原创 cfs调度类深入解刨——核心结构的用意

cfs调度类可以说是每个内核工程师必学的子模块,但代码逻辑层级较为丰富,需要一定积累才能看懂部分代码。本片文章以每行逐步分析方式,将cfs调度类包括eevdf逻辑等核心结构为大家一一呈现。cfs调度流程图(文章中讲述eevdf逻辑)

2026-03-19 20:25:02 876

原创 mount:从应用软件到内核函数执行的过程

在linux内核中,不同的文件系统以文件系统类型结构(struct file_system_type)保存在静态指针file_systems(static struct file_system_type *file_systems;),如ext4文件系统,它通过ext4_fs_type结构对象完成内核中的文件系统类型注册。如mount在装载ext4文件系统类型时,基本首先要做的就是分配文件系统上下文,为各种成员赋值,包括文件系统类型结构,之后执行ext4_init_fs_context 初始化上下文函数关联

2023-01-12 23:50:35 2124

原创 grub2: autogen.sh执行过程

GNU GRUB是一个Multiboot引导加载程序。它源自GRUB,GRand Unified Bootloader,最初由Erich Stefan Boleyn设计和实现。简而言之,引导加载程序是计算机启动时运行的第一个软件程序。它负责加载并将控制转移到操作系统内核软件 (如Hurd或Linux)。内核反过来初始化操作系统的其余部分 (例如GNU)。GRUB2取代了以前称为 GRUB 的内容 (即 0.9x 版),保留为GRUB Legacy模块。

2022-12-12 00:42:28 943 3

原创 linux设备模型:pci驱动程序注册过程

MANF_ID 表示厂商ID 是一个数字ID,如0xfead 或 PCI_ANY_ID(表示通用),如果有真实硬件应与硬件ID一致MODEL_CODE 表示厂商设备 是一个数字ID,如0x1234 或 PCI_ANY_ID(表示通用),如上默认情况下,子系统的厂商ID和厂商设备ID不用设置,它们采用PCI_ANY_ID(表示通用),class、class_mask等成员默认也不需要指定,在设备创建后,创建相关对象关联设备节点即可(或创建时指定父级)pci_probe: 驱动探测函数,可在函数内

2022-11-28 01:32:51 2919

原创 linux虚拟化: svm: 初始化及重要函数分析

svm是一种虚拟机环境,可用于AMD64、海光64或Intel EM64T CPU。这种新型的虚拟机技术可以提高性能和节能,但您需要在使用任何使用它的软件之前启用它。“支持向量机模式”是允许AMD处理器使用支持向量机指令集的功能。这对于需要同时兼容Intel、AMD和海光处理器的应用程序很有帮助。svm通过创建kvm,注册svm_init_ops初始操作结构,完成硬件的一系列初始化及包含功能操作结构的访问方式。

2022-11-25 00:20:01 1877

原创 linux虚拟化: kvm: 初始化及创建用户过程

基于内核的虚拟机(KVM)是一种内建于Linux的开源虚拟化技术。具体而言,KVM可帮助您将Linux转变为虚拟机监控程序,使主机计算机能够运行多个隔离的虚拟环境,即虚拟客户机或虚拟机(VM)。Linux自内核版本号2.6.20起,植入KVM内核源码,因此KVM能享受每一项新的Linux功能、修复和发展,无需进行额外工程。KVM全称为Kernel-based Virtual Machine,基于内核的虚拟机,它主要起到内核层的虚拟资源分配、管理,然后由用户层软件模拟出我们使用的虚拟机客户

2022-11-20 01:19:06 2047

原创 linux设备模型:固件设备及efi固件(平台)设备节点创建过程分析

本篇分析固件系列(以efi为例),固件可以分为(系统)引导阶段(efi stub启动模式)、固件内存映射(物理地址映射到虚拟地址等等)、固件注册到平台设备、平台设备运行等等。固件设备具有更广泛的意义,当然复杂度也更高一些。 固件系列更偏向于开发板,通常由内核模块(服务)与应用程序完成一些硬件级上电/下电及设备形式控制(如更新固件)等等。参考Documentation中一些文章内容

2022-11-17 23:23:05 1724

原创 linux设备模型:设备及设备节点创建过程分析

本篇分析设备的初始化及注册过程,包括设备与驱动绑定,设备与电源管理之间的联系、中断域的储存及物理设备之间的关系等等。这一篇内容较多,结合kobject、kset、class、bus等众多概念,也是从理论阶段转换为实际使用阶段的重要过程。 设备初始化阶段,创建kset容器结构对象devices_kset,用于设备的uevent(用户事件通知)操作。dev_kobj表示设备根对象,在它的基础上扩展(延伸)sysfs_dev_block_kobj("block") 块设备根对象和sysfs_dev_ch

2022-11-13 21:38:01 1430

原创 linux设备模型:devtmpfs虚拟文件系统分析

devtmpfs是一个设备文件系统,它将其所有文件保存在虚拟内存中。devtmpfs中的所有内容都是临时的,因为不会在您的硬盘驱动器上创建任何文件。如果卸载devtmpfs实例,其中存储的所有内容都将丢失。 devtmpfs的根路径在/dev,它通过文件系统上下文创建mount(挂载)对象,使得用户层可以访问。 devtmpfs通过devtmpfsd线程函数,分配新的命名空间代理(nsproxy)对象,并分配、关联多类命名空间,如mnt、uts、ipc、pid、cgroup、n

2022-11-10 01:00:29 4581 1

原创 linux设备模型:bus概念及pci_bus分析

bus(总线)是一种特殊的抽象框架,与class有着本质上的不同,class感觉上只是把一些核心组件聚集在一起,它主要为访问组件提供便利(如提供组件地址),而bus则是实实在在的功能性框架,它即可负责管理、维护驱动与设备之间的关系,也可作为主桥设备与硬件之间的访问通道等等。如pci总线,当pci硬件设备插入卡槽后,首先通过pci_bus_type(pci总线操作结构) 中的 pm(电源操作结构)操作相关函数唤醒设备,然后通过pci_bus_match函数查找硬件设备是否被注册到驱动(通过pc

2022-11-06 14:40:26 2058

原创 linux设备模型:kset及设备驱动抽象类(class)分析

kset属于kobject属于特定子系统的一组特定类型的kobject,与其说是一组特定类型,倒不如说用kset表示一组特定类型的kobject更方便与管理、遍历等操作,实际场景中如果需要以某个根为目标的多组特定类型的kobject,可以编写复合型kset容器,以根kset容器为基础(实际还是根kobject),在它之后继续关联多个不同的kset容器,当然,这也是linux内核中设备驱动的现状。kset容器相对于kobject来说,主要多了kobjs的uevent操作,用于记录

2022-11-05 00:50:36 1400

原创 linux控制组: cpuset解析

cpuset提供了一种机制,用于将一组CPU和内存节点分配给一组任务。在这里,“内存节点”是指包含内存的在线节点。CPU集将任务的CPU和内存放置限制为仅任务当前cpuset中的资源。它们形成虚拟文件系统中可见的嵌套层次结构。这些是管理大型系统上动态作业放置所需的基本钩子,超出了已经存在的钩子。cpuset使用控制组中描述的通用cgroup子系统。任务的请求,使用sched_setaffinity系统调用将CPU包含在CPU

2022-11-03 21:09:52 4946

原创 linux设备模型:sysfs(kobject)解析

sysfs 是一个最初基于 ramfs 且位于内存的文件系统。它提供导出内核数据结构及其属性,以及它们之间的关联到用户空间的方法。任何 kobject 在系统中注册,就会有一个目录在 sysfs 中被创建。这个目录是作为该 kobject 的父对象所在目录的子目录创建的,以准确地传递内核的对象层次到用户空间。sysfs中的顶层目录代表着内核对象层次的共同祖先;例如:某些对象属于某个子系统。 在与其目录关联的 kernfs_node 对象中内部保存一个指向实现目录的

2022-10-30 13:04:25 2257

原创 linux审计子系统:内核层执行原理

linux审计子系统用于记录内核部分子模块及应用层(应用程序)的运行状态,如文件系统、进程、systemd应用的执行进展、遇到的问题等信息。审计子系统通过netlink与auditd应用建立kernel audit直接的通信,并通过auditd把信息写入/var/log/audit/audit.log文件(默认地址,可以设置)。 linux审计子系统内核部分设计相对较为简单,甚至内核文档都没有找到关于它的单独描述(只找到了它的函数定义描述)。

2022-10-27 21:50:20 2690

原创 linux终端设备:pty设备初始化、创建过程

上一篇[](https://lkyof.blog.csdn.net/article/details/127456330?spm=1001.2014.3001.5502)分析了tty子系统、tty设备、console设备的初始化及创建过程。默认情况console终端的启动程序为agetty,它访问的是/dev/console inode,执行的console_fops操作结构中的函数,而由类Xwindow中的终端或远程ssh访问的是/dev/ptmx (pt

2022-10-23 19:38:13 1729

原创 linux终端设备:tty子系统相关的初始化

>  linux类系统相较于windos类系统用“魔幻”也不为过,神奇的控制台终端如ctrl+alt+F1至F6、UI桌面打开终端、远程ssh登录等等,在神奇的命令行协助下总能随时随地完成手中的工作。>  当然,这些功能虽不算复杂,但庞大的架构及繁多的代码让人有一种深不测的感觉。经过一段时间对终端相关代码的分析对它们有了初步的了解。它们采用较为一致的思路方式实现,代码难度也不算太高,具备字符驱动相关的知识加上足够的耐心便可以解开这个“庞然大物”。>  linux终端子

2022-10-22 21:46:58 2187

原创 分布式块设备复制(DRBD)分析

DRBD由客户端(drbdadm、drbdsetup、drbdmeta)、内核模块(drbd.ko、drbd_transport_tcp.ko)和相关脚本而构成,用以构建高可用性的集群,其实现方式是通过网络来镜像整个设备。DRBD负责接收数据,把数据写到本地磁盘,然后发送给另一个主机。另一个主机再将数据存到自己的磁盘中,参考图1。

2022-10-04 22:58:02 1825

原创 proc: 虚拟文件系统初始化

linux内核中经常使用一种虚拟文件系统,它在内核启动后创建,并结合文件操作特性运行在缓存中,也就是说它具有文件操作的功能(函数调用、文件属性变更等),数据不会写入到磁盘,这里简称为proc系统。proc系统初始化并创建/proc/self/fs、/proc/sys等目录,在4.15之前的内核版本,它结合ctl_table结构,完成虚拟读写、文件属性的变更、内核运行时参数修改等操作,而4.15之后的内核版本,ctl_table移除了proc_dir_entry结构,相当于虚拟文件的读写、文件属性的变更等操作

2022-09-25 22:47:15 1131

原创 x86: perf_events内核初始化

Linux性能计数器的使用(perf_events)可能会带来泄露受监控进程访问的敏感数据的巨大风险。在直接使用perf_events系统调用API的情况下,数据泄露都是可能的以及由perf工具用户模式实用程序(perf)生成的数据文件风险取决于perf_events性能监控单元(PMU)的数据的性质和perf收集并公开以进行性能分析。收集的系统和性能数据可分为以下几类尔“架构性能监控”CPUID检测/枚举详细信息struct {} split;};cpu_hw_events CPU硬件事件/**//*

2022-08-20 21:16:29 2188

原创 send_sig: 内核执行流程

当一个信号从内核或另一个进程发送到一个进程时,内核通过调用 send_sig()、send_sig_info()、force_sig() 或 force_sig_info() 函数来传递它。 调用关系如下: send_sig() -> send_sig_info() ... send_signal_locked() ... force_sig() -> force_sig_info() ... send_signal_locked() ......

2022-08-10 21:22:56 2717

原创 bpftrace:简便输出调试信息

bpftrace是一种用于Linux增强型伯克利包过滤器(eBPF)的高级跟踪语言,使用LLVM作为后端将脚本编译为BPF字节码,并利用BCC与Linux BPF系统进行交互,以及现有的Linux跟踪功能:内核动态跟踪(kprobes)、用户级动态跟踪(uprobes)、和跟踪点(tracepoint)。bpftrace语言的灵感来自awkh、C、DTrace和SystemTap等前身跟踪器。上一篇实现了tracepoint定义及函数调用,本篇也以这个示例和官方提供示例为基础讲述。...

2022-08-07 22:37:30 1541

原创 tracepoint: 定义函数及调用示例

放置在代码中的跟踪点(tracepoint)提供了一个挂钩来调用您可以在运行时提供的函数(探针)。 跟踪点可以是“on”(一个探针连接到它)或“off”(没有连接探针)。 当跟踪点“关闭”时,它没有任何效果,除了添加微小的时间损失(检查分支条件)和空间损失(在检测函数的末尾为函数调用添加几个字节并添加数据 结构在一个单独的部分)。 当跟踪点“打开”时,每次执行跟踪点时都会在调用者的执行上下文中调用您提供的函数。 当提供的函数结束执行时,它返回给调用者(从跟踪点站点继续)...

2022-08-07 13:51:13 1511

tracepoint源码示例

在驱动文件中增加tracepoint相关内容,分析tracepoint在实际项目中的用法。

2022-08-07

MFC框架截屏指定位置并保存为png格式

在MFC工程中调用CImage类实现指定位置截屏并保存为png格式图片,使用pdf函数可以加载此方法生成的图片。

2018-08-16

ubus源码库

可以使用的ubus库,只需要安装标准cmake编译方式进行编译及安装即可,编译ubus之前首先确保系统已经安装了json-c,lua以及libubox.

2019-04-06

ubus及依赖库安装

在ubuntu16.04系统上,安装ubus相当麻烦需要几个依赖库支持,网上下载的依赖库大部分编译不过去,这里把我编译通过的库上传上来,供下载使用!

2019-04-06

数据文件随机加密和解密

使用C语言作为类的核心实现,实现功能为无规则加密解密,以及大型文件的加密解密。

2018-05-30

office控件

使用这个ocx注册后,可以做MFC内嵌使用,比如多文档,单文档以及对话框工程!

2018-03-06

MFC按USB插口顺序显示所有USB设备(包括安卓)

用MFC制作的顺序显示所有USB插口(已经插入和未插入的),设备遍历显示的原理来自USB View,设备的重要数据信息来自WindowAPI函数,通过这两套函数与一套结合算法,成功显示出所有的设备,并且保存了重要的数据信息,其中经历了C代码库的移植过程。

2018-03-18

C语言实现内存池

使用C语言编写的一个可以用来使用的内存池,编写方式达到内存"0碎片"的标准。

2018-09-25

C语言实现完整功能的内存池

使用C语言编写的一个可以用来使用的内存池,编写方式达到内存0碎片的标准。

2018-09-25

C语言编写的XML库源文件(支持XML生成与解析)

完全使用C语言编写的XML库源码,采用链表做节点间的遍历查询。

2017-10-05

linux3.0内核

可以使用的linux3.0内核,编译linux驱动程序不可缺失的一部分。

2018-07-01

list双向循环链表的实现,简单化内存分配与迭代器

简单化实现list链表与迭代器等的关系!适合学习使用。

2016-12-18

Linux内核Map完整实现!

Linux内核Map完整实现,内有Windows与linux红黑树结构实现

2017-01-20

DataOperation_20200304.zip

作者利用私下时间实现的一个完全随机加密、解密库。库运行多次加密同一个文件,然后按照同样次数解密即可。 库中主要代码是DataOperation_类,它在DataOperation_.h和DataOperation_.cpp中。 库基于VS2010编写完成,如果您没有安装环境可以把上述类拷到您的工程中执行。 另外,在我的博客中有一篇文章专门讲述这个库的实现原理。

2020-03-04

Linux内核Map实现

STL Map完整版实现

2017-01-18

简单的内存管理结构

根据自己的思路,实现一个简单的内存管理结构,其中利用了链表作为遍历方式。

2018-03-15

c、c++智能数据架构

使用C、C++编写的多层次数据架构,里面包含多种尖端技术及高度设计思想。

2018-11-25

tensorflow_install.zip

针对tensorflow1.14.0的离线依赖制作,其中包含了所有依赖库,内部RemdMe文件排列了所有依赖库的安装顺序,按这个顺序安装即可,也可以根据这个顺序制作rpm包。

2020-10-06

红黑树完整实现文件

红黑树结构的完整实现,清晰、易懂以及打印出当前树的所有节点。

2018-06-26

MFC同时操作多个安卓设备

使用MFC操作大量安卓设备(结合USB插口遍历方法),可以同时向多个设备进行发送指令。

2018-03-31

linux虚拟机(VMware-tools)映像.rar

压缩包中包含VMware12版本客户端使用的vmware-tools(linux虚拟机映像)。

2019-10-19

MFC访问阿里云Oss方式

强大的MFC访问阿里云Oss工具,内有完整的访问接口(以及部分没用到的接口已经实现完成),自动生成校验文件,下载自动检测校验文件等。

2018-05-11

linux_jdk1.6.0_31

linux64位系统使用的jdk1.6.0_31,实测可用,请放心使用。

2018-07-01

MFC内部调用matlab函数(32位/64位)

本项目采用win7 64位系统、VS2010和matlab2014a制作,项目展示了VS2010调用matlab库函数的方法。如果是32位系统可以参考我的博客,修改包含路径以及找到win32使用的dll即可。

2018-08-18

C++面向对象高效编程

完整高清版本,在看这本书中就发现有好多知识点需要掌握,其中包括虚拟表格的创建,以及语法的正确使用示范等!

2017-03-17

auto形式更加强大的数据类

c语言风格封装了auto形式功能更多的结构,内部巧妙利用了反射思路实现自定义类存储!

2017-05-16

vsftpd-3.0.2.tar.gz

linux vsftpd(ftp)安装包,我博客有安装方法

2017-05-25

thinking c++

2017-03-21

深入了解linux内核第三版中文

很经典的linux内核介绍

2017-03-21

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

TA关注的人

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