1 /* 2 FUSE: Filesystem in Userspace 3 Copyright (C) 2001-2007 Miklos Szeredi <miklos@szeredi.hu> 4 5 Implementation of the single-threaded FUSE session loop. 6 7 This program can be distributed under the terms of the GNU LGPLv2. 8 See the file COPYING.LIB 9 */ 10 11 #include "config.h" 12 #include "fuse_lowlevel.h" 13 #include "fuse_i.h" 14 15 #include <stdio.h> 16 #include <stdlib.h> 17 #include <errno.h> 18 fuse_session_loop(struct fuse_session * se)19int fuse_session_loop(struct fuse_session *se) 20 { 21 int res = 0; 22 struct fuse_buf fbuf = { 23 .mem = NULL, 24 }; 25 26 while (!fuse_session_exited(se)) { 27 res = fuse_session_receive_buf_int(se, &fbuf, NULL); 28 29 if (res == -EINTR) 30 continue; 31 if (res <= 0) 32 break; 33 34 fuse_session_process_buf_int(se, &fbuf, NULL); 35 } 36 37 free(fbuf.mem); 38 if(res > 0) 39 /* No error, just the length of the most recently read 40 request */ 41 res = 0; 42 if(se->error != 0) 43 res = se->error; 44 fuse_session_reset(se); 45 return res; 46 } 47