ipc/ 源码目录与模块索引

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
2
3
4
5
6
obj-$(CONFIG_SYSVIPC)         += util.o msgutil.o msg.o sem.o shm.o syscall.o
obj-$(CONFIG_SYSVIPC_SYSCTL) += ipc_sysctl.o
obj-$(CONFIG_SYSVIPC_COMPAT) += compat.o
obj-$(CONFIG_POSIX_MQUEUE) += mqueue.o msgutil.o
obj-$(CONFIG_IPC_NS) += namespace.o
obj-$(CONFIG_POSIX_MQUEUE_SYSCTL) += mq_sysctl.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
2
3
4
5
6
struct ipc_namespace {
struct ipc_ids ids[3]; // SEM, MSG, SHM
// sem_ctls[], msg_ctl*, shm_ctl*
struct vfsmount *mq_mnt; // POSIX mqueue
...
};
索引 类型 文件
IPC_SEM_IDS 信号量集 sem.c
IPC_MSG_IDS 消息队列 msg.c
IPC_SHM_IDS 共享内存段 shm.c

每类使用 struct ipc_idsidr(按 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_nsmsg_init_nssem_init_nsshm_init_ns

六、专题对照

主题 文档
util / ID 01
sem 02
msg 03
shm 04
mqueue 05
ns / sysctl 06
RK3588 07

文章互动

阅读 --

留言

0 条留言

正在加载留言…