[PATCH 8/9] include/ucontext.h: provide declarations for {get, set, make, swap}context

Bernhard Reutner-Fischer rep.dot.nop at gmail.com
Wed Jan 9 12:38:31 UTC 2013


On 31 December 2012 15:38, Florian Fainelli <florian at openwrt.org> wrote:
> This patch adds definitions for the {get,set,make,swap}context
> user-space context manipulation functions. These declarations are made
> conditional to the enabling of UCLIBC_HAS_CONTEXT_FUNCS. Base on a
> initial patch by Carmelo Amoroso.
>
> Signed-off-by: Carmelo Amoroso <carmelo.amoroso at st.com>
> Signed-off-by: Florian Fainelli <florian at openwrt.org>
> ---
>  include/ucontext.h |   29 ++++++++++++++++++++++++++---
>  1 file changed, 26 insertions(+), 3 deletions(-)
>
> diff --git a/include/ucontext.h b/include/ucontext.h
> index 14a1270..3974290 100644
> --- a/include/ucontext.h
> +++ b/include/ucontext.h
> @@ -23,9 +23,32 @@
>  /* Get machine dependent definition of data structures.  */
>  #include <sys/ucontext.h>
>
> -/* The System V ABI user-level context switching support functions
> - * are marked obsolescent by SuSv3, and are not implemented by
> - * uClibc.  This header is therefore empty.  */
> +#ifdef __UCLIBC_HAS_CONTEXT_FUNCS__
>
> +__BEGIN_DECLS
> +
> +/* Get user context and store it in variable pointed to by UCP.  */
> +extern int getcontext (ucontext_t *__ucp) __THROW;
> +
> +/* Set user context from information of variable pointed to by UCP.  */
> +extern int setcontext (__const ucontext_t *__ucp) __THROW;
> +
> +/* Save current context in context variable pointed to by OUCP and set
> +    context from variable pointed to by UCP.  */
> +extern int swapcontext (ucontext_t *__restrict __oucp,
> +                                       __const ucontext_t *__restrict __ucp) __THROW;
> +
> +/* Manipulate user context UCP to continue with calling functions FUNC
> +    +   and the ARGC-1 parameters following ARGC when the context is used
> +    +   the next time in `setcontext' or `swapcontext'.
> +    +
> +    +   We cannot say anything about the parameters FUNC takes; `void'
> +    +   is as good as any other choice.  */

too many '+' for my taste

> +extern void makecontext (ucontext_t *__ucp, void (*__func) (void),
> +                                       int __argc, ...) __THROW;
> +
> +__END_DECLS
> +
> +#endif
>
>  #endif /* ucontext.h */


More information about the uClibc mailing list