diff options
author | Jens Axboe <axboe@kernel.dk> | 2022-05-25 19:40:19 +0300 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2022-07-25 03:39:12 +0300 |
commit | a4ad4f748ea96202451f88b6385d7283d0f2e513 (patch) | |
tree | fc51a4da80a7e654e34699aa86f1603995995432 /io_uring/filetable.h | |
parent | e5550a1447bf8d82f32b58e2ba54792a6985d080 (diff) | |
download | linux-a4ad4f748ea96202451f88b6385d7283d0f2e513.tar.xz |
io_uring: move fdinfo helpers to its own file
This also means moving a bit more of the fixed file handling to the
filetable side, which makes sense separately too.
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'io_uring/filetable.h')
-rw-r--r-- | io_uring/filetable.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/io_uring/filetable.h b/io_uring/filetable.h index fe1ec581958d..6e1675f406b7 100644 --- a/io_uring/filetable.h +++ b/io_uring/filetable.h @@ -36,6 +36,8 @@ bool io_alloc_file_tables(struct io_file_table *table, unsigned nr_files); void io_free_file_tables(struct io_file_table *table); int io_file_bitmap_get(struct io_ring_ctx *ctx); +unsigned int io_file_get_flags(struct file *file); + static inline void io_file_bitmap_clear(struct io_file_table *table, int bit) { __clear_bit(bit, table->bitmap); @@ -55,4 +57,21 @@ io_fixed_file_slot(struct io_file_table *table, unsigned i) return &table->files[i]; } +static inline struct file *io_file_from_index(struct io_file_table *table, + int index) +{ + struct io_fixed_file *slot = io_fixed_file_slot(table, index); + + return (struct file *) (slot->file_ptr & FFS_MASK); +} + +static inline void io_fixed_file_set(struct io_fixed_file *file_slot, + struct file *file) +{ + unsigned long file_ptr = (unsigned long) file; + + file_ptr |= io_file_get_flags(file); + file_slot->file_ptr = file_ptr; +} + #endif |