newfdp 838 kern/kern_descrip.c struct filedesc0 *newfdp; newfdp 841 kern/kern_descrip.c newfdp = pool_get(&fdesc_pool, PR_WAITOK); newfdp 842 kern/kern_descrip.c bzero(newfdp, sizeof(struct filedesc0)); newfdp 846 kern/kern_descrip.c newfdp->fd_fd.fd_cdir = fdp->fd_cdir; newfdp 847 kern/kern_descrip.c VREF(newfdp->fd_fd.fd_cdir); newfdp 848 kern/kern_descrip.c newfdp->fd_fd.fd_rdir = fdp->fd_rdir; newfdp 849 kern/kern_descrip.c if (newfdp->fd_fd.fd_rdir) newfdp 850 kern/kern_descrip.c VREF(newfdp->fd_fd.fd_rdir); newfdp 852 kern/kern_descrip.c rw_init(&newfdp->fd_fd.fd_lock, "fdlock"); newfdp 855 kern/kern_descrip.c newfdp->fd_fd.fd_refcnt = 1; newfdp 856 kern/kern_descrip.c newfdp->fd_fd.fd_cmask = cmask; newfdp 857 kern/kern_descrip.c newfdp->fd_fd.fd_ofiles = newfdp->fd_dfiles; newfdp 858 kern/kern_descrip.c newfdp->fd_fd.fd_ofileflags = newfdp->fd_dfileflags; newfdp 859 kern/kern_descrip.c newfdp->fd_fd.fd_nfiles = NDFILE; newfdp 860 kern/kern_descrip.c newfdp->fd_fd.fd_himap = newfdp->fd_dhimap; newfdp 861 kern/kern_descrip.c newfdp->fd_fd.fd_lomap = newfdp->fd_dlomap; newfdp 862 kern/kern_descrip.c newfdp->fd_fd.fd_knlistsize = -1; newfdp 864 kern/kern_descrip.c newfdp->fd_fd.fd_freefile = 0; newfdp 865 kern/kern_descrip.c newfdp->fd_fd.fd_lastfile = 0; newfdp 867 kern/kern_descrip.c return (&newfdp->fd_fd); newfdp 886 kern/kern_descrip.c struct filedesc *newfdp, *fdp = p->p_fd; newfdp 890 kern/kern_descrip.c newfdp = pool_get(&fdesc_pool, PR_WAITOK); newfdp 891 kern/kern_descrip.c bcopy(fdp, newfdp, sizeof(struct filedesc)); newfdp 892 kern/kern_descrip.c if (newfdp->fd_cdir) newfdp 893 kern/kern_descrip.c VREF(newfdp->fd_cdir); newfdp 894 kern/kern_descrip.c if (newfdp->fd_rdir) newfdp 895 kern/kern_descrip.c VREF(newfdp->fd_rdir); newfdp 896 kern/kern_descrip.c newfdp->fd_refcnt = 1; newfdp 904 kern/kern_descrip.c if (newfdp->fd_lastfile < NDFILE) { newfdp 905 kern/kern_descrip.c newfdp->fd_ofiles = ((struct filedesc0 *) newfdp)->fd_dfiles; newfdp 906 kern/kern_descrip.c newfdp->fd_ofileflags = newfdp 907 kern/kern_descrip.c ((struct filedesc0 *) newfdp)->fd_dfileflags; newfdp 915 kern/kern_descrip.c i = newfdp->fd_nfiles; newfdp 916 kern/kern_descrip.c while (i >= 2 * NDEXTENT && i > newfdp->fd_lastfile * 2) newfdp 918 kern/kern_descrip.c newfdp->fd_ofiles = malloc(i * OFILESIZE, M_FILEDESC, M_WAITOK); newfdp 919 kern/kern_descrip.c newfdp->fd_ofileflags = (char *) &newfdp->fd_ofiles[i]; newfdp 922 kern/kern_descrip.c newfdp->fd_himap = newfdp 923 kern/kern_descrip.c ((struct filedesc0 *) newfdp)->fd_dhimap; newfdp 924 kern/kern_descrip.c newfdp->fd_lomap = newfdp 925 kern/kern_descrip.c ((struct filedesc0 *) newfdp)->fd_dlomap; newfdp 927 kern/kern_descrip.c newfdp->fd_himap = malloc(NDHISLOTS(i) * sizeof(u_int), newfdp 929 kern/kern_descrip.c newfdp->fd_lomap = malloc(NDLOSLOTS(i) * sizeof(u_int), newfdp 932 kern/kern_descrip.c newfdp->fd_nfiles = i; newfdp 933 kern/kern_descrip.c bcopy(fdp->fd_ofiles, newfdp->fd_ofiles, i * sizeof(struct file **)); newfdp 934 kern/kern_descrip.c bcopy(fdp->fd_ofileflags, newfdp->fd_ofileflags, i * sizeof(char)); newfdp 935 kern/kern_descrip.c bcopy(fdp->fd_himap, newfdp->fd_himap, NDHISLOTS(i) * sizeof(u_int)); newfdp 936 kern/kern_descrip.c bcopy(fdp->fd_lomap, newfdp->fd_lomap, NDLOSLOTS(i) * sizeof(u_int)); newfdp 941 kern/kern_descrip.c if (newfdp->fd_knlistsize != -1) { newfdp 942 kern/kern_descrip.c fpp = newfdp->fd_ofiles; newfdp 943 kern/kern_descrip.c for (i = 0; i <= newfdp->fd_lastfile; i++, fpp++) newfdp 945 kern/kern_descrip.c fdremove(newfdp, i); newfdp 946 kern/kern_descrip.c newfdp->fd_knlist = NULL; newfdp 947 kern/kern_descrip.c newfdp->fd_knlistsize = -1; newfdp 948 kern/kern_descrip.c newfdp->fd_knhash = NULL; newfdp 949 kern/kern_descrip.c newfdp->fd_knhashmask = 0; newfdp 952 kern/kern_descrip.c fpp = newfdp->fd_ofiles; newfdp 953 kern/kern_descrip.c for (i = 0; i <= newfdp->fd_lastfile; i++, fpp++) newfdp 961 kern/kern_descrip.c fdremove(newfdp, i); newfdp 965 kern/kern_descrip.c return (newfdp);