Skip to content

Commit

Permalink
Add ucontext.h header file
Browse files Browse the repository at this point in the history
This doesn't add the symbols, just the header file. This header file is
important to be able to get the thread context when a signal happens.
  • Loading branch information
aykevl committed Aug 14, 2024
1 parent c0ee3bf commit 91ac2ea
Show file tree
Hide file tree
Showing 4 changed files with 126 additions and 2 deletions.
64 changes: 64 additions & 0 deletions src/usr/include/sys/ucontext.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
/*
* Copyright (c) 2002-2006 Apple Computer, Inc. All rights reserved.
*
* @APPLE_OSREFERENCE_LICENSE_HEADER_START@
*
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
* compliance with the License. The rights granted to you under the License
* may not be used to create, or enable the creation or redistribution of,
* unlawful or unlicensed copies of an Apple operating system, or to
* circumvent, violate, or enable the circumvention or violation of, any
* terms of an Apple operating system software license agreement.
*
* Please obtain a copy of the License at
* http://www.opensource.apple.com/apsl/ and read it before using this file.
*
* The Original Code and all software distributed under the License are
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
* Please see the License for the specific language governing rights and
* limitations under the License.
*
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
*/

#ifndef _SYS_UCONTEXT_H_
#define _SYS_UCONTEXT_H_

#include <sys/cdefs.h>
#include <sys/_types.h>

#include <machine/_mcontext.h>
#include <sys/_types/_ucontext.h>

#include <sys/_types/_sigset_t.h>

#ifdef KERNEL
#include <machine/types.h> /* user_addr_t, user_size_t */

/* kernel representation of struct ucontext64 for 64 bit processes */
typedef struct user_ucontext64 {
int uc_onstack;
sigset_t uc_sigmask; /* signal mask */
struct user64_sigaltstack uc_stack; /* stack */
user_addr_t uc_link; /* ucontext pointer */
user_size_t uc_mcsize; /* mcontext size */
user_addr_t uc_mcontext64; /* machine context */
} user_ucontext64_t;

typedef struct user_ucontext32 {
int uc_onstack;
sigset_t uc_sigmask; /* signal mask */
struct user32_sigaltstack uc_stack; /* stack */
user32_addr_t uc_link; /* ucontext pointer */
user32_size_t uc_mcsize; /* mcontext size */
user32_addr_t uc_mcontext; /* machine context */
} user_ucontext32_t;

#endif /* KERNEL */

#endif /* _SYS_UCONTEXT_H_ */
54 changes: 54 additions & 0 deletions src/usr/include/ucontext.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
/*
* Copyright (c) 2002, 2008, 2009 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
* compliance with the License. Please obtain a copy of the License at
* http://www.opensource.apple.com/apsl/ and read it before using this
* file.
*
* The Original Code and all software distributed under the License are
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
* Please see the License for the specific language governing rights and
* limitations under the License.
*
* @APPLE_LICENSE_HEADER_END@
*/

/*
* These routines are DEPRECATED and should not be used.
*/
#ifndef _UCONTEXT_H_
#define _UCONTEXT_H_

#include <sys/cdefs.h>

#ifdef _XOPEN_SOURCE
#include <sys/ucontext.h>
#include <Availability.h>

__BEGIN_DECLS
__API_DEPRECATED("No longer supported", macos(10.5, 10.6))
int getcontext(ucontext_t *);

__API_DEPRECATED("No longer supported", macos(10.5, 10.6))
void makecontext(ucontext_t *, void (*)(), int, ...);

__API_DEPRECATED("No longer supported", macos(10.5, 10.6))
int setcontext(const ucontext_t *);

__API_DEPRECATED("No longer supported", macos(10.5, 10.6))
int swapcontext(ucontext_t * __restrict, const ucontext_t * __restrict);

__END_DECLS
#else /* !_XOPEN_SOURCE */
#error The deprecated ucontext routines require _XOPEN_SOURCE to be defined
#endif /* _XOPEN_SOURCE */

#endif /* _UCONTEXT_H_ */
7 changes: 6 additions & 1 deletion update.sh
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ Libc="Libc-$Libc_version"
xnu="xnu-$xnu_version"
AvailabilityVersions="AvailabilityVersions-$AvailabilityVersions_version"
libmalloc="libmalloc-$libmalloc_version"
libplatform="libplatform-$libplatform_version"
libpthread="libpthread-$libpthread_version"
CarbonHeaders="CarbonHeaders-$CarbonHeaders_version"
Libm="Libm-$Libm_version"
Expand All @@ -25,8 +26,9 @@ wget -P download --no-clobber --no-verbose \
"https://opensource.apple.com/tarballs/CarbonHeaders/$CarbonHeaders.tar.gz" \
"https://opensource.apple.com/tarballs/Libc/$Libc.tar.gz" \
"https://opensource.apple.com/tarballs/Libm/$Libm.tar.gz" \
"https://opensource.apple.com/tarballs/libpthread/$libpthread.tar.gz" \
"https://opensource.apple.com/tarballs/libmalloc/$libmalloc.tar.gz" \
"https://opensource.apple.com/tarballs/libplatform/$libplatform.tar.gz" \
"https://opensource.apple.com/tarballs/libpthread/$libpthread.tar.gz" \
"https://opensource.apple.com/tarballs/xnu/$xnu.tar.gz"

# Extract source files.
Expand All @@ -44,6 +46,8 @@ tar -C $include --strip-components=3 -xf "download/$Libm.tar.gz" \
"Libm-$Libm/Source/Intel/math.h"
tar -C $include --strip-components=2 -xf "download/$libmalloc.tar.gz" \
"libmalloc-$libmalloc/include/malloc"
tar -C $include --strip-components=2 -xf "download/$libplatform.tar.gz" \
"libplatform-$libplatform/include/ucontext.h"
tar -C $include/sys --strip-components=3 -xf "download/$libpthread.tar.gz" \
"libpthread-$libpthread/include/sys/_pthread"
tar -C $include --strip-components=3 -xf "download/$xnu.tar.gz" \
Expand Down Expand Up @@ -76,6 +80,7 @@ tar -C $include --strip-components=2 -xf "download/$xnu.tar.gz" \
"xnu-$xnu/bsd/sys/_types" \
"xnu-$xnu/bsd/sys/types.h" \
"xnu-$xnu/bsd/sys/_types.h" \
"xnu-$xnu/bsd/sys/ucontext.h" \
"xnu-$xnu/bsd/sys/unistd.h" \
"xnu-$xnu/bsd/sys/wait.h" \
"xnu-$xnu/EXTERNAL_HEADERS/Availability.h" \
Expand Down
3 changes: 2 additions & 1 deletion versions.inc
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,11 @@
# place. Therefore, this file should be kept compatible with both syntaxes.

# These are the values for macOS 11.5:
# https://opensource.apple.com/release/macos-115.html
# https://opensource.apple.com/releases/
AvailabilityVersions_version=80.3
Libc_version=1439.141.1
libmalloc_version=317.140.5
libplatform_version=254.80.2
libpthread_version=454.120.2
xnu_version=7195.141.2

Expand Down

0 comments on commit 91ac2ea

Please sign in to comment.