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);