| <!-- ##### SECTION Title ##### --> |
| cothreads |
| |
| <!-- ##### SECTION Short_Description ##### --> |
| userspace threads |
| |
| <!-- ##### SECTION Long_Description ##### --> |
| <para> |
| Cothreads are a simple user-space method for switching between |
| subtasks. They're based on setjmp()/longjmp() in their current form. |
| </para> |
| |
| <para> |
| Cothreads are used for loop-based elements that pull data instead |
| of being fed with data. They can also be used to pull a specific region |
| of data out of their src element. |
| </para> |
| |
| <!-- ##### SECTION See_Also ##### --> |
| <para> |
| |
| </para> |
| |
| <!-- ##### MACRO CURRENT_STACK_FRAME ##### --> |
| <para> |
| Get the current stack frame. |
| </para> |
| |
| |
| |
| <!-- ##### STRUCT cothread_state ##### --> |
| <para> |
| The cothread state structure |
| </para> |
| |
| @ctx: |
| @cothreadnum: |
| @priv: |
| @func: |
| @argc: |
| @argv: |
| @flags: |
| @sp: |
| @jmp: |
| @stack_base: |
| @stack_size: |
| @magic_number: |
| |
| <!-- ##### STRUCT cothread_context ##### --> |
| <para> |
| The cothread context structure |
| </para> |
| |
| |
| <!-- ##### USER_FUNCTION cothread_func ##### --> |
| <para> |
| the function that will be called when the cothread starts. The function |
| prototype is like a main() function, so you can do whatever you want with |
| it. |
| </para> |
| |
| @argc: a main-like argument count |
| @argv: a main-like array of arguments |
| @Returns: a return code |
| |
| |
| <!-- ##### MACRO COTHREAD_STARTED ##### --> |
| <para> |
| Indicates the cothread is started. |
| </para> |
| |
| |
| |
| <!-- ##### MACRO COTHREAD_DESTROYED ##### --> |
| <para> |
| Indicates the cothread is destroyed. |
| </para> |
| |
| |
| |
| <!-- ##### FUNCTION cothread_context_init ##### --> |
| <para> |
| |
| </para> |
| |
| @Returns: |
| |
| |
| <!-- ##### FUNCTION cothread_context_free ##### --> |
| <para> |
| |
| </para> |
| |
| @ctx: |
| |
| |
| <!-- ##### FUNCTION cothread_get_private ##### --> |
| <para> |
| |
| </para> |
| |
| @thread: |
| @Returns: |
| |
| |
| <!-- ##### FUNCTION cothread_set_private ##### --> |
| <para> |
| |
| </para> |
| |
| @thread: |
| @data: |
| |
| |
| <!-- ##### FUNCTION cothread_create ##### --> |
| <para> |
| |
| </para> |
| |
| @ctx: |
| @Returns: |
| |
| |
| <!-- ##### FUNCTION cothread_free ##### --> |
| <para> |
| |
| </para> |
| |
| @thread: |
| |
| |
| <!-- ##### FUNCTION cothread_setfunc ##### --> |
| <para> |
| |
| </para> |
| |
| @thread: |
| @func: |
| @argc: |
| @argv: |
| |
| |
| <!-- ##### FUNCTION cothread_stop ##### --> |
| <para> |
| |
| </para> |
| |
| @thread: |
| |
| |
| <!-- ##### FUNCTION cothread_switch ##### --> |
| <para> |
| |
| </para> |
| |
| @thread: |
| |
| |
| <!-- ##### FUNCTION cothread_context_get_data ##### --> |
| <para> |
| |
| </para> |
| |
| @thread: |
| @key: |
| @Returns: |
| |
| |
| <!-- ##### FUNCTION cothread_context_set_data ##### --> |
| <para> |
| |
| </para> |
| |
| @thread: |
| @key: |
| @data: |
| |
| |
| <!-- ##### FUNCTION cothread_lock ##### --> |
| <para> |
| |
| </para> |
| |
| @thread: |
| |
| |
| <!-- ##### FUNCTION cothread_trylock ##### --> |
| <para> |
| |
| </para> |
| |
| @thread: |
| @Returns: |
| |
| |
| <!-- ##### FUNCTION cothread_unlock ##### --> |
| <para> |
| |
| </para> |
| |
| @thread: |
| |
| |
| <!-- ##### FUNCTION cothread_main ##### --> |
| <para> |
| |
| </para> |
| |
| @ctx: |
| @Returns: |
| |
| |
| <!-- ##### FUNCTION cothread_current_main ##### --> |
| <para> |
| |
| </para> |
| |
| @Returns: |
| |
| |
| <!-- ##### FUNCTION cothread_current ##### --> |
| <para> |
| |
| </para> |
| |
| @Returns: |
| |
| |