]>
git.saurik.com Git - apple/libpthread.git/blob - tests/custom_stack.c
5 #include <os/assumes.h>
7 void *function(void *arg
) {
10 strlcpy(buffer
, arg
, sizeof(buffer
));
11 strlcat(buffer
, arg
, sizeof(buffer
));
15 return (void *)(uintptr_t)strlen(buffer
);
18 int main(int argc
, char *argv
[]) {
19 char *arg
= "This is a test and only a test of the pthread stackaddr system.\n";
20 size_t stacksize
= 4096 * 5;
21 uintptr_t stackaddr
= (uintptr_t)valloc(stacksize
);
22 stackaddr
+= stacksize
; // address starts at top of stack.
27 os_assumes_zero(pthread_attr_init(&attr
));
28 os_assumes_zero(pthread_attr_setstacksize(&attr
, stacksize
));
29 os_assumes_zero(pthread_attr_setstackaddr(&attr
, (void *)stackaddr
));
31 os_assumes_zero(pthread_create(&thread
, &attr
, function
, arg
));
34 os_assumes_zero(pthread_join(thread
, &result
));
35 os_assumes((uintptr_t)result
== (uintptr_t)strlen(arg
)*2);