X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=include%2Flinux%2Ffile.h;fp=include%2Flinux%2Ffile.h;h=9901b850f2e466158556711303829d6d114686ce;hb=64ba3f394c830ec48a1c31b53dcae312c56f1604;hp=19a856f02f186ca475d647710c886ebce77e6f10;hpb=be1e6109ac94a859551f8e1774eb9a8469fe055c;p=linux-2.6.git diff --git a/include/linux/file.h b/include/linux/file.h index 19a856f02..9901b850f 100644 --- a/include/linux/file.h +++ b/include/linux/file.h @@ -10,7 +10,6 @@ #include #include #include -#include /* * The default fd array needs to be at least BITS_PER_LONG, @@ -18,22 +17,10 @@ */ #define NR_OPEN_DEFAULT BITS_PER_LONG -/* - * The embedded_fd_set is a small fd_set, - * suitable for most tasks (which open <= BITS_PER_LONG files) - */ -struct embedded_fd_set { - unsigned long fds_bits[1]; -}; - -/* - * More than this number of fds: we use a separately allocated fd_set - */ -#define EMBEDDED_FD_SET_SIZE (BITS_PER_BYTE * sizeof(struct embedded_fd_set)) - struct fdtable { unsigned int max_fds; int max_fdset; + int next_fd; struct file ** fd; /* current fd array */ fd_set *close_on_exec; fd_set *open_fds; @@ -46,20 +33,13 @@ struct fdtable { * Open file table structure */ struct files_struct { - /* - * read mostly part - */ atomic_t count; struct fdtable *fdt; struct fdtable fdtab; - /* - * written part on a separate cache line in SMP - */ - spinlock_t file_lock ____cacheline_aligned_in_smp; - int next_fd; - struct embedded_fd_set close_on_exec_init; - struct embedded_fd_set open_fds_init; + fd_set close_on_exec_init; + fd_set open_fds_init; struct file * fd_array[NR_OPEN_DEFAULT]; + spinlock_t file_lock; /* Protects concurrent writers. Nests inside tsk->alloc_lock */ }; #define files_fdtable(files) (rcu_dereference((files)->fdt)) @@ -113,6 +93,4 @@ struct task_struct; struct files_struct *get_files_struct(struct task_struct *); void FASTCALL(put_files_struct(struct files_struct *fs)); -extern int dupfd(struct file *file, unsigned int start); - #endif /* __LINUX_FILE_H */