glibc (2.38)

(root)/
include/
ucontext.h
       1  /* Copyright (C) 1997-2023 Free Software Foundation, Inc.
       2     This file is part of the GNU C Library.
       3  
       4     The GNU C Library is free software; you can redistribute it and/or
       5     modify it under the terms of the GNU Lesser General Public
       6     License as published by the Free Software Foundation; either
       7     version 2.1 of the License, or (at your option) any later version.
       8  
       9     The GNU C Library is distributed in the hope that it will be useful,
      10     but WITHOUT ANY WARRANTY; without even the implied warranty of
      11     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      12     Lesser General Public License for more details.
      13  
      14     You should have received a copy of the GNU Lesser General Public
      15     License along with the GNU C Library; if not, see
      16     <https://www.gnu.org/licenses/>.  */
      17  
      18  /* System V ABI compliant user-level context switching support.  */
      19  
      20  #ifndef _UCONTEXT_H
      21  #define _UCONTEXT_H	1
      22  
      23  #include <features.h>
      24  
      25  /* Get definition of __INDIRECT_RETURN.  */
      26  #include <bits/indirect-return.h>
      27  
      28  /* Get machine dependent definition of data structures.  */
      29  #include <sys/ucontext.h>
      30  
      31  __BEGIN_DECLS
      32  
      33  /* Get user context and store it in variable pointed to by UCP.  */
      34  extern int getcontext (ucontext_t *__ucp) __THROWNL;
      35  
      36  /* Set user context from information of variable pointed to by UCP.  */
      37  extern int setcontext (const ucontext_t *__ucp) __THROWNL;
      38  
      39  /* Save current context in context variable pointed to by OUCP and set
      40     context from variable pointed to by UCP.  */
      41  extern int swapcontext (ucontext_t *__restrict __oucp,
      42  			const ucontext_t *__restrict __ucp)
      43    __THROWNL __INDIRECT_RETURN;
      44  
      45  /* Manipulate user context UCP to continue with calling functions FUNC
      46     and the ARGC-1 parameters following ARGC when the context is used
      47     the next time in `setcontext' or `swapcontext'.
      48  
      49     We cannot say anything about the parameters FUNC takes; `void'
      50     is as good as any other choice.  */
      51  extern void makecontext (ucontext_t *__ucp, void (*__func) (void),
      52  			 int __argc, ...) __THROW;
      53  
      54  __END_DECLS
      55  
      56  #endif /* ucontext.h */