57 lines
861 B
Go
57 lines
861 B
Go
// 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 chan.c
|
|
|
|
package runtime
|
|
|
|
type sudoG struct {
|
|
g *g_
|
|
selgen uint32
|
|
offset int16
|
|
isfree int8
|
|
link *sudoG
|
|
elem [8]byte
|
|
}
|
|
|
|
type waitQ struct {
|
|
first *sudoG
|
|
last *sudoG
|
|
}
|
|
|
|
type hChan struct {
|
|
qcount uint32
|
|
dataqsiz uint32
|
|
elemsize uint16
|
|
closed uint16
|
|
elemalign uint8
|
|
elemalg *alg
|
|
senddataq *link
|
|
recvdataq *link
|
|
recvq waitQ
|
|
sendq waitQ
|
|
free sudoG
|
|
lock
|
|
}
|
|
|
|
type link struct {
|
|
link *link
|
|
elem [8]byte
|
|
}
|
|
|
|
type scase struct {
|
|
chan_ *hChan
|
|
pc *byte
|
|
send uint16
|
|
so uint16
|
|
elemp *byte // union elem [8]byte
|
|
}
|
|
|
|
type select_ struct {
|
|
tcase uint16
|
|
ncase uint16
|
|
link *select_
|
|
scase [1]*scase
|
|
}
|