// 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.

// Futex is only available on Dragonfly, FreeBSD and Linux.
// The race detector emits calls to split stack functions so it breaks the test.
// +build dragonfly freebsd linux
// +build !race

package runtime_test

import (
	. "runtime"
	"testing"
	"time"
)

func TestFutexsleep(t *testing.T) {
	ch := make(chan bool, 1)
	var dummy uint32
	start := time.Now()
	go func() {
		Entersyscall()
		Futexsleep(&dummy, 0, (1<<31+100)*1e9)
		Exitsyscall()
		ch <- true
	}()
	select {
	case <-ch:
		t.Errorf("futexsleep finished early after %s!", time.Since(start))
	case <-time.After(time.Second):
		Futexwakeup(&dummy, 1)
	}
}
