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