Commit ebf3f09c634906d371f2bfd71b41c7e0c52efe7e

Authored by Thomas Petazzoni
Committed by Linus Torvalds
1 parent d827367472

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

... ... @@ -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  
... ... @@ -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  
... ... @@ -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
... ... @@ -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);
... ... @@ -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,