| Date | Tue, 13 Feb 2007 15:20:31 +0100 | From | Ingo Molnar <> | Subject | [patch 04/11] syslets: core, data structures |
| |
From: Ingo Molnar <mingo@elte.hu>
this adds the data structures used by the syslet / async system calls infrastructure.
This is used only if CONFIG_ASYNC_SUPPORT is enabled.
Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Arjan van de Ven <arjan@linux.intel.com> --- kernel/async.h | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+)
Index: linux/kernel/async.h =================================================================== --- /dev/null +++ linux/kernel/async.h @@ -0,0 +1,58 @@ +/* + * 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; + + unsigned long events_left; + wait_queue_head_t wait; + + struct async_head_user __user *uah; + struct syslet_uatom __user **completion_ring; + unsigned long curr_ring_idx; + unsigned long max_ring_idx; + unsigned long ring_size_bytes; + + unsigned int nr_threads; + unsigned int max_nr_threads; + + 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; + struct async_head *ah; + + struct list_head entry; + + unsigned int exit; +}; - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|