From: Ingo Molnar <[EMAIL PROTECTED]> add include/linux/async.h which contains the kernel-side API declarations.
it also provides NOP stubs for the !CONFIG_ASYNC_SUPPORT case. Signed-off-by: Ingo Molnar <[EMAIL PROTECTED]> Signed-off-by: Arjan van de Ven <[EMAIL PROTECTED]> --- include/linux/async.h | 92 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) Index: linux/include/linux/async.h =================================================================== --- /dev/null +++ linux/include/linux/async.h @@ -0,0 +1,92 @@ +#ifndef _LINUX_ASYNC_H +#define _LINUX_ASYNC_H + +#include <linux/completion.h> +#include <linux/compiler.h> + +/* + * The syslet subsystem - asynchronous syscall execution support. + * + * Generic kernel API definitions: + */ + +struct syslet_uatom; +struct async_thread; +struct async_head; + +/* + * The syslet subsystem - asynchronous syscall execution support. + * + * Syslet-subsystem internal definitions: + */ + +/* + * The kernel-side copy of a syslet atom - with arguments expanded: + */ +struct syslet_atom { + unsigned long flags; + unsigned long nr; + long __user *ret_ptr; + struct syslet_uatom __user *next; + unsigned long args[6]; +}; + +/* + * The 'async head' is the thread which has user-space context (ptregs) + * 'below it' - this is the one that can return to user-space: + */ +struct async_head { + spinlock_t lock; + struct task_struct *user_task; + + struct list_head ready_async_threads; + struct list_head busy_async_threads; + + struct mutex completion_lock; + long events_left; + wait_queue_head_t wait; + + struct async_head_user __user *ahu; + + unsigned long __user *new_stackp; + unsigned long new_eip; + unsigned long restore_stack; + unsigned long restore_eip; + struct completion start_done; + struct completion exit_done; +}; + +/* + * The 'async thread' is either a newly created async thread or it is + * an 'ex-head' - it cannot return to user-space and only has kernel + * context. + */ +struct async_thread { + struct task_struct *task; + struct syslet_uatom __user *work; + unsigned long user_stack; + unsigned long user_eip; + struct async_head *ah; + + struct list_head entry; + + unsigned int exit; +}; + +#ifdef CONFIG_ASYNC_SUPPORT +extern void async_init(struct task_struct *t); +extern void async_exit(struct task_struct *t); +extern void __async_schedule(struct task_struct *t); +#else /* !CONFIG_ASYNC_SUPPORT */ +static inline void async_init(struct task_struct *t) +{ +} +static inline void async_exit(struct task_struct *t) +{ +} +static inline void __async_schedule(struct task_struct *t) +{ +} +#endif /* !CONFIG_ASYNC_SUPPORT */ + +#endif - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/