单线程情况
而在单线程的模式中,则调用
- int fuse_loop(struct fuse *f)
- {
- if(f)
- return fuse_session_loop(f->se);
- else
- return -1;
- }
- fuse_session_loop函数原型如下:
- int fuse_session_loop(struct fuse_session *se)
- {
- …......
- while(!fuse_session_exit(se)) {
- struct fuse_chan *tmpch = ch;
- //直接读取请求
- res = fuse_chan_recv(&tmpch,buf,bufsize);
- if(res==-EINTR) continue;
- if(res<=0) break;
- //处理完成后,才读取下一个请求,性能跟不上
- fuse_session_process(se,buf,res,tmpch);
- }
- free(buf);
- fuse_session_reset(se);
- return res<0?-1;0;
- }
低级模式(low_level)
直接在挂载文件系统中的main进行调用fuse_session_loop:
- int main(int argc,char* argv[])
- {
- …......
- if(fuse_parse_cmdline(&args,&mountpoint,NULL,NULL)!=-1&&
- (ch=fuse_mount(mountpoint,&args))!=NULL) {
- …....
- //session_loop退出,就是session终止
- err = fuse_session_loop(se);
- fuse_remove_signal_handlers(se);
- fuse_session_remove_chan(ch);
- ….......
- }
- }
阅读(2245) | 评论(0) | 转发(0) |