Skip to content

Commit 91ac2ea

Browse files
committed
Add ucontext.h header file
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.
1 parent c0ee3bf commit 91ac2ea

File tree

4 files changed

+126
-2
lines changed

4 files changed

+126
-2
lines changed

src/usr/include/sys/ucontext.h

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
/*
2+
* Copyright (c) 2002-2006 Apple Computer, Inc. All rights reserved.
3+
*
4+
* @APPLE_OSREFERENCE_LICENSE_HEADER_START@
5+
*
6+
* This file contains Original Code and/or Modifications of Original Code
7+
* as defined in and that are subject to the Apple Public Source License
8+
* Version 2.0 (the 'License'). You may not use this file except in
9+
* compliance with the License. The rights granted to you under the License
10+
* may not be used to create, or enable the creation or redistribution of,
11+
* unlawful or unlicensed copies of an Apple operating system, or to
12+
* circumvent, violate, or enable the circumvention or violation of, any
13+
* terms of an Apple operating system software license agreement.
14+
*
15+
* Please obtain a copy of the License at
16+
* http://www.opensource.apple.com/apsl/ and read it before using this file.
17+
*
18+
* The Original Code and all software distributed under the License are
19+
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
20+
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
21+
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
22+
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
23+
* Please see the License for the specific language governing rights and
24+
* limitations under the License.
25+
*
26+
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
27+
*/
28+
29+
#ifndef _SYS_UCONTEXT_H_
30+
#define _SYS_UCONTEXT_H_
31+
32+
#include <sys/cdefs.h>
33+
#include <sys/_types.h>
34+
35+
#include <machine/_mcontext.h>
36+
#include <sys/_types/_ucontext.h>
37+
38+
#include <sys/_types/_sigset_t.h>
39+
40+
#ifdef KERNEL
41+
#include <machine/types.h> /* user_addr_t, user_size_t */
42+
43+
/* kernel representation of struct ucontext64 for 64 bit processes */
44+
typedef struct user_ucontext64 {
45+
int uc_onstack;
46+
sigset_t uc_sigmask; /* signal mask */
47+
struct user64_sigaltstack uc_stack; /* stack */
48+
user_addr_t uc_link; /* ucontext pointer */
49+
user_size_t uc_mcsize; /* mcontext size */
50+
user_addr_t uc_mcontext64; /* machine context */
51+
} user_ucontext64_t;
52+
53+
typedef struct user_ucontext32 {
54+
int uc_onstack;
55+
sigset_t uc_sigmask; /* signal mask */
56+
struct user32_sigaltstack uc_stack; /* stack */
57+
user32_addr_t uc_link; /* ucontext pointer */
58+
user32_size_t uc_mcsize; /* mcontext size */
59+
user32_addr_t uc_mcontext; /* machine context */
60+
} user_ucontext32_t;
61+
62+
#endif /* KERNEL */
63+
64+
#endif /* _SYS_UCONTEXT_H_ */

src/usr/include/ucontext.h

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
/*
2+
* Copyright (c) 2002, 2008, 2009 Apple Inc. All rights reserved.
3+
*
4+
* @APPLE_LICENSE_HEADER_START@
5+
*
6+
* This file contains Original Code and/or Modifications of Original Code
7+
* as defined in and that are subject to the Apple Public Source License
8+
* Version 2.0 (the 'License'). You may not use this file except in
9+
* compliance with the License. Please obtain a copy of the License at
10+
* http://www.opensource.apple.com/apsl/ and read it before using this
11+
* file.
12+
*
13+
* The Original Code and all software distributed under the License are
14+
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
15+
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
16+
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
17+
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
18+
* Please see the License for the specific language governing rights and
19+
* limitations under the License.
20+
*
21+
* @APPLE_LICENSE_HEADER_END@
22+
*/
23+
24+
/*
25+
* These routines are DEPRECATED and should not be used.
26+
*/
27+
#ifndef _UCONTEXT_H_
28+
#define _UCONTEXT_H_
29+
30+
#include <sys/cdefs.h>
31+
32+
#ifdef _XOPEN_SOURCE
33+
#include <sys/ucontext.h>
34+
#include <Availability.h>
35+
36+
__BEGIN_DECLS
37+
__API_DEPRECATED("No longer supported", macos(10.5, 10.6))
38+
int getcontext(ucontext_t *);
39+
40+
__API_DEPRECATED("No longer supported", macos(10.5, 10.6))
41+
void makecontext(ucontext_t *, void (*)(), int, ...);
42+
43+
__API_DEPRECATED("No longer supported", macos(10.5, 10.6))
44+
int setcontext(const ucontext_t *);
45+
46+
__API_DEPRECATED("No longer supported", macos(10.5, 10.6))
47+
int swapcontext(ucontext_t * __restrict, const ucontext_t * __restrict);
48+
49+
__END_DECLS
50+
#else /* !_XOPEN_SOURCE */
51+
#error The deprecated ucontext routines require _XOPEN_SOURCE to be defined
52+
#endif /* _XOPEN_SOURCE */
53+
54+
#endif /* _UCONTEXT_H_ */

update.sh

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ Libc="Libc-$Libc_version"
1313
xnu="xnu-$xnu_version"
1414
AvailabilityVersions="AvailabilityVersions-$AvailabilityVersions_version"
1515
libmalloc="libmalloc-$libmalloc_version"
16+
libplatform="libplatform-$libplatform_version"
1617
libpthread="libpthread-$libpthread_version"
1718
CarbonHeaders="CarbonHeaders-$CarbonHeaders_version"
1819
Libm="Libm-$Libm_version"
@@ -25,8 +26,9 @@ wget -P download --no-clobber --no-verbose \
2526
"https://opensource.apple.com/tarballs/CarbonHeaders/$CarbonHeaders.tar.gz" \
2627
"https://opensource.apple.com/tarballs/Libc/$Libc.tar.gz" \
2728
"https://opensource.apple.com/tarballs/Libm/$Libm.tar.gz" \
28-
"https://opensource.apple.com/tarballs/libpthread/$libpthread.tar.gz" \
2929
"https://opensource.apple.com/tarballs/libmalloc/$libmalloc.tar.gz" \
30+
"https://opensource.apple.com/tarballs/libplatform/$libplatform.tar.gz" \
31+
"https://opensource.apple.com/tarballs/libpthread/$libpthread.tar.gz" \
3032
"https://opensource.apple.com/tarballs/xnu/$xnu.tar.gz"
3133

3234
# Extract source files.
@@ -44,6 +46,8 @@ tar -C $include --strip-components=3 -xf "download/$Libm.tar.gz" \
4446
"Libm-$Libm/Source/Intel/math.h"
4547
tar -C $include --strip-components=2 -xf "download/$libmalloc.tar.gz" \
4648
"libmalloc-$libmalloc/include/malloc"
49+
tar -C $include --strip-components=2 -xf "download/$libplatform.tar.gz" \
50+
"libplatform-$libplatform/include/ucontext.h"
4751
tar -C $include/sys --strip-components=3 -xf "download/$libpthread.tar.gz" \
4852
"libpthread-$libpthread/include/sys/_pthread"
4953
tar -C $include --strip-components=3 -xf "download/$xnu.tar.gz" \
@@ -76,6 +80,7 @@ tar -C $include --strip-components=2 -xf "download/$xnu.tar.gz" \
7680
"xnu-$xnu/bsd/sys/_types" \
7781
"xnu-$xnu/bsd/sys/types.h" \
7882
"xnu-$xnu/bsd/sys/_types.h" \
83+
"xnu-$xnu/bsd/sys/ucontext.h" \
7984
"xnu-$xnu/bsd/sys/unistd.h" \
8085
"xnu-$xnu/bsd/sys/wait.h" \
8186
"xnu-$xnu/EXTERNAL_HEADERS/Availability.h" \

versions.inc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,11 @@
55
# place. Therefore, this file should be kept compatible with both syntaxes.
66

77
# These are the values for macOS 11.5:
8-
# https://opensource.apple.com/release/macos-115.html
8+
# https://opensource.apple.com/releases/
99
AvailabilityVersions_version=80.3
1010
Libc_version=1439.141.1
1111
libmalloc_version=317.140.5
12+
libplatform_version=254.80.2
1213
libpthread_version=454.120.2
1314
xnu_version=7195.141.2
1415

0 commit comments

Comments
 (0)