自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 资源 (2)
  • 收藏
  • 关注

原创 模型下载与使用

AI模型下载与使用

2026-04-05 22:05:12 217

原创 编译llama.cpp

记录编译llama.cpp过程中各种问题及解决办法

2026-04-05 20:23:16 135

原创 Atomics探究(五)-- Operations on atomic types

本文介绍内容围绕标准《ISO/IEC 9899:201x》7.17.7 Operations on atomic types展开介绍原子操作函数,特别是其底层汇编实现,分析各函数使用哪些汇编指令

2026-02-22 22:22:23 649

原创 systemd log代码赏析

systemd base log模块涉不少linux C编码高阶知识点,特别是IO相关模块,值得研读

2026-01-31 21:18:39 532

原创 epoll_wait使用--自适应缓冲区的批量事件读取机制

上述摘录代码片段通过动态扩容缓冲区、非阻塞续读、扩容上限限制,平衡了事件读取的完整性、内存占用、IO 效率。

2026-01-27 21:39:33 709

原创 一种libc库线程安全函数的封装

libc库线程安全函数的易用性封装。1、本篇以asctime/asctime_r为例进行简单介绍,其他libc函数也可以类似实现2、本篇介绍的2.3及2.4方案都是可行的,但是个人还是比较推荐2.3方案3、api接口设计需要考虑线程安全,性能以及接口易用性4、通过__builtin_alloca使用栈空间比malloc使用堆空间效率更高,当然其有使用局限,后续其他文章再展开介绍。5、__thread还有些使用限制,这里不再展开,后续文章再详细介绍其相关TLS等机制。

2026-01-11 20:35:15 687

原创 带返回值的宏--({})的妙用

... \})示例1({ \(fd) = -1;_dup_s;})参见。

2026-01-11 17:07:48 566

原创 Atomics探究(四)-- atomic flag

本篇将研究atomic_flag相关函数底层汇编指令,以及与其他原子操作函数进行比较,探讨其存在的意义。gcc 头文件中定义如下#else#endifclang中定义类似如下3、汇编分析我们将分析如下C代码的汇编// {// }// {// }3.1、测试代码(函数使用)说明从汇编代码的角度看使用atomic_flag代码性能应该是会略微高些的。

2026-01-10 23:24:03 884

原创 C语言原子操作(Atomics)探究汇总

章节。

2026-01-09 21:24:41 43

原创 Atomics探究(三)-- atomic lock-free

基于本篇介绍函数在linux嵌入式开源工程中几乎没有使用踪迹,再结合汇编代码分析结果,建议无需深究,可以一扫而过。

2026-01-09 20:41:19 432

原创 Atomics探究(二)--Fences

模型,使用无锁(Lock-Free)设计,通过Dirty Backup 机制实现了读写一致性("半写"数据问题)2、atomic_thread_fence使用罕见,使用上有一定的难度,需要一定的逻辑功底,建议慎用。atomic_thread_fence在android bionic工程中有两处使用。atomic_signal_fence未找到相关开源工程代码使用。,主要涉及atomic_thread_fence及原子操作函数。1、atomic_signal_fence基本没有,忽略即可。

2026-01-08 21:47:09 322

原创 Atomics探究(一)--kill_dependency

没啥用,本篇可以一扫而过。

2026-01-07 21:18:36 316

原创 巧用gcc查找系统头文件路径

最近想研究一下C语言的原子操作,想查看stdatomic.h时在默认路径/usr/include中发现有好几个clang的,newlibc的,却好像没有gcc的......于是有了如下编译操作。

2026-01-05 21:44:39 164

原创 C语言编码--资源释放

此外,类似的情况还包括未关闭的网络套接字、未销毁的互斥锁等。这些未被正确释放的资源会逐渐累积,最终可能导致程序运行缓慢、内存耗尽或系统资源不足,影响程序的稳定性和性能。在函数do_accept中可以看到,代码并不需要显示调用close,但是fd_accepted也不会出现资源泄露情况。Q1:在C语言编码中,资源忘记释放是一个常见问题,尤其在手动管理资源的场景下。Q2:略微复杂代码逻辑中,可能需要多次添加释放资源代码(注:goto可能是被禁用的)如下。局部变量表示的资源作为返回值或作为出参数情况,如下代码。

2025-12-20 20:15:27 286

原创 systemd代码赏析-C函数的重载

代码路径systemd-259\src\fundamental\logarithm.h_Generic 是 C 语言中一个关键字,由 C11 标准引入,是泛型选择,一种编译时机制,用于根据控制表达式的类型选择不同的表达式。C11标准中相关定义如下。

2025-12-20 16:17:17 653

原创 systemd代码赏析-宏STRLEN-计算字符串长度效率探讨

编译-O2 -O3不再展开,有兴趣可以自行分析一下,需要注意的是有些函数中__builtin_strlen会被编译成call strlen。systemd工程中定义了一个特点场合使用的宏,编译阶段计算了符串长度,有小提升运行效率。2、sizeof(typeof(x[0]))值为1,即减去结束符('\0')长度。2、使用变量作为宏STRLEN参数会导致编译失败,代码中直接return 0。1、systemd采用宏限制参数,限制使用条件,不受编译选项影响。1、""x"" 保证宏参数为常量字符串,而非变量。

2025-12-19 21:01:08 845

原创 libcoap编译及Makefile分析

1、编译可以看下文件BUILDING(v4.3.0) 可以通过如下命令快速编译 ./autogen.sh ./configure ......2、Makefile分析 Makefile由./configure生成的,其编译目标有点绕,本文记录一下分析过程,具体路径如下all: -->all-recursive: # RECURSIVE_TARGETS = all-recursive ......

2025-12-19 20:05:59 170

原创 systemd代码赏析-内存池Mempool

1、改内存池实现小巧,易移植使用2、缺点:从系统分配内存后,只能销毁内存池才能释放内存,不适合有尖峰场景业务3、注意:由于freelist的复用,内存单元大小必须大于sizeof(void *)

2025-12-11 19:20:00 437

原创 参数个数计算宏

glibc中通过巧妙的宏定义实现了可变参数个数的计算。核心机制是利用__INLINE_SYSCALL_NARGS_X宏的固定参数位置,将数字序列倒序排列,当__VA_ARGS__展开后会"推动"数字序列,通过位置偏移获取参数个数。原实现最多支持7个参数,当参数超过7个时需要扩展宏定义:1)增加__INLINE_SYSCALL_NARGS_X的参数数量;2)调整倒序数字序列。如示例中通过添加参数m将支持数扩展到8个。这种方法通过预处理阶段的文本替换实现参数计数,是C语言中处理可变参数的常见

2025-11-13 22:23:23 210

原创 Linux 5.15 arm64 系统调用代码详解

已平台架构相关宏定义在sysdeps/unix/sysv/linux/aarch64/sysdep.h。__arm64_sys_sendto函数中进行了参数转换,再调用__se_sys_sendto。SYSCALL_CANCEL 等宏定义在 sysdeps/unix/sysdep.h。invoke_syscall函数通过系统调用号找到kernel系统调用回调函数。(__VA_ARGS__)是参数数量计算,展开后值为6。__sys_sendto由网络协议栈模块实现了。以SINGLE_THREAD_P展开。

2025-11-13 21:51:45 382 1

原创 u-boot ARMv7 程序入口问题

网络上资料开篇都是_start开始启动u-boot,对比armv8的start.S,他确实是_start开始的。这笔修改中将start.S中的_start:标签等移出了,同时新增了vectors.S。总的来说u-boot的程序入口还是没有变的。start.s汇编中看好像入口是reset。而链接脚本确是ENTRY(_start)

2025-06-25 16:02:40 185

原创 ARMV7-指令官方文档

Application-Level: https://developer.arm.com/documentation/ddi0406/b/Application-Level-Architecture/Instruction-Details/Alphabetical-list-of-instructions?lang=enSystem-Levelhttps://developer.arm.com/documentation/ddi0406/b/System-Level-Architecture/System-

2025-06-23 14:14:57 234

原创 sshd 分析

【代码】sshd 分析。

2025-05-16 10:46:57 687

原创 Yocto编译systemd

想研究一下systemd,Yocto工程还是有些不一样,于此简单记录一下。这里会创建build/workspace。3、添加debug代码。# 生成补丁并更新配方。

2025-04-24 19:42:56 294

原创 gcc9.4.0编译及plugin开发环境

2.2 添加参数执行./contrib/download_prerequisites --no-isl。当前目录手动在https://ftp.gnu.org/pub/pub/gnu/中找对应包用浏览器下载。注:我的gcc版本是9.4.0因此gcc-9-plugin-dev。先用gcc plugin搞点事情,参考网上文档先编译gcc。此处网络异常打印:服务器响应时发生错误,正在关闭控制连接。1、下载了本地gcc版本代码gcc-9.4.0。4、但是搞gcc plugin还是有问题。

2025-04-18 19:31:45 447

原创 C lib程序入口

glibc 与 ulibc基本差不多,代码中的注释很重要。注:语法AT&T风格,使用 %% 表示寄存器。参考musl lib 写个hello。musl lib 比较简洁。对比几个开源c lib库。编译:重点是链接选项。

2025-03-27 19:42:38 260

原创 C++ 左值 右值 引用

右值引用(rvalue reference):C++11引入的新特性,用于引用rvalue,使用双&&符号。双重拷贝开销:参数 t 本身是值传递的副本(可能触发一次拷贝/移动构造),初始化 tt 时再次触发 拷贝构造(因 t 是左值)。拷贝开销:对不可拷贝或拷贝成本高的类型(如 std::unique_ptr),此函数无法编译或效率低下。拷贝而非修改:参数为非 const 左值引用,暗示函数可能修改 t,但实际仅拷贝到 tt,易引发误解。无法接受右值:若尝试传递右值(如 test(T{})),会编译失败。

2025-03-25 19:54:14 566

原创 linux各种锁笔记

1、内核态常用锁A、struct mutex m_stMutex;说明:该锁可以睡眠mutex_init(&m_stMutex);mutex_lock(&m_stMutex);mutex_unlock(&m_stMutex);B、其他待更新2、用户态锁A、文件锁说明:适应于进程间保护临界资源;文件XX_LOCKFILE需要读写权限

2014-03-27 22:41:18 748

T-REC-G1.984.3-200507-S!Amd1!PDF-E.pdf

ITU-T Recommendation G.984.3 (2004) – Amendment 1 SERIES G: TRANSMISSION SYSTEMS AND MEDIA, DIGITAL SYSTEMS AND NETWORKS Digital sections and digital line system – Optical line systems for local and access networks Gigabit-capable Passive Optical Networks (G-PON): Transmission convergence layer specification Amendment 1

2020-01-04

T-REC-G[1].984.4-200603-S!Amd2!PDF-E.pdf

G.984.3 ITU标准 SERIES G: TRANSMISSION SYSTEMS AND MEDIA, DIGITAL SYSTEMS AND NETWORKS Digital sections and digital line system – Optical line systems for local and access networks Gigabit-capable Passive Optical Networks (G-PON): Transmission convergence layer specification Amendment 2

2020-01-04

空空如也

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

TA关注的人

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