]>
git.saurik.com Git - apple/libpthread.git/blob - pthread/stack_np.h
9b5f5135d1ab8c30601fb64939eea29fbccdc1a2
2 * Copyright (c) 2018 Apple Inc. All rights reserved.
4 * @APPLE_APACHE_LICENSE_HEADER_START@
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
18 * @APPLE_APACHE_LICENSE_HEADER_END@
21 #ifndef __PTHREAD_STACK_NP__
22 #define __PTHREAD_STACK_NP__
24 #include <Availability.h>
25 #include <sys/cdefs.h>
31 OS_ASSUME_NONNULL_BEGIN
34 * Low-level API to introspect thread stacks.
40 * @function pthread_stack_frame_decode_np
43 * Decodes the return address and the next stack frame address
44 * from the given stack frame address.
47 * Validation of the frame address is not performed by this function.
48 * The caller is responsible for making sure the frame address is valid,
49 * for example using pthread_get_stackaddr_np() and pthread_get_stacksize_np().
52 * A valid stack frame address such as __builtin_frame_address(0) or the return
53 * value of a previous call to pthread_stack_frame_decode_np().
56 * An optional out paramter that will be filled with the return address stored
57 * at the specified stack frame.
60 * This returns the next frame address stored at the specified stack frame.
62 __OSX_AVAILABLE(10.14) __IOS_AVAILABLE(12.0)
63 __TVOS_AVAILABLE(12.0) __WATCHOS_AVAILABLE(5.0)
65 pthread_stack_frame_decode_np(uintptr_t frame_addr
,
66 uintptr_t *_Nullable return_addr
);
72 #endif // __PTHREAD_STACK_NP__