diff options
| -rw-r--r-- | drivers/usb/gadget/inode.c | 1 | ||||
| -rw-r--r-- | fs/aio.c | 61 | ||||
| -rw-r--r-- | include/linux/aio.h | 61 | 
3 files changed, 62 insertions, 61 deletions
diff --git a/drivers/usb/gadget/inode.c b/drivers/usb/gadget/inode.c index 32bcbeba119..994e7433e87 100644 --- a/drivers/usb/gadget/inode.c +++ b/drivers/usb/gadget/inode.c @@ -25,6 +25,7 @@  #include <linux/slab.h>  #include <linux/poll.h>  #include <linux/mmu_context.h> +#include <linux/aio.h>  #include <linux/device.h>  #include <linux/moduleparam.h> @@ -45,6 +45,67 @@  #define dprintk(x...)	do { ; } while (0)  #endif +#define AIO_RING_MAGIC			0xa10a10a1 +#define AIO_RING_COMPAT_FEATURES	1 +#define AIO_RING_INCOMPAT_FEATURES	0 +struct aio_ring { +	unsigned	id;	/* kernel internal index number */ +	unsigned	nr;	/* number of io_events */ +	unsigned	head; +	unsigned	tail; + +	unsigned	magic; +	unsigned	compat_features; +	unsigned	incompat_features; +	unsigned	header_length;	/* size of aio_ring */ + + +	struct io_event		io_events[0]; +}; /* 128 bytes + ring size */ + +#define AIO_RING_PAGES	8 +struct aio_ring_info { +	unsigned long		mmap_base; +	unsigned long		mmap_size; + +	struct page		**ring_pages; +	spinlock_t		ring_lock; +	long			nr_pages; + +	unsigned		nr, tail; + +	struct page		*internal_pages[AIO_RING_PAGES]; +}; + +static inline unsigned aio_ring_avail(struct aio_ring_info *info, +					struct aio_ring *ring) +{ +	return (ring->head + info->nr - 1 - ring->tail) % info->nr; +} + +struct kioctx { +	atomic_t		users; +	int			dead; + +	/* This needs improving */ +	unsigned long		user_id; +	struct hlist_node	list; + +	wait_queue_head_t	wait; + +	spinlock_t		ctx_lock; + +	int			reqs_active; +	struct list_head	active_reqs;	/* used for cancellation */ + +	/* sys_io_setup currently limits this to an unsigned int */ +	unsigned		max_reqs; + +	struct aio_ring_info	ring_info; + +	struct rcu_head		rcu_head; +}; +  /*------ sysctl variables----*/  static DEFINE_SPINLOCK(aio_nr_lock);  unsigned long aio_nr;		/* current system wide number of aio requests */ diff --git a/include/linux/aio.h b/include/linux/aio.h index 615d55a5d0b..7b1eb234e0a 100644 --- a/include/linux/aio.h +++ b/include/linux/aio.h @@ -103,67 +103,6 @@ static inline void init_sync_kiocb(struct kiocb *kiocb, struct file *filp)  		};  } -#define AIO_RING_MAGIC			0xa10a10a1 -#define AIO_RING_COMPAT_FEATURES	1 -#define AIO_RING_INCOMPAT_FEATURES	0 -struct aio_ring { -	unsigned	id;	/* kernel internal index number */ -	unsigned	nr;	/* number of io_events */ -	unsigned	head; -	unsigned	tail; - -	unsigned	magic; -	unsigned	compat_features; -	unsigned	incompat_features; -	unsigned	header_length;	/* size of aio_ring */ - - -	struct io_event		io_events[0]; -}; /* 128 bytes + ring size */ - -#define AIO_RING_PAGES	8 -struct aio_ring_info { -	unsigned long		mmap_base; -	unsigned long		mmap_size; - -	struct page		**ring_pages; -	spinlock_t		ring_lock; -	long			nr_pages; - -	unsigned		nr, tail; - -	struct page		*internal_pages[AIO_RING_PAGES]; -}; - -static inline unsigned aio_ring_avail(struct aio_ring_info *info, -					struct aio_ring *ring) -{ -	return (ring->head + info->nr - 1 - ring->tail) % info->nr; -} - -struct kioctx { -	atomic_t		users; -	int			dead; - -	/* This needs improving */ -	unsigned long		user_id; -	struct hlist_node	list; - -	wait_queue_head_t	wait; - -	spinlock_t		ctx_lock; - -	int			reqs_active; -	struct list_head	active_reqs;	/* used for cancellation */ - -	/* sys_io_setup currently limits this to an unsigned int */ -	unsigned		max_reqs; - -	struct aio_ring_info	ring_info; - -	struct rcu_head		rcu_head; -}; -  /* prototypes */  #ifdef CONFIG_AIO  extern ssize_t wait_on_sync_kiocb(struct kiocb *iocb);  |