生如夏花

专注于工业物联网行业数据采集,嵌入式Linux系统裁剪,5G智慧网关软件开发等

Linux内核模块

本文介绍了Linux内核模块的机制,包括内核模块的特点、构建过程、模块操作命令、模块参数、导出符号、模块声明与描述以及模块引用计数。

内核模块允许动态加载功能到内核中,避免了内核重编译的需要。

文章通过示例代码详细解释了如何编写、编译和操作内核模块,以及如何使用模块参数和导出符号。此外,还讨论了模块的许可证声明、作者信息、描述等元数据,以及如何使用模块引用计数来防止模块在使用中被卸载。

VLC之组播功能测试

通过VLC配置组播服务器和客户端,体验视频基础组播功能。同时在支持IPTV的路由器上可以体验在WAN->LAN的视频播放、桌面共享等功能。

同时排查常见问题,当组播客户端无法接收到数据时,常见原因是组播服务器没有将数据发出到正确的网络接口。

套接字基础

套接字地址结构的传递既有用户态到内核态(如bind函数)也有内核态传递到用户态(如accept函数),对于应用程序来说,传给内核的套接字地址结构需要类型强制转换为struct sockaddr*,而接收内核传出的套接字地址结构时需要采用struct sockaddr_storage*

对于ASCII字符串格式的地址转换建议有线采用inet_ptoninet_ntop这两个函数,因为同时兼容IPv4和IPv6。

WindowsTerminal配置

本文介绍了如何配置Windows Terminal以提高使用效率。

首先,通过修改注册表,将Windows Terminal添加到右键菜单,并支持定位到当前目录以及以管理员身份打开。其次,提供了一个详细的配置备份示例,包括字体设置、下拉列表等。用户需将示例中的路径和图标替换为个人环境中的相应值。通过这些配置,可以提升Windows Terminal的便捷性和个性化。

Diagnostic

本文介绍了Neovim的诊断系统,它提供了一个统一框架来管理来自不同工具的代码问题反馈。

诊断信息由诊断提供者产生,需要创建命名空间、设置配置参数、生成诊断信息,并通过API将诊断信息设置到当前buffer。

诊断信息包含严重程度、位置、消息等字段。Nvim提供的API分为两类:一类作用于诊断生产者,一类作用于诊断消费者。诊断处理器负责渲染诊断信息,可通过vim.diagnostic.show()函数显示给用户。

内置处理器包括virtual_text、virtual_lines、signs和underline。自定义处理器可以通过添加到vim.diagnostic.handlers表来实现。

uloop源码剖析

uloop是OpenWrt基础库libubox的核心模块,提供事件驱动功能。

其主体框架由uloop_init、uloop_run_timeout和uloop_done三个函数构成,分别完成初始化、事件处理循环和清理工作。

uloop支持五大核心功能:

  1. 文件描述符监控基于epoll实现,通过epoll_wait处理就绪事件;
  2. 定时器事件在循环中检测超时;
  3. 子进程管理响应SIGCHLD信号;
  4. 信号处理通过管道实现;
  5. 间隔定时器依赖文件描述符机制。

TiKZ绘制折线图

本文介绍了TiKZ宏包在LaTeX中的强大矢量绘图功能,包括基础绘图、高级图形绘制和专业领域支持。

提供了一个折线图绘制模板,包括LaTeX代码和数据文件示例。还介绍了Make自动化编译配置,包括编译LaTeX文件和将PDF转换为SVG格式。

最后展示了绘制的折线图结果。