diff options
author | Florian Fainelli <florian@openwrt.org> | 2013-01-09 16:17:21 +0100 |
---|---|---|
committer | Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> | 2013-01-10 10:56:19 +0100 |
commit | a8dc90eaaa5e6474beac828558d969b1aafee4af (patch) | |
tree | ed22c27193dcc91697f6b8782da9a9abd08d42b1 /include | |
parent | df3a5fcc8d1c3402289375c92df705e978fab58d (diff) |
libc: add {get,set,swap,make}context user context manipulation functions
Add the obsolescent SUSv3 family of user context manipulating functions
for arm, i386, mips, x86_64.
Signed-off-by: Timon ter Braak <timonterbraak@gmail.com>
Signed-off-by: Florian Fainelli <florian@openwrt.org>
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/ucontext.h | 32 |
1 files changed, 29 insertions, 3 deletions
diff --git a/include/ucontext.h b/include/ucontext.h index 14a12704e..f11db7794 100644 --- a/include/ucontext.h +++ b/include/ucontext.h @@ -15,17 +15,43 @@ License along with the GNU C Library; if not, see <http://www.gnu.org/licenses/>. */ +/* The System V ABI user-level context switching support functions + are marked obsolescent by SuSv3. */ + #ifndef _UCONTEXT_H #define _UCONTEXT_H 1 #include <features.h> +#ifdef __UCLIBC_HAS_CONTEXT_FUNCS__ + /* 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. */ +__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. */ +extern void makecontext (ucontext_t *__ucp, void (*__func) (void), + int __argc, ...) __THROW; + +__END_DECLS +#endif #endif /* ucontext.h */ |