Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Benjamin LaHaise <bcrl@kvack.org>
Cc: Zach Brown <zach.brown@oracle.com>
Signed-off-by: Matt Mackall <mpm@selenic.com>
Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

authored by

Thomas Petazzoni and committed by
Linus Torvalds
ebf3f09c d8273674

+26 -1
+2 -1
fs/Makefile
··· 8 8 obj-y := open.o read_write.o file_table.o super.o \ 9 9 char_dev.o stat.o exec.o pipe.o namei.o fcntl.o \ 10 10 ioctl.o readdir.o select.o fifo.o dcache.o inode.o \ 11 - attr.o bad_inode.o file.o filesystems.o namespace.o aio.o \ 11 + attr.o bad_inode.o file.o filesystems.o namespace.o \ 12 12 seq_file.o xattr.o libfs.o fs-writeback.o \ 13 13 pnode.o drop_caches.o splice.o sync.o utimes.o \ 14 14 stack.o ··· 27 27 obj-$(CONFIG_SIGNALFD) += signalfd.o 28 28 obj-$(CONFIG_TIMERFD) += timerfd.o 29 29 obj-$(CONFIG_EVENTFD) += eventfd.o 30 + obj-$(CONFIG_AIO) += aio.o 30 31 obj-$(CONFIG_FILE_LOCKING) += locks.o 31 32 obj-$(CONFIG_COMPAT) += compat.o compat_ioctl.o 32 33
+9
include/linux/aio.h
··· 204 204 /* prototypes */ 205 205 extern unsigned aio_max_size; 206 206 207 + #ifdef CONFIG_AIO 207 208 extern ssize_t wait_on_sync_kiocb(struct kiocb *iocb); 208 209 extern int aio_put_req(struct kiocb *iocb); 209 210 extern void kick_iocb(struct kiocb *iocb); 210 211 extern int aio_complete(struct kiocb *iocb, long res, long res2); 211 212 struct mm_struct; 212 213 extern void exit_aio(struct mm_struct *mm); 214 + #else 215 + static inline ssize_t wait_on_sync_kiocb(struct kiocb *iocb) { return 0; } 216 + static inline int aio_put_req(struct kiocb *iocb) { return 0; } 217 + static inline void kick_iocb(struct kiocb *iocb) { } 218 + static inline int aio_complete(struct kiocb *iocb, long res, long res2) { return 0; } 219 + struct mm_struct; 220 + static inline void exit_aio(struct mm_struct *mm) { } 221 + #endif /* CONFIG_AIO */ 213 222 214 223 #define io_wait_to_kiocb(wait) container_of(wait, struct kiocb, ki_wait) 215 224
+8
init/Kconfig
··· 713 713 option replaces shmem and tmpfs with the much simpler ramfs code, 714 714 which may be appropriate on small systems without swap. 715 715 716 + config AIO 717 + bool "Enable AIO support" if EMBEDDED 718 + default y 719 + help 720 + This option enables POSIX asynchronous I/O which may by used 721 + by some high performance threaded applications. Disabling 722 + this option saves about 7k. 723 + 716 724 config VM_EVENT_COUNTERS 717 725 default y 718 726 bool "Enable VM event counters for /proc/vmstat" if EMBEDDED
+5
kernel/sys_ni.c
··· 126 126 cond_syscall(compat_sys_ipc); 127 127 cond_syscall(compat_sys_sysctl); 128 128 cond_syscall(sys_flock); 129 + cond_syscall(sys_io_setup); 130 + cond_syscall(sys_io_destroy); 131 + cond_syscall(sys_io_submit); 132 + cond_syscall(sys_io_cancel); 133 + cond_syscall(sys_io_getevents); 129 134 130 135 /* arch-specific weak syscall entries */ 131 136 cond_syscall(sys_pciconfig_read);
+2
kernel/sysctl.c
··· 1281 1281 .extra2 = &two, 1282 1282 }, 1283 1283 #endif 1284 + #ifdef CONFIG_AIO 1284 1285 { 1285 1286 .procname = "aio-nr", 1286 1287 .data = &aio_nr, ··· 1296 1295 .mode = 0644, 1297 1296 .proc_handler = &proc_doulongvec_minmax, 1298 1297 }, 1298 + #endif /* CONFIG_AIO */ 1299 1299 #ifdef CONFIG_INOTIFY_USER 1300 1300 { 1301 1301 .ctl_name = FS_INOTIFY,