github.com/riscv/riscv-go@v0.0.0-20200123204226-124ebd6fcc8e/src/runtime/runtime_linux_test.go (about)

     1  // Copyright 2012 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  package runtime_test
     6  
     7  import (
     8  	. "runtime"
     9  	"syscall"
    10  	"testing"
    11  	"unsafe"
    12  )
    13  
    14  var pid, tid int
    15  
    16  func init() {
    17  	// Record pid and tid of init thread for use during test.
    18  	// The call to LockOSThread is just to exercise it;
    19  	// we can't test that it does anything.
    20  	// Instead we're testing that the conditions are good
    21  	// for how it is used in init (must be on main thread).
    22  	pid, tid = syscall.Getpid(), syscall.Gettid()
    23  	LockOSThread()
    24  }
    25  
    26  func TestLockOSThread(t *testing.T) {
    27  	if pid != tid {
    28  		t.Fatalf("pid=%d but tid=%d", pid, tid)
    29  	}
    30  }
    31  
    32  // Test that error values are negative. Use address 1 (a misaligned
    33  // pointer) to get -EINVAL.
    34  func TestMincoreErrorSign(t *testing.T) {
    35  	var dst byte
    36  	v := Mincore(unsafe.Pointer(uintptr(1)), 1, &dst)
    37  
    38  	const EINVAL = 0x16
    39  	if v != -EINVAL {
    40  		t.Errorf("mincore = %v, want %v", v, -EINVAL)
    41  	}
    42  }