Commit ebf3f09c authored by Thomas Petazzoni's avatar Thomas Petazzoni Committed by Linus Torvalds

Configure out AIO support

This patchs adds the CONFIG_AIO option which allows to remove support
for asynchronous I/O operations, that are not necessarly used by
applications, particularly on embedded devices. As this is a
size-reduction option, it depends on CONFIG_EMBEDDED. It allows to
save ~7 kilobytes of kernel code/data:

   text	   data	    bss	    dec	    hex	filename
1115067	 119180	 217088	1451335	 162547	vmlinux
1108025	 119048	 217088	1444161	 160941	vmlinux.new
  -7042    -132       0   -7174   -1C06 +/-

This patch has been originally written by Matt Mackall
<mpm@selenic.com>, and is part of the Linux Tiny project.

[randy.dunlap@oracle.com: build fix]
Signed-off-by: default avatarThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Benjamin LaHaise <bcrl@kvack.org>
Cc: Zach Brown <zach.brown@oracle.com>
Signed-off-by: default avatarMatt Mackall <mpm@selenic.com>
Signed-off-by: default avatarRandy Dunlap <randy.dunlap@oracle.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent d8273674
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
obj-y := open.o read_write.o file_table.o super.o \ obj-y := open.o read_write.o file_table.o super.o \
char_dev.o stat.o exec.o pipe.o namei.o fcntl.o \ char_dev.o stat.o exec.o pipe.o namei.o fcntl.o \
ioctl.o readdir.o select.o fifo.o dcache.o inode.o \ ioctl.o readdir.o select.o fifo.o dcache.o inode.o \
attr.o bad_inode.o file.o filesystems.o namespace.o aio.o \ attr.o bad_inode.o file.o filesystems.o namespace.o \
seq_file.o xattr.o libfs.o fs-writeback.o \ seq_file.o xattr.o libfs.o fs-writeback.o \
pnode.o drop_caches.o splice.o sync.o utimes.o \ pnode.o drop_caches.o splice.o sync.o utimes.o \
stack.o stack.o
...@@ -27,6 +27,7 @@ obj-$(CONFIG_ANON_INODES) += anon_inodes.o ...@@ -27,6 +27,7 @@ obj-$(CONFIG_ANON_INODES) += anon_inodes.o
obj-$(CONFIG_SIGNALFD) += signalfd.o obj-$(CONFIG_SIGNALFD) += signalfd.o
obj-$(CONFIG_TIMERFD) += timerfd.o obj-$(CONFIG_TIMERFD) += timerfd.o
obj-$(CONFIG_EVENTFD) += eventfd.o obj-$(CONFIG_EVENTFD) += eventfd.o
obj-$(CONFIG_AIO) += aio.o
obj-$(CONFIG_FILE_LOCKING) += locks.o obj-$(CONFIG_FILE_LOCKING) += locks.o
obj-$(CONFIG_COMPAT) += compat.o compat_ioctl.o obj-$(CONFIG_COMPAT) += compat.o compat_ioctl.o
......
...@@ -204,12 +204,21 @@ struct kioctx { ...@@ -204,12 +204,21 @@ struct kioctx {
/* prototypes */ /* prototypes */
extern unsigned aio_max_size; extern unsigned aio_max_size;
#ifdef CONFIG_AIO
extern ssize_t wait_on_sync_kiocb(struct kiocb *iocb); extern ssize_t wait_on_sync_kiocb(struct kiocb *iocb);
extern int aio_put_req(struct kiocb *iocb); extern int aio_put_req(struct kiocb *iocb);
extern void kick_iocb(struct kiocb *iocb); extern void kick_iocb(struct kiocb *iocb);
extern int aio_complete(struct kiocb *iocb, long res, long res2); extern int aio_complete(struct kiocb *iocb, long res, long res2);
struct mm_struct; struct mm_struct;
extern void exit_aio(struct mm_struct *mm); extern void exit_aio(struct mm_struct *mm);
#else
static inline ssize_t wait_on_sync_kiocb(struct kiocb *iocb) { return 0; }
static inline int aio_put_req(struct kiocb *iocb) { return 0; }
static inline void kick_iocb(struct kiocb *iocb) { }
static inline int aio_complete(struct kiocb *iocb, long res, long res2) { return 0; }
struct mm_struct;
static inline void exit_aio(struct mm_struct *mm) { }
#endif /* CONFIG_AIO */
#define io_wait_to_kiocb(wait) container_of(wait, struct kiocb, ki_wait) #define io_wait_to_kiocb(wait) container_of(wait, struct kiocb, ki_wait)
......
...@@ -713,6 +713,14 @@ config SHMEM ...@@ -713,6 +713,14 @@ config SHMEM
option replaces shmem and tmpfs with the much simpler ramfs code, option replaces shmem and tmpfs with the much simpler ramfs code,
which may be appropriate on small systems without swap. which may be appropriate on small systems without swap.
config AIO
bool "Enable AIO support" if EMBEDDED
default y
help
This option enables POSIX asynchronous I/O which may by used
by some high performance threaded applications. Disabling
this option saves about 7k.
config VM_EVENT_COUNTERS config VM_EVENT_COUNTERS
default y default y
bool "Enable VM event counters for /proc/vmstat" if EMBEDDED bool "Enable VM event counters for /proc/vmstat" if EMBEDDED
......
...@@ -126,6 +126,11 @@ cond_syscall(sys_vm86); ...@@ -126,6 +126,11 @@ cond_syscall(sys_vm86);
cond_syscall(compat_sys_ipc); cond_syscall(compat_sys_ipc);
cond_syscall(compat_sys_sysctl); cond_syscall(compat_sys_sysctl);
cond_syscall(sys_flock); cond_syscall(sys_flock);
cond_syscall(sys_io_setup);
cond_syscall(sys_io_destroy);
cond_syscall(sys_io_submit);
cond_syscall(sys_io_cancel);
cond_syscall(sys_io_getevents);
/* arch-specific weak syscall entries */ /* arch-specific weak syscall entries */
cond_syscall(sys_pciconfig_read); cond_syscall(sys_pciconfig_read);
......
...@@ -1281,6 +1281,7 @@ static struct ctl_table fs_table[] = { ...@@ -1281,6 +1281,7 @@ static struct ctl_table fs_table[] = {
.extra2 = &two, .extra2 = &two,
}, },
#endif #endif
#ifdef CONFIG_AIO
{ {
.procname = "aio-nr", .procname = "aio-nr",
.data = &aio_nr, .data = &aio_nr,
...@@ -1295,6 +1296,7 @@ static struct ctl_table fs_table[] = { ...@@ -1295,6 +1296,7 @@ static struct ctl_table fs_table[] = {
.mode = 0644, .mode = 0644,
.proc_handler = &proc_doulongvec_minmax, .proc_handler = &proc_doulongvec_minmax,
}, },
#endif /* CONFIG_AIO */
#ifdef CONFIG_INOTIFY_USER #ifdef CONFIG_INOTIFY_USER
{ {
.ctl_name = FS_INOTIFY, .ctl_name = FS_INOTIFY,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment