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

// Plan 9-specific system calls

package runtime

// open
const (
	_OREAD   = 0
	_OWRITE  = 1
	_ORDWR   = 2
	_OEXEC   = 3
	_OTRUNC  = 16
	_OCEXEC  = 32
	_ORCLOSE = 64
	_OEXCL   = 0x1000
)

// rfork
const (
	_RFNAMEG  = 1 << 0
	_RFENVG   = 1 << 1
	_RFFDG    = 1 << 2
	_RFNOTEG  = 1 << 3
	_RFPROC   = 1 << 4
	_RFMEM    = 1 << 5
	_RFNOWAIT = 1 << 6
	_RFCNAMEG = 1 << 10
	_RFCENVG  = 1 << 11
	_RFCFDG   = 1 << 12
	_RFREND   = 1 << 13
	_RFNOMNT  = 1 << 14
)

// notify
const (
	_NCONT = 0
	_NDFLT = 1
)

type uinptr _Plink

type tos struct {
	prof struct { // Per process profiling
		pp    *_Plink // known to be 0(ptr)
		next  *_Plink // known to be 4(ptr)
		last  *_Plink
		first *_Plink
		pid   uint32
		what  uint32
	}
	cyclefreq uint64 // cycle clock frequency if there is one, 0 otherwise
	kcycles   int64  // cycles spent in kernel
	pcycles   int64  // cycles spent in process (kernel + user)
	pid       uint32 // might as well put the pid here
	clock     uint32
	// top of stack is here
}

const (
	_NSIG   = 14  // number of signals in sigtable array
	_ERRMAX = 128 // max length of note string

	// Notes in runtime·sigtab that are handled by runtime·sigpanic.
	_SIGRFAULT = 2
	_SIGWFAULT = 3
	_SIGINTDIV = 4
	_SIGFLOAT  = 5
	_SIGTRAP   = 6
	_SIGPROF   = 0 // dummy value defined for badsignal
	_SIGQUIT   = 0 // dummy value defined for sighandler
)