Commit ebf3f09c634906d371f2bfd71b41c7e0c52efe7e
Committed by
Linus Torvalds
1 parent
d827367472
Exists in
master
and in
4 other branches
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>
Showing 5 changed files with 26 additions and 1 deletions Side-by-side Diff
fs/Makefile
... | ... | @@ -8,7 +8,7 @@ |
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,6 +27,7 @@ |
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 |
include/linux/aio.h
... | ... | @@ -204,12 +204,21 @@ |
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 |
init/Kconfig
... | ... | @@ -713,6 +713,14 @@ |
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 |
kernel/sys_ni.c
... | ... | @@ -126,6 +126,11 @@ |
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); |
kernel/sysctl.c
... | ... | @@ -1281,6 +1281,7 @@ |
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, |
... | ... | @@ -1295,6 +1296,7 @@ |
1295 | 1296 | .mode = 0644, |
1296 | 1297 | .proc_handler = &proc_doulongvec_minmax, |
1297 | 1298 | }, |
1299 | +#endif /* CONFIG_AIO */ | |
1298 | 1300 | #ifdef CONFIG_INOTIFY_USER |
1299 | 1301 | { |
1300 | 1302 | .ctl_name = FS_INOTIFY, |