diff options
author | Jeff Dike <jdike@addtoit.com> | 2005-09-03 18:57:45 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@evo.osdl.org> | 2005-09-05 03:06:23 -0400 |
commit | 75e5584c89d213d6089f64f22cd899fb172e4c95 (patch) | |
tree | 22bb81b9c699e06b3c8163933654fe3f84ae469d /arch/um/include | |
parent | 30f7dabb083f8ff4ce541b5ac4e5d70cc173051a (diff) |
[PATCH] uml: use host AIO support
This patch makes UML use host AIO support when it (and
/usr/include/linux/aio_abi.h) are present. This is only the support, with no
consumers - a consumer is coming in the next patch.
Signed-off-by: Jeff Dike <jdike@addtoit.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/um/include')
-rw-r--r-- | arch/um/include/aio.h | 28 | ||||
-rw-r--r-- | arch/um/include/init.h | 10 | ||||
-rw-r--r-- | arch/um/include/irq_kern.h | 3 |
3 files changed, 40 insertions, 1 deletions
diff --git a/arch/um/include/aio.h b/arch/um/include/aio.h new file mode 100644 index 000000000000..423bae9153f8 --- /dev/null +++ b/arch/um/include/aio.h | |||
@@ -0,0 +1,28 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2004 Jeff Dike (jdike@karaya.com) | ||
3 | * Licensed under the GPL | ||
4 | */ | ||
5 | |||
6 | #ifndef AIO_H__ | ||
7 | #define AIO_H__ | ||
8 | |||
9 | enum aio_type { AIO_READ, AIO_WRITE, AIO_MMAP }; | ||
10 | |||
11 | struct aio_thread_reply { | ||
12 | void *data; | ||
13 | int err; | ||
14 | }; | ||
15 | |||
16 | struct aio_context { | ||
17 | int reply_fd; | ||
18 | struct aio_context *next; | ||
19 | }; | ||
20 | |||
21 | #define INIT_AIO_CONTEXT { .reply_fd = -1, \ | ||
22 | .next = NULL } | ||
23 | |||
24 | extern int submit_aio(enum aio_type type, int fd, char *buf, int len, | ||
25 | unsigned long long offset, int reply_fd, | ||
26 | struct aio_context *aio); | ||
27 | |||
28 | #endif | ||
diff --git a/arch/um/include/init.h b/arch/um/include/init.h index 55c2693f8778..cbd79a8d213d 100644 --- a/arch/um/include/init.h +++ b/arch/um/include/init.h | |||
@@ -111,7 +111,15 @@ extern struct uml_param __uml_setup_start, __uml_setup_end; | |||
111 | 111 | ||
112 | #ifndef __KERNEL__ | 112 | #ifndef __KERNEL__ |
113 | 113 | ||
114 | #define __initcall(fn) static initcall_t __initcall_##fn __init_call = fn | 114 | #define __define_initcall(level,fn) \ |
115 | static initcall_t __initcall_##fn __attribute_used__ \ | ||
116 | __attribute__((__section__(".initcall" level ".init"))) = fn | ||
117 | |||
118 | /* Userspace initcalls shouldn't depend on anything in the kernel, so we'll | ||
119 | * make them run first. | ||
120 | */ | ||
121 | #define __initcall(fn) __define_initcall("1", fn) | ||
122 | |||
115 | #define __exitcall(fn) static exitcall_t __exitcall_##fn __exit_call = fn | 123 | #define __exitcall(fn) static exitcall_t __exitcall_##fn __exit_call = fn |
116 | 124 | ||
117 | #define __init_call __attribute__ ((unused,__section__ (".initcall.init"))) | 125 | #define __init_call __attribute__ ((unused,__section__ (".initcall.init"))) |
diff --git a/arch/um/include/irq_kern.h b/arch/um/include/irq_kern.h index 3af52a634c4c..c222d56b1494 100644 --- a/arch/um/include/irq_kern.h +++ b/arch/um/include/irq_kern.h | |||
@@ -7,12 +7,15 @@ | |||
7 | #define __IRQ_KERN_H__ | 7 | #define __IRQ_KERN_H__ |
8 | 8 | ||
9 | #include "linux/interrupt.h" | 9 | #include "linux/interrupt.h" |
10 | #include "asm/ptrace.h" | ||
10 | 11 | ||
11 | extern int um_request_irq(unsigned int irq, int fd, int type, | 12 | extern int um_request_irq(unsigned int irq, int fd, int type, |
12 | irqreturn_t (*handler)(int, void *, | 13 | irqreturn_t (*handler)(int, void *, |
13 | struct pt_regs *), | 14 | struct pt_regs *), |
14 | unsigned long irqflags, const char * devname, | 15 | unsigned long irqflags, const char * devname, |
15 | void *dev_id); | 16 | void *dev_id); |
17 | extern int init_aio_irq(int irq, char *name, | ||
18 | irqreturn_t (*handler)(int, void *, struct pt_regs *)); | ||
16 | 19 | ||
17 | #endif | 20 | #endif |
18 | 21 | ||