mirror of
https://github.com/Zenithsiz/ftmemsim-valgrind.git
synced 2026-02-03 18:13:01 +00:00
35 lines
837 B
C
35 lines
837 B
C
#include <pthread.h>
|
|
#include <assert.h>
|
|
#include <stdlib.h>
|
|
|
|
// This shows that putting a segment pointer into a thread-specific data
|
|
// area and then getting it out again doesn't lose info -- even though the
|
|
// key allocation/getting is done on the real CPU where the skin can't see,
|
|
// the get/set of the info is done using that key on the simd CPU where it
|
|
// can see, so everything works out fine.
|
|
|
|
int main(void)
|
|
{
|
|
pthread_key_t key;
|
|
char *x, *z;
|
|
char y;
|
|
|
|
x = malloc(100);
|
|
|
|
y = x[-1]; // error
|
|
x[1] = 'z';
|
|
|
|
assert( 0 == pthread_key_create ( &key, NULL ) );
|
|
assert( 0 == pthread_setspecific( key, x ) );
|
|
z = (char*)pthread_getspecific( key );
|
|
assert( 0 != z );
|
|
|
|
y = z[-1]; // error
|
|
|
|
// ensure the key went in and out correctly
|
|
assert(z == x);
|
|
assert(z[1] == 'z');
|
|
|
|
return 0;
|
|
}
|