Vue i18n动态加载踩坑记:接口数据格式不对?一个方法帮你搞定转换
2026/6/8 18:43:38
当vp->v_stream == 0时,意味着这是该流的首次打开操作。首先会进行内存检查,以确保STREAMS没有使用过多的内存。接着,会分配一个队列对和一个流头,初始化流头(stdata_t)并设置STWOPEN标志,同时让vp->v_stream指向该流头,队列对中的q_ptr字段也会指向流头。
若该vnode是一个FIFO,流头的streamtab指针(sd_strtab)会被修改,指向FIFO的streamtab结构,这将导致不同的流头处理例程被执行。
之后,使用qattach()函数将流头队列附加到驱动程序,并调用驱动程序的打开例程。任何配置为自动推入流的模块都会被推入,STREAMS提供了模块自动推入功能,管理员可以使用autopush实用程序通过sad驱动程序和特定的ioctl命令来配置模块列表,每次流首次打开时自动推入。
最后,清除STWOPEN标志,并唤醒在流头等待的进程。
STREAMS克隆设备每次打开时会自动生成其次要设备号