URI: 
       tfree fuse messages - plan9port - [fork] Plan 9 from user space
  HTML git clone git://src.adamsgaard.dk/plan9port
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit be8b4b397af631bad302ef2646477f228b4537b5
   DIR parent 0d5f0a724bc6ce5cb837afee442d7ecca470cf16
  HTML Author: rsc <devnull@localhost>
       Date:   Tue,  1 Aug 2006 03:19:53 +0000
       
       free fuse messages
       
       Diffstat:
         M src/cmd/9pfuse/fuse.c               |       9 ++++++++-
       
       1 file changed, 8 insertions(+), 1 deletion(-)
       ---
   DIR diff --git a/src/cmd/9pfuse/fuse.c b/src/cmd/9pfuse/fuse.c
       t@@ -5,6 +5,7 @@ int fuseeof;
        int fusebufsize;
        int fusemaxwrite;
        FuseMsg *fusemsglist;
       +Lock fusemsglock;
        
        int mountfuse(char *mtpt);
        void unmountfuse(char *mtpt);
       t@@ -15,10 +16,13 @@ allocfusemsg(void)
                FuseMsg *m;
                void *vbuf;
                
       +        lock(&fusemsglock);
                if((m = fusemsglist) != nil){
                        fusemsglist = m->next;
       +                unlock(&fusemsglock);
                        return m;
                }
       +        unlock(&fusemsglock);
                m = emalloc(sizeof(*m) + fusebufsize);
                vbuf = m+1;
                m->buf = vbuf;
       t@@ -31,8 +35,10 @@ allocfusemsg(void)
        void
        freefusemsg(FuseMsg *m)
        {
       +        lock(&fusemsglock);
                m->next = fusemsglist;
                fusemsglist = m;
       +        unlock(&fusemsglock);
        }
        
        FuseMsg*
       t@@ -234,6 +240,7 @@ replyfuse(FuseMsg *m, void *arg, int narg)
                }
                if(writev(fusefd, vec, nvec) < 0)
                        sysfatal("replyfuse: %r");
       +        freefusemsg(m);
        }
        
        /*
       t@@ -251,6 +258,7 @@ replyfuseerrno(FuseMsg *m, int e)
                        fprint(2, "FUSE <- %#G\n", m->hdr, &hdr, 0);
                if(write(fusefd, &hdr, sizeof hdr) < 0)
                        sysfatal("replyfuseerror: %r");
       +        freefusemsg(m);
        }
        
        void
       t@@ -310,7 +318,6 @@ initfuse(char *mtpt)
                rx.minor = FUSE_KERNEL_MINOR_VERSION;
                rx.max_write = fusemaxwrite;
                replyfuse(m, &rx, sizeof rx);
       -        freefusemsg(m);
        }
        
        /*