summaryrefslogtreecommitdiff
path: root/libgo/go/runtime/chan_defs.go
blob: 5cfea6e15a8979836da4fa3b92d1c5b34507e5f6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
// 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
}