// Copyright 2013 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. | |
package cgotlstest | |
// #include <pthread.h> | |
// extern void setTLS(int); | |
// extern int getTLS(); | |
import "C" | |
import ( | |
"runtime" | |
"testing" | |
) | |
func testTLS(t *testing.T) { | |
runtime.LockOSThread() | |
defer runtime.UnlockOSThread() | |
if val := C.getTLS(); val != 0 { | |
t.Fatalf("at start, C.getTLS() = %#x, want 0", val) | |
} | |
const keyVal = 0x1234 | |
C.setTLS(keyVal) | |
if val := C.getTLS(); val != keyVal { | |
t.Fatalf("at end, C.getTLS() = %#x, want %#x", val, keyVal) | |
} | |
} |