Lines Matching defs:fdbuf
683 fdbuf_free(struct fdbuf *fdbuf)
688 dprint(1, ("fdbuf_free: %d fds\n", fdbuf->fd_numfd));
689 for (i = 0; i < fdbuf->fd_numfd; i++) {
695 * assigning fdbuf->fd_fds[i] to fp.
697 bcopy((char *)&fdbuf->fd_fds[i], (char *)&fp, sizeof (fp));
701 if (fdbuf->fd_ebuf != NULL)
702 kmem_free(fdbuf->fd_ebuf, fdbuf->fd_ebuflen);
703 kmem_free(fdbuf, fdbuf->fd_size);
711 fdbuf_allocmsg(int size, struct fdbuf *fdbuf)
716 dprint(1, ("fdbuf_allocmsg: size %d, %d fds\n", size, fdbuf->fd_numfd));
718 fdbuf->fd_ebuf = (caddr_t)buf;
719 fdbuf->fd_ebuflen = size;
720 fdbuf->fd_frtn.free_func = fdbuf_free;
721 fdbuf->fd_frtn.free_arg = (caddr_t)fdbuf;
723 mp = esballoc_wait(buf, size, BPRI_MED, &fdbuf->fd_frtn);
729 * Extract file descriptors from a fdbuf.
734 fdbuf_extract(struct fdbuf *fdbuf, void *rights, int rightslen)
742 fdbuf->fd_numfd, rightslen));
744 numfd = fdbuf->fd_numfd;
761 * assigning fdbuf->fd_fds[i] to fp.
763 bcopy((char *)&fdbuf->fd_fds[i], (char *)&fp, sizeof (fp));
795 * Insert file descriptors into an fdbuf.
796 * Returns a kmem_alloc'ed fdbuf. The fdbuf should be freed
800 fdbuf_create(void *rights, int rightslen, struct fdbuf **fdbufp)
805 struct fdbuf *fdbuf;
813 fdbuf = kmem_alloc(fdbufsize, KM_SLEEP);
814 fdbuf->fd_size = fdbufsize;
815 fdbuf->fd_numfd = 0;
816 fdbuf->fd_ebuf = NULL;
817 fdbuf->fd_ebuflen = 0;
821 fdbuf_free(fdbuf);
830 * The maximum alignment for fdbuf (or any option header
835 * the double word alignment because fdbuf goes after an
840 fdbuf->fd_fds[i] = fp;
841 fdbuf->fd_numfd++;
846 *fdbufp = fdbuf;
869 * Return non-zero if the mblk and fdbuf are consistent.
872 fdbuf_verify(mblk_t *mp, struct fdbuf *fdbuf, int fdbuflen)
875 fdbuflen == fdbuf->fd_size) {
892 bcmp(frp->free_arg, fdbuf, fdbuflen) == 0) {
893 dprint(1, ("fdbuf_verify: fdbuf %p len %d\n",
894 (void *)fdbuf, fdbuflen));
898 "sockfs: mismatched fdbuf content (%p)",
904 "sockfs: mismatched fdbuf len %d, %d\n",
905 fdbuflen, fdbuf->fd_size);
916 close_fds(void *fdbuf, int fdbuflen, int startoff)
918 int *fds = (int *)fdbuf;
922 dprint(1, ("close_fds(%p, %d, %d)\n", fdbuf, fdbuflen, startoff));
1132 struct fdbuf *fdbuf;
1135 fdbuf = (struct fdbuf *)_TPI_TOPT_DATA(tohp);
1138 if (!fdbuf_verify(mp, fdbuf, fdbuflen))
1190 struct fdbuf *fdbuf;
1214 fdbuf = (struct fdbuf *)_TPI_TOPT_DATA(tohp);
1217 if (!fdbuf_verify(mp, fdbuf, fdbuflen))
1220 error = fdbuf_extract(fdbuf, control,
1236 error = fdbuf_extract(fdbuf,