1ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#include <inttypes.h> 2ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#include <pthread.h> 3ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#include <stdio.h> 4ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#include <stdlib.h> 5ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#include <string.h> 6ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 7ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstatic void *thread_main(void *arg) 8ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ 9ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown uintptr_t address = (uintptr_t)&arg; 10ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 11ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown printf("alignment = %" PRIuPTR "\n", address & 3U); 12ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 13ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown return NULL; 14ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown} 15ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 16ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownint main(int argc, char **argv) 17ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ 18ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown pthread_t t; 19ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown int e; 20ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 21ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown if ((e = pthread_create(&t, NULL, thread_main, NULL)) != 0) 22ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown { 23ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown fprintf(stderr, "pthread_create: %s\n", strerror(e)); 24ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown exit(1); 25ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown } 26ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 27ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown if ((e = pthread_join(t, NULL)) != 0) 28ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown { 29ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown fprintf(stderr, "pthread_join: %s\n", strerror(e)); 30ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown exit(1); 31ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown } 32ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 33ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown exit(0); 34ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown} 35