• Home
  • Raw
  • Download

Lines Matching refs:fd

31 	kvfree(fdt->fd);  in __free_fdtable()
79 memcpy(nfdt->fd, ofdt->fd, cpy); in copy_fdtable()
80 memset((char *)nfdt->fd + cpy, 0, set); in copy_fdtable()
118 fdt->fd = data; in alloc_fdtable()
134 kvfree(fdt->fd); in alloc_fdtable()
228 static inline void __set_close_on_exec(unsigned int fd, struct fdtable *fdt) in __set_close_on_exec() argument
230 __set_bit(fd, fdt->close_on_exec); in __set_close_on_exec()
233 static inline void __clear_close_on_exec(unsigned int fd, struct fdtable *fdt) in __clear_close_on_exec() argument
235 if (test_bit(fd, fdt->close_on_exec)) in __clear_close_on_exec()
236 __clear_bit(fd, fdt->close_on_exec); in __clear_close_on_exec()
239 static inline void __set_open_fd(unsigned int fd, struct fdtable *fdt) in __set_open_fd() argument
241 __set_bit(fd, fdt->open_fds); in __set_open_fd()
242 fd /= BITS_PER_LONG; in __set_open_fd()
243 if (!~fdt->open_fds[fd]) in __set_open_fd()
244 __set_bit(fd, fdt->full_fds_bits); in __set_open_fd()
247 static inline void __clear_open_fd(unsigned int fd, struct fdtable *fdt) in __clear_open_fd() argument
249 __clear_bit(fd, fdt->open_fds); in __clear_open_fd()
250 __clear_bit(fd / BITS_PER_LONG, fdt->full_fds_bits); in __clear_open_fd()
295 new_fdt->fd = &newf->fd_array[0]; in dup_fd()
335 old_fds = old_fdt->fd; in dup_fd()
336 new_fds = new_fdt->fd; in dup_fd()
386 struct file * file = xchg(&fdt->fd[i], NULL); in close_files()
454 .fd = &init_files.fd_array[0],
483 unsigned int fd; in __alloc_fd() local
490 fd = start; in __alloc_fd()
491 if (fd < files->next_fd) in __alloc_fd()
492 fd = files->next_fd; in __alloc_fd()
494 if (fd < fdt->max_fds) in __alloc_fd()
495 fd = find_next_fd(fdt, fd); in __alloc_fd()
502 if (fd >= end) in __alloc_fd()
505 error = expand_files(files, fd); in __alloc_fd()
517 files->next_fd = fd + 1; in __alloc_fd()
519 __set_open_fd(fd, fdt); in __alloc_fd()
521 __set_close_on_exec(fd, fdt); in __alloc_fd()
523 __clear_close_on_exec(fd, fdt); in __alloc_fd()
524 error = fd; in __alloc_fd()
527 if (rcu_access_pointer(fdt->fd[fd]) != NULL) { in __alloc_fd()
528 printk(KERN_WARNING "alloc_fd: slot %d not NULL!\n", fd); in __alloc_fd()
529 rcu_assign_pointer(fdt->fd[fd], NULL); in __alloc_fd()
549 static void __put_unused_fd(struct files_struct *files, unsigned int fd) in __put_unused_fd() argument
552 __clear_open_fd(fd, fdt); in __put_unused_fd()
553 if (fd < files->next_fd) in __put_unused_fd()
554 files->next_fd = fd; in __put_unused_fd()
557 void put_unused_fd(unsigned int fd) in put_unused_fd() argument
561 __put_unused_fd(files, fd); in put_unused_fd()
587 void __fd_install(struct files_struct *files, unsigned int fd, in __fd_install() argument
598 BUG_ON(fdt->fd[fd] != NULL); in __fd_install()
599 rcu_assign_pointer(fdt->fd[fd], file); in __fd_install()
606 BUG_ON(fdt->fd[fd] != NULL); in __fd_install()
607 rcu_assign_pointer(fdt->fd[fd], file); in __fd_install()
611 void fd_install(unsigned int fd, struct file *file) in fd_install() argument
613 __fd_install(current->files, fd, file); in fd_install()
621 int __close_fd(struct files_struct *files, unsigned fd) in __close_fd() argument
628 if (fd >= fdt->max_fds) in __close_fd()
630 file = fdt->fd[fd]; in __close_fd()
633 rcu_assign_pointer(fdt->fd[fd], NULL); in __close_fd()
634 __put_unused_fd(files, fd); in __close_fd()
647 int __close_fd_get_file(unsigned int fd, struct file **res) in __close_fd_get_file() argument
655 if (fd >= fdt->max_fds) in __close_fd_get_file()
657 file = fdt->fd[fd]; in __close_fd_get_file()
660 rcu_assign_pointer(fdt->fd[fd], NULL); in __close_fd_get_file()
661 __put_unused_fd(files, fd); in __close_fd_get_file()
682 unsigned fd = i * BITS_PER_LONG; in do_close_on_exec() local
684 if (fd >= fdt->max_fds) in do_close_on_exec()
690 for ( ; set ; fd++, set >>= 1) { in do_close_on_exec()
694 file = fdt->fd[fd]; in do_close_on_exec()
697 rcu_assign_pointer(fdt->fd[fd], NULL); in do_close_on_exec()
698 __put_unused_fd(files, fd); in do_close_on_exec()
709 static struct file *__fget(unsigned int fd, fmode_t mask, unsigned int refs) in __fget() argument
716 file = fcheck_files(files, fd); in __fget()
732 struct file *fget_many(unsigned int fd, unsigned int refs) in fget_many() argument
734 return __fget(fd, FMODE_PATH, refs); in fget_many()
737 struct file *fget(unsigned int fd) in fget() argument
739 return __fget(fd, FMODE_PATH, 1); in fget()
743 struct file *fget_raw(unsigned int fd) in fget_raw() argument
745 return __fget(fd, 0, 1); in fget_raw()
765 static unsigned long __fget_light(unsigned int fd, fmode_t mask) in __fget_light() argument
771 file = __fcheck_files(files, fd); in __fget_light()
776 file = __fget(fd, mask, 1); in __fget_light()
782 unsigned long __fdget(unsigned int fd) in __fdget() argument
784 return __fget_light(fd, FMODE_PATH); in __fdget()
788 unsigned long __fdget_raw(unsigned int fd) in __fdget_raw() argument
790 return __fget_light(fd, 0); in __fdget_raw()
793 unsigned long __fdget_pos(unsigned int fd) in __fdget_pos() argument
795 unsigned long v = __fdget(fd); in __fdget_pos()
818 void set_close_on_exec(unsigned int fd, int flag) in set_close_on_exec() argument
825 __set_close_on_exec(fd, fdt); in set_close_on_exec()
827 __clear_close_on_exec(fd, fdt); in set_close_on_exec()
831 bool get_close_on_exec(unsigned int fd) in get_close_on_exec() argument
838 res = close_on_exec(fd, fdt); in get_close_on_exec()
844 struct file *file, unsigned fd, unsigned flags) in do_dup2() argument
865 tofree = fdt->fd[fd]; in do_dup2()
866 if (!tofree && fd_is_open(fd, fdt)) in do_dup2()
869 rcu_assign_pointer(fdt->fd[fd], file); in do_dup2()
870 __set_open_fd(fd, fdt); in do_dup2()
872 __set_close_on_exec(fd, fdt); in do_dup2()
874 __clear_close_on_exec(fd, fdt); in do_dup2()
880 return fd; in do_dup2()
887 int replace_fd(unsigned fd, struct file *file, unsigned flags) in replace_fd() argument
893 return __close_fd(files, fd); in replace_fd()
895 if (fd >= rlimit(RLIMIT_NOFILE)) in replace_fd()
899 err = expand_files(files, fd); in replace_fd()
902 return do_dup2(files, file, fd, flags); in replace_fd()
1007 file = rcu_dereference_check_fdtable(files, fdt->fd[n]); in iterate_fd()