From: Goswin v. B. <gos...@we...> - 2010-11-10 12:38:02
|
Miklos Szeredi <mi...@sz...> writes: > On Wed, 10 Nov 2010, Goswin von Brederlow wrote: >> >> struct fuse_chan *tmpch = fs->ch; >> res = fuse_chan_recv(&tmpch, buf, size); >> if (res > 0) { >> fuse_session_process(fs->se, buf, res, tmpch); > > Those two are superseded by fuse_session_receive_buf() and > fuse_session_process_buf(). The necessary change in the event loop is > minimal (see fuse_loop*.c). > > Thaks, > Miklos I've been thinking about this. The reason I use my own loop is twofold: 1) I need the buffer to be specially aligned for libaio. With splicing that reason goes away. The write() callback gets the pipe and can tee(2) that into a page aligned buffer. No more need to align the fuse buffer. 2) I need to only process pending requests (may not block) and then have to go back to my own select(). That leaves reason 1. It would be nice to have a non-blocking version of the main loop. It could even just be a callback that is called after processing each request. The callback could then only return when there is another request pending. Or am I missing something that is already there? MfG Goswin |