Lines Matching refs:fd
49 kvfree(fdt->fd); in __free_fdtable()
71 memcpy(nfdt->fd, ofdt->fd, cpy); in copy_fdtable()
72 memset((char *)(nfdt->fd) + cpy, 0, set); in copy_fdtable()
115 fdt->fd = data; in alloc_fdtable()
128 kvfree(fdt->fd); in alloc_fdtable()
205 static inline void __set_close_on_exec(int fd, struct fdtable *fdt) in __set_close_on_exec() argument
207 __set_bit(fd, fdt->close_on_exec); in __set_close_on_exec()
210 static inline void __clear_close_on_exec(int fd, struct fdtable *fdt) in __clear_close_on_exec() argument
212 __clear_bit(fd, fdt->close_on_exec); in __clear_close_on_exec()
215 static inline void __set_open_fd(int fd, struct fdtable *fdt) in __set_open_fd() argument
217 __set_bit(fd, fdt->open_fds); in __set_open_fd()
220 static inline void __clear_open_fd(int fd, struct fdtable *fdt) in __clear_open_fd() argument
222 __clear_bit(fd, fdt->open_fds); in __clear_open_fd()
264 new_fdt->fd = &newf->fd_array[0]; in dup_fd()
302 old_fds = old_fdt->fd; in dup_fd()
303 new_fds = new_fdt->fd; in dup_fd()
367 struct file * file = xchg(&fdt->fd[i], NULL); in close_files()
435 .fd = &init_files.fd_array[0],
448 unsigned int fd; in __alloc_fd() local
455 fd = start; in __alloc_fd()
456 if (fd < files->next_fd) in __alloc_fd()
457 fd = files->next_fd; in __alloc_fd()
459 if (fd < fdt->max_fds) in __alloc_fd()
460 fd = find_next_zero_bit(fdt->open_fds, fdt->max_fds, fd); in __alloc_fd()
467 if (fd >= end) in __alloc_fd()
470 error = expand_files(files, fd); in __alloc_fd()
482 files->next_fd = fd + 1; in __alloc_fd()
484 __set_open_fd(fd, fdt); in __alloc_fd()
486 __set_close_on_exec(fd, fdt); in __alloc_fd()
488 __clear_close_on_exec(fd, fdt); in __alloc_fd()
489 error = fd; in __alloc_fd()
492 if (rcu_access_pointer(fdt->fd[fd]) != NULL) { in __alloc_fd()
493 printk(KERN_WARNING "alloc_fd: slot %d not NULL!\n", fd); in __alloc_fd()
494 rcu_assign_pointer(fdt->fd[fd], NULL); in __alloc_fd()
514 static void __put_unused_fd(struct files_struct *files, unsigned int fd) in __put_unused_fd() argument
517 __clear_open_fd(fd, fdt); in __put_unused_fd()
518 if (fd < files->next_fd) in __put_unused_fd()
519 files->next_fd = fd; in __put_unused_fd()
522 void put_unused_fd(unsigned int fd) in put_unused_fd() argument
526 __put_unused_fd(files, fd); in put_unused_fd()
552 void __fd_install(struct files_struct *files, unsigned int fd, in __fd_install() argument
558 BUG_ON(fdt->fd[fd] != NULL); in __fd_install()
559 rcu_assign_pointer(fdt->fd[fd], file); in __fd_install()
563 void fd_install(unsigned int fd, struct file *file) in fd_install() argument
565 __fd_install(current->files, fd, file); in fd_install()
573 int __close_fd(struct files_struct *files, unsigned fd) in __close_fd() argument
580 if (fd >= fdt->max_fds) in __close_fd()
582 file = fdt->fd[fd]; in __close_fd()
585 rcu_assign_pointer(fdt->fd[fd], NULL); in __close_fd()
586 __clear_close_on_exec(fd, fdt); in __close_fd()
587 __put_unused_fd(files, fd); in __close_fd()
605 unsigned fd = i * BITS_PER_LONG; in do_close_on_exec() local
607 if (fd >= fdt->max_fds) in do_close_on_exec()
613 for ( ; set ; fd++, set >>= 1) { in do_close_on_exec()
617 file = fdt->fd[fd]; in do_close_on_exec()
620 rcu_assign_pointer(fdt->fd[fd], NULL); in do_close_on_exec()
621 __put_unused_fd(files, fd); in do_close_on_exec()
632 static struct file *__fget(unsigned int fd, fmode_t mask) in __fget() argument
638 file = fcheck_files(files, fd); in __fget()
649 struct file *fget(unsigned int fd) in fget() argument
651 return __fget(fd, FMODE_PATH); in fget()
655 struct file *fget_raw(unsigned int fd) in fget_raw() argument
657 return __fget(fd, 0); in fget_raw()
677 static unsigned long __fget_light(unsigned int fd, fmode_t mask) in __fget_light() argument
683 file = __fcheck_files(files, fd); in __fget_light()
688 file = __fget(fd, mask); in __fget_light()
694 unsigned long __fdget(unsigned int fd) in __fdget() argument
696 return __fget_light(fd, FMODE_PATH); in __fdget()
700 unsigned long __fdget_raw(unsigned int fd) in __fdget_raw() argument
702 return __fget_light(fd, 0); in __fdget_raw()
705 unsigned long __fdget_pos(unsigned int fd) in __fdget_pos() argument
707 unsigned long v = __fdget(fd); in __fdget_pos()
725 void set_close_on_exec(unsigned int fd, int flag) in set_close_on_exec() argument
732 __set_close_on_exec(fd, fdt); in set_close_on_exec()
734 __clear_close_on_exec(fd, fdt); in set_close_on_exec()
738 bool get_close_on_exec(unsigned int fd) in get_close_on_exec() argument
745 res = close_on_exec(fd, fdt); in get_close_on_exec()
751 struct file *file, unsigned fd, unsigned flags) in do_dup2() argument
772 tofree = fdt->fd[fd]; in do_dup2()
773 if (!tofree && fd_is_open(fd, fdt)) in do_dup2()
776 rcu_assign_pointer(fdt->fd[fd], file); in do_dup2()
777 __set_open_fd(fd, fdt); in do_dup2()
779 __set_close_on_exec(fd, fdt); in do_dup2()
781 __clear_close_on_exec(fd, fdt); in do_dup2()
787 return fd; in do_dup2()
794 int replace_fd(unsigned fd, struct file *file, unsigned flags) in replace_fd() argument
800 return __close_fd(files, fd); in replace_fd()
802 if (fd >= rlimit(RLIMIT_NOFILE)) in replace_fd()
806 err = expand_files(files, fd); in replace_fd()
809 return do_dup2(files, file, fd, flags); in replace_fd()
904 file = rcu_dereference_check_fdtable(files, fdt->fd[n]); in iterate_fd()