| // Copyright 2023 The Go Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style | |
| // license that can be found in the LICENSE file. | |
| #include <pthread.h> | |
| #include "libcgo.h" | |
| void | |
| x_cgo_getstackbound(uintptr bounds[2]) | |
| { | |
| void* addr; | |
| size_t size; | |
| pthread_t p; | |
| p = pthread_self(); | |
| addr = pthread_get_stackaddr_np(p); // high address (!) | |
| size = pthread_get_stacksize_np(p); | |
| bounds[0] = (uintptr)addr - size; | |
| bounds[1] = (uintptr)addr; | |
| } |