// 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. // Go definitions of internal structures. Master is runtime.h // TODO(lvd): automate conversion to all the _defs.go files package runtime import "unsafe" const ( gidle = iota grunnable grunning gsyscall gwaiting gmoribund gdead grecovery ) // const ( Structrnd = sizeof(uintptr) ) type string_ struct { str *byte len int32 } type iface struct { // tab *itab data unsafe.Pointer } type eface struct { type_ *Type data unsafe.Pointer } type complex64 struct { real float32 imag float32 } type complex128 struct { real float64 imag float64 } type slice struct { array *byte len uint32 cap uint32 } type gobuf struct { sp unsafe.Pointer pc unsafe.Pointer g *g_ } type g_ struct { stackguard unsafe.Pointer stackbase unsafe.Pointer defer_ *defer_ panic_ *panic_ sched gobuf stack0 unsafe.Pointer entry unsafe.Pointer alllink *g_ param unsafe.Pointer status int16 goid int32 selgen uint32 schedlink *g_ readyonstop bool ispanic bool m *m_ lockedm *m_ sig int32 sigcode0 uintptr sigcode1 uintptr } type m_ struct { g0 *g_ morepc unsafe.Pointer moreargp unsafe.Pointer morebuf gobuf moreframesize uint32 moreargsize uint32 cret uintptr procid uint64 gsignal *g_ tls [8]uint32 sched gobuf curg *g_ id int32 mallocing int32 gcing int32 locks int32 nomemprof int32 waitnextg int32 // havenextg note nextg *g_ alllink *m_ schedlink *m_ machport uint32 mcache *mCache lockedg *g_ freg [8]uint64 // gostack unsafe.Pointer // __WINDOWS__ } type stktop struct { stackguard *uint8 stackbase *uint8 gobuf gobuf args uint32 fp *uint8 free bool panic_ bool } type alg struct { hash func(uint32, unsafe.Pointer) uintptr equal func(uint32, unsafe.Pointer, unsafe.Pointer) uint32 print func(uint32, unsafe.Pointer) copy func(uint32, unsafe.Pointer, unsafe.Pointer) } type sigtab struct { flags int32 name *int8 } const ( sigCatch = (1 << iota) sigIgnore sigRestart sigQueue sigPanic ) type Func struct { name string typ string src string pcln []byte entry uintptr pc0 uintptr ln0 int32 frame int32 args int32 locals int32 } const ( aMEM = iota aNOEQ aSTRING aINTER aNILINTER aMEMWORD amax ) type defer_ struct { siz int32 sp unsafe.Pointer pc unsafe.Pointer fn unsafe.Pointer link *defer_ args [8]byte // padded to actual size } type panic_ struct { arg eface stackbase unsafe.Pointer link *panic_ recovered bool } /* * External data. */ var ( algarray [amax]alg emptystring string allg *g_ allm *m_ goidgen int32 gomaxprocs int32 panicking int32 fd int32 gcwaiting int32 goos *int8 )