static int doflush(struct puffs_usermount *pu, puffs_cookie_t cookie, int op, off_t start, off_t end) { struct puffs_framebuf *pb; struct puffs_flush *pf; size_t winlen; int rv; pb = puffs_framebuf_make(); if (pb == NULL) return ENOMEM; winlen = sizeof(struct puffs_flush); if ((rv = puffs_framebuf_getwindow(pb, 0, (void *)&pf, &winlen)) == -1) goto out; assert(winlen == sizeof(struct puffs_flush)); pf->pf_req.preq_buflen = sizeof(struct puffs_flush); pf->pf_req.preq_opclass = PUFFSOP_FLUSH; pf->pf_req.preq_id = puffs__nextreq(pu); pf->pf_op = op; pf->pf_cookie = cookie; pf->pf_start = start; pf->pf_end = end; rv = puffs_framev_enqueue_cc(puffs_cc_getcc(pu), puffs_getselectable(pu), pb, 0); out: puffs_framebuf_destroy(pb); return rv; }
struct puffs_framebuf * psbuf_makeout() { struct puffs_framebuf *pb; pb = puffs_framebuf_make(); puffs_framebuf_seekset(pb, 4); return pb; }