QNX PathnameManager学习整理

发布时间:2026/6/28 19:12:22
QNX PathnameManager学习整理 procnto中 路径管理PathNameManager的作用是1. 维护全局路径树所有进程共享/proc: procnto自身提供进程内存/proc/boot IFS镜像/dev/*: 硬件驱动devc-cam,devb-sd串口等/mnt/*: 持久化文件系统分区/var/tmp临时目录也就是任何进程打开某个路径都会向PathNameManager进行询问这个路径属于哪个资源管理器进程然后再转发IPC请求给对应的资源管理器进程2. 路径解析/路由分发当进程调用open/stat/ioctl操作某个路径的时候其流程是:a. 发送IPC消息给PathNameManagerb. PathNameManager逐层拆分解析路径 (dev/cam0 - /dev - cam0);c. 查找该路径绑定的资源管理器进程的PIDd. 将open 请求转发给资源管理器进程e. 资源管理器进程返回文件描述符给操作该路径的进程3. 挂载/卸载所有的mount系统调用都是由PathNameManager处理的a. 将资源管理器进程挂载到指定路径例如将 SD卡驱动进程挂载到 /mnt/storage 路径b. 维护挂载树记录路径和 资源管理器进程/驱动进程的对应关系c.支持覆盖挂载以及子目录挂载d.4. 软连接管理软连接的创建和解析全部由PathNameManager来完成/dev/cam_ln - /dev/cam1访问 /dev/cam_ln时由PathNameManager解析目标路径然后路由到负责该路径的真实资源管理器进程/驱动进程5. 路径权限管理/萌宠空间隔离检查进程是否有权限访问某个路径通过支持chroot完成根据进程隔离路径的功能当驱动/资源管理进程启动后需要调用 resmgr_attach API 向 PathNameManager注册自己的路径PathNameManager会将路径和调用进程的PID绑定记录后续其他进程对该路径的访问将由PathnameManager发送IPC到该驱动/资源管理进程PathnameManager的功能将驱动程序从内核中剥离出去驱动文件系统都是独立的用户态进程依靠PathnameManager做统一路由此外对于硬件和普通文件系统的访问都可以支持标准的Posix接口(open/IOCtl/close/read/write...)并且可以动态添加自定义路径的处理程序无需修改内核