]> Cypherpunks.ru repositories - gostls13.git/blob - src/cmd/cgo/internal/testtls/tls.go
misc/cgo: move registerCgoTests tests to cmd/cgo/internal
[gostls13.git] / src / cmd / cgo / internal / testtls / tls.go
1 // Copyright 2013 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
4
5 //go:build unix
6
7 package cgotlstest
8
9 // #include <pthread.h>
10 // extern void setTLS(int);
11 // extern int getTLS();
12 import "C"
13
14 import (
15         "runtime"
16         "testing"
17 )
18
19 func testTLS(t *testing.T) {
20         runtime.LockOSThread()
21         defer runtime.UnlockOSThread()
22
23         if val := C.getTLS(); val != 0 {
24                 t.Fatalf("at start, C.getTLS() = %#x, want 0", val)
25         }
26
27         const keyVal = 0x1234
28         C.setTLS(keyVal)
29         if val := C.getTLS(); val != keyVal {
30                 t.Fatalf("at end, C.getTLS() = %#x, want %#x", val, keyVal)
31         }
32 }