ipc/ 源码目录与模块索引
源码路径:
rk3588/kernel-6.1/ipc/(13 个文件)
内核版本:Linux 6.1(RK3588 / ARM64)
文档目录:linuxDoc/ipc/
一、文件清单
| 文件 | 条件编译 | 职责 |
|---|---|---|
util.c |
CONFIG_SYSVIPC |
ID 管理、ipcget、proc /proc/sysvipc、热插拔 notifier |
util.h |
头文件 | 公共 API、ID 位域、ipc_ops |
sem.c |
CONFIG_SYSVIPC |
System V 信号量 |
msg.c |
CONFIG_SYSVIPC |
System V 消息队列 |
msgutil.c |
SYSVIPC 或 POSIX_MQUEUE | msg_msg 分配、init_ipc_ns |
shm.c |
CONFIG_SYSVIPC |
System V 共享内存 |
syscall.c |
CONFIG_SYSVIPC + __ARCH_WANT_SYS_IPC |
旧 ipc() 多路复用 |
compat.c |
CONFIG_SYSVIPC_COMPAT |
32 位 compat 路径 |
namespace.c |
CONFIG_IPC_NS |
ipc_namespace 创建/销毁 |
mqueue.c |
CONFIG_POSIX_MQUEUE |
POSIX 消息队列 + mqueuefs |
ipc_sysctl.c |
CONFIG_SYSVIPC_SYSCTL |
kernel.shm*、kernel.msg*、kernel.sem |
mq_sysctl.c |
CONFIG_POSIX_MQUEUE_SYSCTL |
fs.mqueue.* |
Makefile |
— | 对象链接规则 |
平台:无 Rockchip 专用代码。
二、Makefile
1 | obj-$(CONFIG_SYSVIPC) += util.o msgutil.o msg.o sem.o shm.o syscall.o |
msgutil.o 可被 SysV 与 mqueue 共享编译。
三、Kconfig(init/Kconfig)
| 配置 | 默认 | 说明 |
|---|---|---|
SYSVIPC |
通常 y | 三类 SysV IPC |
SYSVIPC_SYSCTL |
y(依赖 SYSCTL) | /proc/sys/kernel 中 ipc 参数 |
SYSVIPC_COMPAT |
y(COMPAT) | ARM32 compat 等 |
POSIX_MQUEUE |
常 y | 依赖 NET |
POSIX_MQUEUE_SYSCTL |
y | mqueue 限额 sysctl |
IPC_NS |
y | CLONE_NEWIPC 隔离 |
四、ipc_namespace 与三类 ID
include/linux/ipc_namespace.h:
1 | struct ipc_namespace { |
| 索引 | 类型 | 文件 |
|---|---|---|
IPC_SEM_IDS |
信号量集 | sem.c |
IPC_MSG_IDS |
消息队列 | msg.c |
IPC_SHM_IDS |
共享内存段 | shm.c |
每类使用 struct ipc_ids:idr(按 id 查找)+ rhashtable(按 key 查找)+ rwsem。
五、初始化顺序
| 阶段 | 函数 | 说明 |
|---|---|---|
device_initcall |
ipc_init() in util.c |
proc_mkdir("sysvipc"),sem_init msg_init shm_init |
| 每 NS | create_ipc_ns() |
mq_init_ns、msg_init_ns、sem_init_ns、shm_init_ns |
六、专题对照
| 主题 | 文档 |
|---|---|
| util / ID | 01 |
| sem | 02 |
| msg | 03 |
| shm | 04 |
| mqueue | 05 |
| ns / sysctl | 06 |
| RK3588 | 07 |
正在加载留言…