自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(462)
  • 资源 (8)
  • 收藏
  • 关注

原创 VRRP堆叠主控掉电 2 次后备控所有 VRRP 实例状态为 Backu问题修复

在workMode切换时,主动恢复 VRRP 实例状态区分"同步的状态"和"运行的状态"备控切换为主控时,根据同步的状态恢复实例添加状态一致性检查和自动修复。

2026-01-30 23:24:41 15

原创 Dropbear SSH Server - 工程级 Bug 修复方案

本次修复共解决16 个 bug内存安全:5 个并发安全:3 个资源泄漏:4 个逻辑错误:3 个性能问题:1 个✅最小改动:只修改问题点,不重构无关代码✅向后兼容:保持函数签名和行为不变✅防御性编程:添加参数验证和边界检查✅清晰注释:说明修复原因和设计决策。

2026-01-29 19:54:03 90

原创 Dropbear SSH Server 核心代码深度分析

define SSH_MSG_USERAUTH_REQUEST 50 // 客户端发起认证请求#define SSH_MSG_USERAUTH_FAILURE 51 // 服务端认证失败响应#define SSH_MSG_USERAUTH_SUCCESS 52 // 服务端认证成功响应session.h中的// 用户名// 允许的认证类型// 认证完成标志【关键!// 权限警告// 用户信息// 认证计时I/O 模型:select() 单线程事件循环。

2026-01-29 19:48:40 5

原创 Dropbear SSH 学习心得笔记

/ 文件:ssh.h 或 packet.h// 传输层协议 (1-49)// 认证协议 (50-79)#define SSH_MSG_USERAUTH_REQUEST 50 // 客户端发起认证请求#define SSH_MSG_USERAUTH_FAILURE 51 // 服务端:认证失败#define SSH_MSG_USERAUTH_SUCCESS 52 // 服务端:认证成功#define SSH_MSG_USERAUTH_BANNER 53 // 服务端:显示 banner。

2026-01-29 19:28:09 19

原创 POE模块工业级代码问题修复及优化方案

本优化方案涵盖了POE模块的所有关键问题,从严重的安全漏洞到性能优化,从健壮性增强到可维护性改进。建议按照优先级逐步实施,每个阶段完成后进行充分测试,确保系统稳定性。通信可靠性提升90%(重试机制)内存安全性100%保证(无泄漏)系统可用性提升(看门狗+自动恢复)性能提升30-50%(智能轮询+缓存)可维护性大幅提升(日志+诊断工具)

2026-01-28 15:17:07 9

原创 POE模块代码详细架构分析

PSE_PORT_STATEMACHINE_OFF, // 0: 关闭PSE_PORT_STATEMACHINE_INIT, // 1: 初始化PSE_PORT_STATEMACHINE_DETECT, // 2: 检测PSE_PORT_STATEMACHINE_CLASSIFY, // 3: 分级PSE_PORT_STATEMACHINE_POWER, // 4: 供电PSE_PORT_STATEMACHINE_MAINTAIN, // 5: 维护。

2026-01-28 14:26:57 10

原创 工作交接心得笔记-POE测试

整个链路只需要一根网线,同时传输数据和电力,这也是 PoE 的核心优势。内置 PoE 控制芯片,负责检测 PD、协商功率、输出电力。触发 DUT 进入 “检测 - 分级 - 供电” 流程。这个用例是 PoE 设备出厂前的 “PD 设备(比如 IP 摄像头。内置 PD 协议芯片。

2026-01-28 13:37:27 8

原创 MALG模块优化和修复的bug梳理(二)

文件: Bug #2: 定时器回调竞态条件修复文件: 文件: Bug #4: 整数溢出和缓冲区检查修复文件:mlag/src/mlag_pkt.cBug #5: 资源释放顺序修复文件: Bug #6: 统计计数器溢出修复文件: 使用示例文件: (修改统计递增方式)总结以上修复方案针对发现的严重Bug提供了工业级的修复代码,包括:

2026-01-28 10:40:21 27

原创 MALG模块优化和修复的bug梳理(一)

【代码】MALG模块优化和修复的bug梳理。

2026-01-28 10:22:47 30

原创 MLAG 模块代码梳理心得笔记

根据代码分析,以下是MLAG模块的完整架构和5个关键问题的详细解答:角色类型定义:谁是 Master?判定规则(优先级从高到低):Priority 比较(数值越小优先级越高)System MAC 比较(当 priority 相同时)核心函数调用链:角色切换触发条件触发场景:收到 Hello 包时 [mlag_pkt.c:2351] Peer 存在状态变化Priority 配置变化Peer-link 状态变化状态转移图:状态转移条件详解:关键定时器:holdTimer - Hell

2026-01-28 10:13:52 14

原创 PoE模块技术学习心得笔记

功率状态RTL_POWER_DISABLE = 0, // 禁用RTL_POWER_SERCHING = 1, // 搜索中(检测PD)RTL_POWER_DELIVERING = 2, // 供电中RTL_POWER_FAULT = 4, // 故障RTL_POWER_RQUESTING = 6 // 请求中(分类阶段)检测状态RTL_DETECTION_UNKNOWN = 0, // 未知RTL_DETECTION_SHORT_CIRCUIT = 1, // 短路。

2026-01-27 19:55:41 36

原创 由xxx.so文件是哪些文件编译出来的

【代码】由xxx.so文件是哪些文件编译出来的。

2026-01-06 17:05:45 33

原创 MT-Safety 标签env 和 locale

表示:函数本身不做同步依赖全局对象在多线程期间保持不变glibc 明确规定:修改 locale / env 的函数是 MT-Unsafe多线程程序不应在运行期调用它们只要遵守约束:读取是安全的行为可预测env和locale不是“线程不安全”的警告,而是“请不要在多线程运行时修改它们”的契约说明。

2026-01-06 17:01:04 61

原创 如何解决recv被业务阻塞导致的 netlink 消息丢失问题?

UINT64 ts;关键点不要把 netlink 原始 buf 直接传下去只传“状态变化所需的最小信息”

2026-01-04 20:12:15 80

原创 怎么正确用条件变量和互斥锁

互斥锁解决“谁能访问”,条件变量解决“什么时候访问”;条件变量永远和互斥锁一起使用,并且用 while 检查条件。

2025-12-31 16:24:09 29

原创 堆叠 + IGMP Snooping 发包 的问题

堆叠 IGMP Snooping 采用“控制面集中、转发面分布”的架构:Master 统一决定是否发送 IGMP Query,而各成员设备的交换芯片在本地端口执行实际发包;Slave 不拥有协议发言权,仅作为执行者和热备角色。

2025-12-31 15:33:04 33

原创 pthread 互斥锁(mutex)最常见、最容易踩坑、最有价值的几种属性

pthread 互斥锁的行为由属性决定,默认 mutex 仅提供基本互斥语义,在复杂系统中极易隐藏逻辑错误。通过合理选择锁类型、进程共享属性、优先级协议及鲁棒性配置,可以显著提升系统的健壮性和可调试性。

2025-12-31 09:58:12 39

原创 关于死锁问题的一些心得笔记

死锁必须同时满足四个条件(缺一不可):互斥:资源一次只能被一个线程占用占有且等待:线程已占有资源,又等待新资源不可抢占:资源不能被强制剥夺循环等待:形成资源等待环第四条是本质锁越多,状态空间指数级增长可以这样总结(这是工程级表述):死锁最常发生于多线程进程中,但并非仅限于此死锁的本质是循环等待,而非“锁多”若系统中仅存在一个非递归互斥锁,且无重入使用,则不可能形成死锁实际工程中,大多数死锁源于锁顺序不一致或重入设计缺陷。

2025-12-31 09:31:30 33

原创 层级锁 + 回调/调度交叉导致死锁

经典死锁往往并非显式的锁顺序错误,而是由层级锁设计在回调或调度路径中被破坏所致。上层任务在持有全局锁时调用下层模块,而下层模块在持有局部锁时又通过回调尝试获取全局锁,最终形成隐式循环等待。

2025-12-31 09:16:42 23

原创 点亮LED灯

该电路通过一个限流电阻驱动红色发光二极管(LED),用于指示系统中某一信号(标注为 LED0)的状态。其主要作用是提供可视化状态提示,如电源指示、运行指示或其他逻辑信号反馈。功能:为 LED 指示电路提供 3.3V 的直流电源。说明:3.3V 是 MCU、模块或低功耗系统常用的电压,适合驱动普通红光 LED。类型:510 Ω 限流电阻主要作用:限制流经 LED 的电流,防止 LED 过流损坏。使 LED 工作在安全且亮度适宜的区间。计算示例(用于设计分析):红色 LED 正向压降(Vf)典型值:1.8V电源

2025-12-30 22:53:40 886

原创 「锁 + 阻塞 IO」会升级成真正的死锁

真正的死锁来自循环等待;锁内阻塞 IO 本身未必构成死锁,但它极易成为死锁的触发器,是工程上必须严格禁止的设计模式。

2025-12-30 17:59:22 24

原创 典型的嵌入式多进程 + 多线程系统里“高发”的工程问题之——SIGSEGV(signum 11) 对无效内存引用引起的进程重启

SIGSEGV 是内存错误的“尸检报告”,真正的解决方案是:让错误早死、可见、可定位,并在工程上防止复发。

2025-12-29 16:30:46 26

原创 如何解决父子进程“谁先执行”不确定的问题

用“同步机制”代替“执行顺序假设”父子进程执行顺序不可控,解决办法只有一个:显式同步,而不是假设顺序。

2025-12-29 15:03:53 23

原创 当前工作设备系统整体启动模型总结

└─ /app/startup (Shell 脚本进程)└─ srosXXX 进程└─ 主线程进入 main()└─ OsixCreateTask 创建多个线程每一个srosXXX一个独立的用户态进程在ps中可见拥有独立的地址空间与资源srosXXX 进程├─ 主线程(main 入口)├─ task2└─ taskNstartup 构建运行环境,startapp.sh 拉起业务进程,每个 srosXXX 从 main() 开始执行,

2025-12-26 16:53:49 31

原创 “函数指针”和“指针函数”区分清楚

函数指针 = 一个变量,值是函数的入口地址返回类型 (*指针名)(参数列表);指针函数 = 一个函数,返回值是指针返回类型 *函数名(参数列表);函数指针是“指向函数的变量”,指针函数是“返回指针的函数”,看括号,永远不会错。

2025-12-26 15:21:02 21

原创 IPC之 如何用 socket + 协议自己实现一个“可靠 MQ”?

一个“可靠 MQ”,至少要满足:消息不丢消息可确认(ACK)消息可重试支持积压(Backlog)服务重启不丢消息(持久化)生产者、消费者解耦MQ Server 做三件事 接收消息存消息投递 + 确认 不要短连接不要一条消息一连一断字段说明 字段 含义 magic 防错 type PRODUCE / CONSUME / ACK msg_id 全局唯一 f

2025-12-24 18:11:21 33

原创 IPC之管道 信号量 共享内存 消息队列 socket 区别总结

你正在做的事情。

2025-12-24 15:51:51 34

原创 IPC 之 recvmsg() 和 sendmsg() 可能会丢消息吗?

从来不承诺可靠性协议和你的错误处理,才决定丢不丢。

2025-12-24 15:07:59 31

原创 IPC之如何保证消息不丢失 如果丢失怎么办?

消息系统不是“防丢系统”,而是“风险管理系统”。防的是常态扛的是异常活的是系统。

2025-12-24 15:00:49 26

原创 IPC之消息队列(3)

IPC 的选择不是“技术问题”,而是“语义问题”。数据流 → socket控制事件 → MQ状态共享 → SHM通知 → signal / eventfd。

2025-12-24 14:46:45 20

原创 IPC之消息队列(2)

消息队列不是用来“快”的,而是用来“稳、清晰、解耦”的。

2025-12-24 14:32:15 18

原创 IPC之消息队列(1)

消息队列是一种以内核为中介、以“消息”为传输单位的进程间通信机制,支持消息边界和优先级,适合事件驱动和任务分发型系统。

2025-12-23 14:00:14 21

原创 IPC 之管道

管道是内核提供的一种“单向、字节流、有序的进程间通信机制”。单向:一头写,一头读字节流:没有消息边界有序:按写入顺序读取在内核中:不是文件、不是内存共享管道是 Linux 内核提供的、基于内核缓冲区的单向字节流 IPC 机制,常用于父子进程和 shell 管道,依赖文件描述符和阻塞语义完成进程间同步与数据传输。

2025-12-22 20:08:30 34

原创 守护进程(daemon)创建的通用步骤

项目传统 daemonsystemdfork必须不需要setsid必须不需要推荐不需要pidfile常见不需要控制终端程序处理systemd 处理日志syslogjournald。

2025-12-18 17:14:30 44

原创 会话(Session)

会话(session)是 Linux 进程控制与终端管理的最高层级单位,它主要用于:管理终端与进程之间的关系决定哪些进程能接收来自终端的输入和信号支撑前台 / 后台作业控制(job control)可以把会话理解为:“一次用户登录 / 一次终端交互环境”创建会话的进程称为会话首领(session leader)通常通过setsid()创建调用成功后:当前进程成为:新会话的会话首领新进程组的进程组首领sid == pid一个会话最多只能有一个控制终端控制终端通常是:/dev/ttyX。

2025-12-18 16:40:47 42

原创 sigaction()函数讲解

不要在 handler 中调用非 async-signal-safe 函数(例如mallocprintf等)。只做最小工作(设置、写入已打开的 FD)。总是初始化memset全零),并且显式设置sa_mask(用sigaddset在需要获取发送者信息时使用SA_SIGINFO并使用。对可能被中断的系统调用使用SA_RESTART,但不要依赖它能重启所有调用(并非保证)。处理 SIGCHLD 要小心:可用或在 handler 中循环。在多线程程序中尽量用sigwait处理信号,避免异步信号处理器的复杂性。

2025-12-12 16:40:11 31

原创 GPIO的通用初始化流程

使能 GPIO 时钟设置引脚为 GPIO 模式(IOMUX/MUX)配置电气特性(PADCTL)若为输出:先写默认电平设置方向(输入或输出)配置中断(如需要)执行上层注册(仅 OS 系统)验证与测试。

2025-12-10 23:03:25 760

原创 信号(semaphore) 和 锁(mutex)(三)为什么用 很多代码工程里TakeSem/GiveSem 但本质是锁?

历史原因(老 RTOS 没有 mutex)OSAL 统一接口(Sem 作为通用同步 API)兼容旧代码工程师继续沿用命名习惯不想在 API 层区分太多同步原语对业务层隐藏底层 OS 的差异(posix vs RTOS)

2025-12-10 18:09:14 28

原创 信号(semaphore) 和 锁(mutex)(二)二进制信号量 vs mutex 的深入区别

用途用 Mutex用 Binary Semaphore保护共享资源√×跨线程的一次性事件通知×√允许中断唤醒任务×√需要优先级继承√×避免优先级反转√×要求 unlock 必须由持锁线程执行√×(可以跨线程 post)

2025-12-10 17:56:18 53

原创 信号(semaphore) 和 锁(mutex)(一)

锁住资源,只有一个线程能进入。

2025-12-10 17:36:13 23

C语言指针详解.ppt

C语言指针详解

2021-01-25

ubuntu 10.04桌面版本64位

ubuntu 10.04桌面版本64位

2022-11-06

C++大作业简易计算器.rar

内容: 包含源码和实验报告 要求: 最基本的要求是能够实现四则运算。

2021-01-16

软件开发工具实验-下拉菜单.rar

内容:包含实验报告、可直接执行的程序、源码 功能:利用软件开发工具(javascript),开发一个下拉式菜单与通用对话框。

2021-01-16

mysql-5.5.40-win64安装包

41M 小巧方便, 附带安装和卸载word详细教程

2021-01-15

jdk-11.0.9_doc-all.rar

JDK 11 API英文帮助文档

2021-01-16

软件开发工具实验-数制转化.rar

内容:包含实验报告、可直接执行的程序、源码 功能:利用软件开发工具(javascript),简单不同进制(二进制、八进制、十六进制)间的转换的计算。

2021-01-16

C++大作业高斯消元求解方程组.rar

包含完整实验报告和源码 要求: 使用高斯消元法求解n元一次线性方程组。

2021-01-16

C++面向对象程序设计实验报告(计算器)

包含完整实验详细的报告70多页、可直接执行的exe程序、源码 功能:可视化、包含进制转换、基本和高级操作运算、回退、清除等功能

2021-01-16

空空如也

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

TA关注的人

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