- 博客(7)
- 收藏
- 关注
原创 Lock-Free stack 数据结构
这个 Lock-Free stack 并不是一个漂亮的 Lock-Free 数据结构,它存在诸多限制如需要环境支持内存回收机制(如引用计数),同时还存在 ABA 问题,在内存资源重用时有又概率出现,但是它引出了 Lock-Free 的核心 CAS 机制,引出了需要解决内存回收和 ABA 问题,是一个入门 Lock-Free 的优秀学习案例。后续的学习的中我们会逐步解决这些问题。
2025-03-16 13:41:29
1032
1
原创 Linux 的 printk_ringbuffer 模块接口分析
***/只写入 text_buf_size,用于后续的预定接口。/***/写入 info, text_buf, text_buf_size,后续调用读接口,会将信息拷贝到这些结构中。上文我们分析了 printk_rinbuffer 接口设计,它和我们平常学习的标准队列不同,它的接口完全借鉴了现实生活中的餐厅预定位置,而我们标准队列通常只会实现一个写入和读出接口,写入的数据时会在实现内部进行拷贝,而 printk_rinbuffer 这样的设计实际是考量了使用者的使用方式。
2025-02-16 21:20:41
656
原创 通过 SWD + openocd + gdb 调试树莓派5B的 Linux kernel
由于树莓派各种生态相对丰富,因此购买了树莓派5B用于学习 Linux 内核源代码,由于 Linux 内核源代码相当庞大,而且有些模块不易理解,调用栈非常深,学习起来十分困难,因此想到用硬件调试器以单步调试学习,本文章用于给大家分享调试方法。
2024-12-31 00:14:18
2305
2
原创 通用数据结构设计--单向链表(1)
通用单向链表设计我们的目标是设计一个完美的通用单向链表,什么叫完美?我也说不上来,但是我们可以去做,像写小说一样,我们想写出优秀的小说,必须需要看大量的其他优秀的小说,这是第一步,吸收它的优点,这是第二步,吸收后灵活使用在自己的小说里,这是第三步。有些人对代码没有更高的追求,往往在看懂其他人的代码,并不会进行深入的第二步和第三步,这样看代码只会学到一些代码中亮眼的一些设计,也就是学到一些皮毛,而我们数据结构的设计会学习其他人的设计,提取出精华,分析出他的设计思维,再将大量的精华写入到我们的设计中,即是表
2021-06-19 17:06:52
227
原创 在编写C语言程序时何时需要进行函数参数合法性检查?(1)
引言我们在很多情况下需要用到assert,如当我们需要使用它去进行参数合法监测等,我们使用assert语句去实现,但是当软件发布时,因为性能问题等,会讲assert去掉,所有的合法检测都失效了,我们又该如何监测参数的合法性呢?解决问题我们我们平时编写的程序...
2021-06-15 12:04:39
2682
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人