diff options
author | Ondřej Surý <ondrej@sury.org> | 2012-03-26 16:50:58 +0200 |
---|---|---|
committer | Ondřej Surý <ondrej@sury.org> | 2012-03-26 16:50:58 +0200 |
commit | 519725bb3c075ee2462c929f5997cb068e18466a (patch) | |
tree | 5b162e8488ad147a645048c073577821b4a2bee9 | |
parent | 842623c5dd2819d980ca9c58048d6bc6ed82475f (diff) | |
download | golang-upstream-weekly/2012.03.22.tar.gz |
Imported Upstream version 2012.03.22upstream-weekly/2012.03.22
504 files changed, 41437 insertions, 14661 deletions
@@ -44,6 +44,7 @@ Chris Lennert <calennert@gmail.com> Christian Himpel <chressie@googlemail.com> Christoph Hack <christoph@tux21b.org> Christopher Nielsen <m4dh4tt3r@gmail.com> +Christopher Redden <christopher.redden@gmail.com> Christopher Wedgwood <cw@f00f.org> Clement Skau <clementskau@gmail.com> Conrad Meyer <cemeyer@cs.washington.edu> @@ -65,6 +66,7 @@ Devon H. O'Dell <devon.odell@gmail.com> Dmitry Chestnykh <dchest@gmail.com> Eden Li <eden.li@gmail.com> Eivind Uggedal <eivind@uggedal.com> +Emil Hessman <c.emil.hessman@gmail.com> Eoghan Sherry <ejsherry@gmail.com> Eric Clark <zerohp@gmail.com> Eric Eisner <eric.d.eisner@gmail.com> @@ -83,10 +85,12 @@ Google Inc. Graham Miller <graham.miller@gmail.com> Gustav Paul <gustav.paul@gmail.com> Gustavo Niemeyer <gustavo@niemeyer.net> +Gwenael Treguier <gwenn.kahz@gmail.com> Harley Laue <losinggeneration@gmail.com> Hector Chu <hectorchu@gmail.com> Hong Ruiqi <hongruiqi@gmail.com> Icarus Sparry <golang@icarus.freeuk.com> +Ingo Oeser <nightlyone@googlemail.com> Isaac Wagner <ibw@isaacwagner.me> James Fysh <james.fysh@gmail.com> James Meneghello <rawrz0r@gmail.com> @@ -100,6 +104,7 @@ Jani Monoses <jani.monoses@ubuntu.com> Jaroslavas Počepko <jp@webmaster.ms> Jeff Hodges <jeff@somethingsimilar.com> Jeff R. Allen <jra@nella.org> +Jeremy Jackins <jeremyjackins@gmail.com> Jim McGrath <jimmc2@gmail.com> Joe Poirier <jdpoirier@gmail.com> John Asmuth <jasmuth@gmail.com> @@ -185,6 +190,7 @@ Tarmigan Casebolt <tarmigan@gmail.com> Taru Karttunen <taruti@taruti.net> Timo Savola <timo.savola@gmail.com> Tor Andersson <tor.andersson@gmail.com> +Ugorji Nwoke <ugorji@gmail.com> Vadim Vygonets <unixdj@gmail.com> Vincent Ambo <tazjin@googlemail.com> Vincent Vanackere <vincent.vanackere@gmail.com> diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 9e5accd50..edbd96b47 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -80,6 +80,7 @@ Chris Lennert <calennert@gmail.com> Christian Himpel <chressie@googlemail.com> <chressie@gmail.com> Christoph Hack <christoph@tux21b.org> Christopher Nielsen <m4dh4tt3r@gmail.com> +Christopher Redden <christopher.redden@gmail.com> Christopher Wedgwood <cw@f00f.org> Clement Skau <clementskau@gmail.com> Conrad Meyer <cemeyer@cs.washington.edu> @@ -107,6 +108,7 @@ Dmitriy Vyukov <dvyukov@google.com> Dmitry Chestnykh <dchest@gmail.com> Eden Li <eden.li@gmail.com> Eivind Uggedal <eivind@uggedal.com> +Emil Hessman <c.emil.hessman@gmail.com> Eoghan Sherry <ejsherry@gmail.com> Eric Clark <zerohp@gmail.com> Eric Eisner <eric.d.eisner@gmail.com> @@ -126,11 +128,13 @@ Giles Lean <giles.lean@pobox.com> Graham Miller <graham.miller@gmail.com> Gustav Paul <gustav.paul@gmail.com> Gustavo Niemeyer <gustavo@niemeyer.net> <n13m3y3r@gmail.com> +Gwenael Treguier <gwenn.kahz@gmail.com> Harley Laue <losinggeneration@gmail.com> Hector Chu <hectorchu@gmail.com> Hong Ruiqi <hongruiqi@gmail.com> Ian Lance Taylor <iant@golang.org> Icarus Sparry <golang@icarus.freeuk.com> +Ingo Oeser <nightlyone@googlemail.com> <nightlyone@gmail.com> Isaac Wagner <ibw@isaacwagner.me> Ivan Krasin <krasin@golang.org> Jacob Baskin <jbaskin@google.com> @@ -148,6 +152,7 @@ Jani Monoses <jani.monoses@ubuntu.com> <jani.monoses@gmail.com> Jaroslavas Počepko <jp@webmaster.ms> Jeff Hodges <jeff@somethingsimilar.com> Jeff R. Allen <jra@nella.org> <jeff.allen@gmail.com> +Jeremy Jackins <jeremyjackins@gmail.com> Jim McGrath <jimmc2@gmail.com> Joe Poirier <jdpoirier@gmail.com> Joel Sing <jsing@google.com> @@ -269,6 +274,7 @@ Timo Savola <timo.savola@gmail.com> Tom Szymanski <tgs@google.com> Tor Andersson <tor.andersson@gmail.com> Trevor Strohman <trevor.strohman@gmail.com> +Ugorji Nwoke <ugorji@gmail.com> Vadim Vygonets <unixdj@gmail.com> Vincent Ambo <tazjin@googlemail.com> Vincent Vanackere <vincent.vanackere@gmail.com> @@ -1 +1 @@ -weekly.2012-03-04 12439 +weekly.2012-03-22 12804 diff --git a/api/go1.txt b/api/go1.txt new file mode 100644 index 000000000..d6372314a --- /dev/null +++ b/api/go1.txt @@ -0,0 +1,24532 @@ +pkg archive/tar, const TypeBlock ideal-char +pkg archive/tar, const TypeChar ideal-char +pkg archive/tar, const TypeCont ideal-char +pkg archive/tar, const TypeDir ideal-char +pkg archive/tar, const TypeFifo ideal-char +pkg archive/tar, const TypeLink ideal-char +pkg archive/tar, const TypeReg ideal-char +pkg archive/tar, const TypeRegA ideal-char +pkg archive/tar, const TypeSymlink ideal-char +pkg archive/tar, const TypeXGlobalHeader ideal-char +pkg archive/tar, const TypeXHeader ideal-char +pkg archive/tar, func NewReader(io.Reader) *Reader +pkg archive/tar, func NewWriter(io.Writer) *Writer +pkg archive/tar, method (*Reader) Next() (*Header, error) +pkg archive/tar, method (*Reader) Read([]byte) (int, error) +pkg archive/tar, method (*Writer) Close() error +pkg archive/tar, method (*Writer) Flush() error +pkg archive/tar, method (*Writer) Write([]byte) (int, error) +pkg archive/tar, method (*Writer) WriteHeader(*Header) error +pkg archive/tar, type Header struct +pkg archive/tar, type Header struct, AccessTime time.Time +pkg archive/tar, type Header struct, ChangeTime time.Time +pkg archive/tar, type Header struct, Devmajor int64 +pkg archive/tar, type Header struct, Devminor int64 +pkg archive/tar, type Header struct, Gid int +pkg archive/tar, type Header struct, Gname string +pkg archive/tar, type Header struct, Linkname string +pkg archive/tar, type Header struct, ModTime time.Time +pkg archive/tar, type Header struct, Mode int64 +pkg archive/tar, type Header struct, Name string +pkg archive/tar, type Header struct, Size int64 +pkg archive/tar, type Header struct, Typeflag byte +pkg archive/tar, type Header struct, Uid int +pkg archive/tar, type Header struct, Uname string +pkg archive/tar, type Reader struct +pkg archive/tar, type Writer struct +pkg archive/tar, var ErrFieldTooLong error +pkg archive/tar, var ErrHeader error +pkg archive/tar, var ErrWriteAfterClose error +pkg archive/tar, var ErrWriteTooLong error +pkg archive/zip, const Deflate uint16 +pkg archive/zip, const Store uint16 +pkg archive/zip, func FileInfoHeader(os.FileInfo) (*FileHeader, error) +pkg archive/zip, func NewReader(io.ReaderAt, int64) (*Reader, error) +pkg archive/zip, func NewWriter(io.Writer) *Writer +pkg archive/zip, func OpenReader(string) (*ReadCloser, error) +pkg archive/zip, method (*File) FileInfo() os.FileInfo +pkg archive/zip, method (*File) ModTime() time.Time +pkg archive/zip, method (*File) Mode() os.FileMode +pkg archive/zip, method (*File) Open() (io.ReadCloser, error) +pkg archive/zip, method (*File) SetModTime(time.Time) +pkg archive/zip, method (*File) SetMode(os.FileMode) +pkg archive/zip, method (*FileHeader) FileInfo() os.FileInfo +pkg archive/zip, method (*FileHeader) ModTime() time.Time +pkg archive/zip, method (*FileHeader) Mode() os.FileMode +pkg archive/zip, method (*FileHeader) SetModTime(time.Time) +pkg archive/zip, method (*FileHeader) SetMode(os.FileMode) +pkg archive/zip, method (*ReadCloser) Close() error +pkg archive/zip, method (*Writer) Close() error +pkg archive/zip, method (*Writer) Create(string) (io.Writer, error) +pkg archive/zip, method (*Writer) CreateHeader(*FileHeader) (io.Writer, error) +pkg archive/zip, type File struct +pkg archive/zip, type File struct, embedded FileHeader +pkg archive/zip, type FileHeader struct +pkg archive/zip, type FileHeader struct, CRC32 uint32 +pkg archive/zip, type FileHeader struct, Comment string +pkg archive/zip, type FileHeader struct, CompressedSize uint32 +pkg archive/zip, type FileHeader struct, CreatorVersion uint16 +pkg archive/zip, type FileHeader struct, ExternalAttrs uint32 +pkg archive/zip, type FileHeader struct, Extra []byte +pkg archive/zip, type FileHeader struct, Flags uint16 +pkg archive/zip, type FileHeader struct, Method uint16 +pkg archive/zip, type FileHeader struct, ModifiedDate uint16 +pkg archive/zip, type FileHeader struct, ModifiedTime uint16 +pkg archive/zip, type FileHeader struct, Name string +pkg archive/zip, type FileHeader struct, ReaderVersion uint16 +pkg archive/zip, type FileHeader struct, UncompressedSize uint32 +pkg archive/zip, type ReadCloser struct +pkg archive/zip, type ReadCloser struct, embedded Reader +pkg archive/zip, type Reader struct +pkg archive/zip, type Reader struct, Comment string +pkg archive/zip, type Reader struct, File []*File +pkg archive/zip, type Writer struct +pkg archive/zip, var ErrAlgorithm error +pkg archive/zip, var ErrChecksum error +pkg archive/zip, var ErrFormat error +pkg bufio, func NewReadWriter(*Reader, *Writer) *ReadWriter +pkg bufio, func NewReader(io.Reader) *Reader +pkg bufio, func NewReaderSize(io.Reader, int) *Reader +pkg bufio, func NewWriter(io.Writer) *Writer +pkg bufio, func NewWriterSize(io.Writer, int) *Writer +pkg bufio, method (*Reader) Buffered() int +pkg bufio, method (*Reader) Peek(int) ([]byte, error) +pkg bufio, method (*Reader) Read([]byte) (int, error) +pkg bufio, method (*Reader) ReadByte() (byte, error) +pkg bufio, method (*Reader) ReadBytes(byte) ([]byte, error) +pkg bufio, method (*Reader) ReadLine() ([]byte, bool, error) +pkg bufio, method (*Reader) ReadRune() (rune, int, error) +pkg bufio, method (*Reader) ReadSlice(byte) ([]byte, error) +pkg bufio, method (*Reader) ReadString(byte) (string, error) +pkg bufio, method (*Reader) UnreadByte() error +pkg bufio, method (*Reader) UnreadRune() error +pkg bufio, method (*Writer) Available() int +pkg bufio, method (*Writer) Buffered() int +pkg bufio, method (*Writer) Flush() error +pkg bufio, method (*Writer) Write([]byte) (int, error) +pkg bufio, method (*Writer) WriteByte(byte) error +pkg bufio, method (*Writer) WriteRune(rune) (int, error) +pkg bufio, method (*Writer) WriteString(string) (int, error) +pkg bufio, method (ReadWriter) Available() int +pkg bufio, method (ReadWriter) Flush() error +pkg bufio, method (ReadWriter) Peek(int) ([]byte, error) +pkg bufio, method (ReadWriter) Read([]byte) (int, error) +pkg bufio, method (ReadWriter) ReadByte() (byte, error) +pkg bufio, method (ReadWriter) ReadBytes(byte) ([]byte, error) +pkg bufio, method (ReadWriter) ReadLine() ([]byte, bool, error) +pkg bufio, method (ReadWriter) ReadRune() (rune, int, error) +pkg bufio, method (ReadWriter) ReadSlice(byte) ([]byte, error) +pkg bufio, method (ReadWriter) ReadString(byte) (string, error) +pkg bufio, method (ReadWriter) UnreadByte() error +pkg bufio, method (ReadWriter) UnreadRune() error +pkg bufio, method (ReadWriter) Write([]byte) (int, error) +pkg bufio, method (ReadWriter) WriteByte(byte) error +pkg bufio, method (ReadWriter) WriteRune(rune) (int, error) +pkg bufio, method (ReadWriter) WriteString(string) (int, error) +pkg bufio, type ReadWriter struct +pkg bufio, type ReadWriter struct, embedded *Reader +pkg bufio, type ReadWriter struct, embedded *Writer +pkg bufio, type Reader struct +pkg bufio, type Writer struct +pkg bufio, var ErrBufferFull error +pkg bufio, var ErrInvalidUnreadByte error +pkg bufio, var ErrInvalidUnreadRune error +pkg bufio, var ErrNegativeCount error +pkg bytes, const MinRead ideal-int +pkg bytes, func Compare([]byte) int +pkg bytes, func Contains([]byte) bool +pkg bytes, func Count([]byte) int +pkg bytes, func Equal([]byte) bool +pkg bytes, func EqualFold([]byte) bool +pkg bytes, func Fields([]byte) [][]byte +pkg bytes, func FieldsFunc([]byte, func(rune) bool) [][]byte +pkg bytes, func HasPrefix([]byte) bool +pkg bytes, func HasSuffix([]byte) bool +pkg bytes, func Index([]byte) int +pkg bytes, func IndexAny([]byte, string) int +pkg bytes, func IndexByte([]byte, byte) int +pkg bytes, func IndexFunc([]byte, func(rune) bool) int +pkg bytes, func IndexRune([]byte, rune) int +pkg bytes, func Join([][]byte, []byte) []byte +pkg bytes, func LastIndex([]byte) int +pkg bytes, func LastIndexAny([]byte, string) int +pkg bytes, func LastIndexFunc([]byte, func(rune) bool) int +pkg bytes, func Map(func(rune) rune, []byte) []byte +pkg bytes, func NewBuffer([]byte) *Buffer +pkg bytes, func NewBufferString(string) *Buffer +pkg bytes, func NewReader([]byte) *Reader +pkg bytes, func Repeat([]byte, int) []byte +pkg bytes, func Replace([]byte, int) []byte +pkg bytes, func Runes([]byte) []rune +pkg bytes, func Split([]byte) [][]byte +pkg bytes, func SplitAfter([]byte) [][]byte +pkg bytes, func SplitAfterN([]byte, int) [][]byte +pkg bytes, func SplitN([]byte, int) [][]byte +pkg bytes, func Title([]byte) []byte +pkg bytes, func ToLower([]byte) []byte +pkg bytes, func ToLowerSpecial(unicode.SpecialCase, []byte) []byte +pkg bytes, func ToTitle([]byte) []byte +pkg bytes, func ToTitleSpecial(unicode.SpecialCase, []byte) []byte +pkg bytes, func ToUpper([]byte) []byte +pkg bytes, func ToUpperSpecial(unicode.SpecialCase, []byte) []byte +pkg bytes, func Trim([]byte, string) []byte +pkg bytes, func TrimFunc([]byte, func(rune) bool) []byte +pkg bytes, func TrimLeft([]byte, string) []byte +pkg bytes, func TrimLeftFunc([]byte, func(rune) bool) []byte +pkg bytes, func TrimRight([]byte, string) []byte +pkg bytes, func TrimRightFunc([]byte, func(rune) bool) []byte +pkg bytes, func TrimSpace([]byte) []byte +pkg bytes, method (*Buffer) Bytes() []byte +pkg bytes, method (*Buffer) Len() int +pkg bytes, method (*Buffer) Next(int) []byte +pkg bytes, method (*Buffer) Read([]byte) (int, error) +pkg bytes, method (*Buffer) ReadByte() (byte, error) +pkg bytes, method (*Buffer) ReadBytes(byte) ([]byte, error) +pkg bytes, method (*Buffer) ReadFrom(io.Reader) (int64, error) +pkg bytes, method (*Buffer) ReadRune() (rune, int, error) +pkg bytes, method (*Buffer) ReadString(byte) (string, error) +pkg bytes, method (*Buffer) Reset() +pkg bytes, method (*Buffer) String() string +pkg bytes, method (*Buffer) Truncate(int) +pkg bytes, method (*Buffer) UnreadByte() error +pkg bytes, method (*Buffer) UnreadRune() error +pkg bytes, method (*Buffer) Write([]byte) (int, error) +pkg bytes, method (*Buffer) WriteByte(byte) error +pkg bytes, method (*Buffer) WriteRune(rune) (int, error) +pkg bytes, method (*Buffer) WriteString(string) (int, error) +pkg bytes, method (*Buffer) WriteTo(io.Writer) (int64, error) +pkg bytes, method (*Reader) Len() int +pkg bytes, method (*Reader) Read([]byte) (int, error) +pkg bytes, method (*Reader) ReadAt([]byte, int64) (int, error) +pkg bytes, method (*Reader) ReadByte() (byte, error) +pkg bytes, method (*Reader) ReadRune() (rune, int, error) +pkg bytes, method (*Reader) Seek(int64, int) (int64, error) +pkg bytes, method (*Reader) UnreadByte() error +pkg bytes, method (*Reader) UnreadRune() error +pkg bytes, type Buffer struct +pkg bytes, type Reader struct +pkg bytes, var ErrTooLarge error +pkg compress/bzip2, func NewReader(io.Reader) io.Reader +pkg compress/bzip2, method (StructuralError) Error() string +pkg compress/bzip2, type StructuralError string +pkg compress/flate, const BestCompression ideal-int +pkg compress/flate, const BestSpeed ideal-int +pkg compress/flate, const DefaultCompression ideal-int +pkg compress/flate, const NoCompression ideal-int +pkg compress/flate, func NewReader(io.Reader) io.ReadCloser +pkg compress/flate, func NewReaderDict(io.Reader, []byte) io.ReadCloser +pkg compress/flate, func NewWriter(io.Writer, int) (*Writer, error) +pkg compress/flate, func NewWriterDict(io.Writer, int, []byte) (*Writer, error) +pkg compress/flate, method (*ReadError) Error() string +pkg compress/flate, method (*WriteError) Error() string +pkg compress/flate, method (*Writer) Close() error +pkg compress/flate, method (*Writer) Flush() error +pkg compress/flate, method (*Writer) Write([]byte) (int, error) +pkg compress/flate, method (CorruptInputError) Error() string +pkg compress/flate, method (InternalError) Error() string +pkg compress/flate, type CorruptInputError int64 +pkg compress/flate, type InternalError string +pkg compress/flate, type ReadError struct +pkg compress/flate, type ReadError struct, Err error +pkg compress/flate, type ReadError struct, Offset int64 +pkg compress/flate, type Reader interface { Read, ReadByte } +pkg compress/flate, type Reader interface, Read([]byte) (int, error) +pkg compress/flate, type Reader interface, ReadByte() (byte, error) +pkg compress/flate, type WriteError struct +pkg compress/flate, type WriteError struct, Err error +pkg compress/flate, type WriteError struct, Offset int64 +pkg compress/flate, type Writer struct +pkg compress/gzip, const BestCompression ideal-int +pkg compress/gzip, const BestSpeed ideal-int +pkg compress/gzip, const DefaultCompression ideal-int +pkg compress/gzip, const NoCompression ideal-int +pkg compress/gzip, func NewReader(io.Reader) (*Reader, error) +pkg compress/gzip, func NewWriter(io.Writer) *Writer +pkg compress/gzip, func NewWriterLevel(io.Writer, int) (*Writer, error) +pkg compress/gzip, method (*Reader) Close() error +pkg compress/gzip, method (*Reader) Read([]byte) (int, error) +pkg compress/gzip, method (*Writer) Close() error +pkg compress/gzip, method (*Writer) Write([]byte) (int, error) +pkg compress/gzip, type Header struct +pkg compress/gzip, type Header struct, Comment string +pkg compress/gzip, type Header struct, Extra []byte +pkg compress/gzip, type Header struct, ModTime time.Time +pkg compress/gzip, type Header struct, Name string +pkg compress/gzip, type Header struct, OS byte +pkg compress/gzip, type Reader struct +pkg compress/gzip, type Reader struct, embedded Header +pkg compress/gzip, type Writer struct +pkg compress/gzip, type Writer struct, embedded Header +pkg compress/gzip, var ErrChecksum error +pkg compress/gzip, var ErrHeader error +pkg compress/lzw, const LSB Order +pkg compress/lzw, const MSB Order +pkg compress/lzw, func NewReader(io.Reader, Order, int) io.ReadCloser +pkg compress/lzw, func NewWriter(io.Writer, Order, int) io.WriteCloser +pkg compress/lzw, type Order int +pkg compress/zlib, const BestCompression ideal-int +pkg compress/zlib, const BestSpeed ideal-int +pkg compress/zlib, const DefaultCompression ideal-int +pkg compress/zlib, const NoCompression ideal-int +pkg compress/zlib, func NewReader(io.Reader) (io.ReadCloser, error) +pkg compress/zlib, func NewReaderDict(io.Reader, []byte) (io.ReadCloser, error) +pkg compress/zlib, func NewWriter(io.Writer) *Writer +pkg compress/zlib, func NewWriterLevel(io.Writer, int) (*Writer, error) +pkg compress/zlib, func NewWriterLevelDict(io.Writer, int, []byte) (*Writer, error) +pkg compress/zlib, method (*Writer) Close() error +pkg compress/zlib, method (*Writer) Flush() error +pkg compress/zlib, method (*Writer) Write([]byte) (int, error) +pkg compress/zlib, type Writer struct +pkg compress/zlib, var ErrChecksum error +pkg compress/zlib, var ErrDictionary error +pkg compress/zlib, var ErrHeader error +pkg container/heap, func Init(Interface) +pkg container/heap, func Pop(Interface) interface{} +pkg container/heap, func Push(Interface, interface{}) +pkg container/heap, func Remove(Interface, int) interface{} +pkg container/heap, type Interface interface { Len, Less, Pop, Push, Swap } +pkg container/heap, type Interface interface, Len() int +pkg container/heap, type Interface interface, Less(int) bool +pkg container/heap, type Interface interface, Pop() interface{} +pkg container/heap, type Interface interface, Push(interface{}) +pkg container/heap, type Interface interface, Swap(int) +pkg container/list, func New() *List +pkg container/list, method (*Element) Next() *Element +pkg container/list, method (*Element) Prev() *Element +pkg container/list, method (*List) Back() *Element +pkg container/list, method (*List) Front() *Element +pkg container/list, method (*List) Init() *List +pkg container/list, method (*List) InsertAfter(interface{}, *Element) *Element +pkg container/list, method (*List) InsertBefore(interface{}, *Element) *Element +pkg container/list, method (*List) Len() int +pkg container/list, method (*List) MoveToBack(*Element) +pkg container/list, method (*List) MoveToFront(*Element) +pkg container/list, method (*List) PushBack(interface{}) *Element +pkg container/list, method (*List) PushBackList(*List) +pkg container/list, method (*List) PushFront(interface{}) *Element +pkg container/list, method (*List) PushFrontList(*List) +pkg container/list, method (*List) Remove(*Element) interface{} +pkg container/list, type Element struct +pkg container/list, type Element struct, Value interface{} +pkg container/list, type List struct +pkg container/ring, func New(int) *Ring +pkg container/ring, method (*Ring) Do(func(interface{})) +pkg container/ring, method (*Ring) Len() int +pkg container/ring, method (*Ring) Link(*Ring) *Ring +pkg container/ring, method (*Ring) Move(int) *Ring +pkg container/ring, method (*Ring) Next() *Ring +pkg container/ring, method (*Ring) Prev() *Ring +pkg container/ring, method (*Ring) Unlink(int) *Ring +pkg container/ring, type Ring struct +pkg container/ring, type Ring struct, Value interface{} +pkg crypto, const MD4 Hash +pkg crypto, const MD5 Hash +pkg crypto, const MD5SHA1 Hash +pkg crypto, const RIPEMD160 Hash +pkg crypto, const SHA1 Hash +pkg crypto, const SHA224 Hash +pkg crypto, const SHA256 Hash +pkg crypto, const SHA384 Hash +pkg crypto, const SHA512 Hash +pkg crypto, func RegisterHash(Hash, func() hash.Hash) +pkg crypto, method (Hash) Available() bool +pkg crypto, method (Hash) New() hash.Hash +pkg crypto, method (Hash) Size() int +pkg crypto, type Hash uint +pkg crypto, type PrivateKey interface {} +pkg crypto/aes, const BlockSize ideal-int +pkg crypto/aes, func NewCipher([]byte) (cipher.Block, error) +pkg crypto/aes, method (KeySizeError) Error() string +pkg crypto/aes, type KeySizeError int +pkg crypto/cipher, func NewCBCDecrypter(Block, []byte) BlockMode +pkg crypto/cipher, func NewCBCEncrypter(Block, []byte) BlockMode +pkg crypto/cipher, func NewCFBDecrypter(Block, []byte) Stream +pkg crypto/cipher, func NewCFBEncrypter(Block, []byte) Stream +pkg crypto/cipher, func NewCTR(Block, []byte) Stream +pkg crypto/cipher, func NewOFB(Block, []byte) Stream +pkg crypto/cipher, method (StreamReader) Read([]byte) (int, error) +pkg crypto/cipher, method (StreamWriter) Close() error +pkg crypto/cipher, method (StreamWriter) Write([]byte) (int, error) +pkg crypto/cipher, type Block interface { BlockSize, Decrypt, Encrypt } +pkg crypto/cipher, type Block interface, BlockSize() int +pkg crypto/cipher, type Block interface, Decrypt([]byte) +pkg crypto/cipher, type Block interface, Encrypt([]byte) +pkg crypto/cipher, type BlockMode interface { BlockSize, CryptBlocks } +pkg crypto/cipher, type BlockMode interface, BlockSize() int +pkg crypto/cipher, type BlockMode interface, CryptBlocks([]byte) +pkg crypto/cipher, type Stream interface { XORKeyStream } +pkg crypto/cipher, type Stream interface, XORKeyStream([]byte) +pkg crypto/cipher, type StreamReader struct +pkg crypto/cipher, type StreamReader struct, R io.Reader +pkg crypto/cipher, type StreamReader struct, S Stream +pkg crypto/cipher, type StreamWriter struct +pkg crypto/cipher, type StreamWriter struct, Err error +pkg crypto/cipher, type StreamWriter struct, S Stream +pkg crypto/cipher, type StreamWriter struct, W io.Writer +pkg crypto/des, const BlockSize ideal-int +pkg crypto/des, func NewCipher([]byte) (cipher.Block, error) +pkg crypto/des, func NewTripleDESCipher([]byte) (cipher.Block, error) +pkg crypto/des, method (KeySizeError) Error() string +pkg crypto/des, type KeySizeError int +pkg crypto/dsa, const L1024N160 ParameterSizes +pkg crypto/dsa, const L2048N224 ParameterSizes +pkg crypto/dsa, const L2048N256 ParameterSizes +pkg crypto/dsa, const L3072N256 ParameterSizes +pkg crypto/dsa, func GenerateKey(*PrivateKey, io.Reader) error +pkg crypto/dsa, func GenerateParameters(*Parameters, io.Reader, ParameterSizes) error +pkg crypto/dsa, func Sign(io.Reader, *PrivateKey, []byte) (*big.Int, error) +pkg crypto/dsa, func Verify(*PublicKey, []byte, *big.Int) bool +pkg crypto/dsa, type ParameterSizes int +pkg crypto/dsa, type Parameters struct +pkg crypto/dsa, type Parameters struct, G *big.Int +pkg crypto/dsa, type Parameters struct, P *big.Int +pkg crypto/dsa, type Parameters struct, Q *big.Int +pkg crypto/dsa, type PrivateKey struct +pkg crypto/dsa, type PrivateKey struct, X *big.Int +pkg crypto/dsa, type PrivateKey struct, embedded PublicKey +pkg crypto/dsa, type PublicKey struct +pkg crypto/dsa, type PublicKey struct, Y *big.Int +pkg crypto/dsa, type PublicKey struct, embedded Parameters +pkg crypto/dsa, var ErrInvalidPublicKey error +pkg crypto/ecdsa, func GenerateKey(elliptic.Curve, io.Reader) (*PrivateKey, error) +pkg crypto/ecdsa, func Sign(io.Reader, *PrivateKey, []byte) (*big.Int, error) +pkg crypto/ecdsa, func Verify(*PublicKey, []byte, *big.Int) bool +pkg crypto/ecdsa, type PrivateKey struct +pkg crypto/ecdsa, type PrivateKey struct, D *big.Int +pkg crypto/ecdsa, type PrivateKey struct, embedded PublicKey +pkg crypto/ecdsa, type PublicKey struct +pkg crypto/ecdsa, type PublicKey struct, X *big.Int +pkg crypto/ecdsa, type PublicKey struct, Y *big.Int +pkg crypto/ecdsa, type PublicKey struct, embedded elliptic.Curve +pkg crypto/elliptic, func GenerateKey(Curve, io.Reader) ([]byte, *big.Int, error) +pkg crypto/elliptic, func Marshal(Curve, *big.Int) []byte +pkg crypto/elliptic, func P224() Curve +pkg crypto/elliptic, func P256() Curve +pkg crypto/elliptic, func P384() Curve +pkg crypto/elliptic, func P521() Curve +pkg crypto/elliptic, func Unmarshal(Curve, []byte) *big.Int +pkg crypto/elliptic, method (*CurveParams) Add(*big.Int) (*big.Int, *big.Int) +pkg crypto/elliptic, method (*CurveParams) Double(*big.Int) (*big.Int, *big.Int) +pkg crypto/elliptic, method (*CurveParams) IsOnCurve(*big.Int) bool +pkg crypto/elliptic, method (*CurveParams) Params() *CurveParams +pkg crypto/elliptic, method (*CurveParams) ScalarBaseMult([]byte) (*big.Int, *big.Int) +pkg crypto/elliptic, method (*CurveParams) ScalarMult(*big.Int, []byte) (*big.Int, *big.Int) +pkg crypto/elliptic, type Curve interface { Add, Double, IsOnCurve, Params, ScalarBaseMult, ScalarMult } +pkg crypto/elliptic, type Curve interface, Add(*big.Int) *big.Int +pkg crypto/elliptic, type Curve interface, Double(*big.Int) *big.Int +pkg crypto/elliptic, type Curve interface, IsOnCurve(*big.Int) bool +pkg crypto/elliptic, type Curve interface, Params() *CurveParams +pkg crypto/elliptic, type Curve interface, ScalarBaseMult([]byte) *big.Int +pkg crypto/elliptic, type Curve interface, ScalarMult(*big.Int, []byte) *big.Int +pkg crypto/elliptic, type CurveParams struct +pkg crypto/elliptic, type CurveParams struct, B *big.Int +pkg crypto/elliptic, type CurveParams struct, BitSize int +pkg crypto/elliptic, type CurveParams struct, Gx *big.Int +pkg crypto/elliptic, type CurveParams struct, Gy *big.Int +pkg crypto/elliptic, type CurveParams struct, N *big.Int +pkg crypto/elliptic, type CurveParams struct, P *big.Int +pkg crypto/hmac, func New(func() hash.Hash, []byte) hash.Hash +pkg crypto/md5, const BlockSize ideal-int +pkg crypto/md5, const Size ideal-int +pkg crypto/md5, func New() hash.Hash +pkg crypto/rand, func Int(io.Reader, *big.Int) (*big.Int, error) +pkg crypto/rand, func Prime(io.Reader, int) (*big.Int, error) +pkg crypto/rand, func Read([]byte) (int, error) +pkg crypto/rand, var Reader io.Reader +pkg crypto/rc4, func NewCipher([]byte) (*Cipher, error) +pkg crypto/rc4, method (*Cipher) Reset() +pkg crypto/rc4, method (*Cipher) XORKeyStream([]byte) +pkg crypto/rc4, method (KeySizeError) Error() string +pkg crypto/rc4, type Cipher struct +pkg crypto/rc4, type KeySizeError int +pkg crypto/rsa, func DecryptOAEP(hash.Hash, io.Reader, *PrivateKey, []byte, []byte) ([]byte, error) +pkg crypto/rsa, func DecryptPKCS1v15(io.Reader, *PrivateKey, []byte) ([]byte, error) +pkg crypto/rsa, func DecryptPKCS1v15SessionKey(io.Reader, *PrivateKey, []byte, []byte) error +pkg crypto/rsa, func EncryptOAEP(hash.Hash, io.Reader, *PublicKey, []byte, []byte) ([]byte, error) +pkg crypto/rsa, func EncryptPKCS1v15(io.Reader, *PublicKey, []byte) ([]byte, error) +pkg crypto/rsa, func GenerateKey(io.Reader, int) (*PrivateKey, error) +pkg crypto/rsa, func GenerateMultiPrimeKey(io.Reader, int, int) (*PrivateKey, error) +pkg crypto/rsa, func SignPKCS1v15(io.Reader, *PrivateKey, crypto.Hash, []byte) ([]byte, error) +pkg crypto/rsa, func VerifyPKCS1v15(*PublicKey, crypto.Hash, []byte, []byte) error +pkg crypto/rsa, method (*PrivateKey) Precompute() +pkg crypto/rsa, method (*PrivateKey) Validate() error +pkg crypto/rsa, type CRTValue struct +pkg crypto/rsa, type CRTValue struct, Coeff *big.Int +pkg crypto/rsa, type CRTValue struct, Exp *big.Int +pkg crypto/rsa, type CRTValue struct, R *big.Int +pkg crypto/rsa, type PrecomputedValues struct +pkg crypto/rsa, type PrecomputedValues struct, CRTValues []CRTValue +pkg crypto/rsa, type PrecomputedValues struct, Dp *big.Int +pkg crypto/rsa, type PrecomputedValues struct, Dq *big.Int +pkg crypto/rsa, type PrecomputedValues struct, Qinv *big.Int +pkg crypto/rsa, type PrivateKey struct +pkg crypto/rsa, type PrivateKey struct, D *big.Int +pkg crypto/rsa, type PrivateKey struct, Precomputed PrecomputedValues +pkg crypto/rsa, type PrivateKey struct, Primes []*big.Int +pkg crypto/rsa, type PrivateKey struct, embedded PublicKey +pkg crypto/rsa, type PublicKey struct +pkg crypto/rsa, type PublicKey struct, E int +pkg crypto/rsa, type PublicKey struct, N *big.Int +pkg crypto/rsa, var ErrDecryption error +pkg crypto/rsa, var ErrMessageTooLong error +pkg crypto/rsa, var ErrVerification error +pkg crypto/sha1, const BlockSize ideal-int +pkg crypto/sha1, const Size ideal-int +pkg crypto/sha1, func New() hash.Hash +pkg crypto/sha256, const BlockSize ideal-int +pkg crypto/sha256, const Size ideal-int +pkg crypto/sha256, const Size224 ideal-int +pkg crypto/sha256, func New() hash.Hash +pkg crypto/sha256, func New224() hash.Hash +pkg crypto/sha512, const BlockSize ideal-int +pkg crypto/sha512, const Size ideal-int +pkg crypto/sha512, const Size384 ideal-int +pkg crypto/sha512, func New() hash.Hash +pkg crypto/sha512, func New384() hash.Hash +pkg crypto/subtle, func ConstantTimeByteEq(uint8) int +pkg crypto/subtle, func ConstantTimeCompare([]byte) int +pkg crypto/subtle, func ConstantTimeCopy(int, []byte) +pkg crypto/subtle, func ConstantTimeEq(int32) int +pkg crypto/subtle, func ConstantTimeSelect(int) int +pkg crypto/tls, const NoClientCert ClientAuthType +pkg crypto/tls, const RequestClientCert ClientAuthType +pkg crypto/tls, const RequireAndVerifyClientCert ClientAuthType +pkg crypto/tls, const RequireAnyClientCert ClientAuthType +pkg crypto/tls, const TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA uint16 +pkg crypto/tls, const TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA uint16 +pkg crypto/tls, const TLS_ECDHE_RSA_WITH_RC4_128_SHA uint16 +pkg crypto/tls, const TLS_RSA_WITH_3DES_EDE_CBC_SHA uint16 +pkg crypto/tls, const TLS_RSA_WITH_AES_128_CBC_SHA uint16 +pkg crypto/tls, const TLS_RSA_WITH_RC4_128_SHA uint16 +pkg crypto/tls, const VerifyClientCertIfGiven ClientAuthType +pkg crypto/tls, func Client(net.Conn, *Config) *Conn +pkg crypto/tls, func Dial(string, *Config) (*Conn, error) +pkg crypto/tls, func Listen(string, *Config) (net.Listener, error) +pkg crypto/tls, func LoadX509KeyPair(string) (Certificate, error) +pkg crypto/tls, func NewListener(net.Listener, *Config) net.Listener +pkg crypto/tls, func Server(net.Conn, *Config) *Conn +pkg crypto/tls, func X509KeyPair([]byte) (Certificate, error) +pkg crypto/tls, method (*Config) BuildNameToCertificate() +pkg crypto/tls, method (*Conn) Close() error +pkg crypto/tls, method (*Conn) ConnectionState() ConnectionState +pkg crypto/tls, method (*Conn) Handshake() error +pkg crypto/tls, method (*Conn) LocalAddr() net.Addr +pkg crypto/tls, method (*Conn) OCSPResponse() []byte +pkg crypto/tls, method (*Conn) Read([]byte) (int, error) +pkg crypto/tls, method (*Conn) RemoteAddr() net.Addr +pkg crypto/tls, method (*Conn) SetDeadline(time.Time) error +pkg crypto/tls, method (*Conn) SetReadDeadline(time.Time) error +pkg crypto/tls, method (*Conn) SetWriteDeadline(time.Time) error +pkg crypto/tls, method (*Conn) VerifyHostname(string) error +pkg crypto/tls, method (*Conn) Write([]byte) (int, error) +pkg crypto/tls, type Certificate struct +pkg crypto/tls, type Certificate struct, Certificate [][]byte +pkg crypto/tls, type Certificate struct, Leaf *x509.Certificate +pkg crypto/tls, type Certificate struct, OCSPStaple []byte +pkg crypto/tls, type Certificate struct, PrivateKey crypto.PrivateKey +pkg crypto/tls, type ClientAuthType int +pkg crypto/tls, type Config struct +pkg crypto/tls, type Config struct, Certificates []Certificate +pkg crypto/tls, type Config struct, CipherSuites []uint16 +pkg crypto/tls, type Config struct, ClientAuth ClientAuthType +pkg crypto/tls, type Config struct, ClientCAs *x509.CertPool +pkg crypto/tls, type Config struct, InsecureSkipVerify bool +pkg crypto/tls, type Config struct, NameToCertificate map[string]*Certificate +pkg crypto/tls, type Config struct, NextProtos []string +pkg crypto/tls, type Config struct, Rand io.Reader +pkg crypto/tls, type Config struct, RootCAs *x509.CertPool +pkg crypto/tls, type Config struct, ServerName string +pkg crypto/tls, type Config struct, Time func() time.Time +pkg crypto/tls, type Conn struct +pkg crypto/tls, type ConnectionState struct +pkg crypto/tls, type ConnectionState struct, CipherSuite uint16 +pkg crypto/tls, type ConnectionState struct, HandshakeComplete bool +pkg crypto/tls, type ConnectionState struct, NegotiatedProtocol string +pkg crypto/tls, type ConnectionState struct, NegotiatedProtocolIsMutual bool +pkg crypto/tls, type ConnectionState struct, PeerCertificates []*x509.Certificate +pkg crypto/tls, type ConnectionState struct, ServerName string +pkg crypto/tls, type ConnectionState struct, VerifiedChains [][]*x509.Certificate +pkg crypto/x509, const CANotAuthorizedForThisName InvalidReason +pkg crypto/x509, const DSA PublicKeyAlgorithm +pkg crypto/x509, const DSAWithSHA1 SignatureAlgorithm +pkg crypto/x509, const DSAWithSHA256 SignatureAlgorithm +pkg crypto/x509, const Expired InvalidReason +pkg crypto/x509, const ExtKeyUsageAny ExtKeyUsage +pkg crypto/x509, const ExtKeyUsageClientAuth ExtKeyUsage +pkg crypto/x509, const ExtKeyUsageCodeSigning ExtKeyUsage +pkg crypto/x509, const ExtKeyUsageEmailProtection ExtKeyUsage +pkg crypto/x509, const ExtKeyUsageOCSPSigning ExtKeyUsage +pkg crypto/x509, const ExtKeyUsageServerAuth ExtKeyUsage +pkg crypto/x509, const ExtKeyUsageTimeStamping ExtKeyUsage +pkg crypto/x509, const KeyUsageCRLSign KeyUsage +pkg crypto/x509, const KeyUsageCertSign KeyUsage +pkg crypto/x509, const KeyUsageContentCommitment KeyUsage +pkg crypto/x509, const KeyUsageDataEncipherment KeyUsage +pkg crypto/x509, const KeyUsageDecipherOnly KeyUsage +pkg crypto/x509, const KeyUsageDigitalSignature KeyUsage +pkg crypto/x509, const KeyUsageEncipherOnly KeyUsage +pkg crypto/x509, const KeyUsageKeyAgreement KeyUsage +pkg crypto/x509, const KeyUsageKeyEncipherment KeyUsage +pkg crypto/x509, const MD2WithRSA SignatureAlgorithm +pkg crypto/x509, const MD5WithRSA SignatureAlgorithm +pkg crypto/x509, const NotAuthorizedToSign InvalidReason +pkg crypto/x509, const RSA PublicKeyAlgorithm +pkg crypto/x509, const SHA1WithRSA SignatureAlgorithm +pkg crypto/x509, const SHA256WithRSA SignatureAlgorithm +pkg crypto/x509, const SHA384WithRSA SignatureAlgorithm +pkg crypto/x509, const SHA512WithRSA SignatureAlgorithm +pkg crypto/x509, const TooManyIntermediates InvalidReason +pkg crypto/x509, const UnknownPublicKeyAlgorithm PublicKeyAlgorithm +pkg crypto/x509, const UnknownSignatureAlgorithm SignatureAlgorithm +pkg crypto/x509, func CreateCertificate(io.Reader, *Certificate, interface{}, interface{}) ([]byte, error) +pkg crypto/x509, func MarshalPKCS1PrivateKey(*rsa.PrivateKey) []byte +pkg crypto/x509, func MarshalPKIXPublicKey(interface{}) ([]byte, error) +pkg crypto/x509, func NewCertPool() *CertPool +pkg crypto/x509, func ParseCRL([]byte) (*pkix.CertificateList, error) +pkg crypto/x509, func ParseCertificate([]byte) (*Certificate, error) +pkg crypto/x509, func ParseCertificates([]byte) ([]*Certificate, error) +pkg crypto/x509, func ParseDERCRL([]byte) (*pkix.CertificateList, error) +pkg crypto/x509, func ParsePKCS1PrivateKey([]byte) (*rsa.PrivateKey, error) +pkg crypto/x509, func ParsePKCS8PrivateKey([]byte) (interface{}, error) +pkg crypto/x509, func ParsePKIXPublicKey([]byte) (interface{}, error) +pkg crypto/x509, method (*CertPool) AddCert(*Certificate) +pkg crypto/x509, method (*CertPool) AppendCertsFromPEM([]byte) bool +pkg crypto/x509, method (*CertPool) Subjects() [][]byte +pkg crypto/x509, method (*Certificate) CheckCRLSignature(*pkix.CertificateList) error +pkg crypto/x509, method (*Certificate) CheckSignature(SignatureAlgorithm, []byte) error +pkg crypto/x509, method (*Certificate) CheckSignatureFrom(*Certificate) error +pkg crypto/x509, method (*Certificate) CreateCRL(io.Reader, interface{}, []pkix.RevokedCertificate, time.Time) ([]byte, error) +pkg crypto/x509, method (*Certificate) Equal(*Certificate) bool +pkg crypto/x509, method (*Certificate) Verify(VerifyOptions) ([][]*Certificate, error) +pkg crypto/x509, method (*Certificate) VerifyHostname(string) error +pkg crypto/x509, method (CertificateInvalidError) Error() string +pkg crypto/x509, method (ConstraintViolationError) Error() string +pkg crypto/x509, method (HostnameError) Error() string +pkg crypto/x509, method (UnhandledCriticalExtension) Error() string +pkg crypto/x509, method (UnknownAuthorityError) Error() string +pkg crypto/x509, type CertPool struct +pkg crypto/x509, type Certificate struct +pkg crypto/x509, type Certificate struct, AuthorityKeyId []byte +pkg crypto/x509, type Certificate struct, BasicConstraintsValid bool +pkg crypto/x509, type Certificate struct, DNSNames []string +pkg crypto/x509, type Certificate struct, EmailAddresses []string +pkg crypto/x509, type Certificate struct, ExtKeyUsage []ExtKeyUsage +pkg crypto/x509, type Certificate struct, IsCA bool +pkg crypto/x509, type Certificate struct, Issuer pkix.Name +pkg crypto/x509, type Certificate struct, KeyUsage KeyUsage +pkg crypto/x509, type Certificate struct, MaxPathLen int +pkg crypto/x509, type Certificate struct, NotAfter time.Time +pkg crypto/x509, type Certificate struct, NotBefore time.Time +pkg crypto/x509, type Certificate struct, PermittedDNSDomains []string +pkg crypto/x509, type Certificate struct, PermittedDNSDomainsCritical bool +pkg crypto/x509, type Certificate struct, PolicyIdentifiers []asn1.ObjectIdentifier +pkg crypto/x509, type Certificate struct, PublicKey interface{} +pkg crypto/x509, type Certificate struct, PublicKeyAlgorithm PublicKeyAlgorithm +pkg crypto/x509, type Certificate struct, Raw []byte +pkg crypto/x509, type Certificate struct, RawIssuer []byte +pkg crypto/x509, type Certificate struct, RawSubject []byte +pkg crypto/x509, type Certificate struct, RawSubjectPublicKeyInfo []byte +pkg crypto/x509, type Certificate struct, RawTBSCertificate []byte +pkg crypto/x509, type Certificate struct, SerialNumber *big.Int +pkg crypto/x509, type Certificate struct, Signature []byte +pkg crypto/x509, type Certificate struct, SignatureAlgorithm SignatureAlgorithm +pkg crypto/x509, type Certificate struct, Subject pkix.Name +pkg crypto/x509, type Certificate struct, SubjectKeyId []byte +pkg crypto/x509, type Certificate struct, UnknownExtKeyUsage []asn1.ObjectIdentifier +pkg crypto/x509, type Certificate struct, Version int +pkg crypto/x509, type CertificateInvalidError struct +pkg crypto/x509, type CertificateInvalidError struct, Cert *Certificate +pkg crypto/x509, type CertificateInvalidError struct, Reason InvalidReason +pkg crypto/x509, type ConstraintViolationError struct +pkg crypto/x509, type ExtKeyUsage int +pkg crypto/x509, type HostnameError struct +pkg crypto/x509, type HostnameError struct, Certificate *Certificate +pkg crypto/x509, type HostnameError struct, Host string +pkg crypto/x509, type InvalidReason int +pkg crypto/x509, type KeyUsage int +pkg crypto/x509, type PublicKeyAlgorithm int +pkg crypto/x509, type SignatureAlgorithm int +pkg crypto/x509, type UnhandledCriticalExtension struct +pkg crypto/x509, type UnknownAuthorityError struct +pkg crypto/x509, type VerifyOptions struct +pkg crypto/x509, type VerifyOptions struct, CurrentTime time.Time +pkg crypto/x509, type VerifyOptions struct, DNSName string +pkg crypto/x509, type VerifyOptions struct, Intermediates *CertPool +pkg crypto/x509, type VerifyOptions struct, Roots *CertPool +pkg crypto/x509, var ErrUnsupportedAlgorithm error +pkg crypto/x509/pkix, method (*CertificateList) HasExpired(time.Time) bool +pkg crypto/x509/pkix, method (*Name) FillFromRDNSequence(*RDNSequence) +pkg crypto/x509/pkix, method (Name) ToRDNSequence() RDNSequence +pkg crypto/x509/pkix, type AlgorithmIdentifier struct +pkg crypto/x509/pkix, type AlgorithmIdentifier struct, Algorithm asn1.ObjectIdentifier +pkg crypto/x509/pkix, type AlgorithmIdentifier struct, Parameters asn1.RawValue +pkg crypto/x509/pkix, type AttributeTypeAndValue struct +pkg crypto/x509/pkix, type AttributeTypeAndValue struct, Type asn1.ObjectIdentifier +pkg crypto/x509/pkix, type AttributeTypeAndValue struct, Value interface{} +pkg crypto/x509/pkix, type CertificateList struct +pkg crypto/x509/pkix, type CertificateList struct, SignatureAlgorithm AlgorithmIdentifier +pkg crypto/x509/pkix, type CertificateList struct, SignatureValue asn1.BitString +pkg crypto/x509/pkix, type CertificateList struct, TBSCertList TBSCertificateList +pkg crypto/x509/pkix, type Extension struct +pkg crypto/x509/pkix, type Extension struct, Critical bool +pkg crypto/x509/pkix, type Extension struct, Id asn1.ObjectIdentifier +pkg crypto/x509/pkix, type Extension struct, Value []byte +pkg crypto/x509/pkix, type Name struct +pkg crypto/x509/pkix, type Name struct, CommonName string +pkg crypto/x509/pkix, type Name struct, Country []string +pkg crypto/x509/pkix, type Name struct, Locality []string +pkg crypto/x509/pkix, type Name struct, Names []AttributeTypeAndValue +pkg crypto/x509/pkix, type Name struct, Organization []string +pkg crypto/x509/pkix, type Name struct, OrganizationalUnit []string +pkg crypto/x509/pkix, type Name struct, PostalCode []string +pkg crypto/x509/pkix, type Name struct, Province []string +pkg crypto/x509/pkix, type Name struct, SerialNumber string +pkg crypto/x509/pkix, type Name struct, StreetAddress []string +pkg crypto/x509/pkix, type RDNSequence []RelativeDistinguishedNameSET +pkg crypto/x509/pkix, type RelativeDistinguishedNameSET []AttributeTypeAndValue +pkg crypto/x509/pkix, type RevokedCertificate struct +pkg crypto/x509/pkix, type RevokedCertificate struct, Extensions []Extension +pkg crypto/x509/pkix, type RevokedCertificate struct, RevocationTime time.Time +pkg crypto/x509/pkix, type RevokedCertificate struct, SerialNumber *big.Int +pkg crypto/x509/pkix, type TBSCertificateList struct +pkg crypto/x509/pkix, type TBSCertificateList struct, Extensions []Extension +pkg crypto/x509/pkix, type TBSCertificateList struct, Issuer RDNSequence +pkg crypto/x509/pkix, type TBSCertificateList struct, NextUpdate time.Time +pkg crypto/x509/pkix, type TBSCertificateList struct, Raw asn1.RawContent +pkg crypto/x509/pkix, type TBSCertificateList struct, RevokedCertificates []RevokedCertificate +pkg crypto/x509/pkix, type TBSCertificateList struct, Signature AlgorithmIdentifier +pkg crypto/x509/pkix, type TBSCertificateList struct, ThisUpdate time.Time +pkg crypto/x509/pkix, type TBSCertificateList struct, Version int +pkg database/sql, func Open(string) (*DB, error) +pkg database/sql, func Register(string, driver.Driver) +pkg database/sql, method (*DB) Begin() (*Tx, error) +pkg database/sql, method (*DB) Close() error +pkg database/sql, method (*DB) Driver() driver.Driver +pkg database/sql, method (*DB) Exec(string, ...interface{}) (Result, error) +pkg database/sql, method (*DB) Prepare(string) (*Stmt, error) +pkg database/sql, method (*DB) Query(string, ...interface{}) (*Rows, error) +pkg database/sql, method (*DB) QueryRow(string, ...interface{}) *Row +pkg database/sql, method (*NullBool) Scan(interface{}) error +pkg database/sql, method (*NullFloat64) Scan(interface{}) error +pkg database/sql, method (*NullInt64) Scan(interface{}) error +pkg database/sql, method (*NullString) Scan(interface{}) error +pkg database/sql, method (*Row) Scan(...interface{}) error +pkg database/sql, method (*Rows) Close() error +pkg database/sql, method (*Rows) Columns() ([]string, error) +pkg database/sql, method (*Rows) Err() error +pkg database/sql, method (*Rows) Next() bool +pkg database/sql, method (*Rows) Scan(...interface{}) error +pkg database/sql, method (*Stmt) Close() error +pkg database/sql, method (*Stmt) Exec(...interface{}) (Result, error) +pkg database/sql, method (*Stmt) Query(...interface{}) (*Rows, error) +pkg database/sql, method (*Stmt) QueryRow(...interface{}) *Row +pkg database/sql, method (*Tx) Commit() error +pkg database/sql, method (*Tx) Exec(string, ...interface{}) (Result, error) +pkg database/sql, method (*Tx) Prepare(string) (*Stmt, error) +pkg database/sql, method (*Tx) Query(string, ...interface{}) (*Rows, error) +pkg database/sql, method (*Tx) QueryRow(string, ...interface{}) *Row +pkg database/sql, method (*Tx) Rollback() error +pkg database/sql, method (*Tx) Stmt(*Stmt) *Stmt +pkg database/sql, method (NullBool) Value() (driver.Value, error) +pkg database/sql, method (NullFloat64) Value() (driver.Value, error) +pkg database/sql, method (NullInt64) Value() (driver.Value, error) +pkg database/sql, method (NullString) Value() (driver.Value, error) +pkg database/sql, type DB struct +pkg database/sql, type NullBool struct +pkg database/sql, type NullBool struct, Bool bool +pkg database/sql, type NullBool struct, Valid bool +pkg database/sql, type NullFloat64 struct +pkg database/sql, type NullFloat64 struct, Float64 float64 +pkg database/sql, type NullFloat64 struct, Valid bool +pkg database/sql, type NullInt64 struct +pkg database/sql, type NullInt64 struct, Int64 int64 +pkg database/sql, type NullInt64 struct, Valid bool +pkg database/sql, type NullString struct +pkg database/sql, type NullString struct, String string +pkg database/sql, type NullString struct, Valid bool +pkg database/sql, type RawBytes []byte +pkg database/sql, type Result interface { LastInsertId, RowsAffected } +pkg database/sql, type Result interface, LastInsertId() (int64, error) +pkg database/sql, type Result interface, RowsAffected() (int64, error) +pkg database/sql, type Row struct +pkg database/sql, type Rows struct +pkg database/sql, type Scanner interface { Scan } +pkg database/sql, type Scanner interface, Scan(interface{}) error +pkg database/sql, type Stmt struct +pkg database/sql, type Tx struct +pkg database/sql, var ErrNoRows error +pkg database/sql, var ErrTxDone error +pkg database/sql/driver, func IsScanValue(interface{}) bool +pkg database/sql/driver, func IsValue(interface{}) bool +pkg database/sql/driver, method (NotNull) ConvertValue(interface{}) (Value, error) +pkg database/sql/driver, method (Null) ConvertValue(interface{}) (Value, error) +pkg database/sql/driver, method (RowsAffected) LastInsertId() (int64, error) +pkg database/sql/driver, method (RowsAffected) RowsAffected() (int64, error) +pkg database/sql/driver, type ColumnConverter interface { ColumnConverter } +pkg database/sql/driver, type ColumnConverter interface, ColumnConverter(int) ValueConverter +pkg database/sql/driver, type Conn interface { Begin, Close, Prepare } +pkg database/sql/driver, type Conn interface, Begin() (Tx, error) +pkg database/sql/driver, type Conn interface, Close() error +pkg database/sql/driver, type Conn interface, Prepare(string) (Stmt, error) +pkg database/sql/driver, type Driver interface { Open } +pkg database/sql/driver, type Driver interface, Open(string) (Conn, error) +pkg database/sql/driver, type Execer interface { Exec } +pkg database/sql/driver, type Execer interface, Exec(string, []Value) (Result, error) +pkg database/sql/driver, type NotNull struct +pkg database/sql/driver, type NotNull struct, Converter ValueConverter +pkg database/sql/driver, type Null struct +pkg database/sql/driver, type Null struct, Converter ValueConverter +pkg database/sql/driver, type Result interface { LastInsertId, RowsAffected } +pkg database/sql/driver, type Result interface, LastInsertId() (int64, error) +pkg database/sql/driver, type Result interface, RowsAffected() (int64, error) +pkg database/sql/driver, type Rows interface { Close, Columns, Next } +pkg database/sql/driver, type Rows interface, Close() error +pkg database/sql/driver, type Rows interface, Columns() []string +pkg database/sql/driver, type Rows interface, Next([]Value) error +pkg database/sql/driver, type RowsAffected int64 +pkg database/sql/driver, type Stmt interface { Close, Exec, NumInput, Query } +pkg database/sql/driver, type Stmt interface, Close() error +pkg database/sql/driver, type Stmt interface, Exec([]Value) (Result, error) +pkg database/sql/driver, type Stmt interface, NumInput() int +pkg database/sql/driver, type Stmt interface, Query([]Value) (Rows, error) +pkg database/sql/driver, type Tx interface { Commit, Rollback } +pkg database/sql/driver, type Tx interface, Commit() error +pkg database/sql/driver, type Tx interface, Rollback() error +pkg database/sql/driver, type Value interface {} +pkg database/sql/driver, type ValueConverter interface { ConvertValue } +pkg database/sql/driver, type ValueConverter interface, ConvertValue(interface{}) (Value, error) +pkg database/sql/driver, type Valuer interface { Value } +pkg database/sql/driver, type Valuer interface, Value() (Value, error) +pkg database/sql/driver, var Bool boolType +pkg database/sql/driver, var DefaultParameterConverter defaultConverter +pkg database/sql/driver, var ErrBadConn error +pkg database/sql/driver, var ErrSkip error +pkg database/sql/driver, var Int32 int32Type +pkg database/sql/driver, var ResultNoRows noRows +pkg database/sql/driver, var String stringType +pkg debug/dwarf, const AttrAbstractOrigin Attr +pkg debug/dwarf, const AttrAccessibility Attr +pkg debug/dwarf, const AttrAddrClass Attr +pkg debug/dwarf, const AttrAllocated Attr +pkg debug/dwarf, const AttrArtificial Attr +pkg debug/dwarf, const AttrAssociated Attr +pkg debug/dwarf, const AttrBaseTypes Attr +pkg debug/dwarf, const AttrBitOffset Attr +pkg debug/dwarf, const AttrBitSize Attr +pkg debug/dwarf, const AttrByteSize Attr +pkg debug/dwarf, const AttrCallColumn Attr +pkg debug/dwarf, const AttrCallFile Attr +pkg debug/dwarf, const AttrCallLine Attr +pkg debug/dwarf, const AttrCalling Attr +pkg debug/dwarf, const AttrCommonRef Attr +pkg debug/dwarf, const AttrCompDir Attr +pkg debug/dwarf, const AttrConstValue Attr +pkg debug/dwarf, const AttrContainingType Attr +pkg debug/dwarf, const AttrCount Attr +pkg debug/dwarf, const AttrDataLocation Attr +pkg debug/dwarf, const AttrDataMemberLoc Attr +pkg debug/dwarf, const AttrDeclColumn Attr +pkg debug/dwarf, const AttrDeclFile Attr +pkg debug/dwarf, const AttrDeclLine Attr +pkg debug/dwarf, const AttrDeclaration Attr +pkg debug/dwarf, const AttrDefaultValue Attr +pkg debug/dwarf, const AttrDescription Attr +pkg debug/dwarf, const AttrDiscr Attr +pkg debug/dwarf, const AttrDiscrList Attr +pkg debug/dwarf, const AttrDiscrValue Attr +pkg debug/dwarf, const AttrEncoding Attr +pkg debug/dwarf, const AttrEntrypc Attr +pkg debug/dwarf, const AttrExtension Attr +pkg debug/dwarf, const AttrExternal Attr +pkg debug/dwarf, const AttrFrameBase Attr +pkg debug/dwarf, const AttrFriend Attr +pkg debug/dwarf, const AttrHighpc Attr +pkg debug/dwarf, const AttrIdentifierCase Attr +pkg debug/dwarf, const AttrImport Attr +pkg debug/dwarf, const AttrInline Attr +pkg debug/dwarf, const AttrIsOptional Attr +pkg debug/dwarf, const AttrLanguage Attr +pkg debug/dwarf, const AttrLocation Attr +pkg debug/dwarf, const AttrLowerBound Attr +pkg debug/dwarf, const AttrLowpc Attr +pkg debug/dwarf, const AttrMacroInfo Attr +pkg debug/dwarf, const AttrName Attr +pkg debug/dwarf, const AttrNamelistItem Attr +pkg debug/dwarf, const AttrOrdering Attr +pkg debug/dwarf, const AttrPriority Attr +pkg debug/dwarf, const AttrProducer Attr +pkg debug/dwarf, const AttrPrototyped Attr +pkg debug/dwarf, const AttrRanges Attr +pkg debug/dwarf, const AttrReturnAddr Attr +pkg debug/dwarf, const AttrSegment Attr +pkg debug/dwarf, const AttrSibling Attr +pkg debug/dwarf, const AttrSpecification Attr +pkg debug/dwarf, const AttrStartScope Attr +pkg debug/dwarf, const AttrStaticLink Attr +pkg debug/dwarf, const AttrStmtList Attr +pkg debug/dwarf, const AttrStride Attr +pkg debug/dwarf, const AttrStrideSize Attr +pkg debug/dwarf, const AttrStringLength Attr +pkg debug/dwarf, const AttrTrampoline Attr +pkg debug/dwarf, const AttrType Attr +pkg debug/dwarf, const AttrUpperBound Attr +pkg debug/dwarf, const AttrUseLocation Attr +pkg debug/dwarf, const AttrUseUTF8 Attr +pkg debug/dwarf, const AttrVarParam Attr +pkg debug/dwarf, const AttrVirtuality Attr +pkg debug/dwarf, const AttrVisibility Attr +pkg debug/dwarf, const AttrVtableElemLoc Attr +pkg debug/dwarf, const TagAccessDeclaration Tag +pkg debug/dwarf, const TagArrayType Tag +pkg debug/dwarf, const TagBaseType Tag +pkg debug/dwarf, const TagCatchDwarfBlock Tag +pkg debug/dwarf, const TagClassType Tag +pkg debug/dwarf, const TagCommonDwarfBlock Tag +pkg debug/dwarf, const TagCommonInclusion Tag +pkg debug/dwarf, const TagCompileUnit Tag +pkg debug/dwarf, const TagConstType Tag +pkg debug/dwarf, const TagConstant Tag +pkg debug/dwarf, const TagDwarfProcedure Tag +pkg debug/dwarf, const TagEntryPoint Tag +pkg debug/dwarf, const TagEnumerationType Tag +pkg debug/dwarf, const TagEnumerator Tag +pkg debug/dwarf, const TagFileType Tag +pkg debug/dwarf, const TagFormalParameter Tag +pkg debug/dwarf, const TagFriend Tag +pkg debug/dwarf, const TagImportedDeclaration Tag +pkg debug/dwarf, const TagImportedModule Tag +pkg debug/dwarf, const TagImportedUnit Tag +pkg debug/dwarf, const TagInheritance Tag +pkg debug/dwarf, const TagInlinedSubroutine Tag +pkg debug/dwarf, const TagInterfaceType Tag +pkg debug/dwarf, const TagLabel Tag +pkg debug/dwarf, const TagLexDwarfBlock Tag +pkg debug/dwarf, const TagMember Tag +pkg debug/dwarf, const TagModule Tag +pkg debug/dwarf, const TagMutableType Tag +pkg debug/dwarf, const TagNamelist Tag +pkg debug/dwarf, const TagNamelistItem Tag +pkg debug/dwarf, const TagNamespace Tag +pkg debug/dwarf, const TagPackedType Tag +pkg debug/dwarf, const TagPartialUnit Tag +pkg debug/dwarf, const TagPointerType Tag +pkg debug/dwarf, const TagPtrToMemberType Tag +pkg debug/dwarf, const TagReferenceType Tag +pkg debug/dwarf, const TagRestrictType Tag +pkg debug/dwarf, const TagSetType Tag +pkg debug/dwarf, const TagStringType Tag +pkg debug/dwarf, const TagStructType Tag +pkg debug/dwarf, const TagSubprogram Tag +pkg debug/dwarf, const TagSubrangeType Tag +pkg debug/dwarf, const TagSubroutineType Tag +pkg debug/dwarf, const TagTemplateTypeParameter Tag +pkg debug/dwarf, const TagTemplateValueParameter Tag +pkg debug/dwarf, const TagThrownType Tag +pkg debug/dwarf, const TagTryDwarfBlock Tag +pkg debug/dwarf, const TagTypedef Tag +pkg debug/dwarf, const TagUnionType Tag +pkg debug/dwarf, const TagUnspecifiedParameters Tag +pkg debug/dwarf, const TagUnspecifiedType Tag +pkg debug/dwarf, const TagVariable Tag +pkg debug/dwarf, const TagVariant Tag +pkg debug/dwarf, const TagVariantPart Tag +pkg debug/dwarf, const TagVolatileType Tag +pkg debug/dwarf, const TagWithStmt Tag +pkg debug/dwarf, func New([]byte) (*Data, error) +pkg debug/dwarf, method (*AddrType) Basic() *BasicType +pkg debug/dwarf, method (*AddrType) Common() *CommonType +pkg debug/dwarf, method (*AddrType) Size() int64 +pkg debug/dwarf, method (*AddrType) String() string +pkg debug/dwarf, method (*ArrayType) Common() *CommonType +pkg debug/dwarf, method (*ArrayType) Size() int64 +pkg debug/dwarf, method (*ArrayType) String() string +pkg debug/dwarf, method (*BasicType) Basic() *BasicType +pkg debug/dwarf, method (*BasicType) Common() *CommonType +pkg debug/dwarf, method (*BasicType) Size() int64 +pkg debug/dwarf, method (*BasicType) String() string +pkg debug/dwarf, method (*BoolType) Basic() *BasicType +pkg debug/dwarf, method (*BoolType) Common() *CommonType +pkg debug/dwarf, method (*BoolType) Size() int64 +pkg debug/dwarf, method (*BoolType) String() string +pkg debug/dwarf, method (*CharType) Basic() *BasicType +pkg debug/dwarf, method (*CharType) Common() *CommonType +pkg debug/dwarf, method (*CharType) Size() int64 +pkg debug/dwarf, method (*CharType) String() string +pkg debug/dwarf, method (*CommonType) Common() *CommonType +pkg debug/dwarf, method (*CommonType) Size() int64 +pkg debug/dwarf, method (*ComplexType) Basic() *BasicType +pkg debug/dwarf, method (*ComplexType) Common() *CommonType +pkg debug/dwarf, method (*ComplexType) Size() int64 +pkg debug/dwarf, method (*ComplexType) String() string +pkg debug/dwarf, method (*Data) Reader() *Reader +pkg debug/dwarf, method (*Data) Type(Offset) (Type, error) +pkg debug/dwarf, method (*DotDotDotType) Common() *CommonType +pkg debug/dwarf, method (*DotDotDotType) Size() int64 +pkg debug/dwarf, method (*DotDotDotType) String() string +pkg debug/dwarf, method (*Entry) Val(Attr) interface{} +pkg debug/dwarf, method (*EnumType) Common() *CommonType +pkg debug/dwarf, method (*EnumType) Size() int64 +pkg debug/dwarf, method (*EnumType) String() string +pkg debug/dwarf, method (*FloatType) Basic() *BasicType +pkg debug/dwarf, method (*FloatType) Common() *CommonType +pkg debug/dwarf, method (*FloatType) Size() int64 +pkg debug/dwarf, method (*FloatType) String() string +pkg debug/dwarf, method (*FuncType) Common() *CommonType +pkg debug/dwarf, method (*FuncType) Size() int64 +pkg debug/dwarf, method (*FuncType) String() string +pkg debug/dwarf, method (*IntType) Basic() *BasicType +pkg debug/dwarf, method (*IntType) Common() *CommonType +pkg debug/dwarf, method (*IntType) Size() int64 +pkg debug/dwarf, method (*IntType) String() string +pkg debug/dwarf, method (*PtrType) Common() *CommonType +pkg debug/dwarf, method (*PtrType) Size() int64 +pkg debug/dwarf, method (*PtrType) String() string +pkg debug/dwarf, method (*QualType) Common() *CommonType +pkg debug/dwarf, method (*QualType) Size() int64 +pkg debug/dwarf, method (*QualType) String() string +pkg debug/dwarf, method (*Reader) Next() (*Entry, error) +pkg debug/dwarf, method (*Reader) Seek(Offset) +pkg debug/dwarf, method (*Reader) SkipChildren() +pkg debug/dwarf, method (*StructType) Common() *CommonType +pkg debug/dwarf, method (*StructType) Defn() string +pkg debug/dwarf, method (*StructType) Size() int64 +pkg debug/dwarf, method (*StructType) String() string +pkg debug/dwarf, method (*TypedefType) Common() *CommonType +pkg debug/dwarf, method (*TypedefType) Size() int64 +pkg debug/dwarf, method (*TypedefType) String() string +pkg debug/dwarf, method (*UcharType) Basic() *BasicType +pkg debug/dwarf, method (*UcharType) Common() *CommonType +pkg debug/dwarf, method (*UcharType) Size() int64 +pkg debug/dwarf, method (*UcharType) String() string +pkg debug/dwarf, method (*UintType) Basic() *BasicType +pkg debug/dwarf, method (*UintType) Common() *CommonType +pkg debug/dwarf, method (*UintType) Size() int64 +pkg debug/dwarf, method (*UintType) String() string +pkg debug/dwarf, method (*VoidType) Common() *CommonType +pkg debug/dwarf, method (*VoidType) Size() int64 +pkg debug/dwarf, method (*VoidType) String() string +pkg debug/dwarf, method (Attr) GoString() string +pkg debug/dwarf, method (Attr) String() string +pkg debug/dwarf, method (DecodeError) Error() string +pkg debug/dwarf, method (Tag) GoString() string +pkg debug/dwarf, method (Tag) String() string +pkg debug/dwarf, type AddrType struct +pkg debug/dwarf, type AddrType struct, embedded BasicType +pkg debug/dwarf, type ArrayType struct +pkg debug/dwarf, type ArrayType struct, Count int64 +pkg debug/dwarf, type ArrayType struct, StrideBitSize int64 +pkg debug/dwarf, type ArrayType struct, Type Type +pkg debug/dwarf, type ArrayType struct, embedded CommonType +pkg debug/dwarf, type Attr uint32 +pkg debug/dwarf, type BasicType struct +pkg debug/dwarf, type BasicType struct, BitOffset int64 +pkg debug/dwarf, type BasicType struct, BitSize int64 +pkg debug/dwarf, type BasicType struct, embedded CommonType +pkg debug/dwarf, type BoolType struct +pkg debug/dwarf, type BoolType struct, embedded BasicType +pkg debug/dwarf, type CharType struct +pkg debug/dwarf, type CharType struct, embedded BasicType +pkg debug/dwarf, type CommonType struct +pkg debug/dwarf, type CommonType struct, ByteSize int64 +pkg debug/dwarf, type CommonType struct, Name string +pkg debug/dwarf, type ComplexType struct +pkg debug/dwarf, type ComplexType struct, embedded BasicType +pkg debug/dwarf, type Data struct +pkg debug/dwarf, type DecodeError struct +pkg debug/dwarf, type DecodeError struct, Err string +pkg debug/dwarf, type DecodeError struct, Name string +pkg debug/dwarf, type DecodeError struct, Offset Offset +pkg debug/dwarf, type DotDotDotType struct +pkg debug/dwarf, type DotDotDotType struct, embedded CommonType +pkg debug/dwarf, type Entry struct +pkg debug/dwarf, type Entry struct, Children bool +pkg debug/dwarf, type Entry struct, Field []Field +pkg debug/dwarf, type Entry struct, Offset Offset +pkg debug/dwarf, type Entry struct, Tag Tag +pkg debug/dwarf, type EnumType struct +pkg debug/dwarf, type EnumType struct, EnumName string +pkg debug/dwarf, type EnumType struct, Val []*EnumValue +pkg debug/dwarf, type EnumType struct, embedded CommonType +pkg debug/dwarf, type EnumValue struct +pkg debug/dwarf, type EnumValue struct, Name string +pkg debug/dwarf, type EnumValue struct, Val int64 +pkg debug/dwarf, type Field struct +pkg debug/dwarf, type Field struct, Attr Attr +pkg debug/dwarf, type Field struct, Val interface{} +pkg debug/dwarf, type FloatType struct +pkg debug/dwarf, type FloatType struct, embedded BasicType +pkg debug/dwarf, type FuncType struct +pkg debug/dwarf, type FuncType struct, ParamType []Type +pkg debug/dwarf, type FuncType struct, ReturnType Type +pkg debug/dwarf, type FuncType struct, embedded CommonType +pkg debug/dwarf, type IntType struct +pkg debug/dwarf, type IntType struct, embedded BasicType +pkg debug/dwarf, type Offset uint32 +pkg debug/dwarf, type PtrType struct +pkg debug/dwarf, type PtrType struct, Type Type +pkg debug/dwarf, type PtrType struct, embedded CommonType +pkg debug/dwarf, type QualType struct +pkg debug/dwarf, type QualType struct, Qual string +pkg debug/dwarf, type QualType struct, Type Type +pkg debug/dwarf, type QualType struct, embedded CommonType +pkg debug/dwarf, type Reader struct +pkg debug/dwarf, type StructField struct +pkg debug/dwarf, type StructField struct, BitOffset int64 +pkg debug/dwarf, type StructField struct, BitSize int64 +pkg debug/dwarf, type StructField struct, ByteOffset int64 +pkg debug/dwarf, type StructField struct, ByteSize int64 +pkg debug/dwarf, type StructField struct, Name string +pkg debug/dwarf, type StructField struct, Type Type +pkg debug/dwarf, type StructType struct +pkg debug/dwarf, type StructType struct, Field []*StructField +pkg debug/dwarf, type StructType struct, Incomplete bool +pkg debug/dwarf, type StructType struct, Kind string +pkg debug/dwarf, type StructType struct, StructName string +pkg debug/dwarf, type StructType struct, embedded CommonType +pkg debug/dwarf, type Tag uint32 +pkg debug/dwarf, type Type interface { Common, Size, String } +pkg debug/dwarf, type Type interface, Common() *CommonType +pkg debug/dwarf, type Type interface, Size() int64 +pkg debug/dwarf, type Type interface, String() string +pkg debug/dwarf, type TypedefType struct +pkg debug/dwarf, type TypedefType struct, Type Type +pkg debug/dwarf, type TypedefType struct, embedded CommonType +pkg debug/dwarf, type UcharType struct +pkg debug/dwarf, type UcharType struct, embedded BasicType +pkg debug/dwarf, type UintType struct +pkg debug/dwarf, type UintType struct, embedded BasicType +pkg debug/dwarf, type VoidType struct +pkg debug/dwarf, type VoidType struct, embedded CommonType +pkg debug/elf, const ARM_MAGIC_TRAMP_NUMBER ideal-int +pkg debug/elf, const DF_BIND_NOW DynFlag +pkg debug/elf, const DF_ORIGIN DynFlag +pkg debug/elf, const DF_STATIC_TLS DynFlag +pkg debug/elf, const DF_SYMBOLIC DynFlag +pkg debug/elf, const DF_TEXTREL DynFlag +pkg debug/elf, const DT_BIND_NOW DynTag +pkg debug/elf, const DT_DEBUG DynTag +pkg debug/elf, const DT_ENCODING DynTag +pkg debug/elf, const DT_FINI DynTag +pkg debug/elf, const DT_FINI_ARRAY DynTag +pkg debug/elf, const DT_FINI_ARRAYSZ DynTag +pkg debug/elf, const DT_FLAGS DynTag +pkg debug/elf, const DT_HASH DynTag +pkg debug/elf, const DT_HIOS DynTag +pkg debug/elf, const DT_HIPROC DynTag +pkg debug/elf, const DT_INIT DynTag +pkg debug/elf, const DT_INIT_ARRAY DynTag +pkg debug/elf, const DT_INIT_ARRAYSZ DynTag +pkg debug/elf, const DT_JMPREL DynTag +pkg debug/elf, const DT_LOOS DynTag +pkg debug/elf, const DT_LOPROC DynTag +pkg debug/elf, const DT_NEEDED DynTag +pkg debug/elf, const DT_NULL DynTag +pkg debug/elf, const DT_PLTGOT DynTag +pkg debug/elf, const DT_PLTREL DynTag +pkg debug/elf, const DT_PLTRELSZ DynTag +pkg debug/elf, const DT_PREINIT_ARRAY DynTag +pkg debug/elf, const DT_PREINIT_ARRAYSZ DynTag +pkg debug/elf, const DT_REL DynTag +pkg debug/elf, const DT_RELA DynTag +pkg debug/elf, const DT_RELAENT DynTag +pkg debug/elf, const DT_RELASZ DynTag +pkg debug/elf, const DT_RELENT DynTag +pkg debug/elf, const DT_RELSZ DynTag +pkg debug/elf, const DT_RPATH DynTag +pkg debug/elf, const DT_RUNPATH DynTag +pkg debug/elf, const DT_SONAME DynTag +pkg debug/elf, const DT_STRSZ DynTag +pkg debug/elf, const DT_STRTAB DynTag +pkg debug/elf, const DT_SYMBOLIC DynTag +pkg debug/elf, const DT_SYMENT DynTag +pkg debug/elf, const DT_SYMTAB DynTag +pkg debug/elf, const DT_TEXTREL DynTag +pkg debug/elf, const DT_VERNEED DynTag +pkg debug/elf, const DT_VERNEEDNUM DynTag +pkg debug/elf, const DT_VERSYM DynTag +pkg debug/elf, const EI_ABIVERSION ideal-int +pkg debug/elf, const EI_CLASS ideal-int +pkg debug/elf, const EI_DATA ideal-int +pkg debug/elf, const EI_NIDENT ideal-int +pkg debug/elf, const EI_OSABI ideal-int +pkg debug/elf, const EI_PAD ideal-int +pkg debug/elf, const EI_VERSION ideal-int +pkg debug/elf, const ELFCLASS32 Class +pkg debug/elf, const ELFCLASS64 Class +pkg debug/elf, const ELFCLASSNONE Class +pkg debug/elf, const ELFDATA2LSB Data +pkg debug/elf, const ELFDATA2MSB Data +pkg debug/elf, const ELFDATANONE Data +pkg debug/elf, const ELFMAG ideal-string +pkg debug/elf, const ELFOSABI_86OPEN OSABI +pkg debug/elf, const ELFOSABI_AIX OSABI +pkg debug/elf, const ELFOSABI_ARM OSABI +pkg debug/elf, const ELFOSABI_FREEBSD OSABI +pkg debug/elf, const ELFOSABI_HPUX OSABI +pkg debug/elf, const ELFOSABI_HURD OSABI +pkg debug/elf, const ELFOSABI_IRIX OSABI +pkg debug/elf, const ELFOSABI_LINUX OSABI +pkg debug/elf, const ELFOSABI_MODESTO OSABI +pkg debug/elf, const ELFOSABI_NETBSD OSABI +pkg debug/elf, const ELFOSABI_NONE OSABI +pkg debug/elf, const ELFOSABI_NSK OSABI +pkg debug/elf, const ELFOSABI_OPENBSD OSABI +pkg debug/elf, const ELFOSABI_OPENVMS OSABI +pkg debug/elf, const ELFOSABI_SOLARIS OSABI +pkg debug/elf, const ELFOSABI_STANDALONE OSABI +pkg debug/elf, const ELFOSABI_TRU64 OSABI +pkg debug/elf, const EM_386 Machine +pkg debug/elf, const EM_486 Machine +pkg debug/elf, const EM_68HC12 Machine +pkg debug/elf, const EM_68K Machine +pkg debug/elf, const EM_860 Machine +pkg debug/elf, const EM_88K Machine +pkg debug/elf, const EM_960 Machine +pkg debug/elf, const EM_ALPHA Machine +pkg debug/elf, const EM_ALPHA_STD Machine +pkg debug/elf, const EM_ARC Machine +pkg debug/elf, const EM_ARM Machine +pkg debug/elf, const EM_COLDFIRE Machine +pkg debug/elf, const EM_FR20 Machine +pkg debug/elf, const EM_H8S Machine +pkg debug/elf, const EM_H8_300 Machine +pkg debug/elf, const EM_H8_300H Machine +pkg debug/elf, const EM_H8_500 Machine +pkg debug/elf, const EM_IA_64 Machine +pkg debug/elf, const EM_M32 Machine +pkg debug/elf, const EM_ME16 Machine +pkg debug/elf, const EM_MIPS Machine +pkg debug/elf, const EM_MIPS_RS3_LE Machine +pkg debug/elf, const EM_MIPS_RS4_BE Machine +pkg debug/elf, const EM_MIPS_X Machine +pkg debug/elf, const EM_MMA Machine +pkg debug/elf, const EM_NCPU Machine +pkg debug/elf, const EM_NDR1 Machine +pkg debug/elf, const EM_NONE Machine +pkg debug/elf, const EM_PARISC Machine +pkg debug/elf, const EM_PCP Machine +pkg debug/elf, const EM_PPC Machine +pkg debug/elf, const EM_PPC64 Machine +pkg debug/elf, const EM_RCE Machine +pkg debug/elf, const EM_RH32 Machine +pkg debug/elf, const EM_S370 Machine +pkg debug/elf, const EM_S390 Machine +pkg debug/elf, const EM_SH Machine +pkg debug/elf, const EM_SPARC Machine +pkg debug/elf, const EM_SPARC32PLUS Machine +pkg debug/elf, const EM_SPARCV9 Machine +pkg debug/elf, const EM_ST100 Machine +pkg debug/elf, const EM_STARCORE Machine +pkg debug/elf, const EM_TINYJ Machine +pkg debug/elf, const EM_TRICORE Machine +pkg debug/elf, const EM_V800 Machine +pkg debug/elf, const EM_VPP500 Machine +pkg debug/elf, const EM_X86_64 Machine +pkg debug/elf, const ET_CORE Type +pkg debug/elf, const ET_DYN Type +pkg debug/elf, const ET_EXEC Type +pkg debug/elf, const ET_HIOS Type +pkg debug/elf, const ET_HIPROC Type +pkg debug/elf, const ET_LOOS Type +pkg debug/elf, const ET_LOPROC Type +pkg debug/elf, const ET_NONE Type +pkg debug/elf, const ET_REL Type +pkg debug/elf, const EV_CURRENT Version +pkg debug/elf, const EV_NONE Version +pkg debug/elf, const NT_FPREGSET NType +pkg debug/elf, const NT_PRPSINFO NType +pkg debug/elf, const NT_PRSTATUS NType +pkg debug/elf, const PF_MASKOS ProgFlag +pkg debug/elf, const PF_MASKPROC ProgFlag +pkg debug/elf, const PF_R ProgFlag +pkg debug/elf, const PF_W ProgFlag +pkg debug/elf, const PF_X ProgFlag +pkg debug/elf, const PT_DYNAMIC ProgType +pkg debug/elf, const PT_HIOS ProgType +pkg debug/elf, const PT_HIPROC ProgType +pkg debug/elf, const PT_INTERP ProgType +pkg debug/elf, const PT_LOAD ProgType +pkg debug/elf, const PT_LOOS ProgType +pkg debug/elf, const PT_LOPROC ProgType +pkg debug/elf, const PT_NOTE ProgType +pkg debug/elf, const PT_NULL ProgType +pkg debug/elf, const PT_PHDR ProgType +pkg debug/elf, const PT_SHLIB ProgType +pkg debug/elf, const PT_TLS ProgType +pkg debug/elf, const R_386_32 R_386 +pkg debug/elf, const R_386_COPY R_386 +pkg debug/elf, const R_386_GLOB_DAT R_386 +pkg debug/elf, const R_386_GOT32 R_386 +pkg debug/elf, const R_386_GOTOFF R_386 +pkg debug/elf, const R_386_GOTPC R_386 +pkg debug/elf, const R_386_JMP_SLOT R_386 +pkg debug/elf, const R_386_NONE R_386 +pkg debug/elf, const R_386_PC32 R_386 +pkg debug/elf, const R_386_PLT32 R_386 +pkg debug/elf, const R_386_RELATIVE R_386 +pkg debug/elf, const R_386_TLS_DTPMOD32 R_386 +pkg debug/elf, const R_386_TLS_DTPOFF32 R_386 +pkg debug/elf, const R_386_TLS_GD R_386 +pkg debug/elf, const R_386_TLS_GD_32 R_386 +pkg debug/elf, const R_386_TLS_GD_CALL R_386 +pkg debug/elf, const R_386_TLS_GD_POP R_386 +pkg debug/elf, const R_386_TLS_GD_PUSH R_386 +pkg debug/elf, const R_386_TLS_GOTIE R_386 +pkg debug/elf, const R_386_TLS_IE R_386 +pkg debug/elf, const R_386_TLS_IE_32 R_386 +pkg debug/elf, const R_386_TLS_LDM R_386 +pkg debug/elf, const R_386_TLS_LDM_32 R_386 +pkg debug/elf, const R_386_TLS_LDM_CALL R_386 +pkg debug/elf, const R_386_TLS_LDM_POP R_386 +pkg debug/elf, const R_386_TLS_LDM_PUSH R_386 +pkg debug/elf, const R_386_TLS_LDO_32 R_386 +pkg debug/elf, const R_386_TLS_LE R_386 +pkg debug/elf, const R_386_TLS_LE_32 R_386 +pkg debug/elf, const R_386_TLS_TPOFF R_386 +pkg debug/elf, const R_386_TLS_TPOFF32 R_386 +pkg debug/elf, const R_ALPHA_BRADDR R_ALPHA +pkg debug/elf, const R_ALPHA_COPY R_ALPHA +pkg debug/elf, const R_ALPHA_GLOB_DAT R_ALPHA +pkg debug/elf, const R_ALPHA_GPDISP R_ALPHA +pkg debug/elf, const R_ALPHA_GPREL32 R_ALPHA +pkg debug/elf, const R_ALPHA_GPRELHIGH R_ALPHA +pkg debug/elf, const R_ALPHA_GPRELLOW R_ALPHA +pkg debug/elf, const R_ALPHA_GPVALUE R_ALPHA +pkg debug/elf, const R_ALPHA_HINT R_ALPHA +pkg debug/elf, const R_ALPHA_IMMED_BR_HI32 R_ALPHA +pkg debug/elf, const R_ALPHA_IMMED_GP_16 R_ALPHA +pkg debug/elf, const R_ALPHA_IMMED_GP_HI32 R_ALPHA +pkg debug/elf, const R_ALPHA_IMMED_LO32 R_ALPHA +pkg debug/elf, const R_ALPHA_IMMED_SCN_HI32 R_ALPHA +pkg debug/elf, const R_ALPHA_JMP_SLOT R_ALPHA +pkg debug/elf, const R_ALPHA_LITERAL R_ALPHA +pkg debug/elf, const R_ALPHA_LITUSE R_ALPHA +pkg debug/elf, const R_ALPHA_NONE R_ALPHA +pkg debug/elf, const R_ALPHA_OP_PRSHIFT R_ALPHA +pkg debug/elf, const R_ALPHA_OP_PSUB R_ALPHA +pkg debug/elf, const R_ALPHA_OP_PUSH R_ALPHA +pkg debug/elf, const R_ALPHA_OP_STORE R_ALPHA +pkg debug/elf, const R_ALPHA_REFLONG R_ALPHA +pkg debug/elf, const R_ALPHA_REFQUAD R_ALPHA +pkg debug/elf, const R_ALPHA_RELATIVE R_ALPHA +pkg debug/elf, const R_ALPHA_SREL16 R_ALPHA +pkg debug/elf, const R_ALPHA_SREL32 R_ALPHA +pkg debug/elf, const R_ALPHA_SREL64 R_ALPHA +pkg debug/elf, const R_ARM_ABS12 R_ARM +pkg debug/elf, const R_ARM_ABS16 R_ARM +pkg debug/elf, const R_ARM_ABS32 R_ARM +pkg debug/elf, const R_ARM_ABS8 R_ARM +pkg debug/elf, const R_ARM_AMP_VCALL9 R_ARM +pkg debug/elf, const R_ARM_COPY R_ARM +pkg debug/elf, const R_ARM_GLOB_DAT R_ARM +pkg debug/elf, const R_ARM_GNU_VTENTRY R_ARM +pkg debug/elf, const R_ARM_GNU_VTINHERIT R_ARM +pkg debug/elf, const R_ARM_GOT32 R_ARM +pkg debug/elf, const R_ARM_GOTOFF R_ARM +pkg debug/elf, const R_ARM_GOTPC R_ARM +pkg debug/elf, const R_ARM_JUMP_SLOT R_ARM +pkg debug/elf, const R_ARM_NONE R_ARM +pkg debug/elf, const R_ARM_PC13 R_ARM +pkg debug/elf, const R_ARM_PC24 R_ARM +pkg debug/elf, const R_ARM_PLT32 R_ARM +pkg debug/elf, const R_ARM_RABS32 R_ARM +pkg debug/elf, const R_ARM_RBASE R_ARM +pkg debug/elf, const R_ARM_REL32 R_ARM +pkg debug/elf, const R_ARM_RELATIVE R_ARM +pkg debug/elf, const R_ARM_RPC24 R_ARM +pkg debug/elf, const R_ARM_RREL32 R_ARM +pkg debug/elf, const R_ARM_RSBREL32 R_ARM +pkg debug/elf, const R_ARM_SBREL32 R_ARM +pkg debug/elf, const R_ARM_SWI24 R_ARM +pkg debug/elf, const R_ARM_THM_ABS5 R_ARM +pkg debug/elf, const R_ARM_THM_PC22 R_ARM +pkg debug/elf, const R_ARM_THM_PC8 R_ARM +pkg debug/elf, const R_ARM_THM_RPC22 R_ARM +pkg debug/elf, const R_ARM_THM_SWI8 R_ARM +pkg debug/elf, const R_ARM_THM_XPC22 R_ARM +pkg debug/elf, const R_ARM_XPC25 R_ARM +pkg debug/elf, const R_PPC_ADDR14 R_PPC +pkg debug/elf, const R_PPC_ADDR14_BRNTAKEN R_PPC +pkg debug/elf, const R_PPC_ADDR14_BRTAKEN R_PPC +pkg debug/elf, const R_PPC_ADDR16 R_PPC +pkg debug/elf, const R_PPC_ADDR16_HA R_PPC +pkg debug/elf, const R_PPC_ADDR16_HI R_PPC +pkg debug/elf, const R_PPC_ADDR16_LO R_PPC +pkg debug/elf, const R_PPC_ADDR24 R_PPC +pkg debug/elf, const R_PPC_ADDR32 R_PPC +pkg debug/elf, const R_PPC_COPY R_PPC +pkg debug/elf, const R_PPC_DTPMOD32 R_PPC +pkg debug/elf, const R_PPC_DTPREL16 R_PPC +pkg debug/elf, const R_PPC_DTPREL16_HA R_PPC +pkg debug/elf, const R_PPC_DTPREL16_HI R_PPC +pkg debug/elf, const R_PPC_DTPREL16_LO R_PPC +pkg debug/elf, const R_PPC_DTPREL32 R_PPC +pkg debug/elf, const R_PPC_EMB_BIT_FLD R_PPC +pkg debug/elf, const R_PPC_EMB_MRKREF R_PPC +pkg debug/elf, const R_PPC_EMB_NADDR16 R_PPC +pkg debug/elf, const R_PPC_EMB_NADDR16_HA R_PPC +pkg debug/elf, const R_PPC_EMB_NADDR16_HI R_PPC +pkg debug/elf, const R_PPC_EMB_NADDR16_LO R_PPC +pkg debug/elf, const R_PPC_EMB_NADDR32 R_PPC +pkg debug/elf, const R_PPC_EMB_RELSDA R_PPC +pkg debug/elf, const R_PPC_EMB_RELSEC16 R_PPC +pkg debug/elf, const R_PPC_EMB_RELST_HA R_PPC +pkg debug/elf, const R_PPC_EMB_RELST_HI R_PPC +pkg debug/elf, const R_PPC_EMB_RELST_LO R_PPC +pkg debug/elf, const R_PPC_EMB_SDA21 R_PPC +pkg debug/elf, const R_PPC_EMB_SDA2I16 R_PPC +pkg debug/elf, const R_PPC_EMB_SDA2REL R_PPC +pkg debug/elf, const R_PPC_EMB_SDAI16 R_PPC +pkg debug/elf, const R_PPC_GLOB_DAT R_PPC +pkg debug/elf, const R_PPC_GOT16 R_PPC +pkg debug/elf, const R_PPC_GOT16_HA R_PPC +pkg debug/elf, const R_PPC_GOT16_HI R_PPC +pkg debug/elf, const R_PPC_GOT16_LO R_PPC +pkg debug/elf, const R_PPC_GOT_TLSGD16 R_PPC +pkg debug/elf, const R_PPC_GOT_TLSGD16_HA R_PPC +pkg debug/elf, const R_PPC_GOT_TLSGD16_HI R_PPC +pkg debug/elf, const R_PPC_GOT_TLSGD16_LO R_PPC +pkg debug/elf, const R_PPC_GOT_TLSLD16 R_PPC +pkg debug/elf, const R_PPC_GOT_TLSLD16_HA R_PPC +pkg debug/elf, const R_PPC_GOT_TLSLD16_HI R_PPC +pkg debug/elf, const R_PPC_GOT_TLSLD16_LO R_PPC +pkg debug/elf, const R_PPC_GOT_TPREL16 R_PPC +pkg debug/elf, const R_PPC_GOT_TPREL16_HA R_PPC +pkg debug/elf, const R_PPC_GOT_TPREL16_HI R_PPC +pkg debug/elf, const R_PPC_GOT_TPREL16_LO R_PPC +pkg debug/elf, const R_PPC_JMP_SLOT R_PPC +pkg debug/elf, const R_PPC_LOCAL24PC R_PPC +pkg debug/elf, const R_PPC_NONE R_PPC +pkg debug/elf, const R_PPC_PLT16_HA R_PPC +pkg debug/elf, const R_PPC_PLT16_HI R_PPC +pkg debug/elf, const R_PPC_PLT16_LO R_PPC +pkg debug/elf, const R_PPC_PLT32 R_PPC +pkg debug/elf, const R_PPC_PLTREL24 R_PPC +pkg debug/elf, const R_PPC_PLTREL32 R_PPC +pkg debug/elf, const R_PPC_REL14 R_PPC +pkg debug/elf, const R_PPC_REL14_BRNTAKEN R_PPC +pkg debug/elf, const R_PPC_REL14_BRTAKEN R_PPC +pkg debug/elf, const R_PPC_REL24 R_PPC +pkg debug/elf, const R_PPC_REL32 R_PPC +pkg debug/elf, const R_PPC_RELATIVE R_PPC +pkg debug/elf, const R_PPC_SDAREL16 R_PPC +pkg debug/elf, const R_PPC_SECTOFF R_PPC +pkg debug/elf, const R_PPC_SECTOFF_HA R_PPC +pkg debug/elf, const R_PPC_SECTOFF_HI R_PPC +pkg debug/elf, const R_PPC_SECTOFF_LO R_PPC +pkg debug/elf, const R_PPC_TLS R_PPC +pkg debug/elf, const R_PPC_TPREL16 R_PPC +pkg debug/elf, const R_PPC_TPREL16_HA R_PPC +pkg debug/elf, const R_PPC_TPREL16_HI R_PPC +pkg debug/elf, const R_PPC_TPREL16_LO R_PPC +pkg debug/elf, const R_PPC_TPREL32 R_PPC +pkg debug/elf, const R_PPC_UADDR16 R_PPC +pkg debug/elf, const R_PPC_UADDR32 R_PPC +pkg debug/elf, const R_SPARC_10 R_SPARC +pkg debug/elf, const R_SPARC_11 R_SPARC +pkg debug/elf, const R_SPARC_13 R_SPARC +pkg debug/elf, const R_SPARC_16 R_SPARC +pkg debug/elf, const R_SPARC_22 R_SPARC +pkg debug/elf, const R_SPARC_32 R_SPARC +pkg debug/elf, const R_SPARC_5 R_SPARC +pkg debug/elf, const R_SPARC_6 R_SPARC +pkg debug/elf, const R_SPARC_64 R_SPARC +pkg debug/elf, const R_SPARC_7 R_SPARC +pkg debug/elf, const R_SPARC_8 R_SPARC +pkg debug/elf, const R_SPARC_COPY R_SPARC +pkg debug/elf, const R_SPARC_DISP16 R_SPARC +pkg debug/elf, const R_SPARC_DISP32 R_SPARC +pkg debug/elf, const R_SPARC_DISP64 R_SPARC +pkg debug/elf, const R_SPARC_DISP8 R_SPARC +pkg debug/elf, const R_SPARC_GLOB_DAT R_SPARC +pkg debug/elf, const R_SPARC_GLOB_JMP R_SPARC +pkg debug/elf, const R_SPARC_GOT10 R_SPARC +pkg debug/elf, const R_SPARC_GOT13 R_SPARC +pkg debug/elf, const R_SPARC_GOT22 R_SPARC +pkg debug/elf, const R_SPARC_H44 R_SPARC +pkg debug/elf, const R_SPARC_HH22 R_SPARC +pkg debug/elf, const R_SPARC_HI22 R_SPARC +pkg debug/elf, const R_SPARC_HIPLT22 R_SPARC +pkg debug/elf, const R_SPARC_HIX22 R_SPARC +pkg debug/elf, const R_SPARC_HM10 R_SPARC +pkg debug/elf, const R_SPARC_JMP_SLOT R_SPARC +pkg debug/elf, const R_SPARC_L44 R_SPARC +pkg debug/elf, const R_SPARC_LM22 R_SPARC +pkg debug/elf, const R_SPARC_LO10 R_SPARC +pkg debug/elf, const R_SPARC_LOPLT10 R_SPARC +pkg debug/elf, const R_SPARC_LOX10 R_SPARC +pkg debug/elf, const R_SPARC_M44 R_SPARC +pkg debug/elf, const R_SPARC_NONE R_SPARC +pkg debug/elf, const R_SPARC_OLO10 R_SPARC +pkg debug/elf, const R_SPARC_PC10 R_SPARC +pkg debug/elf, const R_SPARC_PC22 R_SPARC +pkg debug/elf, const R_SPARC_PCPLT10 R_SPARC +pkg debug/elf, const R_SPARC_PCPLT22 R_SPARC +pkg debug/elf, const R_SPARC_PCPLT32 R_SPARC +pkg debug/elf, const R_SPARC_PC_HH22 R_SPARC +pkg debug/elf, const R_SPARC_PC_HM10 R_SPARC +pkg debug/elf, const R_SPARC_PC_LM22 R_SPARC +pkg debug/elf, const R_SPARC_PLT32 R_SPARC +pkg debug/elf, const R_SPARC_PLT64 R_SPARC +pkg debug/elf, const R_SPARC_REGISTER R_SPARC +pkg debug/elf, const R_SPARC_RELATIVE R_SPARC +pkg debug/elf, const R_SPARC_UA16 R_SPARC +pkg debug/elf, const R_SPARC_UA32 R_SPARC +pkg debug/elf, const R_SPARC_UA64 R_SPARC +pkg debug/elf, const R_SPARC_WDISP16 R_SPARC +pkg debug/elf, const R_SPARC_WDISP19 R_SPARC +pkg debug/elf, const R_SPARC_WDISP22 R_SPARC +pkg debug/elf, const R_SPARC_WDISP30 R_SPARC +pkg debug/elf, const R_SPARC_WPLT30 R_SPARC +pkg debug/elf, const R_X86_64_16 R_X86_64 +pkg debug/elf, const R_X86_64_32 R_X86_64 +pkg debug/elf, const R_X86_64_32S R_X86_64 +pkg debug/elf, const R_X86_64_64 R_X86_64 +pkg debug/elf, const R_X86_64_8 R_X86_64 +pkg debug/elf, const R_X86_64_COPY R_X86_64 +pkg debug/elf, const R_X86_64_DTPMOD64 R_X86_64 +pkg debug/elf, const R_X86_64_DTPOFF32 R_X86_64 +pkg debug/elf, const R_X86_64_DTPOFF64 R_X86_64 +pkg debug/elf, const R_X86_64_GLOB_DAT R_X86_64 +pkg debug/elf, const R_X86_64_GOT32 R_X86_64 +pkg debug/elf, const R_X86_64_GOTPCREL R_X86_64 +pkg debug/elf, const R_X86_64_GOTTPOFF R_X86_64 +pkg debug/elf, const R_X86_64_JMP_SLOT R_X86_64 +pkg debug/elf, const R_X86_64_NONE R_X86_64 +pkg debug/elf, const R_X86_64_PC16 R_X86_64 +pkg debug/elf, const R_X86_64_PC32 R_X86_64 +pkg debug/elf, const R_X86_64_PC8 R_X86_64 +pkg debug/elf, const R_X86_64_PLT32 R_X86_64 +pkg debug/elf, const R_X86_64_RELATIVE R_X86_64 +pkg debug/elf, const R_X86_64_TLSGD R_X86_64 +pkg debug/elf, const R_X86_64_TLSLD R_X86_64 +pkg debug/elf, const R_X86_64_TPOFF32 R_X86_64 +pkg debug/elf, const R_X86_64_TPOFF64 R_X86_64 +pkg debug/elf, const SHF_ALLOC SectionFlag +pkg debug/elf, const SHF_EXECINSTR SectionFlag +pkg debug/elf, const SHF_GROUP SectionFlag +pkg debug/elf, const SHF_INFO_LINK SectionFlag +pkg debug/elf, const SHF_LINK_ORDER SectionFlag +pkg debug/elf, const SHF_MASKOS SectionFlag +pkg debug/elf, const SHF_MASKPROC SectionFlag +pkg debug/elf, const SHF_MERGE SectionFlag +pkg debug/elf, const SHF_OS_NONCONFORMING SectionFlag +pkg debug/elf, const SHF_STRINGS SectionFlag +pkg debug/elf, const SHF_TLS SectionFlag +pkg debug/elf, const SHF_WRITE SectionFlag +pkg debug/elf, const SHN_ABS SectionIndex +pkg debug/elf, const SHN_COMMON SectionIndex +pkg debug/elf, const SHN_HIOS SectionIndex +pkg debug/elf, const SHN_HIPROC SectionIndex +pkg debug/elf, const SHN_HIRESERVE SectionIndex +pkg debug/elf, const SHN_LOOS SectionIndex +pkg debug/elf, const SHN_LOPROC SectionIndex +pkg debug/elf, const SHN_LORESERVE SectionIndex +pkg debug/elf, const SHN_UNDEF SectionIndex +pkg debug/elf, const SHN_XINDEX SectionIndex +pkg debug/elf, const SHT_DYNAMIC SectionType +pkg debug/elf, const SHT_DYNSYM SectionType +pkg debug/elf, const SHT_FINI_ARRAY SectionType +pkg debug/elf, const SHT_GNU_ATTRIBUTES SectionType +pkg debug/elf, const SHT_GNU_HASH SectionType +pkg debug/elf, const SHT_GNU_LIBLIST SectionType +pkg debug/elf, const SHT_GNU_VERDEF SectionType +pkg debug/elf, const SHT_GNU_VERNEED SectionType +pkg debug/elf, const SHT_GNU_VERSYM SectionType +pkg debug/elf, const SHT_GROUP SectionType +pkg debug/elf, const SHT_HASH SectionType +pkg debug/elf, const SHT_HIOS SectionType +pkg debug/elf, const SHT_HIPROC SectionType +pkg debug/elf, const SHT_HIUSER SectionType +pkg debug/elf, const SHT_INIT_ARRAY SectionType +pkg debug/elf, const SHT_LOOS SectionType +pkg debug/elf, const SHT_LOPROC SectionType +pkg debug/elf, const SHT_LOUSER SectionType +pkg debug/elf, const SHT_NOBITS SectionType +pkg debug/elf, const SHT_NOTE SectionType +pkg debug/elf, const SHT_NULL SectionType +pkg debug/elf, const SHT_PREINIT_ARRAY SectionType +pkg debug/elf, const SHT_PROGBITS SectionType +pkg debug/elf, const SHT_REL SectionType +pkg debug/elf, const SHT_RELA SectionType +pkg debug/elf, const SHT_SHLIB SectionType +pkg debug/elf, const SHT_STRTAB SectionType +pkg debug/elf, const SHT_SYMTAB SectionType +pkg debug/elf, const SHT_SYMTAB_SHNDX SectionType +pkg debug/elf, const STB_GLOBAL SymBind +pkg debug/elf, const STB_HIOS SymBind +pkg debug/elf, const STB_HIPROC SymBind +pkg debug/elf, const STB_LOCAL SymBind +pkg debug/elf, const STB_LOOS SymBind +pkg debug/elf, const STB_LOPROC SymBind +pkg debug/elf, const STB_WEAK SymBind +pkg debug/elf, const STT_COMMON SymType +pkg debug/elf, const STT_FILE SymType +pkg debug/elf, const STT_FUNC SymType +pkg debug/elf, const STT_HIOS SymType +pkg debug/elf, const STT_HIPROC SymType +pkg debug/elf, const STT_LOOS SymType +pkg debug/elf, const STT_LOPROC SymType +pkg debug/elf, const STT_NOTYPE SymType +pkg debug/elf, const STT_OBJECT SymType +pkg debug/elf, const STT_SECTION SymType +pkg debug/elf, const STT_TLS SymType +pkg debug/elf, const STV_DEFAULT SymVis +pkg debug/elf, const STV_HIDDEN SymVis +pkg debug/elf, const STV_INTERNAL SymVis +pkg debug/elf, const STV_PROTECTED SymVis +pkg debug/elf, const Sym32Size ideal-int +pkg debug/elf, const Sym64Size ideal-int +pkg debug/elf, func NewFile(io.ReaderAt) (*File, error) +pkg debug/elf, func Open(string) (*File, error) +pkg debug/elf, func R_INFO(uint32) uint64 +pkg debug/elf, func R_INFO32(uint32) uint32 +pkg debug/elf, func R_SYM32(uint32) uint32 +pkg debug/elf, func R_SYM64(uint64) uint32 +pkg debug/elf, func R_TYPE32(uint32) uint32 +pkg debug/elf, func R_TYPE64(uint64) uint32 +pkg debug/elf, func ST_BIND(uint8) SymBind +pkg debug/elf, func ST_INFO(SymBind, SymType) uint8 +pkg debug/elf, func ST_TYPE(uint8) SymType +pkg debug/elf, func ST_VISIBILITY(uint8) SymVis +pkg debug/elf, method (*File) Close() error +pkg debug/elf, method (*File) DWARF() (*dwarf.Data, error) +pkg debug/elf, method (*File) ImportedLibraries() ([]string, error) +pkg debug/elf, method (*File) ImportedSymbols() ([]ImportedSymbol, error) +pkg debug/elf, method (*File) Section(string) *Section +pkg debug/elf, method (*File) SectionByType(SectionType) *Section +pkg debug/elf, method (*File) Symbols() ([]Symbol, error) +pkg debug/elf, method (*FormatError) Error() string +pkg debug/elf, method (*Prog) Open() io.ReadSeeker +pkg debug/elf, method (*Section) Data() ([]byte, error) +pkg debug/elf, method (*Section) Open() io.ReadSeeker +pkg debug/elf, method (Class) GoString() string +pkg debug/elf, method (Class) String() string +pkg debug/elf, method (Data) GoString() string +pkg debug/elf, method (Data) String() string +pkg debug/elf, method (DynFlag) GoString() string +pkg debug/elf, method (DynFlag) String() string +pkg debug/elf, method (DynTag) GoString() string +pkg debug/elf, method (DynTag) String() string +pkg debug/elf, method (Machine) GoString() string +pkg debug/elf, method (Machine) String() string +pkg debug/elf, method (NType) GoString() string +pkg debug/elf, method (NType) String() string +pkg debug/elf, method (OSABI) GoString() string +pkg debug/elf, method (OSABI) String() string +pkg debug/elf, method (ProgFlag) GoString() string +pkg debug/elf, method (ProgFlag) String() string +pkg debug/elf, method (ProgType) GoString() string +pkg debug/elf, method (ProgType) String() string +pkg debug/elf, method (R_386) GoString() string +pkg debug/elf, method (R_386) String() string +pkg debug/elf, method (R_ALPHA) GoString() string +pkg debug/elf, method (R_ALPHA) String() string +pkg debug/elf, method (R_ARM) GoString() string +pkg debug/elf, method (R_ARM) String() string +pkg debug/elf, method (R_PPC) GoString() string +pkg debug/elf, method (R_PPC) String() string +pkg debug/elf, method (R_SPARC) GoString() string +pkg debug/elf, method (R_SPARC) String() string +pkg debug/elf, method (R_X86_64) GoString() string +pkg debug/elf, method (R_X86_64) String() string +pkg debug/elf, method (SectionFlag) GoString() string +pkg debug/elf, method (SectionFlag) String() string +pkg debug/elf, method (SectionIndex) GoString() string +pkg debug/elf, method (SectionIndex) String() string +pkg debug/elf, method (SectionType) GoString() string +pkg debug/elf, method (SectionType) String() string +pkg debug/elf, method (SymBind) GoString() string +pkg debug/elf, method (SymBind) String() string +pkg debug/elf, method (SymType) GoString() string +pkg debug/elf, method (SymType) String() string +pkg debug/elf, method (SymVis) GoString() string +pkg debug/elf, method (SymVis) String() string +pkg debug/elf, method (Type) GoString() string +pkg debug/elf, method (Type) String() string +pkg debug/elf, method (Version) GoString() string +pkg debug/elf, method (Version) String() string +pkg debug/elf, type Class byte +pkg debug/elf, type Data byte +pkg debug/elf, type Dyn32 struct +pkg debug/elf, type Dyn32 struct, Tag int32 +pkg debug/elf, type Dyn32 struct, Val uint32 +pkg debug/elf, type Dyn64 struct +pkg debug/elf, type Dyn64 struct, Tag int64 +pkg debug/elf, type Dyn64 struct, Val uint64 +pkg debug/elf, type DynFlag int +pkg debug/elf, type DynTag int +pkg debug/elf, type File struct +pkg debug/elf, type File struct, Progs []*Prog +pkg debug/elf, type File struct, Sections []*Section +pkg debug/elf, type File struct, embedded FileHeader +pkg debug/elf, type FileHeader struct +pkg debug/elf, type FileHeader struct, ABIVersion uint8 +pkg debug/elf, type FileHeader struct, ByteOrder binary.ByteOrder +pkg debug/elf, type FileHeader struct, Class Class +pkg debug/elf, type FileHeader struct, Data Data +pkg debug/elf, type FileHeader struct, Machine Machine +pkg debug/elf, type FileHeader struct, OSABI OSABI +pkg debug/elf, type FileHeader struct, Type Type +pkg debug/elf, type FileHeader struct, Version Version +pkg debug/elf, type FormatError struct +pkg debug/elf, type Header32 struct +pkg debug/elf, type Header32 struct, Ehsize uint16 +pkg debug/elf, type Header32 struct, Entry uint32 +pkg debug/elf, type Header32 struct, Flags uint32 +pkg debug/elf, type Header32 struct, Ident [EI_NIDENT]byte +pkg debug/elf, type Header32 struct, Machine uint16 +pkg debug/elf, type Header32 struct, Phentsize uint16 +pkg debug/elf, type Header32 struct, Phnum uint16 +pkg debug/elf, type Header32 struct, Phoff uint32 +pkg debug/elf, type Header32 struct, Shentsize uint16 +pkg debug/elf, type Header32 struct, Shnum uint16 +pkg debug/elf, type Header32 struct, Shoff uint32 +pkg debug/elf, type Header32 struct, Shstrndx uint16 +pkg debug/elf, type Header32 struct, Type uint16 +pkg debug/elf, type Header32 struct, Version uint32 +pkg debug/elf, type Header64 struct +pkg debug/elf, type Header64 struct, Ehsize uint16 +pkg debug/elf, type Header64 struct, Entry uint64 +pkg debug/elf, type Header64 struct, Flags uint32 +pkg debug/elf, type Header64 struct, Ident [EI_NIDENT]byte +pkg debug/elf, type Header64 struct, Machine uint16 +pkg debug/elf, type Header64 struct, Phentsize uint16 +pkg debug/elf, type Header64 struct, Phnum uint16 +pkg debug/elf, type Header64 struct, Phoff uint64 +pkg debug/elf, type Header64 struct, Shentsize uint16 +pkg debug/elf, type Header64 struct, Shnum uint16 +pkg debug/elf, type Header64 struct, Shoff uint64 +pkg debug/elf, type Header64 struct, Shstrndx uint16 +pkg debug/elf, type Header64 struct, Type uint16 +pkg debug/elf, type Header64 struct, Version uint32 +pkg debug/elf, type ImportedSymbol struct +pkg debug/elf, type ImportedSymbol struct, Library string +pkg debug/elf, type ImportedSymbol struct, Name string +pkg debug/elf, type ImportedSymbol struct, Version string +pkg debug/elf, type Machine uint16 +pkg debug/elf, type NType int +pkg debug/elf, type OSABI byte +pkg debug/elf, type Prog struct +pkg debug/elf, type Prog struct, embedded ProgHeader +pkg debug/elf, type Prog struct, embedded io.ReaderAt +pkg debug/elf, type Prog32 struct +pkg debug/elf, type Prog32 struct, Align uint32 +pkg debug/elf, type Prog32 struct, Filesz uint32 +pkg debug/elf, type Prog32 struct, Flags uint32 +pkg debug/elf, type Prog32 struct, Memsz uint32 +pkg debug/elf, type Prog32 struct, Off uint32 +pkg debug/elf, type Prog32 struct, Paddr uint32 +pkg debug/elf, type Prog32 struct, Type uint32 +pkg debug/elf, type Prog32 struct, Vaddr uint32 +pkg debug/elf, type Prog64 struct +pkg debug/elf, type Prog64 struct, Align uint64 +pkg debug/elf, type Prog64 struct, Filesz uint64 +pkg debug/elf, type Prog64 struct, Flags uint32 +pkg debug/elf, type Prog64 struct, Memsz uint64 +pkg debug/elf, type Prog64 struct, Off uint64 +pkg debug/elf, type Prog64 struct, Paddr uint64 +pkg debug/elf, type Prog64 struct, Type uint32 +pkg debug/elf, type Prog64 struct, Vaddr uint64 +pkg debug/elf, type ProgFlag uint32 +pkg debug/elf, type ProgHeader struct +pkg debug/elf, type ProgHeader struct, Align uint64 +pkg debug/elf, type ProgHeader struct, Filesz uint64 +pkg debug/elf, type ProgHeader struct, Flags ProgFlag +pkg debug/elf, type ProgHeader struct, Memsz uint64 +pkg debug/elf, type ProgHeader struct, Off uint64 +pkg debug/elf, type ProgHeader struct, Paddr uint64 +pkg debug/elf, type ProgHeader struct, Type ProgType +pkg debug/elf, type ProgHeader struct, Vaddr uint64 +pkg debug/elf, type ProgType int +pkg debug/elf, type R_386 int +pkg debug/elf, type R_ALPHA int +pkg debug/elf, type R_ARM int +pkg debug/elf, type R_PPC int +pkg debug/elf, type R_SPARC int +pkg debug/elf, type R_X86_64 int +pkg debug/elf, type Rel32 struct +pkg debug/elf, type Rel32 struct, Info uint32 +pkg debug/elf, type Rel32 struct, Off uint32 +pkg debug/elf, type Rel64 struct +pkg debug/elf, type Rel64 struct, Info uint64 +pkg debug/elf, type Rel64 struct, Off uint64 +pkg debug/elf, type Rela32 struct +pkg debug/elf, type Rela32 struct, Addend int32 +pkg debug/elf, type Rela32 struct, Info uint32 +pkg debug/elf, type Rela32 struct, Off uint32 +pkg debug/elf, type Rela64 struct +pkg debug/elf, type Rela64 struct, Addend int64 +pkg debug/elf, type Rela64 struct, Info uint64 +pkg debug/elf, type Rela64 struct, Off uint64 +pkg debug/elf, type Section struct +pkg debug/elf, type Section struct, embedded SectionHeader +pkg debug/elf, type Section struct, embedded io.ReaderAt +pkg debug/elf, type Section32 struct +pkg debug/elf, type Section32 struct, Addr uint32 +pkg debug/elf, type Section32 struct, Addralign uint32 +pkg debug/elf, type Section32 struct, Entsize uint32 +pkg debug/elf, type Section32 struct, Flags uint32 +pkg debug/elf, type Section32 struct, Info uint32 +pkg debug/elf, type Section32 struct, Link uint32 +pkg debug/elf, type Section32 struct, Name uint32 +pkg debug/elf, type Section32 struct, Off uint32 +pkg debug/elf, type Section32 struct, Size uint32 +pkg debug/elf, type Section32 struct, Type uint32 +pkg debug/elf, type Section64 struct +pkg debug/elf, type Section64 struct, Addr uint64 +pkg debug/elf, type Section64 struct, Addralign uint64 +pkg debug/elf, type Section64 struct, Entsize uint64 +pkg debug/elf, type Section64 struct, Flags uint64 +pkg debug/elf, type Section64 struct, Info uint32 +pkg debug/elf, type Section64 struct, Link uint32 +pkg debug/elf, type Section64 struct, Name uint32 +pkg debug/elf, type Section64 struct, Off uint64 +pkg debug/elf, type Section64 struct, Size uint64 +pkg debug/elf, type Section64 struct, Type uint32 +pkg debug/elf, type SectionFlag uint32 +pkg debug/elf, type SectionHeader struct +pkg debug/elf, type SectionHeader struct, Addr uint64 +pkg debug/elf, type SectionHeader struct, Addralign uint64 +pkg debug/elf, type SectionHeader struct, Entsize uint64 +pkg debug/elf, type SectionHeader struct, Flags SectionFlag +pkg debug/elf, type SectionHeader struct, Info uint32 +pkg debug/elf, type SectionHeader struct, Link uint32 +pkg debug/elf, type SectionHeader struct, Name string +pkg debug/elf, type SectionHeader struct, Offset uint64 +pkg debug/elf, type SectionHeader struct, Size uint64 +pkg debug/elf, type SectionHeader struct, Type SectionType +pkg debug/elf, type SectionIndex int +pkg debug/elf, type SectionType uint32 +pkg debug/elf, type Sym32 struct +pkg debug/elf, type Sym32 struct, Info uint8 +pkg debug/elf, type Sym32 struct, Name uint32 +pkg debug/elf, type Sym32 struct, Other uint8 +pkg debug/elf, type Sym32 struct, Shndx uint16 +pkg debug/elf, type Sym32 struct, Size uint32 +pkg debug/elf, type Sym32 struct, Value uint32 +pkg debug/elf, type Sym64 struct +pkg debug/elf, type Sym64 struct, Info uint8 +pkg debug/elf, type Sym64 struct, Name uint32 +pkg debug/elf, type Sym64 struct, Other uint8 +pkg debug/elf, type Sym64 struct, Shndx uint16 +pkg debug/elf, type Sym64 struct, Size uint64 +pkg debug/elf, type Sym64 struct, Value uint64 +pkg debug/elf, type SymBind int +pkg debug/elf, type SymType int +pkg debug/elf, type SymVis int +pkg debug/elf, type Symbol struct +pkg debug/elf, type Symbol struct, Info byte +pkg debug/elf, type Symbol struct, Name string +pkg debug/elf, type Symbol struct, Other byte +pkg debug/elf, type Symbol struct, Section SectionIndex +pkg debug/elf, type Symbol struct, Size uint64 +pkg debug/elf, type Symbol struct, Value uint64 +pkg debug/elf, type Type uint16 +pkg debug/elf, type Version byte +pkg debug/gosym, func NewLineTable([]byte, uint64) *LineTable +pkg debug/gosym, func NewTable([]byte, *LineTable) (*Table, error) +pkg debug/gosym, method (*DecodingError) Error() string +pkg debug/gosym, method (*LineTable) LineToPC(int, uint64) uint64 +pkg debug/gosym, method (*LineTable) PCToLine(uint64) int +pkg debug/gosym, method (*Sym) BaseName() string +pkg debug/gosym, method (*Sym) PackageName() string +pkg debug/gosym, method (*Sym) ReceiverName() string +pkg debug/gosym, method (*Sym) Static() bool +pkg debug/gosym, method (*Table) LineToPC(string, int) (uint64, *Func, error) +pkg debug/gosym, method (*Table) LookupFunc(string) *Func +pkg debug/gosym, method (*Table) LookupSym(string) *Sym +pkg debug/gosym, method (*Table) PCToFunc(uint64) *Func +pkg debug/gosym, method (*Table) PCToLine(uint64) (string, int, *Func) +pkg debug/gosym, method (*Table) SymByAddr(uint64) *Sym +pkg debug/gosym, method (*UnknownLineError) Error() string +pkg debug/gosym, method (Func) BaseName() string +pkg debug/gosym, method (Func) PackageName() string +pkg debug/gosym, method (Func) ReceiverName() string +pkg debug/gosym, method (Func) Static() bool +pkg debug/gosym, method (UnknownFileError) Error() string +pkg debug/gosym, type DecodingError struct +pkg debug/gosym, type Func struct +pkg debug/gosym, type Func struct, End uint64 +pkg debug/gosym, type Func struct, Entry uint64 +pkg debug/gosym, type Func struct, FrameSize int +pkg debug/gosym, type Func struct, LineTable *LineTable +pkg debug/gosym, type Func struct, Locals []*Sym +pkg debug/gosym, type Func struct, Obj *Obj +pkg debug/gosym, type Func struct, Params []*Sym +pkg debug/gosym, type Func struct, embedded *Sym +pkg debug/gosym, type LineTable struct +pkg debug/gosym, type LineTable struct, Data []byte +pkg debug/gosym, type LineTable struct, Line int +pkg debug/gosym, type LineTable struct, PC uint64 +pkg debug/gosym, type Obj struct +pkg debug/gosym, type Obj struct, Funcs []Func +pkg debug/gosym, type Obj struct, Paths []Sym +pkg debug/gosym, type Sym struct +pkg debug/gosym, type Sym struct, Func *Func +pkg debug/gosym, type Sym struct, GoType uint64 +pkg debug/gosym, type Sym struct, Name string +pkg debug/gosym, type Sym struct, Type byte +pkg debug/gosym, type Sym struct, Value uint64 +pkg debug/gosym, type Table struct +pkg debug/gosym, type Table struct, Files map[string]*Obj +pkg debug/gosym, type Table struct, Funcs []Func +pkg debug/gosym, type Table struct, Objs []Obj +pkg debug/gosym, type Table struct, Syms []Sym +pkg debug/gosym, type UnknownFileError string +pkg debug/gosym, type UnknownLineError struct +pkg debug/gosym, type UnknownLineError struct, File string +pkg debug/gosym, type UnknownLineError struct, Line int +pkg debug/macho, const Cpu386 Cpu +pkg debug/macho, const CpuAmd64 Cpu +pkg debug/macho, const LoadCmdDylib LoadCmd +pkg debug/macho, const LoadCmdDylinker LoadCmd +pkg debug/macho, const LoadCmdDysymtab LoadCmd +pkg debug/macho, const LoadCmdSegment LoadCmd +pkg debug/macho, const LoadCmdSegment64 LoadCmd +pkg debug/macho, const LoadCmdSymtab LoadCmd +pkg debug/macho, const LoadCmdThread LoadCmd +pkg debug/macho, const LoadCmdUnixThread LoadCmd +pkg debug/macho, const Magic32 uint32 +pkg debug/macho, const Magic64 uint32 +pkg debug/macho, const TypeExec Type +pkg debug/macho, const TypeObj Type +pkg debug/macho, func NewFile(io.ReaderAt) (*File, error) +pkg debug/macho, func Open(string) (*File, error) +pkg debug/macho, method (*File) Close() error +pkg debug/macho, method (*File) DWARF() (*dwarf.Data, error) +pkg debug/macho, method (*File) ImportedLibraries() ([]string, error) +pkg debug/macho, method (*File) ImportedSymbols() ([]string, error) +pkg debug/macho, method (*File) Section(string) *Section +pkg debug/macho, method (*File) Segment(string) *Segment +pkg debug/macho, method (*FormatError) Error() string +pkg debug/macho, method (*Section) Data() ([]byte, error) +pkg debug/macho, method (*Section) Open() io.ReadSeeker +pkg debug/macho, method (*Segment) Data() ([]byte, error) +pkg debug/macho, method (*Segment) Open() io.ReadSeeker +pkg debug/macho, method (Cpu) GoString() string +pkg debug/macho, method (Cpu) String() string +pkg debug/macho, method (Dylib) Raw() []byte +pkg debug/macho, method (Dysymtab) Raw() []byte +pkg debug/macho, method (LoadBytes) Raw() []byte +pkg debug/macho, method (LoadCmd) GoString() string +pkg debug/macho, method (LoadCmd) String() string +pkg debug/macho, method (Segment) Raw() []byte +pkg debug/macho, method (Symtab) Raw() []byte +pkg debug/macho, type Cpu uint32 +pkg debug/macho, type Dylib struct +pkg debug/macho, type Dylib struct, CompatVersion uint32 +pkg debug/macho, type Dylib struct, CurrentVersion uint32 +pkg debug/macho, type Dylib struct, Name string +pkg debug/macho, type Dylib struct, Time uint32 +pkg debug/macho, type Dylib struct, embedded LoadBytes +pkg debug/macho, type DylibCmd struct +pkg debug/macho, type DylibCmd struct, Cmd LoadCmd +pkg debug/macho, type DylibCmd struct, CompatVersion uint32 +pkg debug/macho, type DylibCmd struct, CurrentVersion uint32 +pkg debug/macho, type DylibCmd struct, Len uint32 +pkg debug/macho, type DylibCmd struct, Name uint32 +pkg debug/macho, type DylibCmd struct, Time uint32 +pkg debug/macho, type Dysymtab struct +pkg debug/macho, type Dysymtab struct, IndirectSyms []uint32 +pkg debug/macho, type Dysymtab struct, embedded DysymtabCmd +pkg debug/macho, type Dysymtab struct, embedded LoadBytes +pkg debug/macho, type DysymtabCmd struct +pkg debug/macho, type DysymtabCmd struct, Cmd LoadCmd +pkg debug/macho, type DysymtabCmd struct, Extrefsymoff uint32 +pkg debug/macho, type DysymtabCmd struct, Extreloff uint32 +pkg debug/macho, type DysymtabCmd struct, Iextdefsym uint32 +pkg debug/macho, type DysymtabCmd struct, Ilocalsym uint32 +pkg debug/macho, type DysymtabCmd struct, Indirectsymoff uint32 +pkg debug/macho, type DysymtabCmd struct, Iundefsym uint32 +pkg debug/macho, type DysymtabCmd struct, Len uint32 +pkg debug/macho, type DysymtabCmd struct, Locreloff uint32 +pkg debug/macho, type DysymtabCmd struct, Modtaboff uint32 +pkg debug/macho, type DysymtabCmd struct, Nextdefsym uint32 +pkg debug/macho, type DysymtabCmd struct, Nextrefsyms uint32 +pkg debug/macho, type DysymtabCmd struct, Nextrel uint32 +pkg debug/macho, type DysymtabCmd struct, Nindirectsyms uint32 +pkg debug/macho, type DysymtabCmd struct, Nlocalsym uint32 +pkg debug/macho, type DysymtabCmd struct, Nlocrel uint32 +pkg debug/macho, type DysymtabCmd struct, Nmodtab uint32 +pkg debug/macho, type DysymtabCmd struct, Ntoc uint32 +pkg debug/macho, type DysymtabCmd struct, Nundefsym uint32 +pkg debug/macho, type DysymtabCmd struct, Tocoffset uint32 +pkg debug/macho, type File struct +pkg debug/macho, type File struct, ByteOrder binary.ByteOrder +pkg debug/macho, type File struct, Dysymtab *Dysymtab +pkg debug/macho, type File struct, Loads []Load +pkg debug/macho, type File struct, Sections []*Section +pkg debug/macho, type File struct, Symtab *Symtab +pkg debug/macho, type File struct, embedded FileHeader +pkg debug/macho, type FileHeader struct +pkg debug/macho, type FileHeader struct, Cmdsz uint32 +pkg debug/macho, type FileHeader struct, Cpu Cpu +pkg debug/macho, type FileHeader struct, Flags uint32 +pkg debug/macho, type FileHeader struct, Magic uint32 +pkg debug/macho, type FileHeader struct, Ncmd uint32 +pkg debug/macho, type FileHeader struct, SubCpu uint32 +pkg debug/macho, type FileHeader struct, Type Type +pkg debug/macho, type FormatError struct +pkg debug/macho, type Load interface { Raw } +pkg debug/macho, type Load interface, Raw() []byte +pkg debug/macho, type LoadBytes []byte +pkg debug/macho, type LoadCmd uint32 +pkg debug/macho, type Nlist32 struct +pkg debug/macho, type Nlist32 struct, Desc uint16 +pkg debug/macho, type Nlist32 struct, Name uint32 +pkg debug/macho, type Nlist32 struct, Sect uint8 +pkg debug/macho, type Nlist32 struct, Type uint8 +pkg debug/macho, type Nlist32 struct, Value uint32 +pkg debug/macho, type Nlist64 struct +pkg debug/macho, type Nlist64 struct, Desc uint16 +pkg debug/macho, type Nlist64 struct, Name uint32 +pkg debug/macho, type Nlist64 struct, Sect uint8 +pkg debug/macho, type Nlist64 struct, Type uint8 +pkg debug/macho, type Nlist64 struct, Value uint64 +pkg debug/macho, type Regs386 struct +pkg debug/macho, type Regs386 struct, AX uint32 +pkg debug/macho, type Regs386 struct, BP uint32 +pkg debug/macho, type Regs386 struct, BX uint32 +pkg debug/macho, type Regs386 struct, CS uint32 +pkg debug/macho, type Regs386 struct, CX uint32 +pkg debug/macho, type Regs386 struct, DI uint32 +pkg debug/macho, type Regs386 struct, DS uint32 +pkg debug/macho, type Regs386 struct, DX uint32 +pkg debug/macho, type Regs386 struct, ES uint32 +pkg debug/macho, type Regs386 struct, FLAGS uint32 +pkg debug/macho, type Regs386 struct, FS uint32 +pkg debug/macho, type Regs386 struct, GS uint32 +pkg debug/macho, type Regs386 struct, IP uint32 +pkg debug/macho, type Regs386 struct, SI uint32 +pkg debug/macho, type Regs386 struct, SP uint32 +pkg debug/macho, type Regs386 struct, SS uint32 +pkg debug/macho, type RegsAMD64 struct +pkg debug/macho, type RegsAMD64 struct, AX uint64 +pkg debug/macho, type RegsAMD64 struct, BP uint64 +pkg debug/macho, type RegsAMD64 struct, BX uint64 +pkg debug/macho, type RegsAMD64 struct, CS uint64 +pkg debug/macho, type RegsAMD64 struct, CX uint64 +pkg debug/macho, type RegsAMD64 struct, DI uint64 +pkg debug/macho, type RegsAMD64 struct, DX uint64 +pkg debug/macho, type RegsAMD64 struct, FLAGS uint64 +pkg debug/macho, type RegsAMD64 struct, FS uint64 +pkg debug/macho, type RegsAMD64 struct, GS uint64 +pkg debug/macho, type RegsAMD64 struct, IP uint64 +pkg debug/macho, type RegsAMD64 struct, R10 uint64 +pkg debug/macho, type RegsAMD64 struct, R11 uint64 +pkg debug/macho, type RegsAMD64 struct, R12 uint64 +pkg debug/macho, type RegsAMD64 struct, R13 uint64 +pkg debug/macho, type RegsAMD64 struct, R14 uint64 +pkg debug/macho, type RegsAMD64 struct, R15 uint64 +pkg debug/macho, type RegsAMD64 struct, R8 uint64 +pkg debug/macho, type RegsAMD64 struct, R9 uint64 +pkg debug/macho, type RegsAMD64 struct, SI uint64 +pkg debug/macho, type RegsAMD64 struct, SP uint64 +pkg debug/macho, type Section struct +pkg debug/macho, type Section struct, embedded SectionHeader +pkg debug/macho, type Section struct, embedded io.ReaderAt +pkg debug/macho, type Section32 struct +pkg debug/macho, type Section32 struct, Addr uint32 +pkg debug/macho, type Section32 struct, Align uint32 +pkg debug/macho, type Section32 struct, Flags uint32 +pkg debug/macho, type Section32 struct, Name [16]byte +pkg debug/macho, type Section32 struct, Nreloc uint32 +pkg debug/macho, type Section32 struct, Offset uint32 +pkg debug/macho, type Section32 struct, Reloff uint32 +pkg debug/macho, type Section32 struct, Reserve1 uint32 +pkg debug/macho, type Section32 struct, Reserve2 uint32 +pkg debug/macho, type Section32 struct, Seg [16]byte +pkg debug/macho, type Section32 struct, Size uint32 +pkg debug/macho, type Section64 struct +pkg debug/macho, type Section64 struct, Addr uint64 +pkg debug/macho, type Section64 struct, Align uint32 +pkg debug/macho, type Section64 struct, Flags uint32 +pkg debug/macho, type Section64 struct, Name [16]byte +pkg debug/macho, type Section64 struct, Nreloc uint32 +pkg debug/macho, type Section64 struct, Offset uint32 +pkg debug/macho, type Section64 struct, Reloff uint32 +pkg debug/macho, type Section64 struct, Reserve1 uint32 +pkg debug/macho, type Section64 struct, Reserve2 uint32 +pkg debug/macho, type Section64 struct, Reserve3 uint32 +pkg debug/macho, type Section64 struct, Seg [16]byte +pkg debug/macho, type Section64 struct, Size uint64 +pkg debug/macho, type SectionHeader struct +pkg debug/macho, type SectionHeader struct, Addr uint64 +pkg debug/macho, type SectionHeader struct, Align uint32 +pkg debug/macho, type SectionHeader struct, Flags uint32 +pkg debug/macho, type SectionHeader struct, Name string +pkg debug/macho, type SectionHeader struct, Nreloc uint32 +pkg debug/macho, type SectionHeader struct, Offset uint32 +pkg debug/macho, type SectionHeader struct, Reloff uint32 +pkg debug/macho, type SectionHeader struct, Seg string +pkg debug/macho, type SectionHeader struct, Size uint64 +pkg debug/macho, type Segment struct +pkg debug/macho, type Segment struct, embedded LoadBytes +pkg debug/macho, type Segment struct, embedded SegmentHeader +pkg debug/macho, type Segment struct, embedded io.ReaderAt +pkg debug/macho, type Segment32 struct +pkg debug/macho, type Segment32 struct, Addr uint32 +pkg debug/macho, type Segment32 struct, Cmd LoadCmd +pkg debug/macho, type Segment32 struct, Filesz uint32 +pkg debug/macho, type Segment32 struct, Flag uint32 +pkg debug/macho, type Segment32 struct, Len uint32 +pkg debug/macho, type Segment32 struct, Maxprot uint32 +pkg debug/macho, type Segment32 struct, Memsz uint32 +pkg debug/macho, type Segment32 struct, Name [16]byte +pkg debug/macho, type Segment32 struct, Nsect uint32 +pkg debug/macho, type Segment32 struct, Offset uint32 +pkg debug/macho, type Segment32 struct, Prot uint32 +pkg debug/macho, type Segment64 struct +pkg debug/macho, type Segment64 struct, Addr uint64 +pkg debug/macho, type Segment64 struct, Cmd LoadCmd +pkg debug/macho, type Segment64 struct, Filesz uint64 +pkg debug/macho, type Segment64 struct, Flag uint32 +pkg debug/macho, type Segment64 struct, Len uint32 +pkg debug/macho, type Segment64 struct, Maxprot uint32 +pkg debug/macho, type Segment64 struct, Memsz uint64 +pkg debug/macho, type Segment64 struct, Name [16]byte +pkg debug/macho, type Segment64 struct, Nsect uint32 +pkg debug/macho, type Segment64 struct, Offset uint64 +pkg debug/macho, type Segment64 struct, Prot uint32 +pkg debug/macho, type SegmentHeader struct +pkg debug/macho, type SegmentHeader struct, Addr uint64 +pkg debug/macho, type SegmentHeader struct, Cmd LoadCmd +pkg debug/macho, type SegmentHeader struct, Filesz uint64 +pkg debug/macho, type SegmentHeader struct, Flag uint32 +pkg debug/macho, type SegmentHeader struct, Len uint32 +pkg debug/macho, type SegmentHeader struct, Maxprot uint32 +pkg debug/macho, type SegmentHeader struct, Memsz uint64 +pkg debug/macho, type SegmentHeader struct, Name string +pkg debug/macho, type SegmentHeader struct, Nsect uint32 +pkg debug/macho, type SegmentHeader struct, Offset uint64 +pkg debug/macho, type SegmentHeader struct, Prot uint32 +pkg debug/macho, type Symbol struct +pkg debug/macho, type Symbol struct, Desc uint16 +pkg debug/macho, type Symbol struct, Name string +pkg debug/macho, type Symbol struct, Sect uint8 +pkg debug/macho, type Symbol struct, Type uint8 +pkg debug/macho, type Symbol struct, Value uint64 +pkg debug/macho, type Symtab struct +pkg debug/macho, type Symtab struct, Syms []Symbol +pkg debug/macho, type Symtab struct, embedded LoadBytes +pkg debug/macho, type Symtab struct, embedded SymtabCmd +pkg debug/macho, type SymtabCmd struct +pkg debug/macho, type SymtabCmd struct, Cmd LoadCmd +pkg debug/macho, type SymtabCmd struct, Len uint32 +pkg debug/macho, type SymtabCmd struct, Nsyms uint32 +pkg debug/macho, type SymtabCmd struct, Stroff uint32 +pkg debug/macho, type SymtabCmd struct, Strsize uint32 +pkg debug/macho, type SymtabCmd struct, Symoff uint32 +pkg debug/macho, type Thread struct +pkg debug/macho, type Thread struct, Cmd LoadCmd +pkg debug/macho, type Thread struct, Data []uint32 +pkg debug/macho, type Thread struct, Len uint32 +pkg debug/macho, type Thread struct, Type uint32 +pkg debug/macho, type Type uint32 +pkg debug/pe, const IMAGE_FILE_MACHINE_AM33 ideal-int +pkg debug/pe, const IMAGE_FILE_MACHINE_AMD64 ideal-int +pkg debug/pe, const IMAGE_FILE_MACHINE_ARM ideal-int +pkg debug/pe, const IMAGE_FILE_MACHINE_EBC ideal-int +pkg debug/pe, const IMAGE_FILE_MACHINE_I386 ideal-int +pkg debug/pe, const IMAGE_FILE_MACHINE_IA64 ideal-int +pkg debug/pe, const IMAGE_FILE_MACHINE_M32R ideal-int +pkg debug/pe, const IMAGE_FILE_MACHINE_MIPS16 ideal-int +pkg debug/pe, const IMAGE_FILE_MACHINE_MIPSFPU ideal-int +pkg debug/pe, const IMAGE_FILE_MACHINE_MIPSFPU16 ideal-int +pkg debug/pe, const IMAGE_FILE_MACHINE_POWERPC ideal-int +pkg debug/pe, const IMAGE_FILE_MACHINE_POWERPCFP ideal-int +pkg debug/pe, const IMAGE_FILE_MACHINE_R4000 ideal-int +pkg debug/pe, const IMAGE_FILE_MACHINE_SH3 ideal-int +pkg debug/pe, const IMAGE_FILE_MACHINE_SH3DSP ideal-int +pkg debug/pe, const IMAGE_FILE_MACHINE_SH4 ideal-int +pkg debug/pe, const IMAGE_FILE_MACHINE_SH5 ideal-int +pkg debug/pe, const IMAGE_FILE_MACHINE_THUMB ideal-int +pkg debug/pe, const IMAGE_FILE_MACHINE_UNKNOWN ideal-int +pkg debug/pe, const IMAGE_FILE_MACHINE_WCEMIPSV2 ideal-int +pkg debug/pe, func NewFile(io.ReaderAt) (*File, error) +pkg debug/pe, func Open(string) (*File, error) +pkg debug/pe, method (*File) Close() error +pkg debug/pe, method (*File) DWARF() (*dwarf.Data, error) +pkg debug/pe, method (*File) ImportedLibraries() ([]string, error) +pkg debug/pe, method (*File) ImportedSymbols() ([]string, error) +pkg debug/pe, method (*File) Section(string) *Section +pkg debug/pe, method (*FormatError) Error() string +pkg debug/pe, method (*Section) Data() ([]byte, error) +pkg debug/pe, method (*Section) Open() io.ReadSeeker +pkg debug/pe, type File struct +pkg debug/pe, type File struct, Sections []*Section +pkg debug/pe, type File struct, embedded FileHeader +pkg debug/pe, type FileHeader struct +pkg debug/pe, type FileHeader struct, Characteristics uint16 +pkg debug/pe, type FileHeader struct, Machine uint16 +pkg debug/pe, type FileHeader struct, NumberOfSections uint16 +pkg debug/pe, type FileHeader struct, NumberOfSymbols uint32 +pkg debug/pe, type FileHeader struct, PointerToSymbolTable uint32 +pkg debug/pe, type FileHeader struct, SizeOfOptionalHeader uint16 +pkg debug/pe, type FileHeader struct, TimeDateStamp uint32 +pkg debug/pe, type FormatError struct +pkg debug/pe, type ImportDirectory struct +pkg debug/pe, type ImportDirectory struct, FirstThunk uint32 +pkg debug/pe, type ImportDirectory struct, ForwarderChain uint32 +pkg debug/pe, type ImportDirectory struct, Name uint32 +pkg debug/pe, type ImportDirectory struct, OriginalFirstThunk uint32 +pkg debug/pe, type ImportDirectory struct, TimeDateStamp uint32 +pkg debug/pe, type Section struct +pkg debug/pe, type Section struct, embedded SectionHeader +pkg debug/pe, type Section struct, embedded io.ReaderAt +pkg debug/pe, type SectionHeader struct +pkg debug/pe, type SectionHeader struct, Characteristics uint32 +pkg debug/pe, type SectionHeader struct, Name string +pkg debug/pe, type SectionHeader struct, NumberOfLineNumbers uint16 +pkg debug/pe, type SectionHeader struct, NumberOfRelocations uint16 +pkg debug/pe, type SectionHeader struct, Offset uint32 +pkg debug/pe, type SectionHeader struct, PointerToLineNumbers uint32 +pkg debug/pe, type SectionHeader struct, PointerToRelocations uint32 +pkg debug/pe, type SectionHeader struct, Size uint32 +pkg debug/pe, type SectionHeader struct, VirtualAddress uint32 +pkg debug/pe, type SectionHeader struct, VirtualSize uint32 +pkg debug/pe, type SectionHeader32 struct +pkg debug/pe, type SectionHeader32 struct, Characteristics uint32 +pkg debug/pe, type SectionHeader32 struct, Name [8]uint8 +pkg debug/pe, type SectionHeader32 struct, NumberOfLineNumbers uint16 +pkg debug/pe, type SectionHeader32 struct, NumberOfRelocations uint16 +pkg debug/pe, type SectionHeader32 struct, PointerToLineNumbers uint32 +pkg debug/pe, type SectionHeader32 struct, PointerToRawData uint32 +pkg debug/pe, type SectionHeader32 struct, PointerToRelocations uint32 +pkg debug/pe, type SectionHeader32 struct, SizeOfRawData uint32 +pkg debug/pe, type SectionHeader32 struct, VirtualAddress uint32 +pkg debug/pe, type SectionHeader32 struct, VirtualSize uint32 +pkg encoding/ascii85, func Decode([]byte, bool) (int, error) +pkg encoding/ascii85, func Encode([]byte) int +pkg encoding/ascii85, func MaxEncodedLen(int) int +pkg encoding/ascii85, func NewDecoder(io.Reader) io.Reader +pkg encoding/ascii85, func NewEncoder(io.Writer) io.WriteCloser +pkg encoding/ascii85, method (CorruptInputError) Error() string +pkg encoding/ascii85, type CorruptInputError int64 +pkg encoding/asn1, func Marshal(interface{}) ([]byte, error) +pkg encoding/asn1, func Unmarshal([]byte, interface{}) ([]byte, error) +pkg encoding/asn1, func UnmarshalWithParams([]byte, interface{}, string) ([]byte, error) +pkg encoding/asn1, method (BitString) At(int) int +pkg encoding/asn1, method (BitString) RightAlign() []byte +pkg encoding/asn1, method (ObjectIdentifier) Equal(ObjectIdentifier) bool +pkg encoding/asn1, method (StructuralError) Error() string +pkg encoding/asn1, method (SyntaxError) Error() string +pkg encoding/asn1, type BitString struct +pkg encoding/asn1, type BitString struct, BitLength int +pkg encoding/asn1, type BitString struct, Bytes []byte +pkg encoding/asn1, type Enumerated int +pkg encoding/asn1, type Flag bool +pkg encoding/asn1, type ObjectIdentifier []int +pkg encoding/asn1, type RawContent []byte +pkg encoding/asn1, type RawValue struct +pkg encoding/asn1, type RawValue struct, Bytes []byte +pkg encoding/asn1, type RawValue struct, Class int +pkg encoding/asn1, type RawValue struct, FullBytes []byte +pkg encoding/asn1, type RawValue struct, IsCompound bool +pkg encoding/asn1, type RawValue struct, Tag int +pkg encoding/asn1, type StructuralError struct +pkg encoding/asn1, type StructuralError struct, Msg string +pkg encoding/asn1, type SyntaxError struct +pkg encoding/asn1, type SyntaxError struct, Msg string +pkg encoding/base32, func NewDecoder(*Encoding, io.Reader) io.Reader +pkg encoding/base32, func NewEncoder(*Encoding, io.Writer) io.WriteCloser +pkg encoding/base32, func NewEncoding(string) *Encoding +pkg encoding/base32, method (*Encoding) Decode([]byte) (int, error) +pkg encoding/base32, method (*Encoding) DecodeString(string) ([]byte, error) +pkg encoding/base32, method (*Encoding) DecodedLen(int) int +pkg encoding/base32, method (*Encoding) Encode([]byte) +pkg encoding/base32, method (*Encoding) EncodeToString([]byte) string +pkg encoding/base32, method (*Encoding) EncodedLen(int) int +pkg encoding/base32, method (CorruptInputError) Error() string +pkg encoding/base32, type CorruptInputError int64 +pkg encoding/base32, type Encoding struct +pkg encoding/base32, var HexEncoding *Encoding +pkg encoding/base32, var StdEncoding *Encoding +pkg encoding/base64, func NewDecoder(*Encoding, io.Reader) io.Reader +pkg encoding/base64, func NewEncoder(*Encoding, io.Writer) io.WriteCloser +pkg encoding/base64, func NewEncoding(string) *Encoding +pkg encoding/base64, method (*Encoding) Decode([]byte) (int, error) +pkg encoding/base64, method (*Encoding) DecodeString(string) ([]byte, error) +pkg encoding/base64, method (*Encoding) DecodedLen(int) int +pkg encoding/base64, method (*Encoding) Encode([]byte) +pkg encoding/base64, method (*Encoding) EncodeToString([]byte) string +pkg encoding/base64, method (*Encoding) EncodedLen(int) int +pkg encoding/base64, method (CorruptInputError) Error() string +pkg encoding/base64, type CorruptInputError int64 +pkg encoding/base64, type Encoding struct +pkg encoding/base64, var StdEncoding *Encoding +pkg encoding/base64, var URLEncoding *Encoding +pkg encoding/binary, const MaxVarintLen16 ideal-int +pkg encoding/binary, const MaxVarintLen32 ideal-int +pkg encoding/binary, const MaxVarintLen64 ideal-int +pkg encoding/binary, func PutUvarint([]byte, uint64) int +pkg encoding/binary, func PutVarint([]byte, int64) int +pkg encoding/binary, func Read(io.Reader, ByteOrder, interface{}) error +pkg encoding/binary, func ReadUvarint(io.ByteReader) (uint64, error) +pkg encoding/binary, func ReadVarint(io.ByteReader) (int64, error) +pkg encoding/binary, func Size(interface{}) int +pkg encoding/binary, func Uvarint([]byte) (uint64, int) +pkg encoding/binary, func Varint([]byte) (int64, int) +pkg encoding/binary, func Write(io.Writer, ByteOrder, interface{}) error +pkg encoding/binary, type ByteOrder interface { PutUint16, PutUint32, PutUint64, String, Uint16, Uint32, Uint64 } +pkg encoding/binary, type ByteOrder interface, PutUint16([]byte, uint16) +pkg encoding/binary, type ByteOrder interface, PutUint32([]byte, uint32) +pkg encoding/binary, type ByteOrder interface, PutUint64([]byte, uint64) +pkg encoding/binary, type ByteOrder interface, String() string +pkg encoding/binary, type ByteOrder interface, Uint16([]byte) uint16 +pkg encoding/binary, type ByteOrder interface, Uint32([]byte) uint32 +pkg encoding/binary, type ByteOrder interface, Uint64([]byte) uint64 +pkg encoding/binary, var BigEndian bigEndian +pkg encoding/binary, var LittleEndian littleEndian +pkg encoding/csv, func NewReader(io.Reader) *Reader +pkg encoding/csv, func NewWriter(io.Writer) *Writer +pkg encoding/csv, method (*ParseError) Error() string +pkg encoding/csv, method (*Reader) Read() ([]string, error) +pkg encoding/csv, method (*Reader) ReadAll() ([][]string, error) +pkg encoding/csv, method (*Writer) Flush() +pkg encoding/csv, method (*Writer) Write([]string) error +pkg encoding/csv, method (*Writer) WriteAll([][]string) error +pkg encoding/csv, type ParseError struct +pkg encoding/csv, type ParseError struct, Column int +pkg encoding/csv, type ParseError struct, Err error +pkg encoding/csv, type ParseError struct, Line int +pkg encoding/csv, type Reader struct +pkg encoding/csv, type Reader struct, Comma rune +pkg encoding/csv, type Reader struct, Comment rune +pkg encoding/csv, type Reader struct, FieldsPerRecord int +pkg encoding/csv, type Reader struct, LazyQuotes bool +pkg encoding/csv, type Reader struct, TrailingComma bool +pkg encoding/csv, type Reader struct, TrimLeadingSpace bool +pkg encoding/csv, type Writer struct +pkg encoding/csv, type Writer struct, Comma rune +pkg encoding/csv, type Writer struct, UseCRLF bool +pkg encoding/csv, var ErrBareQuote error +pkg encoding/csv, var ErrFieldCount error +pkg encoding/csv, var ErrQuote error +pkg encoding/csv, var ErrTrailingComma error +pkg encoding/gob, func NewDecoder(io.Reader) *Decoder +pkg encoding/gob, func NewEncoder(io.Writer) *Encoder +pkg encoding/gob, func Register(interface{}) +pkg encoding/gob, func RegisterName(string, interface{}) +pkg encoding/gob, method (*Decoder) Decode(interface{}) error +pkg encoding/gob, method (*Decoder) DecodeValue(reflect.Value) error +pkg encoding/gob, method (*Encoder) Encode(interface{}) error +pkg encoding/gob, method (*Encoder) EncodeValue(reflect.Value) error +pkg encoding/gob, type CommonType struct +pkg encoding/gob, type CommonType struct, Id typeId +pkg encoding/gob, type CommonType struct, Name string +pkg encoding/gob, type Decoder struct +pkg encoding/gob, type Encoder struct +pkg encoding/gob, type GobDecoder interface { GobDecode } +pkg encoding/gob, type GobDecoder interface, GobDecode([]byte) error +pkg encoding/gob, type GobEncoder interface { GobEncode } +pkg encoding/gob, type GobEncoder interface, GobEncode() ([]byte, error) +pkg encoding/hex, func Decode([]byte) (int, error) +pkg encoding/hex, func DecodeString(string) ([]byte, error) +pkg encoding/hex, func DecodedLen(int) int +pkg encoding/hex, func Dump([]byte) string +pkg encoding/hex, func Dumper(io.Writer) io.WriteCloser +pkg encoding/hex, func Encode([]byte) int +pkg encoding/hex, func EncodeToString([]byte) string +pkg encoding/hex, func EncodedLen(int) int +pkg encoding/hex, method (InvalidByteError) Error() string +pkg encoding/hex, type InvalidByteError byte +pkg encoding/hex, var ErrLength error +pkg encoding/json, func Compact(*bytes.Buffer, []byte) error +pkg encoding/json, func HTMLEscape(*bytes.Buffer, []byte) +pkg encoding/json, func Indent(*bytes.Buffer, []byte, string) error +pkg encoding/json, func Marshal(interface{}) ([]byte, error) +pkg encoding/json, func MarshalIndent(interface{}, string) ([]byte, error) +pkg encoding/json, func NewDecoder(io.Reader) *Decoder +pkg encoding/json, func NewEncoder(io.Writer) *Encoder +pkg encoding/json, func Unmarshal([]byte, interface{}) error +pkg encoding/json, method (*Decoder) Decode(interface{}) error +pkg encoding/json, method (*Encoder) Encode(interface{}) error +pkg encoding/json, method (*InvalidUTF8Error) Error() string +pkg encoding/json, method (*InvalidUnmarshalError) Error() string +pkg encoding/json, method (*MarshalerError) Error() string +pkg encoding/json, method (*RawMessage) MarshalJSON() ([]byte, error) +pkg encoding/json, method (*RawMessage) UnmarshalJSON([]byte) error +pkg encoding/json, method (*SyntaxError) Error() string +pkg encoding/json, method (*UnmarshalFieldError) Error() string +pkg encoding/json, method (*UnmarshalTypeError) Error() string +pkg encoding/json, method (*UnsupportedTypeError) Error() string +pkg encoding/json, method (*UnsupportedValueError) Error() string +pkg encoding/json, type Decoder struct +pkg encoding/json, type Encoder struct +pkg encoding/json, type InvalidUTF8Error struct +pkg encoding/json, type InvalidUTF8Error struct, S string +pkg encoding/json, type InvalidUnmarshalError struct +pkg encoding/json, type InvalidUnmarshalError struct, Type reflect.Type +pkg encoding/json, type Marshaler interface { MarshalJSON } +pkg encoding/json, type Marshaler interface, MarshalJSON() ([]byte, error) +pkg encoding/json, type MarshalerError struct +pkg encoding/json, type MarshalerError struct, Err error +pkg encoding/json, type MarshalerError struct, Type reflect.Type +pkg encoding/json, type RawMessage []byte +pkg encoding/json, type SyntaxError struct +pkg encoding/json, type SyntaxError struct, Offset int64 +pkg encoding/json, type UnmarshalFieldError struct +pkg encoding/json, type UnmarshalFieldError struct, Field reflect.StructField +pkg encoding/json, type UnmarshalFieldError struct, Key string +pkg encoding/json, type UnmarshalFieldError struct, Type reflect.Type +pkg encoding/json, type UnmarshalTypeError struct +pkg encoding/json, type UnmarshalTypeError struct, Type reflect.Type +pkg encoding/json, type UnmarshalTypeError struct, Value string +pkg encoding/json, type Unmarshaler interface { UnmarshalJSON } +pkg encoding/json, type Unmarshaler interface, UnmarshalJSON([]byte) error +pkg encoding/json, type UnsupportedTypeError struct +pkg encoding/json, type UnsupportedTypeError struct, Type reflect.Type +pkg encoding/json, type UnsupportedValueError struct +pkg encoding/json, type UnsupportedValueError struct, Str string +pkg encoding/json, type UnsupportedValueError struct, Value reflect.Value +pkg encoding/pem, func Decode([]byte) (*Block, []byte) +pkg encoding/pem, func Encode(io.Writer, *Block) error +pkg encoding/pem, func EncodeToMemory(*Block) []byte +pkg encoding/pem, type Block struct +pkg encoding/pem, type Block struct, Bytes []byte +pkg encoding/pem, type Block struct, Headers map[string]string +pkg encoding/pem, type Block struct, Type string +pkg encoding/xml, const Header ideal-string +pkg encoding/xml, func CopyToken(Token) Token +pkg encoding/xml, func Escape(io.Writer, []byte) +pkg encoding/xml, func Marshal(interface{}) ([]byte, error) +pkg encoding/xml, func MarshalIndent(interface{}, string) ([]byte, error) +pkg encoding/xml, func NewDecoder(io.Reader) *Decoder +pkg encoding/xml, func NewEncoder(io.Writer) *Encoder +pkg encoding/xml, func Unmarshal([]byte, interface{}) error +pkg encoding/xml, method (*Decoder) Decode(interface{}) error +pkg encoding/xml, method (*Decoder) DecodeElement(interface{}, *StartElement) error +pkg encoding/xml, method (*Decoder) RawToken() (Token, error) +pkg encoding/xml, method (*Decoder) Skip() error +pkg encoding/xml, method (*Decoder) Token() (Token, error) +pkg encoding/xml, method (*Encoder) Encode(interface{}) error +pkg encoding/xml, method (*SyntaxError) Error() string +pkg encoding/xml, method (*TagPathError) Error() string +pkg encoding/xml, method (*UnsupportedTypeError) Error() string +pkg encoding/xml, method (CharData) Copy() CharData +pkg encoding/xml, method (Comment) Copy() Comment +pkg encoding/xml, method (Directive) Copy() Directive +pkg encoding/xml, method (ProcInst) Copy() ProcInst +pkg encoding/xml, method (StartElement) Copy() StartElement +pkg encoding/xml, method (UnmarshalError) Error() string +pkg encoding/xml, type Attr struct +pkg encoding/xml, type Attr struct, Name Name +pkg encoding/xml, type Attr struct, Value string +pkg encoding/xml, type CharData []byte +pkg encoding/xml, type Comment []byte +pkg encoding/xml, type Decoder struct +pkg encoding/xml, type Decoder struct, AutoClose []string +pkg encoding/xml, type Decoder struct, CharsetReader func(string, io.Reader) (io.Reader, error) +pkg encoding/xml, type Decoder struct, Entity map[string]string +pkg encoding/xml, type Decoder struct, Strict bool +pkg encoding/xml, type Directive []byte +pkg encoding/xml, type Encoder struct +pkg encoding/xml, type EndElement struct +pkg encoding/xml, type EndElement struct, Name Name +pkg encoding/xml, type Name struct +pkg encoding/xml, type Name struct, Local string +pkg encoding/xml, type Name struct, Space string +pkg encoding/xml, type ProcInst struct +pkg encoding/xml, type ProcInst struct, Inst []byte +pkg encoding/xml, type ProcInst struct, Target string +pkg encoding/xml, type StartElement struct +pkg encoding/xml, type StartElement struct, Attr []Attr +pkg encoding/xml, type StartElement struct, Name Name +pkg encoding/xml, type SyntaxError struct +pkg encoding/xml, type SyntaxError struct, Line int +pkg encoding/xml, type SyntaxError struct, Msg string +pkg encoding/xml, type TagPathError struct +pkg encoding/xml, type TagPathError struct, Field1 string +pkg encoding/xml, type TagPathError struct, Field2 string +pkg encoding/xml, type TagPathError struct, Struct reflect.Type +pkg encoding/xml, type TagPathError struct, Tag1 string +pkg encoding/xml, type TagPathError struct, Tag2 string +pkg encoding/xml, type Token interface {} +pkg encoding/xml, type UnmarshalError string +pkg encoding/xml, type UnsupportedTypeError struct +pkg encoding/xml, type UnsupportedTypeError struct, Type reflect.Type +pkg encoding/xml, var HTMLAutoClose []string +pkg encoding/xml, var HTMLEntity map[string]string +pkg errors, func New(string) error +pkg expvar, func Do(func(KeyValue)) +pkg expvar, func Get(string) Var +pkg expvar, func NewFloat(string) *Float +pkg expvar, func NewInt(string) *Int +pkg expvar, func NewMap(string) *Map +pkg expvar, func NewString(string) *String +pkg expvar, func Publish(string, Var) +pkg expvar, method (*Float) Add(float64) +pkg expvar, method (*Float) Set(float64) +pkg expvar, method (*Float) String() string +pkg expvar, method (*Int) Add(int64) +pkg expvar, method (*Int) Set(int64) +pkg expvar, method (*Int) String() string +pkg expvar, method (*Map) Add(string, int64) +pkg expvar, method (*Map) AddFloat(string, float64) +pkg expvar, method (*Map) Do(func(KeyValue)) +pkg expvar, method (*Map) Get(string) Var +pkg expvar, method (*Map) Init() *Map +pkg expvar, method (*Map) Set(string, Var) +pkg expvar, method (*Map) String() string +pkg expvar, method (*String) Set(string) +pkg expvar, method (*String) String() string +pkg expvar, method (Func) String() string +pkg expvar, type Float struct +pkg expvar, type Func func() interface{} +pkg expvar, type Int struct +pkg expvar, type KeyValue struct +pkg expvar, type KeyValue struct, Key string +pkg expvar, type KeyValue struct, Value Var +pkg expvar, type Map struct +pkg expvar, type String struct +pkg expvar, type Var interface { String } +pkg expvar, type Var interface, String() string +pkg flag, const ContinueOnError ErrorHandling +pkg flag, const ExitOnError ErrorHandling +pkg flag, const PanicOnError ErrorHandling +pkg flag, func Arg(int) string +pkg flag, func Args() []string +pkg flag, func Bool(string, bool, string) *bool +pkg flag, func BoolVar(*bool, string, bool, string) +pkg flag, func Duration(string, time.Duration, string) *time.Duration +pkg flag, func DurationVar(*time.Duration, string, time.Duration, string) +pkg flag, func Float64(string, float64, string) *float64 +pkg flag, func Float64Var(*float64, string, float64, string) +pkg flag, func Int(string, int, string) *int +pkg flag, func Int64(string, int64, string) *int64 +pkg flag, func Int64Var(*int64, string, int64, string) +pkg flag, func IntVar(*int, string, int, string) +pkg flag, func Lookup(string) *Flag +pkg flag, func NArg() int +pkg flag, func NFlag() int +pkg flag, func NewFlagSet(string, ErrorHandling) *FlagSet +pkg flag, func Parse() +pkg flag, func Parsed() bool +pkg flag, func PrintDefaults() +pkg flag, func Set(string) error +pkg flag, func String(string, string, string) *string +pkg flag, func StringVar(*string, string, string, string) +pkg flag, func Uint(string, uint, string) *uint +pkg flag, func Uint64(string, uint64, string) *uint64 +pkg flag, func Uint64Var(*uint64, string, uint64, string) +pkg flag, func UintVar(*uint, string, uint, string) +pkg flag, func Var(Value, string, string) +pkg flag, func Visit(func(*Flag)) +pkg flag, func VisitAll(func(*Flag)) +pkg flag, method (*FlagSet) Arg(int) string +pkg flag, method (*FlagSet) Args() []string +pkg flag, method (*FlagSet) Bool(string, bool, string) *bool +pkg flag, method (*FlagSet) BoolVar(*bool, string, bool, string) +pkg flag, method (*FlagSet) Duration(string, time.Duration, string) *time.Duration +pkg flag, method (*FlagSet) DurationVar(*time.Duration, string, time.Duration, string) +pkg flag, method (*FlagSet) Float64(string, float64, string) *float64 +pkg flag, method (*FlagSet) Float64Var(*float64, string, float64, string) +pkg flag, method (*FlagSet) Init(string, ErrorHandling) +pkg flag, method (*FlagSet) Int(string, int, string) *int +pkg flag, method (*FlagSet) Int64(string, int64, string) *int64 +pkg flag, method (*FlagSet) Int64Var(*int64, string, int64, string) +pkg flag, method (*FlagSet) IntVar(*int, string, int, string) +pkg flag, method (*FlagSet) Lookup(string) *Flag +pkg flag, method (*FlagSet) NArg() int +pkg flag, method (*FlagSet) NFlag() int +pkg flag, method (*FlagSet) Parse([]string) error +pkg flag, method (*FlagSet) Parsed() bool +pkg flag, method (*FlagSet) PrintDefaults() +pkg flag, method (*FlagSet) Set(string) error +pkg flag, method (*FlagSet) SetOutput(io.Writer) +pkg flag, method (*FlagSet) String(string, string, string) *string +pkg flag, method (*FlagSet) StringVar(*string, string, string, string) +pkg flag, method (*FlagSet) Uint(string, uint, string) *uint +pkg flag, method (*FlagSet) Uint64(string, uint64, string) *uint64 +pkg flag, method (*FlagSet) Uint64Var(*uint64, string, uint64, string) +pkg flag, method (*FlagSet) UintVar(*uint, string, uint, string) +pkg flag, method (*FlagSet) Var(Value, string, string) +pkg flag, method (*FlagSet) Visit(func(*Flag)) +pkg flag, method (*FlagSet) VisitAll(func(*Flag)) +pkg flag, type ErrorHandling int +pkg flag, type Flag struct +pkg flag, type Flag struct, DefValue string +pkg flag, type Flag struct, Name string +pkg flag, type Flag struct, Usage string +pkg flag, type Flag struct, Value Value +pkg flag, type FlagSet struct +pkg flag, type FlagSet struct, Usage func() +pkg flag, type Value interface { Set, String } +pkg flag, type Value interface, Set(string) error +pkg flag, type Value interface, String() string +pkg flag, var ErrHelp error +pkg flag, var Usage func() +pkg fmt, func Errorf(string, ...interface{}) error +pkg fmt, func Fprint(io.Writer, ...interface{}) (int, error) +pkg fmt, func Fprintf(io.Writer, string, ...interface{}) (int, error) +pkg fmt, func Fprintln(io.Writer, ...interface{}) (int, error) +pkg fmt, func Fscan(io.Reader, ...interface{}) (int, error) +pkg fmt, func Fscanf(io.Reader, string, ...interface{}) (int, error) +pkg fmt, func Fscanln(io.Reader, ...interface{}) (int, error) +pkg fmt, func Print(...interface{}) (int, error) +pkg fmt, func Printf(string, ...interface{}) (int, error) +pkg fmt, func Println(...interface{}) (int, error) +pkg fmt, func Scan(...interface{}) (int, error) +pkg fmt, func Scanf(string, ...interface{}) (int, error) +pkg fmt, func Scanln(...interface{}) (int, error) +pkg fmt, func Sprint(...interface{}) string +pkg fmt, func Sprintf(string, ...interface{}) string +pkg fmt, func Sprintln(...interface{}) string +pkg fmt, func Sscan(string, ...interface{}) (int, error) +pkg fmt, func Sscanf(string, string, ...interface{}) (int, error) +pkg fmt, func Sscanln(string, ...interface{}) (int, error) +pkg fmt, type Formatter interface { Format } +pkg fmt, type Formatter interface, Format(State, rune) +pkg fmt, type GoStringer interface { GoString } +pkg fmt, type GoStringer interface, GoString() string +pkg fmt, type ScanState interface { Read, ReadRune, SkipSpace, Token, UnreadRune, Width } +pkg fmt, type ScanState interface, Read([]byte) (int, error) +pkg fmt, type ScanState interface, ReadRune() (rune, int, error) +pkg fmt, type ScanState interface, SkipSpace() +pkg fmt, type ScanState interface, Token(bool, func(rune) bool) ([]byte, error) +pkg fmt, type ScanState interface, UnreadRune() error +pkg fmt, type ScanState interface, Width() (int, bool) +pkg fmt, type Scanner interface { Scan } +pkg fmt, type Scanner interface, Scan(ScanState, rune) error +pkg fmt, type State interface { Flag, Precision, Width, Write } +pkg fmt, type State interface, Flag(int) bool +pkg fmt, type State interface, Precision() (int, bool) +pkg fmt, type State interface, Width() (int, bool) +pkg fmt, type State interface, Write([]byte) (int, error) +pkg fmt, type Stringer interface { String } +pkg fmt, type Stringer interface, String() string +pkg go/ast, const Bad ObjKind +pkg go/ast, const Con ObjKind +pkg go/ast, const FilterFuncDuplicates MergeMode +pkg go/ast, const FilterImportDuplicates MergeMode +pkg go/ast, const FilterUnassociatedComments MergeMode +pkg go/ast, const Fun ObjKind +pkg go/ast, const Lbl ObjKind +pkg go/ast, const Pkg ObjKind +pkg go/ast, const RECV ChanDir +pkg go/ast, const SEND ChanDir +pkg go/ast, const Typ ObjKind +pkg go/ast, const Var ObjKind +pkg go/ast, func FileExports(*File) bool +pkg go/ast, func FilterDecl(Decl, Filter) bool +pkg go/ast, func FilterFile(*File, Filter) bool +pkg go/ast, func FilterPackage(*Package, Filter) bool +pkg go/ast, func Fprint(io.Writer, *token.FileSet, interface{}, FieldFilter) error +pkg go/ast, func Inspect(Node, func(Node) bool) +pkg go/ast, func IsExported(string) bool +pkg go/ast, func MergePackageFiles(*Package, MergeMode) *File +pkg go/ast, func NewIdent(string) *Ident +pkg go/ast, func NewObj(ObjKind, string) *Object +pkg go/ast, func NewPackage(*token.FileSet, map[string]*File, Importer, *Scope) (*Package, error) +pkg go/ast, func NewScope(*Scope) *Scope +pkg go/ast, func NotNilFilter(string, reflect.Value) bool +pkg go/ast, func PackageExports(*Package) bool +pkg go/ast, func Print(*token.FileSet, interface{}) error +pkg go/ast, func SortImports(*token.FileSet, *File) +pkg go/ast, func Walk(Visitor, Node) +pkg go/ast, method (*ArrayType) End() token.Pos +pkg go/ast, method (*ArrayType) Pos() token.Pos +pkg go/ast, method (*AssignStmt) End() token.Pos +pkg go/ast, method (*AssignStmt) Pos() token.Pos +pkg go/ast, method (*BadDecl) End() token.Pos +pkg go/ast, method (*BadDecl) Pos() token.Pos +pkg go/ast, method (*BadExpr) End() token.Pos +pkg go/ast, method (*BadExpr) Pos() token.Pos +pkg go/ast, method (*BadStmt) End() token.Pos +pkg go/ast, method (*BadStmt) Pos() token.Pos +pkg go/ast, method (*BasicLit) End() token.Pos +pkg go/ast, method (*BasicLit) Pos() token.Pos +pkg go/ast, method (*BinaryExpr) End() token.Pos +pkg go/ast, method (*BinaryExpr) Pos() token.Pos +pkg go/ast, method (*BlockStmt) End() token.Pos +pkg go/ast, method (*BlockStmt) Pos() token.Pos +pkg go/ast, method (*BranchStmt) End() token.Pos +pkg go/ast, method (*BranchStmt) Pos() token.Pos +pkg go/ast, method (*CallExpr) End() token.Pos +pkg go/ast, method (*CallExpr) Pos() token.Pos +pkg go/ast, method (*CaseClause) End() token.Pos +pkg go/ast, method (*CaseClause) Pos() token.Pos +pkg go/ast, method (*ChanType) End() token.Pos +pkg go/ast, method (*ChanType) Pos() token.Pos +pkg go/ast, method (*CommClause) End() token.Pos +pkg go/ast, method (*CommClause) Pos() token.Pos +pkg go/ast, method (*Comment) End() token.Pos +pkg go/ast, method (*Comment) Pos() token.Pos +pkg go/ast, method (*CommentGroup) End() token.Pos +pkg go/ast, method (*CommentGroup) Pos() token.Pos +pkg go/ast, method (*CommentGroup) Text() string +pkg go/ast, method (*CompositeLit) End() token.Pos +pkg go/ast, method (*CompositeLit) Pos() token.Pos +pkg go/ast, method (*DeclStmt) End() token.Pos +pkg go/ast, method (*DeclStmt) Pos() token.Pos +pkg go/ast, method (*DeferStmt) End() token.Pos +pkg go/ast, method (*DeferStmt) Pos() token.Pos +pkg go/ast, method (*Ellipsis) End() token.Pos +pkg go/ast, method (*Ellipsis) Pos() token.Pos +pkg go/ast, method (*EmptyStmt) End() token.Pos +pkg go/ast, method (*EmptyStmt) Pos() token.Pos +pkg go/ast, method (*ExprStmt) End() token.Pos +pkg go/ast, method (*ExprStmt) Pos() token.Pos +pkg go/ast, method (*Field) End() token.Pos +pkg go/ast, method (*Field) Pos() token.Pos +pkg go/ast, method (*FieldList) End() token.Pos +pkg go/ast, method (*FieldList) NumFields() int +pkg go/ast, method (*FieldList) Pos() token.Pos +pkg go/ast, method (*File) End() token.Pos +pkg go/ast, method (*File) Pos() token.Pos +pkg go/ast, method (*ForStmt) End() token.Pos +pkg go/ast, method (*ForStmt) Pos() token.Pos +pkg go/ast, method (*FuncDecl) End() token.Pos +pkg go/ast, method (*FuncDecl) Pos() token.Pos +pkg go/ast, method (*FuncLit) End() token.Pos +pkg go/ast, method (*FuncLit) Pos() token.Pos +pkg go/ast, method (*FuncType) End() token.Pos +pkg go/ast, method (*FuncType) Pos() token.Pos +pkg go/ast, method (*GenDecl) End() token.Pos +pkg go/ast, method (*GenDecl) Pos() token.Pos +pkg go/ast, method (*GoStmt) End() token.Pos +pkg go/ast, method (*GoStmt) Pos() token.Pos +pkg go/ast, method (*Ident) End() token.Pos +pkg go/ast, method (*Ident) IsExported() bool +pkg go/ast, method (*Ident) Pos() token.Pos +pkg go/ast, method (*Ident) String() string +pkg go/ast, method (*IfStmt) End() token.Pos +pkg go/ast, method (*IfStmt) Pos() token.Pos +pkg go/ast, method (*ImportSpec) End() token.Pos +pkg go/ast, method (*ImportSpec) Pos() token.Pos +pkg go/ast, method (*IncDecStmt) End() token.Pos +pkg go/ast, method (*IncDecStmt) Pos() token.Pos +pkg go/ast, method (*IndexExpr) End() token.Pos +pkg go/ast, method (*IndexExpr) Pos() token.Pos +pkg go/ast, method (*InterfaceType) End() token.Pos +pkg go/ast, method (*InterfaceType) Pos() token.Pos +pkg go/ast, method (*KeyValueExpr) End() token.Pos +pkg go/ast, method (*KeyValueExpr) Pos() token.Pos +pkg go/ast, method (*LabeledStmt) End() token.Pos +pkg go/ast, method (*LabeledStmt) Pos() token.Pos +pkg go/ast, method (*MapType) End() token.Pos +pkg go/ast, method (*MapType) Pos() token.Pos +pkg go/ast, method (*Object) Pos() token.Pos +pkg go/ast, method (*Package) End() token.Pos +pkg go/ast, method (*Package) Pos() token.Pos +pkg go/ast, method (*ParenExpr) End() token.Pos +pkg go/ast, method (*ParenExpr) Pos() token.Pos +pkg go/ast, method (*RangeStmt) End() token.Pos +pkg go/ast, method (*RangeStmt) Pos() token.Pos +pkg go/ast, method (*ReturnStmt) End() token.Pos +pkg go/ast, method (*ReturnStmt) Pos() token.Pos +pkg go/ast, method (*Scope) Insert(*Object) *Object +pkg go/ast, method (*Scope) Lookup(string) *Object +pkg go/ast, method (*Scope) String() string +pkg go/ast, method (*SelectStmt) End() token.Pos +pkg go/ast, method (*SelectStmt) Pos() token.Pos +pkg go/ast, method (*SelectorExpr) End() token.Pos +pkg go/ast, method (*SelectorExpr) Pos() token.Pos +pkg go/ast, method (*SendStmt) End() token.Pos +pkg go/ast, method (*SendStmt) Pos() token.Pos +pkg go/ast, method (*SliceExpr) End() token.Pos +pkg go/ast, method (*SliceExpr) Pos() token.Pos +pkg go/ast, method (*StarExpr) End() token.Pos +pkg go/ast, method (*StarExpr) Pos() token.Pos +pkg go/ast, method (*StructType) End() token.Pos +pkg go/ast, method (*StructType) Pos() token.Pos +pkg go/ast, method (*SwitchStmt) End() token.Pos +pkg go/ast, method (*SwitchStmt) Pos() token.Pos +pkg go/ast, method (*TypeAssertExpr) End() token.Pos +pkg go/ast, method (*TypeAssertExpr) Pos() token.Pos +pkg go/ast, method (*TypeSpec) End() token.Pos +pkg go/ast, method (*TypeSpec) Pos() token.Pos +pkg go/ast, method (*TypeSwitchStmt) End() token.Pos +pkg go/ast, method (*TypeSwitchStmt) Pos() token.Pos +pkg go/ast, method (*UnaryExpr) End() token.Pos +pkg go/ast, method (*UnaryExpr) Pos() token.Pos +pkg go/ast, method (*ValueSpec) End() token.Pos +pkg go/ast, method (*ValueSpec) Pos() token.Pos +pkg go/ast, method (ObjKind) String() string +pkg go/ast, type ArrayType struct +pkg go/ast, type ArrayType struct, Elt Expr +pkg go/ast, type ArrayType struct, Lbrack token.Pos +pkg go/ast, type ArrayType struct, Len Expr +pkg go/ast, type AssignStmt struct +pkg go/ast, type AssignStmt struct, Lhs []Expr +pkg go/ast, type AssignStmt struct, Rhs []Expr +pkg go/ast, type AssignStmt struct, Tok token.Token +pkg go/ast, type AssignStmt struct, TokPos token.Pos +pkg go/ast, type BadDecl struct +pkg go/ast, type BadDecl struct, From token.Pos +pkg go/ast, type BadDecl struct, To token.Pos +pkg go/ast, type BadExpr struct +pkg go/ast, type BadExpr struct, From token.Pos +pkg go/ast, type BadExpr struct, To token.Pos +pkg go/ast, type BadStmt struct +pkg go/ast, type BadStmt struct, From token.Pos +pkg go/ast, type BadStmt struct, To token.Pos +pkg go/ast, type BasicLit struct +pkg go/ast, type BasicLit struct, Kind token.Token +pkg go/ast, type BasicLit struct, Value string +pkg go/ast, type BasicLit struct, ValuePos token.Pos +pkg go/ast, type BinaryExpr struct +pkg go/ast, type BinaryExpr struct, Op token.Token +pkg go/ast, type BinaryExpr struct, OpPos token.Pos +pkg go/ast, type BinaryExpr struct, X Expr +pkg go/ast, type BinaryExpr struct, Y Expr +pkg go/ast, type BlockStmt struct +pkg go/ast, type BlockStmt struct, Lbrace token.Pos +pkg go/ast, type BlockStmt struct, List []Stmt +pkg go/ast, type BlockStmt struct, Rbrace token.Pos +pkg go/ast, type BranchStmt struct +pkg go/ast, type BranchStmt struct, Label *Ident +pkg go/ast, type BranchStmt struct, Tok token.Token +pkg go/ast, type BranchStmt struct, TokPos token.Pos +pkg go/ast, type CallExpr struct +pkg go/ast, type CallExpr struct, Args []Expr +pkg go/ast, type CallExpr struct, Ellipsis token.Pos +pkg go/ast, type CallExpr struct, Fun Expr +pkg go/ast, type CallExpr struct, Lparen token.Pos +pkg go/ast, type CallExpr struct, Rparen token.Pos +pkg go/ast, type CaseClause struct +pkg go/ast, type CaseClause struct, Body []Stmt +pkg go/ast, type CaseClause struct, Case token.Pos +pkg go/ast, type CaseClause struct, Colon token.Pos +pkg go/ast, type CaseClause struct, List []Expr +pkg go/ast, type ChanDir int +pkg go/ast, type ChanType struct +pkg go/ast, type ChanType struct, Begin token.Pos +pkg go/ast, type ChanType struct, Dir ChanDir +pkg go/ast, type ChanType struct, Value Expr +pkg go/ast, type CommClause struct +pkg go/ast, type CommClause struct, Body []Stmt +pkg go/ast, type CommClause struct, Case token.Pos +pkg go/ast, type CommClause struct, Colon token.Pos +pkg go/ast, type CommClause struct, Comm Stmt +pkg go/ast, type Comment struct +pkg go/ast, type Comment struct, Slash token.Pos +pkg go/ast, type Comment struct, Text string +pkg go/ast, type CommentGroup struct +pkg go/ast, type CommentGroup struct, List []*Comment +pkg go/ast, type CompositeLit struct +pkg go/ast, type CompositeLit struct, Elts []Expr +pkg go/ast, type CompositeLit struct, Lbrace token.Pos +pkg go/ast, type CompositeLit struct, Rbrace token.Pos +pkg go/ast, type CompositeLit struct, Type Expr +pkg go/ast, type Decl interface { End, Pos } +pkg go/ast, type Decl interface, End() token.Pos +pkg go/ast, type Decl interface, Pos() token.Pos +pkg go/ast, type DeclStmt struct +pkg go/ast, type DeclStmt struct, Decl Decl +pkg go/ast, type DeferStmt struct +pkg go/ast, type DeferStmt struct, Call *CallExpr +pkg go/ast, type DeferStmt struct, Defer token.Pos +pkg go/ast, type Ellipsis struct +pkg go/ast, type Ellipsis struct, Ellipsis token.Pos +pkg go/ast, type Ellipsis struct, Elt Expr +pkg go/ast, type EmptyStmt struct +pkg go/ast, type EmptyStmt struct, Semicolon token.Pos +pkg go/ast, type Expr interface { End, Pos } +pkg go/ast, type Expr interface, End() token.Pos +pkg go/ast, type Expr interface, Pos() token.Pos +pkg go/ast, type ExprStmt struct +pkg go/ast, type ExprStmt struct, X Expr +pkg go/ast, type Field struct +pkg go/ast, type Field struct, Comment *CommentGroup +pkg go/ast, type Field struct, Doc *CommentGroup +pkg go/ast, type Field struct, Names []*Ident +pkg go/ast, type Field struct, Tag *BasicLit +pkg go/ast, type Field struct, Type Expr +pkg go/ast, type FieldFilter func(name string, value reflect.Value) bool +pkg go/ast, type FieldList struct +pkg go/ast, type FieldList struct, Closing token.Pos +pkg go/ast, type FieldList struct, List []*Field +pkg go/ast, type FieldList struct, Opening token.Pos +pkg go/ast, type File struct +pkg go/ast, type File struct, Comments []*CommentGroup +pkg go/ast, type File struct, Decls []Decl +pkg go/ast, type File struct, Doc *CommentGroup +pkg go/ast, type File struct, Imports []*ImportSpec +pkg go/ast, type File struct, Name *Ident +pkg go/ast, type File struct, Package token.Pos +pkg go/ast, type File struct, Scope *Scope +pkg go/ast, type File struct, Unresolved []*Ident +pkg go/ast, type Filter func(string) bool +pkg go/ast, type ForStmt struct +pkg go/ast, type ForStmt struct, Body *BlockStmt +pkg go/ast, type ForStmt struct, Cond Expr +pkg go/ast, type ForStmt struct, For token.Pos +pkg go/ast, type ForStmt struct, Init Stmt +pkg go/ast, type ForStmt struct, Post Stmt +pkg go/ast, type FuncDecl struct +pkg go/ast, type FuncDecl struct, Body *BlockStmt +pkg go/ast, type FuncDecl struct, Doc *CommentGroup +pkg go/ast, type FuncDecl struct, Name *Ident +pkg go/ast, type FuncDecl struct, Recv *FieldList +pkg go/ast, type FuncDecl struct, Type *FuncType +pkg go/ast, type FuncLit struct +pkg go/ast, type FuncLit struct, Body *BlockStmt +pkg go/ast, type FuncLit struct, Type *FuncType +pkg go/ast, type FuncType struct +pkg go/ast, type FuncType struct, Func token.Pos +pkg go/ast, type FuncType struct, Params *FieldList +pkg go/ast, type FuncType struct, Results *FieldList +pkg go/ast, type GenDecl struct +pkg go/ast, type GenDecl struct, Doc *CommentGroup +pkg go/ast, type GenDecl struct, Lparen token.Pos +pkg go/ast, type GenDecl struct, Rparen token.Pos +pkg go/ast, type GenDecl struct, Specs []Spec +pkg go/ast, type GenDecl struct, Tok token.Token +pkg go/ast, type GenDecl struct, TokPos token.Pos +pkg go/ast, type GoStmt struct +pkg go/ast, type GoStmt struct, Call *CallExpr +pkg go/ast, type GoStmt struct, Go token.Pos +pkg go/ast, type Ident struct +pkg go/ast, type Ident struct, Name string +pkg go/ast, type Ident struct, NamePos token.Pos +pkg go/ast, type Ident struct, Obj *Object +pkg go/ast, type IfStmt struct +pkg go/ast, type IfStmt struct, Body *BlockStmt +pkg go/ast, type IfStmt struct, Cond Expr +pkg go/ast, type IfStmt struct, Else Stmt +pkg go/ast, type IfStmt struct, If token.Pos +pkg go/ast, type IfStmt struct, Init Stmt +pkg go/ast, type ImportSpec struct +pkg go/ast, type ImportSpec struct, Comment *CommentGroup +pkg go/ast, type ImportSpec struct, Doc *CommentGroup +pkg go/ast, type ImportSpec struct, EndPos token.Pos +pkg go/ast, type ImportSpec struct, Name *Ident +pkg go/ast, type ImportSpec struct, Path *BasicLit +pkg go/ast, type Importer func(imports map[string]*Object, path string) (pkg *Object, err error) +pkg go/ast, type IncDecStmt struct +pkg go/ast, type IncDecStmt struct, Tok token.Token +pkg go/ast, type IncDecStmt struct, TokPos token.Pos +pkg go/ast, type IncDecStmt struct, X Expr +pkg go/ast, type IndexExpr struct +pkg go/ast, type IndexExpr struct, Index Expr +pkg go/ast, type IndexExpr struct, Lbrack token.Pos +pkg go/ast, type IndexExpr struct, Rbrack token.Pos +pkg go/ast, type IndexExpr struct, X Expr +pkg go/ast, type InterfaceType struct +pkg go/ast, type InterfaceType struct, Incomplete bool +pkg go/ast, type InterfaceType struct, Interface token.Pos +pkg go/ast, type InterfaceType struct, Methods *FieldList +pkg go/ast, type KeyValueExpr struct +pkg go/ast, type KeyValueExpr struct, Colon token.Pos +pkg go/ast, type KeyValueExpr struct, Key Expr +pkg go/ast, type KeyValueExpr struct, Value Expr +pkg go/ast, type LabeledStmt struct +pkg go/ast, type LabeledStmt struct, Colon token.Pos +pkg go/ast, type LabeledStmt struct, Label *Ident +pkg go/ast, type LabeledStmt struct, Stmt Stmt +pkg go/ast, type MapType struct +pkg go/ast, type MapType struct, Key Expr +pkg go/ast, type MapType struct, Map token.Pos +pkg go/ast, type MapType struct, Value Expr +pkg go/ast, type MergeMode uint +pkg go/ast, type Node interface { End, Pos } +pkg go/ast, type Node interface, End() token.Pos +pkg go/ast, type Node interface, Pos() token.Pos +pkg go/ast, type ObjKind int +pkg go/ast, type Object struct +pkg go/ast, type Object struct, Data interface{} +pkg go/ast, type Object struct, Decl interface{} +pkg go/ast, type Object struct, Kind ObjKind +pkg go/ast, type Object struct, Name string +pkg go/ast, type Object struct, Type interface{} +pkg go/ast, type Package struct +pkg go/ast, type Package struct, Files map[string]*File +pkg go/ast, type Package struct, Imports map[string]*Object +pkg go/ast, type Package struct, Name string +pkg go/ast, type Package struct, Scope *Scope +pkg go/ast, type ParenExpr struct +pkg go/ast, type ParenExpr struct, Lparen token.Pos +pkg go/ast, type ParenExpr struct, Rparen token.Pos +pkg go/ast, type ParenExpr struct, X Expr +pkg go/ast, type RangeStmt struct +pkg go/ast, type RangeStmt struct, Body *BlockStmt +pkg go/ast, type RangeStmt struct, For token.Pos +pkg go/ast, type RangeStmt struct, Key Expr +pkg go/ast, type RangeStmt struct, Tok token.Token +pkg go/ast, type RangeStmt struct, TokPos token.Pos +pkg go/ast, type RangeStmt struct, Value Expr +pkg go/ast, type RangeStmt struct, X Expr +pkg go/ast, type ReturnStmt struct +pkg go/ast, type ReturnStmt struct, Results []Expr +pkg go/ast, type ReturnStmt struct, Return token.Pos +pkg go/ast, type Scope struct +pkg go/ast, type Scope struct, Objects map[string]*Object +pkg go/ast, type Scope struct, Outer *Scope +pkg go/ast, type SelectStmt struct +pkg go/ast, type SelectStmt struct, Body *BlockStmt +pkg go/ast, type SelectStmt struct, Select token.Pos +pkg go/ast, type SelectorExpr struct +pkg go/ast, type SelectorExpr struct, Sel *Ident +pkg go/ast, type SelectorExpr struct, X Expr +pkg go/ast, type SendStmt struct +pkg go/ast, type SendStmt struct, Arrow token.Pos +pkg go/ast, type SendStmt struct, Chan Expr +pkg go/ast, type SendStmt struct, Value Expr +pkg go/ast, type SliceExpr struct +pkg go/ast, type SliceExpr struct, High Expr +pkg go/ast, type SliceExpr struct, Lbrack token.Pos +pkg go/ast, type SliceExpr struct, Low Expr +pkg go/ast, type SliceExpr struct, Rbrack token.Pos +pkg go/ast, type SliceExpr struct, X Expr +pkg go/ast, type Spec interface { End, Pos } +pkg go/ast, type Spec interface, End() token.Pos +pkg go/ast, type Spec interface, Pos() token.Pos +pkg go/ast, type StarExpr struct +pkg go/ast, type StarExpr struct, Star token.Pos +pkg go/ast, type StarExpr struct, X Expr +pkg go/ast, type Stmt interface { End, Pos } +pkg go/ast, type Stmt interface, End() token.Pos +pkg go/ast, type Stmt interface, Pos() token.Pos +pkg go/ast, type StructType struct +pkg go/ast, type StructType struct, Fields *FieldList +pkg go/ast, type StructType struct, Incomplete bool +pkg go/ast, type StructType struct, Struct token.Pos +pkg go/ast, type SwitchStmt struct +pkg go/ast, type SwitchStmt struct, Body *BlockStmt +pkg go/ast, type SwitchStmt struct, Init Stmt +pkg go/ast, type SwitchStmt struct, Switch token.Pos +pkg go/ast, type SwitchStmt struct, Tag Expr +pkg go/ast, type TypeAssertExpr struct +pkg go/ast, type TypeAssertExpr struct, Type Expr +pkg go/ast, type TypeAssertExpr struct, X Expr +pkg go/ast, type TypeSpec struct +pkg go/ast, type TypeSpec struct, Comment *CommentGroup +pkg go/ast, type TypeSpec struct, Doc *CommentGroup +pkg go/ast, type TypeSpec struct, Name *Ident +pkg go/ast, type TypeSpec struct, Type Expr +pkg go/ast, type TypeSwitchStmt struct +pkg go/ast, type TypeSwitchStmt struct, Assign Stmt +pkg go/ast, type TypeSwitchStmt struct, Body *BlockStmt +pkg go/ast, type TypeSwitchStmt struct, Init Stmt +pkg go/ast, type TypeSwitchStmt struct, Switch token.Pos +pkg go/ast, type UnaryExpr struct +pkg go/ast, type UnaryExpr struct, Op token.Token +pkg go/ast, type UnaryExpr struct, OpPos token.Pos +pkg go/ast, type UnaryExpr struct, X Expr +pkg go/ast, type ValueSpec struct +pkg go/ast, type ValueSpec struct, Comment *CommentGroup +pkg go/ast, type ValueSpec struct, Doc *CommentGroup +pkg go/ast, type ValueSpec struct, Names []*Ident +pkg go/ast, type ValueSpec struct, Type Expr +pkg go/ast, type ValueSpec struct, Values []Expr +pkg go/ast, type Visitor interface { Visit } +pkg go/ast, type Visitor interface, Visit(Node) Visitor +pkg go/build, const AllowBinary ImportMode +pkg go/build, const FindOnly ImportMode +pkg go/build, func ArchChar(string) (string, error) +pkg go/build, func Import(string, ImportMode) (*Package, error) +pkg go/build, func ImportDir(string, ImportMode) (*Package, error) +pkg go/build, func IsLocalImport(string) bool +pkg go/build, method (*Context) Import(string, string, ImportMode) (*Package, error) +pkg go/build, method (*Context) ImportDir(string, ImportMode) (*Package, error) +pkg go/build, method (*Context) SrcDirs() []string +pkg go/build, method (*NoGoError) Error() string +pkg go/build, method (*Package) IsCommand() bool +pkg go/build, type Context struct +pkg go/build, type Context struct, BuildTags []string +pkg go/build, type Context struct, CgoEnabled bool +pkg go/build, type Context struct, Compiler string +pkg go/build, type Context struct, GOARCH string +pkg go/build, type Context struct, GOOS string +pkg go/build, type Context struct, GOPATH string +pkg go/build, type Context struct, GOROOT string +pkg go/build, type Context struct, HasSubdir func(string) (string, bool) +pkg go/build, type Context struct, IsAbsPath func(string) bool +pkg go/build, type Context struct, IsDir func(string) bool +pkg go/build, type Context struct, JoinPath func(...string) string +pkg go/build, type Context struct, OpenFile func(string) (io.ReadCloser, error) +pkg go/build, type Context struct, ReadDir func(string) ([]os.FileInfo, error) +pkg go/build, type Context struct, SplitPathList func(string) []string +pkg go/build, type Context struct, UseAllFiles bool +pkg go/build, type ImportMode uint +pkg go/build, type NoGoError struct +pkg go/build, type NoGoError struct, Dir string +pkg go/build, type Package struct +pkg go/build, type Package struct, BinDir string +pkg go/build, type Package struct, CFiles []string +pkg go/build, type Package struct, CgoCFLAGS []string +pkg go/build, type Package struct, CgoFiles []string +pkg go/build, type Package struct, CgoLDFLAGS []string +pkg go/build, type Package struct, CgoPkgConfig []string +pkg go/build, type Package struct, Dir string +pkg go/build, type Package struct, Doc string +pkg go/build, type Package struct, GoFiles []string +pkg go/build, type Package struct, Goroot bool +pkg go/build, type Package struct, HFiles []string +pkg go/build, type Package struct, ImportPath string +pkg go/build, type Package struct, ImportPos map[string][]token.Position +pkg go/build, type Package struct, Imports []string +pkg go/build, type Package struct, Name string +pkg go/build, type Package struct, PkgObj string +pkg go/build, type Package struct, PkgRoot string +pkg go/build, type Package struct, Root string +pkg go/build, type Package struct, SFiles []string +pkg go/build, type Package struct, SrcRoot string +pkg go/build, type Package struct, SysoFiles []string +pkg go/build, type Package struct, TestGoFiles []string +pkg go/build, type Package struct, TestImportPos map[string][]token.Position +pkg go/build, type Package struct, TestImports []string +pkg go/build, type Package struct, XTestGoFiles []string +pkg go/build, type Package struct, XTestImportPos map[string][]token.Position +pkg go/build, type Package struct, XTestImports []string +pkg go/build, var Default Context +pkg go/build, var ToolDir string +pkg go/doc, const AllDecls Mode +pkg go/doc, const AllMethods Mode +pkg go/doc, func Examples(...*ast.File) []*Example +pkg go/doc, func New(*ast.Package, string, Mode) *Package +pkg go/doc, func Synopsis(string) string +pkg go/doc, func ToHTML(io.Writer, string, map[string]string) +pkg go/doc, func ToText(io.Writer, string, string, int) +pkg go/doc, method (*Package) Filter(Filter) +pkg go/doc, type Example struct +pkg go/doc, type Example struct, Code ast.Node +pkg go/doc, type Example struct, Comments []*ast.CommentGroup +pkg go/doc, type Example struct, Doc string +pkg go/doc, type Example struct, Name string +pkg go/doc, type Example struct, Output string +pkg go/doc, type Filter func(string) bool +pkg go/doc, type Func struct +pkg go/doc, type Func struct, Decl *ast.FuncDecl +pkg go/doc, type Func struct, Doc string +pkg go/doc, type Func struct, Level int +pkg go/doc, type Func struct, Name string +pkg go/doc, type Func struct, Orig string +pkg go/doc, type Func struct, Recv string +pkg go/doc, type Mode int +pkg go/doc, type Package struct +pkg go/doc, type Package struct, Bugs []string +pkg go/doc, type Package struct, Consts []*Value +pkg go/doc, type Package struct, Doc string +pkg go/doc, type Package struct, Filenames []string +pkg go/doc, type Package struct, Funcs []*Func +pkg go/doc, type Package struct, ImportPath string +pkg go/doc, type Package struct, Imports []string +pkg go/doc, type Package struct, Name string +pkg go/doc, type Package struct, Types []*Type +pkg go/doc, type Package struct, Vars []*Value +pkg go/doc, type Type struct +pkg go/doc, type Type struct, Consts []*Value +pkg go/doc, type Type struct, Decl *ast.GenDecl +pkg go/doc, type Type struct, Doc string +pkg go/doc, type Type struct, Funcs []*Func +pkg go/doc, type Type struct, Methods []*Func +pkg go/doc, type Type struct, Name string +pkg go/doc, type Type struct, Vars []*Value +pkg go/doc, type Value struct +pkg go/doc, type Value struct, Decl *ast.GenDecl +pkg go/doc, type Value struct, Doc string +pkg go/doc, type Value struct, Names []string +pkg go/parser, const DeclarationErrors Mode +pkg go/parser, const ImportsOnly Mode +pkg go/parser, const PackageClauseOnly Mode +pkg go/parser, const ParseComments Mode +pkg go/parser, const SpuriousErrors Mode +pkg go/parser, const Trace Mode +pkg go/parser, func ParseDir(*token.FileSet, string, func(os.FileInfo) bool, Mode) (map[string]*ast.Package, error) +pkg go/parser, func ParseExpr(string) (ast.Expr, error) +pkg go/parser, func ParseFile(*token.FileSet, string, interface{}, Mode) (*ast.File, error) +pkg go/parser, type Mode uint +pkg go/printer, const RawFormat Mode +pkg go/printer, const SourcePos Mode +pkg go/printer, const TabIndent Mode +pkg go/printer, const UseSpaces Mode +pkg go/printer, func Fprint(io.Writer, *token.FileSet, interface{}) error +pkg go/printer, method (*Config) Fprint(io.Writer, *token.FileSet, interface{}) error +pkg go/printer, type CommentedNode struct +pkg go/printer, type CommentedNode struct, Comments []*ast.CommentGroup +pkg go/printer, type CommentedNode struct, Node interface{} +pkg go/printer, type Config struct +pkg go/printer, type Config struct, Mode Mode +pkg go/printer, type Config struct, Tabwidth int +pkg go/printer, type Mode uint +pkg go/scanner, const ScanComments Mode +pkg go/scanner, func PrintError(io.Writer, error) +pkg go/scanner, method (*ErrorList) Add(token.Position, string) +pkg go/scanner, method (*ErrorList) RemoveMultiples() +pkg go/scanner, method (*ErrorList) Reset() +pkg go/scanner, method (*Scanner) Init(*token.File, []byte, ErrorHandler, Mode) +pkg go/scanner, method (*Scanner) Scan() (token.Pos, token.Token, string) +pkg go/scanner, method (Error) Error() string +pkg go/scanner, method (ErrorList) Err() error +pkg go/scanner, method (ErrorList) Error() string +pkg go/scanner, method (ErrorList) Len() int +pkg go/scanner, method (ErrorList) Less(int) bool +pkg go/scanner, method (ErrorList) Sort() +pkg go/scanner, method (ErrorList) Swap(int) +pkg go/scanner, type Error struct +pkg go/scanner, type Error struct, Msg string +pkg go/scanner, type Error struct, Pos token.Position +pkg go/scanner, type ErrorHandler func(pos token.Position, msg string) +pkg go/scanner, type ErrorList []*Error +pkg go/scanner, type Mode uint +pkg go/scanner, type Scanner struct +pkg go/scanner, type Scanner struct, ErrorCount int +pkg go/token, const ADD Token +pkg go/token, const ADD_ASSIGN Token +pkg go/token, const AND Token +pkg go/token, const AND_ASSIGN Token +pkg go/token, const AND_NOT Token +pkg go/token, const AND_NOT_ASSIGN Token +pkg go/token, const ARROW Token +pkg go/token, const ASSIGN Token +pkg go/token, const BREAK Token +pkg go/token, const CASE Token +pkg go/token, const CHAN Token +pkg go/token, const CHAR Token +pkg go/token, const COLON Token +pkg go/token, const COMMA Token +pkg go/token, const COMMENT Token +pkg go/token, const CONST Token +pkg go/token, const CONTINUE Token +pkg go/token, const DEC Token +pkg go/token, const DEFAULT Token +pkg go/token, const DEFER Token +pkg go/token, const DEFINE Token +pkg go/token, const ELLIPSIS Token +pkg go/token, const ELSE Token +pkg go/token, const EOF Token +pkg go/token, const EQL Token +pkg go/token, const FALLTHROUGH Token +pkg go/token, const FLOAT Token +pkg go/token, const FOR Token +pkg go/token, const FUNC Token +pkg go/token, const GEQ Token +pkg go/token, const GO Token +pkg go/token, const GOTO Token +pkg go/token, const GTR Token +pkg go/token, const HighestPrec ideal-int +pkg go/token, const IDENT Token +pkg go/token, const IF Token +pkg go/token, const ILLEGAL Token +pkg go/token, const IMAG Token +pkg go/token, const IMPORT Token +pkg go/token, const INC Token +pkg go/token, const INT Token +pkg go/token, const INTERFACE Token +pkg go/token, const LAND Token +pkg go/token, const LBRACE Token +pkg go/token, const LBRACK Token +pkg go/token, const LEQ Token +pkg go/token, const LOR Token +pkg go/token, const LPAREN Token +pkg go/token, const LSS Token +pkg go/token, const LowestPrec ideal-int +pkg go/token, const MAP Token +pkg go/token, const MUL Token +pkg go/token, const MUL_ASSIGN Token +pkg go/token, const NEQ Token +pkg go/token, const NOT Token +pkg go/token, const NoPos Pos +pkg go/token, const OR Token +pkg go/token, const OR_ASSIGN Token +pkg go/token, const PACKAGE Token +pkg go/token, const PERIOD Token +pkg go/token, const QUO Token +pkg go/token, const QUO_ASSIGN Token +pkg go/token, const RANGE Token +pkg go/token, const RBRACE Token +pkg go/token, const RBRACK Token +pkg go/token, const REM Token +pkg go/token, const REM_ASSIGN Token +pkg go/token, const RETURN Token +pkg go/token, const RPAREN Token +pkg go/token, const SELECT Token +pkg go/token, const SEMICOLON Token +pkg go/token, const SHL Token +pkg go/token, const SHL_ASSIGN Token +pkg go/token, const SHR Token +pkg go/token, const SHR_ASSIGN Token +pkg go/token, const STRING Token +pkg go/token, const STRUCT Token +pkg go/token, const SUB Token +pkg go/token, const SUB_ASSIGN Token +pkg go/token, const SWITCH Token +pkg go/token, const TYPE Token +pkg go/token, const UnaryPrec ideal-int +pkg go/token, const VAR Token +pkg go/token, const XOR Token +pkg go/token, const XOR_ASSIGN Token +pkg go/token, func Lookup(string) Token +pkg go/token, func NewFileSet() *FileSet +pkg go/token, method (*File) AddLine(int) +pkg go/token, method (*File) AddLineInfo(int, string, int) +pkg go/token, method (*File) Base() int +pkg go/token, method (*File) Line(Pos) int +pkg go/token, method (*File) LineCount() int +pkg go/token, method (*File) Name() string +pkg go/token, method (*File) Offset(Pos) int +pkg go/token, method (*File) Pos(int) Pos +pkg go/token, method (*File) Position(Pos) Position +pkg go/token, method (*File) SetLines([]int) bool +pkg go/token, method (*File) SetLinesForContent([]byte) +pkg go/token, method (*File) Size() int +pkg go/token, method (*FileSet) AddFile(string, int) *File +pkg go/token, method (*FileSet) Base() int +pkg go/token, method (*FileSet) File(Pos) *File +pkg go/token, method (*FileSet) Iterate(func(*File) bool) +pkg go/token, method (*FileSet) Position(Pos) Position +pkg go/token, method (*FileSet) Read(func(interface{}) error) error +pkg go/token, method (*FileSet) Write(func(interface{}) error) error +pkg go/token, method (*Position) IsValid() bool +pkg go/token, method (Pos) IsValid() bool +pkg go/token, method (Position) String() string +pkg go/token, method (Token) IsKeyword() bool +pkg go/token, method (Token) IsLiteral() bool +pkg go/token, method (Token) IsOperator() bool +pkg go/token, method (Token) Precedence() int +pkg go/token, method (Token) String() string +pkg go/token, type File struct +pkg go/token, type FileSet struct +pkg go/token, type Pos int +pkg go/token, type Position struct +pkg go/token, type Position struct, Column int +pkg go/token, type Position struct, Filename string +pkg go/token, type Position struct, Line int +pkg go/token, type Position struct, Offset int +pkg go/token, type Token int +pkg hash, type Hash interface { BlockSize, Reset, Size, Sum, Write } +pkg hash, type Hash interface, BlockSize() int +pkg hash, type Hash interface, Reset() +pkg hash, type Hash interface, Size() int +pkg hash, type Hash interface, Sum([]byte) []byte +pkg hash, type Hash interface, Write([]byte) (int, error) +pkg hash, type Hash32 interface { BlockSize, Reset, Size, Sum, Sum32, Write } +pkg hash, type Hash32 interface, BlockSize() int +pkg hash, type Hash32 interface, Reset() +pkg hash, type Hash32 interface, Size() int +pkg hash, type Hash32 interface, Sum([]byte) []byte +pkg hash, type Hash32 interface, Sum32() uint32 +pkg hash, type Hash32 interface, Write([]byte) (int, error) +pkg hash, type Hash64 interface { BlockSize, Reset, Size, Sum, Sum64, Write } +pkg hash, type Hash64 interface, BlockSize() int +pkg hash, type Hash64 interface, Reset() +pkg hash, type Hash64 interface, Size() int +pkg hash, type Hash64 interface, Sum([]byte) []byte +pkg hash, type Hash64 interface, Sum64() uint64 +pkg hash, type Hash64 interface, Write([]byte) (int, error) +pkg hash/adler32, const Size ideal-int +pkg hash/adler32, func Checksum([]byte) uint32 +pkg hash/adler32, func New() hash.Hash32 +pkg hash/crc32, const Castagnoli ideal-int +pkg hash/crc32, const IEEE ideal-int +pkg hash/crc32, const Koopman ideal-int +pkg hash/crc32, const Size ideal-int +pkg hash/crc32, func Checksum([]byte, *Table) uint32 +pkg hash/crc32, func ChecksumIEEE([]byte) uint32 +pkg hash/crc32, func MakeTable(uint32) *Table +pkg hash/crc32, func New(*Table) hash.Hash32 +pkg hash/crc32, func NewIEEE() hash.Hash32 +pkg hash/crc32, func Update(uint32, *Table, []byte) uint32 +pkg hash/crc32, type Table [256]uint32 +pkg hash/crc32, var IEEETable *Table +pkg hash/crc64, const ECMA ideal-int +pkg hash/crc64, const ISO ideal-int +pkg hash/crc64, const Size ideal-int +pkg hash/crc64, func Checksum([]byte, *Table) uint64 +pkg hash/crc64, func MakeTable(uint64) *Table +pkg hash/crc64, func New(*Table) hash.Hash64 +pkg hash/crc64, func Update(uint64, *Table, []byte) uint64 +pkg hash/crc64, type Table [256]uint64 +pkg hash/fnv, func New32() hash.Hash32 +pkg hash/fnv, func New32a() hash.Hash32 +pkg hash/fnv, func New64() hash.Hash64 +pkg hash/fnv, func New64a() hash.Hash64 +pkg html, func EscapeString(string) string +pkg html, func UnescapeString(string) string +pkg html/template, const ErrAmbigContext ErrorCode +pkg html/template, const ErrBadHTML ErrorCode +pkg html/template, const ErrBranchEnd ErrorCode +pkg html/template, const ErrEndContext ErrorCode +pkg html/template, const ErrNoSuchTemplate ErrorCode +pkg html/template, const ErrOutputContext ErrorCode +pkg html/template, const ErrPartialCharset ErrorCode +pkg html/template, const ErrPartialEscape ErrorCode +pkg html/template, const ErrRangeLoopReentry ErrorCode +pkg html/template, const ErrSlashAmbig ErrorCode +pkg html/template, const OK ErrorCode +pkg html/template, func HTMLEscape(io.Writer, []byte) +pkg html/template, func HTMLEscapeString(string) string +pkg html/template, func HTMLEscaper(...interface{}) string +pkg html/template, func JSEscape(io.Writer, []byte) +pkg html/template, func JSEscapeString(string) string +pkg html/template, func JSEscaper(...interface{}) string +pkg html/template, func Must(*Template, error) *Template +pkg html/template, func New(string) *Template +pkg html/template, func ParseFiles(...string) (*Template, error) +pkg html/template, func ParseGlob(string) (*Template, error) +pkg html/template, func URLQueryEscaper(...interface{}) string +pkg html/template, method (*Error) Error() string +pkg html/template, method (*Template) AddParseTree(string, *parse.Tree) (*Template, error) +pkg html/template, method (*Template) Clone() (*Template, error) +pkg html/template, method (*Template) Delims(string) *Template +pkg html/template, method (*Template) Execute(io.Writer, interface{}) error +pkg html/template, method (*Template) ExecuteTemplate(io.Writer, string, interface{}) error +pkg html/template, method (*Template) Funcs(FuncMap) *Template +pkg html/template, method (*Template) Lookup(string) *Template +pkg html/template, method (*Template) Name() string +pkg html/template, method (*Template) New(string) *Template +pkg html/template, method (*Template) Parse(string) (*Template, error) +pkg html/template, method (*Template) ParseFiles(...string) (*Template, error) +pkg html/template, method (*Template) ParseGlob(string) (*Template, error) +pkg html/template, method (*Template) Templates() []*Template +pkg html/template, type CSS string +pkg html/template, type Error struct +pkg html/template, type Error struct, Description string +pkg html/template, type Error struct, ErrorCode ErrorCode +pkg html/template, type Error struct, Line int +pkg html/template, type Error struct, Name string +pkg html/template, type ErrorCode int +pkg html/template, type FuncMap map[string]interface{} +pkg html/template, type HTML string +pkg html/template, type HTMLAttr string +pkg html/template, type JS string +pkg html/template, type JSStr string +pkg html/template, type Template struct +pkg html/template, type URL string +pkg image, const YCbCrSubsampleRatio420 YCbCrSubsampleRatio +pkg image, const YCbCrSubsampleRatio422 YCbCrSubsampleRatio +pkg image, const YCbCrSubsampleRatio444 YCbCrSubsampleRatio +pkg image, func Decode(io.Reader) (Image, string, error) +pkg image, func DecodeConfig(io.Reader) (Config, string, error) +pkg image, func NewAlpha(Rectangle) *Alpha +pkg image, func NewAlpha16(Rectangle) *Alpha16 +pkg image, func NewGray(Rectangle) *Gray +pkg image, func NewGray16(Rectangle) *Gray16 +pkg image, func NewNRGBA(Rectangle) *NRGBA +pkg image, func NewNRGBA64(Rectangle) *NRGBA64 +pkg image, func NewPaletted(Rectangle, color.Palette) *Paletted +pkg image, func NewRGBA(Rectangle) *RGBA +pkg image, func NewRGBA64(Rectangle) *RGBA64 +pkg image, func NewUniform(color.Color) *Uniform +pkg image, func NewYCbCr(Rectangle, YCbCrSubsampleRatio) *YCbCr +pkg image, func Pt(int) Point +pkg image, func Rect(int) Rectangle +pkg image, func RegisterFormat(string, func(io.Reader) (Image, error), func(io.Reader) (Config, error)) +pkg image, method (*Alpha) At(int) color.Color +pkg image, method (*Alpha) Bounds() Rectangle +pkg image, method (*Alpha) ColorModel() color.Model +pkg image, method (*Alpha) Opaque() bool +pkg image, method (*Alpha) PixOffset(int) int +pkg image, method (*Alpha) Set(int, color.Color) +pkg image, method (*Alpha) SetAlpha(int, color.Alpha) +pkg image, method (*Alpha) SubImage(Rectangle) Image +pkg image, method (*Alpha16) At(int) color.Color +pkg image, method (*Alpha16) Bounds() Rectangle +pkg image, method (*Alpha16) ColorModel() color.Model +pkg image, method (*Alpha16) Opaque() bool +pkg image, method (*Alpha16) PixOffset(int) int +pkg image, method (*Alpha16) Set(int, color.Color) +pkg image, method (*Alpha16) SetAlpha16(int, color.Alpha16) +pkg image, method (*Alpha16) SubImage(Rectangle) Image +pkg image, method (*Gray) At(int) color.Color +pkg image, method (*Gray) Bounds() Rectangle +pkg image, method (*Gray) ColorModel() color.Model +pkg image, method (*Gray) Opaque() bool +pkg image, method (*Gray) PixOffset(int) int +pkg image, method (*Gray) Set(int, color.Color) +pkg image, method (*Gray) SetGray(int, color.Gray) +pkg image, method (*Gray) SubImage(Rectangle) Image +pkg image, method (*Gray16) At(int) color.Color +pkg image, method (*Gray16) Bounds() Rectangle +pkg image, method (*Gray16) ColorModel() color.Model +pkg image, method (*Gray16) Opaque() bool +pkg image, method (*Gray16) PixOffset(int) int +pkg image, method (*Gray16) Set(int, color.Color) +pkg image, method (*Gray16) SetGray16(int, color.Gray16) +pkg image, method (*Gray16) SubImage(Rectangle) Image +pkg image, method (*NRGBA) At(int) color.Color +pkg image, method (*NRGBA) Bounds() Rectangle +pkg image, method (*NRGBA) ColorModel() color.Model +pkg image, method (*NRGBA) Opaque() bool +pkg image, method (*NRGBA) PixOffset(int) int +pkg image, method (*NRGBA) Set(int, color.Color) +pkg image, method (*NRGBA) SetNRGBA(int, color.NRGBA) +pkg image, method (*NRGBA) SubImage(Rectangle) Image +pkg image, method (*NRGBA64) At(int) color.Color +pkg image, method (*NRGBA64) Bounds() Rectangle +pkg image, method (*NRGBA64) ColorModel() color.Model +pkg image, method (*NRGBA64) Opaque() bool +pkg image, method (*NRGBA64) PixOffset(int) int +pkg image, method (*NRGBA64) Set(int, color.Color) +pkg image, method (*NRGBA64) SetNRGBA64(int, color.NRGBA64) +pkg image, method (*NRGBA64) SubImage(Rectangle) Image +pkg image, method (*Paletted) At(int) color.Color +pkg image, method (*Paletted) Bounds() Rectangle +pkg image, method (*Paletted) ColorIndexAt(int) uint8 +pkg image, method (*Paletted) ColorModel() color.Model +pkg image, method (*Paletted) Opaque() bool +pkg image, method (*Paletted) PixOffset(int) int +pkg image, method (*Paletted) Set(int, color.Color) +pkg image, method (*Paletted) SetColorIndex(int, uint8) +pkg image, method (*Paletted) SubImage(Rectangle) Image +pkg image, method (*RGBA) At(int) color.Color +pkg image, method (*RGBA) Bounds() Rectangle +pkg image, method (*RGBA) ColorModel() color.Model +pkg image, method (*RGBA) Opaque() bool +pkg image, method (*RGBA) PixOffset(int) int +pkg image, method (*RGBA) Set(int, color.Color) +pkg image, method (*RGBA) SetRGBA(int, color.RGBA) +pkg image, method (*RGBA) SubImage(Rectangle) Image +pkg image, method (*RGBA64) At(int) color.Color +pkg image, method (*RGBA64) Bounds() Rectangle +pkg image, method (*RGBA64) ColorModel() color.Model +pkg image, method (*RGBA64) Opaque() bool +pkg image, method (*RGBA64) PixOffset(int) int +pkg image, method (*RGBA64) Set(int, color.Color) +pkg image, method (*RGBA64) SetRGBA64(int, color.RGBA64) +pkg image, method (*RGBA64) SubImage(Rectangle) Image +pkg image, method (*Uniform) At(int) color.Color +pkg image, method (*Uniform) Bounds() Rectangle +pkg image, method (*Uniform) ColorModel() color.Model +pkg image, method (*Uniform) Convert(color.Color) color.Color +pkg image, method (*Uniform) Opaque() bool +pkg image, method (*Uniform) RGBA() uint32 +pkg image, method (*YCbCr) At(int) color.Color +pkg image, method (*YCbCr) Bounds() Rectangle +pkg image, method (*YCbCr) COffset(int) int +pkg image, method (*YCbCr) ColorModel() color.Model +pkg image, method (*YCbCr) Opaque() bool +pkg image, method (*YCbCr) SubImage(Rectangle) Image +pkg image, method (*YCbCr) YOffset(int) int +pkg image, method (Point) Add(Point) Point +pkg image, method (Point) Div(int) Point +pkg image, method (Point) Eq(Point) bool +pkg image, method (Point) In(Rectangle) bool +pkg image, method (Point) Mod(Rectangle) Point +pkg image, method (Point) Mul(int) Point +pkg image, method (Point) String() string +pkg image, method (Point) Sub(Point) Point +pkg image, method (Rectangle) Add(Point) Rectangle +pkg image, method (Rectangle) Canon() Rectangle +pkg image, method (Rectangle) Dx() int +pkg image, method (Rectangle) Dy() int +pkg image, method (Rectangle) Empty() bool +pkg image, method (Rectangle) Eq(Rectangle) bool +pkg image, method (Rectangle) In(Rectangle) bool +pkg image, method (Rectangle) Inset(int) Rectangle +pkg image, method (Rectangle) Intersect(Rectangle) Rectangle +pkg image, method (Rectangle) Overlaps(Rectangle) bool +pkg image, method (Rectangle) Size() Point +pkg image, method (Rectangle) String() string +pkg image, method (Rectangle) Sub(Point) Rectangle +pkg image, method (Rectangle) Union(Rectangle) Rectangle +pkg image, method (YCbCrSubsampleRatio) String() string +pkg image, type Alpha struct +pkg image, type Alpha struct, Pix []uint8 +pkg image, type Alpha struct, Rect Rectangle +pkg image, type Alpha struct, Stride int +pkg image, type Alpha16 struct +pkg image, type Alpha16 struct, Pix []uint8 +pkg image, type Alpha16 struct, Rect Rectangle +pkg image, type Alpha16 struct, Stride int +pkg image, type Config struct +pkg image, type Config struct, ColorModel color.Model +pkg image, type Config struct, Height int +pkg image, type Config struct, Width int +pkg image, type Gray struct +pkg image, type Gray struct, Pix []uint8 +pkg image, type Gray struct, Rect Rectangle +pkg image, type Gray struct, Stride int +pkg image, type Gray16 struct +pkg image, type Gray16 struct, Pix []uint8 +pkg image, type Gray16 struct, Rect Rectangle +pkg image, type Gray16 struct, Stride int +pkg image, type Image interface { At, Bounds, ColorModel } +pkg image, type Image interface, At(int) color.Color +pkg image, type Image interface, Bounds() Rectangle +pkg image, type Image interface, ColorModel() color.Model +pkg image, type NRGBA struct +pkg image, type NRGBA struct, Pix []uint8 +pkg image, type NRGBA struct, Rect Rectangle +pkg image, type NRGBA struct, Stride int +pkg image, type NRGBA64 struct +pkg image, type NRGBA64 struct, Pix []uint8 +pkg image, type NRGBA64 struct, Rect Rectangle +pkg image, type NRGBA64 struct, Stride int +pkg image, type Paletted struct +pkg image, type Paletted struct, Palette color.Palette +pkg image, type Paletted struct, Pix []uint8 +pkg image, type Paletted struct, Rect Rectangle +pkg image, type Paletted struct, Stride int +pkg image, type PalettedImage interface { At, Bounds, ColorIndexAt, ColorModel } +pkg image, type PalettedImage interface, At(int) color.Color +pkg image, type PalettedImage interface, Bounds() Rectangle +pkg image, type PalettedImage interface, ColorIndexAt(int) uint8 +pkg image, type PalettedImage interface, ColorModel() color.Model +pkg image, type Point struct +pkg image, type Point struct, X int +pkg image, type Point struct, Y int +pkg image, type RGBA struct +pkg image, type RGBA struct, Pix []uint8 +pkg image, type RGBA struct, Rect Rectangle +pkg image, type RGBA struct, Stride int +pkg image, type RGBA64 struct +pkg image, type RGBA64 struct, Pix []uint8 +pkg image, type RGBA64 struct, Rect Rectangle +pkg image, type RGBA64 struct, Stride int +pkg image, type Rectangle struct +pkg image, type Rectangle struct, Max Point +pkg image, type Rectangle struct, Min Point +pkg image, type Uniform struct +pkg image, type Uniform struct, C color.Color +pkg image, type YCbCr struct +pkg image, type YCbCr struct, CStride int +pkg image, type YCbCr struct, Cb []uint8 +pkg image, type YCbCr struct, Cr []uint8 +pkg image, type YCbCr struct, Rect Rectangle +pkg image, type YCbCr struct, SubsampleRatio YCbCrSubsampleRatio +pkg image, type YCbCr struct, Y []uint8 +pkg image, type YCbCr struct, YStride int +pkg image, type YCbCrSubsampleRatio int +pkg image, var Black *Uniform +pkg image, var ErrFormat error +pkg image, var Opaque *Uniform +pkg image, var Transparent *Uniform +pkg image, var White *Uniform +pkg image, var ZP Point +pkg image, var ZR Rectangle +pkg image/color, func ModelFunc(func(Color) Color) Model +pkg image/color, func RGBToYCbCr(uint8) (uint8, uint8, uint8) +pkg image/color, func YCbCrToRGB(uint8) (uint8, uint8, uint8) +pkg image/color, method (Alpha) RGBA() uint32 +pkg image/color, method (Alpha16) RGBA() uint32 +pkg image/color, method (Gray) RGBA() uint32 +pkg image/color, method (Gray16) RGBA() uint32 +pkg image/color, method (NRGBA) RGBA() uint32 +pkg image/color, method (NRGBA64) RGBA() uint32 +pkg image/color, method (Palette) Convert(Color) Color +pkg image/color, method (Palette) Index(Color) int +pkg image/color, method (RGBA) RGBA() uint32 +pkg image/color, method (RGBA64) RGBA() uint32 +pkg image/color, method (YCbCr) RGBA() (uint32, uint32, uint32, uint32) +pkg image/color, type Alpha struct +pkg image/color, type Alpha struct, A uint8 +pkg image/color, type Alpha16 struct +pkg image/color, type Alpha16 struct, A uint16 +pkg image/color, type Color interface { RGBA } +pkg image/color, type Color interface, RGBA() uint32 +pkg image/color, type Gray struct +pkg image/color, type Gray struct, Y uint8 +pkg image/color, type Gray16 struct +pkg image/color, type Gray16 struct, Y uint16 +pkg image/color, type Model interface { Convert } +pkg image/color, type Model interface, Convert(Color) Color +pkg image/color, type NRGBA struct +pkg image/color, type NRGBA struct, A uint8 +pkg image/color, type NRGBA struct, B uint8 +pkg image/color, type NRGBA struct, G uint8 +pkg image/color, type NRGBA struct, R uint8 +pkg image/color, type NRGBA64 struct +pkg image/color, type NRGBA64 struct, A uint16 +pkg image/color, type NRGBA64 struct, B uint16 +pkg image/color, type NRGBA64 struct, G uint16 +pkg image/color, type NRGBA64 struct, R uint16 +pkg image/color, type Palette []Color +pkg image/color, type RGBA struct +pkg image/color, type RGBA struct, A uint8 +pkg image/color, type RGBA struct, B uint8 +pkg image/color, type RGBA struct, G uint8 +pkg image/color, type RGBA struct, R uint8 +pkg image/color, type RGBA64 struct +pkg image/color, type RGBA64 struct, A uint16 +pkg image/color, type RGBA64 struct, B uint16 +pkg image/color, type RGBA64 struct, G uint16 +pkg image/color, type RGBA64 struct, R uint16 +pkg image/color, type YCbCr struct +pkg image/color, type YCbCr struct, Cb uint8 +pkg image/color, type YCbCr struct, Cr uint8 +pkg image/color, type YCbCr struct, Y uint8 +pkg image/color, var Alpha16Model Model +pkg image/color, var AlphaModel Model +pkg image/color, var Black Gray16 +pkg image/color, var Gray16Model Model +pkg image/color, var GrayModel Model +pkg image/color, var NRGBA64Model Model +pkg image/color, var NRGBAModel Model +pkg image/color, var Opaque Alpha16 +pkg image/color, var RGBA64Model Model +pkg image/color, var RGBAModel Model +pkg image/color, var Transparent Alpha16 +pkg image/color, var White Gray16 +pkg image/color, var YCbCrModel Model +pkg image/draw, const Over Op +pkg image/draw, const Src Op +pkg image/draw, func Draw(Image, image.Rectangle, image.Image, image.Point, Op) +pkg image/draw, func DrawMask(Image, image.Rectangle, image.Image, image.Point, image.Image, image.Point, Op) +pkg image/draw, type Image interface { At, Bounds, ColorModel, Set } +pkg image/draw, type Image interface, At(int) color.Color +pkg image/draw, type Image interface, Bounds() Rectangle +pkg image/draw, type Image interface, ColorModel() color.Model +pkg image/draw, type Image interface, Set(int, color.Color) +pkg image/draw, type Op int +pkg image/gif, func Decode(io.Reader) (image.Image, error) +pkg image/gif, func DecodeAll(io.Reader) (*GIF, error) +pkg image/gif, func DecodeConfig(io.Reader) (image.Config, error) +pkg image/gif, type GIF struct +pkg image/gif, type GIF struct, Delay []int +pkg image/gif, type GIF struct, Image []*image.Paletted +pkg image/gif, type GIF struct, LoopCount int +pkg image/jpeg, const DefaultQuality ideal-int +pkg image/jpeg, func Decode(io.Reader) (image.Image, error) +pkg image/jpeg, func DecodeConfig(io.Reader) (image.Config, error) +pkg image/jpeg, func Encode(io.Writer, image.Image, *Options) error +pkg image/jpeg, method (FormatError) Error() string +pkg image/jpeg, method (UnsupportedError) Error() string +pkg image/jpeg, type FormatError string +pkg image/jpeg, type Options struct +pkg image/jpeg, type Options struct, Quality int +pkg image/jpeg, type Reader interface { Read, ReadByte } +pkg image/jpeg, type Reader interface, Read([]byte) (int, error) +pkg image/jpeg, type Reader interface, ReadByte() (byte, error) +pkg image/jpeg, type UnsupportedError string +pkg image/png, func Decode(io.Reader) (image.Image, error) +pkg image/png, func DecodeConfig(io.Reader) (image.Config, error) +pkg image/png, func Encode(io.Writer, image.Image) error +pkg image/png, method (FormatError) Error() string +pkg image/png, method (UnsupportedError) Error() string +pkg image/png, type FormatError string +pkg image/png, type UnsupportedError string +pkg index/suffixarray, func New([]byte) *Index +pkg index/suffixarray, method (*Index) Bytes() []byte +pkg index/suffixarray, method (*Index) FindAllIndex(*regexp.Regexp, int) [][]int +pkg index/suffixarray, method (*Index) Lookup([]byte, int) []int +pkg index/suffixarray, method (*Index) Read(io.Reader) error +pkg index/suffixarray, method (*Index) Write(io.Writer) error +pkg index/suffixarray, type Index struct +pkg io, func Copy(Writer, Reader) (int64, error) +pkg io, func CopyN(Writer, Reader, int64) (int64, error) +pkg io, func LimitReader(Reader, int64) Reader +pkg io, func MultiReader(...Reader) Reader +pkg io, func MultiWriter(...Writer) Writer +pkg io, func NewSectionReader(ReaderAt, int64, int64) *SectionReader +pkg io, func Pipe() (*PipeReader, *PipeWriter) +pkg io, func ReadAtLeast(Reader, []byte, int) (int, error) +pkg io, func ReadFull(Reader, []byte) (int, error) +pkg io, func TeeReader(Reader, Writer) Reader +pkg io, func WriteString(Writer, string) (int, error) +pkg io, method (*LimitedReader) Read([]byte) (int, error) +pkg io, method (*PipeReader) Close() error +pkg io, method (*PipeReader) CloseWithError(error) error +pkg io, method (*PipeReader) Read([]byte) (int, error) +pkg io, method (*PipeWriter) Close() error +pkg io, method (*PipeWriter) CloseWithError(error) error +pkg io, method (*PipeWriter) Write([]byte) (int, error) +pkg io, method (*SectionReader) Read([]byte) (int, error) +pkg io, method (*SectionReader) ReadAt([]byte, int64) (int, error) +pkg io, method (*SectionReader) Seek(int64, int) (int64, error) +pkg io, method (*SectionReader) Size() int64 +pkg io, type ByteReader interface { ReadByte } +pkg io, type ByteReader interface, ReadByte() (byte, error) +pkg io, type ByteScanner interface { ReadByte, UnreadByte } +pkg io, type ByteScanner interface, ReadByte() (byte, error) +pkg io, type ByteScanner interface, UnreadByte() error +pkg io, type Closer interface { Close } +pkg io, type Closer interface, Close() error +pkg io, type LimitedReader struct +pkg io, type LimitedReader struct, N int64 +pkg io, type LimitedReader struct, R Reader +pkg io, type PipeReader struct +pkg io, type PipeWriter struct +pkg io, type ReadCloser interface { Close, Read } +pkg io, type ReadCloser interface, Close() error +pkg io, type ReadCloser interface, Read([]byte) (int, error) +pkg io, type ReadSeeker interface { Read, Seek } +pkg io, type ReadSeeker interface, Read([]byte) (int, error) +pkg io, type ReadSeeker interface, Seek(int64, int) (int64, error) +pkg io, type ReadWriteCloser interface { Close, Read, Write } +pkg io, type ReadWriteCloser interface, Close() error +pkg io, type ReadWriteCloser interface, Read([]byte) (int, error) +pkg io, type ReadWriteCloser interface, Write([]byte) (int, error) +pkg io, type ReadWriteSeeker interface { Read, Seek, Write } +pkg io, type ReadWriteSeeker interface, Read([]byte) (int, error) +pkg io, type ReadWriteSeeker interface, Seek(int64, int) (int64, error) +pkg io, type ReadWriteSeeker interface, Write([]byte) (int, error) +pkg io, type ReadWriter interface { Read, Write } +pkg io, type ReadWriter interface, Read([]byte) (int, error) +pkg io, type ReadWriter interface, Write([]byte) (int, error) +pkg io, type Reader interface { Read } +pkg io, type Reader interface, Read([]byte) (int, error) +pkg io, type ReaderAt interface { ReadAt } +pkg io, type ReaderAt interface, ReadAt([]byte, int64) (int, error) +pkg io, type ReaderFrom interface { ReadFrom } +pkg io, type ReaderFrom interface, ReadFrom(Reader) (int64, error) +pkg io, type RuneReader interface { ReadRune } +pkg io, type RuneReader interface, ReadRune() (rune, int, error) +pkg io, type RuneScanner interface { ReadRune, UnreadRune } +pkg io, type RuneScanner interface, ReadRune() (rune, int, error) +pkg io, type RuneScanner interface, UnreadRune() error +pkg io, type SectionReader struct +pkg io, type Seeker interface { Seek } +pkg io, type Seeker interface, Seek(int64, int) (int64, error) +pkg io, type WriteCloser interface { Close, Write } +pkg io, type WriteCloser interface, Close() error +pkg io, type WriteCloser interface, Write([]byte) (int, error) +pkg io, type WriteSeeker interface { Seek, Write } +pkg io, type WriteSeeker interface, Seek(int64, int) (int64, error) +pkg io, type WriteSeeker interface, Write([]byte) (int, error) +pkg io, type Writer interface { Write } +pkg io, type Writer interface, Write([]byte) (int, error) +pkg io, type WriterAt interface { WriteAt } +pkg io, type WriterAt interface, WriteAt([]byte, int64) (int, error) +pkg io, type WriterTo interface { WriteTo } +pkg io, type WriterTo interface, WriteTo(Writer) (int64, error) +pkg io, var EOF error +pkg io, var ErrClosedPipe error +pkg io, var ErrShortBuffer error +pkg io, var ErrShortWrite error +pkg io, var ErrUnexpectedEOF error +pkg io/ioutil, func NopCloser(io.Reader) io.ReadCloser +pkg io/ioutil, func ReadAll(io.Reader) ([]byte, error) +pkg io/ioutil, func ReadDir(string) ([]os.FileInfo, error) +pkg io/ioutil, func ReadFile(string) ([]byte, error) +pkg io/ioutil, func TempDir(string) (string, error) +pkg io/ioutil, func TempFile(string) (*os.File, error) +pkg io/ioutil, func WriteFile(string, []byte, os.FileMode) error +pkg io/ioutil, var Discard io.Writer +pkg log, const Ldate ideal-int +pkg log, const Llongfile ideal-int +pkg log, const Lmicroseconds ideal-int +pkg log, const Lshortfile ideal-int +pkg log, const LstdFlags ideal-int +pkg log, const Ltime ideal-int +pkg log, func Fatal(...interface{}) +pkg log, func Fatalf(string, ...interface{}) +pkg log, func Fatalln(...interface{}) +pkg log, func Flags() int +pkg log, func New(io.Writer, string, int) *Logger +pkg log, func Panic(...interface{}) +pkg log, func Panicf(string, ...interface{}) +pkg log, func Panicln(...interface{}) +pkg log, func Prefix() string +pkg log, func Print(...interface{}) +pkg log, func Printf(string, ...interface{}) +pkg log, func Println(...interface{}) +pkg log, func SetFlags(int) +pkg log, func SetOutput(io.Writer) +pkg log, func SetPrefix(string) +pkg log, method (*Logger) Fatal(...interface{}) +pkg log, method (*Logger) Fatalf(string, ...interface{}) +pkg log, method (*Logger) Fatalln(...interface{}) +pkg log, method (*Logger) Flags() int +pkg log, method (*Logger) Output(int, string) error +pkg log, method (*Logger) Panic(...interface{}) +pkg log, method (*Logger) Panicf(string, ...interface{}) +pkg log, method (*Logger) Panicln(...interface{}) +pkg log, method (*Logger) Prefix() string +pkg log, method (*Logger) Print(...interface{}) +pkg log, method (*Logger) Printf(string, ...interface{}) +pkg log, method (*Logger) Println(...interface{}) +pkg log, method (*Logger) SetFlags(int) +pkg log, method (*Logger) SetPrefix(string) +pkg log, type Logger struct +pkg log/syslog (darwin-386), const LOG_ALERT Priority +pkg log/syslog (darwin-386), const LOG_CRIT Priority +pkg log/syslog (darwin-386), const LOG_DEBUG Priority +pkg log/syslog (darwin-386), const LOG_EMERG Priority +pkg log/syslog (darwin-386), const LOG_ERR Priority +pkg log/syslog (darwin-386), const LOG_INFO Priority +pkg log/syslog (darwin-386), const LOG_NOTICE Priority +pkg log/syslog (darwin-386), const LOG_WARNING Priority +pkg log/syslog (darwin-386), func Dial(string, Priority, string) (*Writer, error) +pkg log/syslog (darwin-386), func New(Priority, string) (*Writer, error) +pkg log/syslog (darwin-386), func NewLogger(Priority, int) (*log.Logger, error) +pkg log/syslog (darwin-386), method (*Writer) Alert(string) error +pkg log/syslog (darwin-386), method (*Writer) Close() error +pkg log/syslog (darwin-386), method (*Writer) Crit(string) error +pkg log/syslog (darwin-386), method (*Writer) Debug(string) error +pkg log/syslog (darwin-386), method (*Writer) Emerg(string) error +pkg log/syslog (darwin-386), method (*Writer) Err(string) error +pkg log/syslog (darwin-386), method (*Writer) Info(string) error +pkg log/syslog (darwin-386), method (*Writer) Notice(string) error +pkg log/syslog (darwin-386), method (*Writer) Warning(string) error +pkg log/syslog (darwin-386), method (*Writer) Write([]byte) (int, error) +pkg log/syslog (darwin-386), type Priority int +pkg log/syslog (darwin-386), type Writer struct +pkg log/syslog (darwin-386-cgo), const LOG_ALERT Priority +pkg log/syslog (darwin-386-cgo), const LOG_CRIT Priority +pkg log/syslog (darwin-386-cgo), const LOG_DEBUG Priority +pkg log/syslog (darwin-386-cgo), const LOG_EMERG Priority +pkg log/syslog (darwin-386-cgo), const LOG_ERR Priority +pkg log/syslog (darwin-386-cgo), const LOG_INFO Priority +pkg log/syslog (darwin-386-cgo), const LOG_NOTICE Priority +pkg log/syslog (darwin-386-cgo), const LOG_WARNING Priority +pkg log/syslog (darwin-386-cgo), func Dial(string, Priority, string) (*Writer, error) +pkg log/syslog (darwin-386-cgo), func New(Priority, string) (*Writer, error) +pkg log/syslog (darwin-386-cgo), func NewLogger(Priority, int) (*log.Logger, error) +pkg log/syslog (darwin-386-cgo), method (*Writer) Alert(string) error +pkg log/syslog (darwin-386-cgo), method (*Writer) Close() error +pkg log/syslog (darwin-386-cgo), method (*Writer) Crit(string) error +pkg log/syslog (darwin-386-cgo), method (*Writer) Debug(string) error +pkg log/syslog (darwin-386-cgo), method (*Writer) Emerg(string) error +pkg log/syslog (darwin-386-cgo), method (*Writer) Err(string) error +pkg log/syslog (darwin-386-cgo), method (*Writer) Info(string) error +pkg log/syslog (darwin-386-cgo), method (*Writer) Notice(string) error +pkg log/syslog (darwin-386-cgo), method (*Writer) Warning(string) error +pkg log/syslog (darwin-386-cgo), method (*Writer) Write([]byte) (int, error) +pkg log/syslog (darwin-386-cgo), type Priority int +pkg log/syslog (darwin-386-cgo), type Writer struct +pkg log/syslog (darwin-amd64), const LOG_ALERT Priority +pkg log/syslog (darwin-amd64), const LOG_CRIT Priority +pkg log/syslog (darwin-amd64), const LOG_DEBUG Priority +pkg log/syslog (darwin-amd64), const LOG_EMERG Priority +pkg log/syslog (darwin-amd64), const LOG_ERR Priority +pkg log/syslog (darwin-amd64), const LOG_INFO Priority +pkg log/syslog (darwin-amd64), const LOG_NOTICE Priority +pkg log/syslog (darwin-amd64), const LOG_WARNING Priority +pkg log/syslog (darwin-amd64), func Dial(string, Priority, string) (*Writer, error) +pkg log/syslog (darwin-amd64), func New(Priority, string) (*Writer, error) +pkg log/syslog (darwin-amd64), func NewLogger(Priority, int) (*log.Logger, error) +pkg log/syslog (darwin-amd64), method (*Writer) Alert(string) error +pkg log/syslog (darwin-amd64), method (*Writer) Close() error +pkg log/syslog (darwin-amd64), method (*Writer) Crit(string) error +pkg log/syslog (darwin-amd64), method (*Writer) Debug(string) error +pkg log/syslog (darwin-amd64), method (*Writer) Emerg(string) error +pkg log/syslog (darwin-amd64), method (*Writer) Err(string) error +pkg log/syslog (darwin-amd64), method (*Writer) Info(string) error +pkg log/syslog (darwin-amd64), method (*Writer) Notice(string) error +pkg log/syslog (darwin-amd64), method (*Writer) Warning(string) error +pkg log/syslog (darwin-amd64), method (*Writer) Write([]byte) (int, error) +pkg log/syslog (darwin-amd64), type Priority int +pkg log/syslog (darwin-amd64), type Writer struct +pkg log/syslog (darwin-amd64-cgo), const LOG_ALERT Priority +pkg log/syslog (darwin-amd64-cgo), const LOG_CRIT Priority +pkg log/syslog (darwin-amd64-cgo), const LOG_DEBUG Priority +pkg log/syslog (darwin-amd64-cgo), const LOG_EMERG Priority +pkg log/syslog (darwin-amd64-cgo), const LOG_ERR Priority +pkg log/syslog (darwin-amd64-cgo), const LOG_INFO Priority +pkg log/syslog (darwin-amd64-cgo), const LOG_NOTICE Priority +pkg log/syslog (darwin-amd64-cgo), const LOG_WARNING Priority +pkg log/syslog (darwin-amd64-cgo), func Dial(string, Priority, string) (*Writer, error) +pkg log/syslog (darwin-amd64-cgo), func New(Priority, string) (*Writer, error) +pkg log/syslog (darwin-amd64-cgo), func NewLogger(Priority, int) (*log.Logger, error) +pkg log/syslog (darwin-amd64-cgo), method (*Writer) Alert(string) error +pkg log/syslog (darwin-amd64-cgo), method (*Writer) Close() error +pkg log/syslog (darwin-amd64-cgo), method (*Writer) Crit(string) error +pkg log/syslog (darwin-amd64-cgo), method (*Writer) Debug(string) error +pkg log/syslog (darwin-amd64-cgo), method (*Writer) Emerg(string) error +pkg log/syslog (darwin-amd64-cgo), method (*Writer) Err(string) error +pkg log/syslog (darwin-amd64-cgo), method (*Writer) Info(string) error +pkg log/syslog (darwin-amd64-cgo), method (*Writer) Notice(string) error +pkg log/syslog (darwin-amd64-cgo), method (*Writer) Warning(string) error +pkg log/syslog (darwin-amd64-cgo), method (*Writer) Write([]byte) (int, error) +pkg log/syslog (darwin-amd64-cgo), type Priority int +pkg log/syslog (darwin-amd64-cgo), type Writer struct +pkg log/syslog (linux-386), const LOG_ALERT Priority +pkg log/syslog (linux-386), const LOG_CRIT Priority +pkg log/syslog (linux-386), const LOG_DEBUG Priority +pkg log/syslog (linux-386), const LOG_EMERG Priority +pkg log/syslog (linux-386), const LOG_ERR Priority +pkg log/syslog (linux-386), const LOG_INFO Priority +pkg log/syslog (linux-386), const LOG_NOTICE Priority +pkg log/syslog (linux-386), const LOG_WARNING Priority +pkg log/syslog (linux-386), func Dial(string, Priority, string) (*Writer, error) +pkg log/syslog (linux-386), func New(Priority, string) (*Writer, error) +pkg log/syslog (linux-386), func NewLogger(Priority, int) (*log.Logger, error) +pkg log/syslog (linux-386), method (*Writer) Alert(string) error +pkg log/syslog (linux-386), method (*Writer) Close() error +pkg log/syslog (linux-386), method (*Writer) Crit(string) error +pkg log/syslog (linux-386), method (*Writer) Debug(string) error +pkg log/syslog (linux-386), method (*Writer) Emerg(string) error +pkg log/syslog (linux-386), method (*Writer) Err(string) error +pkg log/syslog (linux-386), method (*Writer) Info(string) error +pkg log/syslog (linux-386), method (*Writer) Notice(string) error +pkg log/syslog (linux-386), method (*Writer) Warning(string) error +pkg log/syslog (linux-386), method (*Writer) Write([]byte) (int, error) +pkg log/syslog (linux-386), type Priority int +pkg log/syslog (linux-386), type Writer struct +pkg log/syslog (linux-386-cgo), const LOG_ALERT Priority +pkg log/syslog (linux-386-cgo), const LOG_CRIT Priority +pkg log/syslog (linux-386-cgo), const LOG_DEBUG Priority +pkg log/syslog (linux-386-cgo), const LOG_EMERG Priority +pkg log/syslog (linux-386-cgo), const LOG_ERR Priority +pkg log/syslog (linux-386-cgo), const LOG_INFO Priority +pkg log/syslog (linux-386-cgo), const LOG_NOTICE Priority +pkg log/syslog (linux-386-cgo), const LOG_WARNING Priority +pkg log/syslog (linux-386-cgo), func Dial(string, Priority, string) (*Writer, error) +pkg log/syslog (linux-386-cgo), func New(Priority, string) (*Writer, error) +pkg log/syslog (linux-386-cgo), func NewLogger(Priority, int) (*log.Logger, error) +pkg log/syslog (linux-386-cgo), method (*Writer) Alert(string) error +pkg log/syslog (linux-386-cgo), method (*Writer) Close() error +pkg log/syslog (linux-386-cgo), method (*Writer) Crit(string) error +pkg log/syslog (linux-386-cgo), method (*Writer) Debug(string) error +pkg log/syslog (linux-386-cgo), method (*Writer) Emerg(string) error +pkg log/syslog (linux-386-cgo), method (*Writer) Err(string) error +pkg log/syslog (linux-386-cgo), method (*Writer) Info(string) error +pkg log/syslog (linux-386-cgo), method (*Writer) Notice(string) error +pkg log/syslog (linux-386-cgo), method (*Writer) Warning(string) error +pkg log/syslog (linux-386-cgo), method (*Writer) Write([]byte) (int, error) +pkg log/syslog (linux-386-cgo), type Priority int +pkg log/syslog (linux-386-cgo), type Writer struct +pkg log/syslog (linux-amd64), const LOG_ALERT Priority +pkg log/syslog (linux-amd64), const LOG_CRIT Priority +pkg log/syslog (linux-amd64), const LOG_DEBUG Priority +pkg log/syslog (linux-amd64), const LOG_EMERG Priority +pkg log/syslog (linux-amd64), const LOG_ERR Priority +pkg log/syslog (linux-amd64), const LOG_INFO Priority +pkg log/syslog (linux-amd64), const LOG_NOTICE Priority +pkg log/syslog (linux-amd64), const LOG_WARNING Priority +pkg log/syslog (linux-amd64), func Dial(string, Priority, string) (*Writer, error) +pkg log/syslog (linux-amd64), func New(Priority, string) (*Writer, error) +pkg log/syslog (linux-amd64), func NewLogger(Priority, int) (*log.Logger, error) +pkg log/syslog (linux-amd64), method (*Writer) Alert(string) error +pkg log/syslog (linux-amd64), method (*Writer) Close() error +pkg log/syslog (linux-amd64), method (*Writer) Crit(string) error +pkg log/syslog (linux-amd64), method (*Writer) Debug(string) error +pkg log/syslog (linux-amd64), method (*Writer) Emerg(string) error +pkg log/syslog (linux-amd64), method (*Writer) Err(string) error +pkg log/syslog (linux-amd64), method (*Writer) Info(string) error +pkg log/syslog (linux-amd64), method (*Writer) Notice(string) error +pkg log/syslog (linux-amd64), method (*Writer) Warning(string) error +pkg log/syslog (linux-amd64), method (*Writer) Write([]byte) (int, error) +pkg log/syslog (linux-amd64), type Priority int +pkg log/syslog (linux-amd64), type Writer struct +pkg log/syslog (linux-amd64-cgo), const LOG_ALERT Priority +pkg log/syslog (linux-amd64-cgo), const LOG_CRIT Priority +pkg log/syslog (linux-amd64-cgo), const LOG_DEBUG Priority +pkg log/syslog (linux-amd64-cgo), const LOG_EMERG Priority +pkg log/syslog (linux-amd64-cgo), const LOG_ERR Priority +pkg log/syslog (linux-amd64-cgo), const LOG_INFO Priority +pkg log/syslog (linux-amd64-cgo), const LOG_NOTICE Priority +pkg log/syslog (linux-amd64-cgo), const LOG_WARNING Priority +pkg log/syslog (linux-amd64-cgo), func Dial(string, Priority, string) (*Writer, error) +pkg log/syslog (linux-amd64-cgo), func New(Priority, string) (*Writer, error) +pkg log/syslog (linux-amd64-cgo), func NewLogger(Priority, int) (*log.Logger, error) +pkg log/syslog (linux-amd64-cgo), method (*Writer) Alert(string) error +pkg log/syslog (linux-amd64-cgo), method (*Writer) Close() error +pkg log/syslog (linux-amd64-cgo), method (*Writer) Crit(string) error +pkg log/syslog (linux-amd64-cgo), method (*Writer) Debug(string) error +pkg log/syslog (linux-amd64-cgo), method (*Writer) Emerg(string) error +pkg log/syslog (linux-amd64-cgo), method (*Writer) Err(string) error +pkg log/syslog (linux-amd64-cgo), method (*Writer) Info(string) error +pkg log/syslog (linux-amd64-cgo), method (*Writer) Notice(string) error +pkg log/syslog (linux-amd64-cgo), method (*Writer) Warning(string) error +pkg log/syslog (linux-amd64-cgo), method (*Writer) Write([]byte) (int, error) +pkg log/syslog (linux-amd64-cgo), type Priority int +pkg log/syslog (linux-amd64-cgo), type Writer struct +pkg math, const E ideal-float +pkg math, const Ln10 ideal-float +pkg math, const Ln2 ideal-float +pkg math, const Log10E ideal-float +pkg math, const Log2E ideal-float +pkg math, const MaxFloat32 ideal-float +pkg math, const MaxFloat64 ideal-float +pkg math, const MaxInt16 ideal-int +pkg math, const MaxInt32 ideal-int +pkg math, const MaxInt64 ideal-int +pkg math, const MaxInt8 ideal-int +pkg math, const MaxUint16 ideal-int +pkg math, const MaxUint32 ideal-int +pkg math, const MaxUint64 ideal-int +pkg math, const MaxUint8 ideal-int +pkg math, const MinInt16 ideal-int +pkg math, const MinInt32 ideal-int +pkg math, const MinInt64 ideal-int +pkg math, const MinInt8 ideal-int +pkg math, const Phi ideal-float +pkg math, const Pi ideal-float +pkg math, const SmallestNonzeroFloat32 ideal-float +pkg math, const SmallestNonzeroFloat64 ideal-float +pkg math, const Sqrt2 ideal-float +pkg math, const SqrtE ideal-float +pkg math, const SqrtPhi ideal-float +pkg math, const SqrtPi ideal-float +pkg math, func Abs(float64) float64 +pkg math, func Acos(float64) float64 +pkg math, func Acosh(float64) float64 +pkg math, func Asin(float64) float64 +pkg math, func Asinh(float64) float64 +pkg math, func Atan(float64) float64 +pkg math, func Atan2(float64) float64 +pkg math, func Atanh(float64) float64 +pkg math, func Cbrt(float64) float64 +pkg math, func Ceil(float64) float64 +pkg math, func Copysign(float64) float64 +pkg math, func Cos(float64) float64 +pkg math, func Cosh(float64) float64 +pkg math, func Dim(float64) float64 +pkg math, func Erf(float64) float64 +pkg math, func Erfc(float64) float64 +pkg math, func Exp(float64) float64 +pkg math, func Exp2(float64) float64 +pkg math, func Expm1(float64) float64 +pkg math, func Float32bits(float32) uint32 +pkg math, func Float32frombits(uint32) float32 +pkg math, func Float64bits(float64) uint64 +pkg math, func Float64frombits(uint64) float64 +pkg math, func Floor(float64) float64 +pkg math, func Frexp(float64) (float64, int) +pkg math, func Gamma(float64) float64 +pkg math, func Hypot(float64) float64 +pkg math, func Ilogb(float64) int +pkg math, func Inf(int) float64 +pkg math, func IsInf(float64, int) bool +pkg math, func IsNaN(float64) bool +pkg math, func J0(float64) float64 +pkg math, func J1(float64) float64 +pkg math, func Jn(int, float64) float64 +pkg math, func Ldexp(float64, int) float64 +pkg math, func Lgamma(float64) (float64, int) +pkg math, func Log(float64) float64 +pkg math, func Log10(float64) float64 +pkg math, func Log1p(float64) float64 +pkg math, func Log2(float64) float64 +pkg math, func Logb(float64) float64 +pkg math, func Max(float64) float64 +pkg math, func Min(float64) float64 +pkg math, func Mod(float64) float64 +pkg math, func Modf(float64) (float64, float64) +pkg math, func NaN() float64 +pkg math, func Nextafter(float64) float64 +pkg math, func Pow(float64) float64 +pkg math, func Pow10(int) float64 +pkg math, func Remainder(float64) float64 +pkg math, func Signbit(float64) bool +pkg math, func Sin(float64) float64 +pkg math, func Sincos(float64) float64 +pkg math, func Sinh(float64) float64 +pkg math, func Sqrt(float64) float64 +pkg math, func Tan(float64) float64 +pkg math, func Tanh(float64) float64 +pkg math, func Trunc(float64) float64 +pkg math, func Y0(float64) float64 +pkg math, func Y1(float64) float64 +pkg math, func Yn(int, float64) float64 +pkg math/big, const MaxBase ideal-int +pkg math/big, func NewInt(int64) *Int +pkg math/big, func NewRat(int64) *Rat +pkg math/big, method (*Int) Abs(*Int) *Int +pkg math/big, method (*Int) Add(*Int) *Int +pkg math/big, method (*Int) And(*Int) *Int +pkg math/big, method (*Int) AndNot(*Int) *Int +pkg math/big, method (*Int) Binomial(int64) *Int +pkg math/big, method (*Int) Bit(int) uint +pkg math/big, method (*Int) BitLen() int +pkg math/big, method (*Int) Bits() []Word +pkg math/big, method (*Int) Bytes() []byte +pkg math/big, method (*Int) Cmp(*Int) int +pkg math/big, method (*Int) Div(*Int) *Int +pkg math/big, method (*Int) DivMod(*Int) (*Int, *Int) +pkg math/big, method (*Int) Exp(*Int) *Int +pkg math/big, method (*Int) Format(fmt.State, rune) +pkg math/big, method (*Int) GCD(*Int) *Int +pkg math/big, method (*Int) GobDecode([]byte) error +pkg math/big, method (*Int) GobEncode() ([]byte, error) +pkg math/big, method (*Int) Int64() int64 +pkg math/big, method (*Int) Lsh(*Int, uint) *Int +pkg math/big, method (*Int) Mod(*Int) *Int +pkg math/big, method (*Int) ModInverse(*Int) *Int +pkg math/big, method (*Int) Mul(*Int) *Int +pkg math/big, method (*Int) MulRange(int64) *Int +pkg math/big, method (*Int) Neg(*Int) *Int +pkg math/big, method (*Int) Not(*Int) *Int +pkg math/big, method (*Int) Or(*Int) *Int +pkg math/big, method (*Int) ProbablyPrime(int) bool +pkg math/big, method (*Int) Quo(*Int) *Int +pkg math/big, method (*Int) QuoRem(*Int) (*Int, *Int) +pkg math/big, method (*Int) Rand(*rand.Rand, *Int) *Int +pkg math/big, method (*Int) Rem(*Int) *Int +pkg math/big, method (*Int) Rsh(*Int, uint) *Int +pkg math/big, method (*Int) Scan(fmt.ScanState, rune) error +pkg math/big, method (*Int) Set(*Int) *Int +pkg math/big, method (*Int) SetBit(*Int, int, uint) *Int +pkg math/big, method (*Int) SetBits([]Word) *Int +pkg math/big, method (*Int) SetBytes([]byte) *Int +pkg math/big, method (*Int) SetInt64(int64) *Int +pkg math/big, method (*Int) SetString(string, int) (*Int, bool) +pkg math/big, method (*Int) Sign() int +pkg math/big, method (*Int) String() string +pkg math/big, method (*Int) Sub(*Int) *Int +pkg math/big, method (*Int) Xor(*Int) *Int +pkg math/big, method (*Rat) Abs(*Rat) *Rat +pkg math/big, method (*Rat) Add(*Rat) *Rat +pkg math/big, method (*Rat) Cmp(*Rat) int +pkg math/big, method (*Rat) Denom() *Int +pkg math/big, method (*Rat) FloatString(int) string +pkg math/big, method (*Rat) GobDecode([]byte) error +pkg math/big, method (*Rat) GobEncode() ([]byte, error) +pkg math/big, method (*Rat) Inv(*Rat) *Rat +pkg math/big, method (*Rat) IsInt() bool +pkg math/big, method (*Rat) Mul(*Rat) *Rat +pkg math/big, method (*Rat) Neg(*Rat) *Rat +pkg math/big, method (*Rat) Num() *Int +pkg math/big, method (*Rat) Quo(*Rat) *Rat +pkg math/big, method (*Rat) RatString() string +pkg math/big, method (*Rat) Scan(fmt.ScanState, rune) error +pkg math/big, method (*Rat) Set(*Rat) *Rat +pkg math/big, method (*Rat) SetFrac(*Int) *Rat +pkg math/big, method (*Rat) SetFrac64(int64) *Rat +pkg math/big, method (*Rat) SetInt(*Int) *Rat +pkg math/big, method (*Rat) SetInt64(int64) *Rat +pkg math/big, method (*Rat) SetString(string) (*Rat, bool) +pkg math/big, method (*Rat) Sign() int +pkg math/big, method (*Rat) String() string +pkg math/big, method (*Rat) Sub(*Rat) *Rat +pkg math/big, type Int struct +pkg math/big, type Rat struct +pkg math/big, type Word uintptr +pkg math/cmplx, func Abs(complex128) float64 +pkg math/cmplx, func Acos(complex128) complex128 +pkg math/cmplx, func Acosh(complex128) complex128 +pkg math/cmplx, func Asin(complex128) complex128 +pkg math/cmplx, func Asinh(complex128) complex128 +pkg math/cmplx, func Atan(complex128) complex128 +pkg math/cmplx, func Atanh(complex128) complex128 +pkg math/cmplx, func Conj(complex128) complex128 +pkg math/cmplx, func Cos(complex128) complex128 +pkg math/cmplx, func Cosh(complex128) complex128 +pkg math/cmplx, func Cot(complex128) complex128 +pkg math/cmplx, func Exp(complex128) complex128 +pkg math/cmplx, func Inf() complex128 +pkg math/cmplx, func IsInf(complex128) bool +pkg math/cmplx, func IsNaN(complex128) bool +pkg math/cmplx, func Log(complex128) complex128 +pkg math/cmplx, func Log10(complex128) complex128 +pkg math/cmplx, func NaN() complex128 +pkg math/cmplx, func Phase(complex128) float64 +pkg math/cmplx, func Polar(complex128) float64 +pkg math/cmplx, func Pow(complex128) complex128 +pkg math/cmplx, func Rect(float64) complex128 +pkg math/cmplx, func Sin(complex128) complex128 +pkg math/cmplx, func Sinh(complex128) complex128 +pkg math/cmplx, func Sqrt(complex128) complex128 +pkg math/cmplx, func Tan(complex128) complex128 +pkg math/cmplx, func Tanh(complex128) complex128 +pkg math/rand, func ExpFloat64() float64 +pkg math/rand, func Float32() float32 +pkg math/rand, func Float64() float64 +pkg math/rand, func Int() int +pkg math/rand, func Int31() int32 +pkg math/rand, func Int31n(int32) int32 +pkg math/rand, func Int63() int64 +pkg math/rand, func Int63n(int64) int64 +pkg math/rand, func Intn(int) int +pkg math/rand, func New(Source) *Rand +pkg math/rand, func NewSource(int64) Source +pkg math/rand, func NewZipf(*Rand, float64, float64, uint64) *Zipf +pkg math/rand, func NormFloat64() float64 +pkg math/rand, func Perm(int) []int +pkg math/rand, func Seed(int64) +pkg math/rand, func Uint32() uint32 +pkg math/rand, method (*Rand) ExpFloat64() float64 +pkg math/rand, method (*Rand) Float32() float32 +pkg math/rand, method (*Rand) Float64() float64 +pkg math/rand, method (*Rand) Int() int +pkg math/rand, method (*Rand) Int31() int32 +pkg math/rand, method (*Rand) Int31n(int32) int32 +pkg math/rand, method (*Rand) Int63() int64 +pkg math/rand, method (*Rand) Int63n(int64) int64 +pkg math/rand, method (*Rand) Intn(int) int +pkg math/rand, method (*Rand) NormFloat64() float64 +pkg math/rand, method (*Rand) Perm(int) []int +pkg math/rand, method (*Rand) Seed(int64) +pkg math/rand, method (*Rand) Uint32() uint32 +pkg math/rand, method (*Zipf) Uint64() uint64 +pkg math/rand, type Rand struct +pkg math/rand, type Source interface { Int63, Seed } +pkg math/rand, type Source interface, Int63() int64 +pkg math/rand, type Source interface, Seed(int64) +pkg math/rand, type Zipf struct +pkg mime, func AddExtensionType(string) error +pkg mime, func FormatMediaType(string, map[string]string) string +pkg mime, func ParseMediaType(string) (string, map[string]string, error) +pkg mime, func TypeByExtension(string) string +pkg mime/multipart, func NewReader(io.Reader, string) *Reader +pkg mime/multipart, func NewWriter(io.Writer) *Writer +pkg mime/multipart, method (*FileHeader) Open() (File, error) +pkg mime/multipart, method (*Form) RemoveAll() error +pkg mime/multipart, method (*Part) Close() error +pkg mime/multipart, method (*Part) FileName() string +pkg mime/multipart, method (*Part) FormName() string +pkg mime/multipart, method (*Part) Read([]byte) (int, error) +pkg mime/multipart, method (*Reader) NextPart() (*Part, error) +pkg mime/multipart, method (*Reader) ReadForm(int64) (*Form, error) +pkg mime/multipart, method (*Writer) Boundary() string +pkg mime/multipart, method (*Writer) Close() error +pkg mime/multipart, method (*Writer) CreateFormField(string) (io.Writer, error) +pkg mime/multipart, method (*Writer) CreateFormFile(string) (io.Writer, error) +pkg mime/multipart, method (*Writer) CreatePart(textproto.MIMEHeader) (io.Writer, error) +pkg mime/multipart, method (*Writer) FormDataContentType() string +pkg mime/multipart, method (*Writer) WriteField(string) error +pkg mime/multipart, type File interface { Close, Read, ReadAt, Seek } +pkg mime/multipart, type File interface, Close() error +pkg mime/multipart, type File interface, Read([]byte) (int, error) +pkg mime/multipart, type File interface, ReadAt([]byte, int64) (int, error) +pkg mime/multipart, type File interface, Seek(int64, int) (int64, error) +pkg mime/multipart, type FileHeader struct +pkg mime/multipart, type FileHeader struct, Filename string +pkg mime/multipart, type FileHeader struct, Header textproto.MIMEHeader +pkg mime/multipart, type Form struct +pkg mime/multipart, type Form struct, File map[string][]*FileHeader +pkg mime/multipart, type Form struct, Value map[string][]string +pkg mime/multipart, type Part struct +pkg mime/multipart, type Part struct, Header textproto.MIMEHeader +pkg mime/multipart, type Reader struct +pkg mime/multipart, type Writer struct +pkg net, const FlagBroadcast Flags +pkg net, const FlagLoopback Flags +pkg net, const FlagMulticast Flags +pkg net, const FlagPointToPoint Flags +pkg net, const FlagUp Flags +pkg net, const IPv4len ideal-int +pkg net, const IPv6len ideal-int +pkg net, func CIDRMask(int) IPMask +pkg net, func Dial(string) (Conn, error) +pkg net, func DialIP(string, *IPAddr) (*IPConn, error) +pkg net, func DialTCP(string, *TCPAddr) (*TCPConn, error) +pkg net, func DialTimeout(string, time.Duration) (Conn, error) +pkg net, func DialUDP(string, *UDPAddr) (*UDPConn, error) +pkg net, func DialUnix(string, *UnixAddr) (*UnixConn, error) +pkg net, func FileConn(*os.File) (Conn, error) +pkg net, func FileListener(*os.File) (Listener, error) +pkg net, func FilePacketConn(*os.File) (PacketConn, error) +pkg net, func IPv4(byte) IP +pkg net, func IPv4Mask(byte) IPMask +pkg net, func InterfaceAddrs() ([]Addr, error) +pkg net, func InterfaceByIndex(int) (*Interface, error) +pkg net, func InterfaceByName(string) (*Interface, error) +pkg net, func Interfaces() ([]Interface, error) +pkg net, func JoinHostPort(string) string +pkg net, func Listen(string) (Listener, error) +pkg net, func ListenIP(string, *IPAddr) (*IPConn, error) +pkg net, func ListenMulticastUDP(string, *Interface, *UDPAddr) (*UDPConn, error) +pkg net, func ListenPacket(string) (PacketConn, error) +pkg net, func ListenTCP(string, *TCPAddr) (*TCPListener, error) +pkg net, func ListenUDP(string, *UDPAddr) (*UDPConn, error) +pkg net, func ListenUnix(string, *UnixAddr) (*UnixListener, error) +pkg net, func ListenUnixgram(string, *UnixAddr) (*UDPConn, error) +pkg net, func LookupAddr(string) ([]string, error) +pkg net, func LookupCNAME(string) (string, error) +pkg net, func LookupHost(string) ([]string, error) +pkg net, func LookupIP(string) ([]IP, error) +pkg net, func LookupMX(string) ([]*MX, error) +pkg net, func LookupPort(string) (int, error) +pkg net, func LookupSRV(string) (string, []*SRV, error) +pkg net, func LookupTXT(string) ([]string, error) +pkg net, func ParseCIDR(string) (IP, *IPNet, error) +pkg net, func ParseIP(string) IP +pkg net, func ParseMAC(string) (HardwareAddr, error) +pkg net, func Pipe() (Conn, Conn) +pkg net, func ResolveIPAddr(string) (*IPAddr, error) +pkg net, func ResolveTCPAddr(string) (*TCPAddr, error) +pkg net, func ResolveUDPAddr(string) (*UDPAddr, error) +pkg net, func ResolveUnixAddr(string) (*UnixAddr, error) +pkg net, func SplitHostPort(string) (string, error) +pkg net, method (*AddrError) Error() string +pkg net, method (*AddrError) Temporary() bool +pkg net, method (*AddrError) Timeout() bool +pkg net, method (*DNSConfigError) Error() string +pkg net, method (*DNSConfigError) Temporary() bool +pkg net, method (*DNSConfigError) Timeout() bool +pkg net, method (*DNSError) Error() string +pkg net, method (*DNSError) Temporary() bool +pkg net, method (*DNSError) Timeout() bool +pkg net, method (*IPAddr) Network() string +pkg net, method (*IPAddr) String() string +pkg net, method (*IPConn) Close() error +pkg net, method (*IPConn) File() (*os.File, error) +pkg net, method (*IPConn) LocalAddr() Addr +pkg net, method (*IPConn) Read([]byte) (int, error) +pkg net, method (*IPConn) ReadFrom([]byte) (int, Addr, error) +pkg net, method (*IPConn) ReadFromIP([]byte) (int, *IPAddr, error) +pkg net, method (*IPConn) RemoteAddr() Addr +pkg net, method (*IPConn) SetDeadline(time.Time) error +pkg net, method (*IPConn) SetReadBuffer(int) error +pkg net, method (*IPConn) SetReadDeadline(time.Time) error +pkg net, method (*IPConn) SetWriteBuffer(int) error +pkg net, method (*IPConn) SetWriteDeadline(time.Time) error +pkg net, method (*IPConn) Write([]byte) (int, error) +pkg net, method (*IPConn) WriteTo([]byte, Addr) (int, error) +pkg net, method (*IPConn) WriteToIP([]byte, *IPAddr) (int, error) +pkg net, method (*IPNet) Contains(IP) bool +pkg net, method (*IPNet) Network() string +pkg net, method (*IPNet) String() string +pkg net, method (*Interface) Addrs() ([]Addr, error) +pkg net, method (*Interface) MulticastAddrs() ([]Addr, error) +pkg net, method (*OpError) Error() string +pkg net, method (*OpError) Temporary() bool +pkg net, method (*OpError) Timeout() bool +pkg net, method (*ParseError) Error() string +pkg net, method (*TCPAddr) Network() string +pkg net, method (*TCPAddr) String() string +pkg net, method (*TCPConn) Close() error +pkg net, method (*TCPConn) CloseRead() error +pkg net, method (*TCPConn) CloseWrite() error +pkg net, method (*TCPConn) File() (*os.File, error) +pkg net, method (*TCPConn) LocalAddr() Addr +pkg net, method (*TCPConn) Read([]byte) (int, error) +pkg net, method (*TCPConn) ReadFrom(io.Reader) (int64, error) +pkg net, method (*TCPConn) RemoteAddr() Addr +pkg net, method (*TCPConn) SetDeadline(time.Time) error +pkg net, method (*TCPConn) SetKeepAlive(bool) error +pkg net, method (*TCPConn) SetLinger(int) error +pkg net, method (*TCPConn) SetNoDelay(bool) error +pkg net, method (*TCPConn) SetReadBuffer(int) error +pkg net, method (*TCPConn) SetReadDeadline(time.Time) error +pkg net, method (*TCPConn) SetWriteBuffer(int) error +pkg net, method (*TCPConn) SetWriteDeadline(time.Time) error +pkg net, method (*TCPConn) Write([]byte) (int, error) +pkg net, method (*TCPListener) Accept() (Conn, error) +pkg net, method (*TCPListener) AcceptTCP() (*TCPConn, error) +pkg net, method (*TCPListener) Addr() Addr +pkg net, method (*TCPListener) Close() error +pkg net, method (*TCPListener) File() (*os.File, error) +pkg net, method (*TCPListener) SetDeadline(time.Time) error +pkg net, method (*UDPAddr) Network() string +pkg net, method (*UDPAddr) String() string +pkg net, method (*UDPConn) Close() error +pkg net, method (*UDPConn) File() (*os.File, error) +pkg net, method (*UDPConn) LocalAddr() Addr +pkg net, method (*UDPConn) Read([]byte) (int, error) +pkg net, method (*UDPConn) ReadFrom([]byte) (int, Addr, error) +pkg net, method (*UDPConn) ReadFromUDP([]byte) (int, *UDPAddr, error) +pkg net, method (*UDPConn) RemoteAddr() Addr +pkg net, method (*UDPConn) SetDeadline(time.Time) error +pkg net, method (*UDPConn) SetReadBuffer(int) error +pkg net, method (*UDPConn) SetReadDeadline(time.Time) error +pkg net, method (*UDPConn) SetWriteBuffer(int) error +pkg net, method (*UDPConn) SetWriteDeadline(time.Time) error +pkg net, method (*UDPConn) Write([]byte) (int, error) +pkg net, method (*UDPConn) WriteTo([]byte, Addr) (int, error) +pkg net, method (*UDPConn) WriteToUDP([]byte, *UDPAddr) (int, error) +pkg net, method (*UnixAddr) Network() string +pkg net, method (*UnixAddr) String() string +pkg net, method (*UnixConn) Close() error +pkg net, method (*UnixConn) File() (*os.File, error) +pkg net, method (*UnixConn) LocalAddr() Addr +pkg net, method (*UnixConn) Read([]byte) (int, error) +pkg net, method (*UnixConn) ReadFrom([]byte) (int, Addr, error) +pkg net, method (*UnixConn) ReadFromUnix([]byte) (int, *UnixAddr, error) +pkg net, method (*UnixConn) ReadMsgUnix([]byte) (int, *UnixAddr, error) +pkg net, method (*UnixConn) RemoteAddr() Addr +pkg net, method (*UnixConn) SetDeadline(time.Time) error +pkg net, method (*UnixConn) SetReadBuffer(int) error +pkg net, method (*UnixConn) SetReadDeadline(time.Time) error +pkg net, method (*UnixConn) SetWriteBuffer(int) error +pkg net, method (*UnixConn) SetWriteDeadline(time.Time) error +pkg net, method (*UnixConn) Write([]byte) (int, error) +pkg net, method (*UnixConn) WriteMsgUnix([]byte, *UnixAddr) (int, error) +pkg net, method (*UnixConn) WriteTo([]byte, Addr) (int, error) +pkg net, method (*UnixConn) WriteToUnix([]byte, *UnixAddr) (int, error) +pkg net, method (*UnixListener) Accept() (Conn, error) +pkg net, method (*UnixListener) AcceptUnix() (*UnixConn, error) +pkg net, method (*UnixListener) Addr() Addr +pkg net, method (*UnixListener) Close() error +pkg net, method (*UnixListener) File() (*os.File, error) +pkg net, method (*UnixListener) SetDeadline(time.Time) error +pkg net, method (Flags) String() string +pkg net, method (HardwareAddr) String() string +pkg net, method (IP) DefaultMask() IPMask +pkg net, method (IP) Equal(IP) bool +pkg net, method (IP) IsGlobalUnicast() bool +pkg net, method (IP) IsInterfaceLocalMulticast() bool +pkg net, method (IP) IsLinkLocalMulticast() bool +pkg net, method (IP) IsLinkLocalUnicast() bool +pkg net, method (IP) IsLoopback() bool +pkg net, method (IP) IsMulticast() bool +pkg net, method (IP) IsUnspecified() bool +pkg net, method (IP) Mask(IPMask) IP +pkg net, method (IP) String() string +pkg net, method (IP) To16() IP +pkg net, method (IP) To4() IP +pkg net, method (IPMask) Size() int +pkg net, method (IPMask) String() string +pkg net, method (InvalidAddrError) Error() string +pkg net, method (InvalidAddrError) Temporary() bool +pkg net, method (InvalidAddrError) Timeout() bool +pkg net, method (UnknownNetworkError) Error() string +pkg net, method (UnknownNetworkError) Temporary() bool +pkg net, method (UnknownNetworkError) Timeout() bool +pkg net, type Addr interface { Network, String } +pkg net, type Addr interface, Network() string +pkg net, type Addr interface, String() string +pkg net, type AddrError struct +pkg net, type AddrError struct, Addr string +pkg net, type AddrError struct, Err string +pkg net, type Conn interface { Close, LocalAddr, Read, RemoteAddr, SetDeadline, SetReadDeadline, SetWriteDeadline, Write } +pkg net, type Conn interface, Close() error +pkg net, type Conn interface, LocalAddr() Addr +pkg net, type Conn interface, Read([]byte) (int, error) +pkg net, type Conn interface, RemoteAddr() Addr +pkg net, type Conn interface, SetDeadline(time.Time) error +pkg net, type Conn interface, SetReadDeadline(time.Time) error +pkg net, type Conn interface, SetWriteDeadline(time.Time) error +pkg net, type Conn interface, Write([]byte) (int, error) +pkg net, type DNSConfigError struct +pkg net, type DNSConfigError struct, Err error +pkg net, type DNSError struct +pkg net, type DNSError struct, Err string +pkg net, type DNSError struct, IsTimeout bool +pkg net, type DNSError struct, Name string +pkg net, type DNSError struct, Server string +pkg net, type Error interface { Error, Temporary, Timeout } +pkg net, type Error interface, Error() string +pkg net, type Error interface, Temporary() bool +pkg net, type Error interface, Timeout() bool +pkg net, type Flags uint +pkg net, type HardwareAddr []byte +pkg net, type IP []byte +pkg net, type IPAddr struct +pkg net, type IPAddr struct, IP IP +pkg net, type IPConn struct +pkg net, type IPMask []byte +pkg net, type IPNet struct +pkg net, type IPNet struct, IP IP +pkg net, type IPNet struct, Mask IPMask +pkg net, type Interface struct +pkg net, type Interface struct, Flags Flags +pkg net, type Interface struct, HardwareAddr HardwareAddr +pkg net, type Interface struct, Index int +pkg net, type Interface struct, MTU int +pkg net, type Interface struct, Name string +pkg net, type InvalidAddrError string +pkg net, type Listener interface { Accept, Addr, Close } +pkg net, type Listener interface, Accept() (Conn, error) +pkg net, type Listener interface, Addr() Addr +pkg net, type Listener interface, Close() error +pkg net, type MX struct +pkg net, type MX struct, Host string +pkg net, type MX struct, Pref uint16 +pkg net, type OpError struct +pkg net, type OpError struct, Addr Addr +pkg net, type OpError struct, Err error +pkg net, type OpError struct, Net string +pkg net, type OpError struct, Op string +pkg net, type PacketConn interface { Close, LocalAddr, ReadFrom, SetDeadline, SetReadDeadline, SetWriteDeadline, WriteTo } +pkg net, type PacketConn interface, Close() error +pkg net, type PacketConn interface, LocalAddr() Addr +pkg net, type PacketConn interface, ReadFrom([]byte) (int, Addr, error) +pkg net, type PacketConn interface, SetDeadline(time.Time) error +pkg net, type PacketConn interface, SetReadDeadline(time.Time) error +pkg net, type PacketConn interface, SetWriteDeadline(time.Time) error +pkg net, type PacketConn interface, WriteTo([]byte, Addr) (int, error) +pkg net, type ParseError struct +pkg net, type ParseError struct, Text string +pkg net, type ParseError struct, Type string +pkg net, type SRV struct +pkg net, type SRV struct, Port uint16 +pkg net, type SRV struct, Priority uint16 +pkg net, type SRV struct, Target string +pkg net, type SRV struct, Weight uint16 +pkg net, type TCPAddr struct +pkg net, type TCPAddr struct, IP IP +pkg net, type TCPAddr struct, Port int +pkg net, type TCPConn struct +pkg net, type TCPListener struct +pkg net, type UDPAddr struct +pkg net, type UDPAddr struct, IP IP +pkg net, type UDPAddr struct, Port int +pkg net, type UDPConn struct +pkg net, type UnixAddr struct +pkg net, type UnixAddr struct, Name string +pkg net, type UnixAddr struct, Net string +pkg net, type UnixConn struct +pkg net, type UnixListener struct +pkg net, type UnknownNetworkError string +pkg net, var ErrWriteToConnected error +pkg net, var IPv4allrouter IP +pkg net, var IPv4allsys IP +pkg net, var IPv4bcast IP +pkg net, var IPv4zero IP +pkg net, var IPv6interfacelocalallnodes IP +pkg net, var IPv6linklocalallnodes IP +pkg net, var IPv6linklocalallrouters IP +pkg net, var IPv6loopback IP +pkg net, var IPv6unspecified IP +pkg net, var IPv6zero IP +pkg net/http, const DefaultMaxHeaderBytes ideal-int +pkg net/http, const DefaultMaxIdleConnsPerHost ideal-int +pkg net/http, const StatusAccepted ideal-int +pkg net/http, const StatusBadGateway ideal-int +pkg net/http, const StatusBadRequest ideal-int +pkg net/http, const StatusConflict ideal-int +pkg net/http, const StatusContinue ideal-int +pkg net/http, const StatusCreated ideal-int +pkg net/http, const StatusExpectationFailed ideal-int +pkg net/http, const StatusForbidden ideal-int +pkg net/http, const StatusFound ideal-int +pkg net/http, const StatusGatewayTimeout ideal-int +pkg net/http, const StatusGone ideal-int +pkg net/http, const StatusHTTPVersionNotSupported ideal-int +pkg net/http, const StatusInternalServerError ideal-int +pkg net/http, const StatusLengthRequired ideal-int +pkg net/http, const StatusMethodNotAllowed ideal-int +pkg net/http, const StatusMovedPermanently ideal-int +pkg net/http, const StatusMultipleChoices ideal-int +pkg net/http, const StatusNoContent ideal-int +pkg net/http, const StatusNonAuthoritativeInfo ideal-int +pkg net/http, const StatusNotAcceptable ideal-int +pkg net/http, const StatusNotFound ideal-int +pkg net/http, const StatusNotImplemented ideal-int +pkg net/http, const StatusNotModified ideal-int +pkg net/http, const StatusOK ideal-int +pkg net/http, const StatusPartialContent ideal-int +pkg net/http, const StatusPaymentRequired ideal-int +pkg net/http, const StatusPreconditionFailed ideal-int +pkg net/http, const StatusProxyAuthRequired ideal-int +pkg net/http, const StatusRequestEntityTooLarge ideal-int +pkg net/http, const StatusRequestTimeout ideal-int +pkg net/http, const StatusRequestURITooLong ideal-int +pkg net/http, const StatusRequestedRangeNotSatisfiable ideal-int +pkg net/http, const StatusResetContent ideal-int +pkg net/http, const StatusSeeOther ideal-int +pkg net/http, const StatusServiceUnavailable ideal-int +pkg net/http, const StatusSwitchingProtocols ideal-int +pkg net/http, const StatusTeapot ideal-int +pkg net/http, const StatusTemporaryRedirect ideal-int +pkg net/http, const StatusUnauthorized ideal-int +pkg net/http, const StatusUnsupportedMediaType ideal-int +pkg net/http, const StatusUseProxy ideal-int +pkg net/http, const TimeFormat ideal-string +pkg net/http, func CanonicalHeaderKey(string) string +pkg net/http, func DetectContentType([]byte) string +pkg net/http, func Error(ResponseWriter, string, int) +pkg net/http, func FileServer(FileSystem) Handler +pkg net/http, func Get(string) (*Response, error) +pkg net/http, func Handle(string, Handler) +pkg net/http, func HandleFunc(string, func(ResponseWriter, *Request)) +pkg net/http, func Head(string) (*Response, error) +pkg net/http, func ListenAndServe(string, Handler) error +pkg net/http, func ListenAndServeTLS(string, string, string, Handler) error +pkg net/http, func MaxBytesReader(ResponseWriter, io.ReadCloser, int64) io.ReadCloser +pkg net/http, func NewFileTransport(FileSystem) RoundTripper +pkg net/http, func NewRequest(string, io.Reader) (*Request, error) +pkg net/http, func NewServeMux() *ServeMux +pkg net/http, func NotFound(ResponseWriter, *Request) +pkg net/http, func NotFoundHandler() Handler +pkg net/http, func ParseHTTPVersion(string) (int, bool) +pkg net/http, func Post(string, string, io.Reader) (*Response, error) +pkg net/http, func PostForm(string, url.Values) (*Response, error) +pkg net/http, func ProxyFromEnvironment(*Request) (*url.URL, error) +pkg net/http, func ProxyURL(*url.URL) func(*Request) (*url.URL, error) +pkg net/http, func ReadRequest(*bufio.Reader) (*Request, error) +pkg net/http, func ReadResponse(*bufio.Reader, *Request) (*Response, error) +pkg net/http, func Redirect(ResponseWriter, *Request, string, int) +pkg net/http, func RedirectHandler(string, int) Handler +pkg net/http, func Serve(net.Listener, Handler) error +pkg net/http, func ServeContent(ResponseWriter, *Request, string, time.Time, io.ReadSeeker) +pkg net/http, func ServeFile(ResponseWriter, *Request, string) +pkg net/http, func SetCookie(ResponseWriter, *Cookie) +pkg net/http, func StatusText(int) string +pkg net/http, func StripPrefix(string, Handler) Handler +pkg net/http, func TimeoutHandler(Handler, time.Duration, string) Handler +pkg net/http, method (*Client) Do(*Request) (*Response, error) +pkg net/http, method (*Client) Get(string) (*Response, error) +pkg net/http, method (*Client) Head(string) (*Response, error) +pkg net/http, method (*Client) Post(string, string, io.Reader) (*Response, error) +pkg net/http, method (*Client) PostForm(string, url.Values) (*Response, error) +pkg net/http, method (*Cookie) String() string +pkg net/http, method (*ProtocolError) Error() string +pkg net/http, method (*Request) AddCookie(*Cookie) +pkg net/http, method (*Request) Cookie(string) (*Cookie, error) +pkg net/http, method (*Request) Cookies() []*Cookie +pkg net/http, method (*Request) FormFile(string) (multipart.File, *multipart.FileHeader, error) +pkg net/http, method (*Request) FormValue(string) string +pkg net/http, method (*Request) MultipartReader() (*multipart.Reader, error) +pkg net/http, method (*Request) ParseForm() error +pkg net/http, method (*Request) ParseMultipartForm(int64) error +pkg net/http, method (*Request) ProtoAtLeast(int) bool +pkg net/http, method (*Request) Referer() string +pkg net/http, method (*Request) SetBasicAuth(string) +pkg net/http, method (*Request) UserAgent() string +pkg net/http, method (*Request) Write(io.Writer) error +pkg net/http, method (*Request) WriteProxy(io.Writer) error +pkg net/http, method (*Response) Cookies() []*Cookie +pkg net/http, method (*Response) Location() (*url.URL, error) +pkg net/http, method (*Response) ProtoAtLeast(int) bool +pkg net/http, method (*Response) Write(io.Writer) error +pkg net/http, method (*ServeMux) Handle(string, Handler) +pkg net/http, method (*ServeMux) HandleFunc(string, func(ResponseWriter, *Request)) +pkg net/http, method (*ServeMux) ServeHTTP(ResponseWriter, *Request) +pkg net/http, method (*Server) ListenAndServe() error +pkg net/http, method (*Server) ListenAndServeTLS(string) error +pkg net/http, method (*Server) Serve(net.Listener) error +pkg net/http, method (*Transport) CloseIdleConnections() +pkg net/http, method (*Transport) RegisterProtocol(string, RoundTripper) +pkg net/http, method (*Transport) RoundTrip(*Request) (*Response, error) +pkg net/http, method (Dir) Open(string) (File, error) +pkg net/http, method (HandlerFunc) ServeHTTP(ResponseWriter, *Request) +pkg net/http, method (Header) Add(string) +pkg net/http, method (Header) Del(string) +pkg net/http, method (Header) Get(string) string +pkg net/http, method (Header) Set(string) +pkg net/http, method (Header) Write(io.Writer) error +pkg net/http, method (Header) WriteSubset(io.Writer, map[string]bool) error +pkg net/http, type Client struct +pkg net/http, type Client struct, CheckRedirect func(*Request, []*Request) error +pkg net/http, type Client struct, Jar CookieJar +pkg net/http, type Client struct, Transport RoundTripper +pkg net/http, type Cookie struct +pkg net/http, type Cookie struct, Domain string +pkg net/http, type Cookie struct, Expires time.Time +pkg net/http, type Cookie struct, HttpOnly bool +pkg net/http, type Cookie struct, MaxAge int +pkg net/http, type Cookie struct, Name string +pkg net/http, type Cookie struct, Path string +pkg net/http, type Cookie struct, Raw string +pkg net/http, type Cookie struct, RawExpires string +pkg net/http, type Cookie struct, Secure bool +pkg net/http, type Cookie struct, Unparsed []string +pkg net/http, type Cookie struct, Value string +pkg net/http, type CookieJar interface { Cookies, SetCookies } +pkg net/http, type CookieJar interface, Cookies(*url.URL) []*Cookie +pkg net/http, type CookieJar interface, SetCookies(*url.URL, []*Cookie) +pkg net/http, type Dir string +pkg net/http, type File interface { Close, Read, Readdir, Seek, Stat } +pkg net/http, type File interface, Close() error +pkg net/http, type File interface, Read([]byte) (int, error) +pkg net/http, type File interface, Readdir(int) ([]os.FileInfo, error) +pkg net/http, type File interface, Seek(int64, int) (int64, error) +pkg net/http, type File interface, Stat() (os.FileInfo, error) +pkg net/http, type FileSystem interface { Open } +pkg net/http, type FileSystem interface, Open(string) (File, error) +pkg net/http, type Flusher interface { Flush } +pkg net/http, type Flusher interface, Flush() +pkg net/http, type Handler interface { ServeHTTP } +pkg net/http, type Handler interface, ServeHTTP(ResponseWriter, *Request) +pkg net/http, type HandlerFunc func(ResponseWriter, *Request) +pkg net/http, type Header map[string][]string +pkg net/http, type Hijacker interface { Hijack } +pkg net/http, type Hijacker interface, Hijack() (net.Conn, *bufio.ReadWriter, error) +pkg net/http, type ProtocolError struct +pkg net/http, type ProtocolError struct, ErrorString string +pkg net/http, type Request struct +pkg net/http, type Request struct, Body io.ReadCloser +pkg net/http, type Request struct, Close bool +pkg net/http, type Request struct, ContentLength int64 +pkg net/http, type Request struct, Form url.Values +pkg net/http, type Request struct, Header Header +pkg net/http, type Request struct, Host string +pkg net/http, type Request struct, Method string +pkg net/http, type Request struct, MultipartForm *multipart.Form +pkg net/http, type Request struct, Proto string +pkg net/http, type Request struct, ProtoMajor int +pkg net/http, type Request struct, ProtoMinor int +pkg net/http, type Request struct, RemoteAddr string +pkg net/http, type Request struct, RequestURI string +pkg net/http, type Request struct, TLS *tls.ConnectionState +pkg net/http, type Request struct, Trailer Header +pkg net/http, type Request struct, TransferEncoding []string +pkg net/http, type Request struct, URL *url.URL +pkg net/http, type Response struct +pkg net/http, type Response struct, Body io.ReadCloser +pkg net/http, type Response struct, Close bool +pkg net/http, type Response struct, ContentLength int64 +pkg net/http, type Response struct, Header Header +pkg net/http, type Response struct, Proto string +pkg net/http, type Response struct, ProtoMajor int +pkg net/http, type Response struct, ProtoMinor int +pkg net/http, type Response struct, Request *Request +pkg net/http, type Response struct, Status string +pkg net/http, type Response struct, StatusCode int +pkg net/http, type Response struct, Trailer Header +pkg net/http, type Response struct, TransferEncoding []string +pkg net/http, type ResponseWriter interface { Header, Write, WriteHeader } +pkg net/http, type ResponseWriter interface, Header() Header +pkg net/http, type ResponseWriter interface, Write([]byte) (int, error) +pkg net/http, type ResponseWriter interface, WriteHeader(int) +pkg net/http, type RoundTripper interface { RoundTrip } +pkg net/http, type RoundTripper interface, RoundTrip(*Request) (*Response, error) +pkg net/http, type ServeMux struct +pkg net/http, type Server struct +pkg net/http, type Server struct, Addr string +pkg net/http, type Server struct, Handler Handler +pkg net/http, type Server struct, MaxHeaderBytes int +pkg net/http, type Server struct, ReadTimeout time.Duration +pkg net/http, type Server struct, TLSConfig *tls.Config +pkg net/http, type Server struct, WriteTimeout time.Duration +pkg net/http, type Transport struct +pkg net/http, type Transport struct, Dial func(string) (net.Conn, error) +pkg net/http, type Transport struct, DisableCompression bool +pkg net/http, type Transport struct, DisableKeepAlives bool +pkg net/http, type Transport struct, MaxIdleConnsPerHost int +pkg net/http, type Transport struct, Proxy func(*Request) (*url.URL, error) +pkg net/http, type Transport struct, TLSClientConfig *tls.Config +pkg net/http, var DefaultClient *Client +pkg net/http, var DefaultServeMux *ServeMux +pkg net/http, var DefaultTransport RoundTripper +pkg net/http, var ErrBodyNotAllowed error +pkg net/http, var ErrBodyReadAfterClose error +pkg net/http, var ErrContentLength error +pkg net/http, var ErrHandlerTimeout error +pkg net/http, var ErrHeaderTooLong *ProtocolError +pkg net/http, var ErrHijacked error +pkg net/http, var ErrLineTooLong error +pkg net/http, var ErrMissingBoundary *ProtocolError +pkg net/http, var ErrMissingContentLength *ProtocolError +pkg net/http, var ErrMissingFile error +pkg net/http, var ErrNoCookie error +pkg net/http, var ErrNoLocation error +pkg net/http, var ErrNotMultipart *ProtocolError +pkg net/http, var ErrNotSupported *ProtocolError +pkg net/http, var ErrShortBody *ProtocolError +pkg net/http, var ErrUnexpectedTrailer *ProtocolError +pkg net/http, var ErrWriteAfterFlush error +pkg net/http/cgi, func Request() (*http.Request, error) +pkg net/http/cgi, func RequestFromMap(map[string]string) (*http.Request, error) +pkg net/http/cgi, func Serve(http.Handler) error +pkg net/http/cgi, method (*Handler) ServeHTTP(http.ResponseWriter, *http.Request) +pkg net/http/cgi, type Handler struct +pkg net/http/cgi, type Handler struct, Args []string +pkg net/http/cgi, type Handler struct, Dir string +pkg net/http/cgi, type Handler struct, Env []string +pkg net/http/cgi, type Handler struct, InheritEnv []string +pkg net/http/cgi, type Handler struct, Logger *log.Logger +pkg net/http/cgi, type Handler struct, Path string +pkg net/http/cgi, type Handler struct, PathLocationHandler http.Handler +pkg net/http/cgi, type Handler struct, Root string +pkg net/http/fcgi, func Serve(net.Listener, http.Handler) error +pkg net/http/httptest, const DefaultRemoteAddr ideal-string +pkg net/http/httptest, func NewRecorder() *ResponseRecorder +pkg net/http/httptest, func NewServer(http.Handler) *Server +pkg net/http/httptest, func NewTLSServer(http.Handler) *Server +pkg net/http/httptest, func NewUnstartedServer(http.Handler) *Server +pkg net/http/httptest, method (*ResponseRecorder) Flush() +pkg net/http/httptest, method (*ResponseRecorder) Header() http.Header +pkg net/http/httptest, method (*ResponseRecorder) Write([]byte) (int, error) +pkg net/http/httptest, method (*ResponseRecorder) WriteHeader(int) +pkg net/http/httptest, method (*Server) Close() +pkg net/http/httptest, method (*Server) CloseClientConnections() +pkg net/http/httptest, method (*Server) Start() +pkg net/http/httptest, method (*Server) StartTLS() +pkg net/http/httptest, type ResponseRecorder struct +pkg net/http/httptest, type ResponseRecorder struct, Body *bytes.Buffer +pkg net/http/httptest, type ResponseRecorder struct, Code int +pkg net/http/httptest, type ResponseRecorder struct, Flushed bool +pkg net/http/httptest, type ResponseRecorder struct, HeaderMap http.Header +pkg net/http/httptest, type Server struct +pkg net/http/httptest, type Server struct, Config *http.Server +pkg net/http/httptest, type Server struct, Listener net.Listener +pkg net/http/httptest, type Server struct, TLS *tls.Config +pkg net/http/httptest, type Server struct, URL string +pkg net/http/httputil, func DumpRequest(*http.Request, bool) ([]byte, error) +pkg net/http/httputil, func DumpRequestOut(*http.Request, bool) ([]byte, error) +pkg net/http/httputil, func DumpResponse(*http.Response, bool) ([]byte, error) +pkg net/http/httputil, func NewChunkedReader(io.Reader) io.Reader +pkg net/http/httputil, func NewChunkedWriter(io.Writer) io.WriteCloser +pkg net/http/httputil, func NewClientConn(net.Conn, *bufio.Reader) *ClientConn +pkg net/http/httputil, func NewProxyClientConn(net.Conn, *bufio.Reader) *ClientConn +pkg net/http/httputil, func NewServerConn(net.Conn, *bufio.Reader) *ServerConn +pkg net/http/httputil, func NewSingleHostReverseProxy(*url.URL) *ReverseProxy +pkg net/http/httputil, method (*ClientConn) Close() error +pkg net/http/httputil, method (*ClientConn) Do(*http.Request) (*http.Response, error) +pkg net/http/httputil, method (*ClientConn) Hijack() (net.Conn, *bufio.Reader) +pkg net/http/httputil, method (*ClientConn) Pending() int +pkg net/http/httputil, method (*ClientConn) Read(*http.Request) (*http.Response, error) +pkg net/http/httputil, method (*ClientConn) Write(*http.Request) error +pkg net/http/httputil, method (*ReverseProxy) ServeHTTP(http.ResponseWriter, *http.Request) +pkg net/http/httputil, method (*ServerConn) Close() error +pkg net/http/httputil, method (*ServerConn) Hijack() (net.Conn, *bufio.Reader) +pkg net/http/httputil, method (*ServerConn) Pending() int +pkg net/http/httputil, method (*ServerConn) Read() (*http.Request, error) +pkg net/http/httputil, method (*ServerConn) Write(*http.Request, *http.Response) error +pkg net/http/httputil, type ClientConn struct +pkg net/http/httputil, type ReverseProxy struct +pkg net/http/httputil, type ReverseProxy struct, Director func(*http.Request) +pkg net/http/httputil, type ReverseProxy struct, FlushInterval time.Duration +pkg net/http/httputil, type ReverseProxy struct, Transport http.RoundTripper +pkg net/http/httputil, type ServerConn struct +pkg net/http/httputil, var ErrClosed *http.ProtocolError +pkg net/http/httputil, var ErrLineTooLong error +pkg net/http/httputil, var ErrPersistEOF *http.ProtocolError +pkg net/http/httputil, var ErrPipeline *http.ProtocolError +pkg net/http/pprof, func Cmdline(http.ResponseWriter, *http.Request) +pkg net/http/pprof, func Handler(string) http.Handler +pkg net/http/pprof, func Index(http.ResponseWriter, *http.Request) +pkg net/http/pprof, func Profile(http.ResponseWriter, *http.Request) +pkg net/http/pprof, func Symbol(http.ResponseWriter, *http.Request) +pkg net/mail, func ReadMessage(io.Reader) (*Message, error) +pkg net/mail, method (*Address) String() string +pkg net/mail, method (Header) AddressList(string) ([]*Address, error) +pkg net/mail, method (Header) Date() (time.Time, error) +pkg net/mail, method (Header) Get(string) string +pkg net/mail, type Address struct +pkg net/mail, type Address struct, Address string +pkg net/mail, type Address struct, Name string +pkg net/mail, type Header map[string][]string +pkg net/mail, type Message struct +pkg net/mail, type Message struct, Body io.Reader +pkg net/mail, type Message struct, Header Header +pkg net/mail, var ErrHeaderNotPresent error +pkg net/rpc, const DefaultDebugPath ideal-string +pkg net/rpc, const DefaultRPCPath ideal-string +pkg net/rpc, func Accept(net.Listener) +pkg net/rpc, func Dial(string) (*Client, error) +pkg net/rpc, func DialHTTP(string) (*Client, error) +pkg net/rpc, func DialHTTPPath(string) (*Client, error) +pkg net/rpc, func HandleHTTP() +pkg net/rpc, func NewClient(io.ReadWriteCloser) *Client +pkg net/rpc, func NewClientWithCodec(ClientCodec) *Client +pkg net/rpc, func NewServer() *Server +pkg net/rpc, func Register(interface{}) error +pkg net/rpc, func RegisterName(string, interface{}) error +pkg net/rpc, func ServeCodec(ServerCodec) +pkg net/rpc, func ServeConn(io.ReadWriteCloser) +pkg net/rpc, func ServeRequest(ServerCodec) error +pkg net/rpc, method (*Client) Call(string, interface{}, interface{}) error +pkg net/rpc, method (*Client) Close() error +pkg net/rpc, method (*Client) Go(string, interface{}, interface{}, chan *Call) *Call +pkg net/rpc, method (*Server) Accept(net.Listener) +pkg net/rpc, method (*Server) HandleHTTP(string) +pkg net/rpc, method (*Server) Register(interface{}) error +pkg net/rpc, method (*Server) RegisterName(string, interface{}) error +pkg net/rpc, method (*Server) ServeCodec(ServerCodec) +pkg net/rpc, method (*Server) ServeConn(io.ReadWriteCloser) +pkg net/rpc, method (*Server) ServeHTTP(http.ResponseWriter, *http.Request) +pkg net/rpc, method (*Server) ServeRequest(ServerCodec) error +pkg net/rpc, method (ServerError) Error() string +pkg net/rpc, type Call struct +pkg net/rpc, type Call struct, Args interface{} +pkg net/rpc, type Call struct, Done chan *Call +pkg net/rpc, type Call struct, Error error +pkg net/rpc, type Call struct, Reply interface{} +pkg net/rpc, type Call struct, ServiceMethod string +pkg net/rpc, type Client struct +pkg net/rpc, type ClientCodec interface { Close, ReadResponseBody, ReadResponseHeader, WriteRequest } +pkg net/rpc, type ClientCodec interface, Close() error +pkg net/rpc, type ClientCodec interface, ReadResponseBody(interface{}) error +pkg net/rpc, type ClientCodec interface, ReadResponseHeader(*Response) error +pkg net/rpc, type ClientCodec interface, WriteRequest(*Request, interface{}) error +pkg net/rpc, type Request struct +pkg net/rpc, type Request struct, Seq uint64 +pkg net/rpc, type Request struct, ServiceMethod string +pkg net/rpc, type Response struct +pkg net/rpc, type Response struct, Error string +pkg net/rpc, type Response struct, Seq uint64 +pkg net/rpc, type Response struct, ServiceMethod string +pkg net/rpc, type Server struct +pkg net/rpc, type ServerCodec interface { Close, ReadRequestBody, ReadRequestHeader, WriteResponse } +pkg net/rpc, type ServerCodec interface, Close() error +pkg net/rpc, type ServerCodec interface, ReadRequestBody(interface{}) error +pkg net/rpc, type ServerCodec interface, ReadRequestHeader(*Request) error +pkg net/rpc, type ServerCodec interface, WriteResponse(*Response, interface{}) error +pkg net/rpc, type ServerError string +pkg net/rpc, var DefaultServer *Server +pkg net/rpc, var ErrShutdown error +pkg net/rpc/jsonrpc, func Dial(string) (*rpc.Client, error) +pkg net/rpc/jsonrpc, func NewClient(io.ReadWriteCloser) *rpc.Client +pkg net/rpc/jsonrpc, func NewClientCodec(io.ReadWriteCloser) rpc.ClientCodec +pkg net/rpc/jsonrpc, func NewServerCodec(io.ReadWriteCloser) rpc.ServerCodec +pkg net/rpc/jsonrpc, func ServeConn(io.ReadWriteCloser) +pkg net/smtp, func CRAMMD5Auth(string) Auth +pkg net/smtp, func Dial(string) (*Client, error) +pkg net/smtp, func NewClient(net.Conn, string) (*Client, error) +pkg net/smtp, func PlainAuth(string) Auth +pkg net/smtp, func SendMail(string, Auth, string, []string, []byte) error +pkg net/smtp, method (*Client) Auth(Auth) error +pkg net/smtp, method (*Client) Data() (io.WriteCloser, error) +pkg net/smtp, method (*Client) Extension(string) (bool, string) +pkg net/smtp, method (*Client) Mail(string) error +pkg net/smtp, method (*Client) Quit() error +pkg net/smtp, method (*Client) Rcpt(string) error +pkg net/smtp, method (*Client) Reset() error +pkg net/smtp, method (*Client) StartTLS(*tls.Config) error +pkg net/smtp, method (*Client) Verify(string) error +pkg net/smtp, type Auth interface { Next, Start } +pkg net/smtp, type Auth interface, Next([]byte, bool) ([]byte, error) +pkg net/smtp, type Auth interface, Start(*ServerInfo) (string, []byte, error) +pkg net/smtp, type Client struct +pkg net/smtp, type Client struct, Text *textproto.Conn +pkg net/smtp, type ServerInfo struct +pkg net/smtp, type ServerInfo struct, Auth []string +pkg net/smtp, type ServerInfo struct, Name string +pkg net/smtp, type ServerInfo struct, TLS bool +pkg net/textproto, func CanonicalMIMEHeaderKey(string) string +pkg net/textproto, func Dial(string) (*Conn, error) +pkg net/textproto, func NewConn(io.ReadWriteCloser) *Conn +pkg net/textproto, func NewReader(*bufio.Reader) *Reader +pkg net/textproto, func NewWriter(*bufio.Writer) *Writer +pkg net/textproto, method (*Conn) Close() error +pkg net/textproto, method (*Conn) Cmd(string, ...interface{}) (uint, error) +pkg net/textproto, method (*Conn) DotReader() io.Reader +pkg net/textproto, method (*Conn) DotWriter() io.WriteCloser +pkg net/textproto, method (*Conn) EndRequest(uint) +pkg net/textproto, method (*Conn) EndResponse(uint) +pkg net/textproto, method (*Conn) Next() uint +pkg net/textproto, method (*Conn) PrintfLine(string, ...interface{}) error +pkg net/textproto, method (*Conn) ReadCodeLine(int) (int, string, error) +pkg net/textproto, method (*Conn) ReadContinuedLine() (string, error) +pkg net/textproto, method (*Conn) ReadContinuedLineBytes() ([]byte, error) +pkg net/textproto, method (*Conn) ReadDotBytes() ([]byte, error) +pkg net/textproto, method (*Conn) ReadDotLines() ([]string, error) +pkg net/textproto, method (*Conn) ReadLine() (string, error) +pkg net/textproto, method (*Conn) ReadLineBytes() ([]byte, error) +pkg net/textproto, method (*Conn) ReadMIMEHeader() (MIMEHeader, error) +pkg net/textproto, method (*Conn) ReadResponse(int) (int, string, error) +pkg net/textproto, method (*Conn) StartRequest(uint) +pkg net/textproto, method (*Conn) StartResponse(uint) +pkg net/textproto, method (*Error) Error() string +pkg net/textproto, method (*Pipeline) EndRequest(uint) +pkg net/textproto, method (*Pipeline) EndResponse(uint) +pkg net/textproto, method (*Pipeline) Next() uint +pkg net/textproto, method (*Pipeline) StartRequest(uint) +pkg net/textproto, method (*Pipeline) StartResponse(uint) +pkg net/textproto, method (*Reader) DotReader() io.Reader +pkg net/textproto, method (*Reader) ReadCodeLine(int) (int, string, error) +pkg net/textproto, method (*Reader) ReadContinuedLine() (string, error) +pkg net/textproto, method (*Reader) ReadContinuedLineBytes() ([]byte, error) +pkg net/textproto, method (*Reader) ReadDotBytes() ([]byte, error) +pkg net/textproto, method (*Reader) ReadDotLines() ([]string, error) +pkg net/textproto, method (*Reader) ReadLine() (string, error) +pkg net/textproto, method (*Reader) ReadLineBytes() ([]byte, error) +pkg net/textproto, method (*Reader) ReadMIMEHeader() (MIMEHeader, error) +pkg net/textproto, method (*Reader) ReadResponse(int) (int, string, error) +pkg net/textproto, method (*Writer) DotWriter() io.WriteCloser +pkg net/textproto, method (*Writer) PrintfLine(string, ...interface{}) error +pkg net/textproto, method (MIMEHeader) Add(string) +pkg net/textproto, method (MIMEHeader) Del(string) +pkg net/textproto, method (MIMEHeader) Get(string) string +pkg net/textproto, method (MIMEHeader) Set(string) +pkg net/textproto, method (ProtocolError) Error() string +pkg net/textproto, type Conn struct +pkg net/textproto, type Conn struct, embedded Pipeline +pkg net/textproto, type Conn struct, embedded Reader +pkg net/textproto, type Conn struct, embedded Writer +pkg net/textproto, type Error struct +pkg net/textproto, type Error struct, Code int +pkg net/textproto, type Error struct, Msg string +pkg net/textproto, type MIMEHeader map[string][]string +pkg net/textproto, type Pipeline struct +pkg net/textproto, type ProtocolError string +pkg net/textproto, type Reader struct +pkg net/textproto, type Reader struct, R *bufio.Reader +pkg net/textproto, type Writer struct +pkg net/textproto, type Writer struct, W *bufio.Writer +pkg net/url, func Parse(string) (*URL, error) +pkg net/url, func ParseQuery(string) (Values, error) +pkg net/url, func ParseRequestURI(string) (*URL, error) +pkg net/url, func QueryEscape(string) string +pkg net/url, func QueryUnescape(string) (string, error) +pkg net/url, func User(string) *Userinfo +pkg net/url, func UserPassword(string) *Userinfo +pkg net/url, method (*Error) Error() string +pkg net/url, method (*URL) IsAbs() bool +pkg net/url, method (*URL) Parse(string) (*URL, error) +pkg net/url, method (*URL) Query() Values +pkg net/url, method (*URL) RequestURI() string +pkg net/url, method (*URL) ResolveReference(*URL) *URL +pkg net/url, method (*URL) String() string +pkg net/url, method (*Userinfo) Password() (string, bool) +pkg net/url, method (*Userinfo) String() string +pkg net/url, method (*Userinfo) Username() string +pkg net/url, method (EscapeError) Error() string +pkg net/url, method (Values) Add(string) +pkg net/url, method (Values) Del(string) +pkg net/url, method (Values) Encode() string +pkg net/url, method (Values) Get(string) string +pkg net/url, method (Values) Set(string) +pkg net/url, type Error struct +pkg net/url, type Error struct, Err error +pkg net/url, type Error struct, Op string +pkg net/url, type Error struct, URL string +pkg net/url, type EscapeError string +pkg net/url, type URL struct +pkg net/url, type URL struct, Fragment string +pkg net/url, type URL struct, Host string +pkg net/url, type URL struct, Opaque string +pkg net/url, type URL struct, Path string +pkg net/url, type URL struct, RawQuery string +pkg net/url, type URL struct, Scheme string +pkg net/url, type URL struct, User *Userinfo +pkg net/url, type Userinfo struct +pkg net/url, type Values map[string][]string +pkg os, const DevNull ideal-string +pkg os, const ModeAppend FileMode +pkg os, const ModeCharDevice FileMode +pkg os, const ModeDevice FileMode +pkg os, const ModeDir FileMode +pkg os, const ModeExclusive FileMode +pkg os, const ModeNamedPipe FileMode +pkg os, const ModePerm FileMode +pkg os, const ModeSetgid FileMode +pkg os, const ModeSetuid FileMode +pkg os, const ModeSocket FileMode +pkg os, const ModeSticky FileMode +pkg os, const ModeSymlink FileMode +pkg os, const ModeTemporary FileMode +pkg os, const ModeType FileMode +pkg os, const O_APPEND int +pkg os, const O_CREATE int +pkg os, const O_EXCL int +pkg os, const O_RDONLY int +pkg os, const O_RDWR int +pkg os, const O_SYNC int +pkg os, const O_TRUNC int +pkg os, const O_WRONLY int +pkg os, const PathListSeparator ideal-char +pkg os, const PathSeparator ideal-char +pkg os, const SEEK_CUR int +pkg os, const SEEK_END int +pkg os, const SEEK_SET int +pkg os, func Chdir(string) error +pkg os, func Chmod(string, FileMode) error +pkg os, func Chown(string, int) error +pkg os, func Chtimes(string, time.Time, time.Time) error +pkg os, func Clearenv() +pkg os, func Create(string) (*File, error) +pkg os, func Environ() []string +pkg os, func Exit(int) +pkg os, func Expand(string, func(string) string) string +pkg os, func ExpandEnv(string) string +pkg os, func FindProcess(int) (*Process, error) +pkg os, func Getegid() int +pkg os, func Getenv(string) string +pkg os, func Geteuid() int +pkg os, func Getgid() int +pkg os, func Getgroups() ([]int, error) +pkg os, func Getpagesize() int +pkg os, func Getpid() int +pkg os, func Getppid() int +pkg os, func Getuid() int +pkg os, func Getwd() (string, error) +pkg os, func Hostname() (string, error) +pkg os, func IsExist(error) bool +pkg os, func IsNotExist(error) bool +pkg os, func IsPathSeparator(uint8) bool +pkg os, func IsPermission(error) bool +pkg os, func Lchown(string, int) error +pkg os, func Link(string) error +pkg os, func Lstat(string) (FileInfo, error) +pkg os, func Mkdir(string, FileMode) error +pkg os, func MkdirAll(string, FileMode) error +pkg os, func NewFile(uintptr, string) *File +pkg os, func NewSyscallError(string, error) error +pkg os, func Open(string) (*File, error) +pkg os, func OpenFile(string, int, FileMode) (*File, error) +pkg os, func Pipe() (*File, *File, error) +pkg os, func Readlink(string) (string, error) +pkg os, func Remove(string) error +pkg os, func RemoveAll(string) error +pkg os, func Rename(string) error +pkg os, func SameFile(FileInfo) bool +pkg os, func Setenv(string) error +pkg os, func StartProcess(string, []string, *ProcAttr) (*Process, error) +pkg os, func Stat(string) (FileInfo, error) +pkg os, func Symlink(string) error +pkg os, func TempDir() string +pkg os, func Truncate(string, int64) error +pkg os, method (*File) Chdir() error +pkg os, method (*File) Chmod(FileMode) error +pkg os, method (*File) Chown(int) error +pkg os, method (*File) Close() error +pkg os, method (*File) Fd() uintptr +pkg os, method (*File) Name() string +pkg os, method (*File) Read([]byte) (int, error) +pkg os, method (*File) ReadAt([]byte, int64) (int, error) +pkg os, method (*File) Readdir(int) ([]FileInfo, error) +pkg os, method (*File) Readdirnames(int) ([]string, error) +pkg os, method (*File) Seek(int64, int) (int64, error) +pkg os, method (*File) Stat() (FileInfo, error) +pkg os, method (*File) Sync() error +pkg os, method (*File) Truncate(int64) error +pkg os, method (*File) Write([]byte) (int, error) +pkg os, method (*File) WriteAt([]byte, int64) (int, error) +pkg os, method (*File) WriteString(string) (int, error) +pkg os, method (*LinkError) Error() string +pkg os, method (*PathError) Error() string +pkg os, method (*Process) Kill() error +pkg os, method (*Process) Release() error +pkg os, method (*Process) Signal(Signal) error +pkg os, method (*Process) Wait() (*ProcessState, error) +pkg os, method (*ProcessState) Exited() bool +pkg os, method (*ProcessState) Pid() int +pkg os, method (*ProcessState) String() string +pkg os, method (*ProcessState) Success() bool +pkg os, method (*ProcessState) Sys() interface{} +pkg os, method (*ProcessState) SysUsage() interface{} +pkg os, method (*ProcessState) SystemTime() time.Duration +pkg os, method (*ProcessState) UserTime() time.Duration +pkg os, method (*SyscallError) Error() string +pkg os, method (FileMode) IsDir() bool +pkg os, method (FileMode) Perm() FileMode +pkg os, method (FileMode) String() string +pkg os, type File struct +pkg os, type FileInfo interface { IsDir, ModTime, Mode, Name, Size, Sys } +pkg os, type FileInfo interface, IsDir() bool +pkg os, type FileInfo interface, ModTime() time.Time +pkg os, type FileInfo interface, Mode() FileMode +pkg os, type FileInfo interface, Name() string +pkg os, type FileInfo interface, Size() int64 +pkg os, type FileInfo interface, Sys() interface{} +pkg os, type FileMode uint32 +pkg os, type LinkError struct +pkg os, type LinkError struct, Err error +pkg os, type LinkError struct, New string +pkg os, type LinkError struct, Old string +pkg os, type LinkError struct, Op string +pkg os, type PathError struct +pkg os, type PathError struct, Err error +pkg os, type PathError struct, Op string +pkg os, type PathError struct, Path string +pkg os, type ProcAttr struct +pkg os, type ProcAttr struct, Dir string +pkg os, type ProcAttr struct, Env []string +pkg os, type ProcAttr struct, Files []*File +pkg os, type ProcAttr struct, Sys *syscall.SysProcAttr +pkg os, type Process struct +pkg os, type Process struct, Pid int +pkg os, type ProcessState struct +pkg os, type Signal interface { Signal, String } +pkg os, type Signal interface, Signal() +pkg os, type Signal interface, String() string +pkg os, type SyscallError struct +pkg os, type SyscallError struct, Err error +pkg os, type SyscallError struct, Syscall string +pkg os, var Args []string +pkg os, var ErrExist error +pkg os, var ErrInvalid error +pkg os, var ErrNotExist error +pkg os, var ErrPermission error +pkg os, var Interrupt Signal +pkg os, var Kill Signal +pkg os, var Stderr *File +pkg os, var Stdin *File +pkg os, var Stdout *File +pkg os/exec, func Command(string, ...string) *Cmd +pkg os/exec, func LookPath(string) (string, error) +pkg os/exec, method (*Cmd) CombinedOutput() ([]byte, error) +pkg os/exec, method (*Cmd) Output() ([]byte, error) +pkg os/exec, method (*Cmd) Run() error +pkg os/exec, method (*Cmd) Start() error +pkg os/exec, method (*Cmd) StderrPipe() (io.ReadCloser, error) +pkg os/exec, method (*Cmd) StdinPipe() (io.WriteCloser, error) +pkg os/exec, method (*Cmd) StdoutPipe() (io.ReadCloser, error) +pkg os/exec, method (*Cmd) Wait() error +pkg os/exec, method (*Error) Error() string +pkg os/exec, method (*ExitError) Error() string +pkg os/exec, type Cmd struct +pkg os/exec, type Cmd struct, Args []string +pkg os/exec, type Cmd struct, Dir string +pkg os/exec, type Cmd struct, Env []string +pkg os/exec, type Cmd struct, ExtraFiles []*os.File +pkg os/exec, type Cmd struct, Path string +pkg os/exec, type Cmd struct, Process *os.Process +pkg os/exec, type Cmd struct, ProcessState *os.ProcessState +pkg os/exec, type Cmd struct, Stderr io.Writer +pkg os/exec, type Cmd struct, Stdin io.Reader +pkg os/exec, type Cmd struct, Stdout io.Writer +pkg os/exec, type Cmd struct, SysProcAttr *syscall.SysProcAttr +pkg os/exec, type Error struct +pkg os/exec, type Error struct, Err error +pkg os/exec, type Error struct, Name string +pkg os/exec, type ExitError struct +pkg os/exec, type ExitError struct, embedded *os.ProcessState +pkg os/exec, var ErrNotFound error +pkg os/signal, func Notify(chan<- os.Signal, ...os.Signal) +pkg os/user, func Current() (*User, error) +pkg os/user, func Lookup(string) (*User, error) +pkg os/user, func LookupId(string) (*User, error) +pkg os/user, method (UnknownUserError) Error() string +pkg os/user, method (UnknownUserIdError) Error() string +pkg os/user, type UnknownUserError string +pkg os/user, type UnknownUserIdError int +pkg os/user, type User struct +pkg os/user, type User struct, Gid string +pkg os/user, type User struct, HomeDir string +pkg os/user, type User struct, Name string +pkg os/user, type User struct, Uid string +pkg os/user, type User struct, Username string +pkg path, func Base(string) string +pkg path, func Clean(string) string +pkg path, func Dir(string) string +pkg path, func Ext(string) string +pkg path, func IsAbs(string) bool +pkg path, func Join(...string) string +pkg path, func Match(string) (bool, error) +pkg path, func Split(string) string +pkg path, var ErrBadPattern error +pkg path/filepath, const ListSeparator ideal-char +pkg path/filepath, const Separator ideal-char +pkg path/filepath, func Abs(string) (string, error) +pkg path/filepath, func Base(string) string +pkg path/filepath, func Clean(string) string +pkg path/filepath, func Dir(string) string +pkg path/filepath, func EvalSymlinks(string) (string, error) +pkg path/filepath, func Ext(string) string +pkg path/filepath, func FromSlash(string) string +pkg path/filepath, func Glob(string) ([]string, error) +pkg path/filepath, func HasPrefix(string) bool +pkg path/filepath, func IsAbs(string) bool +pkg path/filepath, func Join(...string) string +pkg path/filepath, func Match(string) (bool, error) +pkg path/filepath, func Rel(string) (string, error) +pkg path/filepath, func Split(string) string +pkg path/filepath, func SplitList(string) []string +pkg path/filepath, func ToSlash(string) string +pkg path/filepath, func VolumeName(string) string +pkg path/filepath, func Walk(string, WalkFunc) error +pkg path/filepath, type WalkFunc func(path string, info os.FileInfo, err error) error +pkg path/filepath, var ErrBadPattern error +pkg path/filepath, var SkipDir error +pkg reflect, const Array Kind +pkg reflect, const Bool Kind +pkg reflect, const BothDir ChanDir +pkg reflect, const Chan Kind +pkg reflect, const Complex128 Kind +pkg reflect, const Complex64 Kind +pkg reflect, const Float32 Kind +pkg reflect, const Float64 Kind +pkg reflect, const Func Kind +pkg reflect, const Int Kind +pkg reflect, const Int16 Kind +pkg reflect, const Int32 Kind +pkg reflect, const Int64 Kind +pkg reflect, const Int8 Kind +pkg reflect, const Interface Kind +pkg reflect, const Invalid Kind +pkg reflect, const Map Kind +pkg reflect, const Ptr Kind +pkg reflect, const RecvDir ChanDir +pkg reflect, const SendDir ChanDir +pkg reflect, const Slice Kind +pkg reflect, const String Kind +pkg reflect, const Struct Kind +pkg reflect, const Uint Kind +pkg reflect, const Uint16 Kind +pkg reflect, const Uint32 Kind +pkg reflect, const Uint64 Kind +pkg reflect, const Uint8 Kind +pkg reflect, const Uintptr Kind +pkg reflect, const UnsafePointer Kind +pkg reflect, func Append(Value, ...Value) Value +pkg reflect, func AppendSlice(Value) Value +pkg reflect, func Copy(Value) int +pkg reflect, func DeepEqual(interface{}) bool +pkg reflect, func Indirect(Value) Value +pkg reflect, func MakeChan(Type, int) Value +pkg reflect, func MakeMap(Type) Value +pkg reflect, func MakeSlice(Type, int) Value +pkg reflect, func New(Type) Value +pkg reflect, func NewAt(Type, unsafe.Pointer) Value +pkg reflect, func PtrTo(Type) Type +pkg reflect, func TypeOf(interface{}) Type +pkg reflect, func ValueOf(interface{}) Value +pkg reflect, func Zero(Type) Value +pkg reflect, method (*ValueError) Error() string +pkg reflect, method (ChanDir) String() string +pkg reflect, method (Kind) String() string +pkg reflect, method (StructTag) Get(string) string +pkg reflect, method (Value) Addr() Value +pkg reflect, method (Value) Bool() bool +pkg reflect, method (Value) Bytes() []byte +pkg reflect, method (Value) Call([]Value) []Value +pkg reflect, method (Value) CallSlice([]Value) []Value +pkg reflect, method (Value) CanAddr() bool +pkg reflect, method (Value) CanInterface() bool +pkg reflect, method (Value) CanSet() bool +pkg reflect, method (Value) Cap() int +pkg reflect, method (Value) Close() +pkg reflect, method (Value) Complex() complex128 +pkg reflect, method (Value) Elem() Value +pkg reflect, method (Value) Field(int) Value +pkg reflect, method (Value) FieldByIndex([]int) Value +pkg reflect, method (Value) FieldByName(string) Value +pkg reflect, method (Value) FieldByNameFunc(func(string) bool) Value +pkg reflect, method (Value) Float() float64 +pkg reflect, method (Value) Index(int) Value +pkg reflect, method (Value) Int() int64 +pkg reflect, method (Value) Interface() interface{} +pkg reflect, method (Value) InterfaceData() [2]uintptr +pkg reflect, method (Value) IsNil() bool +pkg reflect, method (Value) IsValid() bool +pkg reflect, method (Value) Kind() Kind +pkg reflect, method (Value) Len() int +pkg reflect, method (Value) MapIndex(Value) Value +pkg reflect, method (Value) MapKeys() []Value +pkg reflect, method (Value) Method(int) Value +pkg reflect, method (Value) MethodByName(string) Value +pkg reflect, method (Value) NumField() int +pkg reflect, method (Value) NumMethod() int +pkg reflect, method (Value) OverflowComplex(complex128) bool +pkg reflect, method (Value) OverflowFloat(float64) bool +pkg reflect, method (Value) OverflowInt(int64) bool +pkg reflect, method (Value) OverflowUint(uint64) bool +pkg reflect, method (Value) Pointer() uintptr +pkg reflect, method (Value) Recv() (Value, bool) +pkg reflect, method (Value) Send(Value) +pkg reflect, method (Value) Set(Value) +pkg reflect, method (Value) SetBool(bool) +pkg reflect, method (Value) SetBytes([]byte) +pkg reflect, method (Value) SetComplex(complex128) +pkg reflect, method (Value) SetFloat(float64) +pkg reflect, method (Value) SetInt(int64) +pkg reflect, method (Value) SetLen(int) +pkg reflect, method (Value) SetMapIndex(Value) +pkg reflect, method (Value) SetPointer(unsafe.Pointer) +pkg reflect, method (Value) SetString(string) +pkg reflect, method (Value) SetUint(uint64) +pkg reflect, method (Value) Slice(int) Value +pkg reflect, method (Value) String() string +pkg reflect, method (Value) TryRecv() (Value, bool) +pkg reflect, method (Value) TrySend(Value) bool +pkg reflect, method (Value) Type() Type +pkg reflect, method (Value) Uint() uint64 +pkg reflect, method (Value) UnsafeAddr() uintptr +pkg reflect, type ChanDir int +pkg reflect, type Kind uint +pkg reflect, type Method struct +pkg reflect, type Method struct, Func Value +pkg reflect, type Method struct, Index int +pkg reflect, type Method struct, Name string +pkg reflect, type Method struct, PkgPath string +pkg reflect, type Method struct, Type Type +pkg reflect, type SliceHeader struct +pkg reflect, type SliceHeader struct, Cap int +pkg reflect, type SliceHeader struct, Data uintptr +pkg reflect, type SliceHeader struct, Len int +pkg reflect, type StringHeader struct +pkg reflect, type StringHeader struct, Data uintptr +pkg reflect, type StringHeader struct, Len int +pkg reflect, type StructField struct +pkg reflect, type StructField struct, Anonymous bool +pkg reflect, type StructField struct, Index []int +pkg reflect, type StructField struct, Name string +pkg reflect, type StructField struct, Offset uintptr +pkg reflect, type StructField struct, PkgPath string +pkg reflect, type StructField struct, Tag StructTag +pkg reflect, type StructField struct, Type Type +pkg reflect, type StructTag string +pkg reflect, type Type interface { Align, AssignableTo, Bits, ChanDir, Elem, Field, FieldAlign, FieldByIndex, FieldByName, FieldByNameFunc, Implements, In, IsVariadic, Key, Kind, Len, Method, MethodByName, Name, NumField, NumIn, NumMethod, NumOut, Out, PkgPath, Size, String } +pkg reflect, type Type interface, Align() int +pkg reflect, type Type interface, AssignableTo(Type) bool +pkg reflect, type Type interface, Bits() int +pkg reflect, type Type interface, ChanDir() ChanDir +pkg reflect, type Type interface, Elem() Type +pkg reflect, type Type interface, Field(int) StructField +pkg reflect, type Type interface, FieldAlign() int +pkg reflect, type Type interface, FieldByIndex([]int) StructField +pkg reflect, type Type interface, FieldByName(string) (StructField, bool) +pkg reflect, type Type interface, FieldByNameFunc(func(string) bool) (StructField, bool) +pkg reflect, type Type interface, Implements(Type) bool +pkg reflect, type Type interface, In(int) Type +pkg reflect, type Type interface, IsVariadic() bool +pkg reflect, type Type interface, Key() Type +pkg reflect, type Type interface, Kind() Kind +pkg reflect, type Type interface, Len() int +pkg reflect, type Type interface, Method(int) Method +pkg reflect, type Type interface, MethodByName(string) (Method, bool) +pkg reflect, type Type interface, Name() string +pkg reflect, type Type interface, NumField() int +pkg reflect, type Type interface, NumIn() int +pkg reflect, type Type interface, NumMethod() int +pkg reflect, type Type interface, NumOut() int +pkg reflect, type Type interface, Out(int) Type +pkg reflect, type Type interface, PkgPath() string +pkg reflect, type Type interface, Size() uintptr +pkg reflect, type Type interface, String() string +pkg reflect, type Value struct +pkg reflect, type ValueError struct +pkg reflect, type ValueError struct, Kind Kind +pkg reflect, type ValueError struct, Method string +pkg regexp, func Compile(string) (*Regexp, error) +pkg regexp, func CompilePOSIX(string) (*Regexp, error) +pkg regexp, func Match(string, []byte) (bool, error) +pkg regexp, func MatchReader(string, io.RuneReader) (bool, error) +pkg regexp, func MatchString(string, string) (bool, error) +pkg regexp, func MustCompile(string) *Regexp +pkg regexp, func MustCompilePOSIX(string) *Regexp +pkg regexp, func QuoteMeta(string) string +pkg regexp, method (*Regexp) Expand([]byte, []byte, []byte, []int) []byte +pkg regexp, method (*Regexp) ExpandString([]byte, string, string, []int) []byte +pkg regexp, method (*Regexp) Find([]byte) []byte +pkg regexp, method (*Regexp) FindAll([]byte, int) [][]byte +pkg regexp, method (*Regexp) FindAllIndex([]byte, int) [][]int +pkg regexp, method (*Regexp) FindAllString(string, int) []string +pkg regexp, method (*Regexp) FindAllStringIndex(string, int) [][]int +pkg regexp, method (*Regexp) FindAllStringSubmatch(string, int) [][]string +pkg regexp, method (*Regexp) FindAllStringSubmatchIndex(string, int) [][]int +pkg regexp, method (*Regexp) FindAllSubmatch([]byte, int) [][][]byte +pkg regexp, method (*Regexp) FindAllSubmatchIndex([]byte, int) [][]int +pkg regexp, method (*Regexp) FindIndex([]byte) []int +pkg regexp, method (*Regexp) FindReaderIndex(io.RuneReader) []int +pkg regexp, method (*Regexp) FindReaderSubmatchIndex(io.RuneReader) []int +pkg regexp, method (*Regexp) FindString(string) string +pkg regexp, method (*Regexp) FindStringIndex(string) []int +pkg regexp, method (*Regexp) FindStringSubmatch(string) []string +pkg regexp, method (*Regexp) FindStringSubmatchIndex(string) []int +pkg regexp, method (*Regexp) FindSubmatch([]byte) [][]byte +pkg regexp, method (*Regexp) FindSubmatchIndex([]byte) []int +pkg regexp, method (*Regexp) LiteralPrefix() (string, bool) +pkg regexp, method (*Regexp) Match([]byte) bool +pkg regexp, method (*Regexp) MatchReader(io.RuneReader) bool +pkg regexp, method (*Regexp) MatchString(string) bool +pkg regexp, method (*Regexp) NumSubexp() int +pkg regexp, method (*Regexp) ReplaceAll([]byte) []byte +pkg regexp, method (*Regexp) ReplaceAllFunc([]byte, func([]byte) []byte) []byte +pkg regexp, method (*Regexp) ReplaceAllLiteral([]byte) []byte +pkg regexp, method (*Regexp) ReplaceAllLiteralString(string) string +pkg regexp, method (*Regexp) ReplaceAllString(string) string +pkg regexp, method (*Regexp) ReplaceAllStringFunc(string, func(string) string) string +pkg regexp, method (*Regexp) String() string +pkg regexp, method (*Regexp) SubexpNames() []string +pkg regexp, type Regexp struct +pkg regexp/syntax, const ClassNL Flags +pkg regexp/syntax, const DotNL Flags +pkg regexp/syntax, const EmptyBeginLine EmptyOp +pkg regexp/syntax, const EmptyBeginText EmptyOp +pkg regexp/syntax, const EmptyEndLine EmptyOp +pkg regexp/syntax, const EmptyEndText EmptyOp +pkg regexp/syntax, const EmptyNoWordBoundary EmptyOp +pkg regexp/syntax, const EmptyWordBoundary EmptyOp +pkg regexp/syntax, const ErrInternalError ErrorCode +pkg regexp/syntax, const ErrInvalidCharClass ErrorCode +pkg regexp/syntax, const ErrInvalidCharRange ErrorCode +pkg regexp/syntax, const ErrInvalidEscape ErrorCode +pkg regexp/syntax, const ErrInvalidNamedCapture ErrorCode +pkg regexp/syntax, const ErrInvalidPerlOp ErrorCode +pkg regexp/syntax, const ErrInvalidRepeatOp ErrorCode +pkg regexp/syntax, const ErrInvalidRepeatSize ErrorCode +pkg regexp/syntax, const ErrInvalidUTF8 ErrorCode +pkg regexp/syntax, const ErrMissingBracket ErrorCode +pkg regexp/syntax, const ErrMissingParen ErrorCode +pkg regexp/syntax, const ErrMissingRepeatArgument ErrorCode +pkg regexp/syntax, const ErrTrailingBackslash ErrorCode +pkg regexp/syntax, const FoldCase Flags +pkg regexp/syntax, const InstAlt InstOp +pkg regexp/syntax, const InstAltMatch InstOp +pkg regexp/syntax, const InstCapture InstOp +pkg regexp/syntax, const InstEmptyWidth InstOp +pkg regexp/syntax, const InstFail InstOp +pkg regexp/syntax, const InstMatch InstOp +pkg regexp/syntax, const InstNop InstOp +pkg regexp/syntax, const InstRune InstOp +pkg regexp/syntax, const InstRune1 InstOp +pkg regexp/syntax, const InstRuneAny InstOp +pkg regexp/syntax, const InstRuneAnyNotNL InstOp +pkg regexp/syntax, const Literal Flags +pkg regexp/syntax, const MatchNL Flags +pkg regexp/syntax, const NonGreedy Flags +pkg regexp/syntax, const OneLine Flags +pkg regexp/syntax, const OpAlternate Op +pkg regexp/syntax, const OpAnyChar Op +pkg regexp/syntax, const OpAnyCharNotNL Op +pkg regexp/syntax, const OpBeginLine Op +pkg regexp/syntax, const OpBeginText Op +pkg regexp/syntax, const OpCapture Op +pkg regexp/syntax, const OpCharClass Op +pkg regexp/syntax, const OpConcat Op +pkg regexp/syntax, const OpEmptyMatch Op +pkg regexp/syntax, const OpEndLine Op +pkg regexp/syntax, const OpEndText Op +pkg regexp/syntax, const OpLiteral Op +pkg regexp/syntax, const OpNoMatch Op +pkg regexp/syntax, const OpNoWordBoundary Op +pkg regexp/syntax, const OpPlus Op +pkg regexp/syntax, const OpQuest Op +pkg regexp/syntax, const OpRepeat Op +pkg regexp/syntax, const OpStar Op +pkg regexp/syntax, const OpWordBoundary Op +pkg regexp/syntax, const POSIX Flags +pkg regexp/syntax, const Perl Flags +pkg regexp/syntax, const PerlX Flags +pkg regexp/syntax, const Simple Flags +pkg regexp/syntax, const UnicodeGroups Flags +pkg regexp/syntax, const WasDollar Flags +pkg regexp/syntax, func Compile(*Regexp) (*Prog, error) +pkg regexp/syntax, func EmptyOpContext(rune) EmptyOp +pkg regexp/syntax, func IsWordChar(rune) bool +pkg regexp/syntax, func Parse(string, Flags) (*Regexp, error) +pkg regexp/syntax, method (*Error) Error() string +pkg regexp/syntax, method (*Inst) MatchEmptyWidth(rune, rune) bool +pkg regexp/syntax, method (*Inst) MatchRune(rune) bool +pkg regexp/syntax, method (*Inst) String() string +pkg regexp/syntax, method (*Prog) Prefix() (string, bool) +pkg regexp/syntax, method (*Prog) StartCond() EmptyOp +pkg regexp/syntax, method (*Prog) String() string +pkg regexp/syntax, method (*Regexp) CapNames() []string +pkg regexp/syntax, method (*Regexp) Equal(*Regexp) bool +pkg regexp/syntax, method (*Regexp) MaxCap() int +pkg regexp/syntax, method (*Regexp) Simplify() *Regexp +pkg regexp/syntax, method (*Regexp) String() string +pkg regexp/syntax, method (ErrorCode) String() string +pkg regexp/syntax, type EmptyOp uint8 +pkg regexp/syntax, type Error struct +pkg regexp/syntax, type Error struct, Code ErrorCode +pkg regexp/syntax, type Error struct, Expr string +pkg regexp/syntax, type ErrorCode string +pkg regexp/syntax, type Flags uint16 +pkg regexp/syntax, type Inst struct +pkg regexp/syntax, type Inst struct, Arg uint32 +pkg regexp/syntax, type Inst struct, Op InstOp +pkg regexp/syntax, type Inst struct, Out uint32 +pkg regexp/syntax, type Inst struct, Rune []rune +pkg regexp/syntax, type InstOp uint8 +pkg regexp/syntax, type Op uint8 +pkg regexp/syntax, type Prog struct +pkg regexp/syntax, type Prog struct, Inst []Inst +pkg regexp/syntax, type Prog struct, NumCap int +pkg regexp/syntax, type Prog struct, Start int +pkg regexp/syntax, type Regexp struct +pkg regexp/syntax, type Regexp struct, Cap int +pkg regexp/syntax, type Regexp struct, Flags Flags +pkg regexp/syntax, type Regexp struct, Max int +pkg regexp/syntax, type Regexp struct, Min int +pkg regexp/syntax, type Regexp struct, Name string +pkg regexp/syntax, type Regexp struct, Op Op +pkg regexp/syntax, type Regexp struct, Rune []rune +pkg regexp/syntax, type Regexp struct, Rune0 [2]rune +pkg regexp/syntax, type Regexp struct, Sub []*Regexp +pkg regexp/syntax, type Regexp struct, Sub0 [1]*Regexp +pkg runtime, const Compiler ideal-string +pkg runtime, const GOARCH string +pkg runtime, const GOOS string +pkg runtime, func Breakpoint() +pkg runtime, func CPUProfile() []byte +pkg runtime, func Caller(int) (uintptr, string, int, bool) +pkg runtime, func Callers(int, []uintptr) int +pkg runtime, func FuncForPC(uintptr) *Func +pkg runtime, func GC() +pkg runtime, func GOMAXPROCS(int) int +pkg runtime, func GOROOT() string +pkg runtime, func Goexit() +pkg runtime, func GoroutineProfile([]StackRecord) (int, bool) +pkg runtime, func Gosched() +pkg runtime, func LockOSThread() +pkg runtime, func MemProfile([]MemProfileRecord, bool) (int, bool) +pkg runtime, func NumCPU() int +pkg runtime, func NumCgoCall() int64 +pkg runtime, func NumGoroutine() int +pkg runtime, func ReadMemStats(*MemStats) +pkg runtime, func SetCPUProfileRate(int) +pkg runtime, func SetFinalizer(interface{}) +pkg runtime, func Stack([]byte, bool) int +pkg runtime, func ThreadCreateProfile([]StackRecord) (int, bool) +pkg runtime, func UnlockOSThread() +pkg runtime, func Version() string +pkg runtime, method (*Func) Entry() uintptr +pkg runtime, method (*Func) FileLine(uintptr) (string, int) +pkg runtime, method (*Func) Name() string +pkg runtime, method (*MemProfileRecord) InUseBytes() int64 +pkg runtime, method (*MemProfileRecord) InUseObjects() int64 +pkg runtime, method (*MemProfileRecord) Stack() []uintptr +pkg runtime, method (*StackRecord) Stack() []uintptr +pkg runtime, method (*TypeAssertionError) Error() string +pkg runtime, method (*TypeAssertionError) RuntimeError() +pkg runtime, type Error interface { Error, RuntimeError } +pkg runtime, type Error interface, Error() string +pkg runtime, type Error interface, RuntimeError() +pkg runtime, type Func struct +pkg runtime, type MemProfileRecord struct +pkg runtime, type MemProfileRecord struct, AllocBytes int64 +pkg runtime, type MemProfileRecord struct, AllocObjects int64 +pkg runtime, type MemProfileRecord struct, FreeBytes int64 +pkg runtime, type MemProfileRecord struct, FreeObjects int64 +pkg runtime, type MemProfileRecord struct, Stack0 [32]uintptr +pkg runtime, type MemStats struct +pkg runtime, type MemStats struct, Alloc uint64 +pkg runtime, type MemStats struct, BuckHashSys uint64 +pkg runtime, type MemStats struct, DebugGC bool +pkg runtime, type MemStats struct, EnableGC bool +pkg runtime, type MemStats struct, Frees uint64 +pkg runtime, type MemStats struct, HeapAlloc uint64 +pkg runtime, type MemStats struct, HeapIdle uint64 +pkg runtime, type MemStats struct, HeapInuse uint64 +pkg runtime, type MemStats struct, HeapObjects uint64 +pkg runtime, type MemStats struct, HeapReleased uint64 +pkg runtime, type MemStats struct, HeapSys uint64 +pkg runtime, type MemStats struct, LastGC uint64 +pkg runtime, type MemStats struct, Lookups uint64 +pkg runtime, type MemStats struct, MCacheInuse uint64 +pkg runtime, type MemStats struct, MCacheSys uint64 +pkg runtime, type MemStats struct, MSpanInuse uint64 +pkg runtime, type MemStats struct, MSpanSys uint64 +pkg runtime, type MemStats struct, Mallocs uint64 +pkg runtime, type MemStats struct, NextGC uint64 +pkg runtime, type MemStats struct, NumGC uint32 +pkg runtime, type MemStats struct, PauseNs [256]uint64 +pkg runtime, type MemStats struct, PauseTotalNs uint64 +pkg runtime, type MemStats struct, StackInuse uint64 +pkg runtime, type MemStats struct, StackSys uint64 +pkg runtime, type MemStats struct, Sys uint64 +pkg runtime, type MemStats struct, TotalAlloc uint64 +pkg runtime, type StackRecord struct +pkg runtime, type StackRecord struct, Stack0 [32]uintptr +pkg runtime, type TypeAssertionError struct +pkg runtime, var MemProfileRate int +pkg runtime/debug, func PrintStack() +pkg runtime/debug, func Stack() []byte +pkg runtime/pprof, func Lookup(string) *Profile +pkg runtime/pprof, func NewProfile(string) *Profile +pkg runtime/pprof, func Profiles() []*Profile +pkg runtime/pprof, func StartCPUProfile(io.Writer) error +pkg runtime/pprof, func StopCPUProfile() +pkg runtime/pprof, func WriteHeapProfile(io.Writer) error +pkg runtime/pprof, method (*Profile) Add(interface{}, int) +pkg runtime/pprof, method (*Profile) Count() int +pkg runtime/pprof, method (*Profile) Name() string +pkg runtime/pprof, method (*Profile) Remove(interface{}) +pkg runtime/pprof, method (*Profile) WriteTo(io.Writer, int) error +pkg runtime/pprof, type Profile struct +pkg sort, func Float64s([]float64) +pkg sort, func Float64sAreSorted([]float64) bool +pkg sort, func Ints([]int) +pkg sort, func IntsAreSorted([]int) bool +pkg sort, func IsSorted(Interface) bool +pkg sort, func Search(int, func(int) bool) int +pkg sort, func SearchFloat64s([]float64, float64) int +pkg sort, func SearchInts([]int, int) int +pkg sort, func SearchStrings([]string, string) int +pkg sort, func Sort(Interface) +pkg sort, func Strings([]string) +pkg sort, func StringsAreSorted([]string) bool +pkg sort, method (Float64Slice) Len() int +pkg sort, method (Float64Slice) Less(int) bool +pkg sort, method (Float64Slice) Search(float64) int +pkg sort, method (Float64Slice) Sort() +pkg sort, method (Float64Slice) Swap(int) +pkg sort, method (IntSlice) Len() int +pkg sort, method (IntSlice) Less(int) bool +pkg sort, method (IntSlice) Search(int) int +pkg sort, method (IntSlice) Sort() +pkg sort, method (IntSlice) Swap(int) +pkg sort, method (StringSlice) Len() int +pkg sort, method (StringSlice) Less(int) bool +pkg sort, method (StringSlice) Search(string) int +pkg sort, method (StringSlice) Sort() +pkg sort, method (StringSlice) Swap(int) +pkg sort, type Float64Slice []float64 +pkg sort, type IntSlice []int +pkg sort, type Interface interface { Len, Less, Swap } +pkg sort, type Interface interface, Len() int +pkg sort, type Interface interface, Less(int) bool +pkg sort, type Interface interface, Swap(int) +pkg sort, type StringSlice []string +pkg strconv, const IntSize ideal-int +pkg strconv, func AppendBool([]byte, bool) []byte +pkg strconv, func AppendFloat([]byte, float64, byte, int, int) []byte +pkg strconv, func AppendInt([]byte, int64, int) []byte +pkg strconv, func AppendQuote([]byte, string) []byte +pkg strconv, func AppendQuoteRune([]byte, rune) []byte +pkg strconv, func AppendQuoteRuneToASCII([]byte, rune) []byte +pkg strconv, func AppendQuoteToASCII([]byte, string) []byte +pkg strconv, func AppendUint([]byte, uint64, int) []byte +pkg strconv, func Atoi(string) (int, error) +pkg strconv, func CanBackquote(string) bool +pkg strconv, func FormatBool(bool) string +pkg strconv, func FormatFloat(float64, byte, int) string +pkg strconv, func FormatInt(int64, int) string +pkg strconv, func FormatUint(uint64, int) string +pkg strconv, func IsPrint(rune) bool +pkg strconv, func Itoa(int) string +pkg strconv, func ParseBool(string) (bool, error) +pkg strconv, func ParseFloat(string, int) (float64, error) +pkg strconv, func ParseInt(string, int, int) (int64, error) +pkg strconv, func ParseUint(string, int, int) (uint64, error) +pkg strconv, func Quote(string) string +pkg strconv, func QuoteRune(rune) string +pkg strconv, func QuoteRuneToASCII(rune) string +pkg strconv, func QuoteToASCII(string) string +pkg strconv, func Unquote(string) (string, error) +pkg strconv, func UnquoteChar(string, byte) (rune, bool, string, error) +pkg strconv, method (*NumError) Error() string +pkg strconv, type NumError struct +pkg strconv, type NumError struct, Err error +pkg strconv, type NumError struct, Func string +pkg strconv, type NumError struct, Num string +pkg strconv, var ErrRange error +pkg strconv, var ErrSyntax error +pkg strings, func Contains(string) bool +pkg strings, func ContainsAny(string) bool +pkg strings, func ContainsRune(string, rune) bool +pkg strings, func Count(string) int +pkg strings, func EqualFold(string) bool +pkg strings, func Fields(string) []string +pkg strings, func FieldsFunc(string, func(rune) bool) []string +pkg strings, func HasPrefix(string) bool +pkg strings, func HasSuffix(string) bool +pkg strings, func Index(string) int +pkg strings, func IndexAny(string) int +pkg strings, func IndexFunc(string, func(rune) bool) int +pkg strings, func IndexRune(string, rune) int +pkg strings, func Join([]string, string) string +pkg strings, func LastIndex(string) int +pkg strings, func LastIndexAny(string) int +pkg strings, func LastIndexFunc(string, func(rune) bool) int +pkg strings, func Map(func(rune) rune, string) string +pkg strings, func NewReader(string) *Reader +pkg strings, func NewReplacer(...string) *Replacer +pkg strings, func Repeat(string, int) string +pkg strings, func Replace(string, int) string +pkg strings, func Split(string) []string +pkg strings, func SplitAfter(string) []string +pkg strings, func SplitAfterN(string, int) []string +pkg strings, func SplitN(string, int) []string +pkg strings, func Title(string) string +pkg strings, func ToLower(string) string +pkg strings, func ToLowerSpecial(unicode.SpecialCase, string) string +pkg strings, func ToTitle(string) string +pkg strings, func ToTitleSpecial(unicode.SpecialCase, string) string +pkg strings, func ToUpper(string) string +pkg strings, func ToUpperSpecial(unicode.SpecialCase, string) string +pkg strings, func Trim(string, string) string +pkg strings, func TrimFunc(string, func(rune) bool) string +pkg strings, func TrimLeft(string, string) string +pkg strings, func TrimLeftFunc(string, func(rune) bool) string +pkg strings, func TrimRight(string, string) string +pkg strings, func TrimRightFunc(string, func(rune) bool) string +pkg strings, func TrimSpace(string) string +pkg strings, method (*Reader) Len() int +pkg strings, method (*Reader) Read([]byte) (int, error) +pkg strings, method (*Reader) ReadAt([]byte, int64) (int, error) +pkg strings, method (*Reader) ReadByte() (byte, error) +pkg strings, method (*Reader) ReadRune() (rune, int, error) +pkg strings, method (*Reader) Seek(int64, int) (int64, error) +pkg strings, method (*Reader) UnreadByte() error +pkg strings, method (*Reader) UnreadRune() error +pkg strings, method (*Replacer) Replace(string) string +pkg strings, method (*Replacer) WriteString(io.Writer, string) (int, error) +pkg strings, type Reader struct +pkg strings, type Replacer struct +pkg sync, func NewCond(Locker) *Cond +pkg sync, method (*Cond) Broadcast() +pkg sync, method (*Cond) Signal() +pkg sync, method (*Cond) Wait() +pkg sync, method (*Mutex) Lock() +pkg sync, method (*Mutex) Unlock() +pkg sync, method (*Once) Do(func()) +pkg sync, method (*RWMutex) Lock() +pkg sync, method (*RWMutex) RLock() +pkg sync, method (*RWMutex) RLocker() Locker +pkg sync, method (*RWMutex) RUnlock() +pkg sync, method (*RWMutex) Unlock() +pkg sync, method (*WaitGroup) Add(int) +pkg sync, method (*WaitGroup) Done() +pkg sync, method (*WaitGroup) Wait() +pkg sync, type Cond struct +pkg sync, type Cond struct, L Locker +pkg sync, type Locker interface { Lock, Unlock } +pkg sync, type Locker interface, Lock() +pkg sync, type Locker interface, Unlock() +pkg sync, type Mutex struct +pkg sync, type Once struct +pkg sync, type RWMutex struct +pkg sync, type WaitGroup struct +pkg sync/atomic, func AddInt32(*int32, int32) int32 +pkg sync/atomic, func AddInt64(*int64, int64) int64 +pkg sync/atomic, func AddUint32(*uint32, uint32) uint32 +pkg sync/atomic, func AddUint64(*uint64, uint64) uint64 +pkg sync/atomic, func AddUintptr(*uintptr, uintptr) uintptr +pkg sync/atomic, func CompareAndSwapInt32(*int32, int32) bool +pkg sync/atomic, func CompareAndSwapInt64(*int64, int64) bool +pkg sync/atomic, func CompareAndSwapPointer(*unsafe.Pointer, unsafe.Pointer) bool +pkg sync/atomic, func CompareAndSwapUint32(*uint32, uint32) bool +pkg sync/atomic, func CompareAndSwapUint64(*uint64, uint64) bool +pkg sync/atomic, func CompareAndSwapUintptr(*uintptr, uintptr) bool +pkg sync/atomic, func LoadInt32(*int32) int32 +pkg sync/atomic, func LoadInt64(*int64) int64 +pkg sync/atomic, func LoadPointer(*unsafe.Pointer) unsafe.Pointer +pkg sync/atomic, func LoadUint32(*uint32) uint32 +pkg sync/atomic, func LoadUint64(*uint64) uint64 +pkg sync/atomic, func LoadUintptr(*uintptr) uintptr +pkg sync/atomic, func StoreInt32(*int32, int32) +pkg sync/atomic, func StoreInt64(*int64, int64) +pkg sync/atomic, func StorePointer(*unsafe.Pointer, unsafe.Pointer) +pkg sync/atomic, func StoreUint32(*uint32, uint32) +pkg sync/atomic, func StoreUint64(*uint64, uint64) +pkg sync/atomic, func StoreUintptr(*uintptr, uintptr) +pkg syscall (darwin-386), const AF_APPLETALK ideal-int +pkg syscall (darwin-386), const AF_CCITT ideal-int +pkg syscall (darwin-386), const AF_CHAOS ideal-int +pkg syscall (darwin-386), const AF_CNT ideal-int +pkg syscall (darwin-386), const AF_COIP ideal-int +pkg syscall (darwin-386), const AF_DATAKIT ideal-int +pkg syscall (darwin-386), const AF_DECnet ideal-int +pkg syscall (darwin-386), const AF_DLI ideal-int +pkg syscall (darwin-386), const AF_E164 ideal-int +pkg syscall (darwin-386), const AF_ECMA ideal-int +pkg syscall (darwin-386), const AF_HYLINK ideal-int +pkg syscall (darwin-386), const AF_IEEE80211 ideal-int +pkg syscall (darwin-386), const AF_IMPLINK ideal-int +pkg syscall (darwin-386), const AF_IPX ideal-int +pkg syscall (darwin-386), const AF_ISDN ideal-int +pkg syscall (darwin-386), const AF_ISO ideal-int +pkg syscall (darwin-386), const AF_LAT ideal-int +pkg syscall (darwin-386), const AF_LINK ideal-int +pkg syscall (darwin-386), const AF_LOCAL ideal-int +pkg syscall (darwin-386), const AF_MAX ideal-int +pkg syscall (darwin-386), const AF_NATM ideal-int +pkg syscall (darwin-386), const AF_NDRV ideal-int +pkg syscall (darwin-386), const AF_NETBIOS ideal-int +pkg syscall (darwin-386), const AF_NS ideal-int +pkg syscall (darwin-386), const AF_OSI ideal-int +pkg syscall (darwin-386), const AF_PPP ideal-int +pkg syscall (darwin-386), const AF_PUP ideal-int +pkg syscall (darwin-386), const AF_RESERVED_36 ideal-int +pkg syscall (darwin-386), const AF_ROUTE ideal-int +pkg syscall (darwin-386), const AF_SIP ideal-int +pkg syscall (darwin-386), const AF_SNA ideal-int +pkg syscall (darwin-386), const AF_SYSTEM ideal-int +pkg syscall (darwin-386), const BIOCFLUSH ideal-int +pkg syscall (darwin-386), const BIOCGBLEN ideal-int +pkg syscall (darwin-386), const BIOCGDLT ideal-int +pkg syscall (darwin-386), const BIOCGDLTLIST ideal-int +pkg syscall (darwin-386), const BIOCGETIF ideal-int +pkg syscall (darwin-386), const BIOCGHDRCMPLT ideal-int +pkg syscall (darwin-386), const BIOCGRSIG ideal-int +pkg syscall (darwin-386), const BIOCGRTIMEOUT ideal-int +pkg syscall (darwin-386), const BIOCGSEESENT ideal-int +pkg syscall (darwin-386), const BIOCGSTATS ideal-int +pkg syscall (darwin-386), const BIOCIMMEDIATE ideal-int +pkg syscall (darwin-386), const BIOCPROMISC ideal-int +pkg syscall (darwin-386), const BIOCSBLEN ideal-int +pkg syscall (darwin-386), const BIOCSDLT ideal-int +pkg syscall (darwin-386), const BIOCSETF ideal-int +pkg syscall (darwin-386), const BIOCSETIF ideal-int +pkg syscall (darwin-386), const BIOCSHDRCMPLT ideal-int +pkg syscall (darwin-386), const BIOCSRSIG ideal-int +pkg syscall (darwin-386), const BIOCSRTIMEOUT ideal-int +pkg syscall (darwin-386), const BIOCSSEESENT ideal-int +pkg syscall (darwin-386), const BIOCVERSION ideal-int +pkg syscall (darwin-386), const BPF_A ideal-int +pkg syscall (darwin-386), const BPF_ABS ideal-int +pkg syscall (darwin-386), const BPF_ADD ideal-int +pkg syscall (darwin-386), const BPF_ALIGNMENT ideal-int +pkg syscall (darwin-386), const BPF_ALU ideal-int +pkg syscall (darwin-386), const BPF_AND ideal-int +pkg syscall (darwin-386), const BPF_B ideal-int +pkg syscall (darwin-386), const BPF_DIV ideal-int +pkg syscall (darwin-386), const BPF_H ideal-int +pkg syscall (darwin-386), const BPF_IMM ideal-int +pkg syscall (darwin-386), const BPF_IND ideal-int +pkg syscall (darwin-386), const BPF_JA ideal-int +pkg syscall (darwin-386), const BPF_JEQ ideal-int +pkg syscall (darwin-386), const BPF_JGE ideal-int +pkg syscall (darwin-386), const BPF_JGT ideal-int +pkg syscall (darwin-386), const BPF_JMP ideal-int +pkg syscall (darwin-386), const BPF_JSET ideal-int +pkg syscall (darwin-386), const BPF_K ideal-int +pkg syscall (darwin-386), const BPF_LD ideal-int +pkg syscall (darwin-386), const BPF_LDX ideal-int +pkg syscall (darwin-386), const BPF_LEN ideal-int +pkg syscall (darwin-386), const BPF_LSH ideal-int +pkg syscall (darwin-386), const BPF_MAJOR_VERSION ideal-int +pkg syscall (darwin-386), const BPF_MAXBUFSIZE ideal-int +pkg syscall (darwin-386), const BPF_MAXINSNS ideal-int +pkg syscall (darwin-386), const BPF_MEM ideal-int +pkg syscall (darwin-386), const BPF_MEMWORDS ideal-int +pkg syscall (darwin-386), const BPF_MINBUFSIZE ideal-int +pkg syscall (darwin-386), const BPF_MINOR_VERSION ideal-int +pkg syscall (darwin-386), const BPF_MISC ideal-int +pkg syscall (darwin-386), const BPF_MSH ideal-int +pkg syscall (darwin-386), const BPF_MUL ideal-int +pkg syscall (darwin-386), const BPF_NEG ideal-int +pkg syscall (darwin-386), const BPF_OR ideal-int +pkg syscall (darwin-386), const BPF_RELEASE ideal-int +pkg syscall (darwin-386), const BPF_RET ideal-int +pkg syscall (darwin-386), const BPF_RSH ideal-int +pkg syscall (darwin-386), const BPF_ST ideal-int +pkg syscall (darwin-386), const BPF_STX ideal-int +pkg syscall (darwin-386), const BPF_SUB ideal-int +pkg syscall (darwin-386), const BPF_TAX ideal-int +pkg syscall (darwin-386), const BPF_TXA ideal-int +pkg syscall (darwin-386), const BPF_W ideal-int +pkg syscall (darwin-386), const BPF_X ideal-int +pkg syscall (darwin-386), const CTL_MAXNAME ideal-int +pkg syscall (darwin-386), const CTL_NET ideal-int +pkg syscall (darwin-386), const DLT_APPLE_IP_OVER_IEEE1394 ideal-int +pkg syscall (darwin-386), const DLT_ARCNET ideal-int +pkg syscall (darwin-386), const DLT_ATM_CLIP ideal-int +pkg syscall (darwin-386), const DLT_ATM_RFC1483 ideal-int +pkg syscall (darwin-386), const DLT_AX25 ideal-int +pkg syscall (darwin-386), const DLT_CHAOS ideal-int +pkg syscall (darwin-386), const DLT_CHDLC ideal-int +pkg syscall (darwin-386), const DLT_C_HDLC ideal-int +pkg syscall (darwin-386), const DLT_EN10MB ideal-int +pkg syscall (darwin-386), const DLT_EN3MB ideal-int +pkg syscall (darwin-386), const DLT_FDDI ideal-int +pkg syscall (darwin-386), const DLT_IEEE802 ideal-int +pkg syscall (darwin-386), const DLT_IEEE802_11 ideal-int +pkg syscall (darwin-386), const DLT_IEEE802_11_RADIO ideal-int +pkg syscall (darwin-386), const DLT_IEEE802_11_RADIO_AVS ideal-int +pkg syscall (darwin-386), const DLT_LINUX_SLL ideal-int +pkg syscall (darwin-386), const DLT_LOOP ideal-int +pkg syscall (darwin-386), const DLT_NULL ideal-int +pkg syscall (darwin-386), const DLT_PFLOG ideal-int +pkg syscall (darwin-386), const DLT_PFSYNC ideal-int +pkg syscall (darwin-386), const DLT_PPP ideal-int +pkg syscall (darwin-386), const DLT_PPP_BSDOS ideal-int +pkg syscall (darwin-386), const DLT_PPP_SERIAL ideal-int +pkg syscall (darwin-386), const DLT_PRONET ideal-int +pkg syscall (darwin-386), const DLT_RAW ideal-int +pkg syscall (darwin-386), const DLT_SLIP ideal-int +pkg syscall (darwin-386), const DLT_SLIP_BSDOS ideal-int +pkg syscall (darwin-386), const DT_BLK ideal-int +pkg syscall (darwin-386), const DT_CHR ideal-int +pkg syscall (darwin-386), const DT_DIR ideal-int +pkg syscall (darwin-386), const DT_FIFO ideal-int +pkg syscall (darwin-386), const DT_LNK ideal-int +pkg syscall (darwin-386), const DT_REG ideal-int +pkg syscall (darwin-386), const DT_SOCK ideal-int +pkg syscall (darwin-386), const DT_UNKNOWN ideal-int +pkg syscall (darwin-386), const DT_WHT ideal-int +pkg syscall (darwin-386), const EAUTH Errno +pkg syscall (darwin-386), const EBADARCH Errno +pkg syscall (darwin-386), const EBADEXEC Errno +pkg syscall (darwin-386), const EBADMACHO Errno +pkg syscall (darwin-386), const EBADRPC Errno +pkg syscall (darwin-386), const ECHO ideal-int +pkg syscall (darwin-386), const ECHOCTL ideal-int +pkg syscall (darwin-386), const ECHOE ideal-int +pkg syscall (darwin-386), const ECHOK ideal-int +pkg syscall (darwin-386), const ECHOKE ideal-int +pkg syscall (darwin-386), const ECHONL ideal-int +pkg syscall (darwin-386), const ECHOPRT ideal-int +pkg syscall (darwin-386), const EDEVERR Errno +pkg syscall (darwin-386), const EFTYPE Errno +pkg syscall (darwin-386), const ELAST Errno +pkg syscall (darwin-386), const ENEEDAUTH Errno +pkg syscall (darwin-386), const ENOATTR Errno +pkg syscall (darwin-386), const ENOPOLICY Errno +pkg syscall (darwin-386), const EPROCLIM Errno +pkg syscall (darwin-386), const EPROCUNAVAIL Errno +pkg syscall (darwin-386), const EPROGMISMATCH Errno +pkg syscall (darwin-386), const EPROGUNAVAIL Errno +pkg syscall (darwin-386), const EPWROFF Errno +pkg syscall (darwin-386), const ERPCMISMATCH Errno +pkg syscall (darwin-386), const ESHLIBVERS Errno +pkg syscall (darwin-386), const EVFILT_AIO ideal-int +pkg syscall (darwin-386), const EVFILT_FS ideal-int +pkg syscall (darwin-386), const EVFILT_MACHPORT ideal-int +pkg syscall (darwin-386), const EVFILT_PROC ideal-int +pkg syscall (darwin-386), const EVFILT_READ ideal-int +pkg syscall (darwin-386), const EVFILT_SIGNAL ideal-int +pkg syscall (darwin-386), const EVFILT_SYSCOUNT ideal-int +pkg syscall (darwin-386), const EVFILT_THREADMARKER ideal-int +pkg syscall (darwin-386), const EVFILT_TIMER ideal-int +pkg syscall (darwin-386), const EVFILT_USER ideal-int +pkg syscall (darwin-386), const EVFILT_VM ideal-int +pkg syscall (darwin-386), const EVFILT_VNODE ideal-int +pkg syscall (darwin-386), const EVFILT_WRITE ideal-int +pkg syscall (darwin-386), const EV_ADD ideal-int +pkg syscall (darwin-386), const EV_CLEAR ideal-int +pkg syscall (darwin-386), const EV_DELETE ideal-int +pkg syscall (darwin-386), const EV_DISABLE ideal-int +pkg syscall (darwin-386), const EV_DISPATCH ideal-int +pkg syscall (darwin-386), const EV_ENABLE ideal-int +pkg syscall (darwin-386), const EV_EOF ideal-int +pkg syscall (darwin-386), const EV_ERROR ideal-int +pkg syscall (darwin-386), const EV_FLAG0 ideal-int +pkg syscall (darwin-386), const EV_FLAG1 ideal-int +pkg syscall (darwin-386), const EV_ONESHOT ideal-int +pkg syscall (darwin-386), const EV_OOBAND ideal-int +pkg syscall (darwin-386), const EV_POLL ideal-int +pkg syscall (darwin-386), const EV_RECEIPT ideal-int +pkg syscall (darwin-386), const EV_SYSFLAGS ideal-int +pkg syscall (darwin-386), const EXTA ideal-int +pkg syscall (darwin-386), const EXTB ideal-int +pkg syscall (darwin-386), const EXTPROC ideal-int +pkg syscall (darwin-386), const FD_CLOEXEC ideal-int +pkg syscall (darwin-386), const FD_SETSIZE ideal-int +pkg syscall (darwin-386), const F_ADDFILESIGS ideal-int +pkg syscall (darwin-386), const F_ADDSIGS ideal-int +pkg syscall (darwin-386), const F_ALLOCATEALL ideal-int +pkg syscall (darwin-386), const F_ALLOCATECONTIG ideal-int +pkg syscall (darwin-386), const F_CHKCLEAN ideal-int +pkg syscall (darwin-386), const F_DUPFD ideal-int +pkg syscall (darwin-386), const F_DUPFD_CLOEXEC ideal-int +pkg syscall (darwin-386), const F_FLUSH_DATA ideal-int +pkg syscall (darwin-386), const F_FREEZE_FS ideal-int +pkg syscall (darwin-386), const F_FULLFSYNC ideal-int +pkg syscall (darwin-386), const F_GETFD ideal-int +pkg syscall (darwin-386), const F_GETFL ideal-int +pkg syscall (darwin-386), const F_GETLK ideal-int +pkg syscall (darwin-386), const F_GETLKPID ideal-int +pkg syscall (darwin-386), const F_GETNOSIGPIPE ideal-int +pkg syscall (darwin-386), const F_GETOWN ideal-int +pkg syscall (darwin-386), const F_GETPATH ideal-int +pkg syscall (darwin-386), const F_GETPATH_MTMINFO ideal-int +pkg syscall (darwin-386), const F_GETPROTECTIONCLASS ideal-int +pkg syscall (darwin-386), const F_GLOBAL_NOCACHE ideal-int +pkg syscall (darwin-386), const F_LOG2PHYS ideal-int +pkg syscall (darwin-386), const F_LOG2PHYS_EXT ideal-int +pkg syscall (darwin-386), const F_MARKDEPENDENCY ideal-int +pkg syscall (darwin-386), const F_NOCACHE ideal-int +pkg syscall (darwin-386), const F_NODIRECT ideal-int +pkg syscall (darwin-386), const F_OK ideal-int +pkg syscall (darwin-386), const F_PATHPKG_CHECK ideal-int +pkg syscall (darwin-386), const F_PEOFPOSMODE ideal-int +pkg syscall (darwin-386), const F_PREALLOCATE ideal-int +pkg syscall (darwin-386), const F_RDADVISE ideal-int +pkg syscall (darwin-386), const F_RDAHEAD ideal-int +pkg syscall (darwin-386), const F_RDLCK ideal-int +pkg syscall (darwin-386), const F_READBOOTSTRAP ideal-int +pkg syscall (darwin-386), const F_SETBACKINGSTORE ideal-int +pkg syscall (darwin-386), const F_SETFD ideal-int +pkg syscall (darwin-386), const F_SETFL ideal-int +pkg syscall (darwin-386), const F_SETLK ideal-int +pkg syscall (darwin-386), const F_SETLKW ideal-int +pkg syscall (darwin-386), const F_SETNOSIGPIPE ideal-int +pkg syscall (darwin-386), const F_SETOWN ideal-int +pkg syscall (darwin-386), const F_SETPROTECTIONCLASS ideal-int +pkg syscall (darwin-386), const F_SETSIZE ideal-int +pkg syscall (darwin-386), const F_THAW_FS ideal-int +pkg syscall (darwin-386), const F_UNLCK ideal-int +pkg syscall (darwin-386), const F_VOLPOSMODE ideal-int +pkg syscall (darwin-386), const F_WRITEBOOTSTRAP ideal-int +pkg syscall (darwin-386), const F_WRLCK ideal-int +pkg syscall (darwin-386), const IFF_ALLMULTI ideal-int +pkg syscall (darwin-386), const IFF_ALTPHYS ideal-int +pkg syscall (darwin-386), const IFF_DEBUG ideal-int +pkg syscall (darwin-386), const IFF_LINK0 ideal-int +pkg syscall (darwin-386), const IFF_LINK1 ideal-int +pkg syscall (darwin-386), const IFF_LINK2 ideal-int +pkg syscall (darwin-386), const IFF_NOARP ideal-int +pkg syscall (darwin-386), const IFF_NOTRAILERS ideal-int +pkg syscall (darwin-386), const IFF_OACTIVE ideal-int +pkg syscall (darwin-386), const IFF_POINTOPOINT ideal-int +pkg syscall (darwin-386), const IFF_PROMISC ideal-int +pkg syscall (darwin-386), const IFF_RUNNING ideal-int +pkg syscall (darwin-386), const IFF_SIMPLEX ideal-int +pkg syscall (darwin-386), const IFNAMSIZ ideal-int +pkg syscall (darwin-386), const IFT_1822 ideal-int +pkg syscall (darwin-386), const IFT_AAL5 ideal-int +pkg syscall (darwin-386), const IFT_ARCNET ideal-int +pkg syscall (darwin-386), const IFT_ARCNETPLUS ideal-int +pkg syscall (darwin-386), const IFT_ATM ideal-int +pkg syscall (darwin-386), const IFT_BRIDGE ideal-int +pkg syscall (darwin-386), const IFT_CARP ideal-int +pkg syscall (darwin-386), const IFT_CELLULAR ideal-int +pkg syscall (darwin-386), const IFT_CEPT ideal-int +pkg syscall (darwin-386), const IFT_DS3 ideal-int +pkg syscall (darwin-386), const IFT_ENC ideal-int +pkg syscall (darwin-386), const IFT_EON ideal-int +pkg syscall (darwin-386), const IFT_ETHER ideal-int +pkg syscall (darwin-386), const IFT_FAITH ideal-int +pkg syscall (darwin-386), const IFT_FDDI ideal-int +pkg syscall (darwin-386), const IFT_FRELAY ideal-int +pkg syscall (darwin-386), const IFT_FRELAYDCE ideal-int +pkg syscall (darwin-386), const IFT_GIF ideal-int +pkg syscall (darwin-386), const IFT_HDH1822 ideal-int +pkg syscall (darwin-386), const IFT_HIPPI ideal-int +pkg syscall (darwin-386), const IFT_HSSI ideal-int +pkg syscall (darwin-386), const IFT_HY ideal-int +pkg syscall (darwin-386), const IFT_IEEE1394 ideal-int +pkg syscall (darwin-386), const IFT_IEEE8023ADLAG ideal-int +pkg syscall (darwin-386), const IFT_ISDNBASIC ideal-int +pkg syscall (darwin-386), const IFT_ISDNPRIMARY ideal-int +pkg syscall (darwin-386), const IFT_ISO88022LLC ideal-int +pkg syscall (darwin-386), const IFT_ISO88023 ideal-int +pkg syscall (darwin-386), const IFT_ISO88024 ideal-int +pkg syscall (darwin-386), const IFT_ISO88025 ideal-int +pkg syscall (darwin-386), const IFT_ISO88026 ideal-int +pkg syscall (darwin-386), const IFT_L2VLAN ideal-int +pkg syscall (darwin-386), const IFT_LAPB ideal-int +pkg syscall (darwin-386), const IFT_LOCALTALK ideal-int +pkg syscall (darwin-386), const IFT_LOOP ideal-int +pkg syscall (darwin-386), const IFT_MIOX25 ideal-int +pkg syscall (darwin-386), const IFT_MODEM ideal-int +pkg syscall (darwin-386), const IFT_NSIP ideal-int +pkg syscall (darwin-386), const IFT_OTHER ideal-int +pkg syscall (darwin-386), const IFT_P10 ideal-int +pkg syscall (darwin-386), const IFT_P80 ideal-int +pkg syscall (darwin-386), const IFT_PARA ideal-int +pkg syscall (darwin-386), const IFT_PDP ideal-int +pkg syscall (darwin-386), const IFT_PFLOG ideal-int +pkg syscall (darwin-386), const IFT_PFSYNC ideal-int +pkg syscall (darwin-386), const IFT_PPP ideal-int +pkg syscall (darwin-386), const IFT_PROPMUX ideal-int +pkg syscall (darwin-386), const IFT_PROPVIRTUAL ideal-int +pkg syscall (darwin-386), const IFT_PTPSERIAL ideal-int +pkg syscall (darwin-386), const IFT_RS232 ideal-int +pkg syscall (darwin-386), const IFT_SDLC ideal-int +pkg syscall (darwin-386), const IFT_SIP ideal-int +pkg syscall (darwin-386), const IFT_SLIP ideal-int +pkg syscall (darwin-386), const IFT_SMDSDXI ideal-int +pkg syscall (darwin-386), const IFT_SMDSICIP ideal-int +pkg syscall (darwin-386), const IFT_SONET ideal-int +pkg syscall (darwin-386), const IFT_SONETPATH ideal-int +pkg syscall (darwin-386), const IFT_SONETVT ideal-int +pkg syscall (darwin-386), const IFT_STARLAN ideal-int +pkg syscall (darwin-386), const IFT_STF ideal-int +pkg syscall (darwin-386), const IFT_T1 ideal-int +pkg syscall (darwin-386), const IFT_ULTRA ideal-int +pkg syscall (darwin-386), const IFT_V35 ideal-int +pkg syscall (darwin-386), const IFT_X25 ideal-int +pkg syscall (darwin-386), const IFT_X25DDN ideal-int +pkg syscall (darwin-386), const IFT_X25PLE ideal-int +pkg syscall (darwin-386), const IFT_XETHER ideal-int +pkg syscall (darwin-386), const IN_CLASSA_HOST ideal-int +pkg syscall (darwin-386), const IN_CLASSA_MAX ideal-int +pkg syscall (darwin-386), const IN_CLASSA_NET ideal-int +pkg syscall (darwin-386), const IN_CLASSA_NSHIFT ideal-int +pkg syscall (darwin-386), const IN_CLASSB_HOST ideal-int +pkg syscall (darwin-386), const IN_CLASSB_MAX ideal-int +pkg syscall (darwin-386), const IN_CLASSB_NET ideal-int +pkg syscall (darwin-386), const IN_CLASSB_NSHIFT ideal-int +pkg syscall (darwin-386), const IN_CLASSC_HOST ideal-int +pkg syscall (darwin-386), const IN_CLASSC_NET ideal-int +pkg syscall (darwin-386), const IN_CLASSC_NSHIFT ideal-int +pkg syscall (darwin-386), const IN_CLASSD_HOST ideal-int +pkg syscall (darwin-386), const IN_CLASSD_NET ideal-int +pkg syscall (darwin-386), const IN_CLASSD_NSHIFT ideal-int +pkg syscall (darwin-386), const IN_LINKLOCALNETNUM ideal-int +pkg syscall (darwin-386), const IN_LOOPBACKNET ideal-int +pkg syscall (darwin-386), const IPPROTO_3PC ideal-int +pkg syscall (darwin-386), const IPPROTO_ADFS ideal-int +pkg syscall (darwin-386), const IPPROTO_AH ideal-int +pkg syscall (darwin-386), const IPPROTO_AHIP ideal-int +pkg syscall (darwin-386), const IPPROTO_APES ideal-int +pkg syscall (darwin-386), const IPPROTO_ARGUS ideal-int +pkg syscall (darwin-386), const IPPROTO_AX25 ideal-int +pkg syscall (darwin-386), const IPPROTO_BHA ideal-int +pkg syscall (darwin-386), const IPPROTO_BLT ideal-int +pkg syscall (darwin-386), const IPPROTO_BRSATMON ideal-int +pkg syscall (darwin-386), const IPPROTO_CFTP ideal-int +pkg syscall (darwin-386), const IPPROTO_CHAOS ideal-int +pkg syscall (darwin-386), const IPPROTO_CMTP ideal-int +pkg syscall (darwin-386), const IPPROTO_CPHB ideal-int +pkg syscall (darwin-386), const IPPROTO_CPNX ideal-int +pkg syscall (darwin-386), const IPPROTO_DDP ideal-int +pkg syscall (darwin-386), const IPPROTO_DGP ideal-int +pkg syscall (darwin-386), const IPPROTO_DIVERT ideal-int +pkg syscall (darwin-386), const IPPROTO_DONE ideal-int +pkg syscall (darwin-386), const IPPROTO_DSTOPTS ideal-int +pkg syscall (darwin-386), const IPPROTO_EGP ideal-int +pkg syscall (darwin-386), const IPPROTO_EMCON ideal-int +pkg syscall (darwin-386), const IPPROTO_ENCAP ideal-int +pkg syscall (darwin-386), const IPPROTO_EON ideal-int +pkg syscall (darwin-386), const IPPROTO_ESP ideal-int +pkg syscall (darwin-386), const IPPROTO_ETHERIP ideal-int +pkg syscall (darwin-386), const IPPROTO_FRAGMENT ideal-int +pkg syscall (darwin-386), const IPPROTO_GGP ideal-int +pkg syscall (darwin-386), const IPPROTO_GMTP ideal-int +pkg syscall (darwin-386), const IPPROTO_GRE ideal-int +pkg syscall (darwin-386), const IPPROTO_HELLO ideal-int +pkg syscall (darwin-386), const IPPROTO_HMP ideal-int +pkg syscall (darwin-386), const IPPROTO_HOPOPTS ideal-int +pkg syscall (darwin-386), const IPPROTO_ICMP ideal-int +pkg syscall (darwin-386), const IPPROTO_ICMPV6 ideal-int +pkg syscall (darwin-386), const IPPROTO_IDP ideal-int +pkg syscall (darwin-386), const IPPROTO_IDPR ideal-int +pkg syscall (darwin-386), const IPPROTO_IDRP ideal-int +pkg syscall (darwin-386), const IPPROTO_IGMP ideal-int +pkg syscall (darwin-386), const IPPROTO_IGP ideal-int +pkg syscall (darwin-386), const IPPROTO_IGRP ideal-int +pkg syscall (darwin-386), const IPPROTO_IL ideal-int +pkg syscall (darwin-386), const IPPROTO_INLSP ideal-int +pkg syscall (darwin-386), const IPPROTO_INP ideal-int +pkg syscall (darwin-386), const IPPROTO_IPCOMP ideal-int +pkg syscall (darwin-386), const IPPROTO_IPCV ideal-int +pkg syscall (darwin-386), const IPPROTO_IPEIP ideal-int +pkg syscall (darwin-386), const IPPROTO_IPIP ideal-int +pkg syscall (darwin-386), const IPPROTO_IPPC ideal-int +pkg syscall (darwin-386), const IPPROTO_IPV4 ideal-int +pkg syscall (darwin-386), const IPPROTO_IRTP ideal-int +pkg syscall (darwin-386), const IPPROTO_KRYPTOLAN ideal-int +pkg syscall (darwin-386), const IPPROTO_LARP ideal-int +pkg syscall (darwin-386), const IPPROTO_LEAF1 ideal-int +pkg syscall (darwin-386), const IPPROTO_LEAF2 ideal-int +pkg syscall (darwin-386), const IPPROTO_MAX ideal-int +pkg syscall (darwin-386), const IPPROTO_MAXID ideal-int +pkg syscall (darwin-386), const IPPROTO_MEAS ideal-int +pkg syscall (darwin-386), const IPPROTO_MHRP ideal-int +pkg syscall (darwin-386), const IPPROTO_MICP ideal-int +pkg syscall (darwin-386), const IPPROTO_MTP ideal-int +pkg syscall (darwin-386), const IPPROTO_MUX ideal-int +pkg syscall (darwin-386), const IPPROTO_ND ideal-int +pkg syscall (darwin-386), const IPPROTO_NHRP ideal-int +pkg syscall (darwin-386), const IPPROTO_NONE ideal-int +pkg syscall (darwin-386), const IPPROTO_NSP ideal-int +pkg syscall (darwin-386), const IPPROTO_NVPII ideal-int +pkg syscall (darwin-386), const IPPROTO_OSPFIGP ideal-int +pkg syscall (darwin-386), const IPPROTO_PGM ideal-int +pkg syscall (darwin-386), const IPPROTO_PIGP ideal-int +pkg syscall (darwin-386), const IPPROTO_PIM ideal-int +pkg syscall (darwin-386), const IPPROTO_PRM ideal-int +pkg syscall (darwin-386), const IPPROTO_PUP ideal-int +pkg syscall (darwin-386), const IPPROTO_PVP ideal-int +pkg syscall (darwin-386), const IPPROTO_RAW ideal-int +pkg syscall (darwin-386), const IPPROTO_RCCMON ideal-int +pkg syscall (darwin-386), const IPPROTO_RDP ideal-int +pkg syscall (darwin-386), const IPPROTO_ROUTING ideal-int +pkg syscall (darwin-386), const IPPROTO_RSVP ideal-int +pkg syscall (darwin-386), const IPPROTO_RVD ideal-int +pkg syscall (darwin-386), const IPPROTO_SATEXPAK ideal-int +pkg syscall (darwin-386), const IPPROTO_SATMON ideal-int +pkg syscall (darwin-386), const IPPROTO_SCCSP ideal-int +pkg syscall (darwin-386), const IPPROTO_SCTP ideal-int +pkg syscall (darwin-386), const IPPROTO_SDRP ideal-int +pkg syscall (darwin-386), const IPPROTO_SEP ideal-int +pkg syscall (darwin-386), const IPPROTO_SRPC ideal-int +pkg syscall (darwin-386), const IPPROTO_ST ideal-int +pkg syscall (darwin-386), const IPPROTO_SVMTP ideal-int +pkg syscall (darwin-386), const IPPROTO_SWIPE ideal-int +pkg syscall (darwin-386), const IPPROTO_TCF ideal-int +pkg syscall (darwin-386), const IPPROTO_TP ideal-int +pkg syscall (darwin-386), const IPPROTO_TPXX ideal-int +pkg syscall (darwin-386), const IPPROTO_TRUNK1 ideal-int +pkg syscall (darwin-386), const IPPROTO_TRUNK2 ideal-int +pkg syscall (darwin-386), const IPPROTO_TTP ideal-int +pkg syscall (darwin-386), const IPPROTO_VINES ideal-int +pkg syscall (darwin-386), const IPPROTO_VISA ideal-int +pkg syscall (darwin-386), const IPPROTO_VMTP ideal-int +pkg syscall (darwin-386), const IPPROTO_WBEXPAK ideal-int +pkg syscall (darwin-386), const IPPROTO_WBMON ideal-int +pkg syscall (darwin-386), const IPPROTO_WSN ideal-int +pkg syscall (darwin-386), const IPPROTO_XNET ideal-int +pkg syscall (darwin-386), const IPPROTO_XTP ideal-int +pkg syscall (darwin-386), const IPV6_2292DSTOPTS ideal-int +pkg syscall (darwin-386), const IPV6_2292HOPLIMIT ideal-int +pkg syscall (darwin-386), const IPV6_2292HOPOPTS ideal-int +pkg syscall (darwin-386), const IPV6_2292NEXTHOP ideal-int +pkg syscall (darwin-386), const IPV6_2292PKTINFO ideal-int +pkg syscall (darwin-386), const IPV6_2292PKTOPTIONS ideal-int +pkg syscall (darwin-386), const IPV6_2292RTHDR ideal-int +pkg syscall (darwin-386), const IPV6_BINDV6ONLY ideal-int +pkg syscall (darwin-386), const IPV6_BOUND_IF ideal-int +pkg syscall (darwin-386), const IPV6_CHECKSUM ideal-int +pkg syscall (darwin-386), const IPV6_DEFAULT_MULTICAST_HOPS ideal-int +pkg syscall (darwin-386), const IPV6_DEFAULT_MULTICAST_LOOP ideal-int +pkg syscall (darwin-386), const IPV6_DEFHLIM ideal-int +pkg syscall (darwin-386), const IPV6_FAITH ideal-int +pkg syscall (darwin-386), const IPV6_FLOWINFO_MASK ideal-int +pkg syscall (darwin-386), const IPV6_FLOWLABEL_MASK ideal-int +pkg syscall (darwin-386), const IPV6_FRAGTTL ideal-int +pkg syscall (darwin-386), const IPV6_FW_ADD ideal-int +pkg syscall (darwin-386), const IPV6_FW_DEL ideal-int +pkg syscall (darwin-386), const IPV6_FW_FLUSH ideal-int +pkg syscall (darwin-386), const IPV6_FW_GET ideal-int +pkg syscall (darwin-386), const IPV6_FW_ZERO ideal-int +pkg syscall (darwin-386), const IPV6_HLIMDEC ideal-int +pkg syscall (darwin-386), const IPV6_IPSEC_POLICY ideal-int +pkg syscall (darwin-386), const IPV6_MAXHLIM ideal-int +pkg syscall (darwin-386), const IPV6_MAXOPTHDR ideal-int +pkg syscall (darwin-386), const IPV6_MAXPACKET ideal-int +pkg syscall (darwin-386), const IPV6_MAX_GROUP_SRC_FILTER ideal-int +pkg syscall (darwin-386), const IPV6_MAX_MEMBERSHIPS ideal-int +pkg syscall (darwin-386), const IPV6_MAX_SOCK_SRC_FILTER ideal-int +pkg syscall (darwin-386), const IPV6_MIN_MEMBERSHIPS ideal-int +pkg syscall (darwin-386), const IPV6_MMTU ideal-int +pkg syscall (darwin-386), const IPV6_PORTRANGE ideal-int +pkg syscall (darwin-386), const IPV6_PORTRANGE_DEFAULT ideal-int +pkg syscall (darwin-386), const IPV6_PORTRANGE_HIGH ideal-int +pkg syscall (darwin-386), const IPV6_PORTRANGE_LOW ideal-int +pkg syscall (darwin-386), const IPV6_RECVTCLASS ideal-int +pkg syscall (darwin-386), const IPV6_RTHDR_LOOSE ideal-int +pkg syscall (darwin-386), const IPV6_RTHDR_STRICT ideal-int +pkg syscall (darwin-386), const IPV6_RTHDR_TYPE_0 ideal-int +pkg syscall (darwin-386), const IPV6_SOCKOPT_RESERVED1 ideal-int +pkg syscall (darwin-386), const IPV6_TCLASS ideal-int +pkg syscall (darwin-386), const IPV6_VERSION ideal-int +pkg syscall (darwin-386), const IPV6_VERSION_MASK ideal-int +pkg syscall (darwin-386), const IP_ADD_SOURCE_MEMBERSHIP ideal-int +pkg syscall (darwin-386), const IP_BLOCK_SOURCE ideal-int +pkg syscall (darwin-386), const IP_BOUND_IF ideal-int +pkg syscall (darwin-386), const IP_DEFAULT_MULTICAST_LOOP ideal-int +pkg syscall (darwin-386), const IP_DEFAULT_MULTICAST_TTL ideal-int +pkg syscall (darwin-386), const IP_DF ideal-int +pkg syscall (darwin-386), const IP_DROP_SOURCE_MEMBERSHIP ideal-int +pkg syscall (darwin-386), const IP_DUMMYNET_CONFIGURE ideal-int +pkg syscall (darwin-386), const IP_DUMMYNET_DEL ideal-int +pkg syscall (darwin-386), const IP_DUMMYNET_FLUSH ideal-int +pkg syscall (darwin-386), const IP_DUMMYNET_GET ideal-int +pkg syscall (darwin-386), const IP_FAITH ideal-int +pkg syscall (darwin-386), const IP_FW_ADD ideal-int +pkg syscall (darwin-386), const IP_FW_DEL ideal-int +pkg syscall (darwin-386), const IP_FW_FLUSH ideal-int +pkg syscall (darwin-386), const IP_FW_GET ideal-int +pkg syscall (darwin-386), const IP_FW_RESETLOG ideal-int +pkg syscall (darwin-386), const IP_FW_ZERO ideal-int +pkg syscall (darwin-386), const IP_HDRINCL ideal-int +pkg syscall (darwin-386), const IP_IPSEC_POLICY ideal-int +pkg syscall (darwin-386), const IP_MAXPACKET ideal-int +pkg syscall (darwin-386), const IP_MAX_GROUP_SRC_FILTER ideal-int +pkg syscall (darwin-386), const IP_MAX_MEMBERSHIPS ideal-int +pkg syscall (darwin-386), const IP_MAX_SOCK_MUTE_FILTER ideal-int +pkg syscall (darwin-386), const IP_MAX_SOCK_SRC_FILTER ideal-int +pkg syscall (darwin-386), const IP_MF ideal-int +pkg syscall (darwin-386), const IP_MIN_MEMBERSHIPS ideal-int +pkg syscall (darwin-386), const IP_MSFILTER ideal-int +pkg syscall (darwin-386), const IP_MSS ideal-int +pkg syscall (darwin-386), const IP_MULTICAST_IFINDEX ideal-int +pkg syscall (darwin-386), const IP_MULTICAST_VIF ideal-int +pkg syscall (darwin-386), const IP_NAT__XXX ideal-int +pkg syscall (darwin-386), const IP_OFFMASK ideal-int +pkg syscall (darwin-386), const IP_OLD_FW_ADD ideal-int +pkg syscall (darwin-386), const IP_OLD_FW_DEL ideal-int +pkg syscall (darwin-386), const IP_OLD_FW_FLUSH ideal-int +pkg syscall (darwin-386), const IP_OLD_FW_GET ideal-int +pkg syscall (darwin-386), const IP_OLD_FW_RESETLOG ideal-int +pkg syscall (darwin-386), const IP_OLD_FW_ZERO ideal-int +pkg syscall (darwin-386), const IP_OPTIONS ideal-int +pkg syscall (darwin-386), const IP_PKTINFO ideal-int +pkg syscall (darwin-386), const IP_PORTRANGE ideal-int +pkg syscall (darwin-386), const IP_PORTRANGE_DEFAULT ideal-int +pkg syscall (darwin-386), const IP_PORTRANGE_HIGH ideal-int +pkg syscall (darwin-386), const IP_PORTRANGE_LOW ideal-int +pkg syscall (darwin-386), const IP_RECVDSTADDR ideal-int +pkg syscall (darwin-386), const IP_RECVIF ideal-int +pkg syscall (darwin-386), const IP_RECVOPTS ideal-int +pkg syscall (darwin-386), const IP_RECVPKTINFO ideal-int +pkg syscall (darwin-386), const IP_RECVRETOPTS ideal-int +pkg syscall (darwin-386), const IP_RECVTTL ideal-int +pkg syscall (darwin-386), const IP_RETOPTS ideal-int +pkg syscall (darwin-386), const IP_RF ideal-int +pkg syscall (darwin-386), const IP_RSVP_OFF ideal-int +pkg syscall (darwin-386), const IP_RSVP_ON ideal-int +pkg syscall (darwin-386), const IP_RSVP_VIF_OFF ideal-int +pkg syscall (darwin-386), const IP_RSVP_VIF_ON ideal-int +pkg syscall (darwin-386), const IP_STRIPHDR ideal-int +pkg syscall (darwin-386), const IP_TRAFFIC_MGT_BACKGROUND ideal-int +pkg syscall (darwin-386), const IP_UNBLOCK_SOURCE ideal-int +pkg syscall (darwin-386), const LOCK_EX ideal-int +pkg syscall (darwin-386), const LOCK_NB ideal-int +pkg syscall (darwin-386), const LOCK_SH ideal-int +pkg syscall (darwin-386), const LOCK_UN ideal-int +pkg syscall (darwin-386), const MADV_CAN_REUSE ideal-int +pkg syscall (darwin-386), const MADV_DONTNEED ideal-int +pkg syscall (darwin-386), const MADV_FREE ideal-int +pkg syscall (darwin-386), const MADV_FREE_REUSABLE ideal-int +pkg syscall (darwin-386), const MADV_FREE_REUSE ideal-int +pkg syscall (darwin-386), const MADV_NORMAL ideal-int +pkg syscall (darwin-386), const MADV_RANDOM ideal-int +pkg syscall (darwin-386), const MADV_SEQUENTIAL ideal-int +pkg syscall (darwin-386), const MADV_WILLNEED ideal-int +pkg syscall (darwin-386), const MADV_ZERO_WIRED_PAGES ideal-int +pkg syscall (darwin-386), const MAP_ANON ideal-int +pkg syscall (darwin-386), const MAP_COPY ideal-int +pkg syscall (darwin-386), const MAP_FILE ideal-int +pkg syscall (darwin-386), const MAP_FIXED ideal-int +pkg syscall (darwin-386), const MAP_HASSEMAPHORE ideal-int +pkg syscall (darwin-386), const MAP_JIT ideal-int +pkg syscall (darwin-386), const MAP_NOCACHE ideal-int +pkg syscall (darwin-386), const MAP_NOEXTEND ideal-int +pkg syscall (darwin-386), const MAP_NORESERVE ideal-int +pkg syscall (darwin-386), const MAP_PRIVATE ideal-int +pkg syscall (darwin-386), const MAP_RENAME ideal-int +pkg syscall (darwin-386), const MAP_RESERVED0080 ideal-int +pkg syscall (darwin-386), const MAP_SHARED ideal-int +pkg syscall (darwin-386), const MCL_CURRENT ideal-int +pkg syscall (darwin-386), const MCL_FUTURE ideal-int +pkg syscall (darwin-386), const MSG_CTRUNC ideal-int +pkg syscall (darwin-386), const MSG_DONTROUTE ideal-int +pkg syscall (darwin-386), const MSG_DONTWAIT ideal-int +pkg syscall (darwin-386), const MSG_EOF ideal-int +pkg syscall (darwin-386), const MSG_EOR ideal-int +pkg syscall (darwin-386), const MSG_FLUSH ideal-int +pkg syscall (darwin-386), const MSG_HAVEMORE ideal-int +pkg syscall (darwin-386), const MSG_HOLD ideal-int +pkg syscall (darwin-386), const MSG_NEEDSA ideal-int +pkg syscall (darwin-386), const MSG_OOB ideal-int +pkg syscall (darwin-386), const MSG_PEEK ideal-int +pkg syscall (darwin-386), const MSG_RCVMORE ideal-int +pkg syscall (darwin-386), const MSG_SEND ideal-int +pkg syscall (darwin-386), const MSG_TRUNC ideal-int +pkg syscall (darwin-386), const MSG_WAITALL ideal-int +pkg syscall (darwin-386), const MSG_WAITSTREAM ideal-int +pkg syscall (darwin-386), const MS_ASYNC ideal-int +pkg syscall (darwin-386), const MS_DEACTIVATE ideal-int +pkg syscall (darwin-386), const MS_INVALIDATE ideal-int +pkg syscall (darwin-386), const MS_KILLPAGES ideal-int +pkg syscall (darwin-386), const MS_SYNC ideal-int +pkg syscall (darwin-386), const NAME_MAX ideal-int +pkg syscall (darwin-386), const NET_RT_DUMP ideal-int +pkg syscall (darwin-386), const NET_RT_DUMP2 ideal-int +pkg syscall (darwin-386), const NET_RT_FLAGS ideal-int +pkg syscall (darwin-386), const NET_RT_IFLIST ideal-int +pkg syscall (darwin-386), const NET_RT_IFLIST2 ideal-int +pkg syscall (darwin-386), const NET_RT_MAXID ideal-int +pkg syscall (darwin-386), const NET_RT_STAT ideal-int +pkg syscall (darwin-386), const NET_RT_TRASH ideal-int +pkg syscall (darwin-386), const NOTE_ABSOLUTE ideal-int +pkg syscall (darwin-386), const NOTE_ATTRIB ideal-int +pkg syscall (darwin-386), const NOTE_CHILD ideal-int +pkg syscall (darwin-386), const NOTE_DELETE ideal-int +pkg syscall (darwin-386), const NOTE_EXEC ideal-int +pkg syscall (darwin-386), const NOTE_EXIT ideal-int +pkg syscall (darwin-386), const NOTE_EXITSTATUS ideal-int +pkg syscall (darwin-386), const NOTE_EXTEND ideal-int +pkg syscall (darwin-386), const NOTE_FFAND ideal-int +pkg syscall (darwin-386), const NOTE_FFCOPY ideal-int +pkg syscall (darwin-386), const NOTE_FFCTRLMASK ideal-int +pkg syscall (darwin-386), const NOTE_FFLAGSMASK ideal-int +pkg syscall (darwin-386), const NOTE_FFNOP ideal-int +pkg syscall (darwin-386), const NOTE_FFOR ideal-int +pkg syscall (darwin-386), const NOTE_FORK ideal-int +pkg syscall (darwin-386), const NOTE_LINK ideal-int +pkg syscall (darwin-386), const NOTE_LOWAT ideal-int +pkg syscall (darwin-386), const NOTE_NONE ideal-int +pkg syscall (darwin-386), const NOTE_NSECONDS ideal-int +pkg syscall (darwin-386), const NOTE_PCTRLMASK ideal-int +pkg syscall (darwin-386), const NOTE_PDATAMASK ideal-int +pkg syscall (darwin-386), const NOTE_REAP ideal-int +pkg syscall (darwin-386), const NOTE_RENAME ideal-int +pkg syscall (darwin-386), const NOTE_RESOURCEEND ideal-int +pkg syscall (darwin-386), const NOTE_REVOKE ideal-int +pkg syscall (darwin-386), const NOTE_SECONDS ideal-int +pkg syscall (darwin-386), const NOTE_SIGNAL ideal-int +pkg syscall (darwin-386), const NOTE_TRACK ideal-int +pkg syscall (darwin-386), const NOTE_TRACKERR ideal-int +pkg syscall (darwin-386), const NOTE_TRIGGER ideal-int +pkg syscall (darwin-386), const NOTE_USECONDS ideal-int +pkg syscall (darwin-386), const NOTE_VM_ERROR ideal-int +pkg syscall (darwin-386), const NOTE_VM_PRESSURE ideal-int +pkg syscall (darwin-386), const NOTE_VM_PRESSURE_SUDDEN_TERMINATE ideal-int +pkg syscall (darwin-386), const NOTE_VM_PRESSURE_TERMINATE ideal-int +pkg syscall (darwin-386), const NOTE_WRITE ideal-int +pkg syscall (darwin-386), const O_ACCMODE ideal-int +pkg syscall (darwin-386), const O_ALERT ideal-int +pkg syscall (darwin-386), const O_DIRECTORY ideal-int +pkg syscall (darwin-386), const O_DSYNC ideal-int +pkg syscall (darwin-386), const O_EVTONLY ideal-int +pkg syscall (darwin-386), const O_EXLOCK ideal-int +pkg syscall (darwin-386), const O_FSYNC ideal-int +pkg syscall (darwin-386), const O_NDELAY ideal-int +pkg syscall (darwin-386), const O_NOFOLLOW ideal-int +pkg syscall (darwin-386), const O_POPUP ideal-int +pkg syscall (darwin-386), const O_SHLOCK ideal-int +pkg syscall (darwin-386), const O_SYMLINK ideal-int +pkg syscall (darwin-386), const PROT_EXEC ideal-int +pkg syscall (darwin-386), const PROT_NONE ideal-int +pkg syscall (darwin-386), const PROT_READ ideal-int +pkg syscall (darwin-386), const PROT_WRITE ideal-int +pkg syscall (darwin-386), const PTRACE_CONT ideal-int +pkg syscall (darwin-386), const PTRACE_KILL ideal-int +pkg syscall (darwin-386), const PTRACE_TRACEME ideal-int +pkg syscall (darwin-386), const PT_ATTACH ideal-int +pkg syscall (darwin-386), const PT_ATTACHEXC ideal-int +pkg syscall (darwin-386), const PT_CONTINUE ideal-int +pkg syscall (darwin-386), const PT_DENY_ATTACH ideal-int +pkg syscall (darwin-386), const PT_DETACH ideal-int +pkg syscall (darwin-386), const PT_FIRSTMACH ideal-int +pkg syscall (darwin-386), const PT_FORCEQUOTA ideal-int +pkg syscall (darwin-386), const PT_KILL ideal-int +pkg syscall (darwin-386), const PT_READ_D ideal-int +pkg syscall (darwin-386), const PT_READ_I ideal-int +pkg syscall (darwin-386), const PT_READ_U ideal-int +pkg syscall (darwin-386), const PT_SIGEXC ideal-int +pkg syscall (darwin-386), const PT_STEP ideal-int +pkg syscall (darwin-386), const PT_THUPDATE ideal-int +pkg syscall (darwin-386), const PT_TRACE_ME ideal-int +pkg syscall (darwin-386), const PT_WRITE_D ideal-int +pkg syscall (darwin-386), const PT_WRITE_I ideal-int +pkg syscall (darwin-386), const PT_WRITE_U ideal-int +pkg syscall (darwin-386), const RLIMIT_AS ideal-int +pkg syscall (darwin-386), const RLIMIT_CORE ideal-int +pkg syscall (darwin-386), const RLIMIT_CPU ideal-int +pkg syscall (darwin-386), const RLIMIT_DATA ideal-int +pkg syscall (darwin-386), const RLIMIT_FSIZE ideal-int +pkg syscall (darwin-386), const RLIMIT_NOFILE ideal-int +pkg syscall (darwin-386), const RLIMIT_STACK ideal-int +pkg syscall (darwin-386), const RLIM_INFINITY ideal-int +pkg syscall (darwin-386), const RTAX_AUTHOR ideal-int +pkg syscall (darwin-386), const RTAX_BRD ideal-int +pkg syscall (darwin-386), const RTAX_DST ideal-int +pkg syscall (darwin-386), const RTAX_GATEWAY ideal-int +pkg syscall (darwin-386), const RTAX_GENMASK ideal-int +pkg syscall (darwin-386), const RTAX_IFA ideal-int +pkg syscall (darwin-386), const RTAX_IFP ideal-int +pkg syscall (darwin-386), const RTAX_MAX ideal-int +pkg syscall (darwin-386), const RTAX_NETMASK ideal-int +pkg syscall (darwin-386), const RTA_AUTHOR ideal-int +pkg syscall (darwin-386), const RTA_BRD ideal-int +pkg syscall (darwin-386), const RTA_DST ideal-int +pkg syscall (darwin-386), const RTA_GATEWAY ideal-int +pkg syscall (darwin-386), const RTA_GENMASK ideal-int +pkg syscall (darwin-386), const RTA_IFA ideal-int +pkg syscall (darwin-386), const RTA_IFP ideal-int +pkg syscall (darwin-386), const RTA_NETMASK ideal-int +pkg syscall (darwin-386), const RTF_BLACKHOLE ideal-int +pkg syscall (darwin-386), const RTF_BROADCAST ideal-int +pkg syscall (darwin-386), const RTF_CLONING ideal-int +pkg syscall (darwin-386), const RTF_CONDEMNED ideal-int +pkg syscall (darwin-386), const RTF_DELCLONE ideal-int +pkg syscall (darwin-386), const RTF_DONE ideal-int +pkg syscall (darwin-386), const RTF_DYNAMIC ideal-int +pkg syscall (darwin-386), const RTF_GATEWAY ideal-int +pkg syscall (darwin-386), const RTF_HOST ideal-int +pkg syscall (darwin-386), const RTF_IFREF ideal-int +pkg syscall (darwin-386), const RTF_IFSCOPE ideal-int +pkg syscall (darwin-386), const RTF_LLINFO ideal-int +pkg syscall (darwin-386), const RTF_LOCAL ideal-int +pkg syscall (darwin-386), const RTF_MODIFIED ideal-int +pkg syscall (darwin-386), const RTF_MULTICAST ideal-int +pkg syscall (darwin-386), const RTF_PINNED ideal-int +pkg syscall (darwin-386), const RTF_PRCLONING ideal-int +pkg syscall (darwin-386), const RTF_PROTO1 ideal-int +pkg syscall (darwin-386), const RTF_PROTO2 ideal-int +pkg syscall (darwin-386), const RTF_PROTO3 ideal-int +pkg syscall (darwin-386), const RTF_REJECT ideal-int +pkg syscall (darwin-386), const RTF_STATIC ideal-int +pkg syscall (darwin-386), const RTF_UP ideal-int +pkg syscall (darwin-386), const RTF_WASCLONED ideal-int +pkg syscall (darwin-386), const RTF_XRESOLVE ideal-int +pkg syscall (darwin-386), const RTM_ADD ideal-int +pkg syscall (darwin-386), const RTM_CHANGE ideal-int +pkg syscall (darwin-386), const RTM_DELADDR ideal-int +pkg syscall (darwin-386), const RTM_DELETE ideal-int +pkg syscall (darwin-386), const RTM_DELMADDR ideal-int +pkg syscall (darwin-386), const RTM_GET ideal-int +pkg syscall (darwin-386), const RTM_GET2 ideal-int +pkg syscall (darwin-386), const RTM_IFINFO ideal-int +pkg syscall (darwin-386), const RTM_IFINFO2 ideal-int +pkg syscall (darwin-386), const RTM_LOCK ideal-int +pkg syscall (darwin-386), const RTM_LOSING ideal-int +pkg syscall (darwin-386), const RTM_MISS ideal-int +pkg syscall (darwin-386), const RTM_NEWADDR ideal-int +pkg syscall (darwin-386), const RTM_NEWMADDR ideal-int +pkg syscall (darwin-386), const RTM_NEWMADDR2 ideal-int +pkg syscall (darwin-386), const RTM_OLDADD ideal-int +pkg syscall (darwin-386), const RTM_OLDDEL ideal-int +pkg syscall (darwin-386), const RTM_REDIRECT ideal-int +pkg syscall (darwin-386), const RTM_RESOLVE ideal-int +pkg syscall (darwin-386), const RTM_RTTUNIT ideal-int +pkg syscall (darwin-386), const RTM_VERSION ideal-int +pkg syscall (darwin-386), const RTV_EXPIRE ideal-int +pkg syscall (darwin-386), const RTV_HOPCOUNT ideal-int +pkg syscall (darwin-386), const RTV_MTU ideal-int +pkg syscall (darwin-386), const RTV_RPIPE ideal-int +pkg syscall (darwin-386), const RTV_RTT ideal-int +pkg syscall (darwin-386), const RTV_RTTVAR ideal-int +pkg syscall (darwin-386), const RTV_SPIPE ideal-int +pkg syscall (darwin-386), const RTV_SSTHRESH ideal-int +pkg syscall (darwin-386), const RUSAGE_CHILDREN ideal-int +pkg syscall (darwin-386), const RUSAGE_SELF ideal-int +pkg syscall (darwin-386), const SCM_CREDS ideal-int +pkg syscall (darwin-386), const SCM_RIGHTS ideal-int +pkg syscall (darwin-386), const SCM_TIMESTAMP ideal-int +pkg syscall (darwin-386), const SCM_TIMESTAMP_MONOTONIC ideal-int +pkg syscall (darwin-386), const SIGCHLD Signal +pkg syscall (darwin-386), const SIGCONT Signal +pkg syscall (darwin-386), const SIGEMT Signal +pkg syscall (darwin-386), const SIGINFO Signal +pkg syscall (darwin-386), const SIGIO Signal +pkg syscall (darwin-386), const SIGIOT Signal +pkg syscall (darwin-386), const SIGPROF Signal +pkg syscall (darwin-386), const SIGSTOP Signal +pkg syscall (darwin-386), const SIGSYS Signal +pkg syscall (darwin-386), const SIGTSTP Signal +pkg syscall (darwin-386), const SIGTTIN Signal +pkg syscall (darwin-386), const SIGTTOU Signal +pkg syscall (darwin-386), const SIGURG Signal +pkg syscall (darwin-386), const SIGUSR1 Signal +pkg syscall (darwin-386), const SIGUSR2 Signal +pkg syscall (darwin-386), const SIGVTALRM Signal +pkg syscall (darwin-386), const SIGWINCH Signal +pkg syscall (darwin-386), const SIGXCPU Signal +pkg syscall (darwin-386), const SIGXFSZ Signal +pkg syscall (darwin-386), const SIOCADDMULTI ideal-int +pkg syscall (darwin-386), const SIOCAIFADDR ideal-int +pkg syscall (darwin-386), const SIOCALIFADDR ideal-int +pkg syscall (darwin-386), const SIOCARPIPLL ideal-int +pkg syscall (darwin-386), const SIOCATMARK ideal-int +pkg syscall (darwin-386), const SIOCAUTOADDR ideal-int +pkg syscall (darwin-386), const SIOCAUTONETMASK ideal-int +pkg syscall (darwin-386), const SIOCDELMULTI ideal-int +pkg syscall (darwin-386), const SIOCDIFADDR ideal-int +pkg syscall (darwin-386), const SIOCDIFPHYADDR ideal-int +pkg syscall (darwin-386), const SIOCDLIFADDR ideal-int +pkg syscall (darwin-386), const SIOCGDRVSPEC ideal-int +pkg syscall (darwin-386), const SIOCGETSGCNT ideal-int +pkg syscall (darwin-386), const SIOCGETVIFCNT ideal-int +pkg syscall (darwin-386), const SIOCGETVLAN ideal-int +pkg syscall (darwin-386), const SIOCGHIWAT ideal-int +pkg syscall (darwin-386), const SIOCGIFADDR ideal-int +pkg syscall (darwin-386), const SIOCGIFALTMTU ideal-int +pkg syscall (darwin-386), const SIOCGIFASYNCMAP ideal-int +pkg syscall (darwin-386), const SIOCGIFBOND ideal-int +pkg syscall (darwin-386), const SIOCGIFBRDADDR ideal-int +pkg syscall (darwin-386), const SIOCGIFCAP ideal-int +pkg syscall (darwin-386), const SIOCGIFCONF ideal-int +pkg syscall (darwin-386), const SIOCGIFDEVMTU ideal-int +pkg syscall (darwin-386), const SIOCGIFDSTADDR ideal-int +pkg syscall (darwin-386), const SIOCGIFFLAGS ideal-int +pkg syscall (darwin-386), const SIOCGIFGENERIC ideal-int +pkg syscall (darwin-386), const SIOCGIFKPI ideal-int +pkg syscall (darwin-386), const SIOCGIFMAC ideal-int +pkg syscall (darwin-386), const SIOCGIFMEDIA ideal-int +pkg syscall (darwin-386), const SIOCGIFMETRIC ideal-int +pkg syscall (darwin-386), const SIOCGIFMTU ideal-int +pkg syscall (darwin-386), const SIOCGIFNETMASK ideal-int +pkg syscall (darwin-386), const SIOCGIFPDSTADDR ideal-int +pkg syscall (darwin-386), const SIOCGIFPHYS ideal-int +pkg syscall (darwin-386), const SIOCGIFPSRCADDR ideal-int +pkg syscall (darwin-386), const SIOCGIFSTATUS ideal-int +pkg syscall (darwin-386), const SIOCGIFVLAN ideal-int +pkg syscall (darwin-386), const SIOCGIFWAKEFLAGS ideal-int +pkg syscall (darwin-386), const SIOCGLIFADDR ideal-int +pkg syscall (darwin-386), const SIOCGLIFPHYADDR ideal-int +pkg syscall (darwin-386), const SIOCGLOWAT ideal-int +pkg syscall (darwin-386), const SIOCGPGRP ideal-int +pkg syscall (darwin-386), const SIOCIFCREATE ideal-int +pkg syscall (darwin-386), const SIOCIFCREATE2 ideal-int +pkg syscall (darwin-386), const SIOCIFDESTROY ideal-int +pkg syscall (darwin-386), const SIOCRSLVMULTI ideal-int +pkg syscall (darwin-386), const SIOCSDRVSPEC ideal-int +pkg syscall (darwin-386), const SIOCSETVLAN ideal-int +pkg syscall (darwin-386), const SIOCSHIWAT ideal-int +pkg syscall (darwin-386), const SIOCSIFADDR ideal-int +pkg syscall (darwin-386), const SIOCSIFALTMTU ideal-int +pkg syscall (darwin-386), const SIOCSIFASYNCMAP ideal-int +pkg syscall (darwin-386), const SIOCSIFBOND ideal-int +pkg syscall (darwin-386), const SIOCSIFBRDADDR ideal-int +pkg syscall (darwin-386), const SIOCSIFCAP ideal-int +pkg syscall (darwin-386), const SIOCSIFDSTADDR ideal-int +pkg syscall (darwin-386), const SIOCSIFFLAGS ideal-int +pkg syscall (darwin-386), const SIOCSIFGENERIC ideal-int +pkg syscall (darwin-386), const SIOCSIFKPI ideal-int +pkg syscall (darwin-386), const SIOCSIFLLADDR ideal-int +pkg syscall (darwin-386), const SIOCSIFMAC ideal-int +pkg syscall (darwin-386), const SIOCSIFMEDIA ideal-int +pkg syscall (darwin-386), const SIOCSIFMETRIC ideal-int +pkg syscall (darwin-386), const SIOCSIFMTU ideal-int +pkg syscall (darwin-386), const SIOCSIFNETMASK ideal-int +pkg syscall (darwin-386), const SIOCSIFPHYADDR ideal-int +pkg syscall (darwin-386), const SIOCSIFPHYS ideal-int +pkg syscall (darwin-386), const SIOCSIFVLAN ideal-int +pkg syscall (darwin-386), const SIOCSLIFPHYADDR ideal-int +pkg syscall (darwin-386), const SIOCSLOWAT ideal-int +pkg syscall (darwin-386), const SIOCSPGRP ideal-int +pkg syscall (darwin-386), const SOCK_MAXADDRLEN ideal-int +pkg syscall (darwin-386), const SOCK_RDM ideal-int +pkg syscall (darwin-386), const SO_ACCEPTCONN ideal-int +pkg syscall (darwin-386), const SO_DEBUG ideal-int +pkg syscall (darwin-386), const SO_DONTTRUNC ideal-int +pkg syscall (darwin-386), const SO_ERROR ideal-int +pkg syscall (darwin-386), const SO_LABEL ideal-int +pkg syscall (darwin-386), const SO_LINGER_SEC ideal-int +pkg syscall (darwin-386), const SO_NKE ideal-int +pkg syscall (darwin-386), const SO_NOADDRERR ideal-int +pkg syscall (darwin-386), const SO_NOSIGPIPE ideal-int +pkg syscall (darwin-386), const SO_NOTIFYCONFLICT ideal-int +pkg syscall (darwin-386), const SO_NP_EXTENSIONS ideal-int +pkg syscall (darwin-386), const SO_NREAD ideal-int +pkg syscall (darwin-386), const SO_NWRITE ideal-int +pkg syscall (darwin-386), const SO_OOBINLINE ideal-int +pkg syscall (darwin-386), const SO_PEERLABEL ideal-int +pkg syscall (darwin-386), const SO_RANDOMPORT ideal-int +pkg syscall (darwin-386), const SO_RCVLOWAT ideal-int +pkg syscall (darwin-386), const SO_RCVTIMEO ideal-int +pkg syscall (darwin-386), const SO_RESTRICTIONS ideal-int +pkg syscall (darwin-386), const SO_RESTRICT_DENYIN ideal-int +pkg syscall (darwin-386), const SO_RESTRICT_DENYOUT ideal-int +pkg syscall (darwin-386), const SO_RESTRICT_DENYSET ideal-int +pkg syscall (darwin-386), const SO_REUSEPORT ideal-int +pkg syscall (darwin-386), const SO_REUSESHAREUID ideal-int +pkg syscall (darwin-386), const SO_SNDLOWAT ideal-int +pkg syscall (darwin-386), const SO_SNDTIMEO ideal-int +pkg syscall (darwin-386), const SO_TIMESTAMP ideal-int +pkg syscall (darwin-386), const SO_TIMESTAMP_MONOTONIC ideal-int +pkg syscall (darwin-386), const SO_TYPE ideal-int +pkg syscall (darwin-386), const SO_UPCALLCLOSEWAIT ideal-int +pkg syscall (darwin-386), const SO_USELOOPBACK ideal-int +pkg syscall (darwin-386), const SO_WANTMORE ideal-int +pkg syscall (darwin-386), const SO_WANTOOBFLAG ideal-int +pkg syscall (darwin-386), const SYS_ACCEPT ideal-int +pkg syscall (darwin-386), const SYS_ACCEPT_NOCANCEL ideal-int +pkg syscall (darwin-386), const SYS_ACCESS ideal-int +pkg syscall (darwin-386), const SYS_ACCESS_EXTENDED ideal-int +pkg syscall (darwin-386), const SYS_ACCT ideal-int +pkg syscall (darwin-386), const SYS_ADD_PROFIL ideal-int +pkg syscall (darwin-386), const SYS_ADJTIME ideal-int +pkg syscall (darwin-386), const SYS_AIO_CANCEL ideal-int +pkg syscall (darwin-386), const SYS_AIO_ERROR ideal-int +pkg syscall (darwin-386), const SYS_AIO_FSYNC ideal-int +pkg syscall (darwin-386), const SYS_AIO_READ ideal-int +pkg syscall (darwin-386), const SYS_AIO_RETURN ideal-int +pkg syscall (darwin-386), const SYS_AIO_SUSPEND ideal-int +pkg syscall (darwin-386), const SYS_AIO_SUSPEND_NOCANCEL ideal-int +pkg syscall (darwin-386), const SYS_AIO_WRITE ideal-int +pkg syscall (darwin-386), const SYS_ATGETMSG ideal-int +pkg syscall (darwin-386), const SYS_ATPGETREQ ideal-int +pkg syscall (darwin-386), const SYS_ATPGETRSP ideal-int +pkg syscall (darwin-386), const SYS_ATPSNDREQ ideal-int +pkg syscall (darwin-386), const SYS_ATPSNDRSP ideal-int +pkg syscall (darwin-386), const SYS_ATPUTMSG ideal-int +pkg syscall (darwin-386), const SYS_ATSOCKET ideal-int +pkg syscall (darwin-386), const SYS_AUDIT ideal-int +pkg syscall (darwin-386), const SYS_AUDITCTL ideal-int +pkg syscall (darwin-386), const SYS_AUDITON ideal-int +pkg syscall (darwin-386), const SYS_AUDIT_SESSION_JOIN ideal-int +pkg syscall (darwin-386), const SYS_AUDIT_SESSION_PORT ideal-int +pkg syscall (darwin-386), const SYS_AUDIT_SESSION_SELF ideal-int +pkg syscall (darwin-386), const SYS_BIND ideal-int +pkg syscall (darwin-386), const SYS_BSDTHREAD_CREATE ideal-int +pkg syscall (darwin-386), const SYS_BSDTHREAD_REGISTER ideal-int +pkg syscall (darwin-386), const SYS_BSDTHREAD_TERMINATE ideal-int +pkg syscall (darwin-386), const SYS_CHDIR ideal-int +pkg syscall (darwin-386), const SYS_CHFLAGS ideal-int +pkg syscall (darwin-386), const SYS_CHMOD ideal-int +pkg syscall (darwin-386), const SYS_CHMOD_EXTENDED ideal-int +pkg syscall (darwin-386), const SYS_CHOWN ideal-int +pkg syscall (darwin-386), const SYS_CHROOT ideal-int +pkg syscall (darwin-386), const SYS_CHUD ideal-int +pkg syscall (darwin-386), const SYS_CLOSE ideal-int +pkg syscall (darwin-386), const SYS_CLOSE_NOCANCEL ideal-int +pkg syscall (darwin-386), const SYS_CONNECT ideal-int +pkg syscall (darwin-386), const SYS_CONNECT_NOCANCEL ideal-int +pkg syscall (darwin-386), const SYS_COPYFILE ideal-int +pkg syscall (darwin-386), const SYS_CSOPS ideal-int +pkg syscall (darwin-386), const SYS_DELETE ideal-int +pkg syscall (darwin-386), const SYS_DUP ideal-int +pkg syscall (darwin-386), const SYS_DUP2 ideal-int +pkg syscall (darwin-386), const SYS_EXCHANGEDATA ideal-int +pkg syscall (darwin-386), const SYS_EXECVE ideal-int +pkg syscall (darwin-386), const SYS_EXIT ideal-int +pkg syscall (darwin-386), const SYS_FCHDIR ideal-int +pkg syscall (darwin-386), const SYS_FCHFLAGS ideal-int +pkg syscall (darwin-386), const SYS_FCHMOD ideal-int +pkg syscall (darwin-386), const SYS_FCHMOD_EXTENDED ideal-int +pkg syscall (darwin-386), const SYS_FCHOWN ideal-int +pkg syscall (darwin-386), const SYS_FCNTL ideal-int +pkg syscall (darwin-386), const SYS_FCNTL_NOCANCEL ideal-int +pkg syscall (darwin-386), const SYS_FDATASYNC ideal-int +pkg syscall (darwin-386), const SYS_FFSCTL ideal-int +pkg syscall (darwin-386), const SYS_FGETATTRLIST ideal-int +pkg syscall (darwin-386), const SYS_FGETXATTR ideal-int +pkg syscall (darwin-386), const SYS_FHOPEN ideal-int +pkg syscall (darwin-386), const SYS_FILEPORT_MAKEFD ideal-int +pkg syscall (darwin-386), const SYS_FILEPORT_MAKEPORT ideal-int +pkg syscall (darwin-386), const SYS_FLISTXATTR ideal-int +pkg syscall (darwin-386), const SYS_FLOCK ideal-int +pkg syscall (darwin-386), const SYS_FORK ideal-int +pkg syscall (darwin-386), const SYS_FPATHCONF ideal-int +pkg syscall (darwin-386), const SYS_FREMOVEXATTR ideal-int +pkg syscall (darwin-386), const SYS_FSCTL ideal-int +pkg syscall (darwin-386), const SYS_FSETATTRLIST ideal-int +pkg syscall (darwin-386), const SYS_FSETXATTR ideal-int +pkg syscall (darwin-386), const SYS_FSGETPATH ideal-int +pkg syscall (darwin-386), const SYS_FSTAT ideal-int +pkg syscall (darwin-386), const SYS_FSTAT64 ideal-int +pkg syscall (darwin-386), const SYS_FSTAT64_EXTENDED ideal-int +pkg syscall (darwin-386), const SYS_FSTATFS ideal-int +pkg syscall (darwin-386), const SYS_FSTATFS64 ideal-int +pkg syscall (darwin-386), const SYS_FSTATV ideal-int +pkg syscall (darwin-386), const SYS_FSTAT_EXTENDED ideal-int +pkg syscall (darwin-386), const SYS_FSYNC ideal-int +pkg syscall (darwin-386), const SYS_FSYNC_NOCANCEL ideal-int +pkg syscall (darwin-386), const SYS_FTRUNCATE ideal-int +pkg syscall (darwin-386), const SYS_FUTIMES ideal-int +pkg syscall (darwin-386), const SYS_GETATTRLIST ideal-int +pkg syscall (darwin-386), const SYS_GETAUDIT ideal-int +pkg syscall (darwin-386), const SYS_GETAUDIT_ADDR ideal-int +pkg syscall (darwin-386), const SYS_GETAUID ideal-int +pkg syscall (darwin-386), const SYS_GETDIRENTRIES ideal-int +pkg syscall (darwin-386), const SYS_GETDIRENTRIES64 ideal-int +pkg syscall (darwin-386), const SYS_GETDIRENTRIESATTR ideal-int +pkg syscall (darwin-386), const SYS_GETDTABLESIZE ideal-int +pkg syscall (darwin-386), const SYS_GETEGID ideal-int +pkg syscall (darwin-386), const SYS_GETEUID ideal-int +pkg syscall (darwin-386), const SYS_GETFH ideal-int +pkg syscall (darwin-386), const SYS_GETFSSTAT ideal-int +pkg syscall (darwin-386), const SYS_GETFSSTAT64 ideal-int +pkg syscall (darwin-386), const SYS_GETGID ideal-int +pkg syscall (darwin-386), const SYS_GETGROUPS ideal-int +pkg syscall (darwin-386), const SYS_GETHOSTUUID ideal-int +pkg syscall (darwin-386), const SYS_GETITIMER ideal-int +pkg syscall (darwin-386), const SYS_GETLCID ideal-int +pkg syscall (darwin-386), const SYS_GETLOGIN ideal-int +pkg syscall (darwin-386), const SYS_GETPEERNAME ideal-int +pkg syscall (darwin-386), const SYS_GETPGID ideal-int +pkg syscall (darwin-386), const SYS_GETPGRP ideal-int +pkg syscall (darwin-386), const SYS_GETPID ideal-int +pkg syscall (darwin-386), const SYS_GETPPID ideal-int +pkg syscall (darwin-386), const SYS_GETPRIORITY ideal-int +pkg syscall (darwin-386), const SYS_GETRLIMIT ideal-int +pkg syscall (darwin-386), const SYS_GETRUSAGE ideal-int +pkg syscall (darwin-386), const SYS_GETSGROUPS ideal-int +pkg syscall (darwin-386), const SYS_GETSID ideal-int +pkg syscall (darwin-386), const SYS_GETSOCKNAME ideal-int +pkg syscall (darwin-386), const SYS_GETSOCKOPT ideal-int +pkg syscall (darwin-386), const SYS_GETTID ideal-int +pkg syscall (darwin-386), const SYS_GETTIMEOFDAY ideal-int +pkg syscall (darwin-386), const SYS_GETUID ideal-int +pkg syscall (darwin-386), const SYS_GETWGROUPS ideal-int +pkg syscall (darwin-386), const SYS_GETXATTR ideal-int +pkg syscall (darwin-386), const SYS_IDENTITYSVC ideal-int +pkg syscall (darwin-386), const SYS_INITGROUPS ideal-int +pkg syscall (darwin-386), const SYS_IOCTL ideal-int +pkg syscall (darwin-386), const SYS_IOPOLICYSYS ideal-int +pkg syscall (darwin-386), const SYS_ISSETUGID ideal-int +pkg syscall (darwin-386), const SYS_KDEBUG_TRACE ideal-int +pkg syscall (darwin-386), const SYS_KEVENT ideal-int +pkg syscall (darwin-386), const SYS_KEVENT64 ideal-int +pkg syscall (darwin-386), const SYS_KILL ideal-int +pkg syscall (darwin-386), const SYS_KQUEUE ideal-int +pkg syscall (darwin-386), const SYS_LCHOWN ideal-int +pkg syscall (darwin-386), const SYS_LINK ideal-int +pkg syscall (darwin-386), const SYS_LIO_LISTIO ideal-int +pkg syscall (darwin-386), const SYS_LISTEN ideal-int +pkg syscall (darwin-386), const SYS_LISTXATTR ideal-int +pkg syscall (darwin-386), const SYS_LSEEK ideal-int +pkg syscall (darwin-386), const SYS_LSTAT ideal-int +pkg syscall (darwin-386), const SYS_LSTAT64 ideal-int +pkg syscall (darwin-386), const SYS_LSTAT64_EXTENDED ideal-int +pkg syscall (darwin-386), const SYS_LSTATV ideal-int +pkg syscall (darwin-386), const SYS_LSTAT_EXTENDED ideal-int +pkg syscall (darwin-386), const SYS_MADVISE ideal-int +pkg syscall (darwin-386), const SYS_MAXSYSCALL ideal-int +pkg syscall (darwin-386), const SYS_MINCORE ideal-int +pkg syscall (darwin-386), const SYS_MINHERIT ideal-int +pkg syscall (darwin-386), const SYS_MKCOMPLEX ideal-int +pkg syscall (darwin-386), const SYS_MKDIR ideal-int +pkg syscall (darwin-386), const SYS_MKDIR_EXTENDED ideal-int +pkg syscall (darwin-386), const SYS_MKFIFO ideal-int +pkg syscall (darwin-386), const SYS_MKFIFO_EXTENDED ideal-int +pkg syscall (darwin-386), const SYS_MKNOD ideal-int +pkg syscall (darwin-386), const SYS_MLOCK ideal-int +pkg syscall (darwin-386), const SYS_MLOCKALL ideal-int +pkg syscall (darwin-386), const SYS_MMAP ideal-int +pkg syscall (darwin-386), const SYS_MODWATCH ideal-int +pkg syscall (darwin-386), const SYS_MOUNT ideal-int +pkg syscall (darwin-386), const SYS_MPROTECT ideal-int +pkg syscall (darwin-386), const SYS_MSGCTL ideal-int +pkg syscall (darwin-386), const SYS_MSGGET ideal-int +pkg syscall (darwin-386), const SYS_MSGRCV ideal-int +pkg syscall (darwin-386), const SYS_MSGRCV_NOCANCEL ideal-int +pkg syscall (darwin-386), const SYS_MSGSND ideal-int +pkg syscall (darwin-386), const SYS_MSGSND_NOCANCEL ideal-int +pkg syscall (darwin-386), const SYS_MSGSYS ideal-int +pkg syscall (darwin-386), const SYS_MSYNC ideal-int +pkg syscall (darwin-386), const SYS_MSYNC_NOCANCEL ideal-int +pkg syscall (darwin-386), const SYS_MUNLOCK ideal-int +pkg syscall (darwin-386), const SYS_MUNLOCKALL ideal-int +pkg syscall (darwin-386), const SYS_MUNMAP ideal-int +pkg syscall (darwin-386), const SYS_NFSCLNT ideal-int +pkg syscall (darwin-386), const SYS_NFSSVC ideal-int +pkg syscall (darwin-386), const SYS_OPEN ideal-int +pkg syscall (darwin-386), const SYS_OPEN_EXTENDED ideal-int +pkg syscall (darwin-386), const SYS_OPEN_NOCANCEL ideal-int +pkg syscall (darwin-386), const SYS_PATHCONF ideal-int +pkg syscall (darwin-386), const SYS_PID_HIBERNATE ideal-int +pkg syscall (darwin-386), const SYS_PID_RESUME ideal-int +pkg syscall (darwin-386), const SYS_PID_SHUTDOWN_SOCKETS ideal-int +pkg syscall (darwin-386), const SYS_PID_SUSPEND ideal-int +pkg syscall (darwin-386), const SYS_PIPE ideal-int +pkg syscall (darwin-386), const SYS_POLL ideal-int +pkg syscall (darwin-386), const SYS_POLL_NOCANCEL ideal-int +pkg syscall (darwin-386), const SYS_POSIX_SPAWN ideal-int +pkg syscall (darwin-386), const SYS_PREAD ideal-int +pkg syscall (darwin-386), const SYS_PREAD_NOCANCEL ideal-int +pkg syscall (darwin-386), const SYS_PROCESS_POLICY ideal-int +pkg syscall (darwin-386), const SYS_PROC_INFO ideal-int +pkg syscall (darwin-386), const SYS_PROFIL ideal-int +pkg syscall (darwin-386), const SYS_PSYNCH_CVBROAD ideal-int +pkg syscall (darwin-386), const SYS_PSYNCH_CVCLRPREPOST ideal-int +pkg syscall (darwin-386), const SYS_PSYNCH_CVSIGNAL ideal-int +pkg syscall (darwin-386), const SYS_PSYNCH_CVWAIT ideal-int +pkg syscall (darwin-386), const SYS_PSYNCH_MUTEXDROP ideal-int +pkg syscall (darwin-386), const SYS_PSYNCH_MUTEXWAIT ideal-int +pkg syscall (darwin-386), const SYS_PSYNCH_RW_DOWNGRADE ideal-int +pkg syscall (darwin-386), const SYS_PSYNCH_RW_LONGRDLOCK ideal-int +pkg syscall (darwin-386), const SYS_PSYNCH_RW_RDLOCK ideal-int +pkg syscall (darwin-386), const SYS_PSYNCH_RW_UNLOCK ideal-int +pkg syscall (darwin-386), const SYS_PSYNCH_RW_UNLOCK2 ideal-int +pkg syscall (darwin-386), const SYS_PSYNCH_RW_UPGRADE ideal-int +pkg syscall (darwin-386), const SYS_PSYNCH_RW_WRLOCK ideal-int +pkg syscall (darwin-386), const SYS_PSYNCH_RW_YIELDWRLOCK ideal-int +pkg syscall (darwin-386), const SYS_PTRACE ideal-int +pkg syscall (darwin-386), const SYS_PWRITE ideal-int +pkg syscall (darwin-386), const SYS_PWRITE_NOCANCEL ideal-int +pkg syscall (darwin-386), const SYS_QUOTACTL ideal-int +pkg syscall (darwin-386), const SYS_READ ideal-int +pkg syscall (darwin-386), const SYS_READLINK ideal-int +pkg syscall (darwin-386), const SYS_READV ideal-int +pkg syscall (darwin-386), const SYS_READV_NOCANCEL ideal-int +pkg syscall (darwin-386), const SYS_READ_NOCANCEL ideal-int +pkg syscall (darwin-386), const SYS_REBOOT ideal-int +pkg syscall (darwin-386), const SYS_RECVFROM ideal-int +pkg syscall (darwin-386), const SYS_RECVFROM_NOCANCEL ideal-int +pkg syscall (darwin-386), const SYS_RECVMSG ideal-int +pkg syscall (darwin-386), const SYS_RECVMSG_NOCANCEL ideal-int +pkg syscall (darwin-386), const SYS_REMOVEXATTR ideal-int +pkg syscall (darwin-386), const SYS_RENAME ideal-int +pkg syscall (darwin-386), const SYS_REVOKE ideal-int +pkg syscall (darwin-386), const SYS_RMDIR ideal-int +pkg syscall (darwin-386), const SYS_SEARCHFS ideal-int +pkg syscall (darwin-386), const SYS_SELECT ideal-int +pkg syscall (darwin-386), const SYS_SELECT_NOCANCEL ideal-int +pkg syscall (darwin-386), const SYS_SEMCTL ideal-int +pkg syscall (darwin-386), const SYS_SEMGET ideal-int +pkg syscall (darwin-386), const SYS_SEMOP ideal-int +pkg syscall (darwin-386), const SYS_SEMSYS ideal-int +pkg syscall (darwin-386), const SYS_SEM_CLOSE ideal-int +pkg syscall (darwin-386), const SYS_SEM_DESTROY ideal-int +pkg syscall (darwin-386), const SYS_SEM_GETVALUE ideal-int +pkg syscall (darwin-386), const SYS_SEM_INIT ideal-int +pkg syscall (darwin-386), const SYS_SEM_OPEN ideal-int +pkg syscall (darwin-386), const SYS_SEM_POST ideal-int +pkg syscall (darwin-386), const SYS_SEM_TRYWAIT ideal-int +pkg syscall (darwin-386), const SYS_SEM_UNLINK ideal-int +pkg syscall (darwin-386), const SYS_SEM_WAIT ideal-int +pkg syscall (darwin-386), const SYS_SEM_WAIT_NOCANCEL ideal-int +pkg syscall (darwin-386), const SYS_SENDFILE ideal-int +pkg syscall (darwin-386), const SYS_SENDMSG ideal-int +pkg syscall (darwin-386), const SYS_SENDMSG_NOCANCEL ideal-int +pkg syscall (darwin-386), const SYS_SENDTO ideal-int +pkg syscall (darwin-386), const SYS_SENDTO_NOCANCEL ideal-int +pkg syscall (darwin-386), const SYS_SETATTRLIST ideal-int +pkg syscall (darwin-386), const SYS_SETAUDIT ideal-int +pkg syscall (darwin-386), const SYS_SETAUDIT_ADDR ideal-int +pkg syscall (darwin-386), const SYS_SETAUID ideal-int +pkg syscall (darwin-386), const SYS_SETEGID ideal-int +pkg syscall (darwin-386), const SYS_SETEUID ideal-int +pkg syscall (darwin-386), const SYS_SETGID ideal-int +pkg syscall (darwin-386), const SYS_SETGROUPS ideal-int +pkg syscall (darwin-386), const SYS_SETITIMER ideal-int +pkg syscall (darwin-386), const SYS_SETLCID ideal-int +pkg syscall (darwin-386), const SYS_SETLOGIN ideal-int +pkg syscall (darwin-386), const SYS_SETPGID ideal-int +pkg syscall (darwin-386), const SYS_SETPRIORITY ideal-int +pkg syscall (darwin-386), const SYS_SETPRIVEXEC ideal-int +pkg syscall (darwin-386), const SYS_SETREGID ideal-int +pkg syscall (darwin-386), const SYS_SETREUID ideal-int +pkg syscall (darwin-386), const SYS_SETRLIMIT ideal-int +pkg syscall (darwin-386), const SYS_SETSGROUPS ideal-int +pkg syscall (darwin-386), const SYS_SETSID ideal-int +pkg syscall (darwin-386), const SYS_SETSOCKOPT ideal-int +pkg syscall (darwin-386), const SYS_SETTID ideal-int +pkg syscall (darwin-386), const SYS_SETTID_WITH_PID ideal-int +pkg syscall (darwin-386), const SYS_SETTIMEOFDAY ideal-int +pkg syscall (darwin-386), const SYS_SETUID ideal-int +pkg syscall (darwin-386), const SYS_SETWGROUPS ideal-int +pkg syscall (darwin-386), const SYS_SETXATTR ideal-int +pkg syscall (darwin-386), const SYS_SHARED_REGION_CHECK_NP ideal-int +pkg syscall (darwin-386), const SYS_SHARED_REGION_MAP_AND_SLIDE_NP ideal-int +pkg syscall (darwin-386), const SYS_SHMAT ideal-int +pkg syscall (darwin-386), const SYS_SHMCTL ideal-int +pkg syscall (darwin-386), const SYS_SHMDT ideal-int +pkg syscall (darwin-386), const SYS_SHMGET ideal-int +pkg syscall (darwin-386), const SYS_SHMSYS ideal-int +pkg syscall (darwin-386), const SYS_SHM_OPEN ideal-int +pkg syscall (darwin-386), const SYS_SHM_UNLINK ideal-int +pkg syscall (darwin-386), const SYS_SHUTDOWN ideal-int +pkg syscall (darwin-386), const SYS_SIGACTION ideal-int +pkg syscall (darwin-386), const SYS_SIGALTSTACK ideal-int +pkg syscall (darwin-386), const SYS_SIGPENDING ideal-int +pkg syscall (darwin-386), const SYS_SIGPROCMASK ideal-int +pkg syscall (darwin-386), const SYS_SIGRETURN ideal-int +pkg syscall (darwin-386), const SYS_SIGSUSPEND ideal-int +pkg syscall (darwin-386), const SYS_SIGSUSPEND_NOCANCEL ideal-int +pkg syscall (darwin-386), const SYS_SOCKET ideal-int +pkg syscall (darwin-386), const SYS_SOCKETPAIR ideal-int +pkg syscall (darwin-386), const SYS_STACK_SNAPSHOT ideal-int +pkg syscall (darwin-386), const SYS_STAT ideal-int +pkg syscall (darwin-386), const SYS_STAT64 ideal-int +pkg syscall (darwin-386), const SYS_STAT64_EXTENDED ideal-int +pkg syscall (darwin-386), const SYS_STATFS ideal-int +pkg syscall (darwin-386), const SYS_STATFS64 ideal-int +pkg syscall (darwin-386), const SYS_STATV ideal-int +pkg syscall (darwin-386), const SYS_STAT_EXTENDED ideal-int +pkg syscall (darwin-386), const SYS_SWAPON ideal-int +pkg syscall (darwin-386), const SYS_SYMLINK ideal-int +pkg syscall (darwin-386), const SYS_SYNC ideal-int +pkg syscall (darwin-386), const SYS_SYSCALL ideal-int +pkg syscall (darwin-386), const SYS_THREAD_SELFID ideal-int +pkg syscall (darwin-386), const SYS_TRUNCATE ideal-int +pkg syscall (darwin-386), const SYS_UMASK ideal-int +pkg syscall (darwin-386), const SYS_UMASK_EXTENDED ideal-int +pkg syscall (darwin-386), const SYS_UNDELETE ideal-int +pkg syscall (darwin-386), const SYS_UNLINK ideal-int +pkg syscall (darwin-386), const SYS_UNMOUNT ideal-int +pkg syscall (darwin-386), const SYS_UTIMES ideal-int +pkg syscall (darwin-386), const SYS_VFORK ideal-int +pkg syscall (darwin-386), const SYS_VM_PRESSURE_MONITOR ideal-int +pkg syscall (darwin-386), const SYS_WAIT4 ideal-int +pkg syscall (darwin-386), const SYS_WAIT4_NOCANCEL ideal-int +pkg syscall (darwin-386), const SYS_WAITEVENT ideal-int +pkg syscall (darwin-386), const SYS_WAITID ideal-int +pkg syscall (darwin-386), const SYS_WAITID_NOCANCEL ideal-int +pkg syscall (darwin-386), const SYS_WATCHEVENT ideal-int +pkg syscall (darwin-386), const SYS_WORKQ_KERNRETURN ideal-int +pkg syscall (darwin-386), const SYS_WORKQ_OPEN ideal-int +pkg syscall (darwin-386), const SYS_WRITE ideal-int +pkg syscall (darwin-386), const SYS_WRITEV ideal-int +pkg syscall (darwin-386), const SYS_WRITEV_NOCANCEL ideal-int +pkg syscall (darwin-386), const SYS_WRITE_NOCANCEL ideal-int +pkg syscall (darwin-386), const SYS___DISABLE_THREADSIGNAL ideal-int +pkg syscall (darwin-386), const SYS___MAC_EXECVE ideal-int +pkg syscall (darwin-386), const SYS___MAC_GETFSSTAT ideal-int +pkg syscall (darwin-386), const SYS___MAC_GET_FD ideal-int +pkg syscall (darwin-386), const SYS___MAC_GET_FILE ideal-int +pkg syscall (darwin-386), const SYS___MAC_GET_LCID ideal-int +pkg syscall (darwin-386), const SYS___MAC_GET_LCTX ideal-int +pkg syscall (darwin-386), const SYS___MAC_GET_LINK ideal-int +pkg syscall (darwin-386), const SYS___MAC_GET_MOUNT ideal-int +pkg syscall (darwin-386), const SYS___MAC_GET_PID ideal-int +pkg syscall (darwin-386), const SYS___MAC_GET_PROC ideal-int +pkg syscall (darwin-386), const SYS___MAC_MOUNT ideal-int +pkg syscall (darwin-386), const SYS___MAC_SET_FD ideal-int +pkg syscall (darwin-386), const SYS___MAC_SET_FILE ideal-int +pkg syscall (darwin-386), const SYS___MAC_SET_LCTX ideal-int +pkg syscall (darwin-386), const SYS___MAC_SET_LINK ideal-int +pkg syscall (darwin-386), const SYS___MAC_SET_PROC ideal-int +pkg syscall (darwin-386), const SYS___MAC_SYSCALL ideal-int +pkg syscall (darwin-386), const SYS___OLD_SEMWAIT_SIGNAL ideal-int +pkg syscall (darwin-386), const SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL ideal-int +pkg syscall (darwin-386), const SYS___PTHREAD_CANCELED ideal-int +pkg syscall (darwin-386), const SYS___PTHREAD_CHDIR ideal-int +pkg syscall (darwin-386), const SYS___PTHREAD_FCHDIR ideal-int +pkg syscall (darwin-386), const SYS___PTHREAD_KILL ideal-int +pkg syscall (darwin-386), const SYS___PTHREAD_MARKCANCEL ideal-int +pkg syscall (darwin-386), const SYS___PTHREAD_SIGMASK ideal-int +pkg syscall (darwin-386), const SYS___SEMWAIT_SIGNAL ideal-int +pkg syscall (darwin-386), const SYS___SEMWAIT_SIGNAL_NOCANCEL ideal-int +pkg syscall (darwin-386), const SYS___SIGWAIT ideal-int +pkg syscall (darwin-386), const SYS___SIGWAIT_NOCANCEL ideal-int +pkg syscall (darwin-386), const SYS___SYSCTL ideal-int +pkg syscall (darwin-386), const S_IEXEC ideal-int +pkg syscall (darwin-386), const S_IFWHT ideal-int +pkg syscall (darwin-386), const S_IREAD ideal-int +pkg syscall (darwin-386), const S_IRGRP ideal-int +pkg syscall (darwin-386), const S_IROTH ideal-int +pkg syscall (darwin-386), const S_IRWXG ideal-int +pkg syscall (darwin-386), const S_IRWXO ideal-int +pkg syscall (darwin-386), const S_IRWXU ideal-int +pkg syscall (darwin-386), const S_ISTXT ideal-int +pkg syscall (darwin-386), const S_IWGRP ideal-int +pkg syscall (darwin-386), const S_IWOTH ideal-int +pkg syscall (darwin-386), const S_IXGRP ideal-int +pkg syscall (darwin-386), const S_IXOTH ideal-int +pkg syscall (darwin-386), const SizeofBpfHdr ideal-int +pkg syscall (darwin-386), const SizeofBpfInsn ideal-int +pkg syscall (darwin-386), const SizeofBpfProgram ideal-int +pkg syscall (darwin-386), const SizeofBpfStat ideal-int +pkg syscall (darwin-386), const SizeofBpfVersion ideal-int +pkg syscall (darwin-386), const SizeofCmsghdr ideal-int +pkg syscall (darwin-386), const SizeofIPMreq ideal-int +pkg syscall (darwin-386), const SizeofIPv6Mreq ideal-int +pkg syscall (darwin-386), const SizeofIfData ideal-int +pkg syscall (darwin-386), const SizeofIfMsghdr ideal-int +pkg syscall (darwin-386), const SizeofIfaMsghdr ideal-int +pkg syscall (darwin-386), const SizeofIfmaMsghdr ideal-int +pkg syscall (darwin-386), const SizeofIfmaMsghdr2 ideal-int +pkg syscall (darwin-386), const SizeofInet6Pktinfo ideal-int +pkg syscall (darwin-386), const SizeofLinger ideal-int +pkg syscall (darwin-386), const SizeofMsghdr ideal-int +pkg syscall (darwin-386), const SizeofRtMetrics ideal-int +pkg syscall (darwin-386), const SizeofRtMsghdr ideal-int +pkg syscall (darwin-386), const SizeofSockaddrAny ideal-int +pkg syscall (darwin-386), const SizeofSockaddrDatalink ideal-int +pkg syscall (darwin-386), const SizeofSockaddrInet4 ideal-int +pkg syscall (darwin-386), const SizeofSockaddrInet6 ideal-int +pkg syscall (darwin-386), const SizeofSockaddrUnix ideal-int +pkg syscall (darwin-386), const TCP_CONNECTIONTIMEOUT ideal-int +pkg syscall (darwin-386), const TCP_KEEPALIVE ideal-int +pkg syscall (darwin-386), const TCP_MAXHLEN ideal-int +pkg syscall (darwin-386), const TCP_MAXOLEN ideal-int +pkg syscall (darwin-386), const TCP_MAXSEG ideal-int +pkg syscall (darwin-386), const TCP_MAXWIN ideal-int +pkg syscall (darwin-386), const TCP_MAX_SACK ideal-int +pkg syscall (darwin-386), const TCP_MAX_WINSHIFT ideal-int +pkg syscall (darwin-386), const TCP_MINMSS ideal-int +pkg syscall (darwin-386), const TCP_MINMSSOVERLOAD ideal-int +pkg syscall (darwin-386), const TCP_MSS ideal-int +pkg syscall (darwin-386), const TCP_NOOPT ideal-int +pkg syscall (darwin-386), const TCP_NOPUSH ideal-int +pkg syscall (darwin-386), const TCP_RXT_CONNDROPTIME ideal-int +pkg syscall (darwin-386), const TCP_RXT_FINDROP ideal-int +pkg syscall (darwin-386), const TIOCCBRK ideal-int +pkg syscall (darwin-386), const TIOCCDTR ideal-int +pkg syscall (darwin-386), const TIOCCONS ideal-int +pkg syscall (darwin-386), const TIOCDCDTIMESTAMP ideal-int +pkg syscall (darwin-386), const TIOCDRAIN ideal-int +pkg syscall (darwin-386), const TIOCDSIMICROCODE ideal-int +pkg syscall (darwin-386), const TIOCEXCL ideal-int +pkg syscall (darwin-386), const TIOCEXT ideal-int +pkg syscall (darwin-386), const TIOCFLUSH ideal-int +pkg syscall (darwin-386), const TIOCGDRAINWAIT ideal-int +pkg syscall (darwin-386), const TIOCGETA ideal-int +pkg syscall (darwin-386), const TIOCGETD ideal-int +pkg syscall (darwin-386), const TIOCGPGRP ideal-int +pkg syscall (darwin-386), const TIOCGWINSZ ideal-int +pkg syscall (darwin-386), const TIOCIXOFF ideal-int +pkg syscall (darwin-386), const TIOCIXON ideal-int +pkg syscall (darwin-386), const TIOCMBIC ideal-int +pkg syscall (darwin-386), const TIOCMBIS ideal-int +pkg syscall (darwin-386), const TIOCMGDTRWAIT ideal-int +pkg syscall (darwin-386), const TIOCMGET ideal-int +pkg syscall (darwin-386), const TIOCMODG ideal-int +pkg syscall (darwin-386), const TIOCMODS ideal-int +pkg syscall (darwin-386), const TIOCMSDTRWAIT ideal-int +pkg syscall (darwin-386), const TIOCMSET ideal-int +pkg syscall (darwin-386), const TIOCM_CAR ideal-int +pkg syscall (darwin-386), const TIOCM_CD ideal-int +pkg syscall (darwin-386), const TIOCM_CTS ideal-int +pkg syscall (darwin-386), const TIOCM_DSR ideal-int +pkg syscall (darwin-386), const TIOCM_DTR ideal-int +pkg syscall (darwin-386), const TIOCM_LE ideal-int +pkg syscall (darwin-386), const TIOCM_RI ideal-int +pkg syscall (darwin-386), const TIOCM_RNG ideal-int +pkg syscall (darwin-386), const TIOCM_RTS ideal-int +pkg syscall (darwin-386), const TIOCM_SR ideal-int +pkg syscall (darwin-386), const TIOCM_ST ideal-int +pkg syscall (darwin-386), const TIOCNOTTY ideal-int +pkg syscall (darwin-386), const TIOCNXCL ideal-int +pkg syscall (darwin-386), const TIOCOUTQ ideal-int +pkg syscall (darwin-386), const TIOCPKT ideal-int +pkg syscall (darwin-386), const TIOCPKT_DATA ideal-int +pkg syscall (darwin-386), const TIOCPKT_DOSTOP ideal-int +pkg syscall (darwin-386), const TIOCPKT_FLUSHREAD ideal-int +pkg syscall (darwin-386), const TIOCPKT_FLUSHWRITE ideal-int +pkg syscall (darwin-386), const TIOCPKT_IOCTL ideal-int +pkg syscall (darwin-386), const TIOCPKT_NOSTOP ideal-int +pkg syscall (darwin-386), const TIOCPKT_START ideal-int +pkg syscall (darwin-386), const TIOCPKT_STOP ideal-int +pkg syscall (darwin-386), const TIOCPTYGNAME ideal-int +pkg syscall (darwin-386), const TIOCPTYGRANT ideal-int +pkg syscall (darwin-386), const TIOCPTYUNLK ideal-int +pkg syscall (darwin-386), const TIOCREMOTE ideal-int +pkg syscall (darwin-386), const TIOCSBRK ideal-int +pkg syscall (darwin-386), const TIOCSCONS ideal-int +pkg syscall (darwin-386), const TIOCSCTTY ideal-int +pkg syscall (darwin-386), const TIOCSDRAINWAIT ideal-int +pkg syscall (darwin-386), const TIOCSDTR ideal-int +pkg syscall (darwin-386), const TIOCSETA ideal-int +pkg syscall (darwin-386), const TIOCSETAF ideal-int +pkg syscall (darwin-386), const TIOCSETAW ideal-int +pkg syscall (darwin-386), const TIOCSETD ideal-int +pkg syscall (darwin-386), const TIOCSIG ideal-int +pkg syscall (darwin-386), const TIOCSPGRP ideal-int +pkg syscall (darwin-386), const TIOCSTART ideal-int +pkg syscall (darwin-386), const TIOCSTAT ideal-int +pkg syscall (darwin-386), const TIOCSTI ideal-int +pkg syscall (darwin-386), const TIOCSTOP ideal-int +pkg syscall (darwin-386), const TIOCSWINSZ ideal-int +pkg syscall (darwin-386), const TIOCTIMESTAMP ideal-int +pkg syscall (darwin-386), const TIOCUCNTL ideal-int +pkg syscall (darwin-386), const WCONTINUED ideal-int +pkg syscall (darwin-386), const WCOREFLAG ideal-int +pkg syscall (darwin-386), const WEXITED ideal-int +pkg syscall (darwin-386), const WNOHANG ideal-int +pkg syscall (darwin-386), const WNOWAIT ideal-int +pkg syscall (darwin-386), const WORDSIZE ideal-int +pkg syscall (darwin-386), const WSTOPPED ideal-int +pkg syscall (darwin-386), const WUNTRACED ideal-int +pkg syscall (darwin-386), func Accept(int) (int, Sockaddr, error) +pkg syscall (darwin-386), func Access(string, uint32) error +pkg syscall (darwin-386), func Adjtime(*Timeval, *Timeval) error +pkg syscall (darwin-386), func Bind(int, Sockaddr) error +pkg syscall (darwin-386), func BpfBuflen(int) (int, error) +pkg syscall (darwin-386), func BpfDatalink(int) (int, error) +pkg syscall (darwin-386), func BpfHeadercmpl(int) (int, error) +pkg syscall (darwin-386), func BpfInterface(int, string) (string, error) +pkg syscall (darwin-386), func BpfJump(int) *BpfInsn +pkg syscall (darwin-386), func BpfStats(int) (*BpfStat, error) +pkg syscall (darwin-386), func BpfStmt(int) *BpfInsn +pkg syscall (darwin-386), func BpfTimeout(int) (*Timeval, error) +pkg syscall (darwin-386), func CheckBpfVersion(int) error +pkg syscall (darwin-386), func Chflags(string, int) error +pkg syscall (darwin-386), func Chroot(string) error +pkg syscall (darwin-386), func Close(int) error +pkg syscall (darwin-386), func CloseOnExec(int) +pkg syscall (darwin-386), func CmsgLen(int) int +pkg syscall (darwin-386), func CmsgSpace(int) int +pkg syscall (darwin-386), func Connect(int, Sockaddr) error +pkg syscall (darwin-386), func Dup(int) (int, error) +pkg syscall (darwin-386), func Dup2(int, int) error +pkg syscall (darwin-386), func Exchangedata(string, string, int) error +pkg syscall (darwin-386), func Fchdir(int) error +pkg syscall (darwin-386), func Fchflags(string, int) error +pkg syscall (darwin-386), func Fchmod(int, uint32) error +pkg syscall (darwin-386), func Fchown(int, int, int) error +pkg syscall (darwin-386), func Flock(int, int) error +pkg syscall (darwin-386), func FlushBpf(int) error +pkg syscall (darwin-386), func ForkExec(string, []string, *ProcAttr) (int, error) +pkg syscall (darwin-386), func Fpathconf(int, int) (int, error) +pkg syscall (darwin-386), func Fstat(int, *Stat_t) error +pkg syscall (darwin-386), func Fstatfs(int, *Statfs_t) error +pkg syscall (darwin-386), func Fsync(int) error +pkg syscall (darwin-386), func Ftruncate(int, int64) error +pkg syscall (darwin-386), func Futimes(int, []Timeval) error +pkg syscall (darwin-386), func Getdirentries(int, []byte, *uintptr) (int, error) +pkg syscall (darwin-386), func Getdtablesize() int +pkg syscall (darwin-386), func Getfsstat([]Statfs_t, int) (int, error) +pkg syscall (darwin-386), func Getpeername(int) (Sockaddr, error) +pkg syscall (darwin-386), func Getpgid(int) (int, error) +pkg syscall (darwin-386), func Getpgrp() int +pkg syscall (darwin-386), func Getpriority(int, int) (int, error) +pkg syscall (darwin-386), func Getrlimit(int, *Rlimit) error +pkg syscall (darwin-386), func Getrusage(int, *Rusage) error +pkg syscall (darwin-386), func Getsid(int) (int, error) +pkg syscall (darwin-386), func Getsockname(int) (Sockaddr, error) +pkg syscall (darwin-386), func GetsockoptByte(int) (byte, error) +pkg syscall (darwin-386), func GetsockoptIPMreq(int) (*IPMreq, error) +pkg syscall (darwin-386), func GetsockoptIPv6Mreq(int) (*IPv6Mreq, error) +pkg syscall (darwin-386), func GetsockoptInet4Addr(int) ([4]byte, error) +pkg syscall (darwin-386), func GetsockoptInt(int) (int, error) +pkg syscall (darwin-386), func Issetugid() bool +pkg syscall (darwin-386), func Kevent(int, []Kevent_t, *Timespec) (int, error) +pkg syscall (darwin-386), func Kill(int, Signal) error +pkg syscall (darwin-386), func Kqueue() (int, error) +pkg syscall (darwin-386), func Link(string, string) error +pkg syscall (darwin-386), func Listen(int, int) error +pkg syscall (darwin-386), func Lstat(string, *Stat_t) error +pkg syscall (darwin-386), func Mkfifo(string, uint32) error +pkg syscall (darwin-386), func Mknod(string, uint32, int) error +pkg syscall (darwin-386), func Mmap(int, int64, int, int, int) ([]byte, error) +pkg syscall (darwin-386), func Munmap([]byte) error +pkg syscall (darwin-386), func NsecToTimespec(int64) Timespec +pkg syscall (darwin-386), func Open(string, int, uint32) (int, error) +pkg syscall (darwin-386), func ParseDirent([]byte, int, []string) (int, int, []string) +pkg syscall (darwin-386), func ParseRoutingMessage([]byte) ([]RoutingMessage, error) +pkg syscall (darwin-386), func ParseRoutingSockaddr(RoutingMessage) ([]Sockaddr, error) +pkg syscall (darwin-386), func ParseSocketControlMessage([]byte) ([]SocketControlMessage, error) +pkg syscall (darwin-386), func ParseUnixRights(*SocketControlMessage) ([]int, error) +pkg syscall (darwin-386), func Pathconf(string, int) (int, error) +pkg syscall (darwin-386), func Pipe([]int) error +pkg syscall (darwin-386), func Pread(int, []byte, int64) (int, error) +pkg syscall (darwin-386), func PtraceAttach(int) error +pkg syscall (darwin-386), func PtraceDetach(int) error +pkg syscall (darwin-386), func Pwrite(int, []byte, int64) (int, error) +pkg syscall (darwin-386), func RawSyscall(uintptr) (uintptr, Errno) +pkg syscall (darwin-386), func RawSyscall6(uintptr) (uintptr, Errno) +pkg syscall (darwin-386), func Read(int, []byte) (int, error) +pkg syscall (darwin-386), func ReadDirent(int, []byte) (int, error) +pkg syscall (darwin-386), func Recvfrom(int, []byte, int) (int, Sockaddr, error) +pkg syscall (darwin-386), func Recvmsg(int, []byte, int) (int, int, Sockaddr, error) +pkg syscall (darwin-386), func Rename(string, string) error +pkg syscall (darwin-386), func Revoke(string) error +pkg syscall (darwin-386), func RouteRIB(int) ([]byte, error) +pkg syscall (darwin-386), func Seek(int, int64, int) (int64, error) +pkg syscall (darwin-386), func Select(int, *FdSet, *FdSet, *FdSet, *Timeval) error +pkg syscall (darwin-386), func Sendfile(int, int, *int64, int) (int, error) +pkg syscall (darwin-386), func Sendmsg(int, []byte, Sockaddr, int) error +pkg syscall (darwin-386), func Sendto(int, []byte, int, Sockaddr) error +pkg syscall (darwin-386), func SetBpf(int, []BpfInsn) error +pkg syscall (darwin-386), func SetBpfBuflen(int) (int, error) +pkg syscall (darwin-386), func SetBpfDatalink(int) (int, error) +pkg syscall (darwin-386), func SetBpfHeadercmpl(int) error +pkg syscall (darwin-386), func SetBpfImmediate(int) error +pkg syscall (darwin-386), func SetBpfInterface(int, string) error +pkg syscall (darwin-386), func SetBpfPromisc(int) error +pkg syscall (darwin-386), func SetBpfTimeout(int, *Timeval) error +pkg syscall (darwin-386), func SetKevent(*Kevent_t, int) +pkg syscall (darwin-386), func SetNonblock(int, bool) error +pkg syscall (darwin-386), func Setegid(int) error +pkg syscall (darwin-386), func Seteuid(int) error +pkg syscall (darwin-386), func Setgid(int) error +pkg syscall (darwin-386), func Setgroups([]int) error +pkg syscall (darwin-386), func Setlogin(string) error +pkg syscall (darwin-386), func Setpgid(int, int) error +pkg syscall (darwin-386), func Setpriority(int, int, int) error +pkg syscall (darwin-386), func Setprivexec(int) error +pkg syscall (darwin-386), func Setregid(int, int) error +pkg syscall (darwin-386), func Setreuid(int, int) error +pkg syscall (darwin-386), func Setrlimit(int, *Rlimit) error +pkg syscall (darwin-386), func Setsid() (int, error) +pkg syscall (darwin-386), func SetsockoptByte(int, byte) error +pkg syscall (darwin-386), func SetsockoptIPMreq(int, *IPMreq) error +pkg syscall (darwin-386), func SetsockoptIPv6Mreq(int, *IPv6Mreq) error +pkg syscall (darwin-386), func SetsockoptInet4Addr(int, [4]byte) error +pkg syscall (darwin-386), func SetsockoptInt(int, int) error +pkg syscall (darwin-386), func SetsockoptLinger(int, *Linger) error +pkg syscall (darwin-386), func SetsockoptString(int, string) error +pkg syscall (darwin-386), func SetsockoptTimeval(int, *Timeval) error +pkg syscall (darwin-386), func Settimeofday(*Timeval) error +pkg syscall (darwin-386), func Setuid(int) error +pkg syscall (darwin-386), func Shutdown(int, int) error +pkg syscall (darwin-386), func Socket(int) (int, error) +pkg syscall (darwin-386), func Socketpair(int) ([2]int, error) +pkg syscall (darwin-386), func Stat(string, *Stat_t) error +pkg syscall (darwin-386), func Statfs(string, *Statfs_t) error +pkg syscall (darwin-386), func StringSlicePtr([]string) []*byte +pkg syscall (darwin-386), func Symlink(string, string) error +pkg syscall (darwin-386), func Sync() error +pkg syscall (darwin-386), func Syscall9(uintptr) (uintptr, Errno) +pkg syscall (darwin-386), func Sysctl(string) (string, error) +pkg syscall (darwin-386), func SysctlUint32(string) (uint32, error) +pkg syscall (darwin-386), func TimespecToNsec(Timespec) int64 +pkg syscall (darwin-386), func TimevalToNsec(Timeval) int64 +pkg syscall (darwin-386), func Truncate(string, int64) error +pkg syscall (darwin-386), func Umask(int) int +pkg syscall (darwin-386), func Undelete(string) error +pkg syscall (darwin-386), func UnixRights(...int) []byte +pkg syscall (darwin-386), func Unmount(string, int) error +pkg syscall (darwin-386), func Wait4(int, *WaitStatus, int, *Rusage) (int, error) +pkg syscall (darwin-386), func Write(int, []byte) (int, error) +pkg syscall (darwin-386), method (*Cmsghdr) SetLen(int) +pkg syscall (darwin-386), method (*Iovec) SetLen(int) +pkg syscall (darwin-386), method (*Msghdr) SetControllen(int) +pkg syscall (darwin-386), type BpfHdr struct +pkg syscall (darwin-386), type BpfHdr struct, Caplen uint32 +pkg syscall (darwin-386), type BpfHdr struct, Datalen uint32 +pkg syscall (darwin-386), type BpfHdr struct, Hdrlen uint16 +pkg syscall (darwin-386), type BpfHdr struct, Pad_cgo_0 [2]byte +pkg syscall (darwin-386), type BpfHdr struct, Tstamp Timeval +pkg syscall (darwin-386), type BpfInsn struct +pkg syscall (darwin-386), type BpfInsn struct, Code uint16 +pkg syscall (darwin-386), type BpfInsn struct, Jf uint8 +pkg syscall (darwin-386), type BpfInsn struct, Jt uint8 +pkg syscall (darwin-386), type BpfInsn struct, K uint32 +pkg syscall (darwin-386), type BpfProgram struct +pkg syscall (darwin-386), type BpfProgram struct, Insns *BpfInsn +pkg syscall (darwin-386), type BpfProgram struct, Len uint32 +pkg syscall (darwin-386), type BpfStat struct +pkg syscall (darwin-386), type BpfStat struct, Drop uint32 +pkg syscall (darwin-386), type BpfStat struct, Recv uint32 +pkg syscall (darwin-386), type BpfVersion struct +pkg syscall (darwin-386), type BpfVersion struct, Major uint16 +pkg syscall (darwin-386), type BpfVersion struct, Minor uint16 +pkg syscall (darwin-386), type Cmsghdr struct +pkg syscall (darwin-386), type Cmsghdr struct, Len uint32 +pkg syscall (darwin-386), type Cmsghdr struct, Level int32 +pkg syscall (darwin-386), type Cmsghdr struct, Type int32 +pkg syscall (darwin-386), type Credential struct +pkg syscall (darwin-386), type Credential struct, Gid uint32 +pkg syscall (darwin-386), type Credential struct, Groups []uint32 +pkg syscall (darwin-386), type Credential struct, Uid uint32 +pkg syscall (darwin-386), type Dirent struct +pkg syscall (darwin-386), type Dirent struct, Ino uint64 +pkg syscall (darwin-386), type Dirent struct, Name [1024]int8 +pkg syscall (darwin-386), type Dirent struct, Namlen uint16 +pkg syscall (darwin-386), type Dirent struct, Pad_cgo_0 [3]byte +pkg syscall (darwin-386), type Dirent struct, Reclen uint16 +pkg syscall (darwin-386), type Dirent struct, Seekoff uint64 +pkg syscall (darwin-386), type Dirent struct, Type uint8 +pkg syscall (darwin-386), type Fbootstraptransfer_t struct +pkg syscall (darwin-386), type Fbootstraptransfer_t struct, Buffer *byte +pkg syscall (darwin-386), type Fbootstraptransfer_t struct, Length uint32 +pkg syscall (darwin-386), type Fbootstraptransfer_t struct, Offset int64 +pkg syscall (darwin-386), type FdSet struct +pkg syscall (darwin-386), type FdSet struct, Bits [32]int32 +pkg syscall (darwin-386), type Flock_t struct +pkg syscall (darwin-386), type Flock_t struct, Len int64 +pkg syscall (darwin-386), type Flock_t struct, Pid int32 +pkg syscall (darwin-386), type Flock_t struct, Start int64 +pkg syscall (darwin-386), type Flock_t struct, Type int16 +pkg syscall (darwin-386), type Flock_t struct, Whence int16 +pkg syscall (darwin-386), type Fsid struct +pkg syscall (darwin-386), type Fsid struct, Val [2]int32 +pkg syscall (darwin-386), type Fstore_t struct +pkg syscall (darwin-386), type Fstore_t struct, Bytesalloc int64 +pkg syscall (darwin-386), type Fstore_t struct, Flags uint32 +pkg syscall (darwin-386), type Fstore_t struct, Length int64 +pkg syscall (darwin-386), type Fstore_t struct, Offset int64 +pkg syscall (darwin-386), type Fstore_t struct, Posmode int32 +pkg syscall (darwin-386), type IfData struct +pkg syscall (darwin-386), type IfData struct, Addrlen uint8 +pkg syscall (darwin-386), type IfData struct, Baudrate uint32 +pkg syscall (darwin-386), type IfData struct, Collisions uint32 +pkg syscall (darwin-386), type IfData struct, Hdrlen uint8 +pkg syscall (darwin-386), type IfData struct, Hwassist uint32 +pkg syscall (darwin-386), type IfData struct, Ibytes uint32 +pkg syscall (darwin-386), type IfData struct, Ierrors uint32 +pkg syscall (darwin-386), type IfData struct, Imcasts uint32 +pkg syscall (darwin-386), type IfData struct, Ipackets uint32 +pkg syscall (darwin-386), type IfData struct, Iqdrops uint32 +pkg syscall (darwin-386), type IfData struct, Lastchange Timeval +pkg syscall (darwin-386), type IfData struct, Metric uint32 +pkg syscall (darwin-386), type IfData struct, Mtu uint32 +pkg syscall (darwin-386), type IfData struct, Noproto uint32 +pkg syscall (darwin-386), type IfData struct, Obytes uint32 +pkg syscall (darwin-386), type IfData struct, Oerrors uint32 +pkg syscall (darwin-386), type IfData struct, Omcasts uint32 +pkg syscall (darwin-386), type IfData struct, Opackets uint32 +pkg syscall (darwin-386), type IfData struct, Physical uint8 +pkg syscall (darwin-386), type IfData struct, Recvquota uint8 +pkg syscall (darwin-386), type IfData struct, Recvtiming uint32 +pkg syscall (darwin-386), type IfData struct, Reserved1 uint32 +pkg syscall (darwin-386), type IfData struct, Reserved2 uint32 +pkg syscall (darwin-386), type IfData struct, Type uint8 +pkg syscall (darwin-386), type IfData struct, Typelen uint8 +pkg syscall (darwin-386), type IfData struct, Unused1 uint8 +pkg syscall (darwin-386), type IfData struct, Unused2 uint32 +pkg syscall (darwin-386), type IfData struct, Xmitquota uint8 +pkg syscall (darwin-386), type IfData struct, Xmittiming uint32 +pkg syscall (darwin-386), type IfMsghdr struct +pkg syscall (darwin-386), type IfMsghdr struct, Addrs int32 +pkg syscall (darwin-386), type IfMsghdr struct, Data IfData +pkg syscall (darwin-386), type IfMsghdr struct, Flags int32 +pkg syscall (darwin-386), type IfMsghdr struct, Index uint16 +pkg syscall (darwin-386), type IfMsghdr struct, Msglen uint16 +pkg syscall (darwin-386), type IfMsghdr struct, Pad_cgo_0 [2]byte +pkg syscall (darwin-386), type IfMsghdr struct, Type uint8 +pkg syscall (darwin-386), type IfMsghdr struct, Version uint8 +pkg syscall (darwin-386), type IfaMsghdr struct +pkg syscall (darwin-386), type IfaMsghdr struct, Addrs int32 +pkg syscall (darwin-386), type IfaMsghdr struct, Flags int32 +pkg syscall (darwin-386), type IfaMsghdr struct, Index uint16 +pkg syscall (darwin-386), type IfaMsghdr struct, Metric int32 +pkg syscall (darwin-386), type IfaMsghdr struct, Msglen uint16 +pkg syscall (darwin-386), type IfaMsghdr struct, Pad_cgo_0 [2]byte +pkg syscall (darwin-386), type IfaMsghdr struct, Type uint8 +pkg syscall (darwin-386), type IfaMsghdr struct, Version uint8 +pkg syscall (darwin-386), type IfmaMsghdr struct +pkg syscall (darwin-386), type IfmaMsghdr struct, Addrs int32 +pkg syscall (darwin-386), type IfmaMsghdr struct, Flags int32 +pkg syscall (darwin-386), type IfmaMsghdr struct, Index uint16 +pkg syscall (darwin-386), type IfmaMsghdr struct, Msglen uint16 +pkg syscall (darwin-386), type IfmaMsghdr struct, Pad_cgo_0 [2]byte +pkg syscall (darwin-386), type IfmaMsghdr struct, Type uint8 +pkg syscall (darwin-386), type IfmaMsghdr struct, Version uint8 +pkg syscall (darwin-386), type IfmaMsghdr2 struct +pkg syscall (darwin-386), type IfmaMsghdr2 struct, Addrs int32 +pkg syscall (darwin-386), type IfmaMsghdr2 struct, Flags int32 +pkg syscall (darwin-386), type IfmaMsghdr2 struct, Index uint16 +pkg syscall (darwin-386), type IfmaMsghdr2 struct, Msglen uint16 +pkg syscall (darwin-386), type IfmaMsghdr2 struct, Pad_cgo_0 [2]byte +pkg syscall (darwin-386), type IfmaMsghdr2 struct, Refcount int32 +pkg syscall (darwin-386), type IfmaMsghdr2 struct, Type uint8 +pkg syscall (darwin-386), type IfmaMsghdr2 struct, Version uint8 +pkg syscall (darwin-386), type Inet6Pktinfo struct +pkg syscall (darwin-386), type Inet6Pktinfo struct, Addr [16]byte +pkg syscall (darwin-386), type Inet6Pktinfo struct, Ifindex uint32 +pkg syscall (darwin-386), type InterfaceAddrMessage struct +pkg syscall (darwin-386), type InterfaceAddrMessage struct, Data []byte +pkg syscall (darwin-386), type InterfaceAddrMessage struct, Header IfaMsghdr +pkg syscall (darwin-386), type InterfaceMessage struct +pkg syscall (darwin-386), type InterfaceMessage struct, Data []byte +pkg syscall (darwin-386), type InterfaceMessage struct, Header IfMsghdr +pkg syscall (darwin-386), type InterfaceMulticastAddrMessage struct +pkg syscall (darwin-386), type InterfaceMulticastAddrMessage struct, Data []byte +pkg syscall (darwin-386), type InterfaceMulticastAddrMessage struct, Header IfmaMsghdr2 +pkg syscall (darwin-386), type Iovec struct +pkg syscall (darwin-386), type Iovec struct, Base *byte +pkg syscall (darwin-386), type Iovec struct, Len uint32 +pkg syscall (darwin-386), type Kevent_t struct +pkg syscall (darwin-386), type Kevent_t struct, Data int32 +pkg syscall (darwin-386), type Kevent_t struct, Fflags uint32 +pkg syscall (darwin-386), type Kevent_t struct, Filter int16 +pkg syscall (darwin-386), type Kevent_t struct, Flags uint16 +pkg syscall (darwin-386), type Kevent_t struct, Ident uint32 +pkg syscall (darwin-386), type Kevent_t struct, Udata *byte +pkg syscall (darwin-386), type Log2phys_t struct +pkg syscall (darwin-386), type Log2phys_t struct, Contigbytes int64 +pkg syscall (darwin-386), type Log2phys_t struct, Devoffset int64 +pkg syscall (darwin-386), type Log2phys_t struct, Flags uint32 +pkg syscall (darwin-386), type Msghdr struct +pkg syscall (darwin-386), type Msghdr struct, Control *byte +pkg syscall (darwin-386), type Msghdr struct, Controllen uint32 +pkg syscall (darwin-386), type Msghdr struct, Flags int32 +pkg syscall (darwin-386), type Msghdr struct, Iov *Iovec +pkg syscall (darwin-386), type Msghdr struct, Iovlen int32 +pkg syscall (darwin-386), type Msghdr struct, Name *byte +pkg syscall (darwin-386), type Msghdr struct, Namelen uint32 +pkg syscall (darwin-386), type Radvisory_t struct +pkg syscall (darwin-386), type Radvisory_t struct, Count int32 +pkg syscall (darwin-386), type Radvisory_t struct, Offset int64 +pkg syscall (darwin-386), type RawSockaddr struct, Family uint8 +pkg syscall (darwin-386), type RawSockaddr struct, Len uint8 +pkg syscall (darwin-386), type RawSockaddrAny struct, Pad [92]int8 +pkg syscall (darwin-386), type RawSockaddrDatalink struct +pkg syscall (darwin-386), type RawSockaddrDatalink struct, Alen uint8 +pkg syscall (darwin-386), type RawSockaddrDatalink struct, Data [12]int8 +pkg syscall (darwin-386), type RawSockaddrDatalink struct, Family uint8 +pkg syscall (darwin-386), type RawSockaddrDatalink struct, Index uint16 +pkg syscall (darwin-386), type RawSockaddrDatalink struct, Len uint8 +pkg syscall (darwin-386), type RawSockaddrDatalink struct, Nlen uint8 +pkg syscall (darwin-386), type RawSockaddrDatalink struct, Slen uint8 +pkg syscall (darwin-386), type RawSockaddrDatalink struct, Type uint8 +pkg syscall (darwin-386), type RawSockaddrInet4 struct, Family uint8 +pkg syscall (darwin-386), type RawSockaddrInet4 struct, Len uint8 +pkg syscall (darwin-386), type RawSockaddrInet4 struct, Zero [8]int8 +pkg syscall (darwin-386), type RawSockaddrInet6 struct +pkg syscall (darwin-386), type RawSockaddrInet6 struct, Addr [16]byte +pkg syscall (darwin-386), type RawSockaddrInet6 struct, Family uint8 +pkg syscall (darwin-386), type RawSockaddrInet6 struct, Flowinfo uint32 +pkg syscall (darwin-386), type RawSockaddrInet6 struct, Len uint8 +pkg syscall (darwin-386), type RawSockaddrInet6 struct, Port uint16 +pkg syscall (darwin-386), type RawSockaddrInet6 struct, Scope_id uint32 +pkg syscall (darwin-386), type RawSockaddrUnix struct +pkg syscall (darwin-386), type RawSockaddrUnix struct, Family uint8 +pkg syscall (darwin-386), type RawSockaddrUnix struct, Len uint8 +pkg syscall (darwin-386), type RawSockaddrUnix struct, Path [104]int8 +pkg syscall (darwin-386), type Rlimit struct +pkg syscall (darwin-386), type Rlimit struct, Cur uint64 +pkg syscall (darwin-386), type Rlimit struct, Max uint64 +pkg syscall (darwin-386), type RouteMessage struct +pkg syscall (darwin-386), type RouteMessage struct, Data []byte +pkg syscall (darwin-386), type RouteMessage struct, Header RtMsghdr +pkg syscall (darwin-386), type RoutingMessage interface {} +pkg syscall (darwin-386), type RtMetrics struct +pkg syscall (darwin-386), type RtMetrics struct, Expire int32 +pkg syscall (darwin-386), type RtMetrics struct, Filler [4]uint32 +pkg syscall (darwin-386), type RtMetrics struct, Hopcount uint32 +pkg syscall (darwin-386), type RtMetrics struct, Locks uint32 +pkg syscall (darwin-386), type RtMetrics struct, Mtu uint32 +pkg syscall (darwin-386), type RtMetrics struct, Pksent uint32 +pkg syscall (darwin-386), type RtMetrics struct, Recvpipe uint32 +pkg syscall (darwin-386), type RtMetrics struct, Rtt uint32 +pkg syscall (darwin-386), type RtMetrics struct, Rttvar uint32 +pkg syscall (darwin-386), type RtMetrics struct, Sendpipe uint32 +pkg syscall (darwin-386), type RtMetrics struct, Ssthresh uint32 +pkg syscall (darwin-386), type RtMsghdr struct +pkg syscall (darwin-386), type RtMsghdr struct, Addrs int32 +pkg syscall (darwin-386), type RtMsghdr struct, Errno int32 +pkg syscall (darwin-386), type RtMsghdr struct, Flags int32 +pkg syscall (darwin-386), type RtMsghdr struct, Index uint16 +pkg syscall (darwin-386), type RtMsghdr struct, Inits uint32 +pkg syscall (darwin-386), type RtMsghdr struct, Msglen uint16 +pkg syscall (darwin-386), type RtMsghdr struct, Pad_cgo_0 [2]byte +pkg syscall (darwin-386), type RtMsghdr struct, Pid int32 +pkg syscall (darwin-386), type RtMsghdr struct, Rmx RtMetrics +pkg syscall (darwin-386), type RtMsghdr struct, Seq int32 +pkg syscall (darwin-386), type RtMsghdr struct, Type uint8 +pkg syscall (darwin-386), type RtMsghdr struct, Use int32 +pkg syscall (darwin-386), type RtMsghdr struct, Version uint8 +pkg syscall (darwin-386), type Rusage struct, Idrss int32 +pkg syscall (darwin-386), type Rusage struct, Inblock int32 +pkg syscall (darwin-386), type Rusage struct, Isrss int32 +pkg syscall (darwin-386), type Rusage struct, Ixrss int32 +pkg syscall (darwin-386), type Rusage struct, Majflt int32 +pkg syscall (darwin-386), type Rusage struct, Maxrss int32 +pkg syscall (darwin-386), type Rusage struct, Minflt int32 +pkg syscall (darwin-386), type Rusage struct, Msgrcv int32 +pkg syscall (darwin-386), type Rusage struct, Msgsnd int32 +pkg syscall (darwin-386), type Rusage struct, Nivcsw int32 +pkg syscall (darwin-386), type Rusage struct, Nsignals int32 +pkg syscall (darwin-386), type Rusage struct, Nswap int32 +pkg syscall (darwin-386), type Rusage struct, Nvcsw int32 +pkg syscall (darwin-386), type Rusage struct, Oublock int32 +pkg syscall (darwin-386), type Rusage struct, Stime Timeval +pkg syscall (darwin-386), type Rusage struct, Utime Timeval +pkg syscall (darwin-386), type SockaddrDatalink struct +pkg syscall (darwin-386), type SockaddrDatalink struct, Alen uint8 +pkg syscall (darwin-386), type SockaddrDatalink struct, Data [12]int8 +pkg syscall (darwin-386), type SockaddrDatalink struct, Family uint8 +pkg syscall (darwin-386), type SockaddrDatalink struct, Index uint16 +pkg syscall (darwin-386), type SockaddrDatalink struct, Len uint8 +pkg syscall (darwin-386), type SockaddrDatalink struct, Nlen uint8 +pkg syscall (darwin-386), type SockaddrDatalink struct, Slen uint8 +pkg syscall (darwin-386), type SockaddrDatalink struct, Type uint8 +pkg syscall (darwin-386), type SocketControlMessage struct +pkg syscall (darwin-386), type SocketControlMessage struct, Data []byte +pkg syscall (darwin-386), type SocketControlMessage struct, Header Cmsghdr +pkg syscall (darwin-386), type Stat_t struct +pkg syscall (darwin-386), type Stat_t struct, Atimespec Timespec +pkg syscall (darwin-386), type Stat_t struct, Birthtimespec Timespec +pkg syscall (darwin-386), type Stat_t struct, Blksize int32 +pkg syscall (darwin-386), type Stat_t struct, Blocks int64 +pkg syscall (darwin-386), type Stat_t struct, Ctimespec Timespec +pkg syscall (darwin-386), type Stat_t struct, Dev int32 +pkg syscall (darwin-386), type Stat_t struct, Flags uint32 +pkg syscall (darwin-386), type Stat_t struct, Gen uint32 +pkg syscall (darwin-386), type Stat_t struct, Gid uint32 +pkg syscall (darwin-386), type Stat_t struct, Ino uint64 +pkg syscall (darwin-386), type Stat_t struct, Lspare int32 +pkg syscall (darwin-386), type Stat_t struct, Mode uint16 +pkg syscall (darwin-386), type Stat_t struct, Mtimespec Timespec +pkg syscall (darwin-386), type Stat_t struct, Nlink uint16 +pkg syscall (darwin-386), type Stat_t struct, Qspare [2]int64 +pkg syscall (darwin-386), type Stat_t struct, Rdev int32 +pkg syscall (darwin-386), type Stat_t struct, Size int64 +pkg syscall (darwin-386), type Stat_t struct, Uid uint32 +pkg syscall (darwin-386), type Statfs_t struct +pkg syscall (darwin-386), type Statfs_t struct, Bavail uint64 +pkg syscall (darwin-386), type Statfs_t struct, Bfree uint64 +pkg syscall (darwin-386), type Statfs_t struct, Blocks uint64 +pkg syscall (darwin-386), type Statfs_t struct, Bsize uint32 +pkg syscall (darwin-386), type Statfs_t struct, Ffree uint64 +pkg syscall (darwin-386), type Statfs_t struct, Files uint64 +pkg syscall (darwin-386), type Statfs_t struct, Flags uint32 +pkg syscall (darwin-386), type Statfs_t struct, Fsid Fsid +pkg syscall (darwin-386), type Statfs_t struct, Fssubtype uint32 +pkg syscall (darwin-386), type Statfs_t struct, Fstypename [16]int8 +pkg syscall (darwin-386), type Statfs_t struct, Iosize int32 +pkg syscall (darwin-386), type Statfs_t struct, Mntfromname [1024]int8 +pkg syscall (darwin-386), type Statfs_t struct, Mntonname [1024]int8 +pkg syscall (darwin-386), type Statfs_t struct, Owner uint32 +pkg syscall (darwin-386), type Statfs_t struct, Reserved [8]uint32 +pkg syscall (darwin-386), type Statfs_t struct, Type uint32 +pkg syscall (darwin-386), type SysProcAttr struct, Chroot string +pkg syscall (darwin-386), type SysProcAttr struct, Credential *Credential +pkg syscall (darwin-386), type SysProcAttr struct, Noctty bool +pkg syscall (darwin-386), type SysProcAttr struct, Ptrace bool +pkg syscall (darwin-386), type SysProcAttr struct, Setctty bool +pkg syscall (darwin-386), type SysProcAttr struct, Setpgid bool +pkg syscall (darwin-386), type SysProcAttr struct, Setsid bool +pkg syscall (darwin-386), type Timespec struct, Nsec int32 +pkg syscall (darwin-386), type Timespec struct, Sec int32 +pkg syscall (darwin-386), type Timeval struct, Sec int32 +pkg syscall (darwin-386), type Timeval struct, Usec int32 +pkg syscall (darwin-386), type Timeval32 [0]byte +pkg syscall (darwin-386), type WaitStatus uint32 +pkg syscall (darwin-386), var Stderr int +pkg syscall (darwin-386), var Stdin int +pkg syscall (darwin-386), var Stdout int +pkg syscall (darwin-386-cgo), const AF_APPLETALK ideal-int +pkg syscall (darwin-386-cgo), const AF_CCITT ideal-int +pkg syscall (darwin-386-cgo), const AF_CHAOS ideal-int +pkg syscall (darwin-386-cgo), const AF_CNT ideal-int +pkg syscall (darwin-386-cgo), const AF_COIP ideal-int +pkg syscall (darwin-386-cgo), const AF_DATAKIT ideal-int +pkg syscall (darwin-386-cgo), const AF_DECnet ideal-int +pkg syscall (darwin-386-cgo), const AF_DLI ideal-int +pkg syscall (darwin-386-cgo), const AF_E164 ideal-int +pkg syscall (darwin-386-cgo), const AF_ECMA ideal-int +pkg syscall (darwin-386-cgo), const AF_HYLINK ideal-int +pkg syscall (darwin-386-cgo), const AF_IEEE80211 ideal-int +pkg syscall (darwin-386-cgo), const AF_IMPLINK ideal-int +pkg syscall (darwin-386-cgo), const AF_IPX ideal-int +pkg syscall (darwin-386-cgo), const AF_ISDN ideal-int +pkg syscall (darwin-386-cgo), const AF_ISO ideal-int +pkg syscall (darwin-386-cgo), const AF_LAT ideal-int +pkg syscall (darwin-386-cgo), const AF_LINK ideal-int +pkg syscall (darwin-386-cgo), const AF_LOCAL ideal-int +pkg syscall (darwin-386-cgo), const AF_MAX ideal-int +pkg syscall (darwin-386-cgo), const AF_NATM ideal-int +pkg syscall (darwin-386-cgo), const AF_NDRV ideal-int +pkg syscall (darwin-386-cgo), const AF_NETBIOS ideal-int +pkg syscall (darwin-386-cgo), const AF_NS ideal-int +pkg syscall (darwin-386-cgo), const AF_OSI ideal-int +pkg syscall (darwin-386-cgo), const AF_PPP ideal-int +pkg syscall (darwin-386-cgo), const AF_PUP ideal-int +pkg syscall (darwin-386-cgo), const AF_RESERVED_36 ideal-int +pkg syscall (darwin-386-cgo), const AF_ROUTE ideal-int +pkg syscall (darwin-386-cgo), const AF_SIP ideal-int +pkg syscall (darwin-386-cgo), const AF_SNA ideal-int +pkg syscall (darwin-386-cgo), const AF_SYSTEM ideal-int +pkg syscall (darwin-386-cgo), const BIOCFLUSH ideal-int +pkg syscall (darwin-386-cgo), const BIOCGBLEN ideal-int +pkg syscall (darwin-386-cgo), const BIOCGDLT ideal-int +pkg syscall (darwin-386-cgo), const BIOCGDLTLIST ideal-int +pkg syscall (darwin-386-cgo), const BIOCGETIF ideal-int +pkg syscall (darwin-386-cgo), const BIOCGHDRCMPLT ideal-int +pkg syscall (darwin-386-cgo), const BIOCGRSIG ideal-int +pkg syscall (darwin-386-cgo), const BIOCGRTIMEOUT ideal-int +pkg syscall (darwin-386-cgo), const BIOCGSEESENT ideal-int +pkg syscall (darwin-386-cgo), const BIOCGSTATS ideal-int +pkg syscall (darwin-386-cgo), const BIOCIMMEDIATE ideal-int +pkg syscall (darwin-386-cgo), const BIOCPROMISC ideal-int +pkg syscall (darwin-386-cgo), const BIOCSBLEN ideal-int +pkg syscall (darwin-386-cgo), const BIOCSDLT ideal-int +pkg syscall (darwin-386-cgo), const BIOCSETF ideal-int +pkg syscall (darwin-386-cgo), const BIOCSETIF ideal-int +pkg syscall (darwin-386-cgo), const BIOCSHDRCMPLT ideal-int +pkg syscall (darwin-386-cgo), const BIOCSRSIG ideal-int +pkg syscall (darwin-386-cgo), const BIOCSRTIMEOUT ideal-int +pkg syscall (darwin-386-cgo), const BIOCSSEESENT ideal-int +pkg syscall (darwin-386-cgo), const BIOCVERSION ideal-int +pkg syscall (darwin-386-cgo), const BPF_A ideal-int +pkg syscall (darwin-386-cgo), const BPF_ABS ideal-int +pkg syscall (darwin-386-cgo), const BPF_ADD ideal-int +pkg syscall (darwin-386-cgo), const BPF_ALIGNMENT ideal-int +pkg syscall (darwin-386-cgo), const BPF_ALU ideal-int +pkg syscall (darwin-386-cgo), const BPF_AND ideal-int +pkg syscall (darwin-386-cgo), const BPF_B ideal-int +pkg syscall (darwin-386-cgo), const BPF_DIV ideal-int +pkg syscall (darwin-386-cgo), const BPF_H ideal-int +pkg syscall (darwin-386-cgo), const BPF_IMM ideal-int +pkg syscall (darwin-386-cgo), const BPF_IND ideal-int +pkg syscall (darwin-386-cgo), const BPF_JA ideal-int +pkg syscall (darwin-386-cgo), const BPF_JEQ ideal-int +pkg syscall (darwin-386-cgo), const BPF_JGE ideal-int +pkg syscall (darwin-386-cgo), const BPF_JGT ideal-int +pkg syscall (darwin-386-cgo), const BPF_JMP ideal-int +pkg syscall (darwin-386-cgo), const BPF_JSET ideal-int +pkg syscall (darwin-386-cgo), const BPF_K ideal-int +pkg syscall (darwin-386-cgo), const BPF_LD ideal-int +pkg syscall (darwin-386-cgo), const BPF_LDX ideal-int +pkg syscall (darwin-386-cgo), const BPF_LEN ideal-int +pkg syscall (darwin-386-cgo), const BPF_LSH ideal-int +pkg syscall (darwin-386-cgo), const BPF_MAJOR_VERSION ideal-int +pkg syscall (darwin-386-cgo), const BPF_MAXBUFSIZE ideal-int +pkg syscall (darwin-386-cgo), const BPF_MAXINSNS ideal-int +pkg syscall (darwin-386-cgo), const BPF_MEM ideal-int +pkg syscall (darwin-386-cgo), const BPF_MEMWORDS ideal-int +pkg syscall (darwin-386-cgo), const BPF_MINBUFSIZE ideal-int +pkg syscall (darwin-386-cgo), const BPF_MINOR_VERSION ideal-int +pkg syscall (darwin-386-cgo), const BPF_MISC ideal-int +pkg syscall (darwin-386-cgo), const BPF_MSH ideal-int +pkg syscall (darwin-386-cgo), const BPF_MUL ideal-int +pkg syscall (darwin-386-cgo), const BPF_NEG ideal-int +pkg syscall (darwin-386-cgo), const BPF_OR ideal-int +pkg syscall (darwin-386-cgo), const BPF_RELEASE ideal-int +pkg syscall (darwin-386-cgo), const BPF_RET ideal-int +pkg syscall (darwin-386-cgo), const BPF_RSH ideal-int +pkg syscall (darwin-386-cgo), const BPF_ST ideal-int +pkg syscall (darwin-386-cgo), const BPF_STX ideal-int +pkg syscall (darwin-386-cgo), const BPF_SUB ideal-int +pkg syscall (darwin-386-cgo), const BPF_TAX ideal-int +pkg syscall (darwin-386-cgo), const BPF_TXA ideal-int +pkg syscall (darwin-386-cgo), const BPF_W ideal-int +pkg syscall (darwin-386-cgo), const BPF_X ideal-int +pkg syscall (darwin-386-cgo), const CTL_MAXNAME ideal-int +pkg syscall (darwin-386-cgo), const CTL_NET ideal-int +pkg syscall (darwin-386-cgo), const DLT_APPLE_IP_OVER_IEEE1394 ideal-int +pkg syscall (darwin-386-cgo), const DLT_ARCNET ideal-int +pkg syscall (darwin-386-cgo), const DLT_ATM_CLIP ideal-int +pkg syscall (darwin-386-cgo), const DLT_ATM_RFC1483 ideal-int +pkg syscall (darwin-386-cgo), const DLT_AX25 ideal-int +pkg syscall (darwin-386-cgo), const DLT_CHAOS ideal-int +pkg syscall (darwin-386-cgo), const DLT_CHDLC ideal-int +pkg syscall (darwin-386-cgo), const DLT_C_HDLC ideal-int +pkg syscall (darwin-386-cgo), const DLT_EN10MB ideal-int +pkg syscall (darwin-386-cgo), const DLT_EN3MB ideal-int +pkg syscall (darwin-386-cgo), const DLT_FDDI ideal-int +pkg syscall (darwin-386-cgo), const DLT_IEEE802 ideal-int +pkg syscall (darwin-386-cgo), const DLT_IEEE802_11 ideal-int +pkg syscall (darwin-386-cgo), const DLT_IEEE802_11_RADIO ideal-int +pkg syscall (darwin-386-cgo), const DLT_IEEE802_11_RADIO_AVS ideal-int +pkg syscall (darwin-386-cgo), const DLT_LINUX_SLL ideal-int +pkg syscall (darwin-386-cgo), const DLT_LOOP ideal-int +pkg syscall (darwin-386-cgo), const DLT_NULL ideal-int +pkg syscall (darwin-386-cgo), const DLT_PFLOG ideal-int +pkg syscall (darwin-386-cgo), const DLT_PFSYNC ideal-int +pkg syscall (darwin-386-cgo), const DLT_PPP ideal-int +pkg syscall (darwin-386-cgo), const DLT_PPP_BSDOS ideal-int +pkg syscall (darwin-386-cgo), const DLT_PPP_SERIAL ideal-int +pkg syscall (darwin-386-cgo), const DLT_PRONET ideal-int +pkg syscall (darwin-386-cgo), const DLT_RAW ideal-int +pkg syscall (darwin-386-cgo), const DLT_SLIP ideal-int +pkg syscall (darwin-386-cgo), const DLT_SLIP_BSDOS ideal-int +pkg syscall (darwin-386-cgo), const DT_BLK ideal-int +pkg syscall (darwin-386-cgo), const DT_CHR ideal-int +pkg syscall (darwin-386-cgo), const DT_DIR ideal-int +pkg syscall (darwin-386-cgo), const DT_FIFO ideal-int +pkg syscall (darwin-386-cgo), const DT_LNK ideal-int +pkg syscall (darwin-386-cgo), const DT_REG ideal-int +pkg syscall (darwin-386-cgo), const DT_SOCK ideal-int +pkg syscall (darwin-386-cgo), const DT_UNKNOWN ideal-int +pkg syscall (darwin-386-cgo), const DT_WHT ideal-int +pkg syscall (darwin-386-cgo), const EAUTH Errno +pkg syscall (darwin-386-cgo), const EBADARCH Errno +pkg syscall (darwin-386-cgo), const EBADEXEC Errno +pkg syscall (darwin-386-cgo), const EBADMACHO Errno +pkg syscall (darwin-386-cgo), const EBADRPC Errno +pkg syscall (darwin-386-cgo), const ECHO ideal-int +pkg syscall (darwin-386-cgo), const ECHOCTL ideal-int +pkg syscall (darwin-386-cgo), const ECHOE ideal-int +pkg syscall (darwin-386-cgo), const ECHOK ideal-int +pkg syscall (darwin-386-cgo), const ECHOKE ideal-int +pkg syscall (darwin-386-cgo), const ECHONL ideal-int +pkg syscall (darwin-386-cgo), const ECHOPRT ideal-int +pkg syscall (darwin-386-cgo), const EDEVERR Errno +pkg syscall (darwin-386-cgo), const EFTYPE Errno +pkg syscall (darwin-386-cgo), const ELAST Errno +pkg syscall (darwin-386-cgo), const ENEEDAUTH Errno +pkg syscall (darwin-386-cgo), const ENOATTR Errno +pkg syscall (darwin-386-cgo), const ENOPOLICY Errno +pkg syscall (darwin-386-cgo), const EPROCLIM Errno +pkg syscall (darwin-386-cgo), const EPROCUNAVAIL Errno +pkg syscall (darwin-386-cgo), const EPROGMISMATCH Errno +pkg syscall (darwin-386-cgo), const EPROGUNAVAIL Errno +pkg syscall (darwin-386-cgo), const EPWROFF Errno +pkg syscall (darwin-386-cgo), const ERPCMISMATCH Errno +pkg syscall (darwin-386-cgo), const ESHLIBVERS Errno +pkg syscall (darwin-386-cgo), const EVFILT_AIO ideal-int +pkg syscall (darwin-386-cgo), const EVFILT_FS ideal-int +pkg syscall (darwin-386-cgo), const EVFILT_MACHPORT ideal-int +pkg syscall (darwin-386-cgo), const EVFILT_PROC ideal-int +pkg syscall (darwin-386-cgo), const EVFILT_READ ideal-int +pkg syscall (darwin-386-cgo), const EVFILT_SIGNAL ideal-int +pkg syscall (darwin-386-cgo), const EVFILT_SYSCOUNT ideal-int +pkg syscall (darwin-386-cgo), const EVFILT_THREADMARKER ideal-int +pkg syscall (darwin-386-cgo), const EVFILT_TIMER ideal-int +pkg syscall (darwin-386-cgo), const EVFILT_USER ideal-int +pkg syscall (darwin-386-cgo), const EVFILT_VM ideal-int +pkg syscall (darwin-386-cgo), const EVFILT_VNODE ideal-int +pkg syscall (darwin-386-cgo), const EVFILT_WRITE ideal-int +pkg syscall (darwin-386-cgo), const EV_ADD ideal-int +pkg syscall (darwin-386-cgo), const EV_CLEAR ideal-int +pkg syscall (darwin-386-cgo), const EV_DELETE ideal-int +pkg syscall (darwin-386-cgo), const EV_DISABLE ideal-int +pkg syscall (darwin-386-cgo), const EV_DISPATCH ideal-int +pkg syscall (darwin-386-cgo), const EV_ENABLE ideal-int +pkg syscall (darwin-386-cgo), const EV_EOF ideal-int +pkg syscall (darwin-386-cgo), const EV_ERROR ideal-int +pkg syscall (darwin-386-cgo), const EV_FLAG0 ideal-int +pkg syscall (darwin-386-cgo), const EV_FLAG1 ideal-int +pkg syscall (darwin-386-cgo), const EV_ONESHOT ideal-int +pkg syscall (darwin-386-cgo), const EV_OOBAND ideal-int +pkg syscall (darwin-386-cgo), const EV_POLL ideal-int +pkg syscall (darwin-386-cgo), const EV_RECEIPT ideal-int +pkg syscall (darwin-386-cgo), const EV_SYSFLAGS ideal-int +pkg syscall (darwin-386-cgo), const EXTA ideal-int +pkg syscall (darwin-386-cgo), const EXTB ideal-int +pkg syscall (darwin-386-cgo), const EXTPROC ideal-int +pkg syscall (darwin-386-cgo), const FD_CLOEXEC ideal-int +pkg syscall (darwin-386-cgo), const FD_SETSIZE ideal-int +pkg syscall (darwin-386-cgo), const F_ADDFILESIGS ideal-int +pkg syscall (darwin-386-cgo), const F_ADDSIGS ideal-int +pkg syscall (darwin-386-cgo), const F_ALLOCATEALL ideal-int +pkg syscall (darwin-386-cgo), const F_ALLOCATECONTIG ideal-int +pkg syscall (darwin-386-cgo), const F_CHKCLEAN ideal-int +pkg syscall (darwin-386-cgo), const F_DUPFD ideal-int +pkg syscall (darwin-386-cgo), const F_DUPFD_CLOEXEC ideal-int +pkg syscall (darwin-386-cgo), const F_FLUSH_DATA ideal-int +pkg syscall (darwin-386-cgo), const F_FREEZE_FS ideal-int +pkg syscall (darwin-386-cgo), const F_FULLFSYNC ideal-int +pkg syscall (darwin-386-cgo), const F_GETFD ideal-int +pkg syscall (darwin-386-cgo), const F_GETFL ideal-int +pkg syscall (darwin-386-cgo), const F_GETLK ideal-int +pkg syscall (darwin-386-cgo), const F_GETLKPID ideal-int +pkg syscall (darwin-386-cgo), const F_GETNOSIGPIPE ideal-int +pkg syscall (darwin-386-cgo), const F_GETOWN ideal-int +pkg syscall (darwin-386-cgo), const F_GETPATH ideal-int +pkg syscall (darwin-386-cgo), const F_GETPATH_MTMINFO ideal-int +pkg syscall (darwin-386-cgo), const F_GETPROTECTIONCLASS ideal-int +pkg syscall (darwin-386-cgo), const F_GLOBAL_NOCACHE ideal-int +pkg syscall (darwin-386-cgo), const F_LOG2PHYS ideal-int +pkg syscall (darwin-386-cgo), const F_LOG2PHYS_EXT ideal-int +pkg syscall (darwin-386-cgo), const F_MARKDEPENDENCY ideal-int +pkg syscall (darwin-386-cgo), const F_NOCACHE ideal-int +pkg syscall (darwin-386-cgo), const F_NODIRECT ideal-int +pkg syscall (darwin-386-cgo), const F_OK ideal-int +pkg syscall (darwin-386-cgo), const F_PATHPKG_CHECK ideal-int +pkg syscall (darwin-386-cgo), const F_PEOFPOSMODE ideal-int +pkg syscall (darwin-386-cgo), const F_PREALLOCATE ideal-int +pkg syscall (darwin-386-cgo), const F_RDADVISE ideal-int +pkg syscall (darwin-386-cgo), const F_RDAHEAD ideal-int +pkg syscall (darwin-386-cgo), const F_RDLCK ideal-int +pkg syscall (darwin-386-cgo), const F_READBOOTSTRAP ideal-int +pkg syscall (darwin-386-cgo), const F_SETBACKINGSTORE ideal-int +pkg syscall (darwin-386-cgo), const F_SETFD ideal-int +pkg syscall (darwin-386-cgo), const F_SETFL ideal-int +pkg syscall (darwin-386-cgo), const F_SETLK ideal-int +pkg syscall (darwin-386-cgo), const F_SETLKW ideal-int +pkg syscall (darwin-386-cgo), const F_SETNOSIGPIPE ideal-int +pkg syscall (darwin-386-cgo), const F_SETOWN ideal-int +pkg syscall (darwin-386-cgo), const F_SETPROTECTIONCLASS ideal-int +pkg syscall (darwin-386-cgo), const F_SETSIZE ideal-int +pkg syscall (darwin-386-cgo), const F_THAW_FS ideal-int +pkg syscall (darwin-386-cgo), const F_UNLCK ideal-int +pkg syscall (darwin-386-cgo), const F_VOLPOSMODE ideal-int +pkg syscall (darwin-386-cgo), const F_WRITEBOOTSTRAP ideal-int +pkg syscall (darwin-386-cgo), const F_WRLCK ideal-int +pkg syscall (darwin-386-cgo), const IFF_ALLMULTI ideal-int +pkg syscall (darwin-386-cgo), const IFF_ALTPHYS ideal-int +pkg syscall (darwin-386-cgo), const IFF_DEBUG ideal-int +pkg syscall (darwin-386-cgo), const IFF_LINK0 ideal-int +pkg syscall (darwin-386-cgo), const IFF_LINK1 ideal-int +pkg syscall (darwin-386-cgo), const IFF_LINK2 ideal-int +pkg syscall (darwin-386-cgo), const IFF_NOARP ideal-int +pkg syscall (darwin-386-cgo), const IFF_NOTRAILERS ideal-int +pkg syscall (darwin-386-cgo), const IFF_OACTIVE ideal-int +pkg syscall (darwin-386-cgo), const IFF_POINTOPOINT ideal-int +pkg syscall (darwin-386-cgo), const IFF_PROMISC ideal-int +pkg syscall (darwin-386-cgo), const IFF_RUNNING ideal-int +pkg syscall (darwin-386-cgo), const IFF_SIMPLEX ideal-int +pkg syscall (darwin-386-cgo), const IFNAMSIZ ideal-int +pkg syscall (darwin-386-cgo), const IFT_1822 ideal-int +pkg syscall (darwin-386-cgo), const IFT_AAL5 ideal-int +pkg syscall (darwin-386-cgo), const IFT_ARCNET ideal-int +pkg syscall (darwin-386-cgo), const IFT_ARCNETPLUS ideal-int +pkg syscall (darwin-386-cgo), const IFT_ATM ideal-int +pkg syscall (darwin-386-cgo), const IFT_BRIDGE ideal-int +pkg syscall (darwin-386-cgo), const IFT_CARP ideal-int +pkg syscall (darwin-386-cgo), const IFT_CELLULAR ideal-int +pkg syscall (darwin-386-cgo), const IFT_CEPT ideal-int +pkg syscall (darwin-386-cgo), const IFT_DS3 ideal-int +pkg syscall (darwin-386-cgo), const IFT_ENC ideal-int +pkg syscall (darwin-386-cgo), const IFT_EON ideal-int +pkg syscall (darwin-386-cgo), const IFT_ETHER ideal-int +pkg syscall (darwin-386-cgo), const IFT_FAITH ideal-int +pkg syscall (darwin-386-cgo), const IFT_FDDI ideal-int +pkg syscall (darwin-386-cgo), const IFT_FRELAY ideal-int +pkg syscall (darwin-386-cgo), const IFT_FRELAYDCE ideal-int +pkg syscall (darwin-386-cgo), const IFT_GIF ideal-int +pkg syscall (darwin-386-cgo), const IFT_HDH1822 ideal-int +pkg syscall (darwin-386-cgo), const IFT_HIPPI ideal-int +pkg syscall (darwin-386-cgo), const IFT_HSSI ideal-int +pkg syscall (darwin-386-cgo), const IFT_HY ideal-int +pkg syscall (darwin-386-cgo), const IFT_IEEE1394 ideal-int +pkg syscall (darwin-386-cgo), const IFT_IEEE8023ADLAG ideal-int +pkg syscall (darwin-386-cgo), const IFT_ISDNBASIC ideal-int +pkg syscall (darwin-386-cgo), const IFT_ISDNPRIMARY ideal-int +pkg syscall (darwin-386-cgo), const IFT_ISO88022LLC ideal-int +pkg syscall (darwin-386-cgo), const IFT_ISO88023 ideal-int +pkg syscall (darwin-386-cgo), const IFT_ISO88024 ideal-int +pkg syscall (darwin-386-cgo), const IFT_ISO88025 ideal-int +pkg syscall (darwin-386-cgo), const IFT_ISO88026 ideal-int +pkg syscall (darwin-386-cgo), const IFT_L2VLAN ideal-int +pkg syscall (darwin-386-cgo), const IFT_LAPB ideal-int +pkg syscall (darwin-386-cgo), const IFT_LOCALTALK ideal-int +pkg syscall (darwin-386-cgo), const IFT_LOOP ideal-int +pkg syscall (darwin-386-cgo), const IFT_MIOX25 ideal-int +pkg syscall (darwin-386-cgo), const IFT_MODEM ideal-int +pkg syscall (darwin-386-cgo), const IFT_NSIP ideal-int +pkg syscall (darwin-386-cgo), const IFT_OTHER ideal-int +pkg syscall (darwin-386-cgo), const IFT_P10 ideal-int +pkg syscall (darwin-386-cgo), const IFT_P80 ideal-int +pkg syscall (darwin-386-cgo), const IFT_PARA ideal-int +pkg syscall (darwin-386-cgo), const IFT_PDP ideal-int +pkg syscall (darwin-386-cgo), const IFT_PFLOG ideal-int +pkg syscall (darwin-386-cgo), const IFT_PFSYNC ideal-int +pkg syscall (darwin-386-cgo), const IFT_PPP ideal-int +pkg syscall (darwin-386-cgo), const IFT_PROPMUX ideal-int +pkg syscall (darwin-386-cgo), const IFT_PROPVIRTUAL ideal-int +pkg syscall (darwin-386-cgo), const IFT_PTPSERIAL ideal-int +pkg syscall (darwin-386-cgo), const IFT_RS232 ideal-int +pkg syscall (darwin-386-cgo), const IFT_SDLC ideal-int +pkg syscall (darwin-386-cgo), const IFT_SIP ideal-int +pkg syscall (darwin-386-cgo), const IFT_SLIP ideal-int +pkg syscall (darwin-386-cgo), const IFT_SMDSDXI ideal-int +pkg syscall (darwin-386-cgo), const IFT_SMDSICIP ideal-int +pkg syscall (darwin-386-cgo), const IFT_SONET ideal-int +pkg syscall (darwin-386-cgo), const IFT_SONETPATH ideal-int +pkg syscall (darwin-386-cgo), const IFT_SONETVT ideal-int +pkg syscall (darwin-386-cgo), const IFT_STARLAN ideal-int +pkg syscall (darwin-386-cgo), const IFT_STF ideal-int +pkg syscall (darwin-386-cgo), const IFT_T1 ideal-int +pkg syscall (darwin-386-cgo), const IFT_ULTRA ideal-int +pkg syscall (darwin-386-cgo), const IFT_V35 ideal-int +pkg syscall (darwin-386-cgo), const IFT_X25 ideal-int +pkg syscall (darwin-386-cgo), const IFT_X25DDN ideal-int +pkg syscall (darwin-386-cgo), const IFT_X25PLE ideal-int +pkg syscall (darwin-386-cgo), const IFT_XETHER ideal-int +pkg syscall (darwin-386-cgo), const IN_CLASSA_HOST ideal-int +pkg syscall (darwin-386-cgo), const IN_CLASSA_MAX ideal-int +pkg syscall (darwin-386-cgo), const IN_CLASSA_NET ideal-int +pkg syscall (darwin-386-cgo), const IN_CLASSA_NSHIFT ideal-int +pkg syscall (darwin-386-cgo), const IN_CLASSB_HOST ideal-int +pkg syscall (darwin-386-cgo), const IN_CLASSB_MAX ideal-int +pkg syscall (darwin-386-cgo), const IN_CLASSB_NET ideal-int +pkg syscall (darwin-386-cgo), const IN_CLASSB_NSHIFT ideal-int +pkg syscall (darwin-386-cgo), const IN_CLASSC_HOST ideal-int +pkg syscall (darwin-386-cgo), const IN_CLASSC_NET ideal-int +pkg syscall (darwin-386-cgo), const IN_CLASSC_NSHIFT ideal-int +pkg syscall (darwin-386-cgo), const IN_CLASSD_HOST ideal-int +pkg syscall (darwin-386-cgo), const IN_CLASSD_NET ideal-int +pkg syscall (darwin-386-cgo), const IN_CLASSD_NSHIFT ideal-int +pkg syscall (darwin-386-cgo), const IN_LINKLOCALNETNUM ideal-int +pkg syscall (darwin-386-cgo), const IN_LOOPBACKNET ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_3PC ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_ADFS ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_AH ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_AHIP ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_APES ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_ARGUS ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_AX25 ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_BHA ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_BLT ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_BRSATMON ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_CFTP ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_CHAOS ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_CMTP ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_CPHB ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_CPNX ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_DDP ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_DGP ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_DIVERT ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_DONE ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_DSTOPTS ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_EGP ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_EMCON ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_ENCAP ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_EON ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_ESP ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_ETHERIP ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_FRAGMENT ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_GGP ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_GMTP ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_GRE ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_HELLO ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_HMP ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_HOPOPTS ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_ICMP ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_ICMPV6 ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_IDP ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_IDPR ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_IDRP ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_IGMP ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_IGP ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_IGRP ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_IL ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_INLSP ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_INP ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_IPCOMP ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_IPCV ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_IPEIP ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_IPIP ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_IPPC ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_IPV4 ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_IRTP ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_KRYPTOLAN ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_LARP ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_LEAF1 ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_LEAF2 ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_MAX ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_MAXID ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_MEAS ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_MHRP ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_MICP ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_MTP ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_MUX ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_ND ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_NHRP ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_NONE ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_NSP ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_NVPII ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_OSPFIGP ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_PGM ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_PIGP ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_PIM ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_PRM ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_PUP ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_PVP ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_RAW ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_RCCMON ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_RDP ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_ROUTING ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_RSVP ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_RVD ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_SATEXPAK ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_SATMON ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_SCCSP ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_SCTP ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_SDRP ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_SEP ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_SRPC ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_ST ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_SVMTP ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_SWIPE ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_TCF ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_TP ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_TPXX ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_TRUNK1 ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_TRUNK2 ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_TTP ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_VINES ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_VISA ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_VMTP ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_WBEXPAK ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_WBMON ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_WSN ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_XNET ideal-int +pkg syscall (darwin-386-cgo), const IPPROTO_XTP ideal-int +pkg syscall (darwin-386-cgo), const IPV6_2292DSTOPTS ideal-int +pkg syscall (darwin-386-cgo), const IPV6_2292HOPLIMIT ideal-int +pkg syscall (darwin-386-cgo), const IPV6_2292HOPOPTS ideal-int +pkg syscall (darwin-386-cgo), const IPV6_2292NEXTHOP ideal-int +pkg syscall (darwin-386-cgo), const IPV6_2292PKTINFO ideal-int +pkg syscall (darwin-386-cgo), const IPV6_2292PKTOPTIONS ideal-int +pkg syscall (darwin-386-cgo), const IPV6_2292RTHDR ideal-int +pkg syscall (darwin-386-cgo), const IPV6_BINDV6ONLY ideal-int +pkg syscall (darwin-386-cgo), const IPV6_BOUND_IF ideal-int +pkg syscall (darwin-386-cgo), const IPV6_CHECKSUM ideal-int +pkg syscall (darwin-386-cgo), const IPV6_DEFAULT_MULTICAST_HOPS ideal-int +pkg syscall (darwin-386-cgo), const IPV6_DEFAULT_MULTICAST_LOOP ideal-int +pkg syscall (darwin-386-cgo), const IPV6_DEFHLIM ideal-int +pkg syscall (darwin-386-cgo), const IPV6_FAITH ideal-int +pkg syscall (darwin-386-cgo), const IPV6_FLOWINFO_MASK ideal-int +pkg syscall (darwin-386-cgo), const IPV6_FLOWLABEL_MASK ideal-int +pkg syscall (darwin-386-cgo), const IPV6_FRAGTTL ideal-int +pkg syscall (darwin-386-cgo), const IPV6_FW_ADD ideal-int +pkg syscall (darwin-386-cgo), const IPV6_FW_DEL ideal-int +pkg syscall (darwin-386-cgo), const IPV6_FW_FLUSH ideal-int +pkg syscall (darwin-386-cgo), const IPV6_FW_GET ideal-int +pkg syscall (darwin-386-cgo), const IPV6_FW_ZERO ideal-int +pkg syscall (darwin-386-cgo), const IPV6_HLIMDEC ideal-int +pkg syscall (darwin-386-cgo), const IPV6_IPSEC_POLICY ideal-int +pkg syscall (darwin-386-cgo), const IPV6_MAXHLIM ideal-int +pkg syscall (darwin-386-cgo), const IPV6_MAXOPTHDR ideal-int +pkg syscall (darwin-386-cgo), const IPV6_MAXPACKET ideal-int +pkg syscall (darwin-386-cgo), const IPV6_MAX_GROUP_SRC_FILTER ideal-int +pkg syscall (darwin-386-cgo), const IPV6_MAX_MEMBERSHIPS ideal-int +pkg syscall (darwin-386-cgo), const IPV6_MAX_SOCK_SRC_FILTER ideal-int +pkg syscall (darwin-386-cgo), const IPV6_MIN_MEMBERSHIPS ideal-int +pkg syscall (darwin-386-cgo), const IPV6_MMTU ideal-int +pkg syscall (darwin-386-cgo), const IPV6_PORTRANGE ideal-int +pkg syscall (darwin-386-cgo), const IPV6_PORTRANGE_DEFAULT ideal-int +pkg syscall (darwin-386-cgo), const IPV6_PORTRANGE_HIGH ideal-int +pkg syscall (darwin-386-cgo), const IPV6_PORTRANGE_LOW ideal-int +pkg syscall (darwin-386-cgo), const IPV6_RECVTCLASS ideal-int +pkg syscall (darwin-386-cgo), const IPV6_RTHDR_LOOSE ideal-int +pkg syscall (darwin-386-cgo), const IPV6_RTHDR_STRICT ideal-int +pkg syscall (darwin-386-cgo), const IPV6_RTHDR_TYPE_0 ideal-int +pkg syscall (darwin-386-cgo), const IPV6_SOCKOPT_RESERVED1 ideal-int +pkg syscall (darwin-386-cgo), const IPV6_TCLASS ideal-int +pkg syscall (darwin-386-cgo), const IPV6_VERSION ideal-int +pkg syscall (darwin-386-cgo), const IPV6_VERSION_MASK ideal-int +pkg syscall (darwin-386-cgo), const IP_ADD_SOURCE_MEMBERSHIP ideal-int +pkg syscall (darwin-386-cgo), const IP_BLOCK_SOURCE ideal-int +pkg syscall (darwin-386-cgo), const IP_BOUND_IF ideal-int +pkg syscall (darwin-386-cgo), const IP_DEFAULT_MULTICAST_LOOP ideal-int +pkg syscall (darwin-386-cgo), const IP_DEFAULT_MULTICAST_TTL ideal-int +pkg syscall (darwin-386-cgo), const IP_DF ideal-int +pkg syscall (darwin-386-cgo), const IP_DROP_SOURCE_MEMBERSHIP ideal-int +pkg syscall (darwin-386-cgo), const IP_DUMMYNET_CONFIGURE ideal-int +pkg syscall (darwin-386-cgo), const IP_DUMMYNET_DEL ideal-int +pkg syscall (darwin-386-cgo), const IP_DUMMYNET_FLUSH ideal-int +pkg syscall (darwin-386-cgo), const IP_DUMMYNET_GET ideal-int +pkg syscall (darwin-386-cgo), const IP_FAITH ideal-int +pkg syscall (darwin-386-cgo), const IP_FW_ADD ideal-int +pkg syscall (darwin-386-cgo), const IP_FW_DEL ideal-int +pkg syscall (darwin-386-cgo), const IP_FW_FLUSH ideal-int +pkg syscall (darwin-386-cgo), const IP_FW_GET ideal-int +pkg syscall (darwin-386-cgo), const IP_FW_RESETLOG ideal-int +pkg syscall (darwin-386-cgo), const IP_FW_ZERO ideal-int +pkg syscall (darwin-386-cgo), const IP_HDRINCL ideal-int +pkg syscall (darwin-386-cgo), const IP_IPSEC_POLICY ideal-int +pkg syscall (darwin-386-cgo), const IP_MAXPACKET ideal-int +pkg syscall (darwin-386-cgo), const IP_MAX_GROUP_SRC_FILTER ideal-int +pkg syscall (darwin-386-cgo), const IP_MAX_MEMBERSHIPS ideal-int +pkg syscall (darwin-386-cgo), const IP_MAX_SOCK_MUTE_FILTER ideal-int +pkg syscall (darwin-386-cgo), const IP_MAX_SOCK_SRC_FILTER ideal-int +pkg syscall (darwin-386-cgo), const IP_MF ideal-int +pkg syscall (darwin-386-cgo), const IP_MIN_MEMBERSHIPS ideal-int +pkg syscall (darwin-386-cgo), const IP_MSFILTER ideal-int +pkg syscall (darwin-386-cgo), const IP_MSS ideal-int +pkg syscall (darwin-386-cgo), const IP_MULTICAST_IFINDEX ideal-int +pkg syscall (darwin-386-cgo), const IP_MULTICAST_VIF ideal-int +pkg syscall (darwin-386-cgo), const IP_NAT__XXX ideal-int +pkg syscall (darwin-386-cgo), const IP_OFFMASK ideal-int +pkg syscall (darwin-386-cgo), const IP_OLD_FW_ADD ideal-int +pkg syscall (darwin-386-cgo), const IP_OLD_FW_DEL ideal-int +pkg syscall (darwin-386-cgo), const IP_OLD_FW_FLUSH ideal-int +pkg syscall (darwin-386-cgo), const IP_OLD_FW_GET ideal-int +pkg syscall (darwin-386-cgo), const IP_OLD_FW_RESETLOG ideal-int +pkg syscall (darwin-386-cgo), const IP_OLD_FW_ZERO ideal-int +pkg syscall (darwin-386-cgo), const IP_OPTIONS ideal-int +pkg syscall (darwin-386-cgo), const IP_PKTINFO ideal-int +pkg syscall (darwin-386-cgo), const IP_PORTRANGE ideal-int +pkg syscall (darwin-386-cgo), const IP_PORTRANGE_DEFAULT ideal-int +pkg syscall (darwin-386-cgo), const IP_PORTRANGE_HIGH ideal-int +pkg syscall (darwin-386-cgo), const IP_PORTRANGE_LOW ideal-int +pkg syscall (darwin-386-cgo), const IP_RECVDSTADDR ideal-int +pkg syscall (darwin-386-cgo), const IP_RECVIF ideal-int +pkg syscall (darwin-386-cgo), const IP_RECVOPTS ideal-int +pkg syscall (darwin-386-cgo), const IP_RECVPKTINFO ideal-int +pkg syscall (darwin-386-cgo), const IP_RECVRETOPTS ideal-int +pkg syscall (darwin-386-cgo), const IP_RECVTTL ideal-int +pkg syscall (darwin-386-cgo), const IP_RETOPTS ideal-int +pkg syscall (darwin-386-cgo), const IP_RF ideal-int +pkg syscall (darwin-386-cgo), const IP_RSVP_OFF ideal-int +pkg syscall (darwin-386-cgo), const IP_RSVP_ON ideal-int +pkg syscall (darwin-386-cgo), const IP_RSVP_VIF_OFF ideal-int +pkg syscall (darwin-386-cgo), const IP_RSVP_VIF_ON ideal-int +pkg syscall (darwin-386-cgo), const IP_STRIPHDR ideal-int +pkg syscall (darwin-386-cgo), const IP_TRAFFIC_MGT_BACKGROUND ideal-int +pkg syscall (darwin-386-cgo), const IP_UNBLOCK_SOURCE ideal-int +pkg syscall (darwin-386-cgo), const LOCK_EX ideal-int +pkg syscall (darwin-386-cgo), const LOCK_NB ideal-int +pkg syscall (darwin-386-cgo), const LOCK_SH ideal-int +pkg syscall (darwin-386-cgo), const LOCK_UN ideal-int +pkg syscall (darwin-386-cgo), const MADV_CAN_REUSE ideal-int +pkg syscall (darwin-386-cgo), const MADV_DONTNEED ideal-int +pkg syscall (darwin-386-cgo), const MADV_FREE ideal-int +pkg syscall (darwin-386-cgo), const MADV_FREE_REUSABLE ideal-int +pkg syscall (darwin-386-cgo), const MADV_FREE_REUSE ideal-int +pkg syscall (darwin-386-cgo), const MADV_NORMAL ideal-int +pkg syscall (darwin-386-cgo), const MADV_RANDOM ideal-int +pkg syscall (darwin-386-cgo), const MADV_SEQUENTIAL ideal-int +pkg syscall (darwin-386-cgo), const MADV_WILLNEED ideal-int +pkg syscall (darwin-386-cgo), const MADV_ZERO_WIRED_PAGES ideal-int +pkg syscall (darwin-386-cgo), const MAP_ANON ideal-int +pkg syscall (darwin-386-cgo), const MAP_COPY ideal-int +pkg syscall (darwin-386-cgo), const MAP_FILE ideal-int +pkg syscall (darwin-386-cgo), const MAP_FIXED ideal-int +pkg syscall (darwin-386-cgo), const MAP_HASSEMAPHORE ideal-int +pkg syscall (darwin-386-cgo), const MAP_JIT ideal-int +pkg syscall (darwin-386-cgo), const MAP_NOCACHE ideal-int +pkg syscall (darwin-386-cgo), const MAP_NOEXTEND ideal-int +pkg syscall (darwin-386-cgo), const MAP_NORESERVE ideal-int +pkg syscall (darwin-386-cgo), const MAP_PRIVATE ideal-int +pkg syscall (darwin-386-cgo), const MAP_RENAME ideal-int +pkg syscall (darwin-386-cgo), const MAP_RESERVED0080 ideal-int +pkg syscall (darwin-386-cgo), const MAP_SHARED ideal-int +pkg syscall (darwin-386-cgo), const MCL_CURRENT ideal-int +pkg syscall (darwin-386-cgo), const MCL_FUTURE ideal-int +pkg syscall (darwin-386-cgo), const MSG_CTRUNC ideal-int +pkg syscall (darwin-386-cgo), const MSG_DONTROUTE ideal-int +pkg syscall (darwin-386-cgo), const MSG_DONTWAIT ideal-int +pkg syscall (darwin-386-cgo), const MSG_EOF ideal-int +pkg syscall (darwin-386-cgo), const MSG_EOR ideal-int +pkg syscall (darwin-386-cgo), const MSG_FLUSH ideal-int +pkg syscall (darwin-386-cgo), const MSG_HAVEMORE ideal-int +pkg syscall (darwin-386-cgo), const MSG_HOLD ideal-int +pkg syscall (darwin-386-cgo), const MSG_NEEDSA ideal-int +pkg syscall (darwin-386-cgo), const MSG_OOB ideal-int +pkg syscall (darwin-386-cgo), const MSG_PEEK ideal-int +pkg syscall (darwin-386-cgo), const MSG_RCVMORE ideal-int +pkg syscall (darwin-386-cgo), const MSG_SEND ideal-int +pkg syscall (darwin-386-cgo), const MSG_TRUNC ideal-int +pkg syscall (darwin-386-cgo), const MSG_WAITALL ideal-int +pkg syscall (darwin-386-cgo), const MSG_WAITSTREAM ideal-int +pkg syscall (darwin-386-cgo), const MS_ASYNC ideal-int +pkg syscall (darwin-386-cgo), const MS_DEACTIVATE ideal-int +pkg syscall (darwin-386-cgo), const MS_INVALIDATE ideal-int +pkg syscall (darwin-386-cgo), const MS_KILLPAGES ideal-int +pkg syscall (darwin-386-cgo), const MS_SYNC ideal-int +pkg syscall (darwin-386-cgo), const NAME_MAX ideal-int +pkg syscall (darwin-386-cgo), const NET_RT_DUMP ideal-int +pkg syscall (darwin-386-cgo), const NET_RT_DUMP2 ideal-int +pkg syscall (darwin-386-cgo), const NET_RT_FLAGS ideal-int +pkg syscall (darwin-386-cgo), const NET_RT_IFLIST ideal-int +pkg syscall (darwin-386-cgo), const NET_RT_IFLIST2 ideal-int +pkg syscall (darwin-386-cgo), const NET_RT_MAXID ideal-int +pkg syscall (darwin-386-cgo), const NET_RT_STAT ideal-int +pkg syscall (darwin-386-cgo), const NET_RT_TRASH ideal-int +pkg syscall (darwin-386-cgo), const NOTE_ABSOLUTE ideal-int +pkg syscall (darwin-386-cgo), const NOTE_ATTRIB ideal-int +pkg syscall (darwin-386-cgo), const NOTE_CHILD ideal-int +pkg syscall (darwin-386-cgo), const NOTE_DELETE ideal-int +pkg syscall (darwin-386-cgo), const NOTE_EXEC ideal-int +pkg syscall (darwin-386-cgo), const NOTE_EXIT ideal-int +pkg syscall (darwin-386-cgo), const NOTE_EXITSTATUS ideal-int +pkg syscall (darwin-386-cgo), const NOTE_EXTEND ideal-int +pkg syscall (darwin-386-cgo), const NOTE_FFAND ideal-int +pkg syscall (darwin-386-cgo), const NOTE_FFCOPY ideal-int +pkg syscall (darwin-386-cgo), const NOTE_FFCTRLMASK ideal-int +pkg syscall (darwin-386-cgo), const NOTE_FFLAGSMASK ideal-int +pkg syscall (darwin-386-cgo), const NOTE_FFNOP ideal-int +pkg syscall (darwin-386-cgo), const NOTE_FFOR ideal-int +pkg syscall (darwin-386-cgo), const NOTE_FORK ideal-int +pkg syscall (darwin-386-cgo), const NOTE_LINK ideal-int +pkg syscall (darwin-386-cgo), const NOTE_LOWAT ideal-int +pkg syscall (darwin-386-cgo), const NOTE_NONE ideal-int +pkg syscall (darwin-386-cgo), const NOTE_NSECONDS ideal-int +pkg syscall (darwin-386-cgo), const NOTE_PCTRLMASK ideal-int +pkg syscall (darwin-386-cgo), const NOTE_PDATAMASK ideal-int +pkg syscall (darwin-386-cgo), const NOTE_REAP ideal-int +pkg syscall (darwin-386-cgo), const NOTE_RENAME ideal-int +pkg syscall (darwin-386-cgo), const NOTE_RESOURCEEND ideal-int +pkg syscall (darwin-386-cgo), const NOTE_REVOKE ideal-int +pkg syscall (darwin-386-cgo), const NOTE_SECONDS ideal-int +pkg syscall (darwin-386-cgo), const NOTE_SIGNAL ideal-int +pkg syscall (darwin-386-cgo), const NOTE_TRACK ideal-int +pkg syscall (darwin-386-cgo), const NOTE_TRACKERR ideal-int +pkg syscall (darwin-386-cgo), const NOTE_TRIGGER ideal-int +pkg syscall (darwin-386-cgo), const NOTE_USECONDS ideal-int +pkg syscall (darwin-386-cgo), const NOTE_VM_ERROR ideal-int +pkg syscall (darwin-386-cgo), const NOTE_VM_PRESSURE ideal-int +pkg syscall (darwin-386-cgo), const NOTE_VM_PRESSURE_SUDDEN_TERMINATE ideal-int +pkg syscall (darwin-386-cgo), const NOTE_VM_PRESSURE_TERMINATE ideal-int +pkg syscall (darwin-386-cgo), const NOTE_WRITE ideal-int +pkg syscall (darwin-386-cgo), const O_ACCMODE ideal-int +pkg syscall (darwin-386-cgo), const O_ALERT ideal-int +pkg syscall (darwin-386-cgo), const O_DIRECTORY ideal-int +pkg syscall (darwin-386-cgo), const O_DSYNC ideal-int +pkg syscall (darwin-386-cgo), const O_EVTONLY ideal-int +pkg syscall (darwin-386-cgo), const O_EXLOCK ideal-int +pkg syscall (darwin-386-cgo), const O_FSYNC ideal-int +pkg syscall (darwin-386-cgo), const O_NDELAY ideal-int +pkg syscall (darwin-386-cgo), const O_NOFOLLOW ideal-int +pkg syscall (darwin-386-cgo), const O_POPUP ideal-int +pkg syscall (darwin-386-cgo), const O_SHLOCK ideal-int +pkg syscall (darwin-386-cgo), const O_SYMLINK ideal-int +pkg syscall (darwin-386-cgo), const PROT_EXEC ideal-int +pkg syscall (darwin-386-cgo), const PROT_NONE ideal-int +pkg syscall (darwin-386-cgo), const PROT_READ ideal-int +pkg syscall (darwin-386-cgo), const PROT_WRITE ideal-int +pkg syscall (darwin-386-cgo), const PTRACE_CONT ideal-int +pkg syscall (darwin-386-cgo), const PTRACE_KILL ideal-int +pkg syscall (darwin-386-cgo), const PTRACE_TRACEME ideal-int +pkg syscall (darwin-386-cgo), const PT_ATTACH ideal-int +pkg syscall (darwin-386-cgo), const PT_ATTACHEXC ideal-int +pkg syscall (darwin-386-cgo), const PT_CONTINUE ideal-int +pkg syscall (darwin-386-cgo), const PT_DENY_ATTACH ideal-int +pkg syscall (darwin-386-cgo), const PT_DETACH ideal-int +pkg syscall (darwin-386-cgo), const PT_FIRSTMACH ideal-int +pkg syscall (darwin-386-cgo), const PT_FORCEQUOTA ideal-int +pkg syscall (darwin-386-cgo), const PT_KILL ideal-int +pkg syscall (darwin-386-cgo), const PT_READ_D ideal-int +pkg syscall (darwin-386-cgo), const PT_READ_I ideal-int +pkg syscall (darwin-386-cgo), const PT_READ_U ideal-int +pkg syscall (darwin-386-cgo), const PT_SIGEXC ideal-int +pkg syscall (darwin-386-cgo), const PT_STEP ideal-int +pkg syscall (darwin-386-cgo), const PT_THUPDATE ideal-int +pkg syscall (darwin-386-cgo), const PT_TRACE_ME ideal-int +pkg syscall (darwin-386-cgo), const PT_WRITE_D ideal-int +pkg syscall (darwin-386-cgo), const PT_WRITE_I ideal-int +pkg syscall (darwin-386-cgo), const PT_WRITE_U ideal-int +pkg syscall (darwin-386-cgo), const RLIMIT_AS ideal-int +pkg syscall (darwin-386-cgo), const RLIMIT_CORE ideal-int +pkg syscall (darwin-386-cgo), const RLIMIT_CPU ideal-int +pkg syscall (darwin-386-cgo), const RLIMIT_DATA ideal-int +pkg syscall (darwin-386-cgo), const RLIMIT_FSIZE ideal-int +pkg syscall (darwin-386-cgo), const RLIMIT_NOFILE ideal-int +pkg syscall (darwin-386-cgo), const RLIMIT_STACK ideal-int +pkg syscall (darwin-386-cgo), const RLIM_INFINITY ideal-int +pkg syscall (darwin-386-cgo), const RTAX_AUTHOR ideal-int +pkg syscall (darwin-386-cgo), const RTAX_BRD ideal-int +pkg syscall (darwin-386-cgo), const RTAX_DST ideal-int +pkg syscall (darwin-386-cgo), const RTAX_GATEWAY ideal-int +pkg syscall (darwin-386-cgo), const RTAX_GENMASK ideal-int +pkg syscall (darwin-386-cgo), const RTAX_IFA ideal-int +pkg syscall (darwin-386-cgo), const RTAX_IFP ideal-int +pkg syscall (darwin-386-cgo), const RTAX_MAX ideal-int +pkg syscall (darwin-386-cgo), const RTAX_NETMASK ideal-int +pkg syscall (darwin-386-cgo), const RTA_AUTHOR ideal-int +pkg syscall (darwin-386-cgo), const RTA_BRD ideal-int +pkg syscall (darwin-386-cgo), const RTA_DST ideal-int +pkg syscall (darwin-386-cgo), const RTA_GATEWAY ideal-int +pkg syscall (darwin-386-cgo), const RTA_GENMASK ideal-int +pkg syscall (darwin-386-cgo), const RTA_IFA ideal-int +pkg syscall (darwin-386-cgo), const RTA_IFP ideal-int +pkg syscall (darwin-386-cgo), const RTA_NETMASK ideal-int +pkg syscall (darwin-386-cgo), const RTF_BLACKHOLE ideal-int +pkg syscall (darwin-386-cgo), const RTF_BROADCAST ideal-int +pkg syscall (darwin-386-cgo), const RTF_CLONING ideal-int +pkg syscall (darwin-386-cgo), const RTF_CONDEMNED ideal-int +pkg syscall (darwin-386-cgo), const RTF_DELCLONE ideal-int +pkg syscall (darwin-386-cgo), const RTF_DONE ideal-int +pkg syscall (darwin-386-cgo), const RTF_DYNAMIC ideal-int +pkg syscall (darwin-386-cgo), const RTF_GATEWAY ideal-int +pkg syscall (darwin-386-cgo), const RTF_HOST ideal-int +pkg syscall (darwin-386-cgo), const RTF_IFREF ideal-int +pkg syscall (darwin-386-cgo), const RTF_IFSCOPE ideal-int +pkg syscall (darwin-386-cgo), const RTF_LLINFO ideal-int +pkg syscall (darwin-386-cgo), const RTF_LOCAL ideal-int +pkg syscall (darwin-386-cgo), const RTF_MODIFIED ideal-int +pkg syscall (darwin-386-cgo), const RTF_MULTICAST ideal-int +pkg syscall (darwin-386-cgo), const RTF_PINNED ideal-int +pkg syscall (darwin-386-cgo), const RTF_PRCLONING ideal-int +pkg syscall (darwin-386-cgo), const RTF_PROTO1 ideal-int +pkg syscall (darwin-386-cgo), const RTF_PROTO2 ideal-int +pkg syscall (darwin-386-cgo), const RTF_PROTO3 ideal-int +pkg syscall (darwin-386-cgo), const RTF_REJECT ideal-int +pkg syscall (darwin-386-cgo), const RTF_STATIC ideal-int +pkg syscall (darwin-386-cgo), const RTF_UP ideal-int +pkg syscall (darwin-386-cgo), const RTF_WASCLONED ideal-int +pkg syscall (darwin-386-cgo), const RTF_XRESOLVE ideal-int +pkg syscall (darwin-386-cgo), const RTM_ADD ideal-int +pkg syscall (darwin-386-cgo), const RTM_CHANGE ideal-int +pkg syscall (darwin-386-cgo), const RTM_DELADDR ideal-int +pkg syscall (darwin-386-cgo), const RTM_DELETE ideal-int +pkg syscall (darwin-386-cgo), const RTM_DELMADDR ideal-int +pkg syscall (darwin-386-cgo), const RTM_GET ideal-int +pkg syscall (darwin-386-cgo), const RTM_GET2 ideal-int +pkg syscall (darwin-386-cgo), const RTM_IFINFO ideal-int +pkg syscall (darwin-386-cgo), const RTM_IFINFO2 ideal-int +pkg syscall (darwin-386-cgo), const RTM_LOCK ideal-int +pkg syscall (darwin-386-cgo), const RTM_LOSING ideal-int +pkg syscall (darwin-386-cgo), const RTM_MISS ideal-int +pkg syscall (darwin-386-cgo), const RTM_NEWADDR ideal-int +pkg syscall (darwin-386-cgo), const RTM_NEWMADDR ideal-int +pkg syscall (darwin-386-cgo), const RTM_NEWMADDR2 ideal-int +pkg syscall (darwin-386-cgo), const RTM_OLDADD ideal-int +pkg syscall (darwin-386-cgo), const RTM_OLDDEL ideal-int +pkg syscall (darwin-386-cgo), const RTM_REDIRECT ideal-int +pkg syscall (darwin-386-cgo), const RTM_RESOLVE ideal-int +pkg syscall (darwin-386-cgo), const RTM_RTTUNIT ideal-int +pkg syscall (darwin-386-cgo), const RTM_VERSION ideal-int +pkg syscall (darwin-386-cgo), const RTV_EXPIRE ideal-int +pkg syscall (darwin-386-cgo), const RTV_HOPCOUNT ideal-int +pkg syscall (darwin-386-cgo), const RTV_MTU ideal-int +pkg syscall (darwin-386-cgo), const RTV_RPIPE ideal-int +pkg syscall (darwin-386-cgo), const RTV_RTT ideal-int +pkg syscall (darwin-386-cgo), const RTV_RTTVAR ideal-int +pkg syscall (darwin-386-cgo), const RTV_SPIPE ideal-int +pkg syscall (darwin-386-cgo), const RTV_SSTHRESH ideal-int +pkg syscall (darwin-386-cgo), const RUSAGE_CHILDREN ideal-int +pkg syscall (darwin-386-cgo), const RUSAGE_SELF ideal-int +pkg syscall (darwin-386-cgo), const SCM_CREDS ideal-int +pkg syscall (darwin-386-cgo), const SCM_RIGHTS ideal-int +pkg syscall (darwin-386-cgo), const SCM_TIMESTAMP ideal-int +pkg syscall (darwin-386-cgo), const SCM_TIMESTAMP_MONOTONIC ideal-int +pkg syscall (darwin-386-cgo), const SIGCHLD Signal +pkg syscall (darwin-386-cgo), const SIGCONT Signal +pkg syscall (darwin-386-cgo), const SIGEMT Signal +pkg syscall (darwin-386-cgo), const SIGINFO Signal +pkg syscall (darwin-386-cgo), const SIGIO Signal +pkg syscall (darwin-386-cgo), const SIGIOT Signal +pkg syscall (darwin-386-cgo), const SIGPROF Signal +pkg syscall (darwin-386-cgo), const SIGSTOP Signal +pkg syscall (darwin-386-cgo), const SIGSYS Signal +pkg syscall (darwin-386-cgo), const SIGTSTP Signal +pkg syscall (darwin-386-cgo), const SIGTTIN Signal +pkg syscall (darwin-386-cgo), const SIGTTOU Signal +pkg syscall (darwin-386-cgo), const SIGURG Signal +pkg syscall (darwin-386-cgo), const SIGUSR1 Signal +pkg syscall (darwin-386-cgo), const SIGUSR2 Signal +pkg syscall (darwin-386-cgo), const SIGVTALRM Signal +pkg syscall (darwin-386-cgo), const SIGWINCH Signal +pkg syscall (darwin-386-cgo), const SIGXCPU Signal +pkg syscall (darwin-386-cgo), const SIGXFSZ Signal +pkg syscall (darwin-386-cgo), const SIOCADDMULTI ideal-int +pkg syscall (darwin-386-cgo), const SIOCAIFADDR ideal-int +pkg syscall (darwin-386-cgo), const SIOCALIFADDR ideal-int +pkg syscall (darwin-386-cgo), const SIOCARPIPLL ideal-int +pkg syscall (darwin-386-cgo), const SIOCATMARK ideal-int +pkg syscall (darwin-386-cgo), const SIOCAUTOADDR ideal-int +pkg syscall (darwin-386-cgo), const SIOCAUTONETMASK ideal-int +pkg syscall (darwin-386-cgo), const SIOCDELMULTI ideal-int +pkg syscall (darwin-386-cgo), const SIOCDIFADDR ideal-int +pkg syscall (darwin-386-cgo), const SIOCDIFPHYADDR ideal-int +pkg syscall (darwin-386-cgo), const SIOCDLIFADDR ideal-int +pkg syscall (darwin-386-cgo), const SIOCGDRVSPEC ideal-int +pkg syscall (darwin-386-cgo), const SIOCGETSGCNT ideal-int +pkg syscall (darwin-386-cgo), const SIOCGETVIFCNT ideal-int +pkg syscall (darwin-386-cgo), const SIOCGETVLAN ideal-int +pkg syscall (darwin-386-cgo), const SIOCGHIWAT ideal-int +pkg syscall (darwin-386-cgo), const SIOCGIFADDR ideal-int +pkg syscall (darwin-386-cgo), const SIOCGIFALTMTU ideal-int +pkg syscall (darwin-386-cgo), const SIOCGIFASYNCMAP ideal-int +pkg syscall (darwin-386-cgo), const SIOCGIFBOND ideal-int +pkg syscall (darwin-386-cgo), const SIOCGIFBRDADDR ideal-int +pkg syscall (darwin-386-cgo), const SIOCGIFCAP ideal-int +pkg syscall (darwin-386-cgo), const SIOCGIFCONF ideal-int +pkg syscall (darwin-386-cgo), const SIOCGIFDEVMTU ideal-int +pkg syscall (darwin-386-cgo), const SIOCGIFDSTADDR ideal-int +pkg syscall (darwin-386-cgo), const SIOCGIFFLAGS ideal-int +pkg syscall (darwin-386-cgo), const SIOCGIFGENERIC ideal-int +pkg syscall (darwin-386-cgo), const SIOCGIFKPI ideal-int +pkg syscall (darwin-386-cgo), const SIOCGIFMAC ideal-int +pkg syscall (darwin-386-cgo), const SIOCGIFMEDIA ideal-int +pkg syscall (darwin-386-cgo), const SIOCGIFMETRIC ideal-int +pkg syscall (darwin-386-cgo), const SIOCGIFMTU ideal-int +pkg syscall (darwin-386-cgo), const SIOCGIFNETMASK ideal-int +pkg syscall (darwin-386-cgo), const SIOCGIFPDSTADDR ideal-int +pkg syscall (darwin-386-cgo), const SIOCGIFPHYS ideal-int +pkg syscall (darwin-386-cgo), const SIOCGIFPSRCADDR ideal-int +pkg syscall (darwin-386-cgo), const SIOCGIFSTATUS ideal-int +pkg syscall (darwin-386-cgo), const SIOCGIFVLAN ideal-int +pkg syscall (darwin-386-cgo), const SIOCGIFWAKEFLAGS ideal-int +pkg syscall (darwin-386-cgo), const SIOCGLIFADDR ideal-int +pkg syscall (darwin-386-cgo), const SIOCGLIFPHYADDR ideal-int +pkg syscall (darwin-386-cgo), const SIOCGLOWAT ideal-int +pkg syscall (darwin-386-cgo), const SIOCGPGRP ideal-int +pkg syscall (darwin-386-cgo), const SIOCIFCREATE ideal-int +pkg syscall (darwin-386-cgo), const SIOCIFCREATE2 ideal-int +pkg syscall (darwin-386-cgo), const SIOCIFDESTROY ideal-int +pkg syscall (darwin-386-cgo), const SIOCRSLVMULTI ideal-int +pkg syscall (darwin-386-cgo), const SIOCSDRVSPEC ideal-int +pkg syscall (darwin-386-cgo), const SIOCSETVLAN ideal-int +pkg syscall (darwin-386-cgo), const SIOCSHIWAT ideal-int +pkg syscall (darwin-386-cgo), const SIOCSIFADDR ideal-int +pkg syscall (darwin-386-cgo), const SIOCSIFALTMTU ideal-int +pkg syscall (darwin-386-cgo), const SIOCSIFASYNCMAP ideal-int +pkg syscall (darwin-386-cgo), const SIOCSIFBOND ideal-int +pkg syscall (darwin-386-cgo), const SIOCSIFBRDADDR ideal-int +pkg syscall (darwin-386-cgo), const SIOCSIFCAP ideal-int +pkg syscall (darwin-386-cgo), const SIOCSIFDSTADDR ideal-int +pkg syscall (darwin-386-cgo), const SIOCSIFFLAGS ideal-int +pkg syscall (darwin-386-cgo), const SIOCSIFGENERIC ideal-int +pkg syscall (darwin-386-cgo), const SIOCSIFKPI ideal-int +pkg syscall (darwin-386-cgo), const SIOCSIFLLADDR ideal-int +pkg syscall (darwin-386-cgo), const SIOCSIFMAC ideal-int +pkg syscall (darwin-386-cgo), const SIOCSIFMEDIA ideal-int +pkg syscall (darwin-386-cgo), const SIOCSIFMETRIC ideal-int +pkg syscall (darwin-386-cgo), const SIOCSIFMTU ideal-int +pkg syscall (darwin-386-cgo), const SIOCSIFNETMASK ideal-int +pkg syscall (darwin-386-cgo), const SIOCSIFPHYADDR ideal-int +pkg syscall (darwin-386-cgo), const SIOCSIFPHYS ideal-int +pkg syscall (darwin-386-cgo), const SIOCSIFVLAN ideal-int +pkg syscall (darwin-386-cgo), const SIOCSLIFPHYADDR ideal-int +pkg syscall (darwin-386-cgo), const SIOCSLOWAT ideal-int +pkg syscall (darwin-386-cgo), const SIOCSPGRP ideal-int +pkg syscall (darwin-386-cgo), const SOCK_MAXADDRLEN ideal-int +pkg syscall (darwin-386-cgo), const SOCK_RDM ideal-int +pkg syscall (darwin-386-cgo), const SO_ACCEPTCONN ideal-int +pkg syscall (darwin-386-cgo), const SO_DEBUG ideal-int +pkg syscall (darwin-386-cgo), const SO_DONTTRUNC ideal-int +pkg syscall (darwin-386-cgo), const SO_ERROR ideal-int +pkg syscall (darwin-386-cgo), const SO_LABEL ideal-int +pkg syscall (darwin-386-cgo), const SO_LINGER_SEC ideal-int +pkg syscall (darwin-386-cgo), const SO_NKE ideal-int +pkg syscall (darwin-386-cgo), const SO_NOADDRERR ideal-int +pkg syscall (darwin-386-cgo), const SO_NOSIGPIPE ideal-int +pkg syscall (darwin-386-cgo), const SO_NOTIFYCONFLICT ideal-int +pkg syscall (darwin-386-cgo), const SO_NP_EXTENSIONS ideal-int +pkg syscall (darwin-386-cgo), const SO_NREAD ideal-int +pkg syscall (darwin-386-cgo), const SO_NWRITE ideal-int +pkg syscall (darwin-386-cgo), const SO_OOBINLINE ideal-int +pkg syscall (darwin-386-cgo), const SO_PEERLABEL ideal-int +pkg syscall (darwin-386-cgo), const SO_RANDOMPORT ideal-int +pkg syscall (darwin-386-cgo), const SO_RCVLOWAT ideal-int +pkg syscall (darwin-386-cgo), const SO_RCVTIMEO ideal-int +pkg syscall (darwin-386-cgo), const SO_RESTRICTIONS ideal-int +pkg syscall (darwin-386-cgo), const SO_RESTRICT_DENYIN ideal-int +pkg syscall (darwin-386-cgo), const SO_RESTRICT_DENYOUT ideal-int +pkg syscall (darwin-386-cgo), const SO_RESTRICT_DENYSET ideal-int +pkg syscall (darwin-386-cgo), const SO_REUSEPORT ideal-int +pkg syscall (darwin-386-cgo), const SO_REUSESHAREUID ideal-int +pkg syscall (darwin-386-cgo), const SO_SNDLOWAT ideal-int +pkg syscall (darwin-386-cgo), const SO_SNDTIMEO ideal-int +pkg syscall (darwin-386-cgo), const SO_TIMESTAMP ideal-int +pkg syscall (darwin-386-cgo), const SO_TIMESTAMP_MONOTONIC ideal-int +pkg syscall (darwin-386-cgo), const SO_TYPE ideal-int +pkg syscall (darwin-386-cgo), const SO_UPCALLCLOSEWAIT ideal-int +pkg syscall (darwin-386-cgo), const SO_USELOOPBACK ideal-int +pkg syscall (darwin-386-cgo), const SO_WANTMORE ideal-int +pkg syscall (darwin-386-cgo), const SO_WANTOOBFLAG ideal-int +pkg syscall (darwin-386-cgo), const SYS_ACCEPT ideal-int +pkg syscall (darwin-386-cgo), const SYS_ACCEPT_NOCANCEL ideal-int +pkg syscall (darwin-386-cgo), const SYS_ACCESS ideal-int +pkg syscall (darwin-386-cgo), const SYS_ACCESS_EXTENDED ideal-int +pkg syscall (darwin-386-cgo), const SYS_ACCT ideal-int +pkg syscall (darwin-386-cgo), const SYS_ADD_PROFIL ideal-int +pkg syscall (darwin-386-cgo), const SYS_ADJTIME ideal-int +pkg syscall (darwin-386-cgo), const SYS_AIO_CANCEL ideal-int +pkg syscall (darwin-386-cgo), const SYS_AIO_ERROR ideal-int +pkg syscall (darwin-386-cgo), const SYS_AIO_FSYNC ideal-int +pkg syscall (darwin-386-cgo), const SYS_AIO_READ ideal-int +pkg syscall (darwin-386-cgo), const SYS_AIO_RETURN ideal-int +pkg syscall (darwin-386-cgo), const SYS_AIO_SUSPEND ideal-int +pkg syscall (darwin-386-cgo), const SYS_AIO_SUSPEND_NOCANCEL ideal-int +pkg syscall (darwin-386-cgo), const SYS_AIO_WRITE ideal-int +pkg syscall (darwin-386-cgo), const SYS_ATGETMSG ideal-int +pkg syscall (darwin-386-cgo), const SYS_ATPGETREQ ideal-int +pkg syscall (darwin-386-cgo), const SYS_ATPGETRSP ideal-int +pkg syscall (darwin-386-cgo), const SYS_ATPSNDREQ ideal-int +pkg syscall (darwin-386-cgo), const SYS_ATPSNDRSP ideal-int +pkg syscall (darwin-386-cgo), const SYS_ATPUTMSG ideal-int +pkg syscall (darwin-386-cgo), const SYS_ATSOCKET ideal-int +pkg syscall (darwin-386-cgo), const SYS_AUDIT ideal-int +pkg syscall (darwin-386-cgo), const SYS_AUDITCTL ideal-int +pkg syscall (darwin-386-cgo), const SYS_AUDITON ideal-int +pkg syscall (darwin-386-cgo), const SYS_AUDIT_SESSION_JOIN ideal-int +pkg syscall (darwin-386-cgo), const SYS_AUDIT_SESSION_PORT ideal-int +pkg syscall (darwin-386-cgo), const SYS_AUDIT_SESSION_SELF ideal-int +pkg syscall (darwin-386-cgo), const SYS_BIND ideal-int +pkg syscall (darwin-386-cgo), const SYS_BSDTHREAD_CREATE ideal-int +pkg syscall (darwin-386-cgo), const SYS_BSDTHREAD_REGISTER ideal-int +pkg syscall (darwin-386-cgo), const SYS_BSDTHREAD_TERMINATE ideal-int +pkg syscall (darwin-386-cgo), const SYS_CHDIR ideal-int +pkg syscall (darwin-386-cgo), const SYS_CHFLAGS ideal-int +pkg syscall (darwin-386-cgo), const SYS_CHMOD ideal-int +pkg syscall (darwin-386-cgo), const SYS_CHMOD_EXTENDED ideal-int +pkg syscall (darwin-386-cgo), const SYS_CHOWN ideal-int +pkg syscall (darwin-386-cgo), const SYS_CHROOT ideal-int +pkg syscall (darwin-386-cgo), const SYS_CHUD ideal-int +pkg syscall (darwin-386-cgo), const SYS_CLOSE ideal-int +pkg syscall (darwin-386-cgo), const SYS_CLOSE_NOCANCEL ideal-int +pkg syscall (darwin-386-cgo), const SYS_CONNECT ideal-int +pkg syscall (darwin-386-cgo), const SYS_CONNECT_NOCANCEL ideal-int +pkg syscall (darwin-386-cgo), const SYS_COPYFILE ideal-int +pkg syscall (darwin-386-cgo), const SYS_CSOPS ideal-int +pkg syscall (darwin-386-cgo), const SYS_DELETE ideal-int +pkg syscall (darwin-386-cgo), const SYS_DUP ideal-int +pkg syscall (darwin-386-cgo), const SYS_DUP2 ideal-int +pkg syscall (darwin-386-cgo), const SYS_EXCHANGEDATA ideal-int +pkg syscall (darwin-386-cgo), const SYS_EXECVE ideal-int +pkg syscall (darwin-386-cgo), const SYS_EXIT ideal-int +pkg syscall (darwin-386-cgo), const SYS_FCHDIR ideal-int +pkg syscall (darwin-386-cgo), const SYS_FCHFLAGS ideal-int +pkg syscall (darwin-386-cgo), const SYS_FCHMOD ideal-int +pkg syscall (darwin-386-cgo), const SYS_FCHMOD_EXTENDED ideal-int +pkg syscall (darwin-386-cgo), const SYS_FCHOWN ideal-int +pkg syscall (darwin-386-cgo), const SYS_FCNTL ideal-int +pkg syscall (darwin-386-cgo), const SYS_FCNTL_NOCANCEL ideal-int +pkg syscall (darwin-386-cgo), const SYS_FDATASYNC ideal-int +pkg syscall (darwin-386-cgo), const SYS_FFSCTL ideal-int +pkg syscall (darwin-386-cgo), const SYS_FGETATTRLIST ideal-int +pkg syscall (darwin-386-cgo), const SYS_FGETXATTR ideal-int +pkg syscall (darwin-386-cgo), const SYS_FHOPEN ideal-int +pkg syscall (darwin-386-cgo), const SYS_FILEPORT_MAKEFD ideal-int +pkg syscall (darwin-386-cgo), const SYS_FILEPORT_MAKEPORT ideal-int +pkg syscall (darwin-386-cgo), const SYS_FLISTXATTR ideal-int +pkg syscall (darwin-386-cgo), const SYS_FLOCK ideal-int +pkg syscall (darwin-386-cgo), const SYS_FORK ideal-int +pkg syscall (darwin-386-cgo), const SYS_FPATHCONF ideal-int +pkg syscall (darwin-386-cgo), const SYS_FREMOVEXATTR ideal-int +pkg syscall (darwin-386-cgo), const SYS_FSCTL ideal-int +pkg syscall (darwin-386-cgo), const SYS_FSETATTRLIST ideal-int +pkg syscall (darwin-386-cgo), const SYS_FSETXATTR ideal-int +pkg syscall (darwin-386-cgo), const SYS_FSGETPATH ideal-int +pkg syscall (darwin-386-cgo), const SYS_FSTAT ideal-int +pkg syscall (darwin-386-cgo), const SYS_FSTAT64 ideal-int +pkg syscall (darwin-386-cgo), const SYS_FSTAT64_EXTENDED ideal-int +pkg syscall (darwin-386-cgo), const SYS_FSTATFS ideal-int +pkg syscall (darwin-386-cgo), const SYS_FSTATFS64 ideal-int +pkg syscall (darwin-386-cgo), const SYS_FSTATV ideal-int +pkg syscall (darwin-386-cgo), const SYS_FSTAT_EXTENDED ideal-int +pkg syscall (darwin-386-cgo), const SYS_FSYNC ideal-int +pkg syscall (darwin-386-cgo), const SYS_FSYNC_NOCANCEL ideal-int +pkg syscall (darwin-386-cgo), const SYS_FTRUNCATE ideal-int +pkg syscall (darwin-386-cgo), const SYS_FUTIMES ideal-int +pkg syscall (darwin-386-cgo), const SYS_GETATTRLIST ideal-int +pkg syscall (darwin-386-cgo), const SYS_GETAUDIT ideal-int +pkg syscall (darwin-386-cgo), const SYS_GETAUDIT_ADDR ideal-int +pkg syscall (darwin-386-cgo), const SYS_GETAUID ideal-int +pkg syscall (darwin-386-cgo), const SYS_GETDIRENTRIES ideal-int +pkg syscall (darwin-386-cgo), const SYS_GETDIRENTRIES64 ideal-int +pkg syscall (darwin-386-cgo), const SYS_GETDIRENTRIESATTR ideal-int +pkg syscall (darwin-386-cgo), const SYS_GETDTABLESIZE ideal-int +pkg syscall (darwin-386-cgo), const SYS_GETEGID ideal-int +pkg syscall (darwin-386-cgo), const SYS_GETEUID ideal-int +pkg syscall (darwin-386-cgo), const SYS_GETFH ideal-int +pkg syscall (darwin-386-cgo), const SYS_GETFSSTAT ideal-int +pkg syscall (darwin-386-cgo), const SYS_GETFSSTAT64 ideal-int +pkg syscall (darwin-386-cgo), const SYS_GETGID ideal-int +pkg syscall (darwin-386-cgo), const SYS_GETGROUPS ideal-int +pkg syscall (darwin-386-cgo), const SYS_GETHOSTUUID ideal-int +pkg syscall (darwin-386-cgo), const SYS_GETITIMER ideal-int +pkg syscall (darwin-386-cgo), const SYS_GETLCID ideal-int +pkg syscall (darwin-386-cgo), const SYS_GETLOGIN ideal-int +pkg syscall (darwin-386-cgo), const SYS_GETPEERNAME ideal-int +pkg syscall (darwin-386-cgo), const SYS_GETPGID ideal-int +pkg syscall (darwin-386-cgo), const SYS_GETPGRP ideal-int +pkg syscall (darwin-386-cgo), const SYS_GETPID ideal-int +pkg syscall (darwin-386-cgo), const SYS_GETPPID ideal-int +pkg syscall (darwin-386-cgo), const SYS_GETPRIORITY ideal-int +pkg syscall (darwin-386-cgo), const SYS_GETRLIMIT ideal-int +pkg syscall (darwin-386-cgo), const SYS_GETRUSAGE ideal-int +pkg syscall (darwin-386-cgo), const SYS_GETSGROUPS ideal-int +pkg syscall (darwin-386-cgo), const SYS_GETSID ideal-int +pkg syscall (darwin-386-cgo), const SYS_GETSOCKNAME ideal-int +pkg syscall (darwin-386-cgo), const SYS_GETSOCKOPT ideal-int +pkg syscall (darwin-386-cgo), const SYS_GETTID ideal-int +pkg syscall (darwin-386-cgo), const SYS_GETTIMEOFDAY ideal-int +pkg syscall (darwin-386-cgo), const SYS_GETUID ideal-int +pkg syscall (darwin-386-cgo), const SYS_GETWGROUPS ideal-int +pkg syscall (darwin-386-cgo), const SYS_GETXATTR ideal-int +pkg syscall (darwin-386-cgo), const SYS_IDENTITYSVC ideal-int +pkg syscall (darwin-386-cgo), const SYS_INITGROUPS ideal-int +pkg syscall (darwin-386-cgo), const SYS_IOCTL ideal-int +pkg syscall (darwin-386-cgo), const SYS_IOPOLICYSYS ideal-int +pkg syscall (darwin-386-cgo), const SYS_ISSETUGID ideal-int +pkg syscall (darwin-386-cgo), const SYS_KDEBUG_TRACE ideal-int +pkg syscall (darwin-386-cgo), const SYS_KEVENT ideal-int +pkg syscall (darwin-386-cgo), const SYS_KEVENT64 ideal-int +pkg syscall (darwin-386-cgo), const SYS_KILL ideal-int +pkg syscall (darwin-386-cgo), const SYS_KQUEUE ideal-int +pkg syscall (darwin-386-cgo), const SYS_LCHOWN ideal-int +pkg syscall (darwin-386-cgo), const SYS_LINK ideal-int +pkg syscall (darwin-386-cgo), const SYS_LIO_LISTIO ideal-int +pkg syscall (darwin-386-cgo), const SYS_LISTEN ideal-int +pkg syscall (darwin-386-cgo), const SYS_LISTXATTR ideal-int +pkg syscall (darwin-386-cgo), const SYS_LSEEK ideal-int +pkg syscall (darwin-386-cgo), const SYS_LSTAT ideal-int +pkg syscall (darwin-386-cgo), const SYS_LSTAT64 ideal-int +pkg syscall (darwin-386-cgo), const SYS_LSTAT64_EXTENDED ideal-int +pkg syscall (darwin-386-cgo), const SYS_LSTATV ideal-int +pkg syscall (darwin-386-cgo), const SYS_LSTAT_EXTENDED ideal-int +pkg syscall (darwin-386-cgo), const SYS_MADVISE ideal-int +pkg syscall (darwin-386-cgo), const SYS_MAXSYSCALL ideal-int +pkg syscall (darwin-386-cgo), const SYS_MINCORE ideal-int +pkg syscall (darwin-386-cgo), const SYS_MINHERIT ideal-int +pkg syscall (darwin-386-cgo), const SYS_MKCOMPLEX ideal-int +pkg syscall (darwin-386-cgo), const SYS_MKDIR ideal-int +pkg syscall (darwin-386-cgo), const SYS_MKDIR_EXTENDED ideal-int +pkg syscall (darwin-386-cgo), const SYS_MKFIFO ideal-int +pkg syscall (darwin-386-cgo), const SYS_MKFIFO_EXTENDED ideal-int +pkg syscall (darwin-386-cgo), const SYS_MKNOD ideal-int +pkg syscall (darwin-386-cgo), const SYS_MLOCK ideal-int +pkg syscall (darwin-386-cgo), const SYS_MLOCKALL ideal-int +pkg syscall (darwin-386-cgo), const SYS_MMAP ideal-int +pkg syscall (darwin-386-cgo), const SYS_MODWATCH ideal-int +pkg syscall (darwin-386-cgo), const SYS_MOUNT ideal-int +pkg syscall (darwin-386-cgo), const SYS_MPROTECT ideal-int +pkg syscall (darwin-386-cgo), const SYS_MSGCTL ideal-int +pkg syscall (darwin-386-cgo), const SYS_MSGGET ideal-int +pkg syscall (darwin-386-cgo), const SYS_MSGRCV ideal-int +pkg syscall (darwin-386-cgo), const SYS_MSGRCV_NOCANCEL ideal-int +pkg syscall (darwin-386-cgo), const SYS_MSGSND ideal-int +pkg syscall (darwin-386-cgo), const SYS_MSGSND_NOCANCEL ideal-int +pkg syscall (darwin-386-cgo), const SYS_MSGSYS ideal-int +pkg syscall (darwin-386-cgo), const SYS_MSYNC ideal-int +pkg syscall (darwin-386-cgo), const SYS_MSYNC_NOCANCEL ideal-int +pkg syscall (darwin-386-cgo), const SYS_MUNLOCK ideal-int +pkg syscall (darwin-386-cgo), const SYS_MUNLOCKALL ideal-int +pkg syscall (darwin-386-cgo), const SYS_MUNMAP ideal-int +pkg syscall (darwin-386-cgo), const SYS_NFSCLNT ideal-int +pkg syscall (darwin-386-cgo), const SYS_NFSSVC ideal-int +pkg syscall (darwin-386-cgo), const SYS_OPEN ideal-int +pkg syscall (darwin-386-cgo), const SYS_OPEN_EXTENDED ideal-int +pkg syscall (darwin-386-cgo), const SYS_OPEN_NOCANCEL ideal-int +pkg syscall (darwin-386-cgo), const SYS_PATHCONF ideal-int +pkg syscall (darwin-386-cgo), const SYS_PID_HIBERNATE ideal-int +pkg syscall (darwin-386-cgo), const SYS_PID_RESUME ideal-int +pkg syscall (darwin-386-cgo), const SYS_PID_SHUTDOWN_SOCKETS ideal-int +pkg syscall (darwin-386-cgo), const SYS_PID_SUSPEND ideal-int +pkg syscall (darwin-386-cgo), const SYS_PIPE ideal-int +pkg syscall (darwin-386-cgo), const SYS_POLL ideal-int +pkg syscall (darwin-386-cgo), const SYS_POLL_NOCANCEL ideal-int +pkg syscall (darwin-386-cgo), const SYS_POSIX_SPAWN ideal-int +pkg syscall (darwin-386-cgo), const SYS_PREAD ideal-int +pkg syscall (darwin-386-cgo), const SYS_PREAD_NOCANCEL ideal-int +pkg syscall (darwin-386-cgo), const SYS_PROCESS_POLICY ideal-int +pkg syscall (darwin-386-cgo), const SYS_PROC_INFO ideal-int +pkg syscall (darwin-386-cgo), const SYS_PROFIL ideal-int +pkg syscall (darwin-386-cgo), const SYS_PSYNCH_CVBROAD ideal-int +pkg syscall (darwin-386-cgo), const SYS_PSYNCH_CVCLRPREPOST ideal-int +pkg syscall (darwin-386-cgo), const SYS_PSYNCH_CVSIGNAL ideal-int +pkg syscall (darwin-386-cgo), const SYS_PSYNCH_CVWAIT ideal-int +pkg syscall (darwin-386-cgo), const SYS_PSYNCH_MUTEXDROP ideal-int +pkg syscall (darwin-386-cgo), const SYS_PSYNCH_MUTEXWAIT ideal-int +pkg syscall (darwin-386-cgo), const SYS_PSYNCH_RW_DOWNGRADE ideal-int +pkg syscall (darwin-386-cgo), const SYS_PSYNCH_RW_LONGRDLOCK ideal-int +pkg syscall (darwin-386-cgo), const SYS_PSYNCH_RW_RDLOCK ideal-int +pkg syscall (darwin-386-cgo), const SYS_PSYNCH_RW_UNLOCK ideal-int +pkg syscall (darwin-386-cgo), const SYS_PSYNCH_RW_UNLOCK2 ideal-int +pkg syscall (darwin-386-cgo), const SYS_PSYNCH_RW_UPGRADE ideal-int +pkg syscall (darwin-386-cgo), const SYS_PSYNCH_RW_WRLOCK ideal-int +pkg syscall (darwin-386-cgo), const SYS_PSYNCH_RW_YIELDWRLOCK ideal-int +pkg syscall (darwin-386-cgo), const SYS_PTRACE ideal-int +pkg syscall (darwin-386-cgo), const SYS_PWRITE ideal-int +pkg syscall (darwin-386-cgo), const SYS_PWRITE_NOCANCEL ideal-int +pkg syscall (darwin-386-cgo), const SYS_QUOTACTL ideal-int +pkg syscall (darwin-386-cgo), const SYS_READ ideal-int +pkg syscall (darwin-386-cgo), const SYS_READLINK ideal-int +pkg syscall (darwin-386-cgo), const SYS_READV ideal-int +pkg syscall (darwin-386-cgo), const SYS_READV_NOCANCEL ideal-int +pkg syscall (darwin-386-cgo), const SYS_READ_NOCANCEL ideal-int +pkg syscall (darwin-386-cgo), const SYS_REBOOT ideal-int +pkg syscall (darwin-386-cgo), const SYS_RECVFROM ideal-int +pkg syscall (darwin-386-cgo), const SYS_RECVFROM_NOCANCEL ideal-int +pkg syscall (darwin-386-cgo), const SYS_RECVMSG ideal-int +pkg syscall (darwin-386-cgo), const SYS_RECVMSG_NOCANCEL ideal-int +pkg syscall (darwin-386-cgo), const SYS_REMOVEXATTR ideal-int +pkg syscall (darwin-386-cgo), const SYS_RENAME ideal-int +pkg syscall (darwin-386-cgo), const SYS_REVOKE ideal-int +pkg syscall (darwin-386-cgo), const SYS_RMDIR ideal-int +pkg syscall (darwin-386-cgo), const SYS_SEARCHFS ideal-int +pkg syscall (darwin-386-cgo), const SYS_SELECT ideal-int +pkg syscall (darwin-386-cgo), const SYS_SELECT_NOCANCEL ideal-int +pkg syscall (darwin-386-cgo), const SYS_SEMCTL ideal-int +pkg syscall (darwin-386-cgo), const SYS_SEMGET ideal-int +pkg syscall (darwin-386-cgo), const SYS_SEMOP ideal-int +pkg syscall (darwin-386-cgo), const SYS_SEMSYS ideal-int +pkg syscall (darwin-386-cgo), const SYS_SEM_CLOSE ideal-int +pkg syscall (darwin-386-cgo), const SYS_SEM_DESTROY ideal-int +pkg syscall (darwin-386-cgo), const SYS_SEM_GETVALUE ideal-int +pkg syscall (darwin-386-cgo), const SYS_SEM_INIT ideal-int +pkg syscall (darwin-386-cgo), const SYS_SEM_OPEN ideal-int +pkg syscall (darwin-386-cgo), const SYS_SEM_POST ideal-int +pkg syscall (darwin-386-cgo), const SYS_SEM_TRYWAIT ideal-int +pkg syscall (darwin-386-cgo), const SYS_SEM_UNLINK ideal-int +pkg syscall (darwin-386-cgo), const SYS_SEM_WAIT ideal-int +pkg syscall (darwin-386-cgo), const SYS_SEM_WAIT_NOCANCEL ideal-int +pkg syscall (darwin-386-cgo), const SYS_SENDFILE ideal-int +pkg syscall (darwin-386-cgo), const SYS_SENDMSG ideal-int +pkg syscall (darwin-386-cgo), const SYS_SENDMSG_NOCANCEL ideal-int +pkg syscall (darwin-386-cgo), const SYS_SENDTO ideal-int +pkg syscall (darwin-386-cgo), const SYS_SENDTO_NOCANCEL ideal-int +pkg syscall (darwin-386-cgo), const SYS_SETATTRLIST ideal-int +pkg syscall (darwin-386-cgo), const SYS_SETAUDIT ideal-int +pkg syscall (darwin-386-cgo), const SYS_SETAUDIT_ADDR ideal-int +pkg syscall (darwin-386-cgo), const SYS_SETAUID ideal-int +pkg syscall (darwin-386-cgo), const SYS_SETEGID ideal-int +pkg syscall (darwin-386-cgo), const SYS_SETEUID ideal-int +pkg syscall (darwin-386-cgo), const SYS_SETGID ideal-int +pkg syscall (darwin-386-cgo), const SYS_SETGROUPS ideal-int +pkg syscall (darwin-386-cgo), const SYS_SETITIMER ideal-int +pkg syscall (darwin-386-cgo), const SYS_SETLCID ideal-int +pkg syscall (darwin-386-cgo), const SYS_SETLOGIN ideal-int +pkg syscall (darwin-386-cgo), const SYS_SETPGID ideal-int +pkg syscall (darwin-386-cgo), const SYS_SETPRIORITY ideal-int +pkg syscall (darwin-386-cgo), const SYS_SETPRIVEXEC ideal-int +pkg syscall (darwin-386-cgo), const SYS_SETREGID ideal-int +pkg syscall (darwin-386-cgo), const SYS_SETREUID ideal-int +pkg syscall (darwin-386-cgo), const SYS_SETRLIMIT ideal-int +pkg syscall (darwin-386-cgo), const SYS_SETSGROUPS ideal-int +pkg syscall (darwin-386-cgo), const SYS_SETSID ideal-int +pkg syscall (darwin-386-cgo), const SYS_SETSOCKOPT ideal-int +pkg syscall (darwin-386-cgo), const SYS_SETTID ideal-int +pkg syscall (darwin-386-cgo), const SYS_SETTID_WITH_PID ideal-int +pkg syscall (darwin-386-cgo), const SYS_SETTIMEOFDAY ideal-int +pkg syscall (darwin-386-cgo), const SYS_SETUID ideal-int +pkg syscall (darwin-386-cgo), const SYS_SETWGROUPS ideal-int +pkg syscall (darwin-386-cgo), const SYS_SETXATTR ideal-int +pkg syscall (darwin-386-cgo), const SYS_SHARED_REGION_CHECK_NP ideal-int +pkg syscall (darwin-386-cgo), const SYS_SHARED_REGION_MAP_AND_SLIDE_NP ideal-int +pkg syscall (darwin-386-cgo), const SYS_SHMAT ideal-int +pkg syscall (darwin-386-cgo), const SYS_SHMCTL ideal-int +pkg syscall (darwin-386-cgo), const SYS_SHMDT ideal-int +pkg syscall (darwin-386-cgo), const SYS_SHMGET ideal-int +pkg syscall (darwin-386-cgo), const SYS_SHMSYS ideal-int +pkg syscall (darwin-386-cgo), const SYS_SHM_OPEN ideal-int +pkg syscall (darwin-386-cgo), const SYS_SHM_UNLINK ideal-int +pkg syscall (darwin-386-cgo), const SYS_SHUTDOWN ideal-int +pkg syscall (darwin-386-cgo), const SYS_SIGACTION ideal-int +pkg syscall (darwin-386-cgo), const SYS_SIGALTSTACK ideal-int +pkg syscall (darwin-386-cgo), const SYS_SIGPENDING ideal-int +pkg syscall (darwin-386-cgo), const SYS_SIGPROCMASK ideal-int +pkg syscall (darwin-386-cgo), const SYS_SIGRETURN ideal-int +pkg syscall (darwin-386-cgo), const SYS_SIGSUSPEND ideal-int +pkg syscall (darwin-386-cgo), const SYS_SIGSUSPEND_NOCANCEL ideal-int +pkg syscall (darwin-386-cgo), const SYS_SOCKET ideal-int +pkg syscall (darwin-386-cgo), const SYS_SOCKETPAIR ideal-int +pkg syscall (darwin-386-cgo), const SYS_STACK_SNAPSHOT ideal-int +pkg syscall (darwin-386-cgo), const SYS_STAT ideal-int +pkg syscall (darwin-386-cgo), const SYS_STAT64 ideal-int +pkg syscall (darwin-386-cgo), const SYS_STAT64_EXTENDED ideal-int +pkg syscall (darwin-386-cgo), const SYS_STATFS ideal-int +pkg syscall (darwin-386-cgo), const SYS_STATFS64 ideal-int +pkg syscall (darwin-386-cgo), const SYS_STATV ideal-int +pkg syscall (darwin-386-cgo), const SYS_STAT_EXTENDED ideal-int +pkg syscall (darwin-386-cgo), const SYS_SWAPON ideal-int +pkg syscall (darwin-386-cgo), const SYS_SYMLINK ideal-int +pkg syscall (darwin-386-cgo), const SYS_SYNC ideal-int +pkg syscall (darwin-386-cgo), const SYS_SYSCALL ideal-int +pkg syscall (darwin-386-cgo), const SYS_THREAD_SELFID ideal-int +pkg syscall (darwin-386-cgo), const SYS_TRUNCATE ideal-int +pkg syscall (darwin-386-cgo), const SYS_UMASK ideal-int +pkg syscall (darwin-386-cgo), const SYS_UMASK_EXTENDED ideal-int +pkg syscall (darwin-386-cgo), const SYS_UNDELETE ideal-int +pkg syscall (darwin-386-cgo), const SYS_UNLINK ideal-int +pkg syscall (darwin-386-cgo), const SYS_UNMOUNT ideal-int +pkg syscall (darwin-386-cgo), const SYS_UTIMES ideal-int +pkg syscall (darwin-386-cgo), const SYS_VFORK ideal-int +pkg syscall (darwin-386-cgo), const SYS_VM_PRESSURE_MONITOR ideal-int +pkg syscall (darwin-386-cgo), const SYS_WAIT4 ideal-int +pkg syscall (darwin-386-cgo), const SYS_WAIT4_NOCANCEL ideal-int +pkg syscall (darwin-386-cgo), const SYS_WAITEVENT ideal-int +pkg syscall (darwin-386-cgo), const SYS_WAITID ideal-int +pkg syscall (darwin-386-cgo), const SYS_WAITID_NOCANCEL ideal-int +pkg syscall (darwin-386-cgo), const SYS_WATCHEVENT ideal-int +pkg syscall (darwin-386-cgo), const SYS_WORKQ_KERNRETURN ideal-int +pkg syscall (darwin-386-cgo), const SYS_WORKQ_OPEN ideal-int +pkg syscall (darwin-386-cgo), const SYS_WRITE ideal-int +pkg syscall (darwin-386-cgo), const SYS_WRITEV ideal-int +pkg syscall (darwin-386-cgo), const SYS_WRITEV_NOCANCEL ideal-int +pkg syscall (darwin-386-cgo), const SYS_WRITE_NOCANCEL ideal-int +pkg syscall (darwin-386-cgo), const SYS___DISABLE_THREADSIGNAL ideal-int +pkg syscall (darwin-386-cgo), const SYS___MAC_EXECVE ideal-int +pkg syscall (darwin-386-cgo), const SYS___MAC_GETFSSTAT ideal-int +pkg syscall (darwin-386-cgo), const SYS___MAC_GET_FD ideal-int +pkg syscall (darwin-386-cgo), const SYS___MAC_GET_FILE ideal-int +pkg syscall (darwin-386-cgo), const SYS___MAC_GET_LCID ideal-int +pkg syscall (darwin-386-cgo), const SYS___MAC_GET_LCTX ideal-int +pkg syscall (darwin-386-cgo), const SYS___MAC_GET_LINK ideal-int +pkg syscall (darwin-386-cgo), const SYS___MAC_GET_MOUNT ideal-int +pkg syscall (darwin-386-cgo), const SYS___MAC_GET_PID ideal-int +pkg syscall (darwin-386-cgo), const SYS___MAC_GET_PROC ideal-int +pkg syscall (darwin-386-cgo), const SYS___MAC_MOUNT ideal-int +pkg syscall (darwin-386-cgo), const SYS___MAC_SET_FD ideal-int +pkg syscall (darwin-386-cgo), const SYS___MAC_SET_FILE ideal-int +pkg syscall (darwin-386-cgo), const SYS___MAC_SET_LCTX ideal-int +pkg syscall (darwin-386-cgo), const SYS___MAC_SET_LINK ideal-int +pkg syscall (darwin-386-cgo), const SYS___MAC_SET_PROC ideal-int +pkg syscall (darwin-386-cgo), const SYS___MAC_SYSCALL ideal-int +pkg syscall (darwin-386-cgo), const SYS___OLD_SEMWAIT_SIGNAL ideal-int +pkg syscall (darwin-386-cgo), const SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL ideal-int +pkg syscall (darwin-386-cgo), const SYS___PTHREAD_CANCELED ideal-int +pkg syscall (darwin-386-cgo), const SYS___PTHREAD_CHDIR ideal-int +pkg syscall (darwin-386-cgo), const SYS___PTHREAD_FCHDIR ideal-int +pkg syscall (darwin-386-cgo), const SYS___PTHREAD_KILL ideal-int +pkg syscall (darwin-386-cgo), const SYS___PTHREAD_MARKCANCEL ideal-int +pkg syscall (darwin-386-cgo), const SYS___PTHREAD_SIGMASK ideal-int +pkg syscall (darwin-386-cgo), const SYS___SEMWAIT_SIGNAL ideal-int +pkg syscall (darwin-386-cgo), const SYS___SEMWAIT_SIGNAL_NOCANCEL ideal-int +pkg syscall (darwin-386-cgo), const SYS___SIGWAIT ideal-int +pkg syscall (darwin-386-cgo), const SYS___SIGWAIT_NOCANCEL ideal-int +pkg syscall (darwin-386-cgo), const SYS___SYSCTL ideal-int +pkg syscall (darwin-386-cgo), const S_IEXEC ideal-int +pkg syscall (darwin-386-cgo), const S_IFWHT ideal-int +pkg syscall (darwin-386-cgo), const S_IREAD ideal-int +pkg syscall (darwin-386-cgo), const S_IRGRP ideal-int +pkg syscall (darwin-386-cgo), const S_IROTH ideal-int +pkg syscall (darwin-386-cgo), const S_IRWXG ideal-int +pkg syscall (darwin-386-cgo), const S_IRWXO ideal-int +pkg syscall (darwin-386-cgo), const S_IRWXU ideal-int +pkg syscall (darwin-386-cgo), const S_ISTXT ideal-int +pkg syscall (darwin-386-cgo), const S_IWGRP ideal-int +pkg syscall (darwin-386-cgo), const S_IWOTH ideal-int +pkg syscall (darwin-386-cgo), const S_IXGRP ideal-int +pkg syscall (darwin-386-cgo), const S_IXOTH ideal-int +pkg syscall (darwin-386-cgo), const SizeofBpfHdr ideal-int +pkg syscall (darwin-386-cgo), const SizeofBpfInsn ideal-int +pkg syscall (darwin-386-cgo), const SizeofBpfProgram ideal-int +pkg syscall (darwin-386-cgo), const SizeofBpfStat ideal-int +pkg syscall (darwin-386-cgo), const SizeofBpfVersion ideal-int +pkg syscall (darwin-386-cgo), const SizeofCmsghdr ideal-int +pkg syscall (darwin-386-cgo), const SizeofIPMreq ideal-int +pkg syscall (darwin-386-cgo), const SizeofIPv6Mreq ideal-int +pkg syscall (darwin-386-cgo), const SizeofIfData ideal-int +pkg syscall (darwin-386-cgo), const SizeofIfMsghdr ideal-int +pkg syscall (darwin-386-cgo), const SizeofIfaMsghdr ideal-int +pkg syscall (darwin-386-cgo), const SizeofIfmaMsghdr ideal-int +pkg syscall (darwin-386-cgo), const SizeofIfmaMsghdr2 ideal-int +pkg syscall (darwin-386-cgo), const SizeofInet6Pktinfo ideal-int +pkg syscall (darwin-386-cgo), const SizeofLinger ideal-int +pkg syscall (darwin-386-cgo), const SizeofMsghdr ideal-int +pkg syscall (darwin-386-cgo), const SizeofRtMetrics ideal-int +pkg syscall (darwin-386-cgo), const SizeofRtMsghdr ideal-int +pkg syscall (darwin-386-cgo), const SizeofSockaddrAny ideal-int +pkg syscall (darwin-386-cgo), const SizeofSockaddrDatalink ideal-int +pkg syscall (darwin-386-cgo), const SizeofSockaddrInet4 ideal-int +pkg syscall (darwin-386-cgo), const SizeofSockaddrInet6 ideal-int +pkg syscall (darwin-386-cgo), const SizeofSockaddrUnix ideal-int +pkg syscall (darwin-386-cgo), const TCP_CONNECTIONTIMEOUT ideal-int +pkg syscall (darwin-386-cgo), const TCP_KEEPALIVE ideal-int +pkg syscall (darwin-386-cgo), const TCP_MAXHLEN ideal-int +pkg syscall (darwin-386-cgo), const TCP_MAXOLEN ideal-int +pkg syscall (darwin-386-cgo), const TCP_MAXSEG ideal-int +pkg syscall (darwin-386-cgo), const TCP_MAXWIN ideal-int +pkg syscall (darwin-386-cgo), const TCP_MAX_SACK ideal-int +pkg syscall (darwin-386-cgo), const TCP_MAX_WINSHIFT ideal-int +pkg syscall (darwin-386-cgo), const TCP_MINMSS ideal-int +pkg syscall (darwin-386-cgo), const TCP_MINMSSOVERLOAD ideal-int +pkg syscall (darwin-386-cgo), const TCP_MSS ideal-int +pkg syscall (darwin-386-cgo), const TCP_NOOPT ideal-int +pkg syscall (darwin-386-cgo), const TCP_NOPUSH ideal-int +pkg syscall (darwin-386-cgo), const TCP_RXT_CONNDROPTIME ideal-int +pkg syscall (darwin-386-cgo), const TCP_RXT_FINDROP ideal-int +pkg syscall (darwin-386-cgo), const TIOCCBRK ideal-int +pkg syscall (darwin-386-cgo), const TIOCCDTR ideal-int +pkg syscall (darwin-386-cgo), const TIOCCONS ideal-int +pkg syscall (darwin-386-cgo), const TIOCDCDTIMESTAMP ideal-int +pkg syscall (darwin-386-cgo), const TIOCDRAIN ideal-int +pkg syscall (darwin-386-cgo), const TIOCDSIMICROCODE ideal-int +pkg syscall (darwin-386-cgo), const TIOCEXCL ideal-int +pkg syscall (darwin-386-cgo), const TIOCEXT ideal-int +pkg syscall (darwin-386-cgo), const TIOCFLUSH ideal-int +pkg syscall (darwin-386-cgo), const TIOCGDRAINWAIT ideal-int +pkg syscall (darwin-386-cgo), const TIOCGETA ideal-int +pkg syscall (darwin-386-cgo), const TIOCGETD ideal-int +pkg syscall (darwin-386-cgo), const TIOCGPGRP ideal-int +pkg syscall (darwin-386-cgo), const TIOCGWINSZ ideal-int +pkg syscall (darwin-386-cgo), const TIOCIXOFF ideal-int +pkg syscall (darwin-386-cgo), const TIOCIXON ideal-int +pkg syscall (darwin-386-cgo), const TIOCMBIC ideal-int +pkg syscall (darwin-386-cgo), const TIOCMBIS ideal-int +pkg syscall (darwin-386-cgo), const TIOCMGDTRWAIT ideal-int +pkg syscall (darwin-386-cgo), const TIOCMGET ideal-int +pkg syscall (darwin-386-cgo), const TIOCMODG ideal-int +pkg syscall (darwin-386-cgo), const TIOCMODS ideal-int +pkg syscall (darwin-386-cgo), const TIOCMSDTRWAIT ideal-int +pkg syscall (darwin-386-cgo), const TIOCMSET ideal-int +pkg syscall (darwin-386-cgo), const TIOCM_CAR ideal-int +pkg syscall (darwin-386-cgo), const TIOCM_CD ideal-int +pkg syscall (darwin-386-cgo), const TIOCM_CTS ideal-int +pkg syscall (darwin-386-cgo), const TIOCM_DSR ideal-int +pkg syscall (darwin-386-cgo), const TIOCM_DTR ideal-int +pkg syscall (darwin-386-cgo), const TIOCM_LE ideal-int +pkg syscall (darwin-386-cgo), const TIOCM_RI ideal-int +pkg syscall (darwin-386-cgo), const TIOCM_RNG ideal-int +pkg syscall (darwin-386-cgo), const TIOCM_RTS ideal-int +pkg syscall (darwin-386-cgo), const TIOCM_SR ideal-int +pkg syscall (darwin-386-cgo), const TIOCM_ST ideal-int +pkg syscall (darwin-386-cgo), const TIOCNOTTY ideal-int +pkg syscall (darwin-386-cgo), const TIOCNXCL ideal-int +pkg syscall (darwin-386-cgo), const TIOCOUTQ ideal-int +pkg syscall (darwin-386-cgo), const TIOCPKT ideal-int +pkg syscall (darwin-386-cgo), const TIOCPKT_DATA ideal-int +pkg syscall (darwin-386-cgo), const TIOCPKT_DOSTOP ideal-int +pkg syscall (darwin-386-cgo), const TIOCPKT_FLUSHREAD ideal-int +pkg syscall (darwin-386-cgo), const TIOCPKT_FLUSHWRITE ideal-int +pkg syscall (darwin-386-cgo), const TIOCPKT_IOCTL ideal-int +pkg syscall (darwin-386-cgo), const TIOCPKT_NOSTOP ideal-int +pkg syscall (darwin-386-cgo), const TIOCPKT_START ideal-int +pkg syscall (darwin-386-cgo), const TIOCPKT_STOP ideal-int +pkg syscall (darwin-386-cgo), const TIOCPTYGNAME ideal-int +pkg syscall (darwin-386-cgo), const TIOCPTYGRANT ideal-int +pkg syscall (darwin-386-cgo), const TIOCPTYUNLK ideal-int +pkg syscall (darwin-386-cgo), const TIOCREMOTE ideal-int +pkg syscall (darwin-386-cgo), const TIOCSBRK ideal-int +pkg syscall (darwin-386-cgo), const TIOCSCONS ideal-int +pkg syscall (darwin-386-cgo), const TIOCSCTTY ideal-int +pkg syscall (darwin-386-cgo), const TIOCSDRAINWAIT ideal-int +pkg syscall (darwin-386-cgo), const TIOCSDTR ideal-int +pkg syscall (darwin-386-cgo), const TIOCSETA ideal-int +pkg syscall (darwin-386-cgo), const TIOCSETAF ideal-int +pkg syscall (darwin-386-cgo), const TIOCSETAW ideal-int +pkg syscall (darwin-386-cgo), const TIOCSETD ideal-int +pkg syscall (darwin-386-cgo), const TIOCSIG ideal-int +pkg syscall (darwin-386-cgo), const TIOCSPGRP ideal-int +pkg syscall (darwin-386-cgo), const TIOCSTART ideal-int +pkg syscall (darwin-386-cgo), const TIOCSTAT ideal-int +pkg syscall (darwin-386-cgo), const TIOCSTI ideal-int +pkg syscall (darwin-386-cgo), const TIOCSTOP ideal-int +pkg syscall (darwin-386-cgo), const TIOCSWINSZ ideal-int +pkg syscall (darwin-386-cgo), const TIOCTIMESTAMP ideal-int +pkg syscall (darwin-386-cgo), const TIOCUCNTL ideal-int +pkg syscall (darwin-386-cgo), const WCONTINUED ideal-int +pkg syscall (darwin-386-cgo), const WCOREFLAG ideal-int +pkg syscall (darwin-386-cgo), const WEXITED ideal-int +pkg syscall (darwin-386-cgo), const WNOHANG ideal-int +pkg syscall (darwin-386-cgo), const WNOWAIT ideal-int +pkg syscall (darwin-386-cgo), const WORDSIZE ideal-int +pkg syscall (darwin-386-cgo), const WSTOPPED ideal-int +pkg syscall (darwin-386-cgo), const WUNTRACED ideal-int +pkg syscall (darwin-386-cgo), func Accept(int) (int, Sockaddr, error) +pkg syscall (darwin-386-cgo), func Access(string, uint32) error +pkg syscall (darwin-386-cgo), func Adjtime(*Timeval, *Timeval) error +pkg syscall (darwin-386-cgo), func Bind(int, Sockaddr) error +pkg syscall (darwin-386-cgo), func BpfBuflen(int) (int, error) +pkg syscall (darwin-386-cgo), func BpfDatalink(int) (int, error) +pkg syscall (darwin-386-cgo), func BpfHeadercmpl(int) (int, error) +pkg syscall (darwin-386-cgo), func BpfInterface(int, string) (string, error) +pkg syscall (darwin-386-cgo), func BpfJump(int) *BpfInsn +pkg syscall (darwin-386-cgo), func BpfStats(int) (*BpfStat, error) +pkg syscall (darwin-386-cgo), func BpfStmt(int) *BpfInsn +pkg syscall (darwin-386-cgo), func BpfTimeout(int) (*Timeval, error) +pkg syscall (darwin-386-cgo), func CheckBpfVersion(int) error +pkg syscall (darwin-386-cgo), func Chflags(string, int) error +pkg syscall (darwin-386-cgo), func Chroot(string) error +pkg syscall (darwin-386-cgo), func Close(int) error +pkg syscall (darwin-386-cgo), func CloseOnExec(int) +pkg syscall (darwin-386-cgo), func CmsgLen(int) int +pkg syscall (darwin-386-cgo), func CmsgSpace(int) int +pkg syscall (darwin-386-cgo), func Connect(int, Sockaddr) error +pkg syscall (darwin-386-cgo), func Dup(int) (int, error) +pkg syscall (darwin-386-cgo), func Dup2(int, int) error +pkg syscall (darwin-386-cgo), func Exchangedata(string, string, int) error +pkg syscall (darwin-386-cgo), func Fchdir(int) error +pkg syscall (darwin-386-cgo), func Fchflags(string, int) error +pkg syscall (darwin-386-cgo), func Fchmod(int, uint32) error +pkg syscall (darwin-386-cgo), func Fchown(int, int, int) error +pkg syscall (darwin-386-cgo), func Flock(int, int) error +pkg syscall (darwin-386-cgo), func FlushBpf(int) error +pkg syscall (darwin-386-cgo), func ForkExec(string, []string, *ProcAttr) (int, error) +pkg syscall (darwin-386-cgo), func Fpathconf(int, int) (int, error) +pkg syscall (darwin-386-cgo), func Fstat(int, *Stat_t) error +pkg syscall (darwin-386-cgo), func Fstatfs(int, *Statfs_t) error +pkg syscall (darwin-386-cgo), func Fsync(int) error +pkg syscall (darwin-386-cgo), func Ftruncate(int, int64) error +pkg syscall (darwin-386-cgo), func Futimes(int, []Timeval) error +pkg syscall (darwin-386-cgo), func Getdirentries(int, []byte, *uintptr) (int, error) +pkg syscall (darwin-386-cgo), func Getdtablesize() int +pkg syscall (darwin-386-cgo), func Getfsstat([]Statfs_t, int) (int, error) +pkg syscall (darwin-386-cgo), func Getpeername(int) (Sockaddr, error) +pkg syscall (darwin-386-cgo), func Getpgid(int) (int, error) +pkg syscall (darwin-386-cgo), func Getpgrp() int +pkg syscall (darwin-386-cgo), func Getpriority(int, int) (int, error) +pkg syscall (darwin-386-cgo), func Getrlimit(int, *Rlimit) error +pkg syscall (darwin-386-cgo), func Getrusage(int, *Rusage) error +pkg syscall (darwin-386-cgo), func Getsid(int) (int, error) +pkg syscall (darwin-386-cgo), func Getsockname(int) (Sockaddr, error) +pkg syscall (darwin-386-cgo), func GetsockoptByte(int) (byte, error) +pkg syscall (darwin-386-cgo), func GetsockoptIPMreq(int) (*IPMreq, error) +pkg syscall (darwin-386-cgo), func GetsockoptIPv6Mreq(int) (*IPv6Mreq, error) +pkg syscall (darwin-386-cgo), func GetsockoptInet4Addr(int) ([4]byte, error) +pkg syscall (darwin-386-cgo), func GetsockoptInt(int) (int, error) +pkg syscall (darwin-386-cgo), func Issetugid() bool +pkg syscall (darwin-386-cgo), func Kevent(int, []Kevent_t, *Timespec) (int, error) +pkg syscall (darwin-386-cgo), func Kill(int, Signal) error +pkg syscall (darwin-386-cgo), func Kqueue() (int, error) +pkg syscall (darwin-386-cgo), func Link(string, string) error +pkg syscall (darwin-386-cgo), func Listen(int, int) error +pkg syscall (darwin-386-cgo), func Lstat(string, *Stat_t) error +pkg syscall (darwin-386-cgo), func Mkfifo(string, uint32) error +pkg syscall (darwin-386-cgo), func Mknod(string, uint32, int) error +pkg syscall (darwin-386-cgo), func Mmap(int, int64, int, int, int) ([]byte, error) +pkg syscall (darwin-386-cgo), func Munmap([]byte) error +pkg syscall (darwin-386-cgo), func NsecToTimespec(int64) Timespec +pkg syscall (darwin-386-cgo), func Open(string, int, uint32) (int, error) +pkg syscall (darwin-386-cgo), func ParseDirent([]byte, int, []string) (int, int, []string) +pkg syscall (darwin-386-cgo), func ParseRoutingMessage([]byte) ([]RoutingMessage, error) +pkg syscall (darwin-386-cgo), func ParseRoutingSockaddr(RoutingMessage) ([]Sockaddr, error) +pkg syscall (darwin-386-cgo), func ParseSocketControlMessage([]byte) ([]SocketControlMessage, error) +pkg syscall (darwin-386-cgo), func ParseUnixRights(*SocketControlMessage) ([]int, error) +pkg syscall (darwin-386-cgo), func Pathconf(string, int) (int, error) +pkg syscall (darwin-386-cgo), func Pipe([]int) error +pkg syscall (darwin-386-cgo), func Pread(int, []byte, int64) (int, error) +pkg syscall (darwin-386-cgo), func PtraceAttach(int) error +pkg syscall (darwin-386-cgo), func PtraceDetach(int) error +pkg syscall (darwin-386-cgo), func Pwrite(int, []byte, int64) (int, error) +pkg syscall (darwin-386-cgo), func RawSyscall(uintptr) (uintptr, Errno) +pkg syscall (darwin-386-cgo), func RawSyscall6(uintptr) (uintptr, Errno) +pkg syscall (darwin-386-cgo), func Read(int, []byte) (int, error) +pkg syscall (darwin-386-cgo), func ReadDirent(int, []byte) (int, error) +pkg syscall (darwin-386-cgo), func Recvfrom(int, []byte, int) (int, Sockaddr, error) +pkg syscall (darwin-386-cgo), func Recvmsg(int, []byte, int) (int, int, Sockaddr, error) +pkg syscall (darwin-386-cgo), func Rename(string, string) error +pkg syscall (darwin-386-cgo), func Revoke(string) error +pkg syscall (darwin-386-cgo), func RouteRIB(int) ([]byte, error) +pkg syscall (darwin-386-cgo), func Seek(int, int64, int) (int64, error) +pkg syscall (darwin-386-cgo), func Select(int, *FdSet, *FdSet, *FdSet, *Timeval) error +pkg syscall (darwin-386-cgo), func Sendfile(int, int, *int64, int) (int, error) +pkg syscall (darwin-386-cgo), func Sendmsg(int, []byte, Sockaddr, int) error +pkg syscall (darwin-386-cgo), func Sendto(int, []byte, int, Sockaddr) error +pkg syscall (darwin-386-cgo), func SetBpf(int, []BpfInsn) error +pkg syscall (darwin-386-cgo), func SetBpfBuflen(int) (int, error) +pkg syscall (darwin-386-cgo), func SetBpfDatalink(int) (int, error) +pkg syscall (darwin-386-cgo), func SetBpfHeadercmpl(int) error +pkg syscall (darwin-386-cgo), func SetBpfImmediate(int) error +pkg syscall (darwin-386-cgo), func SetBpfInterface(int, string) error +pkg syscall (darwin-386-cgo), func SetBpfPromisc(int) error +pkg syscall (darwin-386-cgo), func SetBpfTimeout(int, *Timeval) error +pkg syscall (darwin-386-cgo), func SetKevent(*Kevent_t, int) +pkg syscall (darwin-386-cgo), func SetNonblock(int, bool) error +pkg syscall (darwin-386-cgo), func Setegid(int) error +pkg syscall (darwin-386-cgo), func Seteuid(int) error +pkg syscall (darwin-386-cgo), func Setgid(int) error +pkg syscall (darwin-386-cgo), func Setgroups([]int) error +pkg syscall (darwin-386-cgo), func Setlogin(string) error +pkg syscall (darwin-386-cgo), func Setpgid(int, int) error +pkg syscall (darwin-386-cgo), func Setpriority(int, int, int) error +pkg syscall (darwin-386-cgo), func Setprivexec(int) error +pkg syscall (darwin-386-cgo), func Setregid(int, int) error +pkg syscall (darwin-386-cgo), func Setreuid(int, int) error +pkg syscall (darwin-386-cgo), func Setrlimit(int, *Rlimit) error +pkg syscall (darwin-386-cgo), func Setsid() (int, error) +pkg syscall (darwin-386-cgo), func SetsockoptByte(int, byte) error +pkg syscall (darwin-386-cgo), func SetsockoptIPMreq(int, *IPMreq) error +pkg syscall (darwin-386-cgo), func SetsockoptIPv6Mreq(int, *IPv6Mreq) error +pkg syscall (darwin-386-cgo), func SetsockoptInet4Addr(int, [4]byte) error +pkg syscall (darwin-386-cgo), func SetsockoptInt(int, int) error +pkg syscall (darwin-386-cgo), func SetsockoptLinger(int, *Linger) error +pkg syscall (darwin-386-cgo), func SetsockoptString(int, string) error +pkg syscall (darwin-386-cgo), func SetsockoptTimeval(int, *Timeval) error +pkg syscall (darwin-386-cgo), func Settimeofday(*Timeval) error +pkg syscall (darwin-386-cgo), func Setuid(int) error +pkg syscall (darwin-386-cgo), func Shutdown(int, int) error +pkg syscall (darwin-386-cgo), func Socket(int) (int, error) +pkg syscall (darwin-386-cgo), func Socketpair(int) ([2]int, error) +pkg syscall (darwin-386-cgo), func Stat(string, *Stat_t) error +pkg syscall (darwin-386-cgo), func Statfs(string, *Statfs_t) error +pkg syscall (darwin-386-cgo), func StringSlicePtr([]string) []*byte +pkg syscall (darwin-386-cgo), func Symlink(string, string) error +pkg syscall (darwin-386-cgo), func Sync() error +pkg syscall (darwin-386-cgo), func Syscall9(uintptr) (uintptr, Errno) +pkg syscall (darwin-386-cgo), func Sysctl(string) (string, error) +pkg syscall (darwin-386-cgo), func SysctlUint32(string) (uint32, error) +pkg syscall (darwin-386-cgo), func TimespecToNsec(Timespec) int64 +pkg syscall (darwin-386-cgo), func TimevalToNsec(Timeval) int64 +pkg syscall (darwin-386-cgo), func Truncate(string, int64) error +pkg syscall (darwin-386-cgo), func Umask(int) int +pkg syscall (darwin-386-cgo), func Undelete(string) error +pkg syscall (darwin-386-cgo), func UnixRights(...int) []byte +pkg syscall (darwin-386-cgo), func Unmount(string, int) error +pkg syscall (darwin-386-cgo), func Wait4(int, *WaitStatus, int, *Rusage) (int, error) +pkg syscall (darwin-386-cgo), func Write(int, []byte) (int, error) +pkg syscall (darwin-386-cgo), method (*Cmsghdr) SetLen(int) +pkg syscall (darwin-386-cgo), method (*Iovec) SetLen(int) +pkg syscall (darwin-386-cgo), method (*Msghdr) SetControllen(int) +pkg syscall (darwin-386-cgo), type BpfHdr struct +pkg syscall (darwin-386-cgo), type BpfHdr struct, Caplen uint32 +pkg syscall (darwin-386-cgo), type BpfHdr struct, Datalen uint32 +pkg syscall (darwin-386-cgo), type BpfHdr struct, Hdrlen uint16 +pkg syscall (darwin-386-cgo), type BpfHdr struct, Pad_cgo_0 [2]byte +pkg syscall (darwin-386-cgo), type BpfHdr struct, Tstamp Timeval +pkg syscall (darwin-386-cgo), type BpfInsn struct +pkg syscall (darwin-386-cgo), type BpfInsn struct, Code uint16 +pkg syscall (darwin-386-cgo), type BpfInsn struct, Jf uint8 +pkg syscall (darwin-386-cgo), type BpfInsn struct, Jt uint8 +pkg syscall (darwin-386-cgo), type BpfInsn struct, K uint32 +pkg syscall (darwin-386-cgo), type BpfProgram struct +pkg syscall (darwin-386-cgo), type BpfProgram struct, Insns *BpfInsn +pkg syscall (darwin-386-cgo), type BpfProgram struct, Len uint32 +pkg syscall (darwin-386-cgo), type BpfStat struct +pkg syscall (darwin-386-cgo), type BpfStat struct, Drop uint32 +pkg syscall (darwin-386-cgo), type BpfStat struct, Recv uint32 +pkg syscall (darwin-386-cgo), type BpfVersion struct +pkg syscall (darwin-386-cgo), type BpfVersion struct, Major uint16 +pkg syscall (darwin-386-cgo), type BpfVersion struct, Minor uint16 +pkg syscall (darwin-386-cgo), type Cmsghdr struct +pkg syscall (darwin-386-cgo), type Cmsghdr struct, Len uint32 +pkg syscall (darwin-386-cgo), type Cmsghdr struct, Level int32 +pkg syscall (darwin-386-cgo), type Cmsghdr struct, Type int32 +pkg syscall (darwin-386-cgo), type Credential struct +pkg syscall (darwin-386-cgo), type Credential struct, Gid uint32 +pkg syscall (darwin-386-cgo), type Credential struct, Groups []uint32 +pkg syscall (darwin-386-cgo), type Credential struct, Uid uint32 +pkg syscall (darwin-386-cgo), type Dirent struct +pkg syscall (darwin-386-cgo), type Dirent struct, Ino uint64 +pkg syscall (darwin-386-cgo), type Dirent struct, Name [1024]int8 +pkg syscall (darwin-386-cgo), type Dirent struct, Namlen uint16 +pkg syscall (darwin-386-cgo), type Dirent struct, Pad_cgo_0 [3]byte +pkg syscall (darwin-386-cgo), type Dirent struct, Reclen uint16 +pkg syscall (darwin-386-cgo), type Dirent struct, Seekoff uint64 +pkg syscall (darwin-386-cgo), type Dirent struct, Type uint8 +pkg syscall (darwin-386-cgo), type Fbootstraptransfer_t struct +pkg syscall (darwin-386-cgo), type Fbootstraptransfer_t struct, Buffer *byte +pkg syscall (darwin-386-cgo), type Fbootstraptransfer_t struct, Length uint32 +pkg syscall (darwin-386-cgo), type Fbootstraptransfer_t struct, Offset int64 +pkg syscall (darwin-386-cgo), type FdSet struct +pkg syscall (darwin-386-cgo), type FdSet struct, Bits [32]int32 +pkg syscall (darwin-386-cgo), type Flock_t struct +pkg syscall (darwin-386-cgo), type Flock_t struct, Len int64 +pkg syscall (darwin-386-cgo), type Flock_t struct, Pid int32 +pkg syscall (darwin-386-cgo), type Flock_t struct, Start int64 +pkg syscall (darwin-386-cgo), type Flock_t struct, Type int16 +pkg syscall (darwin-386-cgo), type Flock_t struct, Whence int16 +pkg syscall (darwin-386-cgo), type Fsid struct +pkg syscall (darwin-386-cgo), type Fsid struct, Val [2]int32 +pkg syscall (darwin-386-cgo), type Fstore_t struct +pkg syscall (darwin-386-cgo), type Fstore_t struct, Bytesalloc int64 +pkg syscall (darwin-386-cgo), type Fstore_t struct, Flags uint32 +pkg syscall (darwin-386-cgo), type Fstore_t struct, Length int64 +pkg syscall (darwin-386-cgo), type Fstore_t struct, Offset int64 +pkg syscall (darwin-386-cgo), type Fstore_t struct, Posmode int32 +pkg syscall (darwin-386-cgo), type IfData struct +pkg syscall (darwin-386-cgo), type IfData struct, Addrlen uint8 +pkg syscall (darwin-386-cgo), type IfData struct, Baudrate uint32 +pkg syscall (darwin-386-cgo), type IfData struct, Collisions uint32 +pkg syscall (darwin-386-cgo), type IfData struct, Hdrlen uint8 +pkg syscall (darwin-386-cgo), type IfData struct, Hwassist uint32 +pkg syscall (darwin-386-cgo), type IfData struct, Ibytes uint32 +pkg syscall (darwin-386-cgo), type IfData struct, Ierrors uint32 +pkg syscall (darwin-386-cgo), type IfData struct, Imcasts uint32 +pkg syscall (darwin-386-cgo), type IfData struct, Ipackets uint32 +pkg syscall (darwin-386-cgo), type IfData struct, Iqdrops uint32 +pkg syscall (darwin-386-cgo), type IfData struct, Lastchange Timeval +pkg syscall (darwin-386-cgo), type IfData struct, Metric uint32 +pkg syscall (darwin-386-cgo), type IfData struct, Mtu uint32 +pkg syscall (darwin-386-cgo), type IfData struct, Noproto uint32 +pkg syscall (darwin-386-cgo), type IfData struct, Obytes uint32 +pkg syscall (darwin-386-cgo), type IfData struct, Oerrors uint32 +pkg syscall (darwin-386-cgo), type IfData struct, Omcasts uint32 +pkg syscall (darwin-386-cgo), type IfData struct, Opackets uint32 +pkg syscall (darwin-386-cgo), type IfData struct, Physical uint8 +pkg syscall (darwin-386-cgo), type IfData struct, Recvquota uint8 +pkg syscall (darwin-386-cgo), type IfData struct, Recvtiming uint32 +pkg syscall (darwin-386-cgo), type IfData struct, Reserved1 uint32 +pkg syscall (darwin-386-cgo), type IfData struct, Reserved2 uint32 +pkg syscall (darwin-386-cgo), type IfData struct, Type uint8 +pkg syscall (darwin-386-cgo), type IfData struct, Typelen uint8 +pkg syscall (darwin-386-cgo), type IfData struct, Unused1 uint8 +pkg syscall (darwin-386-cgo), type IfData struct, Unused2 uint32 +pkg syscall (darwin-386-cgo), type IfData struct, Xmitquota uint8 +pkg syscall (darwin-386-cgo), type IfData struct, Xmittiming uint32 +pkg syscall (darwin-386-cgo), type IfMsghdr struct +pkg syscall (darwin-386-cgo), type IfMsghdr struct, Addrs int32 +pkg syscall (darwin-386-cgo), type IfMsghdr struct, Data IfData +pkg syscall (darwin-386-cgo), type IfMsghdr struct, Flags int32 +pkg syscall (darwin-386-cgo), type IfMsghdr struct, Index uint16 +pkg syscall (darwin-386-cgo), type IfMsghdr struct, Msglen uint16 +pkg syscall (darwin-386-cgo), type IfMsghdr struct, Pad_cgo_0 [2]byte +pkg syscall (darwin-386-cgo), type IfMsghdr struct, Type uint8 +pkg syscall (darwin-386-cgo), type IfMsghdr struct, Version uint8 +pkg syscall (darwin-386-cgo), type IfaMsghdr struct +pkg syscall (darwin-386-cgo), type IfaMsghdr struct, Addrs int32 +pkg syscall (darwin-386-cgo), type IfaMsghdr struct, Flags int32 +pkg syscall (darwin-386-cgo), type IfaMsghdr struct, Index uint16 +pkg syscall (darwin-386-cgo), type IfaMsghdr struct, Metric int32 +pkg syscall (darwin-386-cgo), type IfaMsghdr struct, Msglen uint16 +pkg syscall (darwin-386-cgo), type IfaMsghdr struct, Pad_cgo_0 [2]byte +pkg syscall (darwin-386-cgo), type IfaMsghdr struct, Type uint8 +pkg syscall (darwin-386-cgo), type IfaMsghdr struct, Version uint8 +pkg syscall (darwin-386-cgo), type IfmaMsghdr struct +pkg syscall (darwin-386-cgo), type IfmaMsghdr struct, Addrs int32 +pkg syscall (darwin-386-cgo), type IfmaMsghdr struct, Flags int32 +pkg syscall (darwin-386-cgo), type IfmaMsghdr struct, Index uint16 +pkg syscall (darwin-386-cgo), type IfmaMsghdr struct, Msglen uint16 +pkg syscall (darwin-386-cgo), type IfmaMsghdr struct, Pad_cgo_0 [2]byte +pkg syscall (darwin-386-cgo), type IfmaMsghdr struct, Type uint8 +pkg syscall (darwin-386-cgo), type IfmaMsghdr struct, Version uint8 +pkg syscall (darwin-386-cgo), type IfmaMsghdr2 struct +pkg syscall (darwin-386-cgo), type IfmaMsghdr2 struct, Addrs int32 +pkg syscall (darwin-386-cgo), type IfmaMsghdr2 struct, Flags int32 +pkg syscall (darwin-386-cgo), type IfmaMsghdr2 struct, Index uint16 +pkg syscall (darwin-386-cgo), type IfmaMsghdr2 struct, Msglen uint16 +pkg syscall (darwin-386-cgo), type IfmaMsghdr2 struct, Pad_cgo_0 [2]byte +pkg syscall (darwin-386-cgo), type IfmaMsghdr2 struct, Refcount int32 +pkg syscall (darwin-386-cgo), type IfmaMsghdr2 struct, Type uint8 +pkg syscall (darwin-386-cgo), type IfmaMsghdr2 struct, Version uint8 +pkg syscall (darwin-386-cgo), type Inet6Pktinfo struct +pkg syscall (darwin-386-cgo), type Inet6Pktinfo struct, Addr [16]byte +pkg syscall (darwin-386-cgo), type Inet6Pktinfo struct, Ifindex uint32 +pkg syscall (darwin-386-cgo), type InterfaceAddrMessage struct +pkg syscall (darwin-386-cgo), type InterfaceAddrMessage struct, Data []byte +pkg syscall (darwin-386-cgo), type InterfaceAddrMessage struct, Header IfaMsghdr +pkg syscall (darwin-386-cgo), type InterfaceMessage struct +pkg syscall (darwin-386-cgo), type InterfaceMessage struct, Data []byte +pkg syscall (darwin-386-cgo), type InterfaceMessage struct, Header IfMsghdr +pkg syscall (darwin-386-cgo), type InterfaceMulticastAddrMessage struct +pkg syscall (darwin-386-cgo), type InterfaceMulticastAddrMessage struct, Data []byte +pkg syscall (darwin-386-cgo), type InterfaceMulticastAddrMessage struct, Header IfmaMsghdr2 +pkg syscall (darwin-386-cgo), type Iovec struct +pkg syscall (darwin-386-cgo), type Iovec struct, Base *byte +pkg syscall (darwin-386-cgo), type Iovec struct, Len uint32 +pkg syscall (darwin-386-cgo), type Kevent_t struct +pkg syscall (darwin-386-cgo), type Kevent_t struct, Data int32 +pkg syscall (darwin-386-cgo), type Kevent_t struct, Fflags uint32 +pkg syscall (darwin-386-cgo), type Kevent_t struct, Filter int16 +pkg syscall (darwin-386-cgo), type Kevent_t struct, Flags uint16 +pkg syscall (darwin-386-cgo), type Kevent_t struct, Ident uint32 +pkg syscall (darwin-386-cgo), type Kevent_t struct, Udata *byte +pkg syscall (darwin-386-cgo), type Log2phys_t struct +pkg syscall (darwin-386-cgo), type Log2phys_t struct, Contigbytes int64 +pkg syscall (darwin-386-cgo), type Log2phys_t struct, Devoffset int64 +pkg syscall (darwin-386-cgo), type Log2phys_t struct, Flags uint32 +pkg syscall (darwin-386-cgo), type Msghdr struct +pkg syscall (darwin-386-cgo), type Msghdr struct, Control *byte +pkg syscall (darwin-386-cgo), type Msghdr struct, Controllen uint32 +pkg syscall (darwin-386-cgo), type Msghdr struct, Flags int32 +pkg syscall (darwin-386-cgo), type Msghdr struct, Iov *Iovec +pkg syscall (darwin-386-cgo), type Msghdr struct, Iovlen int32 +pkg syscall (darwin-386-cgo), type Msghdr struct, Name *byte +pkg syscall (darwin-386-cgo), type Msghdr struct, Namelen uint32 +pkg syscall (darwin-386-cgo), type Radvisory_t struct +pkg syscall (darwin-386-cgo), type Radvisory_t struct, Count int32 +pkg syscall (darwin-386-cgo), type Radvisory_t struct, Offset int64 +pkg syscall (darwin-386-cgo), type RawSockaddr struct, Family uint8 +pkg syscall (darwin-386-cgo), type RawSockaddr struct, Len uint8 +pkg syscall (darwin-386-cgo), type RawSockaddrAny struct, Pad [92]int8 +pkg syscall (darwin-386-cgo), type RawSockaddrDatalink struct +pkg syscall (darwin-386-cgo), type RawSockaddrDatalink struct, Alen uint8 +pkg syscall (darwin-386-cgo), type RawSockaddrDatalink struct, Data [12]int8 +pkg syscall (darwin-386-cgo), type RawSockaddrDatalink struct, Family uint8 +pkg syscall (darwin-386-cgo), type RawSockaddrDatalink struct, Index uint16 +pkg syscall (darwin-386-cgo), type RawSockaddrDatalink struct, Len uint8 +pkg syscall (darwin-386-cgo), type RawSockaddrDatalink struct, Nlen uint8 +pkg syscall (darwin-386-cgo), type RawSockaddrDatalink struct, Slen uint8 +pkg syscall (darwin-386-cgo), type RawSockaddrDatalink struct, Type uint8 +pkg syscall (darwin-386-cgo), type RawSockaddrInet4 struct, Family uint8 +pkg syscall (darwin-386-cgo), type RawSockaddrInet4 struct, Len uint8 +pkg syscall (darwin-386-cgo), type RawSockaddrInet4 struct, Zero [8]int8 +pkg syscall (darwin-386-cgo), type RawSockaddrInet6 struct +pkg syscall (darwin-386-cgo), type RawSockaddrInet6 struct, Addr [16]byte +pkg syscall (darwin-386-cgo), type RawSockaddrInet6 struct, Family uint8 +pkg syscall (darwin-386-cgo), type RawSockaddrInet6 struct, Flowinfo uint32 +pkg syscall (darwin-386-cgo), type RawSockaddrInet6 struct, Len uint8 +pkg syscall (darwin-386-cgo), type RawSockaddrInet6 struct, Port uint16 +pkg syscall (darwin-386-cgo), type RawSockaddrInet6 struct, Scope_id uint32 +pkg syscall (darwin-386-cgo), type RawSockaddrUnix struct +pkg syscall (darwin-386-cgo), type RawSockaddrUnix struct, Family uint8 +pkg syscall (darwin-386-cgo), type RawSockaddrUnix struct, Len uint8 +pkg syscall (darwin-386-cgo), type RawSockaddrUnix struct, Path [104]int8 +pkg syscall (darwin-386-cgo), type Rlimit struct +pkg syscall (darwin-386-cgo), type Rlimit struct, Cur uint64 +pkg syscall (darwin-386-cgo), type Rlimit struct, Max uint64 +pkg syscall (darwin-386-cgo), type RouteMessage struct +pkg syscall (darwin-386-cgo), type RouteMessage struct, Data []byte +pkg syscall (darwin-386-cgo), type RouteMessage struct, Header RtMsghdr +pkg syscall (darwin-386-cgo), type RoutingMessage interface {} +pkg syscall (darwin-386-cgo), type RtMetrics struct +pkg syscall (darwin-386-cgo), type RtMetrics struct, Expire int32 +pkg syscall (darwin-386-cgo), type RtMetrics struct, Filler [4]uint32 +pkg syscall (darwin-386-cgo), type RtMetrics struct, Hopcount uint32 +pkg syscall (darwin-386-cgo), type RtMetrics struct, Locks uint32 +pkg syscall (darwin-386-cgo), type RtMetrics struct, Mtu uint32 +pkg syscall (darwin-386-cgo), type RtMetrics struct, Pksent uint32 +pkg syscall (darwin-386-cgo), type RtMetrics struct, Recvpipe uint32 +pkg syscall (darwin-386-cgo), type RtMetrics struct, Rtt uint32 +pkg syscall (darwin-386-cgo), type RtMetrics struct, Rttvar uint32 +pkg syscall (darwin-386-cgo), type RtMetrics struct, Sendpipe uint32 +pkg syscall (darwin-386-cgo), type RtMetrics struct, Ssthresh uint32 +pkg syscall (darwin-386-cgo), type RtMsghdr struct +pkg syscall (darwin-386-cgo), type RtMsghdr struct, Addrs int32 +pkg syscall (darwin-386-cgo), type RtMsghdr struct, Errno int32 +pkg syscall (darwin-386-cgo), type RtMsghdr struct, Flags int32 +pkg syscall (darwin-386-cgo), type RtMsghdr struct, Index uint16 +pkg syscall (darwin-386-cgo), type RtMsghdr struct, Inits uint32 +pkg syscall (darwin-386-cgo), type RtMsghdr struct, Msglen uint16 +pkg syscall (darwin-386-cgo), type RtMsghdr struct, Pad_cgo_0 [2]byte +pkg syscall (darwin-386-cgo), type RtMsghdr struct, Pid int32 +pkg syscall (darwin-386-cgo), type RtMsghdr struct, Rmx RtMetrics +pkg syscall (darwin-386-cgo), type RtMsghdr struct, Seq int32 +pkg syscall (darwin-386-cgo), type RtMsghdr struct, Type uint8 +pkg syscall (darwin-386-cgo), type RtMsghdr struct, Use int32 +pkg syscall (darwin-386-cgo), type RtMsghdr struct, Version uint8 +pkg syscall (darwin-386-cgo), type Rusage struct, Idrss int32 +pkg syscall (darwin-386-cgo), type Rusage struct, Inblock int32 +pkg syscall (darwin-386-cgo), type Rusage struct, Isrss int32 +pkg syscall (darwin-386-cgo), type Rusage struct, Ixrss int32 +pkg syscall (darwin-386-cgo), type Rusage struct, Majflt int32 +pkg syscall (darwin-386-cgo), type Rusage struct, Maxrss int32 +pkg syscall (darwin-386-cgo), type Rusage struct, Minflt int32 +pkg syscall (darwin-386-cgo), type Rusage struct, Msgrcv int32 +pkg syscall (darwin-386-cgo), type Rusage struct, Msgsnd int32 +pkg syscall (darwin-386-cgo), type Rusage struct, Nivcsw int32 +pkg syscall (darwin-386-cgo), type Rusage struct, Nsignals int32 +pkg syscall (darwin-386-cgo), type Rusage struct, Nswap int32 +pkg syscall (darwin-386-cgo), type Rusage struct, Nvcsw int32 +pkg syscall (darwin-386-cgo), type Rusage struct, Oublock int32 +pkg syscall (darwin-386-cgo), type Rusage struct, Stime Timeval +pkg syscall (darwin-386-cgo), type Rusage struct, Utime Timeval +pkg syscall (darwin-386-cgo), type SockaddrDatalink struct +pkg syscall (darwin-386-cgo), type SockaddrDatalink struct, Alen uint8 +pkg syscall (darwin-386-cgo), type SockaddrDatalink struct, Data [12]int8 +pkg syscall (darwin-386-cgo), type SockaddrDatalink struct, Family uint8 +pkg syscall (darwin-386-cgo), type SockaddrDatalink struct, Index uint16 +pkg syscall (darwin-386-cgo), type SockaddrDatalink struct, Len uint8 +pkg syscall (darwin-386-cgo), type SockaddrDatalink struct, Nlen uint8 +pkg syscall (darwin-386-cgo), type SockaddrDatalink struct, Slen uint8 +pkg syscall (darwin-386-cgo), type SockaddrDatalink struct, Type uint8 +pkg syscall (darwin-386-cgo), type SocketControlMessage struct +pkg syscall (darwin-386-cgo), type SocketControlMessage struct, Data []byte +pkg syscall (darwin-386-cgo), type SocketControlMessage struct, Header Cmsghdr +pkg syscall (darwin-386-cgo), type Stat_t struct +pkg syscall (darwin-386-cgo), type Stat_t struct, Atimespec Timespec +pkg syscall (darwin-386-cgo), type Stat_t struct, Birthtimespec Timespec +pkg syscall (darwin-386-cgo), type Stat_t struct, Blksize int32 +pkg syscall (darwin-386-cgo), type Stat_t struct, Blocks int64 +pkg syscall (darwin-386-cgo), type Stat_t struct, Ctimespec Timespec +pkg syscall (darwin-386-cgo), type Stat_t struct, Dev int32 +pkg syscall (darwin-386-cgo), type Stat_t struct, Flags uint32 +pkg syscall (darwin-386-cgo), type Stat_t struct, Gen uint32 +pkg syscall (darwin-386-cgo), type Stat_t struct, Gid uint32 +pkg syscall (darwin-386-cgo), type Stat_t struct, Ino uint64 +pkg syscall (darwin-386-cgo), type Stat_t struct, Lspare int32 +pkg syscall (darwin-386-cgo), type Stat_t struct, Mode uint16 +pkg syscall (darwin-386-cgo), type Stat_t struct, Mtimespec Timespec +pkg syscall (darwin-386-cgo), type Stat_t struct, Nlink uint16 +pkg syscall (darwin-386-cgo), type Stat_t struct, Qspare [2]int64 +pkg syscall (darwin-386-cgo), type Stat_t struct, Rdev int32 +pkg syscall (darwin-386-cgo), type Stat_t struct, Size int64 +pkg syscall (darwin-386-cgo), type Stat_t struct, Uid uint32 +pkg syscall (darwin-386-cgo), type Statfs_t struct +pkg syscall (darwin-386-cgo), type Statfs_t struct, Bavail uint64 +pkg syscall (darwin-386-cgo), type Statfs_t struct, Bfree uint64 +pkg syscall (darwin-386-cgo), type Statfs_t struct, Blocks uint64 +pkg syscall (darwin-386-cgo), type Statfs_t struct, Bsize uint32 +pkg syscall (darwin-386-cgo), type Statfs_t struct, Ffree uint64 +pkg syscall (darwin-386-cgo), type Statfs_t struct, Files uint64 +pkg syscall (darwin-386-cgo), type Statfs_t struct, Flags uint32 +pkg syscall (darwin-386-cgo), type Statfs_t struct, Fsid Fsid +pkg syscall (darwin-386-cgo), type Statfs_t struct, Fssubtype uint32 +pkg syscall (darwin-386-cgo), type Statfs_t struct, Fstypename [16]int8 +pkg syscall (darwin-386-cgo), type Statfs_t struct, Iosize int32 +pkg syscall (darwin-386-cgo), type Statfs_t struct, Mntfromname [1024]int8 +pkg syscall (darwin-386-cgo), type Statfs_t struct, Mntonname [1024]int8 +pkg syscall (darwin-386-cgo), type Statfs_t struct, Owner uint32 +pkg syscall (darwin-386-cgo), type Statfs_t struct, Reserved [8]uint32 +pkg syscall (darwin-386-cgo), type Statfs_t struct, Type uint32 +pkg syscall (darwin-386-cgo), type SysProcAttr struct, Chroot string +pkg syscall (darwin-386-cgo), type SysProcAttr struct, Credential *Credential +pkg syscall (darwin-386-cgo), type SysProcAttr struct, Noctty bool +pkg syscall (darwin-386-cgo), type SysProcAttr struct, Ptrace bool +pkg syscall (darwin-386-cgo), type SysProcAttr struct, Setctty bool +pkg syscall (darwin-386-cgo), type SysProcAttr struct, Setpgid bool +pkg syscall (darwin-386-cgo), type SysProcAttr struct, Setsid bool +pkg syscall (darwin-386-cgo), type Timespec struct, Nsec int32 +pkg syscall (darwin-386-cgo), type Timespec struct, Sec int32 +pkg syscall (darwin-386-cgo), type Timeval struct, Sec int32 +pkg syscall (darwin-386-cgo), type Timeval struct, Usec int32 +pkg syscall (darwin-386-cgo), type Timeval32 [0]byte +pkg syscall (darwin-386-cgo), type WaitStatus uint32 +pkg syscall (darwin-386-cgo), var Stderr int +pkg syscall (darwin-386-cgo), var Stdin int +pkg syscall (darwin-386-cgo), var Stdout int +pkg syscall (darwin-amd64), const AF_APPLETALK ideal-int +pkg syscall (darwin-amd64), const AF_CCITT ideal-int +pkg syscall (darwin-amd64), const AF_CHAOS ideal-int +pkg syscall (darwin-amd64), const AF_CNT ideal-int +pkg syscall (darwin-amd64), const AF_COIP ideal-int +pkg syscall (darwin-amd64), const AF_DATAKIT ideal-int +pkg syscall (darwin-amd64), const AF_DECnet ideal-int +pkg syscall (darwin-amd64), const AF_DLI ideal-int +pkg syscall (darwin-amd64), const AF_E164 ideal-int +pkg syscall (darwin-amd64), const AF_ECMA ideal-int +pkg syscall (darwin-amd64), const AF_HYLINK ideal-int +pkg syscall (darwin-amd64), const AF_IEEE80211 ideal-int +pkg syscall (darwin-amd64), const AF_IMPLINK ideal-int +pkg syscall (darwin-amd64), const AF_IPX ideal-int +pkg syscall (darwin-amd64), const AF_ISDN ideal-int +pkg syscall (darwin-amd64), const AF_ISO ideal-int +pkg syscall (darwin-amd64), const AF_LAT ideal-int +pkg syscall (darwin-amd64), const AF_LINK ideal-int +pkg syscall (darwin-amd64), const AF_LOCAL ideal-int +pkg syscall (darwin-amd64), const AF_MAX ideal-int +pkg syscall (darwin-amd64), const AF_NATM ideal-int +pkg syscall (darwin-amd64), const AF_NDRV ideal-int +pkg syscall (darwin-amd64), const AF_NETBIOS ideal-int +pkg syscall (darwin-amd64), const AF_NS ideal-int +pkg syscall (darwin-amd64), const AF_OSI ideal-int +pkg syscall (darwin-amd64), const AF_PPP ideal-int +pkg syscall (darwin-amd64), const AF_PUP ideal-int +pkg syscall (darwin-amd64), const AF_RESERVED_36 ideal-int +pkg syscall (darwin-amd64), const AF_ROUTE ideal-int +pkg syscall (darwin-amd64), const AF_SIP ideal-int +pkg syscall (darwin-amd64), const AF_SNA ideal-int +pkg syscall (darwin-amd64), const AF_SYSTEM ideal-int +pkg syscall (darwin-amd64), const BIOCFLUSH ideal-int +pkg syscall (darwin-amd64), const BIOCGBLEN ideal-int +pkg syscall (darwin-amd64), const BIOCGDLT ideal-int +pkg syscall (darwin-amd64), const BIOCGDLTLIST ideal-int +pkg syscall (darwin-amd64), const BIOCGETIF ideal-int +pkg syscall (darwin-amd64), const BIOCGHDRCMPLT ideal-int +pkg syscall (darwin-amd64), const BIOCGRSIG ideal-int +pkg syscall (darwin-amd64), const BIOCGRTIMEOUT ideal-int +pkg syscall (darwin-amd64), const BIOCGSEESENT ideal-int +pkg syscall (darwin-amd64), const BIOCGSTATS ideal-int +pkg syscall (darwin-amd64), const BIOCIMMEDIATE ideal-int +pkg syscall (darwin-amd64), const BIOCPROMISC ideal-int +pkg syscall (darwin-amd64), const BIOCSBLEN ideal-int +pkg syscall (darwin-amd64), const BIOCSDLT ideal-int +pkg syscall (darwin-amd64), const BIOCSETF ideal-int +pkg syscall (darwin-amd64), const BIOCSETIF ideal-int +pkg syscall (darwin-amd64), const BIOCSHDRCMPLT ideal-int +pkg syscall (darwin-amd64), const BIOCSRSIG ideal-int +pkg syscall (darwin-amd64), const BIOCSRTIMEOUT ideal-int +pkg syscall (darwin-amd64), const BIOCSSEESENT ideal-int +pkg syscall (darwin-amd64), const BIOCVERSION ideal-int +pkg syscall (darwin-amd64), const BPF_A ideal-int +pkg syscall (darwin-amd64), const BPF_ABS ideal-int +pkg syscall (darwin-amd64), const BPF_ADD ideal-int +pkg syscall (darwin-amd64), const BPF_ALIGNMENT ideal-int +pkg syscall (darwin-amd64), const BPF_ALU ideal-int +pkg syscall (darwin-amd64), const BPF_AND ideal-int +pkg syscall (darwin-amd64), const BPF_B ideal-int +pkg syscall (darwin-amd64), const BPF_DIV ideal-int +pkg syscall (darwin-amd64), const BPF_H ideal-int +pkg syscall (darwin-amd64), const BPF_IMM ideal-int +pkg syscall (darwin-amd64), const BPF_IND ideal-int +pkg syscall (darwin-amd64), const BPF_JA ideal-int +pkg syscall (darwin-amd64), const BPF_JEQ ideal-int +pkg syscall (darwin-amd64), const BPF_JGE ideal-int +pkg syscall (darwin-amd64), const BPF_JGT ideal-int +pkg syscall (darwin-amd64), const BPF_JMP ideal-int +pkg syscall (darwin-amd64), const BPF_JSET ideal-int +pkg syscall (darwin-amd64), const BPF_K ideal-int +pkg syscall (darwin-amd64), const BPF_LD ideal-int +pkg syscall (darwin-amd64), const BPF_LDX ideal-int +pkg syscall (darwin-amd64), const BPF_LEN ideal-int +pkg syscall (darwin-amd64), const BPF_LSH ideal-int +pkg syscall (darwin-amd64), const BPF_MAJOR_VERSION ideal-int +pkg syscall (darwin-amd64), const BPF_MAXBUFSIZE ideal-int +pkg syscall (darwin-amd64), const BPF_MAXINSNS ideal-int +pkg syscall (darwin-amd64), const BPF_MEM ideal-int +pkg syscall (darwin-amd64), const BPF_MEMWORDS ideal-int +pkg syscall (darwin-amd64), const BPF_MINBUFSIZE ideal-int +pkg syscall (darwin-amd64), const BPF_MINOR_VERSION ideal-int +pkg syscall (darwin-amd64), const BPF_MISC ideal-int +pkg syscall (darwin-amd64), const BPF_MSH ideal-int +pkg syscall (darwin-amd64), const BPF_MUL ideal-int +pkg syscall (darwin-amd64), const BPF_NEG ideal-int +pkg syscall (darwin-amd64), const BPF_OR ideal-int +pkg syscall (darwin-amd64), const BPF_RELEASE ideal-int +pkg syscall (darwin-amd64), const BPF_RET ideal-int +pkg syscall (darwin-amd64), const BPF_RSH ideal-int +pkg syscall (darwin-amd64), const BPF_ST ideal-int +pkg syscall (darwin-amd64), const BPF_STX ideal-int +pkg syscall (darwin-amd64), const BPF_SUB ideal-int +pkg syscall (darwin-amd64), const BPF_TAX ideal-int +pkg syscall (darwin-amd64), const BPF_TXA ideal-int +pkg syscall (darwin-amd64), const BPF_W ideal-int +pkg syscall (darwin-amd64), const BPF_X ideal-int +pkg syscall (darwin-amd64), const CTL_MAXNAME ideal-int +pkg syscall (darwin-amd64), const CTL_NET ideal-int +pkg syscall (darwin-amd64), const DLT_APPLE_IP_OVER_IEEE1394 ideal-int +pkg syscall (darwin-amd64), const DLT_ARCNET ideal-int +pkg syscall (darwin-amd64), const DLT_ATM_CLIP ideal-int +pkg syscall (darwin-amd64), const DLT_ATM_RFC1483 ideal-int +pkg syscall (darwin-amd64), const DLT_AX25 ideal-int +pkg syscall (darwin-amd64), const DLT_CHAOS ideal-int +pkg syscall (darwin-amd64), const DLT_CHDLC ideal-int +pkg syscall (darwin-amd64), const DLT_C_HDLC ideal-int +pkg syscall (darwin-amd64), const DLT_EN10MB ideal-int +pkg syscall (darwin-amd64), const DLT_EN3MB ideal-int +pkg syscall (darwin-amd64), const DLT_FDDI ideal-int +pkg syscall (darwin-amd64), const DLT_IEEE802 ideal-int +pkg syscall (darwin-amd64), const DLT_IEEE802_11 ideal-int +pkg syscall (darwin-amd64), const DLT_IEEE802_11_RADIO ideal-int +pkg syscall (darwin-amd64), const DLT_IEEE802_11_RADIO_AVS ideal-int +pkg syscall (darwin-amd64), const DLT_LINUX_SLL ideal-int +pkg syscall (darwin-amd64), const DLT_LOOP ideal-int +pkg syscall (darwin-amd64), const DLT_NULL ideal-int +pkg syscall (darwin-amd64), const DLT_PFLOG ideal-int +pkg syscall (darwin-amd64), const DLT_PFSYNC ideal-int +pkg syscall (darwin-amd64), const DLT_PPP ideal-int +pkg syscall (darwin-amd64), const DLT_PPP_BSDOS ideal-int +pkg syscall (darwin-amd64), const DLT_PPP_SERIAL ideal-int +pkg syscall (darwin-amd64), const DLT_PRONET ideal-int +pkg syscall (darwin-amd64), const DLT_RAW ideal-int +pkg syscall (darwin-amd64), const DLT_SLIP ideal-int +pkg syscall (darwin-amd64), const DLT_SLIP_BSDOS ideal-int +pkg syscall (darwin-amd64), const DT_BLK ideal-int +pkg syscall (darwin-amd64), const DT_CHR ideal-int +pkg syscall (darwin-amd64), const DT_DIR ideal-int +pkg syscall (darwin-amd64), const DT_FIFO ideal-int +pkg syscall (darwin-amd64), const DT_LNK ideal-int +pkg syscall (darwin-amd64), const DT_REG ideal-int +pkg syscall (darwin-amd64), const DT_SOCK ideal-int +pkg syscall (darwin-amd64), const DT_UNKNOWN ideal-int +pkg syscall (darwin-amd64), const DT_WHT ideal-int +pkg syscall (darwin-amd64), const EAUTH Errno +pkg syscall (darwin-amd64), const EBADARCH Errno +pkg syscall (darwin-amd64), const EBADEXEC Errno +pkg syscall (darwin-amd64), const EBADMACHO Errno +pkg syscall (darwin-amd64), const EBADRPC Errno +pkg syscall (darwin-amd64), const ECHO ideal-int +pkg syscall (darwin-amd64), const ECHOCTL ideal-int +pkg syscall (darwin-amd64), const ECHOE ideal-int +pkg syscall (darwin-amd64), const ECHOK ideal-int +pkg syscall (darwin-amd64), const ECHOKE ideal-int +pkg syscall (darwin-amd64), const ECHONL ideal-int +pkg syscall (darwin-amd64), const ECHOPRT ideal-int +pkg syscall (darwin-amd64), const EDEVERR Errno +pkg syscall (darwin-amd64), const EFTYPE Errno +pkg syscall (darwin-amd64), const ELAST Errno +pkg syscall (darwin-amd64), const ENEEDAUTH Errno +pkg syscall (darwin-amd64), const ENOATTR Errno +pkg syscall (darwin-amd64), const ENOPOLICY Errno +pkg syscall (darwin-amd64), const EPROCLIM Errno +pkg syscall (darwin-amd64), const EPROCUNAVAIL Errno +pkg syscall (darwin-amd64), const EPROGMISMATCH Errno +pkg syscall (darwin-amd64), const EPROGUNAVAIL Errno +pkg syscall (darwin-amd64), const EPWROFF Errno +pkg syscall (darwin-amd64), const ERPCMISMATCH Errno +pkg syscall (darwin-amd64), const ESHLIBVERS Errno +pkg syscall (darwin-amd64), const EVFILT_AIO ideal-int +pkg syscall (darwin-amd64), const EVFILT_FS ideal-int +pkg syscall (darwin-amd64), const EVFILT_MACHPORT ideal-int +pkg syscall (darwin-amd64), const EVFILT_PROC ideal-int +pkg syscall (darwin-amd64), const EVFILT_READ ideal-int +pkg syscall (darwin-amd64), const EVFILT_SIGNAL ideal-int +pkg syscall (darwin-amd64), const EVFILT_SYSCOUNT ideal-int +pkg syscall (darwin-amd64), const EVFILT_THREADMARKER ideal-int +pkg syscall (darwin-amd64), const EVFILT_TIMER ideal-int +pkg syscall (darwin-amd64), const EVFILT_USER ideal-int +pkg syscall (darwin-amd64), const EVFILT_VM ideal-int +pkg syscall (darwin-amd64), const EVFILT_VNODE ideal-int +pkg syscall (darwin-amd64), const EVFILT_WRITE ideal-int +pkg syscall (darwin-amd64), const EV_ADD ideal-int +pkg syscall (darwin-amd64), const EV_CLEAR ideal-int +pkg syscall (darwin-amd64), const EV_DELETE ideal-int +pkg syscall (darwin-amd64), const EV_DISABLE ideal-int +pkg syscall (darwin-amd64), const EV_DISPATCH ideal-int +pkg syscall (darwin-amd64), const EV_ENABLE ideal-int +pkg syscall (darwin-amd64), const EV_EOF ideal-int +pkg syscall (darwin-amd64), const EV_ERROR ideal-int +pkg syscall (darwin-amd64), const EV_FLAG0 ideal-int +pkg syscall (darwin-amd64), const EV_FLAG1 ideal-int +pkg syscall (darwin-amd64), const EV_ONESHOT ideal-int +pkg syscall (darwin-amd64), const EV_OOBAND ideal-int +pkg syscall (darwin-amd64), const EV_POLL ideal-int +pkg syscall (darwin-amd64), const EV_RECEIPT ideal-int +pkg syscall (darwin-amd64), const EV_SYSFLAGS ideal-int +pkg syscall (darwin-amd64), const EXTA ideal-int +pkg syscall (darwin-amd64), const EXTB ideal-int +pkg syscall (darwin-amd64), const EXTPROC ideal-int +pkg syscall (darwin-amd64), const FD_CLOEXEC ideal-int +pkg syscall (darwin-amd64), const FD_SETSIZE ideal-int +pkg syscall (darwin-amd64), const F_ADDFILESIGS ideal-int +pkg syscall (darwin-amd64), const F_ADDSIGS ideal-int +pkg syscall (darwin-amd64), const F_ALLOCATEALL ideal-int +pkg syscall (darwin-amd64), const F_ALLOCATECONTIG ideal-int +pkg syscall (darwin-amd64), const F_CHKCLEAN ideal-int +pkg syscall (darwin-amd64), const F_DUPFD ideal-int +pkg syscall (darwin-amd64), const F_DUPFD_CLOEXEC ideal-int +pkg syscall (darwin-amd64), const F_FLUSH_DATA ideal-int +pkg syscall (darwin-amd64), const F_FREEZE_FS ideal-int +pkg syscall (darwin-amd64), const F_FULLFSYNC ideal-int +pkg syscall (darwin-amd64), const F_GETFD ideal-int +pkg syscall (darwin-amd64), const F_GETFL ideal-int +pkg syscall (darwin-amd64), const F_GETLK ideal-int +pkg syscall (darwin-amd64), const F_GETLKPID ideal-int +pkg syscall (darwin-amd64), const F_GETNOSIGPIPE ideal-int +pkg syscall (darwin-amd64), const F_GETOWN ideal-int +pkg syscall (darwin-amd64), const F_GETPATH ideal-int +pkg syscall (darwin-amd64), const F_GETPATH_MTMINFO ideal-int +pkg syscall (darwin-amd64), const F_GETPROTECTIONCLASS ideal-int +pkg syscall (darwin-amd64), const F_GLOBAL_NOCACHE ideal-int +pkg syscall (darwin-amd64), const F_LOG2PHYS ideal-int +pkg syscall (darwin-amd64), const F_LOG2PHYS_EXT ideal-int +pkg syscall (darwin-amd64), const F_MARKDEPENDENCY ideal-int +pkg syscall (darwin-amd64), const F_NOCACHE ideal-int +pkg syscall (darwin-amd64), const F_NODIRECT ideal-int +pkg syscall (darwin-amd64), const F_OK ideal-int +pkg syscall (darwin-amd64), const F_PATHPKG_CHECK ideal-int +pkg syscall (darwin-amd64), const F_PEOFPOSMODE ideal-int +pkg syscall (darwin-amd64), const F_PREALLOCATE ideal-int +pkg syscall (darwin-amd64), const F_RDADVISE ideal-int +pkg syscall (darwin-amd64), const F_RDAHEAD ideal-int +pkg syscall (darwin-amd64), const F_RDLCK ideal-int +pkg syscall (darwin-amd64), const F_READBOOTSTRAP ideal-int +pkg syscall (darwin-amd64), const F_SETBACKINGSTORE ideal-int +pkg syscall (darwin-amd64), const F_SETFD ideal-int +pkg syscall (darwin-amd64), const F_SETFL ideal-int +pkg syscall (darwin-amd64), const F_SETLK ideal-int +pkg syscall (darwin-amd64), const F_SETLKW ideal-int +pkg syscall (darwin-amd64), const F_SETNOSIGPIPE ideal-int +pkg syscall (darwin-amd64), const F_SETOWN ideal-int +pkg syscall (darwin-amd64), const F_SETPROTECTIONCLASS ideal-int +pkg syscall (darwin-amd64), const F_SETSIZE ideal-int +pkg syscall (darwin-amd64), const F_THAW_FS ideal-int +pkg syscall (darwin-amd64), const F_UNLCK ideal-int +pkg syscall (darwin-amd64), const F_VOLPOSMODE ideal-int +pkg syscall (darwin-amd64), const F_WRITEBOOTSTRAP ideal-int +pkg syscall (darwin-amd64), const F_WRLCK ideal-int +pkg syscall (darwin-amd64), const IFF_ALLMULTI ideal-int +pkg syscall (darwin-amd64), const IFF_ALTPHYS ideal-int +pkg syscall (darwin-amd64), const IFF_DEBUG ideal-int +pkg syscall (darwin-amd64), const IFF_LINK0 ideal-int +pkg syscall (darwin-amd64), const IFF_LINK1 ideal-int +pkg syscall (darwin-amd64), const IFF_LINK2 ideal-int +pkg syscall (darwin-amd64), const IFF_NOARP ideal-int +pkg syscall (darwin-amd64), const IFF_NOTRAILERS ideal-int +pkg syscall (darwin-amd64), const IFF_OACTIVE ideal-int +pkg syscall (darwin-amd64), const IFF_POINTOPOINT ideal-int +pkg syscall (darwin-amd64), const IFF_PROMISC ideal-int +pkg syscall (darwin-amd64), const IFF_RUNNING ideal-int +pkg syscall (darwin-amd64), const IFF_SIMPLEX ideal-int +pkg syscall (darwin-amd64), const IFNAMSIZ ideal-int +pkg syscall (darwin-amd64), const IFT_1822 ideal-int +pkg syscall (darwin-amd64), const IFT_AAL5 ideal-int +pkg syscall (darwin-amd64), const IFT_ARCNET ideal-int +pkg syscall (darwin-amd64), const IFT_ARCNETPLUS ideal-int +pkg syscall (darwin-amd64), const IFT_ATM ideal-int +pkg syscall (darwin-amd64), const IFT_BRIDGE ideal-int +pkg syscall (darwin-amd64), const IFT_CARP ideal-int +pkg syscall (darwin-amd64), const IFT_CELLULAR ideal-int +pkg syscall (darwin-amd64), const IFT_CEPT ideal-int +pkg syscall (darwin-amd64), const IFT_DS3 ideal-int +pkg syscall (darwin-amd64), const IFT_ENC ideal-int +pkg syscall (darwin-amd64), const IFT_EON ideal-int +pkg syscall (darwin-amd64), const IFT_ETHER ideal-int +pkg syscall (darwin-amd64), const IFT_FAITH ideal-int +pkg syscall (darwin-amd64), const IFT_FDDI ideal-int +pkg syscall (darwin-amd64), const IFT_FRELAY ideal-int +pkg syscall (darwin-amd64), const IFT_FRELAYDCE ideal-int +pkg syscall (darwin-amd64), const IFT_GIF ideal-int +pkg syscall (darwin-amd64), const IFT_HDH1822 ideal-int +pkg syscall (darwin-amd64), const IFT_HIPPI ideal-int +pkg syscall (darwin-amd64), const IFT_HSSI ideal-int +pkg syscall (darwin-amd64), const IFT_HY ideal-int +pkg syscall (darwin-amd64), const IFT_IEEE1394 ideal-int +pkg syscall (darwin-amd64), const IFT_IEEE8023ADLAG ideal-int +pkg syscall (darwin-amd64), const IFT_ISDNBASIC ideal-int +pkg syscall (darwin-amd64), const IFT_ISDNPRIMARY ideal-int +pkg syscall (darwin-amd64), const IFT_ISO88022LLC ideal-int +pkg syscall (darwin-amd64), const IFT_ISO88023 ideal-int +pkg syscall (darwin-amd64), const IFT_ISO88024 ideal-int +pkg syscall (darwin-amd64), const IFT_ISO88025 ideal-int +pkg syscall (darwin-amd64), const IFT_ISO88026 ideal-int +pkg syscall (darwin-amd64), const IFT_L2VLAN ideal-int +pkg syscall (darwin-amd64), const IFT_LAPB ideal-int +pkg syscall (darwin-amd64), const IFT_LOCALTALK ideal-int +pkg syscall (darwin-amd64), const IFT_LOOP ideal-int +pkg syscall (darwin-amd64), const IFT_MIOX25 ideal-int +pkg syscall (darwin-amd64), const IFT_MODEM ideal-int +pkg syscall (darwin-amd64), const IFT_NSIP ideal-int +pkg syscall (darwin-amd64), const IFT_OTHER ideal-int +pkg syscall (darwin-amd64), const IFT_P10 ideal-int +pkg syscall (darwin-amd64), const IFT_P80 ideal-int +pkg syscall (darwin-amd64), const IFT_PARA ideal-int +pkg syscall (darwin-amd64), const IFT_PDP ideal-int +pkg syscall (darwin-amd64), const IFT_PFLOG ideal-int +pkg syscall (darwin-amd64), const IFT_PFSYNC ideal-int +pkg syscall (darwin-amd64), const IFT_PPP ideal-int +pkg syscall (darwin-amd64), const IFT_PROPMUX ideal-int +pkg syscall (darwin-amd64), const IFT_PROPVIRTUAL ideal-int +pkg syscall (darwin-amd64), const IFT_PTPSERIAL ideal-int +pkg syscall (darwin-amd64), const IFT_RS232 ideal-int +pkg syscall (darwin-amd64), const IFT_SDLC ideal-int +pkg syscall (darwin-amd64), const IFT_SIP ideal-int +pkg syscall (darwin-amd64), const IFT_SLIP ideal-int +pkg syscall (darwin-amd64), const IFT_SMDSDXI ideal-int +pkg syscall (darwin-amd64), const IFT_SMDSICIP ideal-int +pkg syscall (darwin-amd64), const IFT_SONET ideal-int +pkg syscall (darwin-amd64), const IFT_SONETPATH ideal-int +pkg syscall (darwin-amd64), const IFT_SONETVT ideal-int +pkg syscall (darwin-amd64), const IFT_STARLAN ideal-int +pkg syscall (darwin-amd64), const IFT_STF ideal-int +pkg syscall (darwin-amd64), const IFT_T1 ideal-int +pkg syscall (darwin-amd64), const IFT_ULTRA ideal-int +pkg syscall (darwin-amd64), const IFT_V35 ideal-int +pkg syscall (darwin-amd64), const IFT_X25 ideal-int +pkg syscall (darwin-amd64), const IFT_X25DDN ideal-int +pkg syscall (darwin-amd64), const IFT_X25PLE ideal-int +pkg syscall (darwin-amd64), const IFT_XETHER ideal-int +pkg syscall (darwin-amd64), const IN_CLASSA_HOST ideal-int +pkg syscall (darwin-amd64), const IN_CLASSA_MAX ideal-int +pkg syscall (darwin-amd64), const IN_CLASSA_NET ideal-int +pkg syscall (darwin-amd64), const IN_CLASSA_NSHIFT ideal-int +pkg syscall (darwin-amd64), const IN_CLASSB_HOST ideal-int +pkg syscall (darwin-amd64), const IN_CLASSB_MAX ideal-int +pkg syscall (darwin-amd64), const IN_CLASSB_NET ideal-int +pkg syscall (darwin-amd64), const IN_CLASSB_NSHIFT ideal-int +pkg syscall (darwin-amd64), const IN_CLASSC_HOST ideal-int +pkg syscall (darwin-amd64), const IN_CLASSC_NET ideal-int +pkg syscall (darwin-amd64), const IN_CLASSC_NSHIFT ideal-int +pkg syscall (darwin-amd64), const IN_CLASSD_HOST ideal-int +pkg syscall (darwin-amd64), const IN_CLASSD_NET ideal-int +pkg syscall (darwin-amd64), const IN_CLASSD_NSHIFT ideal-int +pkg syscall (darwin-amd64), const IN_LINKLOCALNETNUM ideal-int +pkg syscall (darwin-amd64), const IN_LOOPBACKNET ideal-int +pkg syscall (darwin-amd64), const IPPROTO_3PC ideal-int +pkg syscall (darwin-amd64), const IPPROTO_ADFS ideal-int +pkg syscall (darwin-amd64), const IPPROTO_AH ideal-int +pkg syscall (darwin-amd64), const IPPROTO_AHIP ideal-int +pkg syscall (darwin-amd64), const IPPROTO_APES ideal-int +pkg syscall (darwin-amd64), const IPPROTO_ARGUS ideal-int +pkg syscall (darwin-amd64), const IPPROTO_AX25 ideal-int +pkg syscall (darwin-amd64), const IPPROTO_BHA ideal-int +pkg syscall (darwin-amd64), const IPPROTO_BLT ideal-int +pkg syscall (darwin-amd64), const IPPROTO_BRSATMON ideal-int +pkg syscall (darwin-amd64), const IPPROTO_CFTP ideal-int +pkg syscall (darwin-amd64), const IPPROTO_CHAOS ideal-int +pkg syscall (darwin-amd64), const IPPROTO_CMTP ideal-int +pkg syscall (darwin-amd64), const IPPROTO_CPHB ideal-int +pkg syscall (darwin-amd64), const IPPROTO_CPNX ideal-int +pkg syscall (darwin-amd64), const IPPROTO_DDP ideal-int +pkg syscall (darwin-amd64), const IPPROTO_DGP ideal-int +pkg syscall (darwin-amd64), const IPPROTO_DIVERT ideal-int +pkg syscall (darwin-amd64), const IPPROTO_DONE ideal-int +pkg syscall (darwin-amd64), const IPPROTO_DSTOPTS ideal-int +pkg syscall (darwin-amd64), const IPPROTO_EGP ideal-int +pkg syscall (darwin-amd64), const IPPROTO_EMCON ideal-int +pkg syscall (darwin-amd64), const IPPROTO_ENCAP ideal-int +pkg syscall (darwin-amd64), const IPPROTO_EON ideal-int +pkg syscall (darwin-amd64), const IPPROTO_ESP ideal-int +pkg syscall (darwin-amd64), const IPPROTO_ETHERIP ideal-int +pkg syscall (darwin-amd64), const IPPROTO_FRAGMENT ideal-int +pkg syscall (darwin-amd64), const IPPROTO_GGP ideal-int +pkg syscall (darwin-amd64), const IPPROTO_GMTP ideal-int +pkg syscall (darwin-amd64), const IPPROTO_GRE ideal-int +pkg syscall (darwin-amd64), const IPPROTO_HELLO ideal-int +pkg syscall (darwin-amd64), const IPPROTO_HMP ideal-int +pkg syscall (darwin-amd64), const IPPROTO_HOPOPTS ideal-int +pkg syscall (darwin-amd64), const IPPROTO_ICMP ideal-int +pkg syscall (darwin-amd64), const IPPROTO_ICMPV6 ideal-int +pkg syscall (darwin-amd64), const IPPROTO_IDP ideal-int +pkg syscall (darwin-amd64), const IPPROTO_IDPR ideal-int +pkg syscall (darwin-amd64), const IPPROTO_IDRP ideal-int +pkg syscall (darwin-amd64), const IPPROTO_IGMP ideal-int +pkg syscall (darwin-amd64), const IPPROTO_IGP ideal-int +pkg syscall (darwin-amd64), const IPPROTO_IGRP ideal-int +pkg syscall (darwin-amd64), const IPPROTO_IL ideal-int +pkg syscall (darwin-amd64), const IPPROTO_INLSP ideal-int +pkg syscall (darwin-amd64), const IPPROTO_INP ideal-int +pkg syscall (darwin-amd64), const IPPROTO_IPCOMP ideal-int +pkg syscall (darwin-amd64), const IPPROTO_IPCV ideal-int +pkg syscall (darwin-amd64), const IPPROTO_IPEIP ideal-int +pkg syscall (darwin-amd64), const IPPROTO_IPIP ideal-int +pkg syscall (darwin-amd64), const IPPROTO_IPPC ideal-int +pkg syscall (darwin-amd64), const IPPROTO_IPV4 ideal-int +pkg syscall (darwin-amd64), const IPPROTO_IRTP ideal-int +pkg syscall (darwin-amd64), const IPPROTO_KRYPTOLAN ideal-int +pkg syscall (darwin-amd64), const IPPROTO_LARP ideal-int +pkg syscall (darwin-amd64), const IPPROTO_LEAF1 ideal-int +pkg syscall (darwin-amd64), const IPPROTO_LEAF2 ideal-int +pkg syscall (darwin-amd64), const IPPROTO_MAX ideal-int +pkg syscall (darwin-amd64), const IPPROTO_MAXID ideal-int +pkg syscall (darwin-amd64), const IPPROTO_MEAS ideal-int +pkg syscall (darwin-amd64), const IPPROTO_MHRP ideal-int +pkg syscall (darwin-amd64), const IPPROTO_MICP ideal-int +pkg syscall (darwin-amd64), const IPPROTO_MTP ideal-int +pkg syscall (darwin-amd64), const IPPROTO_MUX ideal-int +pkg syscall (darwin-amd64), const IPPROTO_ND ideal-int +pkg syscall (darwin-amd64), const IPPROTO_NHRP ideal-int +pkg syscall (darwin-amd64), const IPPROTO_NONE ideal-int +pkg syscall (darwin-amd64), const IPPROTO_NSP ideal-int +pkg syscall (darwin-amd64), const IPPROTO_NVPII ideal-int +pkg syscall (darwin-amd64), const IPPROTO_OSPFIGP ideal-int +pkg syscall (darwin-amd64), const IPPROTO_PGM ideal-int +pkg syscall (darwin-amd64), const IPPROTO_PIGP ideal-int +pkg syscall (darwin-amd64), const IPPROTO_PIM ideal-int +pkg syscall (darwin-amd64), const IPPROTO_PRM ideal-int +pkg syscall (darwin-amd64), const IPPROTO_PUP ideal-int +pkg syscall (darwin-amd64), const IPPROTO_PVP ideal-int +pkg syscall (darwin-amd64), const IPPROTO_RAW ideal-int +pkg syscall (darwin-amd64), const IPPROTO_RCCMON ideal-int +pkg syscall (darwin-amd64), const IPPROTO_RDP ideal-int +pkg syscall (darwin-amd64), const IPPROTO_ROUTING ideal-int +pkg syscall (darwin-amd64), const IPPROTO_RSVP ideal-int +pkg syscall (darwin-amd64), const IPPROTO_RVD ideal-int +pkg syscall (darwin-amd64), const IPPROTO_SATEXPAK ideal-int +pkg syscall (darwin-amd64), const IPPROTO_SATMON ideal-int +pkg syscall (darwin-amd64), const IPPROTO_SCCSP ideal-int +pkg syscall (darwin-amd64), const IPPROTO_SCTP ideal-int +pkg syscall (darwin-amd64), const IPPROTO_SDRP ideal-int +pkg syscall (darwin-amd64), const IPPROTO_SEP ideal-int +pkg syscall (darwin-amd64), const IPPROTO_SRPC ideal-int +pkg syscall (darwin-amd64), const IPPROTO_ST ideal-int +pkg syscall (darwin-amd64), const IPPROTO_SVMTP ideal-int +pkg syscall (darwin-amd64), const IPPROTO_SWIPE ideal-int +pkg syscall (darwin-amd64), const IPPROTO_TCF ideal-int +pkg syscall (darwin-amd64), const IPPROTO_TP ideal-int +pkg syscall (darwin-amd64), const IPPROTO_TPXX ideal-int +pkg syscall (darwin-amd64), const IPPROTO_TRUNK1 ideal-int +pkg syscall (darwin-amd64), const IPPROTO_TRUNK2 ideal-int +pkg syscall (darwin-amd64), const IPPROTO_TTP ideal-int +pkg syscall (darwin-amd64), const IPPROTO_VINES ideal-int +pkg syscall (darwin-amd64), const IPPROTO_VISA ideal-int +pkg syscall (darwin-amd64), const IPPROTO_VMTP ideal-int +pkg syscall (darwin-amd64), const IPPROTO_WBEXPAK ideal-int +pkg syscall (darwin-amd64), const IPPROTO_WBMON ideal-int +pkg syscall (darwin-amd64), const IPPROTO_WSN ideal-int +pkg syscall (darwin-amd64), const IPPROTO_XNET ideal-int +pkg syscall (darwin-amd64), const IPPROTO_XTP ideal-int +pkg syscall (darwin-amd64), const IPV6_2292DSTOPTS ideal-int +pkg syscall (darwin-amd64), const IPV6_2292HOPLIMIT ideal-int +pkg syscall (darwin-amd64), const IPV6_2292HOPOPTS ideal-int +pkg syscall (darwin-amd64), const IPV6_2292NEXTHOP ideal-int +pkg syscall (darwin-amd64), const IPV6_2292PKTINFO ideal-int +pkg syscall (darwin-amd64), const IPV6_2292PKTOPTIONS ideal-int +pkg syscall (darwin-amd64), const IPV6_2292RTHDR ideal-int +pkg syscall (darwin-amd64), const IPV6_BINDV6ONLY ideal-int +pkg syscall (darwin-amd64), const IPV6_BOUND_IF ideal-int +pkg syscall (darwin-amd64), const IPV6_CHECKSUM ideal-int +pkg syscall (darwin-amd64), const IPV6_DEFAULT_MULTICAST_HOPS ideal-int +pkg syscall (darwin-amd64), const IPV6_DEFAULT_MULTICAST_LOOP ideal-int +pkg syscall (darwin-amd64), const IPV6_DEFHLIM ideal-int +pkg syscall (darwin-amd64), const IPV6_FAITH ideal-int +pkg syscall (darwin-amd64), const IPV6_FLOWINFO_MASK ideal-int +pkg syscall (darwin-amd64), const IPV6_FLOWLABEL_MASK ideal-int +pkg syscall (darwin-amd64), const IPV6_FRAGTTL ideal-int +pkg syscall (darwin-amd64), const IPV6_FW_ADD ideal-int +pkg syscall (darwin-amd64), const IPV6_FW_DEL ideal-int +pkg syscall (darwin-amd64), const IPV6_FW_FLUSH ideal-int +pkg syscall (darwin-amd64), const IPV6_FW_GET ideal-int +pkg syscall (darwin-amd64), const IPV6_FW_ZERO ideal-int +pkg syscall (darwin-amd64), const IPV6_HLIMDEC ideal-int +pkg syscall (darwin-amd64), const IPV6_IPSEC_POLICY ideal-int +pkg syscall (darwin-amd64), const IPV6_MAXHLIM ideal-int +pkg syscall (darwin-amd64), const IPV6_MAXOPTHDR ideal-int +pkg syscall (darwin-amd64), const IPV6_MAXPACKET ideal-int +pkg syscall (darwin-amd64), const IPV6_MAX_GROUP_SRC_FILTER ideal-int +pkg syscall (darwin-amd64), const IPV6_MAX_MEMBERSHIPS ideal-int +pkg syscall (darwin-amd64), const IPV6_MAX_SOCK_SRC_FILTER ideal-int +pkg syscall (darwin-amd64), const IPV6_MIN_MEMBERSHIPS ideal-int +pkg syscall (darwin-amd64), const IPV6_MMTU ideal-int +pkg syscall (darwin-amd64), const IPV6_PORTRANGE ideal-int +pkg syscall (darwin-amd64), const IPV6_PORTRANGE_DEFAULT ideal-int +pkg syscall (darwin-amd64), const IPV6_PORTRANGE_HIGH ideal-int +pkg syscall (darwin-amd64), const IPV6_PORTRANGE_LOW ideal-int +pkg syscall (darwin-amd64), const IPV6_RECVTCLASS ideal-int +pkg syscall (darwin-amd64), const IPV6_RTHDR_LOOSE ideal-int +pkg syscall (darwin-amd64), const IPV6_RTHDR_STRICT ideal-int +pkg syscall (darwin-amd64), const IPV6_RTHDR_TYPE_0 ideal-int +pkg syscall (darwin-amd64), const IPV6_SOCKOPT_RESERVED1 ideal-int +pkg syscall (darwin-amd64), const IPV6_TCLASS ideal-int +pkg syscall (darwin-amd64), const IPV6_VERSION ideal-int +pkg syscall (darwin-amd64), const IPV6_VERSION_MASK ideal-int +pkg syscall (darwin-amd64), const IP_ADD_SOURCE_MEMBERSHIP ideal-int +pkg syscall (darwin-amd64), const IP_BLOCK_SOURCE ideal-int +pkg syscall (darwin-amd64), const IP_BOUND_IF ideal-int +pkg syscall (darwin-amd64), const IP_DEFAULT_MULTICAST_LOOP ideal-int +pkg syscall (darwin-amd64), const IP_DEFAULT_MULTICAST_TTL ideal-int +pkg syscall (darwin-amd64), const IP_DF ideal-int +pkg syscall (darwin-amd64), const IP_DROP_SOURCE_MEMBERSHIP ideal-int +pkg syscall (darwin-amd64), const IP_DUMMYNET_CONFIGURE ideal-int +pkg syscall (darwin-amd64), const IP_DUMMYNET_DEL ideal-int +pkg syscall (darwin-amd64), const IP_DUMMYNET_FLUSH ideal-int +pkg syscall (darwin-amd64), const IP_DUMMYNET_GET ideal-int +pkg syscall (darwin-amd64), const IP_FAITH ideal-int +pkg syscall (darwin-amd64), const IP_FW_ADD ideal-int +pkg syscall (darwin-amd64), const IP_FW_DEL ideal-int +pkg syscall (darwin-amd64), const IP_FW_FLUSH ideal-int +pkg syscall (darwin-amd64), const IP_FW_GET ideal-int +pkg syscall (darwin-amd64), const IP_FW_RESETLOG ideal-int +pkg syscall (darwin-amd64), const IP_FW_ZERO ideal-int +pkg syscall (darwin-amd64), const IP_HDRINCL ideal-int +pkg syscall (darwin-amd64), const IP_IPSEC_POLICY ideal-int +pkg syscall (darwin-amd64), const IP_MAXPACKET ideal-int +pkg syscall (darwin-amd64), const IP_MAX_GROUP_SRC_FILTER ideal-int +pkg syscall (darwin-amd64), const IP_MAX_MEMBERSHIPS ideal-int +pkg syscall (darwin-amd64), const IP_MAX_SOCK_MUTE_FILTER ideal-int +pkg syscall (darwin-amd64), const IP_MAX_SOCK_SRC_FILTER ideal-int +pkg syscall (darwin-amd64), const IP_MF ideal-int +pkg syscall (darwin-amd64), const IP_MIN_MEMBERSHIPS ideal-int +pkg syscall (darwin-amd64), const IP_MSFILTER ideal-int +pkg syscall (darwin-amd64), const IP_MSS ideal-int +pkg syscall (darwin-amd64), const IP_MULTICAST_IFINDEX ideal-int +pkg syscall (darwin-amd64), const IP_MULTICAST_VIF ideal-int +pkg syscall (darwin-amd64), const IP_NAT__XXX ideal-int +pkg syscall (darwin-amd64), const IP_OFFMASK ideal-int +pkg syscall (darwin-amd64), const IP_OLD_FW_ADD ideal-int +pkg syscall (darwin-amd64), const IP_OLD_FW_DEL ideal-int +pkg syscall (darwin-amd64), const IP_OLD_FW_FLUSH ideal-int +pkg syscall (darwin-amd64), const IP_OLD_FW_GET ideal-int +pkg syscall (darwin-amd64), const IP_OLD_FW_RESETLOG ideal-int +pkg syscall (darwin-amd64), const IP_OLD_FW_ZERO ideal-int +pkg syscall (darwin-amd64), const IP_OPTIONS ideal-int +pkg syscall (darwin-amd64), const IP_PKTINFO ideal-int +pkg syscall (darwin-amd64), const IP_PORTRANGE ideal-int +pkg syscall (darwin-amd64), const IP_PORTRANGE_DEFAULT ideal-int +pkg syscall (darwin-amd64), const IP_PORTRANGE_HIGH ideal-int +pkg syscall (darwin-amd64), const IP_PORTRANGE_LOW ideal-int +pkg syscall (darwin-amd64), const IP_RECVDSTADDR ideal-int +pkg syscall (darwin-amd64), const IP_RECVIF ideal-int +pkg syscall (darwin-amd64), const IP_RECVOPTS ideal-int +pkg syscall (darwin-amd64), const IP_RECVPKTINFO ideal-int +pkg syscall (darwin-amd64), const IP_RECVRETOPTS ideal-int +pkg syscall (darwin-amd64), const IP_RECVTTL ideal-int +pkg syscall (darwin-amd64), const IP_RETOPTS ideal-int +pkg syscall (darwin-amd64), const IP_RF ideal-int +pkg syscall (darwin-amd64), const IP_RSVP_OFF ideal-int +pkg syscall (darwin-amd64), const IP_RSVP_ON ideal-int +pkg syscall (darwin-amd64), const IP_RSVP_VIF_OFF ideal-int +pkg syscall (darwin-amd64), const IP_RSVP_VIF_ON ideal-int +pkg syscall (darwin-amd64), const IP_STRIPHDR ideal-int +pkg syscall (darwin-amd64), const IP_TRAFFIC_MGT_BACKGROUND ideal-int +pkg syscall (darwin-amd64), const IP_UNBLOCK_SOURCE ideal-int +pkg syscall (darwin-amd64), const LOCK_EX ideal-int +pkg syscall (darwin-amd64), const LOCK_NB ideal-int +pkg syscall (darwin-amd64), const LOCK_SH ideal-int +pkg syscall (darwin-amd64), const LOCK_UN ideal-int +pkg syscall (darwin-amd64), const MADV_CAN_REUSE ideal-int +pkg syscall (darwin-amd64), const MADV_DONTNEED ideal-int +pkg syscall (darwin-amd64), const MADV_FREE ideal-int +pkg syscall (darwin-amd64), const MADV_FREE_REUSABLE ideal-int +pkg syscall (darwin-amd64), const MADV_FREE_REUSE ideal-int +pkg syscall (darwin-amd64), const MADV_NORMAL ideal-int +pkg syscall (darwin-amd64), const MADV_RANDOM ideal-int +pkg syscall (darwin-amd64), const MADV_SEQUENTIAL ideal-int +pkg syscall (darwin-amd64), const MADV_WILLNEED ideal-int +pkg syscall (darwin-amd64), const MADV_ZERO_WIRED_PAGES ideal-int +pkg syscall (darwin-amd64), const MAP_ANON ideal-int +pkg syscall (darwin-amd64), const MAP_COPY ideal-int +pkg syscall (darwin-amd64), const MAP_FILE ideal-int +pkg syscall (darwin-amd64), const MAP_FIXED ideal-int +pkg syscall (darwin-amd64), const MAP_HASSEMAPHORE ideal-int +pkg syscall (darwin-amd64), const MAP_JIT ideal-int +pkg syscall (darwin-amd64), const MAP_NOCACHE ideal-int +pkg syscall (darwin-amd64), const MAP_NOEXTEND ideal-int +pkg syscall (darwin-amd64), const MAP_NORESERVE ideal-int +pkg syscall (darwin-amd64), const MAP_PRIVATE ideal-int +pkg syscall (darwin-amd64), const MAP_RENAME ideal-int +pkg syscall (darwin-amd64), const MAP_RESERVED0080 ideal-int +pkg syscall (darwin-amd64), const MAP_SHARED ideal-int +pkg syscall (darwin-amd64), const MCL_CURRENT ideal-int +pkg syscall (darwin-amd64), const MCL_FUTURE ideal-int +pkg syscall (darwin-amd64), const MSG_CTRUNC ideal-int +pkg syscall (darwin-amd64), const MSG_DONTROUTE ideal-int +pkg syscall (darwin-amd64), const MSG_DONTWAIT ideal-int +pkg syscall (darwin-amd64), const MSG_EOF ideal-int +pkg syscall (darwin-amd64), const MSG_EOR ideal-int +pkg syscall (darwin-amd64), const MSG_FLUSH ideal-int +pkg syscall (darwin-amd64), const MSG_HAVEMORE ideal-int +pkg syscall (darwin-amd64), const MSG_HOLD ideal-int +pkg syscall (darwin-amd64), const MSG_NEEDSA ideal-int +pkg syscall (darwin-amd64), const MSG_OOB ideal-int +pkg syscall (darwin-amd64), const MSG_PEEK ideal-int +pkg syscall (darwin-amd64), const MSG_RCVMORE ideal-int +pkg syscall (darwin-amd64), const MSG_SEND ideal-int +pkg syscall (darwin-amd64), const MSG_TRUNC ideal-int +pkg syscall (darwin-amd64), const MSG_WAITALL ideal-int +pkg syscall (darwin-amd64), const MSG_WAITSTREAM ideal-int +pkg syscall (darwin-amd64), const MS_ASYNC ideal-int +pkg syscall (darwin-amd64), const MS_DEACTIVATE ideal-int +pkg syscall (darwin-amd64), const MS_INVALIDATE ideal-int +pkg syscall (darwin-amd64), const MS_KILLPAGES ideal-int +pkg syscall (darwin-amd64), const MS_SYNC ideal-int +pkg syscall (darwin-amd64), const NAME_MAX ideal-int +pkg syscall (darwin-amd64), const NET_RT_DUMP ideal-int +pkg syscall (darwin-amd64), const NET_RT_DUMP2 ideal-int +pkg syscall (darwin-amd64), const NET_RT_FLAGS ideal-int +pkg syscall (darwin-amd64), const NET_RT_IFLIST ideal-int +pkg syscall (darwin-amd64), const NET_RT_IFLIST2 ideal-int +pkg syscall (darwin-amd64), const NET_RT_MAXID ideal-int +pkg syscall (darwin-amd64), const NET_RT_STAT ideal-int +pkg syscall (darwin-amd64), const NET_RT_TRASH ideal-int +pkg syscall (darwin-amd64), const NOTE_ABSOLUTE ideal-int +pkg syscall (darwin-amd64), const NOTE_ATTRIB ideal-int +pkg syscall (darwin-amd64), const NOTE_CHILD ideal-int +pkg syscall (darwin-amd64), const NOTE_DELETE ideal-int +pkg syscall (darwin-amd64), const NOTE_EXEC ideal-int +pkg syscall (darwin-amd64), const NOTE_EXIT ideal-int +pkg syscall (darwin-amd64), const NOTE_EXITSTATUS ideal-int +pkg syscall (darwin-amd64), const NOTE_EXTEND ideal-int +pkg syscall (darwin-amd64), const NOTE_FFAND ideal-int +pkg syscall (darwin-amd64), const NOTE_FFCOPY ideal-int +pkg syscall (darwin-amd64), const NOTE_FFCTRLMASK ideal-int +pkg syscall (darwin-amd64), const NOTE_FFLAGSMASK ideal-int +pkg syscall (darwin-amd64), const NOTE_FFNOP ideal-int +pkg syscall (darwin-amd64), const NOTE_FFOR ideal-int +pkg syscall (darwin-amd64), const NOTE_FORK ideal-int +pkg syscall (darwin-amd64), const NOTE_LINK ideal-int +pkg syscall (darwin-amd64), const NOTE_LOWAT ideal-int +pkg syscall (darwin-amd64), const NOTE_NONE ideal-int +pkg syscall (darwin-amd64), const NOTE_NSECONDS ideal-int +pkg syscall (darwin-amd64), const NOTE_PCTRLMASK ideal-int +pkg syscall (darwin-amd64), const NOTE_PDATAMASK ideal-int +pkg syscall (darwin-amd64), const NOTE_REAP ideal-int +pkg syscall (darwin-amd64), const NOTE_RENAME ideal-int +pkg syscall (darwin-amd64), const NOTE_RESOURCEEND ideal-int +pkg syscall (darwin-amd64), const NOTE_REVOKE ideal-int +pkg syscall (darwin-amd64), const NOTE_SECONDS ideal-int +pkg syscall (darwin-amd64), const NOTE_SIGNAL ideal-int +pkg syscall (darwin-amd64), const NOTE_TRACK ideal-int +pkg syscall (darwin-amd64), const NOTE_TRACKERR ideal-int +pkg syscall (darwin-amd64), const NOTE_TRIGGER ideal-int +pkg syscall (darwin-amd64), const NOTE_USECONDS ideal-int +pkg syscall (darwin-amd64), const NOTE_VM_ERROR ideal-int +pkg syscall (darwin-amd64), const NOTE_VM_PRESSURE ideal-int +pkg syscall (darwin-amd64), const NOTE_VM_PRESSURE_SUDDEN_TERMINATE ideal-int +pkg syscall (darwin-amd64), const NOTE_VM_PRESSURE_TERMINATE ideal-int +pkg syscall (darwin-amd64), const NOTE_WRITE ideal-int +pkg syscall (darwin-amd64), const O_ACCMODE ideal-int +pkg syscall (darwin-amd64), const O_ALERT ideal-int +pkg syscall (darwin-amd64), const O_DIRECTORY ideal-int +pkg syscall (darwin-amd64), const O_DSYNC ideal-int +pkg syscall (darwin-amd64), const O_EVTONLY ideal-int +pkg syscall (darwin-amd64), const O_EXLOCK ideal-int +pkg syscall (darwin-amd64), const O_FSYNC ideal-int +pkg syscall (darwin-amd64), const O_NDELAY ideal-int +pkg syscall (darwin-amd64), const O_NOFOLLOW ideal-int +pkg syscall (darwin-amd64), const O_POPUP ideal-int +pkg syscall (darwin-amd64), const O_SHLOCK ideal-int +pkg syscall (darwin-amd64), const O_SYMLINK ideal-int +pkg syscall (darwin-amd64), const PROT_EXEC ideal-int +pkg syscall (darwin-amd64), const PROT_NONE ideal-int +pkg syscall (darwin-amd64), const PROT_READ ideal-int +pkg syscall (darwin-amd64), const PROT_WRITE ideal-int +pkg syscall (darwin-amd64), const PTRACE_CONT ideal-int +pkg syscall (darwin-amd64), const PTRACE_KILL ideal-int +pkg syscall (darwin-amd64), const PTRACE_TRACEME ideal-int +pkg syscall (darwin-amd64), const PT_ATTACH ideal-int +pkg syscall (darwin-amd64), const PT_ATTACHEXC ideal-int +pkg syscall (darwin-amd64), const PT_CONTINUE ideal-int +pkg syscall (darwin-amd64), const PT_DENY_ATTACH ideal-int +pkg syscall (darwin-amd64), const PT_DETACH ideal-int +pkg syscall (darwin-amd64), const PT_FIRSTMACH ideal-int +pkg syscall (darwin-amd64), const PT_FORCEQUOTA ideal-int +pkg syscall (darwin-amd64), const PT_KILL ideal-int +pkg syscall (darwin-amd64), const PT_READ_D ideal-int +pkg syscall (darwin-amd64), const PT_READ_I ideal-int +pkg syscall (darwin-amd64), const PT_READ_U ideal-int +pkg syscall (darwin-amd64), const PT_SIGEXC ideal-int +pkg syscall (darwin-amd64), const PT_STEP ideal-int +pkg syscall (darwin-amd64), const PT_THUPDATE ideal-int +pkg syscall (darwin-amd64), const PT_TRACE_ME ideal-int +pkg syscall (darwin-amd64), const PT_WRITE_D ideal-int +pkg syscall (darwin-amd64), const PT_WRITE_I ideal-int +pkg syscall (darwin-amd64), const PT_WRITE_U ideal-int +pkg syscall (darwin-amd64), const RLIMIT_AS ideal-int +pkg syscall (darwin-amd64), const RLIMIT_CORE ideal-int +pkg syscall (darwin-amd64), const RLIMIT_CPU ideal-int +pkg syscall (darwin-amd64), const RLIMIT_DATA ideal-int +pkg syscall (darwin-amd64), const RLIMIT_FSIZE ideal-int +pkg syscall (darwin-amd64), const RLIMIT_NOFILE ideal-int +pkg syscall (darwin-amd64), const RLIMIT_STACK ideal-int +pkg syscall (darwin-amd64), const RLIM_INFINITY ideal-int +pkg syscall (darwin-amd64), const RTAX_AUTHOR ideal-int +pkg syscall (darwin-amd64), const RTAX_BRD ideal-int +pkg syscall (darwin-amd64), const RTAX_DST ideal-int +pkg syscall (darwin-amd64), const RTAX_GATEWAY ideal-int +pkg syscall (darwin-amd64), const RTAX_GENMASK ideal-int +pkg syscall (darwin-amd64), const RTAX_IFA ideal-int +pkg syscall (darwin-amd64), const RTAX_IFP ideal-int +pkg syscall (darwin-amd64), const RTAX_MAX ideal-int +pkg syscall (darwin-amd64), const RTAX_NETMASK ideal-int +pkg syscall (darwin-amd64), const RTA_AUTHOR ideal-int +pkg syscall (darwin-amd64), const RTA_BRD ideal-int +pkg syscall (darwin-amd64), const RTA_DST ideal-int +pkg syscall (darwin-amd64), const RTA_GATEWAY ideal-int +pkg syscall (darwin-amd64), const RTA_GENMASK ideal-int +pkg syscall (darwin-amd64), const RTA_IFA ideal-int +pkg syscall (darwin-amd64), const RTA_IFP ideal-int +pkg syscall (darwin-amd64), const RTA_NETMASK ideal-int +pkg syscall (darwin-amd64), const RTF_BLACKHOLE ideal-int +pkg syscall (darwin-amd64), const RTF_BROADCAST ideal-int +pkg syscall (darwin-amd64), const RTF_CLONING ideal-int +pkg syscall (darwin-amd64), const RTF_CONDEMNED ideal-int +pkg syscall (darwin-amd64), const RTF_DELCLONE ideal-int +pkg syscall (darwin-amd64), const RTF_DONE ideal-int +pkg syscall (darwin-amd64), const RTF_DYNAMIC ideal-int +pkg syscall (darwin-amd64), const RTF_GATEWAY ideal-int +pkg syscall (darwin-amd64), const RTF_HOST ideal-int +pkg syscall (darwin-amd64), const RTF_IFREF ideal-int +pkg syscall (darwin-amd64), const RTF_IFSCOPE ideal-int +pkg syscall (darwin-amd64), const RTF_LLINFO ideal-int +pkg syscall (darwin-amd64), const RTF_LOCAL ideal-int +pkg syscall (darwin-amd64), const RTF_MODIFIED ideal-int +pkg syscall (darwin-amd64), const RTF_MULTICAST ideal-int +pkg syscall (darwin-amd64), const RTF_PINNED ideal-int +pkg syscall (darwin-amd64), const RTF_PRCLONING ideal-int +pkg syscall (darwin-amd64), const RTF_PROTO1 ideal-int +pkg syscall (darwin-amd64), const RTF_PROTO2 ideal-int +pkg syscall (darwin-amd64), const RTF_PROTO3 ideal-int +pkg syscall (darwin-amd64), const RTF_REJECT ideal-int +pkg syscall (darwin-amd64), const RTF_STATIC ideal-int +pkg syscall (darwin-amd64), const RTF_UP ideal-int +pkg syscall (darwin-amd64), const RTF_WASCLONED ideal-int +pkg syscall (darwin-amd64), const RTF_XRESOLVE ideal-int +pkg syscall (darwin-amd64), const RTM_ADD ideal-int +pkg syscall (darwin-amd64), const RTM_CHANGE ideal-int +pkg syscall (darwin-amd64), const RTM_DELADDR ideal-int +pkg syscall (darwin-amd64), const RTM_DELETE ideal-int +pkg syscall (darwin-amd64), const RTM_DELMADDR ideal-int +pkg syscall (darwin-amd64), const RTM_GET ideal-int +pkg syscall (darwin-amd64), const RTM_GET2 ideal-int +pkg syscall (darwin-amd64), const RTM_IFINFO ideal-int +pkg syscall (darwin-amd64), const RTM_IFINFO2 ideal-int +pkg syscall (darwin-amd64), const RTM_LOCK ideal-int +pkg syscall (darwin-amd64), const RTM_LOSING ideal-int +pkg syscall (darwin-amd64), const RTM_MISS ideal-int +pkg syscall (darwin-amd64), const RTM_NEWADDR ideal-int +pkg syscall (darwin-amd64), const RTM_NEWMADDR ideal-int +pkg syscall (darwin-amd64), const RTM_NEWMADDR2 ideal-int +pkg syscall (darwin-amd64), const RTM_OLDADD ideal-int +pkg syscall (darwin-amd64), const RTM_OLDDEL ideal-int +pkg syscall (darwin-amd64), const RTM_REDIRECT ideal-int +pkg syscall (darwin-amd64), const RTM_RESOLVE ideal-int +pkg syscall (darwin-amd64), const RTM_RTTUNIT ideal-int +pkg syscall (darwin-amd64), const RTM_VERSION ideal-int +pkg syscall (darwin-amd64), const RTV_EXPIRE ideal-int +pkg syscall (darwin-amd64), const RTV_HOPCOUNT ideal-int +pkg syscall (darwin-amd64), const RTV_MTU ideal-int +pkg syscall (darwin-amd64), const RTV_RPIPE ideal-int +pkg syscall (darwin-amd64), const RTV_RTT ideal-int +pkg syscall (darwin-amd64), const RTV_RTTVAR ideal-int +pkg syscall (darwin-amd64), const RTV_SPIPE ideal-int +pkg syscall (darwin-amd64), const RTV_SSTHRESH ideal-int +pkg syscall (darwin-amd64), const RUSAGE_CHILDREN ideal-int +pkg syscall (darwin-amd64), const RUSAGE_SELF ideal-int +pkg syscall (darwin-amd64), const SCM_CREDS ideal-int +pkg syscall (darwin-amd64), const SCM_RIGHTS ideal-int +pkg syscall (darwin-amd64), const SCM_TIMESTAMP ideal-int +pkg syscall (darwin-amd64), const SCM_TIMESTAMP_MONOTONIC ideal-int +pkg syscall (darwin-amd64), const SIGCHLD Signal +pkg syscall (darwin-amd64), const SIGCONT Signal +pkg syscall (darwin-amd64), const SIGEMT Signal +pkg syscall (darwin-amd64), const SIGINFO Signal +pkg syscall (darwin-amd64), const SIGIO Signal +pkg syscall (darwin-amd64), const SIGIOT Signal +pkg syscall (darwin-amd64), const SIGPROF Signal +pkg syscall (darwin-amd64), const SIGSTOP Signal +pkg syscall (darwin-amd64), const SIGSYS Signal +pkg syscall (darwin-amd64), const SIGTSTP Signal +pkg syscall (darwin-amd64), const SIGTTIN Signal +pkg syscall (darwin-amd64), const SIGTTOU Signal +pkg syscall (darwin-amd64), const SIGURG Signal +pkg syscall (darwin-amd64), const SIGUSR1 Signal +pkg syscall (darwin-amd64), const SIGUSR2 Signal +pkg syscall (darwin-amd64), const SIGVTALRM Signal +pkg syscall (darwin-amd64), const SIGWINCH Signal +pkg syscall (darwin-amd64), const SIGXCPU Signal +pkg syscall (darwin-amd64), const SIGXFSZ Signal +pkg syscall (darwin-amd64), const SIOCADDMULTI ideal-int +pkg syscall (darwin-amd64), const SIOCAIFADDR ideal-int +pkg syscall (darwin-amd64), const SIOCALIFADDR ideal-int +pkg syscall (darwin-amd64), const SIOCARPIPLL ideal-int +pkg syscall (darwin-amd64), const SIOCATMARK ideal-int +pkg syscall (darwin-amd64), const SIOCAUTOADDR ideal-int +pkg syscall (darwin-amd64), const SIOCAUTONETMASK ideal-int +pkg syscall (darwin-amd64), const SIOCDELMULTI ideal-int +pkg syscall (darwin-amd64), const SIOCDIFADDR ideal-int +pkg syscall (darwin-amd64), const SIOCDIFPHYADDR ideal-int +pkg syscall (darwin-amd64), const SIOCDLIFADDR ideal-int +pkg syscall (darwin-amd64), const SIOCGDRVSPEC ideal-int +pkg syscall (darwin-amd64), const SIOCGETSGCNT ideal-int +pkg syscall (darwin-amd64), const SIOCGETVIFCNT ideal-int +pkg syscall (darwin-amd64), const SIOCGETVLAN ideal-int +pkg syscall (darwin-amd64), const SIOCGHIWAT ideal-int +pkg syscall (darwin-amd64), const SIOCGIFADDR ideal-int +pkg syscall (darwin-amd64), const SIOCGIFALTMTU ideal-int +pkg syscall (darwin-amd64), const SIOCGIFASYNCMAP ideal-int +pkg syscall (darwin-amd64), const SIOCGIFBOND ideal-int +pkg syscall (darwin-amd64), const SIOCGIFBRDADDR ideal-int +pkg syscall (darwin-amd64), const SIOCGIFCAP ideal-int +pkg syscall (darwin-amd64), const SIOCGIFCONF ideal-int +pkg syscall (darwin-amd64), const SIOCGIFDEVMTU ideal-int +pkg syscall (darwin-amd64), const SIOCGIFDSTADDR ideal-int +pkg syscall (darwin-amd64), const SIOCGIFFLAGS ideal-int +pkg syscall (darwin-amd64), const SIOCGIFGENERIC ideal-int +pkg syscall (darwin-amd64), const SIOCGIFKPI ideal-int +pkg syscall (darwin-amd64), const SIOCGIFMAC ideal-int +pkg syscall (darwin-amd64), const SIOCGIFMEDIA ideal-int +pkg syscall (darwin-amd64), const SIOCGIFMETRIC ideal-int +pkg syscall (darwin-amd64), const SIOCGIFMTU ideal-int +pkg syscall (darwin-amd64), const SIOCGIFNETMASK ideal-int +pkg syscall (darwin-amd64), const SIOCGIFPDSTADDR ideal-int +pkg syscall (darwin-amd64), const SIOCGIFPHYS ideal-int +pkg syscall (darwin-amd64), const SIOCGIFPSRCADDR ideal-int +pkg syscall (darwin-amd64), const SIOCGIFSTATUS ideal-int +pkg syscall (darwin-amd64), const SIOCGIFVLAN ideal-int +pkg syscall (darwin-amd64), const SIOCGIFWAKEFLAGS ideal-int +pkg syscall (darwin-amd64), const SIOCGLIFADDR ideal-int +pkg syscall (darwin-amd64), const SIOCGLIFPHYADDR ideal-int +pkg syscall (darwin-amd64), const SIOCGLOWAT ideal-int +pkg syscall (darwin-amd64), const SIOCGPGRP ideal-int +pkg syscall (darwin-amd64), const SIOCIFCREATE ideal-int +pkg syscall (darwin-amd64), const SIOCIFCREATE2 ideal-int +pkg syscall (darwin-amd64), const SIOCIFDESTROY ideal-int +pkg syscall (darwin-amd64), const SIOCRSLVMULTI ideal-int +pkg syscall (darwin-amd64), const SIOCSDRVSPEC ideal-int +pkg syscall (darwin-amd64), const SIOCSETVLAN ideal-int +pkg syscall (darwin-amd64), const SIOCSHIWAT ideal-int +pkg syscall (darwin-amd64), const SIOCSIFADDR ideal-int +pkg syscall (darwin-amd64), const SIOCSIFALTMTU ideal-int +pkg syscall (darwin-amd64), const SIOCSIFASYNCMAP ideal-int +pkg syscall (darwin-amd64), const SIOCSIFBOND ideal-int +pkg syscall (darwin-amd64), const SIOCSIFBRDADDR ideal-int +pkg syscall (darwin-amd64), const SIOCSIFCAP ideal-int +pkg syscall (darwin-amd64), const SIOCSIFDSTADDR ideal-int +pkg syscall (darwin-amd64), const SIOCSIFFLAGS ideal-int +pkg syscall (darwin-amd64), const SIOCSIFGENERIC ideal-int +pkg syscall (darwin-amd64), const SIOCSIFKPI ideal-int +pkg syscall (darwin-amd64), const SIOCSIFLLADDR ideal-int +pkg syscall (darwin-amd64), const SIOCSIFMAC ideal-int +pkg syscall (darwin-amd64), const SIOCSIFMEDIA ideal-int +pkg syscall (darwin-amd64), const SIOCSIFMETRIC ideal-int +pkg syscall (darwin-amd64), const SIOCSIFMTU ideal-int +pkg syscall (darwin-amd64), const SIOCSIFNETMASK ideal-int +pkg syscall (darwin-amd64), const SIOCSIFPHYADDR ideal-int +pkg syscall (darwin-amd64), const SIOCSIFPHYS ideal-int +pkg syscall (darwin-amd64), const SIOCSIFVLAN ideal-int +pkg syscall (darwin-amd64), const SIOCSLIFPHYADDR ideal-int +pkg syscall (darwin-amd64), const SIOCSLOWAT ideal-int +pkg syscall (darwin-amd64), const SIOCSPGRP ideal-int +pkg syscall (darwin-amd64), const SOCK_MAXADDRLEN ideal-int +pkg syscall (darwin-amd64), const SOCK_RDM ideal-int +pkg syscall (darwin-amd64), const SO_ACCEPTCONN ideal-int +pkg syscall (darwin-amd64), const SO_DEBUG ideal-int +pkg syscall (darwin-amd64), const SO_DONTTRUNC ideal-int +pkg syscall (darwin-amd64), const SO_ERROR ideal-int +pkg syscall (darwin-amd64), const SO_LABEL ideal-int +pkg syscall (darwin-amd64), const SO_LINGER_SEC ideal-int +pkg syscall (darwin-amd64), const SO_NKE ideal-int +pkg syscall (darwin-amd64), const SO_NOADDRERR ideal-int +pkg syscall (darwin-amd64), const SO_NOSIGPIPE ideal-int +pkg syscall (darwin-amd64), const SO_NOTIFYCONFLICT ideal-int +pkg syscall (darwin-amd64), const SO_NP_EXTENSIONS ideal-int +pkg syscall (darwin-amd64), const SO_NREAD ideal-int +pkg syscall (darwin-amd64), const SO_NWRITE ideal-int +pkg syscall (darwin-amd64), const SO_OOBINLINE ideal-int +pkg syscall (darwin-amd64), const SO_PEERLABEL ideal-int +pkg syscall (darwin-amd64), const SO_RANDOMPORT ideal-int +pkg syscall (darwin-amd64), const SO_RCVLOWAT ideal-int +pkg syscall (darwin-amd64), const SO_RCVTIMEO ideal-int +pkg syscall (darwin-amd64), const SO_RESTRICTIONS ideal-int +pkg syscall (darwin-amd64), const SO_RESTRICT_DENYIN ideal-int +pkg syscall (darwin-amd64), const SO_RESTRICT_DENYOUT ideal-int +pkg syscall (darwin-amd64), const SO_RESTRICT_DENYSET ideal-int +pkg syscall (darwin-amd64), const SO_REUSEPORT ideal-int +pkg syscall (darwin-amd64), const SO_REUSESHAREUID ideal-int +pkg syscall (darwin-amd64), const SO_SNDLOWAT ideal-int +pkg syscall (darwin-amd64), const SO_SNDTIMEO ideal-int +pkg syscall (darwin-amd64), const SO_TIMESTAMP ideal-int +pkg syscall (darwin-amd64), const SO_TIMESTAMP_MONOTONIC ideal-int +pkg syscall (darwin-amd64), const SO_TYPE ideal-int +pkg syscall (darwin-amd64), const SO_UPCALLCLOSEWAIT ideal-int +pkg syscall (darwin-amd64), const SO_USELOOPBACK ideal-int +pkg syscall (darwin-amd64), const SO_WANTMORE ideal-int +pkg syscall (darwin-amd64), const SO_WANTOOBFLAG ideal-int +pkg syscall (darwin-amd64), const SYS_ACCEPT ideal-int +pkg syscall (darwin-amd64), const SYS_ACCEPT_NOCANCEL ideal-int +pkg syscall (darwin-amd64), const SYS_ACCESS ideal-int +pkg syscall (darwin-amd64), const SYS_ACCESS_EXTENDED ideal-int +pkg syscall (darwin-amd64), const SYS_ACCT ideal-int +pkg syscall (darwin-amd64), const SYS_ADD_PROFIL ideal-int +pkg syscall (darwin-amd64), const SYS_ADJTIME ideal-int +pkg syscall (darwin-amd64), const SYS_AIO_CANCEL ideal-int +pkg syscall (darwin-amd64), const SYS_AIO_ERROR ideal-int +pkg syscall (darwin-amd64), const SYS_AIO_FSYNC ideal-int +pkg syscall (darwin-amd64), const SYS_AIO_READ ideal-int +pkg syscall (darwin-amd64), const SYS_AIO_RETURN ideal-int +pkg syscall (darwin-amd64), const SYS_AIO_SUSPEND ideal-int +pkg syscall (darwin-amd64), const SYS_AIO_SUSPEND_NOCANCEL ideal-int +pkg syscall (darwin-amd64), const SYS_AIO_WRITE ideal-int +pkg syscall (darwin-amd64), const SYS_ATGETMSG ideal-int +pkg syscall (darwin-amd64), const SYS_ATPGETREQ ideal-int +pkg syscall (darwin-amd64), const SYS_ATPGETRSP ideal-int +pkg syscall (darwin-amd64), const SYS_ATPSNDREQ ideal-int +pkg syscall (darwin-amd64), const SYS_ATPSNDRSP ideal-int +pkg syscall (darwin-amd64), const SYS_ATPUTMSG ideal-int +pkg syscall (darwin-amd64), const SYS_ATSOCKET ideal-int +pkg syscall (darwin-amd64), const SYS_AUDIT ideal-int +pkg syscall (darwin-amd64), const SYS_AUDITCTL ideal-int +pkg syscall (darwin-amd64), const SYS_AUDITON ideal-int +pkg syscall (darwin-amd64), const SYS_AUDIT_SESSION_JOIN ideal-int +pkg syscall (darwin-amd64), const SYS_AUDIT_SESSION_PORT ideal-int +pkg syscall (darwin-amd64), const SYS_AUDIT_SESSION_SELF ideal-int +pkg syscall (darwin-amd64), const SYS_BIND ideal-int +pkg syscall (darwin-amd64), const SYS_BSDTHREAD_CREATE ideal-int +pkg syscall (darwin-amd64), const SYS_BSDTHREAD_REGISTER ideal-int +pkg syscall (darwin-amd64), const SYS_BSDTHREAD_TERMINATE ideal-int +pkg syscall (darwin-amd64), const SYS_CHDIR ideal-int +pkg syscall (darwin-amd64), const SYS_CHFLAGS ideal-int +pkg syscall (darwin-amd64), const SYS_CHMOD ideal-int +pkg syscall (darwin-amd64), const SYS_CHMOD_EXTENDED ideal-int +pkg syscall (darwin-amd64), const SYS_CHOWN ideal-int +pkg syscall (darwin-amd64), const SYS_CHROOT ideal-int +pkg syscall (darwin-amd64), const SYS_CHUD ideal-int +pkg syscall (darwin-amd64), const SYS_CLOSE ideal-int +pkg syscall (darwin-amd64), const SYS_CLOSE_NOCANCEL ideal-int +pkg syscall (darwin-amd64), const SYS_CONNECT ideal-int +pkg syscall (darwin-amd64), const SYS_CONNECT_NOCANCEL ideal-int +pkg syscall (darwin-amd64), const SYS_COPYFILE ideal-int +pkg syscall (darwin-amd64), const SYS_CSOPS ideal-int +pkg syscall (darwin-amd64), const SYS_DELETE ideal-int +pkg syscall (darwin-amd64), const SYS_DUP ideal-int +pkg syscall (darwin-amd64), const SYS_DUP2 ideal-int +pkg syscall (darwin-amd64), const SYS_EXCHANGEDATA ideal-int +pkg syscall (darwin-amd64), const SYS_EXECVE ideal-int +pkg syscall (darwin-amd64), const SYS_EXIT ideal-int +pkg syscall (darwin-amd64), const SYS_FCHDIR ideal-int +pkg syscall (darwin-amd64), const SYS_FCHFLAGS ideal-int +pkg syscall (darwin-amd64), const SYS_FCHMOD ideal-int +pkg syscall (darwin-amd64), const SYS_FCHMOD_EXTENDED ideal-int +pkg syscall (darwin-amd64), const SYS_FCHOWN ideal-int +pkg syscall (darwin-amd64), const SYS_FCNTL ideal-int +pkg syscall (darwin-amd64), const SYS_FCNTL_NOCANCEL ideal-int +pkg syscall (darwin-amd64), const SYS_FDATASYNC ideal-int +pkg syscall (darwin-amd64), const SYS_FFSCTL ideal-int +pkg syscall (darwin-amd64), const SYS_FGETATTRLIST ideal-int +pkg syscall (darwin-amd64), const SYS_FGETXATTR ideal-int +pkg syscall (darwin-amd64), const SYS_FHOPEN ideal-int +pkg syscall (darwin-amd64), const SYS_FILEPORT_MAKEFD ideal-int +pkg syscall (darwin-amd64), const SYS_FILEPORT_MAKEPORT ideal-int +pkg syscall (darwin-amd64), const SYS_FLISTXATTR ideal-int +pkg syscall (darwin-amd64), const SYS_FLOCK ideal-int +pkg syscall (darwin-amd64), const SYS_FORK ideal-int +pkg syscall (darwin-amd64), const SYS_FPATHCONF ideal-int +pkg syscall (darwin-amd64), const SYS_FREMOVEXATTR ideal-int +pkg syscall (darwin-amd64), const SYS_FSCTL ideal-int +pkg syscall (darwin-amd64), const SYS_FSETATTRLIST ideal-int +pkg syscall (darwin-amd64), const SYS_FSETXATTR ideal-int +pkg syscall (darwin-amd64), const SYS_FSGETPATH ideal-int +pkg syscall (darwin-amd64), const SYS_FSTAT ideal-int +pkg syscall (darwin-amd64), const SYS_FSTAT64 ideal-int +pkg syscall (darwin-amd64), const SYS_FSTAT64_EXTENDED ideal-int +pkg syscall (darwin-amd64), const SYS_FSTATFS ideal-int +pkg syscall (darwin-amd64), const SYS_FSTATFS64 ideal-int +pkg syscall (darwin-amd64), const SYS_FSTATV ideal-int +pkg syscall (darwin-amd64), const SYS_FSTAT_EXTENDED ideal-int +pkg syscall (darwin-amd64), const SYS_FSYNC ideal-int +pkg syscall (darwin-amd64), const SYS_FSYNC_NOCANCEL ideal-int +pkg syscall (darwin-amd64), const SYS_FTRUNCATE ideal-int +pkg syscall (darwin-amd64), const SYS_FUTIMES ideal-int +pkg syscall (darwin-amd64), const SYS_GETATTRLIST ideal-int +pkg syscall (darwin-amd64), const SYS_GETAUDIT ideal-int +pkg syscall (darwin-amd64), const SYS_GETAUDIT_ADDR ideal-int +pkg syscall (darwin-amd64), const SYS_GETAUID ideal-int +pkg syscall (darwin-amd64), const SYS_GETDIRENTRIES ideal-int +pkg syscall (darwin-amd64), const SYS_GETDIRENTRIES64 ideal-int +pkg syscall (darwin-amd64), const SYS_GETDIRENTRIESATTR ideal-int +pkg syscall (darwin-amd64), const SYS_GETDTABLESIZE ideal-int +pkg syscall (darwin-amd64), const SYS_GETEGID ideal-int +pkg syscall (darwin-amd64), const SYS_GETEUID ideal-int +pkg syscall (darwin-amd64), const SYS_GETFH ideal-int +pkg syscall (darwin-amd64), const SYS_GETFSSTAT ideal-int +pkg syscall (darwin-amd64), const SYS_GETFSSTAT64 ideal-int +pkg syscall (darwin-amd64), const SYS_GETGID ideal-int +pkg syscall (darwin-amd64), const SYS_GETGROUPS ideal-int +pkg syscall (darwin-amd64), const SYS_GETHOSTUUID ideal-int +pkg syscall (darwin-amd64), const SYS_GETITIMER ideal-int +pkg syscall (darwin-amd64), const SYS_GETLCID ideal-int +pkg syscall (darwin-amd64), const SYS_GETLOGIN ideal-int +pkg syscall (darwin-amd64), const SYS_GETPEERNAME ideal-int +pkg syscall (darwin-amd64), const SYS_GETPGID ideal-int +pkg syscall (darwin-amd64), const SYS_GETPGRP ideal-int +pkg syscall (darwin-amd64), const SYS_GETPID ideal-int +pkg syscall (darwin-amd64), const SYS_GETPPID ideal-int +pkg syscall (darwin-amd64), const SYS_GETPRIORITY ideal-int +pkg syscall (darwin-amd64), const SYS_GETRLIMIT ideal-int +pkg syscall (darwin-amd64), const SYS_GETRUSAGE ideal-int +pkg syscall (darwin-amd64), const SYS_GETSGROUPS ideal-int +pkg syscall (darwin-amd64), const SYS_GETSID ideal-int +pkg syscall (darwin-amd64), const SYS_GETSOCKNAME ideal-int +pkg syscall (darwin-amd64), const SYS_GETSOCKOPT ideal-int +pkg syscall (darwin-amd64), const SYS_GETTID ideal-int +pkg syscall (darwin-amd64), const SYS_GETTIMEOFDAY ideal-int +pkg syscall (darwin-amd64), const SYS_GETUID ideal-int +pkg syscall (darwin-amd64), const SYS_GETWGROUPS ideal-int +pkg syscall (darwin-amd64), const SYS_GETXATTR ideal-int +pkg syscall (darwin-amd64), const SYS_IDENTITYSVC ideal-int +pkg syscall (darwin-amd64), const SYS_INITGROUPS ideal-int +pkg syscall (darwin-amd64), const SYS_IOCTL ideal-int +pkg syscall (darwin-amd64), const SYS_IOPOLICYSYS ideal-int +pkg syscall (darwin-amd64), const SYS_ISSETUGID ideal-int +pkg syscall (darwin-amd64), const SYS_KDEBUG_TRACE ideal-int +pkg syscall (darwin-amd64), const SYS_KEVENT ideal-int +pkg syscall (darwin-amd64), const SYS_KEVENT64 ideal-int +pkg syscall (darwin-amd64), const SYS_KILL ideal-int +pkg syscall (darwin-amd64), const SYS_KQUEUE ideal-int +pkg syscall (darwin-amd64), const SYS_LCHOWN ideal-int +pkg syscall (darwin-amd64), const SYS_LINK ideal-int +pkg syscall (darwin-amd64), const SYS_LIO_LISTIO ideal-int +pkg syscall (darwin-amd64), const SYS_LISTEN ideal-int +pkg syscall (darwin-amd64), const SYS_LISTXATTR ideal-int +pkg syscall (darwin-amd64), const SYS_LSEEK ideal-int +pkg syscall (darwin-amd64), const SYS_LSTAT ideal-int +pkg syscall (darwin-amd64), const SYS_LSTAT64 ideal-int +pkg syscall (darwin-amd64), const SYS_LSTAT64_EXTENDED ideal-int +pkg syscall (darwin-amd64), const SYS_LSTATV ideal-int +pkg syscall (darwin-amd64), const SYS_LSTAT_EXTENDED ideal-int +pkg syscall (darwin-amd64), const SYS_MADVISE ideal-int +pkg syscall (darwin-amd64), const SYS_MAXSYSCALL ideal-int +pkg syscall (darwin-amd64), const SYS_MINCORE ideal-int +pkg syscall (darwin-amd64), const SYS_MINHERIT ideal-int +pkg syscall (darwin-amd64), const SYS_MKCOMPLEX ideal-int +pkg syscall (darwin-amd64), const SYS_MKDIR ideal-int +pkg syscall (darwin-amd64), const SYS_MKDIR_EXTENDED ideal-int +pkg syscall (darwin-amd64), const SYS_MKFIFO ideal-int +pkg syscall (darwin-amd64), const SYS_MKFIFO_EXTENDED ideal-int +pkg syscall (darwin-amd64), const SYS_MKNOD ideal-int +pkg syscall (darwin-amd64), const SYS_MLOCK ideal-int +pkg syscall (darwin-amd64), const SYS_MLOCKALL ideal-int +pkg syscall (darwin-amd64), const SYS_MMAP ideal-int +pkg syscall (darwin-amd64), const SYS_MODWATCH ideal-int +pkg syscall (darwin-amd64), const SYS_MOUNT ideal-int +pkg syscall (darwin-amd64), const SYS_MPROTECT ideal-int +pkg syscall (darwin-amd64), const SYS_MSGCTL ideal-int +pkg syscall (darwin-amd64), const SYS_MSGGET ideal-int +pkg syscall (darwin-amd64), const SYS_MSGRCV ideal-int +pkg syscall (darwin-amd64), const SYS_MSGRCV_NOCANCEL ideal-int +pkg syscall (darwin-amd64), const SYS_MSGSND ideal-int +pkg syscall (darwin-amd64), const SYS_MSGSND_NOCANCEL ideal-int +pkg syscall (darwin-amd64), const SYS_MSGSYS ideal-int +pkg syscall (darwin-amd64), const SYS_MSYNC ideal-int +pkg syscall (darwin-amd64), const SYS_MSYNC_NOCANCEL ideal-int +pkg syscall (darwin-amd64), const SYS_MUNLOCK ideal-int +pkg syscall (darwin-amd64), const SYS_MUNLOCKALL ideal-int +pkg syscall (darwin-amd64), const SYS_MUNMAP ideal-int +pkg syscall (darwin-amd64), const SYS_NFSCLNT ideal-int +pkg syscall (darwin-amd64), const SYS_NFSSVC ideal-int +pkg syscall (darwin-amd64), const SYS_OPEN ideal-int +pkg syscall (darwin-amd64), const SYS_OPEN_EXTENDED ideal-int +pkg syscall (darwin-amd64), const SYS_OPEN_NOCANCEL ideal-int +pkg syscall (darwin-amd64), const SYS_PATHCONF ideal-int +pkg syscall (darwin-amd64), const SYS_PID_HIBERNATE ideal-int +pkg syscall (darwin-amd64), const SYS_PID_RESUME ideal-int +pkg syscall (darwin-amd64), const SYS_PID_SHUTDOWN_SOCKETS ideal-int +pkg syscall (darwin-amd64), const SYS_PID_SUSPEND ideal-int +pkg syscall (darwin-amd64), const SYS_PIPE ideal-int +pkg syscall (darwin-amd64), const SYS_POLL ideal-int +pkg syscall (darwin-amd64), const SYS_POLL_NOCANCEL ideal-int +pkg syscall (darwin-amd64), const SYS_POSIX_SPAWN ideal-int +pkg syscall (darwin-amd64), const SYS_PREAD ideal-int +pkg syscall (darwin-amd64), const SYS_PREAD_NOCANCEL ideal-int +pkg syscall (darwin-amd64), const SYS_PROCESS_POLICY ideal-int +pkg syscall (darwin-amd64), const SYS_PROC_INFO ideal-int +pkg syscall (darwin-amd64), const SYS_PROFIL ideal-int +pkg syscall (darwin-amd64), const SYS_PSYNCH_CVBROAD ideal-int +pkg syscall (darwin-amd64), const SYS_PSYNCH_CVCLRPREPOST ideal-int +pkg syscall (darwin-amd64), const SYS_PSYNCH_CVSIGNAL ideal-int +pkg syscall (darwin-amd64), const SYS_PSYNCH_CVWAIT ideal-int +pkg syscall (darwin-amd64), const SYS_PSYNCH_MUTEXDROP ideal-int +pkg syscall (darwin-amd64), const SYS_PSYNCH_MUTEXWAIT ideal-int +pkg syscall (darwin-amd64), const SYS_PSYNCH_RW_DOWNGRADE ideal-int +pkg syscall (darwin-amd64), const SYS_PSYNCH_RW_LONGRDLOCK ideal-int +pkg syscall (darwin-amd64), const SYS_PSYNCH_RW_RDLOCK ideal-int +pkg syscall (darwin-amd64), const SYS_PSYNCH_RW_UNLOCK ideal-int +pkg syscall (darwin-amd64), const SYS_PSYNCH_RW_UNLOCK2 ideal-int +pkg syscall (darwin-amd64), const SYS_PSYNCH_RW_UPGRADE ideal-int +pkg syscall (darwin-amd64), const SYS_PSYNCH_RW_WRLOCK ideal-int +pkg syscall (darwin-amd64), const SYS_PSYNCH_RW_YIELDWRLOCK ideal-int +pkg syscall (darwin-amd64), const SYS_PTRACE ideal-int +pkg syscall (darwin-amd64), const SYS_PWRITE ideal-int +pkg syscall (darwin-amd64), const SYS_PWRITE_NOCANCEL ideal-int +pkg syscall (darwin-amd64), const SYS_QUOTACTL ideal-int +pkg syscall (darwin-amd64), const SYS_READ ideal-int +pkg syscall (darwin-amd64), const SYS_READLINK ideal-int +pkg syscall (darwin-amd64), const SYS_READV ideal-int +pkg syscall (darwin-amd64), const SYS_READV_NOCANCEL ideal-int +pkg syscall (darwin-amd64), const SYS_READ_NOCANCEL ideal-int +pkg syscall (darwin-amd64), const SYS_REBOOT ideal-int +pkg syscall (darwin-amd64), const SYS_RECVFROM ideal-int +pkg syscall (darwin-amd64), const SYS_RECVFROM_NOCANCEL ideal-int +pkg syscall (darwin-amd64), const SYS_RECVMSG ideal-int +pkg syscall (darwin-amd64), const SYS_RECVMSG_NOCANCEL ideal-int +pkg syscall (darwin-amd64), const SYS_REMOVEXATTR ideal-int +pkg syscall (darwin-amd64), const SYS_RENAME ideal-int +pkg syscall (darwin-amd64), const SYS_REVOKE ideal-int +pkg syscall (darwin-amd64), const SYS_RMDIR ideal-int +pkg syscall (darwin-amd64), const SYS_SEARCHFS ideal-int +pkg syscall (darwin-amd64), const SYS_SELECT ideal-int +pkg syscall (darwin-amd64), const SYS_SELECT_NOCANCEL ideal-int +pkg syscall (darwin-amd64), const SYS_SEMCTL ideal-int +pkg syscall (darwin-amd64), const SYS_SEMGET ideal-int +pkg syscall (darwin-amd64), const SYS_SEMOP ideal-int +pkg syscall (darwin-amd64), const SYS_SEMSYS ideal-int +pkg syscall (darwin-amd64), const SYS_SEM_CLOSE ideal-int +pkg syscall (darwin-amd64), const SYS_SEM_DESTROY ideal-int +pkg syscall (darwin-amd64), const SYS_SEM_GETVALUE ideal-int +pkg syscall (darwin-amd64), const SYS_SEM_INIT ideal-int +pkg syscall (darwin-amd64), const SYS_SEM_OPEN ideal-int +pkg syscall (darwin-amd64), const SYS_SEM_POST ideal-int +pkg syscall (darwin-amd64), const SYS_SEM_TRYWAIT ideal-int +pkg syscall (darwin-amd64), const SYS_SEM_UNLINK ideal-int +pkg syscall (darwin-amd64), const SYS_SEM_WAIT ideal-int +pkg syscall (darwin-amd64), const SYS_SEM_WAIT_NOCANCEL ideal-int +pkg syscall (darwin-amd64), const SYS_SENDFILE ideal-int +pkg syscall (darwin-amd64), const SYS_SENDMSG ideal-int +pkg syscall (darwin-amd64), const SYS_SENDMSG_NOCANCEL ideal-int +pkg syscall (darwin-amd64), const SYS_SENDTO ideal-int +pkg syscall (darwin-amd64), const SYS_SENDTO_NOCANCEL ideal-int +pkg syscall (darwin-amd64), const SYS_SETATTRLIST ideal-int +pkg syscall (darwin-amd64), const SYS_SETAUDIT ideal-int +pkg syscall (darwin-amd64), const SYS_SETAUDIT_ADDR ideal-int +pkg syscall (darwin-amd64), const SYS_SETAUID ideal-int +pkg syscall (darwin-amd64), const SYS_SETEGID ideal-int +pkg syscall (darwin-amd64), const SYS_SETEUID ideal-int +pkg syscall (darwin-amd64), const SYS_SETGID ideal-int +pkg syscall (darwin-amd64), const SYS_SETGROUPS ideal-int +pkg syscall (darwin-amd64), const SYS_SETITIMER ideal-int +pkg syscall (darwin-amd64), const SYS_SETLCID ideal-int +pkg syscall (darwin-amd64), const SYS_SETLOGIN ideal-int +pkg syscall (darwin-amd64), const SYS_SETPGID ideal-int +pkg syscall (darwin-amd64), const SYS_SETPRIORITY ideal-int +pkg syscall (darwin-amd64), const SYS_SETPRIVEXEC ideal-int +pkg syscall (darwin-amd64), const SYS_SETREGID ideal-int +pkg syscall (darwin-amd64), const SYS_SETREUID ideal-int +pkg syscall (darwin-amd64), const SYS_SETRLIMIT ideal-int +pkg syscall (darwin-amd64), const SYS_SETSGROUPS ideal-int +pkg syscall (darwin-amd64), const SYS_SETSID ideal-int +pkg syscall (darwin-amd64), const SYS_SETSOCKOPT ideal-int +pkg syscall (darwin-amd64), const SYS_SETTID ideal-int +pkg syscall (darwin-amd64), const SYS_SETTID_WITH_PID ideal-int +pkg syscall (darwin-amd64), const SYS_SETTIMEOFDAY ideal-int +pkg syscall (darwin-amd64), const SYS_SETUID ideal-int +pkg syscall (darwin-amd64), const SYS_SETWGROUPS ideal-int +pkg syscall (darwin-amd64), const SYS_SETXATTR ideal-int +pkg syscall (darwin-amd64), const SYS_SHARED_REGION_CHECK_NP ideal-int +pkg syscall (darwin-amd64), const SYS_SHARED_REGION_MAP_AND_SLIDE_NP ideal-int +pkg syscall (darwin-amd64), const SYS_SHMAT ideal-int +pkg syscall (darwin-amd64), const SYS_SHMCTL ideal-int +pkg syscall (darwin-amd64), const SYS_SHMDT ideal-int +pkg syscall (darwin-amd64), const SYS_SHMGET ideal-int +pkg syscall (darwin-amd64), const SYS_SHMSYS ideal-int +pkg syscall (darwin-amd64), const SYS_SHM_OPEN ideal-int +pkg syscall (darwin-amd64), const SYS_SHM_UNLINK ideal-int +pkg syscall (darwin-amd64), const SYS_SHUTDOWN ideal-int +pkg syscall (darwin-amd64), const SYS_SIGACTION ideal-int +pkg syscall (darwin-amd64), const SYS_SIGALTSTACK ideal-int +pkg syscall (darwin-amd64), const SYS_SIGPENDING ideal-int +pkg syscall (darwin-amd64), const SYS_SIGPROCMASK ideal-int +pkg syscall (darwin-amd64), const SYS_SIGRETURN ideal-int +pkg syscall (darwin-amd64), const SYS_SIGSUSPEND ideal-int +pkg syscall (darwin-amd64), const SYS_SIGSUSPEND_NOCANCEL ideal-int +pkg syscall (darwin-amd64), const SYS_SOCKET ideal-int +pkg syscall (darwin-amd64), const SYS_SOCKETPAIR ideal-int +pkg syscall (darwin-amd64), const SYS_STACK_SNAPSHOT ideal-int +pkg syscall (darwin-amd64), const SYS_STAT ideal-int +pkg syscall (darwin-amd64), const SYS_STAT64 ideal-int +pkg syscall (darwin-amd64), const SYS_STAT64_EXTENDED ideal-int +pkg syscall (darwin-amd64), const SYS_STATFS ideal-int +pkg syscall (darwin-amd64), const SYS_STATFS64 ideal-int +pkg syscall (darwin-amd64), const SYS_STATV ideal-int +pkg syscall (darwin-amd64), const SYS_STAT_EXTENDED ideal-int +pkg syscall (darwin-amd64), const SYS_SWAPON ideal-int +pkg syscall (darwin-amd64), const SYS_SYMLINK ideal-int +pkg syscall (darwin-amd64), const SYS_SYNC ideal-int +pkg syscall (darwin-amd64), const SYS_SYSCALL ideal-int +pkg syscall (darwin-amd64), const SYS_THREAD_SELFID ideal-int +pkg syscall (darwin-amd64), const SYS_TRUNCATE ideal-int +pkg syscall (darwin-amd64), const SYS_UMASK ideal-int +pkg syscall (darwin-amd64), const SYS_UMASK_EXTENDED ideal-int +pkg syscall (darwin-amd64), const SYS_UNDELETE ideal-int +pkg syscall (darwin-amd64), const SYS_UNLINK ideal-int +pkg syscall (darwin-amd64), const SYS_UNMOUNT ideal-int +pkg syscall (darwin-amd64), const SYS_UTIMES ideal-int +pkg syscall (darwin-amd64), const SYS_VFORK ideal-int +pkg syscall (darwin-amd64), const SYS_VM_PRESSURE_MONITOR ideal-int +pkg syscall (darwin-amd64), const SYS_WAIT4 ideal-int +pkg syscall (darwin-amd64), const SYS_WAIT4_NOCANCEL ideal-int +pkg syscall (darwin-amd64), const SYS_WAITEVENT ideal-int +pkg syscall (darwin-amd64), const SYS_WAITID ideal-int +pkg syscall (darwin-amd64), const SYS_WAITID_NOCANCEL ideal-int +pkg syscall (darwin-amd64), const SYS_WATCHEVENT ideal-int +pkg syscall (darwin-amd64), const SYS_WORKQ_KERNRETURN ideal-int +pkg syscall (darwin-amd64), const SYS_WORKQ_OPEN ideal-int +pkg syscall (darwin-amd64), const SYS_WRITE ideal-int +pkg syscall (darwin-amd64), const SYS_WRITEV ideal-int +pkg syscall (darwin-amd64), const SYS_WRITEV_NOCANCEL ideal-int +pkg syscall (darwin-amd64), const SYS_WRITE_NOCANCEL ideal-int +pkg syscall (darwin-amd64), const SYS___DISABLE_THREADSIGNAL ideal-int +pkg syscall (darwin-amd64), const SYS___MAC_EXECVE ideal-int +pkg syscall (darwin-amd64), const SYS___MAC_GETFSSTAT ideal-int +pkg syscall (darwin-amd64), const SYS___MAC_GET_FD ideal-int +pkg syscall (darwin-amd64), const SYS___MAC_GET_FILE ideal-int +pkg syscall (darwin-amd64), const SYS___MAC_GET_LCID ideal-int +pkg syscall (darwin-amd64), const SYS___MAC_GET_LCTX ideal-int +pkg syscall (darwin-amd64), const SYS___MAC_GET_LINK ideal-int +pkg syscall (darwin-amd64), const SYS___MAC_GET_MOUNT ideal-int +pkg syscall (darwin-amd64), const SYS___MAC_GET_PID ideal-int +pkg syscall (darwin-amd64), const SYS___MAC_GET_PROC ideal-int +pkg syscall (darwin-amd64), const SYS___MAC_MOUNT ideal-int +pkg syscall (darwin-amd64), const SYS___MAC_SET_FD ideal-int +pkg syscall (darwin-amd64), const SYS___MAC_SET_FILE ideal-int +pkg syscall (darwin-amd64), const SYS___MAC_SET_LCTX ideal-int +pkg syscall (darwin-amd64), const SYS___MAC_SET_LINK ideal-int +pkg syscall (darwin-amd64), const SYS___MAC_SET_PROC ideal-int +pkg syscall (darwin-amd64), const SYS___MAC_SYSCALL ideal-int +pkg syscall (darwin-amd64), const SYS___OLD_SEMWAIT_SIGNAL ideal-int +pkg syscall (darwin-amd64), const SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL ideal-int +pkg syscall (darwin-amd64), const SYS___PTHREAD_CANCELED ideal-int +pkg syscall (darwin-amd64), const SYS___PTHREAD_CHDIR ideal-int +pkg syscall (darwin-amd64), const SYS___PTHREAD_FCHDIR ideal-int +pkg syscall (darwin-amd64), const SYS___PTHREAD_KILL ideal-int +pkg syscall (darwin-amd64), const SYS___PTHREAD_MARKCANCEL ideal-int +pkg syscall (darwin-amd64), const SYS___PTHREAD_SIGMASK ideal-int +pkg syscall (darwin-amd64), const SYS___SEMWAIT_SIGNAL ideal-int +pkg syscall (darwin-amd64), const SYS___SEMWAIT_SIGNAL_NOCANCEL ideal-int +pkg syscall (darwin-amd64), const SYS___SIGWAIT ideal-int +pkg syscall (darwin-amd64), const SYS___SIGWAIT_NOCANCEL ideal-int +pkg syscall (darwin-amd64), const SYS___SYSCTL ideal-int +pkg syscall (darwin-amd64), const S_IEXEC ideal-int +pkg syscall (darwin-amd64), const S_IFWHT ideal-int +pkg syscall (darwin-amd64), const S_IREAD ideal-int +pkg syscall (darwin-amd64), const S_IRGRP ideal-int +pkg syscall (darwin-amd64), const S_IROTH ideal-int +pkg syscall (darwin-amd64), const S_IRWXG ideal-int +pkg syscall (darwin-amd64), const S_IRWXO ideal-int +pkg syscall (darwin-amd64), const S_IRWXU ideal-int +pkg syscall (darwin-amd64), const S_ISTXT ideal-int +pkg syscall (darwin-amd64), const S_IWGRP ideal-int +pkg syscall (darwin-amd64), const S_IWOTH ideal-int +pkg syscall (darwin-amd64), const S_IXGRP ideal-int +pkg syscall (darwin-amd64), const S_IXOTH ideal-int +pkg syscall (darwin-amd64), const SizeofBpfHdr ideal-int +pkg syscall (darwin-amd64), const SizeofBpfInsn ideal-int +pkg syscall (darwin-amd64), const SizeofBpfProgram ideal-int +pkg syscall (darwin-amd64), const SizeofBpfStat ideal-int +pkg syscall (darwin-amd64), const SizeofBpfVersion ideal-int +pkg syscall (darwin-amd64), const SizeofCmsghdr ideal-int +pkg syscall (darwin-amd64), const SizeofIPMreq ideal-int +pkg syscall (darwin-amd64), const SizeofIPv6Mreq ideal-int +pkg syscall (darwin-amd64), const SizeofIfData ideal-int +pkg syscall (darwin-amd64), const SizeofIfMsghdr ideal-int +pkg syscall (darwin-amd64), const SizeofIfaMsghdr ideal-int +pkg syscall (darwin-amd64), const SizeofIfmaMsghdr ideal-int +pkg syscall (darwin-amd64), const SizeofIfmaMsghdr2 ideal-int +pkg syscall (darwin-amd64), const SizeofInet6Pktinfo ideal-int +pkg syscall (darwin-amd64), const SizeofLinger ideal-int +pkg syscall (darwin-amd64), const SizeofMsghdr ideal-int +pkg syscall (darwin-amd64), const SizeofRtMetrics ideal-int +pkg syscall (darwin-amd64), const SizeofRtMsghdr ideal-int +pkg syscall (darwin-amd64), const SizeofSockaddrAny ideal-int +pkg syscall (darwin-amd64), const SizeofSockaddrDatalink ideal-int +pkg syscall (darwin-amd64), const SizeofSockaddrInet4 ideal-int +pkg syscall (darwin-amd64), const SizeofSockaddrInet6 ideal-int +pkg syscall (darwin-amd64), const SizeofSockaddrUnix ideal-int +pkg syscall (darwin-amd64), const TCP_CONNECTIONTIMEOUT ideal-int +pkg syscall (darwin-amd64), const TCP_KEEPALIVE ideal-int +pkg syscall (darwin-amd64), const TCP_MAXHLEN ideal-int +pkg syscall (darwin-amd64), const TCP_MAXOLEN ideal-int +pkg syscall (darwin-amd64), const TCP_MAXSEG ideal-int +pkg syscall (darwin-amd64), const TCP_MAXWIN ideal-int +pkg syscall (darwin-amd64), const TCP_MAX_SACK ideal-int +pkg syscall (darwin-amd64), const TCP_MAX_WINSHIFT ideal-int +pkg syscall (darwin-amd64), const TCP_MINMSS ideal-int +pkg syscall (darwin-amd64), const TCP_MINMSSOVERLOAD ideal-int +pkg syscall (darwin-amd64), const TCP_MSS ideal-int +pkg syscall (darwin-amd64), const TCP_NOOPT ideal-int +pkg syscall (darwin-amd64), const TCP_NOPUSH ideal-int +pkg syscall (darwin-amd64), const TCP_RXT_CONNDROPTIME ideal-int +pkg syscall (darwin-amd64), const TCP_RXT_FINDROP ideal-int +pkg syscall (darwin-amd64), const TIOCCBRK ideal-int +pkg syscall (darwin-amd64), const TIOCCDTR ideal-int +pkg syscall (darwin-amd64), const TIOCCONS ideal-int +pkg syscall (darwin-amd64), const TIOCDCDTIMESTAMP ideal-int +pkg syscall (darwin-amd64), const TIOCDRAIN ideal-int +pkg syscall (darwin-amd64), const TIOCDSIMICROCODE ideal-int +pkg syscall (darwin-amd64), const TIOCEXCL ideal-int +pkg syscall (darwin-amd64), const TIOCEXT ideal-int +pkg syscall (darwin-amd64), const TIOCFLUSH ideal-int +pkg syscall (darwin-amd64), const TIOCGDRAINWAIT ideal-int +pkg syscall (darwin-amd64), const TIOCGETA ideal-int +pkg syscall (darwin-amd64), const TIOCGETD ideal-int +pkg syscall (darwin-amd64), const TIOCGPGRP ideal-int +pkg syscall (darwin-amd64), const TIOCGWINSZ ideal-int +pkg syscall (darwin-amd64), const TIOCIXOFF ideal-int +pkg syscall (darwin-amd64), const TIOCIXON ideal-int +pkg syscall (darwin-amd64), const TIOCMBIC ideal-int +pkg syscall (darwin-amd64), const TIOCMBIS ideal-int +pkg syscall (darwin-amd64), const TIOCMGDTRWAIT ideal-int +pkg syscall (darwin-amd64), const TIOCMGET ideal-int +pkg syscall (darwin-amd64), const TIOCMODG ideal-int +pkg syscall (darwin-amd64), const TIOCMODS ideal-int +pkg syscall (darwin-amd64), const TIOCMSDTRWAIT ideal-int +pkg syscall (darwin-amd64), const TIOCMSET ideal-int +pkg syscall (darwin-amd64), const TIOCM_CAR ideal-int +pkg syscall (darwin-amd64), const TIOCM_CD ideal-int +pkg syscall (darwin-amd64), const TIOCM_CTS ideal-int +pkg syscall (darwin-amd64), const TIOCM_DSR ideal-int +pkg syscall (darwin-amd64), const TIOCM_DTR ideal-int +pkg syscall (darwin-amd64), const TIOCM_LE ideal-int +pkg syscall (darwin-amd64), const TIOCM_RI ideal-int +pkg syscall (darwin-amd64), const TIOCM_RNG ideal-int +pkg syscall (darwin-amd64), const TIOCM_RTS ideal-int +pkg syscall (darwin-amd64), const TIOCM_SR ideal-int +pkg syscall (darwin-amd64), const TIOCM_ST ideal-int +pkg syscall (darwin-amd64), const TIOCNOTTY ideal-int +pkg syscall (darwin-amd64), const TIOCNXCL ideal-int +pkg syscall (darwin-amd64), const TIOCOUTQ ideal-int +pkg syscall (darwin-amd64), const TIOCPKT ideal-int +pkg syscall (darwin-amd64), const TIOCPKT_DATA ideal-int +pkg syscall (darwin-amd64), const TIOCPKT_DOSTOP ideal-int +pkg syscall (darwin-amd64), const TIOCPKT_FLUSHREAD ideal-int +pkg syscall (darwin-amd64), const TIOCPKT_FLUSHWRITE ideal-int +pkg syscall (darwin-amd64), const TIOCPKT_IOCTL ideal-int +pkg syscall (darwin-amd64), const TIOCPKT_NOSTOP ideal-int +pkg syscall (darwin-amd64), const TIOCPKT_START ideal-int +pkg syscall (darwin-amd64), const TIOCPKT_STOP ideal-int +pkg syscall (darwin-amd64), const TIOCPTYGNAME ideal-int +pkg syscall (darwin-amd64), const TIOCPTYGRANT ideal-int +pkg syscall (darwin-amd64), const TIOCPTYUNLK ideal-int +pkg syscall (darwin-amd64), const TIOCREMOTE ideal-int +pkg syscall (darwin-amd64), const TIOCSBRK ideal-int +pkg syscall (darwin-amd64), const TIOCSCONS ideal-int +pkg syscall (darwin-amd64), const TIOCSCTTY ideal-int +pkg syscall (darwin-amd64), const TIOCSDRAINWAIT ideal-int +pkg syscall (darwin-amd64), const TIOCSDTR ideal-int +pkg syscall (darwin-amd64), const TIOCSETA ideal-int +pkg syscall (darwin-amd64), const TIOCSETAF ideal-int +pkg syscall (darwin-amd64), const TIOCSETAW ideal-int +pkg syscall (darwin-amd64), const TIOCSETD ideal-int +pkg syscall (darwin-amd64), const TIOCSIG ideal-int +pkg syscall (darwin-amd64), const TIOCSPGRP ideal-int +pkg syscall (darwin-amd64), const TIOCSTART ideal-int +pkg syscall (darwin-amd64), const TIOCSTAT ideal-int +pkg syscall (darwin-amd64), const TIOCSTI ideal-int +pkg syscall (darwin-amd64), const TIOCSTOP ideal-int +pkg syscall (darwin-amd64), const TIOCSWINSZ ideal-int +pkg syscall (darwin-amd64), const TIOCTIMESTAMP ideal-int +pkg syscall (darwin-amd64), const TIOCUCNTL ideal-int +pkg syscall (darwin-amd64), const WCONTINUED ideal-int +pkg syscall (darwin-amd64), const WCOREFLAG ideal-int +pkg syscall (darwin-amd64), const WEXITED ideal-int +pkg syscall (darwin-amd64), const WNOHANG ideal-int +pkg syscall (darwin-amd64), const WNOWAIT ideal-int +pkg syscall (darwin-amd64), const WORDSIZE ideal-int +pkg syscall (darwin-amd64), const WSTOPPED ideal-int +pkg syscall (darwin-amd64), const WUNTRACED ideal-int +pkg syscall (darwin-amd64), func Accept(int) (int, Sockaddr, error) +pkg syscall (darwin-amd64), func Access(string, uint32) error +pkg syscall (darwin-amd64), func Adjtime(*Timeval, *Timeval) error +pkg syscall (darwin-amd64), func Bind(int, Sockaddr) error +pkg syscall (darwin-amd64), func BpfBuflen(int) (int, error) +pkg syscall (darwin-amd64), func BpfDatalink(int) (int, error) +pkg syscall (darwin-amd64), func BpfHeadercmpl(int) (int, error) +pkg syscall (darwin-amd64), func BpfInterface(int, string) (string, error) +pkg syscall (darwin-amd64), func BpfJump(int) *BpfInsn +pkg syscall (darwin-amd64), func BpfStats(int) (*BpfStat, error) +pkg syscall (darwin-amd64), func BpfStmt(int) *BpfInsn +pkg syscall (darwin-amd64), func BpfTimeout(int) (*Timeval, error) +pkg syscall (darwin-amd64), func CheckBpfVersion(int) error +pkg syscall (darwin-amd64), func Chflags(string, int) error +pkg syscall (darwin-amd64), func Chroot(string) error +pkg syscall (darwin-amd64), func Close(int) error +pkg syscall (darwin-amd64), func CloseOnExec(int) +pkg syscall (darwin-amd64), func CmsgLen(int) int +pkg syscall (darwin-amd64), func CmsgSpace(int) int +pkg syscall (darwin-amd64), func Connect(int, Sockaddr) error +pkg syscall (darwin-amd64), func Dup(int) (int, error) +pkg syscall (darwin-amd64), func Dup2(int, int) error +pkg syscall (darwin-amd64), func Exchangedata(string, string, int) error +pkg syscall (darwin-amd64), func Fchdir(int) error +pkg syscall (darwin-amd64), func Fchflags(string, int) error +pkg syscall (darwin-amd64), func Fchmod(int, uint32) error +pkg syscall (darwin-amd64), func Fchown(int, int, int) error +pkg syscall (darwin-amd64), func Flock(int, int) error +pkg syscall (darwin-amd64), func FlushBpf(int) error +pkg syscall (darwin-amd64), func ForkExec(string, []string, *ProcAttr) (int, error) +pkg syscall (darwin-amd64), func Fpathconf(int, int) (int, error) +pkg syscall (darwin-amd64), func Fstat(int, *Stat_t) error +pkg syscall (darwin-amd64), func Fstatfs(int, *Statfs_t) error +pkg syscall (darwin-amd64), func Fsync(int) error +pkg syscall (darwin-amd64), func Ftruncate(int, int64) error +pkg syscall (darwin-amd64), func Futimes(int, []Timeval) error +pkg syscall (darwin-amd64), func Getdirentries(int, []byte, *uintptr) (int, error) +pkg syscall (darwin-amd64), func Getdtablesize() int +pkg syscall (darwin-amd64), func Getfsstat([]Statfs_t, int) (int, error) +pkg syscall (darwin-amd64), func Getpeername(int) (Sockaddr, error) +pkg syscall (darwin-amd64), func Getpgid(int) (int, error) +pkg syscall (darwin-amd64), func Getpgrp() int +pkg syscall (darwin-amd64), func Getpriority(int, int) (int, error) +pkg syscall (darwin-amd64), func Getrlimit(int, *Rlimit) error +pkg syscall (darwin-amd64), func Getrusage(int, *Rusage) error +pkg syscall (darwin-amd64), func Getsid(int) (int, error) +pkg syscall (darwin-amd64), func Getsockname(int) (Sockaddr, error) +pkg syscall (darwin-amd64), func GetsockoptByte(int) (byte, error) +pkg syscall (darwin-amd64), func GetsockoptIPMreq(int) (*IPMreq, error) +pkg syscall (darwin-amd64), func GetsockoptIPv6Mreq(int) (*IPv6Mreq, error) +pkg syscall (darwin-amd64), func GetsockoptInet4Addr(int) ([4]byte, error) +pkg syscall (darwin-amd64), func GetsockoptInt(int) (int, error) +pkg syscall (darwin-amd64), func Issetugid() bool +pkg syscall (darwin-amd64), func Kevent(int, []Kevent_t, *Timespec) (int, error) +pkg syscall (darwin-amd64), func Kill(int, Signal) error +pkg syscall (darwin-amd64), func Kqueue() (int, error) +pkg syscall (darwin-amd64), func Link(string, string) error +pkg syscall (darwin-amd64), func Listen(int, int) error +pkg syscall (darwin-amd64), func Lstat(string, *Stat_t) error +pkg syscall (darwin-amd64), func Mkfifo(string, uint32) error +pkg syscall (darwin-amd64), func Mknod(string, uint32, int) error +pkg syscall (darwin-amd64), func Mmap(int, int64, int, int, int) ([]byte, error) +pkg syscall (darwin-amd64), func Munmap([]byte) error +pkg syscall (darwin-amd64), func NsecToTimespec(int64) Timespec +pkg syscall (darwin-amd64), func Open(string, int, uint32) (int, error) +pkg syscall (darwin-amd64), func ParseDirent([]byte, int, []string) (int, int, []string) +pkg syscall (darwin-amd64), func ParseRoutingMessage([]byte) ([]RoutingMessage, error) +pkg syscall (darwin-amd64), func ParseRoutingSockaddr(RoutingMessage) ([]Sockaddr, error) +pkg syscall (darwin-amd64), func ParseSocketControlMessage([]byte) ([]SocketControlMessage, error) +pkg syscall (darwin-amd64), func ParseUnixRights(*SocketControlMessage) ([]int, error) +pkg syscall (darwin-amd64), func Pathconf(string, int) (int, error) +pkg syscall (darwin-amd64), func Pipe([]int) error +pkg syscall (darwin-amd64), func Pread(int, []byte, int64) (int, error) +pkg syscall (darwin-amd64), func PtraceAttach(int) error +pkg syscall (darwin-amd64), func PtraceDetach(int) error +pkg syscall (darwin-amd64), func Pwrite(int, []byte, int64) (int, error) +pkg syscall (darwin-amd64), func RawSyscall(uintptr) (uintptr, Errno) +pkg syscall (darwin-amd64), func RawSyscall6(uintptr) (uintptr, Errno) +pkg syscall (darwin-amd64), func Read(int, []byte) (int, error) +pkg syscall (darwin-amd64), func ReadDirent(int, []byte) (int, error) +pkg syscall (darwin-amd64), func Recvfrom(int, []byte, int) (int, Sockaddr, error) +pkg syscall (darwin-amd64), func Recvmsg(int, []byte, int) (int, int, Sockaddr, error) +pkg syscall (darwin-amd64), func Rename(string, string) error +pkg syscall (darwin-amd64), func Revoke(string) error +pkg syscall (darwin-amd64), func RouteRIB(int) ([]byte, error) +pkg syscall (darwin-amd64), func Seek(int, int64, int) (int64, error) +pkg syscall (darwin-amd64), func Select(int, *FdSet, *FdSet, *FdSet, *Timeval) error +pkg syscall (darwin-amd64), func Sendfile(int, int, *int64, int) (int, error) +pkg syscall (darwin-amd64), func Sendmsg(int, []byte, Sockaddr, int) error +pkg syscall (darwin-amd64), func Sendto(int, []byte, int, Sockaddr) error +pkg syscall (darwin-amd64), func SetBpf(int, []BpfInsn) error +pkg syscall (darwin-amd64), func SetBpfBuflen(int) (int, error) +pkg syscall (darwin-amd64), func SetBpfDatalink(int) (int, error) +pkg syscall (darwin-amd64), func SetBpfHeadercmpl(int) error +pkg syscall (darwin-amd64), func SetBpfImmediate(int) error +pkg syscall (darwin-amd64), func SetBpfInterface(int, string) error +pkg syscall (darwin-amd64), func SetBpfPromisc(int) error +pkg syscall (darwin-amd64), func SetBpfTimeout(int, *Timeval) error +pkg syscall (darwin-amd64), func SetKevent(*Kevent_t, int) +pkg syscall (darwin-amd64), func SetNonblock(int, bool) error +pkg syscall (darwin-amd64), func Setegid(int) error +pkg syscall (darwin-amd64), func Seteuid(int) error +pkg syscall (darwin-amd64), func Setgid(int) error +pkg syscall (darwin-amd64), func Setgroups([]int) error +pkg syscall (darwin-amd64), func Setlogin(string) error +pkg syscall (darwin-amd64), func Setpgid(int, int) error +pkg syscall (darwin-amd64), func Setpriority(int, int, int) error +pkg syscall (darwin-amd64), func Setprivexec(int) error +pkg syscall (darwin-amd64), func Setregid(int, int) error +pkg syscall (darwin-amd64), func Setreuid(int, int) error +pkg syscall (darwin-amd64), func Setrlimit(int, *Rlimit) error +pkg syscall (darwin-amd64), func Setsid() (int, error) +pkg syscall (darwin-amd64), func SetsockoptByte(int, byte) error +pkg syscall (darwin-amd64), func SetsockoptIPMreq(int, *IPMreq) error +pkg syscall (darwin-amd64), func SetsockoptIPv6Mreq(int, *IPv6Mreq) error +pkg syscall (darwin-amd64), func SetsockoptInet4Addr(int, [4]byte) error +pkg syscall (darwin-amd64), func SetsockoptInt(int, int) error +pkg syscall (darwin-amd64), func SetsockoptLinger(int, *Linger) error +pkg syscall (darwin-amd64), func SetsockoptString(int, string) error +pkg syscall (darwin-amd64), func SetsockoptTimeval(int, *Timeval) error +pkg syscall (darwin-amd64), func Settimeofday(*Timeval) error +pkg syscall (darwin-amd64), func Setuid(int) error +pkg syscall (darwin-amd64), func Shutdown(int, int) error +pkg syscall (darwin-amd64), func Socket(int) (int, error) +pkg syscall (darwin-amd64), func Socketpair(int) ([2]int, error) +pkg syscall (darwin-amd64), func Stat(string, *Stat_t) error +pkg syscall (darwin-amd64), func Statfs(string, *Statfs_t) error +pkg syscall (darwin-amd64), func StringSlicePtr([]string) []*byte +pkg syscall (darwin-amd64), func Symlink(string, string) error +pkg syscall (darwin-amd64), func Sync() error +pkg syscall (darwin-amd64), func Sysctl(string) (string, error) +pkg syscall (darwin-amd64), func SysctlUint32(string) (uint32, error) +pkg syscall (darwin-amd64), func TimespecToNsec(Timespec) int64 +pkg syscall (darwin-amd64), func TimevalToNsec(Timeval) int64 +pkg syscall (darwin-amd64), func Truncate(string, int64) error +pkg syscall (darwin-amd64), func Umask(int) int +pkg syscall (darwin-amd64), func Undelete(string) error +pkg syscall (darwin-amd64), func UnixRights(...int) []byte +pkg syscall (darwin-amd64), func Unmount(string, int) error +pkg syscall (darwin-amd64), func Wait4(int, *WaitStatus, int, *Rusage) (int, error) +pkg syscall (darwin-amd64), func Write(int, []byte) (int, error) +pkg syscall (darwin-amd64), method (*Cmsghdr) SetLen(int) +pkg syscall (darwin-amd64), method (*Iovec) SetLen(int) +pkg syscall (darwin-amd64), method (*Msghdr) SetControllen(int) +pkg syscall (darwin-amd64), type BpfHdr struct +pkg syscall (darwin-amd64), type BpfHdr struct, Caplen uint32 +pkg syscall (darwin-amd64), type BpfHdr struct, Datalen uint32 +pkg syscall (darwin-amd64), type BpfHdr struct, Hdrlen uint16 +pkg syscall (darwin-amd64), type BpfHdr struct, Pad_cgo_0 [2]byte +pkg syscall (darwin-amd64), type BpfHdr struct, Tstamp Timeval32 +pkg syscall (darwin-amd64), type BpfInsn struct +pkg syscall (darwin-amd64), type BpfInsn struct, Code uint16 +pkg syscall (darwin-amd64), type BpfInsn struct, Jf uint8 +pkg syscall (darwin-amd64), type BpfInsn struct, Jt uint8 +pkg syscall (darwin-amd64), type BpfInsn struct, K uint32 +pkg syscall (darwin-amd64), type BpfProgram struct +pkg syscall (darwin-amd64), type BpfProgram struct, Insns *BpfInsn +pkg syscall (darwin-amd64), type BpfProgram struct, Len uint32 +pkg syscall (darwin-amd64), type BpfProgram struct, Pad_cgo_0 [4]byte +pkg syscall (darwin-amd64), type BpfStat struct +pkg syscall (darwin-amd64), type BpfStat struct, Drop uint32 +pkg syscall (darwin-amd64), type BpfStat struct, Recv uint32 +pkg syscall (darwin-amd64), type BpfVersion struct +pkg syscall (darwin-amd64), type BpfVersion struct, Major uint16 +pkg syscall (darwin-amd64), type BpfVersion struct, Minor uint16 +pkg syscall (darwin-amd64), type Cmsghdr struct +pkg syscall (darwin-amd64), type Cmsghdr struct, Len uint32 +pkg syscall (darwin-amd64), type Cmsghdr struct, Level int32 +pkg syscall (darwin-amd64), type Cmsghdr struct, Type int32 +pkg syscall (darwin-amd64), type Credential struct +pkg syscall (darwin-amd64), type Credential struct, Gid uint32 +pkg syscall (darwin-amd64), type Credential struct, Groups []uint32 +pkg syscall (darwin-amd64), type Credential struct, Uid uint32 +pkg syscall (darwin-amd64), type Dirent struct +pkg syscall (darwin-amd64), type Dirent struct, Ino uint64 +pkg syscall (darwin-amd64), type Dirent struct, Name [1024]int8 +pkg syscall (darwin-amd64), type Dirent struct, Namlen uint16 +pkg syscall (darwin-amd64), type Dirent struct, Pad_cgo_0 [3]byte +pkg syscall (darwin-amd64), type Dirent struct, Reclen uint16 +pkg syscall (darwin-amd64), type Dirent struct, Seekoff uint64 +pkg syscall (darwin-amd64), type Dirent struct, Type uint8 +pkg syscall (darwin-amd64), type Fbootstraptransfer_t struct +pkg syscall (darwin-amd64), type Fbootstraptransfer_t struct, Buffer *byte +pkg syscall (darwin-amd64), type Fbootstraptransfer_t struct, Length uint64 +pkg syscall (darwin-amd64), type Fbootstraptransfer_t struct, Offset int64 +pkg syscall (darwin-amd64), type FdSet struct +pkg syscall (darwin-amd64), type FdSet struct, Bits [32]int32 +pkg syscall (darwin-amd64), type Flock_t struct +pkg syscall (darwin-amd64), type Flock_t struct, Len int64 +pkg syscall (darwin-amd64), type Flock_t struct, Pid int32 +pkg syscall (darwin-amd64), type Flock_t struct, Start int64 +pkg syscall (darwin-amd64), type Flock_t struct, Type int16 +pkg syscall (darwin-amd64), type Flock_t struct, Whence int16 +pkg syscall (darwin-amd64), type Fsid struct +pkg syscall (darwin-amd64), type Fsid struct, Val [2]int32 +pkg syscall (darwin-amd64), type Fstore_t struct +pkg syscall (darwin-amd64), type Fstore_t struct, Bytesalloc int64 +pkg syscall (darwin-amd64), type Fstore_t struct, Flags uint32 +pkg syscall (darwin-amd64), type Fstore_t struct, Length int64 +pkg syscall (darwin-amd64), type Fstore_t struct, Offset int64 +pkg syscall (darwin-amd64), type Fstore_t struct, Posmode int32 +pkg syscall (darwin-amd64), type IfData struct +pkg syscall (darwin-amd64), type IfData struct, Addrlen uint8 +pkg syscall (darwin-amd64), type IfData struct, Baudrate uint32 +pkg syscall (darwin-amd64), type IfData struct, Collisions uint32 +pkg syscall (darwin-amd64), type IfData struct, Hdrlen uint8 +pkg syscall (darwin-amd64), type IfData struct, Hwassist uint32 +pkg syscall (darwin-amd64), type IfData struct, Ibytes uint32 +pkg syscall (darwin-amd64), type IfData struct, Ierrors uint32 +pkg syscall (darwin-amd64), type IfData struct, Imcasts uint32 +pkg syscall (darwin-amd64), type IfData struct, Ipackets uint32 +pkg syscall (darwin-amd64), type IfData struct, Iqdrops uint32 +pkg syscall (darwin-amd64), type IfData struct, Lastchange Timeval32 +pkg syscall (darwin-amd64), type IfData struct, Metric uint32 +pkg syscall (darwin-amd64), type IfData struct, Mtu uint32 +pkg syscall (darwin-amd64), type IfData struct, Noproto uint32 +pkg syscall (darwin-amd64), type IfData struct, Obytes uint32 +pkg syscall (darwin-amd64), type IfData struct, Oerrors uint32 +pkg syscall (darwin-amd64), type IfData struct, Omcasts uint32 +pkg syscall (darwin-amd64), type IfData struct, Opackets uint32 +pkg syscall (darwin-amd64), type IfData struct, Physical uint8 +pkg syscall (darwin-amd64), type IfData struct, Recvquota uint8 +pkg syscall (darwin-amd64), type IfData struct, Recvtiming uint32 +pkg syscall (darwin-amd64), type IfData struct, Reserved1 uint32 +pkg syscall (darwin-amd64), type IfData struct, Reserved2 uint32 +pkg syscall (darwin-amd64), type IfData struct, Type uint8 +pkg syscall (darwin-amd64), type IfData struct, Typelen uint8 +pkg syscall (darwin-amd64), type IfData struct, Unused1 uint8 +pkg syscall (darwin-amd64), type IfData struct, Unused2 uint32 +pkg syscall (darwin-amd64), type IfData struct, Xmitquota uint8 +pkg syscall (darwin-amd64), type IfData struct, Xmittiming uint32 +pkg syscall (darwin-amd64), type IfMsghdr struct +pkg syscall (darwin-amd64), type IfMsghdr struct, Addrs int32 +pkg syscall (darwin-amd64), type IfMsghdr struct, Data IfData +pkg syscall (darwin-amd64), type IfMsghdr struct, Flags int32 +pkg syscall (darwin-amd64), type IfMsghdr struct, Index uint16 +pkg syscall (darwin-amd64), type IfMsghdr struct, Msglen uint16 +pkg syscall (darwin-amd64), type IfMsghdr struct, Pad_cgo_0 [2]byte +pkg syscall (darwin-amd64), type IfMsghdr struct, Type uint8 +pkg syscall (darwin-amd64), type IfMsghdr struct, Version uint8 +pkg syscall (darwin-amd64), type IfaMsghdr struct +pkg syscall (darwin-amd64), type IfaMsghdr struct, Addrs int32 +pkg syscall (darwin-amd64), type IfaMsghdr struct, Flags int32 +pkg syscall (darwin-amd64), type IfaMsghdr struct, Index uint16 +pkg syscall (darwin-amd64), type IfaMsghdr struct, Metric int32 +pkg syscall (darwin-amd64), type IfaMsghdr struct, Msglen uint16 +pkg syscall (darwin-amd64), type IfaMsghdr struct, Pad_cgo_0 [2]byte +pkg syscall (darwin-amd64), type IfaMsghdr struct, Type uint8 +pkg syscall (darwin-amd64), type IfaMsghdr struct, Version uint8 +pkg syscall (darwin-amd64), type IfmaMsghdr struct +pkg syscall (darwin-amd64), type IfmaMsghdr struct, Addrs int32 +pkg syscall (darwin-amd64), type IfmaMsghdr struct, Flags int32 +pkg syscall (darwin-amd64), type IfmaMsghdr struct, Index uint16 +pkg syscall (darwin-amd64), type IfmaMsghdr struct, Msglen uint16 +pkg syscall (darwin-amd64), type IfmaMsghdr struct, Pad_cgo_0 [2]byte +pkg syscall (darwin-amd64), type IfmaMsghdr struct, Type uint8 +pkg syscall (darwin-amd64), type IfmaMsghdr struct, Version uint8 +pkg syscall (darwin-amd64), type IfmaMsghdr2 struct +pkg syscall (darwin-amd64), type IfmaMsghdr2 struct, Addrs int32 +pkg syscall (darwin-amd64), type IfmaMsghdr2 struct, Flags int32 +pkg syscall (darwin-amd64), type IfmaMsghdr2 struct, Index uint16 +pkg syscall (darwin-amd64), type IfmaMsghdr2 struct, Msglen uint16 +pkg syscall (darwin-amd64), type IfmaMsghdr2 struct, Pad_cgo_0 [2]byte +pkg syscall (darwin-amd64), type IfmaMsghdr2 struct, Refcount int32 +pkg syscall (darwin-amd64), type IfmaMsghdr2 struct, Type uint8 +pkg syscall (darwin-amd64), type IfmaMsghdr2 struct, Version uint8 +pkg syscall (darwin-amd64), type Inet6Pktinfo struct +pkg syscall (darwin-amd64), type Inet6Pktinfo struct, Addr [16]byte +pkg syscall (darwin-amd64), type Inet6Pktinfo struct, Ifindex uint32 +pkg syscall (darwin-amd64), type InterfaceAddrMessage struct +pkg syscall (darwin-amd64), type InterfaceAddrMessage struct, Data []byte +pkg syscall (darwin-amd64), type InterfaceAddrMessage struct, Header IfaMsghdr +pkg syscall (darwin-amd64), type InterfaceMessage struct +pkg syscall (darwin-amd64), type InterfaceMessage struct, Data []byte +pkg syscall (darwin-amd64), type InterfaceMessage struct, Header IfMsghdr +pkg syscall (darwin-amd64), type InterfaceMulticastAddrMessage struct +pkg syscall (darwin-amd64), type InterfaceMulticastAddrMessage struct, Data []byte +pkg syscall (darwin-amd64), type InterfaceMulticastAddrMessage struct, Header IfmaMsghdr2 +pkg syscall (darwin-amd64), type Iovec struct +pkg syscall (darwin-amd64), type Iovec struct, Base *byte +pkg syscall (darwin-amd64), type Iovec struct, Len uint64 +pkg syscall (darwin-amd64), type Kevent_t struct +pkg syscall (darwin-amd64), type Kevent_t struct, Data int64 +pkg syscall (darwin-amd64), type Kevent_t struct, Fflags uint32 +pkg syscall (darwin-amd64), type Kevent_t struct, Filter int16 +pkg syscall (darwin-amd64), type Kevent_t struct, Flags uint16 +pkg syscall (darwin-amd64), type Kevent_t struct, Ident uint64 +pkg syscall (darwin-amd64), type Kevent_t struct, Udata *byte +pkg syscall (darwin-amd64), type Log2phys_t struct +pkg syscall (darwin-amd64), type Log2phys_t struct, Contigbytes int64 +pkg syscall (darwin-amd64), type Log2phys_t struct, Devoffset int64 +pkg syscall (darwin-amd64), type Log2phys_t struct, Flags uint32 +pkg syscall (darwin-amd64), type Msghdr struct +pkg syscall (darwin-amd64), type Msghdr struct, Control *byte +pkg syscall (darwin-amd64), type Msghdr struct, Controllen uint32 +pkg syscall (darwin-amd64), type Msghdr struct, Flags int32 +pkg syscall (darwin-amd64), type Msghdr struct, Iov *Iovec +pkg syscall (darwin-amd64), type Msghdr struct, Iovlen int32 +pkg syscall (darwin-amd64), type Msghdr struct, Name *byte +pkg syscall (darwin-amd64), type Msghdr struct, Namelen uint32 +pkg syscall (darwin-amd64), type Msghdr struct, Pad_cgo_0 [4]byte +pkg syscall (darwin-amd64), type Msghdr struct, Pad_cgo_1 [4]byte +pkg syscall (darwin-amd64), type Radvisory_t struct +pkg syscall (darwin-amd64), type Radvisory_t struct, Count int32 +pkg syscall (darwin-amd64), type Radvisory_t struct, Offset int64 +pkg syscall (darwin-amd64), type Radvisory_t struct, Pad_cgo_0 [4]byte +pkg syscall (darwin-amd64), type RawSockaddr struct, Family uint8 +pkg syscall (darwin-amd64), type RawSockaddr struct, Len uint8 +pkg syscall (darwin-amd64), type RawSockaddrAny struct, Pad [92]int8 +pkg syscall (darwin-amd64), type RawSockaddrDatalink struct +pkg syscall (darwin-amd64), type RawSockaddrDatalink struct, Alen uint8 +pkg syscall (darwin-amd64), type RawSockaddrDatalink struct, Data [12]int8 +pkg syscall (darwin-amd64), type RawSockaddrDatalink struct, Family uint8 +pkg syscall (darwin-amd64), type RawSockaddrDatalink struct, Index uint16 +pkg syscall (darwin-amd64), type RawSockaddrDatalink struct, Len uint8 +pkg syscall (darwin-amd64), type RawSockaddrDatalink struct, Nlen uint8 +pkg syscall (darwin-amd64), type RawSockaddrDatalink struct, Slen uint8 +pkg syscall (darwin-amd64), type RawSockaddrDatalink struct, Type uint8 +pkg syscall (darwin-amd64), type RawSockaddrInet4 struct, Family uint8 +pkg syscall (darwin-amd64), type RawSockaddrInet4 struct, Len uint8 +pkg syscall (darwin-amd64), type RawSockaddrInet4 struct, Zero [8]int8 +pkg syscall (darwin-amd64), type RawSockaddrInet6 struct +pkg syscall (darwin-amd64), type RawSockaddrInet6 struct, Addr [16]byte +pkg syscall (darwin-amd64), type RawSockaddrInet6 struct, Family uint8 +pkg syscall (darwin-amd64), type RawSockaddrInet6 struct, Flowinfo uint32 +pkg syscall (darwin-amd64), type RawSockaddrInet6 struct, Len uint8 +pkg syscall (darwin-amd64), type RawSockaddrInet6 struct, Port uint16 +pkg syscall (darwin-amd64), type RawSockaddrInet6 struct, Scope_id uint32 +pkg syscall (darwin-amd64), type RawSockaddrUnix struct +pkg syscall (darwin-amd64), type RawSockaddrUnix struct, Family uint8 +pkg syscall (darwin-amd64), type RawSockaddrUnix struct, Len uint8 +pkg syscall (darwin-amd64), type RawSockaddrUnix struct, Path [104]int8 +pkg syscall (darwin-amd64), type Rlimit struct +pkg syscall (darwin-amd64), type Rlimit struct, Cur uint64 +pkg syscall (darwin-amd64), type Rlimit struct, Max uint64 +pkg syscall (darwin-amd64), type RouteMessage struct +pkg syscall (darwin-amd64), type RouteMessage struct, Data []byte +pkg syscall (darwin-amd64), type RouteMessage struct, Header RtMsghdr +pkg syscall (darwin-amd64), type RoutingMessage interface {} +pkg syscall (darwin-amd64), type RtMetrics struct +pkg syscall (darwin-amd64), type RtMetrics struct, Expire int32 +pkg syscall (darwin-amd64), type RtMetrics struct, Filler [4]uint32 +pkg syscall (darwin-amd64), type RtMetrics struct, Hopcount uint32 +pkg syscall (darwin-amd64), type RtMetrics struct, Locks uint32 +pkg syscall (darwin-amd64), type RtMetrics struct, Mtu uint32 +pkg syscall (darwin-amd64), type RtMetrics struct, Pksent uint32 +pkg syscall (darwin-amd64), type RtMetrics struct, Recvpipe uint32 +pkg syscall (darwin-amd64), type RtMetrics struct, Rtt uint32 +pkg syscall (darwin-amd64), type RtMetrics struct, Rttvar uint32 +pkg syscall (darwin-amd64), type RtMetrics struct, Sendpipe uint32 +pkg syscall (darwin-amd64), type RtMetrics struct, Ssthresh uint32 +pkg syscall (darwin-amd64), type RtMsghdr struct +pkg syscall (darwin-amd64), type RtMsghdr struct, Addrs int32 +pkg syscall (darwin-amd64), type RtMsghdr struct, Errno int32 +pkg syscall (darwin-amd64), type RtMsghdr struct, Flags int32 +pkg syscall (darwin-amd64), type RtMsghdr struct, Index uint16 +pkg syscall (darwin-amd64), type RtMsghdr struct, Inits uint32 +pkg syscall (darwin-amd64), type RtMsghdr struct, Msglen uint16 +pkg syscall (darwin-amd64), type RtMsghdr struct, Pad_cgo_0 [2]byte +pkg syscall (darwin-amd64), type RtMsghdr struct, Pid int32 +pkg syscall (darwin-amd64), type RtMsghdr struct, Rmx RtMetrics +pkg syscall (darwin-amd64), type RtMsghdr struct, Seq int32 +pkg syscall (darwin-amd64), type RtMsghdr struct, Type uint8 +pkg syscall (darwin-amd64), type RtMsghdr struct, Use int32 +pkg syscall (darwin-amd64), type RtMsghdr struct, Version uint8 +pkg syscall (darwin-amd64), type Rusage struct, Idrss int64 +pkg syscall (darwin-amd64), type Rusage struct, Inblock int64 +pkg syscall (darwin-amd64), type Rusage struct, Isrss int64 +pkg syscall (darwin-amd64), type Rusage struct, Ixrss int64 +pkg syscall (darwin-amd64), type Rusage struct, Majflt int64 +pkg syscall (darwin-amd64), type Rusage struct, Maxrss int64 +pkg syscall (darwin-amd64), type Rusage struct, Minflt int64 +pkg syscall (darwin-amd64), type Rusage struct, Msgrcv int64 +pkg syscall (darwin-amd64), type Rusage struct, Msgsnd int64 +pkg syscall (darwin-amd64), type Rusage struct, Nivcsw int64 +pkg syscall (darwin-amd64), type Rusage struct, Nsignals int64 +pkg syscall (darwin-amd64), type Rusage struct, Nswap int64 +pkg syscall (darwin-amd64), type Rusage struct, Nvcsw int64 +pkg syscall (darwin-amd64), type Rusage struct, Oublock int64 +pkg syscall (darwin-amd64), type Rusage struct, Stime Timeval +pkg syscall (darwin-amd64), type Rusage struct, Utime Timeval +pkg syscall (darwin-amd64), type SockaddrDatalink struct +pkg syscall (darwin-amd64), type SockaddrDatalink struct, Alen uint8 +pkg syscall (darwin-amd64), type SockaddrDatalink struct, Data [12]int8 +pkg syscall (darwin-amd64), type SockaddrDatalink struct, Family uint8 +pkg syscall (darwin-amd64), type SockaddrDatalink struct, Index uint16 +pkg syscall (darwin-amd64), type SockaddrDatalink struct, Len uint8 +pkg syscall (darwin-amd64), type SockaddrDatalink struct, Nlen uint8 +pkg syscall (darwin-amd64), type SockaddrDatalink struct, Slen uint8 +pkg syscall (darwin-amd64), type SockaddrDatalink struct, Type uint8 +pkg syscall (darwin-amd64), type SocketControlMessage struct +pkg syscall (darwin-amd64), type SocketControlMessage struct, Data []byte +pkg syscall (darwin-amd64), type SocketControlMessage struct, Header Cmsghdr +pkg syscall (darwin-amd64), type Stat_t struct +pkg syscall (darwin-amd64), type Stat_t struct, Atimespec Timespec +pkg syscall (darwin-amd64), type Stat_t struct, Birthtimespec Timespec +pkg syscall (darwin-amd64), type Stat_t struct, Blksize int32 +pkg syscall (darwin-amd64), type Stat_t struct, Blocks int64 +pkg syscall (darwin-amd64), type Stat_t struct, Ctimespec Timespec +pkg syscall (darwin-amd64), type Stat_t struct, Dev int32 +pkg syscall (darwin-amd64), type Stat_t struct, Flags uint32 +pkg syscall (darwin-amd64), type Stat_t struct, Gen uint32 +pkg syscall (darwin-amd64), type Stat_t struct, Gid uint32 +pkg syscall (darwin-amd64), type Stat_t struct, Ino uint64 +pkg syscall (darwin-amd64), type Stat_t struct, Lspare int32 +pkg syscall (darwin-amd64), type Stat_t struct, Mode uint16 +pkg syscall (darwin-amd64), type Stat_t struct, Mtimespec Timespec +pkg syscall (darwin-amd64), type Stat_t struct, Nlink uint16 +pkg syscall (darwin-amd64), type Stat_t struct, Pad_cgo_0 [4]byte +pkg syscall (darwin-amd64), type Stat_t struct, Qspare [2]int64 +pkg syscall (darwin-amd64), type Stat_t struct, Rdev int32 +pkg syscall (darwin-amd64), type Stat_t struct, Size int64 +pkg syscall (darwin-amd64), type Stat_t struct, Uid uint32 +pkg syscall (darwin-amd64), type Statfs_t struct +pkg syscall (darwin-amd64), type Statfs_t struct, Bavail uint64 +pkg syscall (darwin-amd64), type Statfs_t struct, Bfree uint64 +pkg syscall (darwin-amd64), type Statfs_t struct, Blocks uint64 +pkg syscall (darwin-amd64), type Statfs_t struct, Bsize uint32 +pkg syscall (darwin-amd64), type Statfs_t struct, Ffree uint64 +pkg syscall (darwin-amd64), type Statfs_t struct, Files uint64 +pkg syscall (darwin-amd64), type Statfs_t struct, Flags uint32 +pkg syscall (darwin-amd64), type Statfs_t struct, Fsid Fsid +pkg syscall (darwin-amd64), type Statfs_t struct, Fssubtype uint32 +pkg syscall (darwin-amd64), type Statfs_t struct, Fstypename [16]int8 +pkg syscall (darwin-amd64), type Statfs_t struct, Iosize int32 +pkg syscall (darwin-amd64), type Statfs_t struct, Mntfromname [1024]int8 +pkg syscall (darwin-amd64), type Statfs_t struct, Mntonname [1024]int8 +pkg syscall (darwin-amd64), type Statfs_t struct, Owner uint32 +pkg syscall (darwin-amd64), type Statfs_t struct, Reserved [8]uint32 +pkg syscall (darwin-amd64), type Statfs_t struct, Type uint32 +pkg syscall (darwin-amd64), type SysProcAttr struct, Chroot string +pkg syscall (darwin-amd64), type SysProcAttr struct, Credential *Credential +pkg syscall (darwin-amd64), type SysProcAttr struct, Noctty bool +pkg syscall (darwin-amd64), type SysProcAttr struct, Ptrace bool +pkg syscall (darwin-amd64), type SysProcAttr struct, Setctty bool +pkg syscall (darwin-amd64), type SysProcAttr struct, Setpgid bool +pkg syscall (darwin-amd64), type SysProcAttr struct, Setsid bool +pkg syscall (darwin-amd64), type Timespec struct, Nsec int64 +pkg syscall (darwin-amd64), type Timespec struct, Sec int64 +pkg syscall (darwin-amd64), type Timeval struct, Pad_cgo_0 [4]byte +pkg syscall (darwin-amd64), type Timeval struct, Sec int64 +pkg syscall (darwin-amd64), type Timeval struct, Usec int32 +pkg syscall (darwin-amd64), type Timeval32 struct +pkg syscall (darwin-amd64), type Timeval32 struct, Sec int32 +pkg syscall (darwin-amd64), type Timeval32 struct, Usec int32 +pkg syscall (darwin-amd64), type WaitStatus uint32 +pkg syscall (darwin-amd64), var Stderr int +pkg syscall (darwin-amd64), var Stdin int +pkg syscall (darwin-amd64), var Stdout int +pkg syscall (darwin-amd64-cgo), const AF_APPLETALK ideal-int +pkg syscall (darwin-amd64-cgo), const AF_CCITT ideal-int +pkg syscall (darwin-amd64-cgo), const AF_CHAOS ideal-int +pkg syscall (darwin-amd64-cgo), const AF_CNT ideal-int +pkg syscall (darwin-amd64-cgo), const AF_COIP ideal-int +pkg syscall (darwin-amd64-cgo), const AF_DATAKIT ideal-int +pkg syscall (darwin-amd64-cgo), const AF_DECnet ideal-int +pkg syscall (darwin-amd64-cgo), const AF_DLI ideal-int +pkg syscall (darwin-amd64-cgo), const AF_E164 ideal-int +pkg syscall (darwin-amd64-cgo), const AF_ECMA ideal-int +pkg syscall (darwin-amd64-cgo), const AF_HYLINK ideal-int +pkg syscall (darwin-amd64-cgo), const AF_IEEE80211 ideal-int +pkg syscall (darwin-amd64-cgo), const AF_IMPLINK ideal-int +pkg syscall (darwin-amd64-cgo), const AF_IPX ideal-int +pkg syscall (darwin-amd64-cgo), const AF_ISDN ideal-int +pkg syscall (darwin-amd64-cgo), const AF_ISO ideal-int +pkg syscall (darwin-amd64-cgo), const AF_LAT ideal-int +pkg syscall (darwin-amd64-cgo), const AF_LINK ideal-int +pkg syscall (darwin-amd64-cgo), const AF_LOCAL ideal-int +pkg syscall (darwin-amd64-cgo), const AF_MAX ideal-int +pkg syscall (darwin-amd64-cgo), const AF_NATM ideal-int +pkg syscall (darwin-amd64-cgo), const AF_NDRV ideal-int +pkg syscall (darwin-amd64-cgo), const AF_NETBIOS ideal-int +pkg syscall (darwin-amd64-cgo), const AF_NS ideal-int +pkg syscall (darwin-amd64-cgo), const AF_OSI ideal-int +pkg syscall (darwin-amd64-cgo), const AF_PPP ideal-int +pkg syscall (darwin-amd64-cgo), const AF_PUP ideal-int +pkg syscall (darwin-amd64-cgo), const AF_RESERVED_36 ideal-int +pkg syscall (darwin-amd64-cgo), const AF_ROUTE ideal-int +pkg syscall (darwin-amd64-cgo), const AF_SIP ideal-int +pkg syscall (darwin-amd64-cgo), const AF_SNA ideal-int +pkg syscall (darwin-amd64-cgo), const AF_SYSTEM ideal-int +pkg syscall (darwin-amd64-cgo), const BIOCFLUSH ideal-int +pkg syscall (darwin-amd64-cgo), const BIOCGBLEN ideal-int +pkg syscall (darwin-amd64-cgo), const BIOCGDLT ideal-int +pkg syscall (darwin-amd64-cgo), const BIOCGDLTLIST ideal-int +pkg syscall (darwin-amd64-cgo), const BIOCGETIF ideal-int +pkg syscall (darwin-amd64-cgo), const BIOCGHDRCMPLT ideal-int +pkg syscall (darwin-amd64-cgo), const BIOCGRSIG ideal-int +pkg syscall (darwin-amd64-cgo), const BIOCGRTIMEOUT ideal-int +pkg syscall (darwin-amd64-cgo), const BIOCGSEESENT ideal-int +pkg syscall (darwin-amd64-cgo), const BIOCGSTATS ideal-int +pkg syscall (darwin-amd64-cgo), const BIOCIMMEDIATE ideal-int +pkg syscall (darwin-amd64-cgo), const BIOCPROMISC ideal-int +pkg syscall (darwin-amd64-cgo), const BIOCSBLEN ideal-int +pkg syscall (darwin-amd64-cgo), const BIOCSDLT ideal-int +pkg syscall (darwin-amd64-cgo), const BIOCSETF ideal-int +pkg syscall (darwin-amd64-cgo), const BIOCSETIF ideal-int +pkg syscall (darwin-amd64-cgo), const BIOCSHDRCMPLT ideal-int +pkg syscall (darwin-amd64-cgo), const BIOCSRSIG ideal-int +pkg syscall (darwin-amd64-cgo), const BIOCSRTIMEOUT ideal-int +pkg syscall (darwin-amd64-cgo), const BIOCSSEESENT ideal-int +pkg syscall (darwin-amd64-cgo), const BIOCVERSION ideal-int +pkg syscall (darwin-amd64-cgo), const BPF_A ideal-int +pkg syscall (darwin-amd64-cgo), const BPF_ABS ideal-int +pkg syscall (darwin-amd64-cgo), const BPF_ADD ideal-int +pkg syscall (darwin-amd64-cgo), const BPF_ALIGNMENT ideal-int +pkg syscall (darwin-amd64-cgo), const BPF_ALU ideal-int +pkg syscall (darwin-amd64-cgo), const BPF_AND ideal-int +pkg syscall (darwin-amd64-cgo), const BPF_B ideal-int +pkg syscall (darwin-amd64-cgo), const BPF_DIV ideal-int +pkg syscall (darwin-amd64-cgo), const BPF_H ideal-int +pkg syscall (darwin-amd64-cgo), const BPF_IMM ideal-int +pkg syscall (darwin-amd64-cgo), const BPF_IND ideal-int +pkg syscall (darwin-amd64-cgo), const BPF_JA ideal-int +pkg syscall (darwin-amd64-cgo), const BPF_JEQ ideal-int +pkg syscall (darwin-amd64-cgo), const BPF_JGE ideal-int +pkg syscall (darwin-amd64-cgo), const BPF_JGT ideal-int +pkg syscall (darwin-amd64-cgo), const BPF_JMP ideal-int +pkg syscall (darwin-amd64-cgo), const BPF_JSET ideal-int +pkg syscall (darwin-amd64-cgo), const BPF_K ideal-int +pkg syscall (darwin-amd64-cgo), const BPF_LD ideal-int +pkg syscall (darwin-amd64-cgo), const BPF_LDX ideal-int +pkg syscall (darwin-amd64-cgo), const BPF_LEN ideal-int +pkg syscall (darwin-amd64-cgo), const BPF_LSH ideal-int +pkg syscall (darwin-amd64-cgo), const BPF_MAJOR_VERSION ideal-int +pkg syscall (darwin-amd64-cgo), const BPF_MAXBUFSIZE ideal-int +pkg syscall (darwin-amd64-cgo), const BPF_MAXINSNS ideal-int +pkg syscall (darwin-amd64-cgo), const BPF_MEM ideal-int +pkg syscall (darwin-amd64-cgo), const BPF_MEMWORDS ideal-int +pkg syscall (darwin-amd64-cgo), const BPF_MINBUFSIZE ideal-int +pkg syscall (darwin-amd64-cgo), const BPF_MINOR_VERSION ideal-int +pkg syscall (darwin-amd64-cgo), const BPF_MISC ideal-int +pkg syscall (darwin-amd64-cgo), const BPF_MSH ideal-int +pkg syscall (darwin-amd64-cgo), const BPF_MUL ideal-int +pkg syscall (darwin-amd64-cgo), const BPF_NEG ideal-int +pkg syscall (darwin-amd64-cgo), const BPF_OR ideal-int +pkg syscall (darwin-amd64-cgo), const BPF_RELEASE ideal-int +pkg syscall (darwin-amd64-cgo), const BPF_RET ideal-int +pkg syscall (darwin-amd64-cgo), const BPF_RSH ideal-int +pkg syscall (darwin-amd64-cgo), const BPF_ST ideal-int +pkg syscall (darwin-amd64-cgo), const BPF_STX ideal-int +pkg syscall (darwin-amd64-cgo), const BPF_SUB ideal-int +pkg syscall (darwin-amd64-cgo), const BPF_TAX ideal-int +pkg syscall (darwin-amd64-cgo), const BPF_TXA ideal-int +pkg syscall (darwin-amd64-cgo), const BPF_W ideal-int +pkg syscall (darwin-amd64-cgo), const BPF_X ideal-int +pkg syscall (darwin-amd64-cgo), const CTL_MAXNAME ideal-int +pkg syscall (darwin-amd64-cgo), const CTL_NET ideal-int +pkg syscall (darwin-amd64-cgo), const DLT_APPLE_IP_OVER_IEEE1394 ideal-int +pkg syscall (darwin-amd64-cgo), const DLT_ARCNET ideal-int +pkg syscall (darwin-amd64-cgo), const DLT_ATM_CLIP ideal-int +pkg syscall (darwin-amd64-cgo), const DLT_ATM_RFC1483 ideal-int +pkg syscall (darwin-amd64-cgo), const DLT_AX25 ideal-int +pkg syscall (darwin-amd64-cgo), const DLT_CHAOS ideal-int +pkg syscall (darwin-amd64-cgo), const DLT_CHDLC ideal-int +pkg syscall (darwin-amd64-cgo), const DLT_C_HDLC ideal-int +pkg syscall (darwin-amd64-cgo), const DLT_EN10MB ideal-int +pkg syscall (darwin-amd64-cgo), const DLT_EN3MB ideal-int +pkg syscall (darwin-amd64-cgo), const DLT_FDDI ideal-int +pkg syscall (darwin-amd64-cgo), const DLT_IEEE802 ideal-int +pkg syscall (darwin-amd64-cgo), const DLT_IEEE802_11 ideal-int +pkg syscall (darwin-amd64-cgo), const DLT_IEEE802_11_RADIO ideal-int +pkg syscall (darwin-amd64-cgo), const DLT_IEEE802_11_RADIO_AVS ideal-int +pkg syscall (darwin-amd64-cgo), const DLT_LINUX_SLL ideal-int +pkg syscall (darwin-amd64-cgo), const DLT_LOOP ideal-int +pkg syscall (darwin-amd64-cgo), const DLT_NULL ideal-int +pkg syscall (darwin-amd64-cgo), const DLT_PFLOG ideal-int +pkg syscall (darwin-amd64-cgo), const DLT_PFSYNC ideal-int +pkg syscall (darwin-amd64-cgo), const DLT_PPP ideal-int +pkg syscall (darwin-amd64-cgo), const DLT_PPP_BSDOS ideal-int +pkg syscall (darwin-amd64-cgo), const DLT_PPP_SERIAL ideal-int +pkg syscall (darwin-amd64-cgo), const DLT_PRONET ideal-int +pkg syscall (darwin-amd64-cgo), const DLT_RAW ideal-int +pkg syscall (darwin-amd64-cgo), const DLT_SLIP ideal-int +pkg syscall (darwin-amd64-cgo), const DLT_SLIP_BSDOS ideal-int +pkg syscall (darwin-amd64-cgo), const DT_BLK ideal-int +pkg syscall (darwin-amd64-cgo), const DT_CHR ideal-int +pkg syscall (darwin-amd64-cgo), const DT_DIR ideal-int +pkg syscall (darwin-amd64-cgo), const DT_FIFO ideal-int +pkg syscall (darwin-amd64-cgo), const DT_LNK ideal-int +pkg syscall (darwin-amd64-cgo), const DT_REG ideal-int +pkg syscall (darwin-amd64-cgo), const DT_SOCK ideal-int +pkg syscall (darwin-amd64-cgo), const DT_UNKNOWN ideal-int +pkg syscall (darwin-amd64-cgo), const DT_WHT ideal-int +pkg syscall (darwin-amd64-cgo), const EAUTH Errno +pkg syscall (darwin-amd64-cgo), const EBADARCH Errno +pkg syscall (darwin-amd64-cgo), const EBADEXEC Errno +pkg syscall (darwin-amd64-cgo), const EBADMACHO Errno +pkg syscall (darwin-amd64-cgo), const EBADRPC Errno +pkg syscall (darwin-amd64-cgo), const ECHO ideal-int +pkg syscall (darwin-amd64-cgo), const ECHOCTL ideal-int +pkg syscall (darwin-amd64-cgo), const ECHOE ideal-int +pkg syscall (darwin-amd64-cgo), const ECHOK ideal-int +pkg syscall (darwin-amd64-cgo), const ECHOKE ideal-int +pkg syscall (darwin-amd64-cgo), const ECHONL ideal-int +pkg syscall (darwin-amd64-cgo), const ECHOPRT ideal-int +pkg syscall (darwin-amd64-cgo), const EDEVERR Errno +pkg syscall (darwin-amd64-cgo), const EFTYPE Errno +pkg syscall (darwin-amd64-cgo), const ELAST Errno +pkg syscall (darwin-amd64-cgo), const ENEEDAUTH Errno +pkg syscall (darwin-amd64-cgo), const ENOATTR Errno +pkg syscall (darwin-amd64-cgo), const ENOPOLICY Errno +pkg syscall (darwin-amd64-cgo), const EPROCLIM Errno +pkg syscall (darwin-amd64-cgo), const EPROCUNAVAIL Errno +pkg syscall (darwin-amd64-cgo), const EPROGMISMATCH Errno +pkg syscall (darwin-amd64-cgo), const EPROGUNAVAIL Errno +pkg syscall (darwin-amd64-cgo), const EPWROFF Errno +pkg syscall (darwin-amd64-cgo), const ERPCMISMATCH Errno +pkg syscall (darwin-amd64-cgo), const ESHLIBVERS Errno +pkg syscall (darwin-amd64-cgo), const EVFILT_AIO ideal-int +pkg syscall (darwin-amd64-cgo), const EVFILT_FS ideal-int +pkg syscall (darwin-amd64-cgo), const EVFILT_MACHPORT ideal-int +pkg syscall (darwin-amd64-cgo), const EVFILT_PROC ideal-int +pkg syscall (darwin-amd64-cgo), const EVFILT_READ ideal-int +pkg syscall (darwin-amd64-cgo), const EVFILT_SIGNAL ideal-int +pkg syscall (darwin-amd64-cgo), const EVFILT_SYSCOUNT ideal-int +pkg syscall (darwin-amd64-cgo), const EVFILT_THREADMARKER ideal-int +pkg syscall (darwin-amd64-cgo), const EVFILT_TIMER ideal-int +pkg syscall (darwin-amd64-cgo), const EVFILT_USER ideal-int +pkg syscall (darwin-amd64-cgo), const EVFILT_VM ideal-int +pkg syscall (darwin-amd64-cgo), const EVFILT_VNODE ideal-int +pkg syscall (darwin-amd64-cgo), const EVFILT_WRITE ideal-int +pkg syscall (darwin-amd64-cgo), const EV_ADD ideal-int +pkg syscall (darwin-amd64-cgo), const EV_CLEAR ideal-int +pkg syscall (darwin-amd64-cgo), const EV_DELETE ideal-int +pkg syscall (darwin-amd64-cgo), const EV_DISABLE ideal-int +pkg syscall (darwin-amd64-cgo), const EV_DISPATCH ideal-int +pkg syscall (darwin-amd64-cgo), const EV_ENABLE ideal-int +pkg syscall (darwin-amd64-cgo), const EV_EOF ideal-int +pkg syscall (darwin-amd64-cgo), const EV_ERROR ideal-int +pkg syscall (darwin-amd64-cgo), const EV_FLAG0 ideal-int +pkg syscall (darwin-amd64-cgo), const EV_FLAG1 ideal-int +pkg syscall (darwin-amd64-cgo), const EV_ONESHOT ideal-int +pkg syscall (darwin-amd64-cgo), const EV_OOBAND ideal-int +pkg syscall (darwin-amd64-cgo), const EV_POLL ideal-int +pkg syscall (darwin-amd64-cgo), const EV_RECEIPT ideal-int +pkg syscall (darwin-amd64-cgo), const EV_SYSFLAGS ideal-int +pkg syscall (darwin-amd64-cgo), const EXTA ideal-int +pkg syscall (darwin-amd64-cgo), const EXTB ideal-int +pkg syscall (darwin-amd64-cgo), const EXTPROC ideal-int +pkg syscall (darwin-amd64-cgo), const FD_CLOEXEC ideal-int +pkg syscall (darwin-amd64-cgo), const FD_SETSIZE ideal-int +pkg syscall (darwin-amd64-cgo), const F_ADDFILESIGS ideal-int +pkg syscall (darwin-amd64-cgo), const F_ADDSIGS ideal-int +pkg syscall (darwin-amd64-cgo), const F_ALLOCATEALL ideal-int +pkg syscall (darwin-amd64-cgo), const F_ALLOCATECONTIG ideal-int +pkg syscall (darwin-amd64-cgo), const F_CHKCLEAN ideal-int +pkg syscall (darwin-amd64-cgo), const F_DUPFD ideal-int +pkg syscall (darwin-amd64-cgo), const F_DUPFD_CLOEXEC ideal-int +pkg syscall (darwin-amd64-cgo), const F_FLUSH_DATA ideal-int +pkg syscall (darwin-amd64-cgo), const F_FREEZE_FS ideal-int +pkg syscall (darwin-amd64-cgo), const F_FULLFSYNC ideal-int +pkg syscall (darwin-amd64-cgo), const F_GETFD ideal-int +pkg syscall (darwin-amd64-cgo), const F_GETFL ideal-int +pkg syscall (darwin-amd64-cgo), const F_GETLK ideal-int +pkg syscall (darwin-amd64-cgo), const F_GETLKPID ideal-int +pkg syscall (darwin-amd64-cgo), const F_GETNOSIGPIPE ideal-int +pkg syscall (darwin-amd64-cgo), const F_GETOWN ideal-int +pkg syscall (darwin-amd64-cgo), const F_GETPATH ideal-int +pkg syscall (darwin-amd64-cgo), const F_GETPATH_MTMINFO ideal-int +pkg syscall (darwin-amd64-cgo), const F_GETPROTECTIONCLASS ideal-int +pkg syscall (darwin-amd64-cgo), const F_GLOBAL_NOCACHE ideal-int +pkg syscall (darwin-amd64-cgo), const F_LOG2PHYS ideal-int +pkg syscall (darwin-amd64-cgo), const F_LOG2PHYS_EXT ideal-int +pkg syscall (darwin-amd64-cgo), const F_MARKDEPENDENCY ideal-int +pkg syscall (darwin-amd64-cgo), const F_NOCACHE ideal-int +pkg syscall (darwin-amd64-cgo), const F_NODIRECT ideal-int +pkg syscall (darwin-amd64-cgo), const F_OK ideal-int +pkg syscall (darwin-amd64-cgo), const F_PATHPKG_CHECK ideal-int +pkg syscall (darwin-amd64-cgo), const F_PEOFPOSMODE ideal-int +pkg syscall (darwin-amd64-cgo), const F_PREALLOCATE ideal-int +pkg syscall (darwin-amd64-cgo), const F_RDADVISE ideal-int +pkg syscall (darwin-amd64-cgo), const F_RDAHEAD ideal-int +pkg syscall (darwin-amd64-cgo), const F_RDLCK ideal-int +pkg syscall (darwin-amd64-cgo), const F_READBOOTSTRAP ideal-int +pkg syscall (darwin-amd64-cgo), const F_SETBACKINGSTORE ideal-int +pkg syscall (darwin-amd64-cgo), const F_SETFD ideal-int +pkg syscall (darwin-amd64-cgo), const F_SETFL ideal-int +pkg syscall (darwin-amd64-cgo), const F_SETLK ideal-int +pkg syscall (darwin-amd64-cgo), const F_SETLKW ideal-int +pkg syscall (darwin-amd64-cgo), const F_SETNOSIGPIPE ideal-int +pkg syscall (darwin-amd64-cgo), const F_SETOWN ideal-int +pkg syscall (darwin-amd64-cgo), const F_SETPROTECTIONCLASS ideal-int +pkg syscall (darwin-amd64-cgo), const F_SETSIZE ideal-int +pkg syscall (darwin-amd64-cgo), const F_THAW_FS ideal-int +pkg syscall (darwin-amd64-cgo), const F_UNLCK ideal-int +pkg syscall (darwin-amd64-cgo), const F_VOLPOSMODE ideal-int +pkg syscall (darwin-amd64-cgo), const F_WRITEBOOTSTRAP ideal-int +pkg syscall (darwin-amd64-cgo), const F_WRLCK ideal-int +pkg syscall (darwin-amd64-cgo), const IFF_ALLMULTI ideal-int +pkg syscall (darwin-amd64-cgo), const IFF_ALTPHYS ideal-int +pkg syscall (darwin-amd64-cgo), const IFF_DEBUG ideal-int +pkg syscall (darwin-amd64-cgo), const IFF_LINK0 ideal-int +pkg syscall (darwin-amd64-cgo), const IFF_LINK1 ideal-int +pkg syscall (darwin-amd64-cgo), const IFF_LINK2 ideal-int +pkg syscall (darwin-amd64-cgo), const IFF_NOARP ideal-int +pkg syscall (darwin-amd64-cgo), const IFF_NOTRAILERS ideal-int +pkg syscall (darwin-amd64-cgo), const IFF_OACTIVE ideal-int +pkg syscall (darwin-amd64-cgo), const IFF_POINTOPOINT ideal-int +pkg syscall (darwin-amd64-cgo), const IFF_PROMISC ideal-int +pkg syscall (darwin-amd64-cgo), const IFF_RUNNING ideal-int +pkg syscall (darwin-amd64-cgo), const IFF_SIMPLEX ideal-int +pkg syscall (darwin-amd64-cgo), const IFNAMSIZ ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_1822 ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_AAL5 ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_ARCNET ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_ARCNETPLUS ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_ATM ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_BRIDGE ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_CARP ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_CELLULAR ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_CEPT ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_DS3 ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_ENC ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_EON ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_ETHER ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_FAITH ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_FDDI ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_FRELAY ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_FRELAYDCE ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_GIF ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_HDH1822 ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_HIPPI ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_HSSI ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_HY ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_IEEE1394 ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_IEEE8023ADLAG ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_ISDNBASIC ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_ISDNPRIMARY ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_ISO88022LLC ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_ISO88023 ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_ISO88024 ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_ISO88025 ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_ISO88026 ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_L2VLAN ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_LAPB ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_LOCALTALK ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_LOOP ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_MIOX25 ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_MODEM ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_NSIP ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_OTHER ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_P10 ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_P80 ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_PARA ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_PDP ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_PFLOG ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_PFSYNC ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_PPP ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_PROPMUX ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_PROPVIRTUAL ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_PTPSERIAL ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_RS232 ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_SDLC ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_SIP ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_SLIP ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_SMDSDXI ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_SMDSICIP ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_SONET ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_SONETPATH ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_SONETVT ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_STARLAN ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_STF ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_T1 ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_ULTRA ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_V35 ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_X25 ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_X25DDN ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_X25PLE ideal-int +pkg syscall (darwin-amd64-cgo), const IFT_XETHER ideal-int +pkg syscall (darwin-amd64-cgo), const IN_CLASSA_HOST ideal-int +pkg syscall (darwin-amd64-cgo), const IN_CLASSA_MAX ideal-int +pkg syscall (darwin-amd64-cgo), const IN_CLASSA_NET ideal-int +pkg syscall (darwin-amd64-cgo), const IN_CLASSA_NSHIFT ideal-int +pkg syscall (darwin-amd64-cgo), const IN_CLASSB_HOST ideal-int +pkg syscall (darwin-amd64-cgo), const IN_CLASSB_MAX ideal-int +pkg syscall (darwin-amd64-cgo), const IN_CLASSB_NET ideal-int +pkg syscall (darwin-amd64-cgo), const IN_CLASSB_NSHIFT ideal-int +pkg syscall (darwin-amd64-cgo), const IN_CLASSC_HOST ideal-int +pkg syscall (darwin-amd64-cgo), const IN_CLASSC_NET ideal-int +pkg syscall (darwin-amd64-cgo), const IN_CLASSC_NSHIFT ideal-int +pkg syscall (darwin-amd64-cgo), const IN_CLASSD_HOST ideal-int +pkg syscall (darwin-amd64-cgo), const IN_CLASSD_NET ideal-int +pkg syscall (darwin-amd64-cgo), const IN_CLASSD_NSHIFT ideal-int +pkg syscall (darwin-amd64-cgo), const IN_LINKLOCALNETNUM ideal-int +pkg syscall (darwin-amd64-cgo), const IN_LOOPBACKNET ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_3PC ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_ADFS ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_AH ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_AHIP ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_APES ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_ARGUS ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_AX25 ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_BHA ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_BLT ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_BRSATMON ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_CFTP ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_CHAOS ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_CMTP ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_CPHB ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_CPNX ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_DDP ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_DGP ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_DIVERT ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_DONE ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_DSTOPTS ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_EGP ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_EMCON ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_ENCAP ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_EON ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_ESP ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_ETHERIP ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_FRAGMENT ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_GGP ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_GMTP ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_GRE ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_HELLO ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_HMP ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_HOPOPTS ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_ICMP ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_ICMPV6 ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_IDP ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_IDPR ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_IDRP ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_IGMP ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_IGP ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_IGRP ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_IL ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_INLSP ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_INP ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_IPCOMP ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_IPCV ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_IPEIP ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_IPIP ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_IPPC ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_IPV4 ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_IRTP ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_KRYPTOLAN ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_LARP ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_LEAF1 ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_LEAF2 ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_MAX ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_MAXID ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_MEAS ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_MHRP ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_MICP ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_MTP ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_MUX ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_ND ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_NHRP ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_NONE ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_NSP ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_NVPII ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_OSPFIGP ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_PGM ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_PIGP ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_PIM ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_PRM ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_PUP ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_PVP ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_RAW ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_RCCMON ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_RDP ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_ROUTING ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_RSVP ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_RVD ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_SATEXPAK ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_SATMON ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_SCCSP ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_SCTP ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_SDRP ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_SEP ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_SRPC ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_ST ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_SVMTP ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_SWIPE ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_TCF ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_TP ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_TPXX ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_TRUNK1 ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_TRUNK2 ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_TTP ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_VINES ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_VISA ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_VMTP ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_WBEXPAK ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_WBMON ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_WSN ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_XNET ideal-int +pkg syscall (darwin-amd64-cgo), const IPPROTO_XTP ideal-int +pkg syscall (darwin-amd64-cgo), const IPV6_2292DSTOPTS ideal-int +pkg syscall (darwin-amd64-cgo), const IPV6_2292HOPLIMIT ideal-int +pkg syscall (darwin-amd64-cgo), const IPV6_2292HOPOPTS ideal-int +pkg syscall (darwin-amd64-cgo), const IPV6_2292NEXTHOP ideal-int +pkg syscall (darwin-amd64-cgo), const IPV6_2292PKTINFO ideal-int +pkg syscall (darwin-amd64-cgo), const IPV6_2292PKTOPTIONS ideal-int +pkg syscall (darwin-amd64-cgo), const IPV6_2292RTHDR ideal-int +pkg syscall (darwin-amd64-cgo), const IPV6_BINDV6ONLY ideal-int +pkg syscall (darwin-amd64-cgo), const IPV6_BOUND_IF ideal-int +pkg syscall (darwin-amd64-cgo), const IPV6_CHECKSUM ideal-int +pkg syscall (darwin-amd64-cgo), const IPV6_DEFAULT_MULTICAST_HOPS ideal-int +pkg syscall (darwin-amd64-cgo), const IPV6_DEFAULT_MULTICAST_LOOP ideal-int +pkg syscall (darwin-amd64-cgo), const IPV6_DEFHLIM ideal-int +pkg syscall (darwin-amd64-cgo), const IPV6_FAITH ideal-int +pkg syscall (darwin-amd64-cgo), const IPV6_FLOWINFO_MASK ideal-int +pkg syscall (darwin-amd64-cgo), const IPV6_FLOWLABEL_MASK ideal-int +pkg syscall (darwin-amd64-cgo), const IPV6_FRAGTTL ideal-int +pkg syscall (darwin-amd64-cgo), const IPV6_FW_ADD ideal-int +pkg syscall (darwin-amd64-cgo), const IPV6_FW_DEL ideal-int +pkg syscall (darwin-amd64-cgo), const IPV6_FW_FLUSH ideal-int +pkg syscall (darwin-amd64-cgo), const IPV6_FW_GET ideal-int +pkg syscall (darwin-amd64-cgo), const IPV6_FW_ZERO ideal-int +pkg syscall (darwin-amd64-cgo), const IPV6_HLIMDEC ideal-int +pkg syscall (darwin-amd64-cgo), const IPV6_IPSEC_POLICY ideal-int +pkg syscall (darwin-amd64-cgo), const IPV6_MAXHLIM ideal-int +pkg syscall (darwin-amd64-cgo), const IPV6_MAXOPTHDR ideal-int +pkg syscall (darwin-amd64-cgo), const IPV6_MAXPACKET ideal-int +pkg syscall (darwin-amd64-cgo), const IPV6_MAX_GROUP_SRC_FILTER ideal-int +pkg syscall (darwin-amd64-cgo), const IPV6_MAX_MEMBERSHIPS ideal-int +pkg syscall (darwin-amd64-cgo), const IPV6_MAX_SOCK_SRC_FILTER ideal-int +pkg syscall (darwin-amd64-cgo), const IPV6_MIN_MEMBERSHIPS ideal-int +pkg syscall (darwin-amd64-cgo), const IPV6_MMTU ideal-int +pkg syscall (darwin-amd64-cgo), const IPV6_PORTRANGE ideal-int +pkg syscall (darwin-amd64-cgo), const IPV6_PORTRANGE_DEFAULT ideal-int +pkg syscall (darwin-amd64-cgo), const IPV6_PORTRANGE_HIGH ideal-int +pkg syscall (darwin-amd64-cgo), const IPV6_PORTRANGE_LOW ideal-int +pkg syscall (darwin-amd64-cgo), const IPV6_RECVTCLASS ideal-int +pkg syscall (darwin-amd64-cgo), const IPV6_RTHDR_LOOSE ideal-int +pkg syscall (darwin-amd64-cgo), const IPV6_RTHDR_STRICT ideal-int +pkg syscall (darwin-amd64-cgo), const IPV6_RTHDR_TYPE_0 ideal-int +pkg syscall (darwin-amd64-cgo), const IPV6_SOCKOPT_RESERVED1 ideal-int +pkg syscall (darwin-amd64-cgo), const IPV6_TCLASS ideal-int +pkg syscall (darwin-amd64-cgo), const IPV6_VERSION ideal-int +pkg syscall (darwin-amd64-cgo), const IPV6_VERSION_MASK ideal-int +pkg syscall (darwin-amd64-cgo), const IP_ADD_SOURCE_MEMBERSHIP ideal-int +pkg syscall (darwin-amd64-cgo), const IP_BLOCK_SOURCE ideal-int +pkg syscall (darwin-amd64-cgo), const IP_BOUND_IF ideal-int +pkg syscall (darwin-amd64-cgo), const IP_DEFAULT_MULTICAST_LOOP ideal-int +pkg syscall (darwin-amd64-cgo), const IP_DEFAULT_MULTICAST_TTL ideal-int +pkg syscall (darwin-amd64-cgo), const IP_DF ideal-int +pkg syscall (darwin-amd64-cgo), const IP_DROP_SOURCE_MEMBERSHIP ideal-int +pkg syscall (darwin-amd64-cgo), const IP_DUMMYNET_CONFIGURE ideal-int +pkg syscall (darwin-amd64-cgo), const IP_DUMMYNET_DEL ideal-int +pkg syscall (darwin-amd64-cgo), const IP_DUMMYNET_FLUSH ideal-int +pkg syscall (darwin-amd64-cgo), const IP_DUMMYNET_GET ideal-int +pkg syscall (darwin-amd64-cgo), const IP_FAITH ideal-int +pkg syscall (darwin-amd64-cgo), const IP_FW_ADD ideal-int +pkg syscall (darwin-amd64-cgo), const IP_FW_DEL ideal-int +pkg syscall (darwin-amd64-cgo), const IP_FW_FLUSH ideal-int +pkg syscall (darwin-amd64-cgo), const IP_FW_GET ideal-int +pkg syscall (darwin-amd64-cgo), const IP_FW_RESETLOG ideal-int +pkg syscall (darwin-amd64-cgo), const IP_FW_ZERO ideal-int +pkg syscall (darwin-amd64-cgo), const IP_HDRINCL ideal-int +pkg syscall (darwin-amd64-cgo), const IP_IPSEC_POLICY ideal-int +pkg syscall (darwin-amd64-cgo), const IP_MAXPACKET ideal-int +pkg syscall (darwin-amd64-cgo), const IP_MAX_GROUP_SRC_FILTER ideal-int +pkg syscall (darwin-amd64-cgo), const IP_MAX_MEMBERSHIPS ideal-int +pkg syscall (darwin-amd64-cgo), const IP_MAX_SOCK_MUTE_FILTER ideal-int +pkg syscall (darwin-amd64-cgo), const IP_MAX_SOCK_SRC_FILTER ideal-int +pkg syscall (darwin-amd64-cgo), const IP_MF ideal-int +pkg syscall (darwin-amd64-cgo), const IP_MIN_MEMBERSHIPS ideal-int +pkg syscall (darwin-amd64-cgo), const IP_MSFILTER ideal-int +pkg syscall (darwin-amd64-cgo), const IP_MSS ideal-int +pkg syscall (darwin-amd64-cgo), const IP_MULTICAST_IFINDEX ideal-int +pkg syscall (darwin-amd64-cgo), const IP_MULTICAST_VIF ideal-int +pkg syscall (darwin-amd64-cgo), const IP_NAT__XXX ideal-int +pkg syscall (darwin-amd64-cgo), const IP_OFFMASK ideal-int +pkg syscall (darwin-amd64-cgo), const IP_OLD_FW_ADD ideal-int +pkg syscall (darwin-amd64-cgo), const IP_OLD_FW_DEL ideal-int +pkg syscall (darwin-amd64-cgo), const IP_OLD_FW_FLUSH ideal-int +pkg syscall (darwin-amd64-cgo), const IP_OLD_FW_GET ideal-int +pkg syscall (darwin-amd64-cgo), const IP_OLD_FW_RESETLOG ideal-int +pkg syscall (darwin-amd64-cgo), const IP_OLD_FW_ZERO ideal-int +pkg syscall (darwin-amd64-cgo), const IP_OPTIONS ideal-int +pkg syscall (darwin-amd64-cgo), const IP_PKTINFO ideal-int +pkg syscall (darwin-amd64-cgo), const IP_PORTRANGE ideal-int +pkg syscall (darwin-amd64-cgo), const IP_PORTRANGE_DEFAULT ideal-int +pkg syscall (darwin-amd64-cgo), const IP_PORTRANGE_HIGH ideal-int +pkg syscall (darwin-amd64-cgo), const IP_PORTRANGE_LOW ideal-int +pkg syscall (darwin-amd64-cgo), const IP_RECVDSTADDR ideal-int +pkg syscall (darwin-amd64-cgo), const IP_RECVIF ideal-int +pkg syscall (darwin-amd64-cgo), const IP_RECVOPTS ideal-int +pkg syscall (darwin-amd64-cgo), const IP_RECVPKTINFO ideal-int +pkg syscall (darwin-amd64-cgo), const IP_RECVRETOPTS ideal-int +pkg syscall (darwin-amd64-cgo), const IP_RECVTTL ideal-int +pkg syscall (darwin-amd64-cgo), const IP_RETOPTS ideal-int +pkg syscall (darwin-amd64-cgo), const IP_RF ideal-int +pkg syscall (darwin-amd64-cgo), const IP_RSVP_OFF ideal-int +pkg syscall (darwin-amd64-cgo), const IP_RSVP_ON ideal-int +pkg syscall (darwin-amd64-cgo), const IP_RSVP_VIF_OFF ideal-int +pkg syscall (darwin-amd64-cgo), const IP_RSVP_VIF_ON ideal-int +pkg syscall (darwin-amd64-cgo), const IP_STRIPHDR ideal-int +pkg syscall (darwin-amd64-cgo), const IP_TRAFFIC_MGT_BACKGROUND ideal-int +pkg syscall (darwin-amd64-cgo), const IP_UNBLOCK_SOURCE ideal-int +pkg syscall (darwin-amd64-cgo), const LOCK_EX ideal-int +pkg syscall (darwin-amd64-cgo), const LOCK_NB ideal-int +pkg syscall (darwin-amd64-cgo), const LOCK_SH ideal-int +pkg syscall (darwin-amd64-cgo), const LOCK_UN ideal-int +pkg syscall (darwin-amd64-cgo), const MADV_CAN_REUSE ideal-int +pkg syscall (darwin-amd64-cgo), const MADV_DONTNEED ideal-int +pkg syscall (darwin-amd64-cgo), const MADV_FREE ideal-int +pkg syscall (darwin-amd64-cgo), const MADV_FREE_REUSABLE ideal-int +pkg syscall (darwin-amd64-cgo), const MADV_FREE_REUSE ideal-int +pkg syscall (darwin-amd64-cgo), const MADV_NORMAL ideal-int +pkg syscall (darwin-amd64-cgo), const MADV_RANDOM ideal-int +pkg syscall (darwin-amd64-cgo), const MADV_SEQUENTIAL ideal-int +pkg syscall (darwin-amd64-cgo), const MADV_WILLNEED ideal-int +pkg syscall (darwin-amd64-cgo), const MADV_ZERO_WIRED_PAGES ideal-int +pkg syscall (darwin-amd64-cgo), const MAP_ANON ideal-int +pkg syscall (darwin-amd64-cgo), const MAP_COPY ideal-int +pkg syscall (darwin-amd64-cgo), const MAP_FILE ideal-int +pkg syscall (darwin-amd64-cgo), const MAP_FIXED ideal-int +pkg syscall (darwin-amd64-cgo), const MAP_HASSEMAPHORE ideal-int +pkg syscall (darwin-amd64-cgo), const MAP_JIT ideal-int +pkg syscall (darwin-amd64-cgo), const MAP_NOCACHE ideal-int +pkg syscall (darwin-amd64-cgo), const MAP_NOEXTEND ideal-int +pkg syscall (darwin-amd64-cgo), const MAP_NORESERVE ideal-int +pkg syscall (darwin-amd64-cgo), const MAP_PRIVATE ideal-int +pkg syscall (darwin-amd64-cgo), const MAP_RENAME ideal-int +pkg syscall (darwin-amd64-cgo), const MAP_RESERVED0080 ideal-int +pkg syscall (darwin-amd64-cgo), const MAP_SHARED ideal-int +pkg syscall (darwin-amd64-cgo), const MCL_CURRENT ideal-int +pkg syscall (darwin-amd64-cgo), const MCL_FUTURE ideal-int +pkg syscall (darwin-amd64-cgo), const MSG_CTRUNC ideal-int +pkg syscall (darwin-amd64-cgo), const MSG_DONTROUTE ideal-int +pkg syscall (darwin-amd64-cgo), const MSG_DONTWAIT ideal-int +pkg syscall (darwin-amd64-cgo), const MSG_EOF ideal-int +pkg syscall (darwin-amd64-cgo), const MSG_EOR ideal-int +pkg syscall (darwin-amd64-cgo), const MSG_FLUSH ideal-int +pkg syscall (darwin-amd64-cgo), const MSG_HAVEMORE ideal-int +pkg syscall (darwin-amd64-cgo), const MSG_HOLD ideal-int +pkg syscall (darwin-amd64-cgo), const MSG_NEEDSA ideal-int +pkg syscall (darwin-amd64-cgo), const MSG_OOB ideal-int +pkg syscall (darwin-amd64-cgo), const MSG_PEEK ideal-int +pkg syscall (darwin-amd64-cgo), const MSG_RCVMORE ideal-int +pkg syscall (darwin-amd64-cgo), const MSG_SEND ideal-int +pkg syscall (darwin-amd64-cgo), const MSG_TRUNC ideal-int +pkg syscall (darwin-amd64-cgo), const MSG_WAITALL ideal-int +pkg syscall (darwin-amd64-cgo), const MSG_WAITSTREAM ideal-int +pkg syscall (darwin-amd64-cgo), const MS_ASYNC ideal-int +pkg syscall (darwin-amd64-cgo), const MS_DEACTIVATE ideal-int +pkg syscall (darwin-amd64-cgo), const MS_INVALIDATE ideal-int +pkg syscall (darwin-amd64-cgo), const MS_KILLPAGES ideal-int +pkg syscall (darwin-amd64-cgo), const MS_SYNC ideal-int +pkg syscall (darwin-amd64-cgo), const NAME_MAX ideal-int +pkg syscall (darwin-amd64-cgo), const NET_RT_DUMP ideal-int +pkg syscall (darwin-amd64-cgo), const NET_RT_DUMP2 ideal-int +pkg syscall (darwin-amd64-cgo), const NET_RT_FLAGS ideal-int +pkg syscall (darwin-amd64-cgo), const NET_RT_IFLIST ideal-int +pkg syscall (darwin-amd64-cgo), const NET_RT_IFLIST2 ideal-int +pkg syscall (darwin-amd64-cgo), const NET_RT_MAXID ideal-int +pkg syscall (darwin-amd64-cgo), const NET_RT_STAT ideal-int +pkg syscall (darwin-amd64-cgo), const NET_RT_TRASH ideal-int +pkg syscall (darwin-amd64-cgo), const NOTE_ABSOLUTE ideal-int +pkg syscall (darwin-amd64-cgo), const NOTE_ATTRIB ideal-int +pkg syscall (darwin-amd64-cgo), const NOTE_CHILD ideal-int +pkg syscall (darwin-amd64-cgo), const NOTE_DELETE ideal-int +pkg syscall (darwin-amd64-cgo), const NOTE_EXEC ideal-int +pkg syscall (darwin-amd64-cgo), const NOTE_EXIT ideal-int +pkg syscall (darwin-amd64-cgo), const NOTE_EXITSTATUS ideal-int +pkg syscall (darwin-amd64-cgo), const NOTE_EXTEND ideal-int +pkg syscall (darwin-amd64-cgo), const NOTE_FFAND ideal-int +pkg syscall (darwin-amd64-cgo), const NOTE_FFCOPY ideal-int +pkg syscall (darwin-amd64-cgo), const NOTE_FFCTRLMASK ideal-int +pkg syscall (darwin-amd64-cgo), const NOTE_FFLAGSMASK ideal-int +pkg syscall (darwin-amd64-cgo), const NOTE_FFNOP ideal-int +pkg syscall (darwin-amd64-cgo), const NOTE_FFOR ideal-int +pkg syscall (darwin-amd64-cgo), const NOTE_FORK ideal-int +pkg syscall (darwin-amd64-cgo), const NOTE_LINK ideal-int +pkg syscall (darwin-amd64-cgo), const NOTE_LOWAT ideal-int +pkg syscall (darwin-amd64-cgo), const NOTE_NONE ideal-int +pkg syscall (darwin-amd64-cgo), const NOTE_NSECONDS ideal-int +pkg syscall (darwin-amd64-cgo), const NOTE_PCTRLMASK ideal-int +pkg syscall (darwin-amd64-cgo), const NOTE_PDATAMASK ideal-int +pkg syscall (darwin-amd64-cgo), const NOTE_REAP ideal-int +pkg syscall (darwin-amd64-cgo), const NOTE_RENAME ideal-int +pkg syscall (darwin-amd64-cgo), const NOTE_RESOURCEEND ideal-int +pkg syscall (darwin-amd64-cgo), const NOTE_REVOKE ideal-int +pkg syscall (darwin-amd64-cgo), const NOTE_SECONDS ideal-int +pkg syscall (darwin-amd64-cgo), const NOTE_SIGNAL ideal-int +pkg syscall (darwin-amd64-cgo), const NOTE_TRACK ideal-int +pkg syscall (darwin-amd64-cgo), const NOTE_TRACKERR ideal-int +pkg syscall (darwin-amd64-cgo), const NOTE_TRIGGER ideal-int +pkg syscall (darwin-amd64-cgo), const NOTE_USECONDS ideal-int +pkg syscall (darwin-amd64-cgo), const NOTE_VM_ERROR ideal-int +pkg syscall (darwin-amd64-cgo), const NOTE_VM_PRESSURE ideal-int +pkg syscall (darwin-amd64-cgo), const NOTE_VM_PRESSURE_SUDDEN_TERMINATE ideal-int +pkg syscall (darwin-amd64-cgo), const NOTE_VM_PRESSURE_TERMINATE ideal-int +pkg syscall (darwin-amd64-cgo), const NOTE_WRITE ideal-int +pkg syscall (darwin-amd64-cgo), const O_ACCMODE ideal-int +pkg syscall (darwin-amd64-cgo), const O_ALERT ideal-int +pkg syscall (darwin-amd64-cgo), const O_DIRECTORY ideal-int +pkg syscall (darwin-amd64-cgo), const O_DSYNC ideal-int +pkg syscall (darwin-amd64-cgo), const O_EVTONLY ideal-int +pkg syscall (darwin-amd64-cgo), const O_EXLOCK ideal-int +pkg syscall (darwin-amd64-cgo), const O_FSYNC ideal-int +pkg syscall (darwin-amd64-cgo), const O_NDELAY ideal-int +pkg syscall (darwin-amd64-cgo), const O_NOFOLLOW ideal-int +pkg syscall (darwin-amd64-cgo), const O_POPUP ideal-int +pkg syscall (darwin-amd64-cgo), const O_SHLOCK ideal-int +pkg syscall (darwin-amd64-cgo), const O_SYMLINK ideal-int +pkg syscall (darwin-amd64-cgo), const PROT_EXEC ideal-int +pkg syscall (darwin-amd64-cgo), const PROT_NONE ideal-int +pkg syscall (darwin-amd64-cgo), const PROT_READ ideal-int +pkg syscall (darwin-amd64-cgo), const PROT_WRITE ideal-int +pkg syscall (darwin-amd64-cgo), const PTRACE_CONT ideal-int +pkg syscall (darwin-amd64-cgo), const PTRACE_KILL ideal-int +pkg syscall (darwin-amd64-cgo), const PTRACE_TRACEME ideal-int +pkg syscall (darwin-amd64-cgo), const PT_ATTACH ideal-int +pkg syscall (darwin-amd64-cgo), const PT_ATTACHEXC ideal-int +pkg syscall (darwin-amd64-cgo), const PT_CONTINUE ideal-int +pkg syscall (darwin-amd64-cgo), const PT_DENY_ATTACH ideal-int +pkg syscall (darwin-amd64-cgo), const PT_DETACH ideal-int +pkg syscall (darwin-amd64-cgo), const PT_FIRSTMACH ideal-int +pkg syscall (darwin-amd64-cgo), const PT_FORCEQUOTA ideal-int +pkg syscall (darwin-amd64-cgo), const PT_KILL ideal-int +pkg syscall (darwin-amd64-cgo), const PT_READ_D ideal-int +pkg syscall (darwin-amd64-cgo), const PT_READ_I ideal-int +pkg syscall (darwin-amd64-cgo), const PT_READ_U ideal-int +pkg syscall (darwin-amd64-cgo), const PT_SIGEXC ideal-int +pkg syscall (darwin-amd64-cgo), const PT_STEP ideal-int +pkg syscall (darwin-amd64-cgo), const PT_THUPDATE ideal-int +pkg syscall (darwin-amd64-cgo), const PT_TRACE_ME ideal-int +pkg syscall (darwin-amd64-cgo), const PT_WRITE_D ideal-int +pkg syscall (darwin-amd64-cgo), const PT_WRITE_I ideal-int +pkg syscall (darwin-amd64-cgo), const PT_WRITE_U ideal-int +pkg syscall (darwin-amd64-cgo), const RLIMIT_AS ideal-int +pkg syscall (darwin-amd64-cgo), const RLIMIT_CORE ideal-int +pkg syscall (darwin-amd64-cgo), const RLIMIT_CPU ideal-int +pkg syscall (darwin-amd64-cgo), const RLIMIT_DATA ideal-int +pkg syscall (darwin-amd64-cgo), const RLIMIT_FSIZE ideal-int +pkg syscall (darwin-amd64-cgo), const RLIMIT_NOFILE ideal-int +pkg syscall (darwin-amd64-cgo), const RLIMIT_STACK ideal-int +pkg syscall (darwin-amd64-cgo), const RLIM_INFINITY ideal-int +pkg syscall (darwin-amd64-cgo), const RTAX_AUTHOR ideal-int +pkg syscall (darwin-amd64-cgo), const RTAX_BRD ideal-int +pkg syscall (darwin-amd64-cgo), const RTAX_DST ideal-int +pkg syscall (darwin-amd64-cgo), const RTAX_GATEWAY ideal-int +pkg syscall (darwin-amd64-cgo), const RTAX_GENMASK ideal-int +pkg syscall (darwin-amd64-cgo), const RTAX_IFA ideal-int +pkg syscall (darwin-amd64-cgo), const RTAX_IFP ideal-int +pkg syscall (darwin-amd64-cgo), const RTAX_MAX ideal-int +pkg syscall (darwin-amd64-cgo), const RTAX_NETMASK ideal-int +pkg syscall (darwin-amd64-cgo), const RTA_AUTHOR ideal-int +pkg syscall (darwin-amd64-cgo), const RTA_BRD ideal-int +pkg syscall (darwin-amd64-cgo), const RTA_DST ideal-int +pkg syscall (darwin-amd64-cgo), const RTA_GATEWAY ideal-int +pkg syscall (darwin-amd64-cgo), const RTA_GENMASK ideal-int +pkg syscall (darwin-amd64-cgo), const RTA_IFA ideal-int +pkg syscall (darwin-amd64-cgo), const RTA_IFP ideal-int +pkg syscall (darwin-amd64-cgo), const RTA_NETMASK ideal-int +pkg syscall (darwin-amd64-cgo), const RTF_BLACKHOLE ideal-int +pkg syscall (darwin-amd64-cgo), const RTF_BROADCAST ideal-int +pkg syscall (darwin-amd64-cgo), const RTF_CLONING ideal-int +pkg syscall (darwin-amd64-cgo), const RTF_CONDEMNED ideal-int +pkg syscall (darwin-amd64-cgo), const RTF_DELCLONE ideal-int +pkg syscall (darwin-amd64-cgo), const RTF_DONE ideal-int +pkg syscall (darwin-amd64-cgo), const RTF_DYNAMIC ideal-int +pkg syscall (darwin-amd64-cgo), const RTF_GATEWAY ideal-int +pkg syscall (darwin-amd64-cgo), const RTF_HOST ideal-int +pkg syscall (darwin-amd64-cgo), const RTF_IFREF ideal-int +pkg syscall (darwin-amd64-cgo), const RTF_IFSCOPE ideal-int +pkg syscall (darwin-amd64-cgo), const RTF_LLINFO ideal-int +pkg syscall (darwin-amd64-cgo), const RTF_LOCAL ideal-int +pkg syscall (darwin-amd64-cgo), const RTF_MODIFIED ideal-int +pkg syscall (darwin-amd64-cgo), const RTF_MULTICAST ideal-int +pkg syscall (darwin-amd64-cgo), const RTF_PINNED ideal-int +pkg syscall (darwin-amd64-cgo), const RTF_PRCLONING ideal-int +pkg syscall (darwin-amd64-cgo), const RTF_PROTO1 ideal-int +pkg syscall (darwin-amd64-cgo), const RTF_PROTO2 ideal-int +pkg syscall (darwin-amd64-cgo), const RTF_PROTO3 ideal-int +pkg syscall (darwin-amd64-cgo), const RTF_REJECT ideal-int +pkg syscall (darwin-amd64-cgo), const RTF_STATIC ideal-int +pkg syscall (darwin-amd64-cgo), const RTF_UP ideal-int +pkg syscall (darwin-amd64-cgo), const RTF_WASCLONED ideal-int +pkg syscall (darwin-amd64-cgo), const RTF_XRESOLVE ideal-int +pkg syscall (darwin-amd64-cgo), const RTM_ADD ideal-int +pkg syscall (darwin-amd64-cgo), const RTM_CHANGE ideal-int +pkg syscall (darwin-amd64-cgo), const RTM_DELADDR ideal-int +pkg syscall (darwin-amd64-cgo), const RTM_DELETE ideal-int +pkg syscall (darwin-amd64-cgo), const RTM_DELMADDR ideal-int +pkg syscall (darwin-amd64-cgo), const RTM_GET ideal-int +pkg syscall (darwin-amd64-cgo), const RTM_GET2 ideal-int +pkg syscall (darwin-amd64-cgo), const RTM_IFINFO ideal-int +pkg syscall (darwin-amd64-cgo), const RTM_IFINFO2 ideal-int +pkg syscall (darwin-amd64-cgo), const RTM_LOCK ideal-int +pkg syscall (darwin-amd64-cgo), const RTM_LOSING ideal-int +pkg syscall (darwin-amd64-cgo), const RTM_MISS ideal-int +pkg syscall (darwin-amd64-cgo), const RTM_NEWADDR ideal-int +pkg syscall (darwin-amd64-cgo), const RTM_NEWMADDR ideal-int +pkg syscall (darwin-amd64-cgo), const RTM_NEWMADDR2 ideal-int +pkg syscall (darwin-amd64-cgo), const RTM_OLDADD ideal-int +pkg syscall (darwin-amd64-cgo), const RTM_OLDDEL ideal-int +pkg syscall (darwin-amd64-cgo), const RTM_REDIRECT ideal-int +pkg syscall (darwin-amd64-cgo), const RTM_RESOLVE ideal-int +pkg syscall (darwin-amd64-cgo), const RTM_RTTUNIT ideal-int +pkg syscall (darwin-amd64-cgo), const RTM_VERSION ideal-int +pkg syscall (darwin-amd64-cgo), const RTV_EXPIRE ideal-int +pkg syscall (darwin-amd64-cgo), const RTV_HOPCOUNT ideal-int +pkg syscall (darwin-amd64-cgo), const RTV_MTU ideal-int +pkg syscall (darwin-amd64-cgo), const RTV_RPIPE ideal-int +pkg syscall (darwin-amd64-cgo), const RTV_RTT ideal-int +pkg syscall (darwin-amd64-cgo), const RTV_RTTVAR ideal-int +pkg syscall (darwin-amd64-cgo), const RTV_SPIPE ideal-int +pkg syscall (darwin-amd64-cgo), const RTV_SSTHRESH ideal-int +pkg syscall (darwin-amd64-cgo), const RUSAGE_CHILDREN ideal-int +pkg syscall (darwin-amd64-cgo), const RUSAGE_SELF ideal-int +pkg syscall (darwin-amd64-cgo), const SCM_CREDS ideal-int +pkg syscall (darwin-amd64-cgo), const SCM_RIGHTS ideal-int +pkg syscall (darwin-amd64-cgo), const SCM_TIMESTAMP ideal-int +pkg syscall (darwin-amd64-cgo), const SCM_TIMESTAMP_MONOTONIC ideal-int +pkg syscall (darwin-amd64-cgo), const SIGCHLD Signal +pkg syscall (darwin-amd64-cgo), const SIGCONT Signal +pkg syscall (darwin-amd64-cgo), const SIGEMT Signal +pkg syscall (darwin-amd64-cgo), const SIGINFO Signal +pkg syscall (darwin-amd64-cgo), const SIGIO Signal +pkg syscall (darwin-amd64-cgo), const SIGIOT Signal +pkg syscall (darwin-amd64-cgo), const SIGPROF Signal +pkg syscall (darwin-amd64-cgo), const SIGSTOP Signal +pkg syscall (darwin-amd64-cgo), const SIGSYS Signal +pkg syscall (darwin-amd64-cgo), const SIGTSTP Signal +pkg syscall (darwin-amd64-cgo), const SIGTTIN Signal +pkg syscall (darwin-amd64-cgo), const SIGTTOU Signal +pkg syscall (darwin-amd64-cgo), const SIGURG Signal +pkg syscall (darwin-amd64-cgo), const SIGUSR1 Signal +pkg syscall (darwin-amd64-cgo), const SIGUSR2 Signal +pkg syscall (darwin-amd64-cgo), const SIGVTALRM Signal +pkg syscall (darwin-amd64-cgo), const SIGWINCH Signal +pkg syscall (darwin-amd64-cgo), const SIGXCPU Signal +pkg syscall (darwin-amd64-cgo), const SIGXFSZ Signal +pkg syscall (darwin-amd64-cgo), const SIOCADDMULTI ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCAIFADDR ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCALIFADDR ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCARPIPLL ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCATMARK ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCAUTOADDR ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCAUTONETMASK ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCDELMULTI ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCDIFADDR ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCDIFPHYADDR ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCDLIFADDR ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCGDRVSPEC ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCGETSGCNT ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCGETVIFCNT ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCGETVLAN ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCGHIWAT ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCGIFADDR ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCGIFALTMTU ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCGIFASYNCMAP ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCGIFBOND ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCGIFBRDADDR ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCGIFCAP ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCGIFCONF ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCGIFDEVMTU ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCGIFDSTADDR ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCGIFFLAGS ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCGIFGENERIC ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCGIFKPI ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCGIFMAC ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCGIFMEDIA ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCGIFMETRIC ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCGIFMTU ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCGIFNETMASK ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCGIFPDSTADDR ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCGIFPHYS ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCGIFPSRCADDR ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCGIFSTATUS ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCGIFVLAN ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCGIFWAKEFLAGS ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCGLIFADDR ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCGLIFPHYADDR ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCGLOWAT ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCGPGRP ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCIFCREATE ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCIFCREATE2 ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCIFDESTROY ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCRSLVMULTI ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCSDRVSPEC ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCSETVLAN ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCSHIWAT ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCSIFADDR ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCSIFALTMTU ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCSIFASYNCMAP ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCSIFBOND ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCSIFBRDADDR ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCSIFCAP ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCSIFDSTADDR ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCSIFFLAGS ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCSIFGENERIC ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCSIFKPI ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCSIFLLADDR ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCSIFMAC ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCSIFMEDIA ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCSIFMETRIC ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCSIFMTU ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCSIFNETMASK ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCSIFPHYADDR ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCSIFPHYS ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCSIFVLAN ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCSLIFPHYADDR ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCSLOWAT ideal-int +pkg syscall (darwin-amd64-cgo), const SIOCSPGRP ideal-int +pkg syscall (darwin-amd64-cgo), const SOCK_MAXADDRLEN ideal-int +pkg syscall (darwin-amd64-cgo), const SOCK_RDM ideal-int +pkg syscall (darwin-amd64-cgo), const SO_ACCEPTCONN ideal-int +pkg syscall (darwin-amd64-cgo), const SO_DEBUG ideal-int +pkg syscall (darwin-amd64-cgo), const SO_DONTTRUNC ideal-int +pkg syscall (darwin-amd64-cgo), const SO_ERROR ideal-int +pkg syscall (darwin-amd64-cgo), const SO_LABEL ideal-int +pkg syscall (darwin-amd64-cgo), const SO_LINGER_SEC ideal-int +pkg syscall (darwin-amd64-cgo), const SO_NKE ideal-int +pkg syscall (darwin-amd64-cgo), const SO_NOADDRERR ideal-int +pkg syscall (darwin-amd64-cgo), const SO_NOSIGPIPE ideal-int +pkg syscall (darwin-amd64-cgo), const SO_NOTIFYCONFLICT ideal-int +pkg syscall (darwin-amd64-cgo), const SO_NP_EXTENSIONS ideal-int +pkg syscall (darwin-amd64-cgo), const SO_NREAD ideal-int +pkg syscall (darwin-amd64-cgo), const SO_NWRITE ideal-int +pkg syscall (darwin-amd64-cgo), const SO_OOBINLINE ideal-int +pkg syscall (darwin-amd64-cgo), const SO_PEERLABEL ideal-int +pkg syscall (darwin-amd64-cgo), const SO_RANDOMPORT ideal-int +pkg syscall (darwin-amd64-cgo), const SO_RCVLOWAT ideal-int +pkg syscall (darwin-amd64-cgo), const SO_RCVTIMEO ideal-int +pkg syscall (darwin-amd64-cgo), const SO_RESTRICTIONS ideal-int +pkg syscall (darwin-amd64-cgo), const SO_RESTRICT_DENYIN ideal-int +pkg syscall (darwin-amd64-cgo), const SO_RESTRICT_DENYOUT ideal-int +pkg syscall (darwin-amd64-cgo), const SO_RESTRICT_DENYSET ideal-int +pkg syscall (darwin-amd64-cgo), const SO_REUSEPORT ideal-int +pkg syscall (darwin-amd64-cgo), const SO_REUSESHAREUID ideal-int +pkg syscall (darwin-amd64-cgo), const SO_SNDLOWAT ideal-int +pkg syscall (darwin-amd64-cgo), const SO_SNDTIMEO ideal-int +pkg syscall (darwin-amd64-cgo), const SO_TIMESTAMP ideal-int +pkg syscall (darwin-amd64-cgo), const SO_TIMESTAMP_MONOTONIC ideal-int +pkg syscall (darwin-amd64-cgo), const SO_TYPE ideal-int +pkg syscall (darwin-amd64-cgo), const SO_UPCALLCLOSEWAIT ideal-int +pkg syscall (darwin-amd64-cgo), const SO_USELOOPBACK ideal-int +pkg syscall (darwin-amd64-cgo), const SO_WANTMORE ideal-int +pkg syscall (darwin-amd64-cgo), const SO_WANTOOBFLAG ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_ACCEPT ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_ACCEPT_NOCANCEL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_ACCESS ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_ACCESS_EXTENDED ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_ACCT ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_ADD_PROFIL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_ADJTIME ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_AIO_CANCEL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_AIO_ERROR ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_AIO_FSYNC ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_AIO_READ ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_AIO_RETURN ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_AIO_SUSPEND ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_AIO_SUSPEND_NOCANCEL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_AIO_WRITE ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_ATGETMSG ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_ATPGETREQ ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_ATPGETRSP ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_ATPSNDREQ ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_ATPSNDRSP ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_ATPUTMSG ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_ATSOCKET ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_AUDIT ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_AUDITCTL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_AUDITON ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_AUDIT_SESSION_JOIN ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_AUDIT_SESSION_PORT ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_AUDIT_SESSION_SELF ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_BIND ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_BSDTHREAD_CREATE ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_BSDTHREAD_REGISTER ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_BSDTHREAD_TERMINATE ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_CHDIR ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_CHFLAGS ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_CHMOD ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_CHMOD_EXTENDED ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_CHOWN ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_CHROOT ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_CHUD ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_CLOSE ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_CLOSE_NOCANCEL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_CONNECT ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_CONNECT_NOCANCEL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_COPYFILE ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_CSOPS ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_DELETE ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_DUP ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_DUP2 ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_EXCHANGEDATA ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_EXECVE ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_EXIT ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_FCHDIR ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_FCHFLAGS ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_FCHMOD ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_FCHMOD_EXTENDED ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_FCHOWN ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_FCNTL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_FCNTL_NOCANCEL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_FDATASYNC ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_FFSCTL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_FGETATTRLIST ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_FGETXATTR ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_FHOPEN ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_FILEPORT_MAKEFD ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_FILEPORT_MAKEPORT ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_FLISTXATTR ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_FLOCK ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_FORK ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_FPATHCONF ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_FREMOVEXATTR ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_FSCTL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_FSETATTRLIST ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_FSETXATTR ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_FSGETPATH ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_FSTAT ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_FSTAT64 ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_FSTAT64_EXTENDED ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_FSTATFS ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_FSTATFS64 ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_FSTATV ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_FSTAT_EXTENDED ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_FSYNC ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_FSYNC_NOCANCEL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_FTRUNCATE ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_FUTIMES ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_GETATTRLIST ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_GETAUDIT ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_GETAUDIT_ADDR ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_GETAUID ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_GETDIRENTRIES ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_GETDIRENTRIES64 ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_GETDIRENTRIESATTR ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_GETDTABLESIZE ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_GETEGID ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_GETEUID ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_GETFH ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_GETFSSTAT ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_GETFSSTAT64 ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_GETGID ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_GETGROUPS ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_GETHOSTUUID ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_GETITIMER ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_GETLCID ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_GETLOGIN ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_GETPEERNAME ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_GETPGID ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_GETPGRP ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_GETPID ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_GETPPID ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_GETPRIORITY ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_GETRLIMIT ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_GETRUSAGE ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_GETSGROUPS ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_GETSID ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_GETSOCKNAME ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_GETSOCKOPT ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_GETTID ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_GETTIMEOFDAY ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_GETUID ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_GETWGROUPS ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_GETXATTR ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_IDENTITYSVC ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_INITGROUPS ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_IOCTL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_IOPOLICYSYS ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_ISSETUGID ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_KDEBUG_TRACE ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_KEVENT ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_KEVENT64 ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_KILL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_KQUEUE ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_LCHOWN ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_LINK ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_LIO_LISTIO ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_LISTEN ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_LISTXATTR ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_LSEEK ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_LSTAT ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_LSTAT64 ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_LSTAT64_EXTENDED ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_LSTATV ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_LSTAT_EXTENDED ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_MADVISE ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_MAXSYSCALL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_MINCORE ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_MINHERIT ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_MKCOMPLEX ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_MKDIR ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_MKDIR_EXTENDED ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_MKFIFO ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_MKFIFO_EXTENDED ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_MKNOD ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_MLOCK ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_MLOCKALL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_MMAP ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_MODWATCH ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_MOUNT ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_MPROTECT ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_MSGCTL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_MSGGET ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_MSGRCV ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_MSGRCV_NOCANCEL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_MSGSND ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_MSGSND_NOCANCEL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_MSGSYS ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_MSYNC ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_MSYNC_NOCANCEL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_MUNLOCK ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_MUNLOCKALL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_MUNMAP ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_NFSCLNT ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_NFSSVC ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_OPEN ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_OPEN_EXTENDED ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_OPEN_NOCANCEL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_PATHCONF ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_PID_HIBERNATE ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_PID_RESUME ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_PID_SHUTDOWN_SOCKETS ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_PID_SUSPEND ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_PIPE ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_POLL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_POLL_NOCANCEL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_POSIX_SPAWN ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_PREAD ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_PREAD_NOCANCEL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_PROCESS_POLICY ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_PROC_INFO ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_PROFIL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_PSYNCH_CVBROAD ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_PSYNCH_CVCLRPREPOST ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_PSYNCH_CVSIGNAL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_PSYNCH_CVWAIT ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_PSYNCH_MUTEXDROP ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_PSYNCH_MUTEXWAIT ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_PSYNCH_RW_DOWNGRADE ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_PSYNCH_RW_LONGRDLOCK ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_PSYNCH_RW_RDLOCK ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_PSYNCH_RW_UNLOCK ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_PSYNCH_RW_UNLOCK2 ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_PSYNCH_RW_UPGRADE ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_PSYNCH_RW_WRLOCK ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_PSYNCH_RW_YIELDWRLOCK ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_PTRACE ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_PWRITE ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_PWRITE_NOCANCEL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_QUOTACTL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_READ ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_READLINK ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_READV ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_READV_NOCANCEL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_READ_NOCANCEL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_REBOOT ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_RECVFROM ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_RECVFROM_NOCANCEL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_RECVMSG ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_RECVMSG_NOCANCEL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_REMOVEXATTR ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_RENAME ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_REVOKE ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_RMDIR ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SEARCHFS ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SELECT ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SELECT_NOCANCEL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SEMCTL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SEMGET ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SEMOP ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SEMSYS ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SEM_CLOSE ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SEM_DESTROY ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SEM_GETVALUE ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SEM_INIT ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SEM_OPEN ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SEM_POST ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SEM_TRYWAIT ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SEM_UNLINK ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SEM_WAIT ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SEM_WAIT_NOCANCEL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SENDFILE ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SENDMSG ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SENDMSG_NOCANCEL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SENDTO ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SENDTO_NOCANCEL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SETATTRLIST ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SETAUDIT ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SETAUDIT_ADDR ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SETAUID ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SETEGID ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SETEUID ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SETGID ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SETGROUPS ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SETITIMER ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SETLCID ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SETLOGIN ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SETPGID ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SETPRIORITY ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SETPRIVEXEC ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SETREGID ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SETREUID ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SETRLIMIT ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SETSGROUPS ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SETSID ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SETSOCKOPT ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SETTID ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SETTID_WITH_PID ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SETTIMEOFDAY ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SETUID ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SETWGROUPS ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SETXATTR ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SHARED_REGION_CHECK_NP ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SHARED_REGION_MAP_AND_SLIDE_NP ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SHMAT ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SHMCTL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SHMDT ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SHMGET ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SHMSYS ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SHM_OPEN ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SHM_UNLINK ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SHUTDOWN ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SIGACTION ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SIGALTSTACK ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SIGPENDING ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SIGPROCMASK ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SIGRETURN ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SIGSUSPEND ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SIGSUSPEND_NOCANCEL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SOCKET ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SOCKETPAIR ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_STACK_SNAPSHOT ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_STAT ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_STAT64 ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_STAT64_EXTENDED ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_STATFS ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_STATFS64 ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_STATV ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_STAT_EXTENDED ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SWAPON ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SYMLINK ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SYNC ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_SYSCALL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_THREAD_SELFID ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_TRUNCATE ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_UMASK ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_UMASK_EXTENDED ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_UNDELETE ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_UNLINK ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_UNMOUNT ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_UTIMES ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_VFORK ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_VM_PRESSURE_MONITOR ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_WAIT4 ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_WAIT4_NOCANCEL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_WAITEVENT ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_WAITID ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_WAITID_NOCANCEL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_WATCHEVENT ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_WORKQ_KERNRETURN ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_WORKQ_OPEN ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_WRITE ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_WRITEV ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_WRITEV_NOCANCEL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS_WRITE_NOCANCEL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS___DISABLE_THREADSIGNAL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS___MAC_EXECVE ideal-int +pkg syscall (darwin-amd64-cgo), const SYS___MAC_GETFSSTAT ideal-int +pkg syscall (darwin-amd64-cgo), const SYS___MAC_GET_FD ideal-int +pkg syscall (darwin-amd64-cgo), const SYS___MAC_GET_FILE ideal-int +pkg syscall (darwin-amd64-cgo), const SYS___MAC_GET_LCID ideal-int +pkg syscall (darwin-amd64-cgo), const SYS___MAC_GET_LCTX ideal-int +pkg syscall (darwin-amd64-cgo), const SYS___MAC_GET_LINK ideal-int +pkg syscall (darwin-amd64-cgo), const SYS___MAC_GET_MOUNT ideal-int +pkg syscall (darwin-amd64-cgo), const SYS___MAC_GET_PID ideal-int +pkg syscall (darwin-amd64-cgo), const SYS___MAC_GET_PROC ideal-int +pkg syscall (darwin-amd64-cgo), const SYS___MAC_MOUNT ideal-int +pkg syscall (darwin-amd64-cgo), const SYS___MAC_SET_FD ideal-int +pkg syscall (darwin-amd64-cgo), const SYS___MAC_SET_FILE ideal-int +pkg syscall (darwin-amd64-cgo), const SYS___MAC_SET_LCTX ideal-int +pkg syscall (darwin-amd64-cgo), const SYS___MAC_SET_LINK ideal-int +pkg syscall (darwin-amd64-cgo), const SYS___MAC_SET_PROC ideal-int +pkg syscall (darwin-amd64-cgo), const SYS___MAC_SYSCALL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS___OLD_SEMWAIT_SIGNAL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS___PTHREAD_CANCELED ideal-int +pkg syscall (darwin-amd64-cgo), const SYS___PTHREAD_CHDIR ideal-int +pkg syscall (darwin-amd64-cgo), const SYS___PTHREAD_FCHDIR ideal-int +pkg syscall (darwin-amd64-cgo), const SYS___PTHREAD_KILL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS___PTHREAD_MARKCANCEL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS___PTHREAD_SIGMASK ideal-int +pkg syscall (darwin-amd64-cgo), const SYS___SEMWAIT_SIGNAL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS___SEMWAIT_SIGNAL_NOCANCEL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS___SIGWAIT ideal-int +pkg syscall (darwin-amd64-cgo), const SYS___SIGWAIT_NOCANCEL ideal-int +pkg syscall (darwin-amd64-cgo), const SYS___SYSCTL ideal-int +pkg syscall (darwin-amd64-cgo), const S_IEXEC ideal-int +pkg syscall (darwin-amd64-cgo), const S_IFWHT ideal-int +pkg syscall (darwin-amd64-cgo), const S_IREAD ideal-int +pkg syscall (darwin-amd64-cgo), const S_IRGRP ideal-int +pkg syscall (darwin-amd64-cgo), const S_IROTH ideal-int +pkg syscall (darwin-amd64-cgo), const S_IRWXG ideal-int +pkg syscall (darwin-amd64-cgo), const S_IRWXO ideal-int +pkg syscall (darwin-amd64-cgo), const S_IRWXU ideal-int +pkg syscall (darwin-amd64-cgo), const S_ISTXT ideal-int +pkg syscall (darwin-amd64-cgo), const S_IWGRP ideal-int +pkg syscall (darwin-amd64-cgo), const S_IWOTH ideal-int +pkg syscall (darwin-amd64-cgo), const S_IXGRP ideal-int +pkg syscall (darwin-amd64-cgo), const S_IXOTH ideal-int +pkg syscall (darwin-amd64-cgo), const SizeofBpfHdr ideal-int +pkg syscall (darwin-amd64-cgo), const SizeofBpfInsn ideal-int +pkg syscall (darwin-amd64-cgo), const SizeofBpfProgram ideal-int +pkg syscall (darwin-amd64-cgo), const SizeofBpfStat ideal-int +pkg syscall (darwin-amd64-cgo), const SizeofBpfVersion ideal-int +pkg syscall (darwin-amd64-cgo), const SizeofCmsghdr ideal-int +pkg syscall (darwin-amd64-cgo), const SizeofIPMreq ideal-int +pkg syscall (darwin-amd64-cgo), const SizeofIPv6Mreq ideal-int +pkg syscall (darwin-amd64-cgo), const SizeofIfData ideal-int +pkg syscall (darwin-amd64-cgo), const SizeofIfMsghdr ideal-int +pkg syscall (darwin-amd64-cgo), const SizeofIfaMsghdr ideal-int +pkg syscall (darwin-amd64-cgo), const SizeofIfmaMsghdr ideal-int +pkg syscall (darwin-amd64-cgo), const SizeofIfmaMsghdr2 ideal-int +pkg syscall (darwin-amd64-cgo), const SizeofInet6Pktinfo ideal-int +pkg syscall (darwin-amd64-cgo), const SizeofLinger ideal-int +pkg syscall (darwin-amd64-cgo), const SizeofMsghdr ideal-int +pkg syscall (darwin-amd64-cgo), const SizeofRtMetrics ideal-int +pkg syscall (darwin-amd64-cgo), const SizeofRtMsghdr ideal-int +pkg syscall (darwin-amd64-cgo), const SizeofSockaddrAny ideal-int +pkg syscall (darwin-amd64-cgo), const SizeofSockaddrDatalink ideal-int +pkg syscall (darwin-amd64-cgo), const SizeofSockaddrInet4 ideal-int +pkg syscall (darwin-amd64-cgo), const SizeofSockaddrInet6 ideal-int +pkg syscall (darwin-amd64-cgo), const SizeofSockaddrUnix ideal-int +pkg syscall (darwin-amd64-cgo), const TCP_CONNECTIONTIMEOUT ideal-int +pkg syscall (darwin-amd64-cgo), const TCP_KEEPALIVE ideal-int +pkg syscall (darwin-amd64-cgo), const TCP_MAXHLEN ideal-int +pkg syscall (darwin-amd64-cgo), const TCP_MAXOLEN ideal-int +pkg syscall (darwin-amd64-cgo), const TCP_MAXSEG ideal-int +pkg syscall (darwin-amd64-cgo), const TCP_MAXWIN ideal-int +pkg syscall (darwin-amd64-cgo), const TCP_MAX_SACK ideal-int +pkg syscall (darwin-amd64-cgo), const TCP_MAX_WINSHIFT ideal-int +pkg syscall (darwin-amd64-cgo), const TCP_MINMSS ideal-int +pkg syscall (darwin-amd64-cgo), const TCP_MINMSSOVERLOAD ideal-int +pkg syscall (darwin-amd64-cgo), const TCP_MSS ideal-int +pkg syscall (darwin-amd64-cgo), const TCP_NOOPT ideal-int +pkg syscall (darwin-amd64-cgo), const TCP_NOPUSH ideal-int +pkg syscall (darwin-amd64-cgo), const TCP_RXT_CONNDROPTIME ideal-int +pkg syscall (darwin-amd64-cgo), const TCP_RXT_FINDROP ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCCBRK ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCCDTR ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCCONS ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCDCDTIMESTAMP ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCDRAIN ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCDSIMICROCODE ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCEXCL ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCEXT ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCFLUSH ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCGDRAINWAIT ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCGETA ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCGETD ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCGPGRP ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCGWINSZ ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCIXOFF ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCIXON ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCMBIC ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCMBIS ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCMGDTRWAIT ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCMGET ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCMODG ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCMODS ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCMSDTRWAIT ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCMSET ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCM_CAR ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCM_CD ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCM_CTS ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCM_DSR ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCM_DTR ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCM_LE ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCM_RI ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCM_RNG ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCM_RTS ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCM_SR ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCM_ST ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCNOTTY ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCNXCL ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCOUTQ ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCPKT ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCPKT_DATA ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCPKT_DOSTOP ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCPKT_FLUSHREAD ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCPKT_FLUSHWRITE ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCPKT_IOCTL ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCPKT_NOSTOP ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCPKT_START ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCPKT_STOP ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCPTYGNAME ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCPTYGRANT ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCPTYUNLK ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCREMOTE ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCSBRK ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCSCONS ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCSCTTY ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCSDRAINWAIT ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCSDTR ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCSETA ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCSETAF ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCSETAW ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCSETD ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCSIG ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCSPGRP ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCSTART ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCSTAT ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCSTI ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCSTOP ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCSWINSZ ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCTIMESTAMP ideal-int +pkg syscall (darwin-amd64-cgo), const TIOCUCNTL ideal-int +pkg syscall (darwin-amd64-cgo), const WCONTINUED ideal-int +pkg syscall (darwin-amd64-cgo), const WCOREFLAG ideal-int +pkg syscall (darwin-amd64-cgo), const WEXITED ideal-int +pkg syscall (darwin-amd64-cgo), const WNOHANG ideal-int +pkg syscall (darwin-amd64-cgo), const WNOWAIT ideal-int +pkg syscall (darwin-amd64-cgo), const WORDSIZE ideal-int +pkg syscall (darwin-amd64-cgo), const WSTOPPED ideal-int +pkg syscall (darwin-amd64-cgo), const WUNTRACED ideal-int +pkg syscall (darwin-amd64-cgo), func Accept(int) (int, Sockaddr, error) +pkg syscall (darwin-amd64-cgo), func Access(string, uint32) error +pkg syscall (darwin-amd64-cgo), func Adjtime(*Timeval, *Timeval) error +pkg syscall (darwin-amd64-cgo), func Bind(int, Sockaddr) error +pkg syscall (darwin-amd64-cgo), func BpfBuflen(int) (int, error) +pkg syscall (darwin-amd64-cgo), func BpfDatalink(int) (int, error) +pkg syscall (darwin-amd64-cgo), func BpfHeadercmpl(int) (int, error) +pkg syscall (darwin-amd64-cgo), func BpfInterface(int, string) (string, error) +pkg syscall (darwin-amd64-cgo), func BpfJump(int) *BpfInsn +pkg syscall (darwin-amd64-cgo), func BpfStats(int) (*BpfStat, error) +pkg syscall (darwin-amd64-cgo), func BpfStmt(int) *BpfInsn +pkg syscall (darwin-amd64-cgo), func BpfTimeout(int) (*Timeval, error) +pkg syscall (darwin-amd64-cgo), func CheckBpfVersion(int) error +pkg syscall (darwin-amd64-cgo), func Chflags(string, int) error +pkg syscall (darwin-amd64-cgo), func Chroot(string) error +pkg syscall (darwin-amd64-cgo), func Close(int) error +pkg syscall (darwin-amd64-cgo), func CloseOnExec(int) +pkg syscall (darwin-amd64-cgo), func CmsgLen(int) int +pkg syscall (darwin-amd64-cgo), func CmsgSpace(int) int +pkg syscall (darwin-amd64-cgo), func Connect(int, Sockaddr) error +pkg syscall (darwin-amd64-cgo), func Dup(int) (int, error) +pkg syscall (darwin-amd64-cgo), func Dup2(int, int) error +pkg syscall (darwin-amd64-cgo), func Exchangedata(string, string, int) error +pkg syscall (darwin-amd64-cgo), func Fchdir(int) error +pkg syscall (darwin-amd64-cgo), func Fchflags(string, int) error +pkg syscall (darwin-amd64-cgo), func Fchmod(int, uint32) error +pkg syscall (darwin-amd64-cgo), func Fchown(int, int, int) error +pkg syscall (darwin-amd64-cgo), func Flock(int, int) error +pkg syscall (darwin-amd64-cgo), func FlushBpf(int) error +pkg syscall (darwin-amd64-cgo), func ForkExec(string, []string, *ProcAttr) (int, error) +pkg syscall (darwin-amd64-cgo), func Fpathconf(int, int) (int, error) +pkg syscall (darwin-amd64-cgo), func Fstat(int, *Stat_t) error +pkg syscall (darwin-amd64-cgo), func Fstatfs(int, *Statfs_t) error +pkg syscall (darwin-amd64-cgo), func Fsync(int) error +pkg syscall (darwin-amd64-cgo), func Ftruncate(int, int64) error +pkg syscall (darwin-amd64-cgo), func Futimes(int, []Timeval) error +pkg syscall (darwin-amd64-cgo), func Getdirentries(int, []byte, *uintptr) (int, error) +pkg syscall (darwin-amd64-cgo), func Getdtablesize() int +pkg syscall (darwin-amd64-cgo), func Getfsstat([]Statfs_t, int) (int, error) +pkg syscall (darwin-amd64-cgo), func Getpeername(int) (Sockaddr, error) +pkg syscall (darwin-amd64-cgo), func Getpgid(int) (int, error) +pkg syscall (darwin-amd64-cgo), func Getpgrp() int +pkg syscall (darwin-amd64-cgo), func Getpriority(int, int) (int, error) +pkg syscall (darwin-amd64-cgo), func Getrlimit(int, *Rlimit) error +pkg syscall (darwin-amd64-cgo), func Getrusage(int, *Rusage) error +pkg syscall (darwin-amd64-cgo), func Getsid(int) (int, error) +pkg syscall (darwin-amd64-cgo), func Getsockname(int) (Sockaddr, error) +pkg syscall (darwin-amd64-cgo), func GetsockoptByte(int) (byte, error) +pkg syscall (darwin-amd64-cgo), func GetsockoptIPMreq(int) (*IPMreq, error) +pkg syscall (darwin-amd64-cgo), func GetsockoptIPv6Mreq(int) (*IPv6Mreq, error) +pkg syscall (darwin-amd64-cgo), func GetsockoptInet4Addr(int) ([4]byte, error) +pkg syscall (darwin-amd64-cgo), func GetsockoptInt(int) (int, error) +pkg syscall (darwin-amd64-cgo), func Issetugid() bool +pkg syscall (darwin-amd64-cgo), func Kevent(int, []Kevent_t, *Timespec) (int, error) +pkg syscall (darwin-amd64-cgo), func Kill(int, Signal) error +pkg syscall (darwin-amd64-cgo), func Kqueue() (int, error) +pkg syscall (darwin-amd64-cgo), func Link(string, string) error +pkg syscall (darwin-amd64-cgo), func Listen(int, int) error +pkg syscall (darwin-amd64-cgo), func Lstat(string, *Stat_t) error +pkg syscall (darwin-amd64-cgo), func Mkfifo(string, uint32) error +pkg syscall (darwin-amd64-cgo), func Mknod(string, uint32, int) error +pkg syscall (darwin-amd64-cgo), func Mmap(int, int64, int, int, int) ([]byte, error) +pkg syscall (darwin-amd64-cgo), func Munmap([]byte) error +pkg syscall (darwin-amd64-cgo), func NsecToTimespec(int64) Timespec +pkg syscall (darwin-amd64-cgo), func Open(string, int, uint32) (int, error) +pkg syscall (darwin-amd64-cgo), func ParseDirent([]byte, int, []string) (int, int, []string) +pkg syscall (darwin-amd64-cgo), func ParseRoutingMessage([]byte) ([]RoutingMessage, error) +pkg syscall (darwin-amd64-cgo), func ParseRoutingSockaddr(RoutingMessage) ([]Sockaddr, error) +pkg syscall (darwin-amd64-cgo), func ParseSocketControlMessage([]byte) ([]SocketControlMessage, error) +pkg syscall (darwin-amd64-cgo), func ParseUnixRights(*SocketControlMessage) ([]int, error) +pkg syscall (darwin-amd64-cgo), func Pathconf(string, int) (int, error) +pkg syscall (darwin-amd64-cgo), func Pipe([]int) error +pkg syscall (darwin-amd64-cgo), func Pread(int, []byte, int64) (int, error) +pkg syscall (darwin-amd64-cgo), func PtraceAttach(int) error +pkg syscall (darwin-amd64-cgo), func PtraceDetach(int) error +pkg syscall (darwin-amd64-cgo), func Pwrite(int, []byte, int64) (int, error) +pkg syscall (darwin-amd64-cgo), func RawSyscall(uintptr) (uintptr, Errno) +pkg syscall (darwin-amd64-cgo), func RawSyscall6(uintptr) (uintptr, Errno) +pkg syscall (darwin-amd64-cgo), func Read(int, []byte) (int, error) +pkg syscall (darwin-amd64-cgo), func ReadDirent(int, []byte) (int, error) +pkg syscall (darwin-amd64-cgo), func Recvfrom(int, []byte, int) (int, Sockaddr, error) +pkg syscall (darwin-amd64-cgo), func Recvmsg(int, []byte, int) (int, int, Sockaddr, error) +pkg syscall (darwin-amd64-cgo), func Rename(string, string) error +pkg syscall (darwin-amd64-cgo), func Revoke(string) error +pkg syscall (darwin-amd64-cgo), func RouteRIB(int) ([]byte, error) +pkg syscall (darwin-amd64-cgo), func Seek(int, int64, int) (int64, error) +pkg syscall (darwin-amd64-cgo), func Select(int, *FdSet, *FdSet, *FdSet, *Timeval) error +pkg syscall (darwin-amd64-cgo), func Sendfile(int, int, *int64, int) (int, error) +pkg syscall (darwin-amd64-cgo), func Sendmsg(int, []byte, Sockaddr, int) error +pkg syscall (darwin-amd64-cgo), func Sendto(int, []byte, int, Sockaddr) error +pkg syscall (darwin-amd64-cgo), func SetBpf(int, []BpfInsn) error +pkg syscall (darwin-amd64-cgo), func SetBpfBuflen(int) (int, error) +pkg syscall (darwin-amd64-cgo), func SetBpfDatalink(int) (int, error) +pkg syscall (darwin-amd64-cgo), func SetBpfHeadercmpl(int) error +pkg syscall (darwin-amd64-cgo), func SetBpfImmediate(int) error +pkg syscall (darwin-amd64-cgo), func SetBpfInterface(int, string) error +pkg syscall (darwin-amd64-cgo), func SetBpfPromisc(int) error +pkg syscall (darwin-amd64-cgo), func SetBpfTimeout(int, *Timeval) error +pkg syscall (darwin-amd64-cgo), func SetKevent(*Kevent_t, int) +pkg syscall (darwin-amd64-cgo), func SetNonblock(int, bool) error +pkg syscall (darwin-amd64-cgo), func Setegid(int) error +pkg syscall (darwin-amd64-cgo), func Seteuid(int) error +pkg syscall (darwin-amd64-cgo), func Setgid(int) error +pkg syscall (darwin-amd64-cgo), func Setgroups([]int) error +pkg syscall (darwin-amd64-cgo), func Setlogin(string) error +pkg syscall (darwin-amd64-cgo), func Setpgid(int, int) error +pkg syscall (darwin-amd64-cgo), func Setpriority(int, int, int) error +pkg syscall (darwin-amd64-cgo), func Setprivexec(int) error +pkg syscall (darwin-amd64-cgo), func Setregid(int, int) error +pkg syscall (darwin-amd64-cgo), func Setreuid(int, int) error +pkg syscall (darwin-amd64-cgo), func Setrlimit(int, *Rlimit) error +pkg syscall (darwin-amd64-cgo), func Setsid() (int, error) +pkg syscall (darwin-amd64-cgo), func SetsockoptByte(int, byte) error +pkg syscall (darwin-amd64-cgo), func SetsockoptIPMreq(int, *IPMreq) error +pkg syscall (darwin-amd64-cgo), func SetsockoptIPv6Mreq(int, *IPv6Mreq) error +pkg syscall (darwin-amd64-cgo), func SetsockoptInet4Addr(int, [4]byte) error +pkg syscall (darwin-amd64-cgo), func SetsockoptInt(int, int) error +pkg syscall (darwin-amd64-cgo), func SetsockoptLinger(int, *Linger) error +pkg syscall (darwin-amd64-cgo), func SetsockoptString(int, string) error +pkg syscall (darwin-amd64-cgo), func SetsockoptTimeval(int, *Timeval) error +pkg syscall (darwin-amd64-cgo), func Settimeofday(*Timeval) error +pkg syscall (darwin-amd64-cgo), func Setuid(int) error +pkg syscall (darwin-amd64-cgo), func Shutdown(int, int) error +pkg syscall (darwin-amd64-cgo), func Socket(int) (int, error) +pkg syscall (darwin-amd64-cgo), func Socketpair(int) ([2]int, error) +pkg syscall (darwin-amd64-cgo), func Stat(string, *Stat_t) error +pkg syscall (darwin-amd64-cgo), func Statfs(string, *Statfs_t) error +pkg syscall (darwin-amd64-cgo), func StringSlicePtr([]string) []*byte +pkg syscall (darwin-amd64-cgo), func Symlink(string, string) error +pkg syscall (darwin-amd64-cgo), func Sync() error +pkg syscall (darwin-amd64-cgo), func Sysctl(string) (string, error) +pkg syscall (darwin-amd64-cgo), func SysctlUint32(string) (uint32, error) +pkg syscall (darwin-amd64-cgo), func TimespecToNsec(Timespec) int64 +pkg syscall (darwin-amd64-cgo), func TimevalToNsec(Timeval) int64 +pkg syscall (darwin-amd64-cgo), func Truncate(string, int64) error +pkg syscall (darwin-amd64-cgo), func Umask(int) int +pkg syscall (darwin-amd64-cgo), func Undelete(string) error +pkg syscall (darwin-amd64-cgo), func UnixRights(...int) []byte +pkg syscall (darwin-amd64-cgo), func Unmount(string, int) error +pkg syscall (darwin-amd64-cgo), func Wait4(int, *WaitStatus, int, *Rusage) (int, error) +pkg syscall (darwin-amd64-cgo), func Write(int, []byte) (int, error) +pkg syscall (darwin-amd64-cgo), method (*Cmsghdr) SetLen(int) +pkg syscall (darwin-amd64-cgo), method (*Iovec) SetLen(int) +pkg syscall (darwin-amd64-cgo), method (*Msghdr) SetControllen(int) +pkg syscall (darwin-amd64-cgo), type BpfHdr struct +pkg syscall (darwin-amd64-cgo), type BpfHdr struct, Caplen uint32 +pkg syscall (darwin-amd64-cgo), type BpfHdr struct, Datalen uint32 +pkg syscall (darwin-amd64-cgo), type BpfHdr struct, Hdrlen uint16 +pkg syscall (darwin-amd64-cgo), type BpfHdr struct, Pad_cgo_0 [2]byte +pkg syscall (darwin-amd64-cgo), type BpfHdr struct, Tstamp Timeval32 +pkg syscall (darwin-amd64-cgo), type BpfInsn struct +pkg syscall (darwin-amd64-cgo), type BpfInsn struct, Code uint16 +pkg syscall (darwin-amd64-cgo), type BpfInsn struct, Jf uint8 +pkg syscall (darwin-amd64-cgo), type BpfInsn struct, Jt uint8 +pkg syscall (darwin-amd64-cgo), type BpfInsn struct, K uint32 +pkg syscall (darwin-amd64-cgo), type BpfProgram struct +pkg syscall (darwin-amd64-cgo), type BpfProgram struct, Insns *BpfInsn +pkg syscall (darwin-amd64-cgo), type BpfProgram struct, Len uint32 +pkg syscall (darwin-amd64-cgo), type BpfProgram struct, Pad_cgo_0 [4]byte +pkg syscall (darwin-amd64-cgo), type BpfStat struct +pkg syscall (darwin-amd64-cgo), type BpfStat struct, Drop uint32 +pkg syscall (darwin-amd64-cgo), type BpfStat struct, Recv uint32 +pkg syscall (darwin-amd64-cgo), type BpfVersion struct +pkg syscall (darwin-amd64-cgo), type BpfVersion struct, Major uint16 +pkg syscall (darwin-amd64-cgo), type BpfVersion struct, Minor uint16 +pkg syscall (darwin-amd64-cgo), type Cmsghdr struct +pkg syscall (darwin-amd64-cgo), type Cmsghdr struct, Len uint32 +pkg syscall (darwin-amd64-cgo), type Cmsghdr struct, Level int32 +pkg syscall (darwin-amd64-cgo), type Cmsghdr struct, Type int32 +pkg syscall (darwin-amd64-cgo), type Credential struct +pkg syscall (darwin-amd64-cgo), type Credential struct, Gid uint32 +pkg syscall (darwin-amd64-cgo), type Credential struct, Groups []uint32 +pkg syscall (darwin-amd64-cgo), type Credential struct, Uid uint32 +pkg syscall (darwin-amd64-cgo), type Dirent struct +pkg syscall (darwin-amd64-cgo), type Dirent struct, Ino uint64 +pkg syscall (darwin-amd64-cgo), type Dirent struct, Name [1024]int8 +pkg syscall (darwin-amd64-cgo), type Dirent struct, Namlen uint16 +pkg syscall (darwin-amd64-cgo), type Dirent struct, Pad_cgo_0 [3]byte +pkg syscall (darwin-amd64-cgo), type Dirent struct, Reclen uint16 +pkg syscall (darwin-amd64-cgo), type Dirent struct, Seekoff uint64 +pkg syscall (darwin-amd64-cgo), type Dirent struct, Type uint8 +pkg syscall (darwin-amd64-cgo), type Fbootstraptransfer_t struct +pkg syscall (darwin-amd64-cgo), type Fbootstraptransfer_t struct, Buffer *byte +pkg syscall (darwin-amd64-cgo), type Fbootstraptransfer_t struct, Length uint64 +pkg syscall (darwin-amd64-cgo), type Fbootstraptransfer_t struct, Offset int64 +pkg syscall (darwin-amd64-cgo), type FdSet struct +pkg syscall (darwin-amd64-cgo), type FdSet struct, Bits [32]int32 +pkg syscall (darwin-amd64-cgo), type Flock_t struct +pkg syscall (darwin-amd64-cgo), type Flock_t struct, Len int64 +pkg syscall (darwin-amd64-cgo), type Flock_t struct, Pid int32 +pkg syscall (darwin-amd64-cgo), type Flock_t struct, Start int64 +pkg syscall (darwin-amd64-cgo), type Flock_t struct, Type int16 +pkg syscall (darwin-amd64-cgo), type Flock_t struct, Whence int16 +pkg syscall (darwin-amd64-cgo), type Fsid struct +pkg syscall (darwin-amd64-cgo), type Fsid struct, Val [2]int32 +pkg syscall (darwin-amd64-cgo), type Fstore_t struct +pkg syscall (darwin-amd64-cgo), type Fstore_t struct, Bytesalloc int64 +pkg syscall (darwin-amd64-cgo), type Fstore_t struct, Flags uint32 +pkg syscall (darwin-amd64-cgo), type Fstore_t struct, Length int64 +pkg syscall (darwin-amd64-cgo), type Fstore_t struct, Offset int64 +pkg syscall (darwin-amd64-cgo), type Fstore_t struct, Posmode int32 +pkg syscall (darwin-amd64-cgo), type IfData struct +pkg syscall (darwin-amd64-cgo), type IfData struct, Addrlen uint8 +pkg syscall (darwin-amd64-cgo), type IfData struct, Baudrate uint32 +pkg syscall (darwin-amd64-cgo), type IfData struct, Collisions uint32 +pkg syscall (darwin-amd64-cgo), type IfData struct, Hdrlen uint8 +pkg syscall (darwin-amd64-cgo), type IfData struct, Hwassist uint32 +pkg syscall (darwin-amd64-cgo), type IfData struct, Ibytes uint32 +pkg syscall (darwin-amd64-cgo), type IfData struct, Ierrors uint32 +pkg syscall (darwin-amd64-cgo), type IfData struct, Imcasts uint32 +pkg syscall (darwin-amd64-cgo), type IfData struct, Ipackets uint32 +pkg syscall (darwin-amd64-cgo), type IfData struct, Iqdrops uint32 +pkg syscall (darwin-amd64-cgo), type IfData struct, Lastchange Timeval32 +pkg syscall (darwin-amd64-cgo), type IfData struct, Metric uint32 +pkg syscall (darwin-amd64-cgo), type IfData struct, Mtu uint32 +pkg syscall (darwin-amd64-cgo), type IfData struct, Noproto uint32 +pkg syscall (darwin-amd64-cgo), type IfData struct, Obytes uint32 +pkg syscall (darwin-amd64-cgo), type IfData struct, Oerrors uint32 +pkg syscall (darwin-amd64-cgo), type IfData struct, Omcasts uint32 +pkg syscall (darwin-amd64-cgo), type IfData struct, Opackets uint32 +pkg syscall (darwin-amd64-cgo), type IfData struct, Physical uint8 +pkg syscall (darwin-amd64-cgo), type IfData struct, Recvquota uint8 +pkg syscall (darwin-amd64-cgo), type IfData struct, Recvtiming uint32 +pkg syscall (darwin-amd64-cgo), type IfData struct, Reserved1 uint32 +pkg syscall (darwin-amd64-cgo), type IfData struct, Reserved2 uint32 +pkg syscall (darwin-amd64-cgo), type IfData struct, Type uint8 +pkg syscall (darwin-amd64-cgo), type IfData struct, Typelen uint8 +pkg syscall (darwin-amd64-cgo), type IfData struct, Unused1 uint8 +pkg syscall (darwin-amd64-cgo), type IfData struct, Unused2 uint32 +pkg syscall (darwin-amd64-cgo), type IfData struct, Xmitquota uint8 +pkg syscall (darwin-amd64-cgo), type IfData struct, Xmittiming uint32 +pkg syscall (darwin-amd64-cgo), type IfMsghdr struct +pkg syscall (darwin-amd64-cgo), type IfMsghdr struct, Addrs int32 +pkg syscall (darwin-amd64-cgo), type IfMsghdr struct, Data IfData +pkg syscall (darwin-amd64-cgo), type IfMsghdr struct, Flags int32 +pkg syscall (darwin-amd64-cgo), type IfMsghdr struct, Index uint16 +pkg syscall (darwin-amd64-cgo), type IfMsghdr struct, Msglen uint16 +pkg syscall (darwin-amd64-cgo), type IfMsghdr struct, Pad_cgo_0 [2]byte +pkg syscall (darwin-amd64-cgo), type IfMsghdr struct, Type uint8 +pkg syscall (darwin-amd64-cgo), type IfMsghdr struct, Version uint8 +pkg syscall (darwin-amd64-cgo), type IfaMsghdr struct +pkg syscall (darwin-amd64-cgo), type IfaMsghdr struct, Addrs int32 +pkg syscall (darwin-amd64-cgo), type IfaMsghdr struct, Flags int32 +pkg syscall (darwin-amd64-cgo), type IfaMsghdr struct, Index uint16 +pkg syscall (darwin-amd64-cgo), type IfaMsghdr struct, Metric int32 +pkg syscall (darwin-amd64-cgo), type IfaMsghdr struct, Msglen uint16 +pkg syscall (darwin-amd64-cgo), type IfaMsghdr struct, Pad_cgo_0 [2]byte +pkg syscall (darwin-amd64-cgo), type IfaMsghdr struct, Type uint8 +pkg syscall (darwin-amd64-cgo), type IfaMsghdr struct, Version uint8 +pkg syscall (darwin-amd64-cgo), type IfmaMsghdr struct +pkg syscall (darwin-amd64-cgo), type IfmaMsghdr struct, Addrs int32 +pkg syscall (darwin-amd64-cgo), type IfmaMsghdr struct, Flags int32 +pkg syscall (darwin-amd64-cgo), type IfmaMsghdr struct, Index uint16 +pkg syscall (darwin-amd64-cgo), type IfmaMsghdr struct, Msglen uint16 +pkg syscall (darwin-amd64-cgo), type IfmaMsghdr struct, Pad_cgo_0 [2]byte +pkg syscall (darwin-amd64-cgo), type IfmaMsghdr struct, Type uint8 +pkg syscall (darwin-amd64-cgo), type IfmaMsghdr struct, Version uint8 +pkg syscall (darwin-amd64-cgo), type IfmaMsghdr2 struct +pkg syscall (darwin-amd64-cgo), type IfmaMsghdr2 struct, Addrs int32 +pkg syscall (darwin-amd64-cgo), type IfmaMsghdr2 struct, Flags int32 +pkg syscall (darwin-amd64-cgo), type IfmaMsghdr2 struct, Index uint16 +pkg syscall (darwin-amd64-cgo), type IfmaMsghdr2 struct, Msglen uint16 +pkg syscall (darwin-amd64-cgo), type IfmaMsghdr2 struct, Pad_cgo_0 [2]byte +pkg syscall (darwin-amd64-cgo), type IfmaMsghdr2 struct, Refcount int32 +pkg syscall (darwin-amd64-cgo), type IfmaMsghdr2 struct, Type uint8 +pkg syscall (darwin-amd64-cgo), type IfmaMsghdr2 struct, Version uint8 +pkg syscall (darwin-amd64-cgo), type Inet6Pktinfo struct +pkg syscall (darwin-amd64-cgo), type Inet6Pktinfo struct, Addr [16]byte +pkg syscall (darwin-amd64-cgo), type Inet6Pktinfo struct, Ifindex uint32 +pkg syscall (darwin-amd64-cgo), type InterfaceAddrMessage struct +pkg syscall (darwin-amd64-cgo), type InterfaceAddrMessage struct, Data []byte +pkg syscall (darwin-amd64-cgo), type InterfaceAddrMessage struct, Header IfaMsghdr +pkg syscall (darwin-amd64-cgo), type InterfaceMessage struct +pkg syscall (darwin-amd64-cgo), type InterfaceMessage struct, Data []byte +pkg syscall (darwin-amd64-cgo), type InterfaceMessage struct, Header IfMsghdr +pkg syscall (darwin-amd64-cgo), type InterfaceMulticastAddrMessage struct +pkg syscall (darwin-amd64-cgo), type InterfaceMulticastAddrMessage struct, Data []byte +pkg syscall (darwin-amd64-cgo), type InterfaceMulticastAddrMessage struct, Header IfmaMsghdr2 +pkg syscall (darwin-amd64-cgo), type Iovec struct +pkg syscall (darwin-amd64-cgo), type Iovec struct, Base *byte +pkg syscall (darwin-amd64-cgo), type Iovec struct, Len uint64 +pkg syscall (darwin-amd64-cgo), type Kevent_t struct +pkg syscall (darwin-amd64-cgo), type Kevent_t struct, Data int64 +pkg syscall (darwin-amd64-cgo), type Kevent_t struct, Fflags uint32 +pkg syscall (darwin-amd64-cgo), type Kevent_t struct, Filter int16 +pkg syscall (darwin-amd64-cgo), type Kevent_t struct, Flags uint16 +pkg syscall (darwin-amd64-cgo), type Kevent_t struct, Ident uint64 +pkg syscall (darwin-amd64-cgo), type Kevent_t struct, Udata *byte +pkg syscall (darwin-amd64-cgo), type Log2phys_t struct +pkg syscall (darwin-amd64-cgo), type Log2phys_t struct, Contigbytes int64 +pkg syscall (darwin-amd64-cgo), type Log2phys_t struct, Devoffset int64 +pkg syscall (darwin-amd64-cgo), type Log2phys_t struct, Flags uint32 +pkg syscall (darwin-amd64-cgo), type Msghdr struct +pkg syscall (darwin-amd64-cgo), type Msghdr struct, Control *byte +pkg syscall (darwin-amd64-cgo), type Msghdr struct, Controllen uint32 +pkg syscall (darwin-amd64-cgo), type Msghdr struct, Flags int32 +pkg syscall (darwin-amd64-cgo), type Msghdr struct, Iov *Iovec +pkg syscall (darwin-amd64-cgo), type Msghdr struct, Iovlen int32 +pkg syscall (darwin-amd64-cgo), type Msghdr struct, Name *byte +pkg syscall (darwin-amd64-cgo), type Msghdr struct, Namelen uint32 +pkg syscall (darwin-amd64-cgo), type Msghdr struct, Pad_cgo_0 [4]byte +pkg syscall (darwin-amd64-cgo), type Msghdr struct, Pad_cgo_1 [4]byte +pkg syscall (darwin-amd64-cgo), type Radvisory_t struct +pkg syscall (darwin-amd64-cgo), type Radvisory_t struct, Count int32 +pkg syscall (darwin-amd64-cgo), type Radvisory_t struct, Offset int64 +pkg syscall (darwin-amd64-cgo), type Radvisory_t struct, Pad_cgo_0 [4]byte +pkg syscall (darwin-amd64-cgo), type RawSockaddr struct, Family uint8 +pkg syscall (darwin-amd64-cgo), type RawSockaddr struct, Len uint8 +pkg syscall (darwin-amd64-cgo), type RawSockaddrAny struct, Pad [92]int8 +pkg syscall (darwin-amd64-cgo), type RawSockaddrDatalink struct +pkg syscall (darwin-amd64-cgo), type RawSockaddrDatalink struct, Alen uint8 +pkg syscall (darwin-amd64-cgo), type RawSockaddrDatalink struct, Data [12]int8 +pkg syscall (darwin-amd64-cgo), type RawSockaddrDatalink struct, Family uint8 +pkg syscall (darwin-amd64-cgo), type RawSockaddrDatalink struct, Index uint16 +pkg syscall (darwin-amd64-cgo), type RawSockaddrDatalink struct, Len uint8 +pkg syscall (darwin-amd64-cgo), type RawSockaddrDatalink struct, Nlen uint8 +pkg syscall (darwin-amd64-cgo), type RawSockaddrDatalink struct, Slen uint8 +pkg syscall (darwin-amd64-cgo), type RawSockaddrDatalink struct, Type uint8 +pkg syscall (darwin-amd64-cgo), type RawSockaddrInet4 struct, Family uint8 +pkg syscall (darwin-amd64-cgo), type RawSockaddrInet4 struct, Len uint8 +pkg syscall (darwin-amd64-cgo), type RawSockaddrInet4 struct, Zero [8]int8 +pkg syscall (darwin-amd64-cgo), type RawSockaddrInet6 struct +pkg syscall (darwin-amd64-cgo), type RawSockaddrInet6 struct, Addr [16]byte +pkg syscall (darwin-amd64-cgo), type RawSockaddrInet6 struct, Family uint8 +pkg syscall (darwin-amd64-cgo), type RawSockaddrInet6 struct, Flowinfo uint32 +pkg syscall (darwin-amd64-cgo), type RawSockaddrInet6 struct, Len uint8 +pkg syscall (darwin-amd64-cgo), type RawSockaddrInet6 struct, Port uint16 +pkg syscall (darwin-amd64-cgo), type RawSockaddrInet6 struct, Scope_id uint32 +pkg syscall (darwin-amd64-cgo), type RawSockaddrUnix struct +pkg syscall (darwin-amd64-cgo), type RawSockaddrUnix struct, Family uint8 +pkg syscall (darwin-amd64-cgo), type RawSockaddrUnix struct, Len uint8 +pkg syscall (darwin-amd64-cgo), type RawSockaddrUnix struct, Path [104]int8 +pkg syscall (darwin-amd64-cgo), type Rlimit struct +pkg syscall (darwin-amd64-cgo), type Rlimit struct, Cur uint64 +pkg syscall (darwin-amd64-cgo), type Rlimit struct, Max uint64 +pkg syscall (darwin-amd64-cgo), type RouteMessage struct +pkg syscall (darwin-amd64-cgo), type RouteMessage struct, Data []byte +pkg syscall (darwin-amd64-cgo), type RouteMessage struct, Header RtMsghdr +pkg syscall (darwin-amd64-cgo), type RoutingMessage interface {} +pkg syscall (darwin-amd64-cgo), type RtMetrics struct +pkg syscall (darwin-amd64-cgo), type RtMetrics struct, Expire int32 +pkg syscall (darwin-amd64-cgo), type RtMetrics struct, Filler [4]uint32 +pkg syscall (darwin-amd64-cgo), type RtMetrics struct, Hopcount uint32 +pkg syscall (darwin-amd64-cgo), type RtMetrics struct, Locks uint32 +pkg syscall (darwin-amd64-cgo), type RtMetrics struct, Mtu uint32 +pkg syscall (darwin-amd64-cgo), type RtMetrics struct, Pksent uint32 +pkg syscall (darwin-amd64-cgo), type RtMetrics struct, Recvpipe uint32 +pkg syscall (darwin-amd64-cgo), type RtMetrics struct, Rtt uint32 +pkg syscall (darwin-amd64-cgo), type RtMetrics struct, Rttvar uint32 +pkg syscall (darwin-amd64-cgo), type RtMetrics struct, Sendpipe uint32 +pkg syscall (darwin-amd64-cgo), type RtMetrics struct, Ssthresh uint32 +pkg syscall (darwin-amd64-cgo), type RtMsghdr struct +pkg syscall (darwin-amd64-cgo), type RtMsghdr struct, Addrs int32 +pkg syscall (darwin-amd64-cgo), type RtMsghdr struct, Errno int32 +pkg syscall (darwin-amd64-cgo), type RtMsghdr struct, Flags int32 +pkg syscall (darwin-amd64-cgo), type RtMsghdr struct, Index uint16 +pkg syscall (darwin-amd64-cgo), type RtMsghdr struct, Inits uint32 +pkg syscall (darwin-amd64-cgo), type RtMsghdr struct, Msglen uint16 +pkg syscall (darwin-amd64-cgo), type RtMsghdr struct, Pad_cgo_0 [2]byte +pkg syscall (darwin-amd64-cgo), type RtMsghdr struct, Pid int32 +pkg syscall (darwin-amd64-cgo), type RtMsghdr struct, Rmx RtMetrics +pkg syscall (darwin-amd64-cgo), type RtMsghdr struct, Seq int32 +pkg syscall (darwin-amd64-cgo), type RtMsghdr struct, Type uint8 +pkg syscall (darwin-amd64-cgo), type RtMsghdr struct, Use int32 +pkg syscall (darwin-amd64-cgo), type RtMsghdr struct, Version uint8 +pkg syscall (darwin-amd64-cgo), type Rusage struct, Idrss int64 +pkg syscall (darwin-amd64-cgo), type Rusage struct, Inblock int64 +pkg syscall (darwin-amd64-cgo), type Rusage struct, Isrss int64 +pkg syscall (darwin-amd64-cgo), type Rusage struct, Ixrss int64 +pkg syscall (darwin-amd64-cgo), type Rusage struct, Majflt int64 +pkg syscall (darwin-amd64-cgo), type Rusage struct, Maxrss int64 +pkg syscall (darwin-amd64-cgo), type Rusage struct, Minflt int64 +pkg syscall (darwin-amd64-cgo), type Rusage struct, Msgrcv int64 +pkg syscall (darwin-amd64-cgo), type Rusage struct, Msgsnd int64 +pkg syscall (darwin-amd64-cgo), type Rusage struct, Nivcsw int64 +pkg syscall (darwin-amd64-cgo), type Rusage struct, Nsignals int64 +pkg syscall (darwin-amd64-cgo), type Rusage struct, Nswap int64 +pkg syscall (darwin-amd64-cgo), type Rusage struct, Nvcsw int64 +pkg syscall (darwin-amd64-cgo), type Rusage struct, Oublock int64 +pkg syscall (darwin-amd64-cgo), type Rusage struct, Stime Timeval +pkg syscall (darwin-amd64-cgo), type Rusage struct, Utime Timeval +pkg syscall (darwin-amd64-cgo), type SockaddrDatalink struct +pkg syscall (darwin-amd64-cgo), type SockaddrDatalink struct, Alen uint8 +pkg syscall (darwin-amd64-cgo), type SockaddrDatalink struct, Data [12]int8 +pkg syscall (darwin-amd64-cgo), type SockaddrDatalink struct, Family uint8 +pkg syscall (darwin-amd64-cgo), type SockaddrDatalink struct, Index uint16 +pkg syscall (darwin-amd64-cgo), type SockaddrDatalink struct, Len uint8 +pkg syscall (darwin-amd64-cgo), type SockaddrDatalink struct, Nlen uint8 +pkg syscall (darwin-amd64-cgo), type SockaddrDatalink struct, Slen uint8 +pkg syscall (darwin-amd64-cgo), type SockaddrDatalink struct, Type uint8 +pkg syscall (darwin-amd64-cgo), type SocketControlMessage struct +pkg syscall (darwin-amd64-cgo), type SocketControlMessage struct, Data []byte +pkg syscall (darwin-amd64-cgo), type SocketControlMessage struct, Header Cmsghdr +pkg syscall (darwin-amd64-cgo), type Stat_t struct +pkg syscall (darwin-amd64-cgo), type Stat_t struct, Atimespec Timespec +pkg syscall (darwin-amd64-cgo), type Stat_t struct, Birthtimespec Timespec +pkg syscall (darwin-amd64-cgo), type Stat_t struct, Blksize int32 +pkg syscall (darwin-amd64-cgo), type Stat_t struct, Blocks int64 +pkg syscall (darwin-amd64-cgo), type Stat_t struct, Ctimespec Timespec +pkg syscall (darwin-amd64-cgo), type Stat_t struct, Dev int32 +pkg syscall (darwin-amd64-cgo), type Stat_t struct, Flags uint32 +pkg syscall (darwin-amd64-cgo), type Stat_t struct, Gen uint32 +pkg syscall (darwin-amd64-cgo), type Stat_t struct, Gid uint32 +pkg syscall (darwin-amd64-cgo), type Stat_t struct, Ino uint64 +pkg syscall (darwin-amd64-cgo), type Stat_t struct, Lspare int32 +pkg syscall (darwin-amd64-cgo), type Stat_t struct, Mode uint16 +pkg syscall (darwin-amd64-cgo), type Stat_t struct, Mtimespec Timespec +pkg syscall (darwin-amd64-cgo), type Stat_t struct, Nlink uint16 +pkg syscall (darwin-amd64-cgo), type Stat_t struct, Pad_cgo_0 [4]byte +pkg syscall (darwin-amd64-cgo), type Stat_t struct, Qspare [2]int64 +pkg syscall (darwin-amd64-cgo), type Stat_t struct, Rdev int32 +pkg syscall (darwin-amd64-cgo), type Stat_t struct, Size int64 +pkg syscall (darwin-amd64-cgo), type Stat_t struct, Uid uint32 +pkg syscall (darwin-amd64-cgo), type Statfs_t struct +pkg syscall (darwin-amd64-cgo), type Statfs_t struct, Bavail uint64 +pkg syscall (darwin-amd64-cgo), type Statfs_t struct, Bfree uint64 +pkg syscall (darwin-amd64-cgo), type Statfs_t struct, Blocks uint64 +pkg syscall (darwin-amd64-cgo), type Statfs_t struct, Bsize uint32 +pkg syscall (darwin-amd64-cgo), type Statfs_t struct, Ffree uint64 +pkg syscall (darwin-amd64-cgo), type Statfs_t struct, Files uint64 +pkg syscall (darwin-amd64-cgo), type Statfs_t struct, Flags uint32 +pkg syscall (darwin-amd64-cgo), type Statfs_t struct, Fsid Fsid +pkg syscall (darwin-amd64-cgo), type Statfs_t struct, Fssubtype uint32 +pkg syscall (darwin-amd64-cgo), type Statfs_t struct, Fstypename [16]int8 +pkg syscall (darwin-amd64-cgo), type Statfs_t struct, Iosize int32 +pkg syscall (darwin-amd64-cgo), type Statfs_t struct, Mntfromname [1024]int8 +pkg syscall (darwin-amd64-cgo), type Statfs_t struct, Mntonname [1024]int8 +pkg syscall (darwin-amd64-cgo), type Statfs_t struct, Owner uint32 +pkg syscall (darwin-amd64-cgo), type Statfs_t struct, Reserved [8]uint32 +pkg syscall (darwin-amd64-cgo), type Statfs_t struct, Type uint32 +pkg syscall (darwin-amd64-cgo), type SysProcAttr struct, Chroot string +pkg syscall (darwin-amd64-cgo), type SysProcAttr struct, Credential *Credential +pkg syscall (darwin-amd64-cgo), type SysProcAttr struct, Noctty bool +pkg syscall (darwin-amd64-cgo), type SysProcAttr struct, Ptrace bool +pkg syscall (darwin-amd64-cgo), type SysProcAttr struct, Setctty bool +pkg syscall (darwin-amd64-cgo), type SysProcAttr struct, Setpgid bool +pkg syscall (darwin-amd64-cgo), type SysProcAttr struct, Setsid bool +pkg syscall (darwin-amd64-cgo), type Timespec struct, Nsec int64 +pkg syscall (darwin-amd64-cgo), type Timespec struct, Sec int64 +pkg syscall (darwin-amd64-cgo), type Timeval struct, Pad_cgo_0 [4]byte +pkg syscall (darwin-amd64-cgo), type Timeval struct, Sec int64 +pkg syscall (darwin-amd64-cgo), type Timeval struct, Usec int32 +pkg syscall (darwin-amd64-cgo), type Timeval32 struct +pkg syscall (darwin-amd64-cgo), type Timeval32 struct, Sec int32 +pkg syscall (darwin-amd64-cgo), type Timeval32 struct, Usec int32 +pkg syscall (darwin-amd64-cgo), type WaitStatus uint32 +pkg syscall (darwin-amd64-cgo), var Stderr int +pkg syscall (darwin-amd64-cgo), var Stdin int +pkg syscall (darwin-amd64-cgo), var Stdout int +pkg syscall (linux-386), const AF_ALG ideal-int +pkg syscall (linux-386), const AF_APPLETALK ideal-int +pkg syscall (linux-386), const AF_ASH ideal-int +pkg syscall (linux-386), const AF_ATMPVC ideal-int +pkg syscall (linux-386), const AF_ATMSVC ideal-int +pkg syscall (linux-386), const AF_AX25 ideal-int +pkg syscall (linux-386), const AF_BLUETOOTH ideal-int +pkg syscall (linux-386), const AF_BRIDGE ideal-int +pkg syscall (linux-386), const AF_CAIF ideal-int +pkg syscall (linux-386), const AF_CAN ideal-int +pkg syscall (linux-386), const AF_DECnet ideal-int +pkg syscall (linux-386), const AF_ECONET ideal-int +pkg syscall (linux-386), const AF_FILE ideal-int +pkg syscall (linux-386), const AF_IEEE802154 ideal-int +pkg syscall (linux-386), const AF_IPX ideal-int +pkg syscall (linux-386), const AF_IRDA ideal-int +pkg syscall (linux-386), const AF_ISDN ideal-int +pkg syscall (linux-386), const AF_IUCV ideal-int +pkg syscall (linux-386), const AF_KEY ideal-int +pkg syscall (linux-386), const AF_LLC ideal-int +pkg syscall (linux-386), const AF_LOCAL ideal-int +pkg syscall (linux-386), const AF_MAX ideal-int +pkg syscall (linux-386), const AF_NETBEUI ideal-int +pkg syscall (linux-386), const AF_NETLINK ideal-int +pkg syscall (linux-386), const AF_NETROM ideal-int +pkg syscall (linux-386), const AF_PACKET ideal-int +pkg syscall (linux-386), const AF_PHONET ideal-int +pkg syscall (linux-386), const AF_PPPOX ideal-int +pkg syscall (linux-386), const AF_RDS ideal-int +pkg syscall (linux-386), const AF_ROSE ideal-int +pkg syscall (linux-386), const AF_ROUTE ideal-int +pkg syscall (linux-386), const AF_RXRPC ideal-int +pkg syscall (linux-386), const AF_SECURITY ideal-int +pkg syscall (linux-386), const AF_SNA ideal-int +pkg syscall (linux-386), const AF_TIPC ideal-int +pkg syscall (linux-386), const AF_WANPIPE ideal-int +pkg syscall (linux-386), const AF_X25 ideal-int +pkg syscall (linux-386), const ARPHRD_ADAPT ideal-int +pkg syscall (linux-386), const ARPHRD_APPLETLK ideal-int +pkg syscall (linux-386), const ARPHRD_ARCNET ideal-int +pkg syscall (linux-386), const ARPHRD_ASH ideal-int +pkg syscall (linux-386), const ARPHRD_ATM ideal-int +pkg syscall (linux-386), const ARPHRD_AX25 ideal-int +pkg syscall (linux-386), const ARPHRD_BIF ideal-int +pkg syscall (linux-386), const ARPHRD_CHAOS ideal-int +pkg syscall (linux-386), const ARPHRD_CISCO ideal-int +pkg syscall (linux-386), const ARPHRD_CSLIP ideal-int +pkg syscall (linux-386), const ARPHRD_CSLIP6 ideal-int +pkg syscall (linux-386), const ARPHRD_DDCMP ideal-int +pkg syscall (linux-386), const ARPHRD_DLCI ideal-int +pkg syscall (linux-386), const ARPHRD_ECONET ideal-int +pkg syscall (linux-386), const ARPHRD_EETHER ideal-int +pkg syscall (linux-386), const ARPHRD_ETHER ideal-int +pkg syscall (linux-386), const ARPHRD_EUI64 ideal-int +pkg syscall (linux-386), const ARPHRD_FCAL ideal-int +pkg syscall (linux-386), const ARPHRD_FCFABRIC ideal-int +pkg syscall (linux-386), const ARPHRD_FCPL ideal-int +pkg syscall (linux-386), const ARPHRD_FCPP ideal-int +pkg syscall (linux-386), const ARPHRD_FDDI ideal-int +pkg syscall (linux-386), const ARPHRD_FRAD ideal-int +pkg syscall (linux-386), const ARPHRD_HDLC ideal-int +pkg syscall (linux-386), const ARPHRD_HIPPI ideal-int +pkg syscall (linux-386), const ARPHRD_HWX25 ideal-int +pkg syscall (linux-386), const ARPHRD_IEEE1394 ideal-int +pkg syscall (linux-386), const ARPHRD_IEEE802 ideal-int +pkg syscall (linux-386), const ARPHRD_IEEE80211 ideal-int +pkg syscall (linux-386), const ARPHRD_IEEE80211_PRISM ideal-int +pkg syscall (linux-386), const ARPHRD_IEEE80211_RADIOTAP ideal-int +pkg syscall (linux-386), const ARPHRD_IEEE802154 ideal-int +pkg syscall (linux-386), const ARPHRD_IEEE802154_PHY ideal-int +pkg syscall (linux-386), const ARPHRD_IEEE802_TR ideal-int +pkg syscall (linux-386), const ARPHRD_INFINIBAND ideal-int +pkg syscall (linux-386), const ARPHRD_IPDDP ideal-int +pkg syscall (linux-386), const ARPHRD_IPGRE ideal-int +pkg syscall (linux-386), const ARPHRD_IRDA ideal-int +pkg syscall (linux-386), const ARPHRD_LAPB ideal-int +pkg syscall (linux-386), const ARPHRD_LOCALTLK ideal-int +pkg syscall (linux-386), const ARPHRD_LOOPBACK ideal-int +pkg syscall (linux-386), const ARPHRD_METRICOM ideal-int +pkg syscall (linux-386), const ARPHRD_NETROM ideal-int +pkg syscall (linux-386), const ARPHRD_NONE ideal-int +pkg syscall (linux-386), const ARPHRD_PIMREG ideal-int +pkg syscall (linux-386), const ARPHRD_PPP ideal-int +pkg syscall (linux-386), const ARPHRD_PRONET ideal-int +pkg syscall (linux-386), const ARPHRD_RAWHDLC ideal-int +pkg syscall (linux-386), const ARPHRD_ROSE ideal-int +pkg syscall (linux-386), const ARPHRD_RSRVD ideal-int +pkg syscall (linux-386), const ARPHRD_SIT ideal-int +pkg syscall (linux-386), const ARPHRD_SKIP ideal-int +pkg syscall (linux-386), const ARPHRD_SLIP ideal-int +pkg syscall (linux-386), const ARPHRD_SLIP6 ideal-int +pkg syscall (linux-386), const ARPHRD_TUNNEL ideal-int +pkg syscall (linux-386), const ARPHRD_TUNNEL6 ideal-int +pkg syscall (linux-386), const ARPHRD_VOID ideal-int +pkg syscall (linux-386), const ARPHRD_X25 ideal-int +pkg syscall (linux-386), const B0 ideal-int +pkg syscall (linux-386), const B1000000 ideal-int +pkg syscall (linux-386), const B110 ideal-int +pkg syscall (linux-386), const B115200 ideal-int +pkg syscall (linux-386), const B1152000 ideal-int +pkg syscall (linux-386), const B1200 ideal-int +pkg syscall (linux-386), const B134 ideal-int +pkg syscall (linux-386), const B150 ideal-int +pkg syscall (linux-386), const B1500000 ideal-int +pkg syscall (linux-386), const B1800 ideal-int +pkg syscall (linux-386), const B19200 ideal-int +pkg syscall (linux-386), const B200 ideal-int +pkg syscall (linux-386), const B2000000 ideal-int +pkg syscall (linux-386), const B230400 ideal-int +pkg syscall (linux-386), const B2400 ideal-int +pkg syscall (linux-386), const B2500000 ideal-int +pkg syscall (linux-386), const B300 ideal-int +pkg syscall (linux-386), const B3000000 ideal-int +pkg syscall (linux-386), const B3500000 ideal-int +pkg syscall (linux-386), const B38400 ideal-int +pkg syscall (linux-386), const B4000000 ideal-int +pkg syscall (linux-386), const B460800 ideal-int +pkg syscall (linux-386), const B4800 ideal-int +pkg syscall (linux-386), const B50 ideal-int +pkg syscall (linux-386), const B500000 ideal-int +pkg syscall (linux-386), const B57600 ideal-int +pkg syscall (linux-386), const B576000 ideal-int +pkg syscall (linux-386), const B600 ideal-int +pkg syscall (linux-386), const B75 ideal-int +pkg syscall (linux-386), const B921600 ideal-int +pkg syscall (linux-386), const B9600 ideal-int +pkg syscall (linux-386), const BPF_A ideal-int +pkg syscall (linux-386), const BPF_ABS ideal-int +pkg syscall (linux-386), const BPF_ADD ideal-int +pkg syscall (linux-386), const BPF_ALU ideal-int +pkg syscall (linux-386), const BPF_AND ideal-int +pkg syscall (linux-386), const BPF_B ideal-int +pkg syscall (linux-386), const BPF_DIV ideal-int +pkg syscall (linux-386), const BPF_H ideal-int +pkg syscall (linux-386), const BPF_IMM ideal-int +pkg syscall (linux-386), const BPF_IND ideal-int +pkg syscall (linux-386), const BPF_JA ideal-int +pkg syscall (linux-386), const BPF_JEQ ideal-int +pkg syscall (linux-386), const BPF_JGE ideal-int +pkg syscall (linux-386), const BPF_JGT ideal-int +pkg syscall (linux-386), const BPF_JMP ideal-int +pkg syscall (linux-386), const BPF_JSET ideal-int +pkg syscall (linux-386), const BPF_K ideal-int +pkg syscall (linux-386), const BPF_LD ideal-int +pkg syscall (linux-386), const BPF_LDX ideal-int +pkg syscall (linux-386), const BPF_LEN ideal-int +pkg syscall (linux-386), const BPF_LSH ideal-int +pkg syscall (linux-386), const BPF_MAJOR_VERSION ideal-int +pkg syscall (linux-386), const BPF_MAXINSNS ideal-int +pkg syscall (linux-386), const BPF_MEM ideal-int +pkg syscall (linux-386), const BPF_MEMWORDS ideal-int +pkg syscall (linux-386), const BPF_MINOR_VERSION ideal-int +pkg syscall (linux-386), const BPF_MISC ideal-int +pkg syscall (linux-386), const BPF_MSH ideal-int +pkg syscall (linux-386), const BPF_MUL ideal-int +pkg syscall (linux-386), const BPF_NEG ideal-int +pkg syscall (linux-386), const BPF_OR ideal-int +pkg syscall (linux-386), const BPF_RET ideal-int +pkg syscall (linux-386), const BPF_RSH ideal-int +pkg syscall (linux-386), const BPF_ST ideal-int +pkg syscall (linux-386), const BPF_STX ideal-int +pkg syscall (linux-386), const BPF_SUB ideal-int +pkg syscall (linux-386), const BPF_TAX ideal-int +pkg syscall (linux-386), const BPF_TXA ideal-int +pkg syscall (linux-386), const BPF_W ideal-int +pkg syscall (linux-386), const BPF_X ideal-int +pkg syscall (linux-386), const BRKINT ideal-int +pkg syscall (linux-386), const CLOCAL ideal-int +pkg syscall (linux-386), const CREAD ideal-int +pkg syscall (linux-386), const CS5 ideal-int +pkg syscall (linux-386), const CS6 ideal-int +pkg syscall (linux-386), const CS7 ideal-int +pkg syscall (linux-386), const CS8 ideal-int +pkg syscall (linux-386), const CSIZE ideal-int +pkg syscall (linux-386), const CSTOPB ideal-int +pkg syscall (linux-386), const DT_BLK ideal-int +pkg syscall (linux-386), const DT_CHR ideal-int +pkg syscall (linux-386), const DT_DIR ideal-int +pkg syscall (linux-386), const DT_FIFO ideal-int +pkg syscall (linux-386), const DT_LNK ideal-int +pkg syscall (linux-386), const DT_REG ideal-int +pkg syscall (linux-386), const DT_SOCK ideal-int +pkg syscall (linux-386), const DT_UNKNOWN ideal-int +pkg syscall (linux-386), const DT_WHT ideal-int +pkg syscall (linux-386), const EADV Errno +pkg syscall (linux-386), const EBADE Errno +pkg syscall (linux-386), const EBADFD Errno +pkg syscall (linux-386), const EBADR Errno +pkg syscall (linux-386), const EBADRQC Errno +pkg syscall (linux-386), const EBADSLT Errno +pkg syscall (linux-386), const EBFONT Errno +pkg syscall (linux-386), const ECHO ideal-int +pkg syscall (linux-386), const ECHOCTL ideal-int +pkg syscall (linux-386), const ECHOE ideal-int +pkg syscall (linux-386), const ECHOK ideal-int +pkg syscall (linux-386), const ECHOKE ideal-int +pkg syscall (linux-386), const ECHONL ideal-int +pkg syscall (linux-386), const ECHOPRT ideal-int +pkg syscall (linux-386), const ECHRNG Errno +pkg syscall (linux-386), const ECOMM Errno +pkg syscall (linux-386), const EDEADLOCK Errno +pkg syscall (linux-386), const EDOTDOT Errno +pkg syscall (linux-386), const EISNAM Errno +pkg syscall (linux-386), const EKEYEXPIRED Errno +pkg syscall (linux-386), const EKEYREJECTED Errno +pkg syscall (linux-386), const EKEYREVOKED Errno +pkg syscall (linux-386), const EL2HLT Errno +pkg syscall (linux-386), const EL2NSYNC Errno +pkg syscall (linux-386), const EL3HLT Errno +pkg syscall (linux-386), const EL3RST Errno +pkg syscall (linux-386), const ELIBACC Errno +pkg syscall (linux-386), const ELIBBAD Errno +pkg syscall (linux-386), const ELIBEXEC Errno +pkg syscall (linux-386), const ELIBMAX Errno +pkg syscall (linux-386), const ELIBSCN Errno +pkg syscall (linux-386), const ELNRNG Errno +pkg syscall (linux-386), const EMEDIUMTYPE Errno +pkg syscall (linux-386), const ENAVAIL Errno +pkg syscall (linux-386), const ENOANO Errno +pkg syscall (linux-386), const ENOCSI Errno +pkg syscall (linux-386), const ENOKEY Errno +pkg syscall (linux-386), const ENOMEDIUM Errno +pkg syscall (linux-386), const ENONET Errno +pkg syscall (linux-386), const ENOPKG Errno +pkg syscall (linux-386), const ENOTNAM Errno +pkg syscall (linux-386), const ENOTUNIQ Errno +pkg syscall (linux-386), const EPOLLERR ideal-int +pkg syscall (linux-386), const EPOLLET ideal-int +pkg syscall (linux-386), const EPOLLHUP ideal-int +pkg syscall (linux-386), const EPOLLIN ideal-int +pkg syscall (linux-386), const EPOLLMSG ideal-int +pkg syscall (linux-386), const EPOLLONESHOT ideal-int +pkg syscall (linux-386), const EPOLLOUT ideal-int +pkg syscall (linux-386), const EPOLLPRI ideal-int +pkg syscall (linux-386), const EPOLLRDBAND ideal-int +pkg syscall (linux-386), const EPOLLRDHUP ideal-int +pkg syscall (linux-386), const EPOLLRDNORM ideal-int +pkg syscall (linux-386), const EPOLLWRBAND ideal-int +pkg syscall (linux-386), const EPOLLWRNORM ideal-int +pkg syscall (linux-386), const EPOLL_CLOEXEC ideal-int +pkg syscall (linux-386), const EPOLL_CTL_ADD ideal-int +pkg syscall (linux-386), const EPOLL_CTL_DEL ideal-int +pkg syscall (linux-386), const EPOLL_CTL_MOD ideal-int +pkg syscall (linux-386), const EPOLL_NONBLOCK ideal-int +pkg syscall (linux-386), const EREMCHG Errno +pkg syscall (linux-386), const EREMOTEIO Errno +pkg syscall (linux-386), const ERESTART Errno +pkg syscall (linux-386), const ERFKILL Errno +pkg syscall (linux-386), const ESRMNT Errno +pkg syscall (linux-386), const ESTRPIPE Errno +pkg syscall (linux-386), const ETH_P_1588 ideal-int +pkg syscall (linux-386), const ETH_P_8021Q ideal-int +pkg syscall (linux-386), const ETH_P_802_2 ideal-int +pkg syscall (linux-386), const ETH_P_802_3 ideal-int +pkg syscall (linux-386), const ETH_P_AARP ideal-int +pkg syscall (linux-386), const ETH_P_ALL ideal-int +pkg syscall (linux-386), const ETH_P_AOE ideal-int +pkg syscall (linux-386), const ETH_P_ARCNET ideal-int +pkg syscall (linux-386), const ETH_P_ARP ideal-int +pkg syscall (linux-386), const ETH_P_ATALK ideal-int +pkg syscall (linux-386), const ETH_P_ATMFATE ideal-int +pkg syscall (linux-386), const ETH_P_ATMMPOA ideal-int +pkg syscall (linux-386), const ETH_P_AX25 ideal-int +pkg syscall (linux-386), const ETH_P_BPQ ideal-int +pkg syscall (linux-386), const ETH_P_CAIF ideal-int +pkg syscall (linux-386), const ETH_P_CAN ideal-int +pkg syscall (linux-386), const ETH_P_CONTROL ideal-int +pkg syscall (linux-386), const ETH_P_CUST ideal-int +pkg syscall (linux-386), const ETH_P_DDCMP ideal-int +pkg syscall (linux-386), const ETH_P_DEC ideal-int +pkg syscall (linux-386), const ETH_P_DIAG ideal-int +pkg syscall (linux-386), const ETH_P_DNA_DL ideal-int +pkg syscall (linux-386), const ETH_P_DNA_RC ideal-int +pkg syscall (linux-386), const ETH_P_DNA_RT ideal-int +pkg syscall (linux-386), const ETH_P_DSA ideal-int +pkg syscall (linux-386), const ETH_P_ECONET ideal-int +pkg syscall (linux-386), const ETH_P_EDSA ideal-int +pkg syscall (linux-386), const ETH_P_FCOE ideal-int +pkg syscall (linux-386), const ETH_P_FIP ideal-int +pkg syscall (linux-386), const ETH_P_HDLC ideal-int +pkg syscall (linux-386), const ETH_P_IEEE802154 ideal-int +pkg syscall (linux-386), const ETH_P_IEEEPUP ideal-int +pkg syscall (linux-386), const ETH_P_IEEEPUPAT ideal-int +pkg syscall (linux-386), const ETH_P_IP ideal-int +pkg syscall (linux-386), const ETH_P_IPV6 ideal-int +pkg syscall (linux-386), const ETH_P_IPX ideal-int +pkg syscall (linux-386), const ETH_P_IRDA ideal-int +pkg syscall (linux-386), const ETH_P_LAT ideal-int +pkg syscall (linux-386), const ETH_P_LINK_CTL ideal-int +pkg syscall (linux-386), const ETH_P_LOCALTALK ideal-int +pkg syscall (linux-386), const ETH_P_LOOP ideal-int +pkg syscall (linux-386), const ETH_P_MOBITEX ideal-int +pkg syscall (linux-386), const ETH_P_MPLS_MC ideal-int +pkg syscall (linux-386), const ETH_P_MPLS_UC ideal-int +pkg syscall (linux-386), const ETH_P_PAE ideal-int +pkg syscall (linux-386), const ETH_P_PAUSE ideal-int +pkg syscall (linux-386), const ETH_P_PHONET ideal-int +pkg syscall (linux-386), const ETH_P_PPPTALK ideal-int +pkg syscall (linux-386), const ETH_P_PPP_DISC ideal-int +pkg syscall (linux-386), const ETH_P_PPP_MP ideal-int +pkg syscall (linux-386), const ETH_P_PPP_SES ideal-int +pkg syscall (linux-386), const ETH_P_PUP ideal-int +pkg syscall (linux-386), const ETH_P_PUPAT ideal-int +pkg syscall (linux-386), const ETH_P_RARP ideal-int +pkg syscall (linux-386), const ETH_P_SCA ideal-int +pkg syscall (linux-386), const ETH_P_SLOW ideal-int +pkg syscall (linux-386), const ETH_P_SNAP ideal-int +pkg syscall (linux-386), const ETH_P_TEB ideal-int +pkg syscall (linux-386), const ETH_P_TIPC ideal-int +pkg syscall (linux-386), const ETH_P_TRAILER ideal-int +pkg syscall (linux-386), const ETH_P_TR_802_2 ideal-int +pkg syscall (linux-386), const ETH_P_WAN_PPP ideal-int +pkg syscall (linux-386), const ETH_P_WCCP ideal-int +pkg syscall (linux-386), const ETH_P_X25 ideal-int +pkg syscall (linux-386), const EUCLEAN Errno +pkg syscall (linux-386), const EUNATCH Errno +pkg syscall (linux-386), const EXFULL Errno +pkg syscall (linux-386), const FD_CLOEXEC ideal-int +pkg syscall (linux-386), const FD_SETSIZE ideal-int +pkg syscall (linux-386), const FLUSHO ideal-int +pkg syscall (linux-386), const F_DUPFD ideal-int +pkg syscall (linux-386), const F_DUPFD_CLOEXEC ideal-int +pkg syscall (linux-386), const F_EXLCK ideal-int +pkg syscall (linux-386), const F_GETFD ideal-int +pkg syscall (linux-386), const F_GETFL ideal-int +pkg syscall (linux-386), const F_GETLEASE ideal-int +pkg syscall (linux-386), const F_GETLK ideal-int +pkg syscall (linux-386), const F_GETLK64 ideal-int +pkg syscall (linux-386), const F_GETOWN ideal-int +pkg syscall (linux-386), const F_GETOWN_EX ideal-int +pkg syscall (linux-386), const F_GETPIPE_SZ ideal-int +pkg syscall (linux-386), const F_GETSIG ideal-int +pkg syscall (linux-386), const F_LOCK ideal-int +pkg syscall (linux-386), const F_NOTIFY ideal-int +pkg syscall (linux-386), const F_OK ideal-int +pkg syscall (linux-386), const F_RDLCK ideal-int +pkg syscall (linux-386), const F_SETFD ideal-int +pkg syscall (linux-386), const F_SETFL ideal-int +pkg syscall (linux-386), const F_SETLEASE ideal-int +pkg syscall (linux-386), const F_SETLK ideal-int +pkg syscall (linux-386), const F_SETLK64 ideal-int +pkg syscall (linux-386), const F_SETLKW ideal-int +pkg syscall (linux-386), const F_SETLKW64 ideal-int +pkg syscall (linux-386), const F_SETOWN ideal-int +pkg syscall (linux-386), const F_SETOWN_EX ideal-int +pkg syscall (linux-386), const F_SETPIPE_SZ ideal-int +pkg syscall (linux-386), const F_SETSIG ideal-int +pkg syscall (linux-386), const F_SHLCK ideal-int +pkg syscall (linux-386), const F_TEST ideal-int +pkg syscall (linux-386), const F_TLOCK ideal-int +pkg syscall (linux-386), const F_ULOCK ideal-int +pkg syscall (linux-386), const F_UNLCK ideal-int +pkg syscall (linux-386), const F_WRLCK ideal-int +pkg syscall (linux-386), const HUPCL ideal-int +pkg syscall (linux-386), const ICANON ideal-int +pkg syscall (linux-386), const ICRNL ideal-int +pkg syscall (linux-386), const IEXTEN ideal-int +pkg syscall (linux-386), const IFA_ADDRESS ideal-int +pkg syscall (linux-386), const IFA_ANYCAST ideal-int +pkg syscall (linux-386), const IFA_BROADCAST ideal-int +pkg syscall (linux-386), const IFA_CACHEINFO ideal-int +pkg syscall (linux-386), const IFA_F_DADFAILED ideal-int +pkg syscall (linux-386), const IFA_F_DEPRECATED ideal-int +pkg syscall (linux-386), const IFA_F_HOMEADDRESS ideal-int +pkg syscall (linux-386), const IFA_F_NODAD ideal-int +pkg syscall (linux-386), const IFA_F_OPTIMISTIC ideal-int +pkg syscall (linux-386), const IFA_F_PERMANENT ideal-int +pkg syscall (linux-386), const IFA_F_SECONDARY ideal-int +pkg syscall (linux-386), const IFA_F_TEMPORARY ideal-int +pkg syscall (linux-386), const IFA_F_TENTATIVE ideal-int +pkg syscall (linux-386), const IFA_LABEL ideal-int +pkg syscall (linux-386), const IFA_LOCAL ideal-int +pkg syscall (linux-386), const IFA_MAX ideal-int +pkg syscall (linux-386), const IFA_MULTICAST ideal-int +pkg syscall (linux-386), const IFA_UNSPEC ideal-int +pkg syscall (linux-386), const IFF_ALLMULTI ideal-int +pkg syscall (linux-386), const IFF_AUTOMEDIA ideal-int +pkg syscall (linux-386), const IFF_DEBUG ideal-int +pkg syscall (linux-386), const IFF_DYNAMIC ideal-int +pkg syscall (linux-386), const IFF_MASTER ideal-int +pkg syscall (linux-386), const IFF_NOARP ideal-int +pkg syscall (linux-386), const IFF_NOTRAILERS ideal-int +pkg syscall (linux-386), const IFF_NO_PI ideal-int +pkg syscall (linux-386), const IFF_ONE_QUEUE ideal-int +pkg syscall (linux-386), const IFF_POINTOPOINT ideal-int +pkg syscall (linux-386), const IFF_PORTSEL ideal-int +pkg syscall (linux-386), const IFF_PROMISC ideal-int +pkg syscall (linux-386), const IFF_RUNNING ideal-int +pkg syscall (linux-386), const IFF_SLAVE ideal-int +pkg syscall (linux-386), const IFF_TAP ideal-int +pkg syscall (linux-386), const IFF_TUN ideal-int +pkg syscall (linux-386), const IFF_TUN_EXCL ideal-int +pkg syscall (linux-386), const IFF_VNET_HDR ideal-int +pkg syscall (linux-386), const IFLA_ADDRESS ideal-int +pkg syscall (linux-386), const IFLA_BROADCAST ideal-int +pkg syscall (linux-386), const IFLA_COST ideal-int +pkg syscall (linux-386), const IFLA_IFALIAS ideal-int +pkg syscall (linux-386), const IFLA_IFNAME ideal-int +pkg syscall (linux-386), const IFLA_LINK ideal-int +pkg syscall (linux-386), const IFLA_LINKINFO ideal-int +pkg syscall (linux-386), const IFLA_LINKMODE ideal-int +pkg syscall (linux-386), const IFLA_MAP ideal-int +pkg syscall (linux-386), const IFLA_MASTER ideal-int +pkg syscall (linux-386), const IFLA_MAX ideal-int +pkg syscall (linux-386), const IFLA_MTU ideal-int +pkg syscall (linux-386), const IFLA_NET_NS_PID ideal-int +pkg syscall (linux-386), const IFLA_OPERSTATE ideal-int +pkg syscall (linux-386), const IFLA_PRIORITY ideal-int +pkg syscall (linux-386), const IFLA_PROTINFO ideal-int +pkg syscall (linux-386), const IFLA_QDISC ideal-int +pkg syscall (linux-386), const IFLA_STATS ideal-int +pkg syscall (linux-386), const IFLA_TXQLEN ideal-int +pkg syscall (linux-386), const IFLA_UNSPEC ideal-int +pkg syscall (linux-386), const IFLA_WEIGHT ideal-int +pkg syscall (linux-386), const IFLA_WIRELESS ideal-int +pkg syscall (linux-386), const IFNAMSIZ ideal-int +pkg syscall (linux-386), const IGNBRK ideal-int +pkg syscall (linux-386), const IGNCR ideal-int +pkg syscall (linux-386), const IGNPAR ideal-int +pkg syscall (linux-386), const IMAXBEL ideal-int +pkg syscall (linux-386), const INLCR ideal-int +pkg syscall (linux-386), const INPCK ideal-int +pkg syscall (linux-386), const IN_ACCESS ideal-int +pkg syscall (linux-386), const IN_ALL_EVENTS ideal-int +pkg syscall (linux-386), const IN_ATTRIB ideal-int +pkg syscall (linux-386), const IN_CLASSA_HOST ideal-int +pkg syscall (linux-386), const IN_CLASSA_MAX ideal-int +pkg syscall (linux-386), const IN_CLASSA_NET ideal-int +pkg syscall (linux-386), const IN_CLASSA_NSHIFT ideal-int +pkg syscall (linux-386), const IN_CLASSB_HOST ideal-int +pkg syscall (linux-386), const IN_CLASSB_MAX ideal-int +pkg syscall (linux-386), const IN_CLASSB_NET ideal-int +pkg syscall (linux-386), const IN_CLASSB_NSHIFT ideal-int +pkg syscall (linux-386), const IN_CLASSC_HOST ideal-int +pkg syscall (linux-386), const IN_CLASSC_NET ideal-int +pkg syscall (linux-386), const IN_CLASSC_NSHIFT ideal-int +pkg syscall (linux-386), const IN_CLOEXEC ideal-int +pkg syscall (linux-386), const IN_CLOSE ideal-int +pkg syscall (linux-386), const IN_CLOSE_NOWRITE ideal-int +pkg syscall (linux-386), const IN_CLOSE_WRITE ideal-int +pkg syscall (linux-386), const IN_CREATE ideal-int +pkg syscall (linux-386), const IN_DELETE ideal-int +pkg syscall (linux-386), const IN_DELETE_SELF ideal-int +pkg syscall (linux-386), const IN_DONT_FOLLOW ideal-int +pkg syscall (linux-386), const IN_EXCL_UNLINK ideal-int +pkg syscall (linux-386), const IN_IGNORED ideal-int +pkg syscall (linux-386), const IN_ISDIR ideal-int +pkg syscall (linux-386), const IN_LOOPBACKNET ideal-int +pkg syscall (linux-386), const IN_MASK_ADD ideal-int +pkg syscall (linux-386), const IN_MODIFY ideal-int +pkg syscall (linux-386), const IN_MOVE ideal-int +pkg syscall (linux-386), const IN_MOVED_FROM ideal-int +pkg syscall (linux-386), const IN_MOVED_TO ideal-int +pkg syscall (linux-386), const IN_MOVE_SELF ideal-int +pkg syscall (linux-386), const IN_NONBLOCK ideal-int +pkg syscall (linux-386), const IN_ONESHOT ideal-int +pkg syscall (linux-386), const IN_ONLYDIR ideal-int +pkg syscall (linux-386), const IN_OPEN ideal-int +pkg syscall (linux-386), const IN_Q_OVERFLOW ideal-int +pkg syscall (linux-386), const IN_UNMOUNT ideal-int +pkg syscall (linux-386), const IPPROTO_AH ideal-int +pkg syscall (linux-386), const IPPROTO_COMP ideal-int +pkg syscall (linux-386), const IPPROTO_DCCP ideal-int +pkg syscall (linux-386), const IPPROTO_DSTOPTS ideal-int +pkg syscall (linux-386), const IPPROTO_EGP ideal-int +pkg syscall (linux-386), const IPPROTO_ENCAP ideal-int +pkg syscall (linux-386), const IPPROTO_ESP ideal-int +pkg syscall (linux-386), const IPPROTO_FRAGMENT ideal-int +pkg syscall (linux-386), const IPPROTO_GRE ideal-int +pkg syscall (linux-386), const IPPROTO_HOPOPTS ideal-int +pkg syscall (linux-386), const IPPROTO_ICMP ideal-int +pkg syscall (linux-386), const IPPROTO_ICMPV6 ideal-int +pkg syscall (linux-386), const IPPROTO_IDP ideal-int +pkg syscall (linux-386), const IPPROTO_IGMP ideal-int +pkg syscall (linux-386), const IPPROTO_IPIP ideal-int +pkg syscall (linux-386), const IPPROTO_MTP ideal-int +pkg syscall (linux-386), const IPPROTO_NONE ideal-int +pkg syscall (linux-386), const IPPROTO_PIM ideal-int +pkg syscall (linux-386), const IPPROTO_PUP ideal-int +pkg syscall (linux-386), const IPPROTO_RAW ideal-int +pkg syscall (linux-386), const IPPROTO_ROUTING ideal-int +pkg syscall (linux-386), const IPPROTO_RSVP ideal-int +pkg syscall (linux-386), const IPPROTO_SCTP ideal-int +pkg syscall (linux-386), const IPPROTO_TP ideal-int +pkg syscall (linux-386), const IPPROTO_UDPLITE ideal-int +pkg syscall (linux-386), const IPV6_2292DSTOPTS ideal-int +pkg syscall (linux-386), const IPV6_2292HOPLIMIT ideal-int +pkg syscall (linux-386), const IPV6_2292HOPOPTS ideal-int +pkg syscall (linux-386), const IPV6_2292PKTINFO ideal-int +pkg syscall (linux-386), const IPV6_2292PKTOPTIONS ideal-int +pkg syscall (linux-386), const IPV6_2292RTHDR ideal-int +pkg syscall (linux-386), const IPV6_ADDRFORM ideal-int +pkg syscall (linux-386), const IPV6_ADD_MEMBERSHIP ideal-int +pkg syscall (linux-386), const IPV6_AUTHHDR ideal-int +pkg syscall (linux-386), const IPV6_CHECKSUM ideal-int +pkg syscall (linux-386), const IPV6_DROP_MEMBERSHIP ideal-int +pkg syscall (linux-386), const IPV6_DSTOPTS ideal-int +pkg syscall (linux-386), const IPV6_HOPLIMIT ideal-int +pkg syscall (linux-386), const IPV6_HOPOPTS ideal-int +pkg syscall (linux-386), const IPV6_IPSEC_POLICY ideal-int +pkg syscall (linux-386), const IPV6_JOIN_ANYCAST ideal-int +pkg syscall (linux-386), const IPV6_LEAVE_ANYCAST ideal-int +pkg syscall (linux-386), const IPV6_MTU ideal-int +pkg syscall (linux-386), const IPV6_MTU_DISCOVER ideal-int +pkg syscall (linux-386), const IPV6_NEXTHOP ideal-int +pkg syscall (linux-386), const IPV6_PKTINFO ideal-int +pkg syscall (linux-386), const IPV6_PMTUDISC_DO ideal-int +pkg syscall (linux-386), const IPV6_PMTUDISC_DONT ideal-int +pkg syscall (linux-386), const IPV6_PMTUDISC_PROBE ideal-int +pkg syscall (linux-386), const IPV6_PMTUDISC_WANT ideal-int +pkg syscall (linux-386), const IPV6_RECVDSTOPTS ideal-int +pkg syscall (linux-386), const IPV6_RECVERR ideal-int +pkg syscall (linux-386), const IPV6_RECVHOPLIMIT ideal-int +pkg syscall (linux-386), const IPV6_RECVHOPOPTS ideal-int +pkg syscall (linux-386), const IPV6_RECVPKTINFO ideal-int +pkg syscall (linux-386), const IPV6_RECVRTHDR ideal-int +pkg syscall (linux-386), const IPV6_RECVTCLASS ideal-int +pkg syscall (linux-386), const IPV6_ROUTER_ALERT ideal-int +pkg syscall (linux-386), const IPV6_RTHDR ideal-int +pkg syscall (linux-386), const IPV6_RTHDRDSTOPTS ideal-int +pkg syscall (linux-386), const IPV6_RTHDR_LOOSE ideal-int +pkg syscall (linux-386), const IPV6_RTHDR_STRICT ideal-int +pkg syscall (linux-386), const IPV6_RTHDR_TYPE_0 ideal-int +pkg syscall (linux-386), const IPV6_RXDSTOPTS ideal-int +pkg syscall (linux-386), const IPV6_RXHOPOPTS ideal-int +pkg syscall (linux-386), const IPV6_TCLASS ideal-int +pkg syscall (linux-386), const IPV6_XFRM_POLICY ideal-int +pkg syscall (linux-386), const IP_ADD_SOURCE_MEMBERSHIP ideal-int +pkg syscall (linux-386), const IP_BLOCK_SOURCE ideal-int +pkg syscall (linux-386), const IP_DEFAULT_MULTICAST_LOOP ideal-int +pkg syscall (linux-386), const IP_DEFAULT_MULTICAST_TTL ideal-int +pkg syscall (linux-386), const IP_DF ideal-int +pkg syscall (linux-386), const IP_DROP_SOURCE_MEMBERSHIP ideal-int +pkg syscall (linux-386), const IP_FREEBIND ideal-int +pkg syscall (linux-386), const IP_HDRINCL ideal-int +pkg syscall (linux-386), const IP_IPSEC_POLICY ideal-int +pkg syscall (linux-386), const IP_MAXPACKET ideal-int +pkg syscall (linux-386), const IP_MAX_MEMBERSHIPS ideal-int +pkg syscall (linux-386), const IP_MF ideal-int +pkg syscall (linux-386), const IP_MINTTL ideal-int +pkg syscall (linux-386), const IP_MSFILTER ideal-int +pkg syscall (linux-386), const IP_MSS ideal-int +pkg syscall (linux-386), const IP_MTU ideal-int +pkg syscall (linux-386), const IP_MTU_DISCOVER ideal-int +pkg syscall (linux-386), const IP_OFFMASK ideal-int +pkg syscall (linux-386), const IP_OPTIONS ideal-int +pkg syscall (linux-386), const IP_ORIGDSTADDR ideal-int +pkg syscall (linux-386), const IP_PASSSEC ideal-int +pkg syscall (linux-386), const IP_PKTINFO ideal-int +pkg syscall (linux-386), const IP_PKTOPTIONS ideal-int +pkg syscall (linux-386), const IP_PMTUDISC ideal-int +pkg syscall (linux-386), const IP_PMTUDISC_DO ideal-int +pkg syscall (linux-386), const IP_PMTUDISC_DONT ideal-int +pkg syscall (linux-386), const IP_PMTUDISC_PROBE ideal-int +pkg syscall (linux-386), const IP_PMTUDISC_WANT ideal-int +pkg syscall (linux-386), const IP_RECVERR ideal-int +pkg syscall (linux-386), const IP_RECVOPTS ideal-int +pkg syscall (linux-386), const IP_RECVORIGDSTADDR ideal-int +pkg syscall (linux-386), const IP_RECVRETOPTS ideal-int +pkg syscall (linux-386), const IP_RECVTOS ideal-int +pkg syscall (linux-386), const IP_RECVTTL ideal-int +pkg syscall (linux-386), const IP_RETOPTS ideal-int +pkg syscall (linux-386), const IP_RF ideal-int +pkg syscall (linux-386), const IP_ROUTER_ALERT ideal-int +pkg syscall (linux-386), const IP_TRANSPARENT ideal-int +pkg syscall (linux-386), const IP_UNBLOCK_SOURCE ideal-int +pkg syscall (linux-386), const IP_XFRM_POLICY ideal-int +pkg syscall (linux-386), const ISIG ideal-int +pkg syscall (linux-386), const ISTRIP ideal-int +pkg syscall (linux-386), const IUCLC ideal-int +pkg syscall (linux-386), const IUTF8 ideal-int +pkg syscall (linux-386), const IXANY ideal-int +pkg syscall (linux-386), const IXOFF ideal-int +pkg syscall (linux-386), const IXON ideal-int +pkg syscall (linux-386), const LINUX_REBOOT_CMD_CAD_OFF ideal-int +pkg syscall (linux-386), const LINUX_REBOOT_CMD_CAD_ON ideal-int +pkg syscall (linux-386), const LINUX_REBOOT_CMD_HALT ideal-int +pkg syscall (linux-386), const LINUX_REBOOT_CMD_KEXEC ideal-int +pkg syscall (linux-386), const LINUX_REBOOT_CMD_POWER_OFF ideal-int +pkg syscall (linux-386), const LINUX_REBOOT_CMD_RESTART ideal-int +pkg syscall (linux-386), const LINUX_REBOOT_CMD_RESTART2 ideal-int +pkg syscall (linux-386), const LINUX_REBOOT_CMD_SW_SUSPEND ideal-int +pkg syscall (linux-386), const LINUX_REBOOT_MAGIC1 ideal-int +pkg syscall (linux-386), const LINUX_REBOOT_MAGIC2 ideal-int +pkg syscall (linux-386), const LOCK_EX ideal-int +pkg syscall (linux-386), const LOCK_NB ideal-int +pkg syscall (linux-386), const LOCK_SH ideal-int +pkg syscall (linux-386), const LOCK_UN ideal-int +pkg syscall (linux-386), const MADV_DOFORK ideal-int +pkg syscall (linux-386), const MADV_DONTFORK ideal-int +pkg syscall (linux-386), const MADV_DONTNEED ideal-int +pkg syscall (linux-386), const MADV_HUGEPAGE ideal-int +pkg syscall (linux-386), const MADV_HWPOISON ideal-int +pkg syscall (linux-386), const MADV_MERGEABLE ideal-int +pkg syscall (linux-386), const MADV_NOHUGEPAGE ideal-int +pkg syscall (linux-386), const MADV_NORMAL ideal-int +pkg syscall (linux-386), const MADV_RANDOM ideal-int +pkg syscall (linux-386), const MADV_REMOVE ideal-int +pkg syscall (linux-386), const MADV_SEQUENTIAL ideal-int +pkg syscall (linux-386), const MADV_UNMERGEABLE ideal-int +pkg syscall (linux-386), const MADV_WILLNEED ideal-int +pkg syscall (linux-386), const MAP_32BIT ideal-int +pkg syscall (linux-386), const MAP_ANON ideal-int +pkg syscall (linux-386), const MAP_ANONYMOUS ideal-int +pkg syscall (linux-386), const MAP_DENYWRITE ideal-int +pkg syscall (linux-386), const MAP_EXECUTABLE ideal-int +pkg syscall (linux-386), const MAP_FILE ideal-int +pkg syscall (linux-386), const MAP_FIXED ideal-int +pkg syscall (linux-386), const MAP_GROWSDOWN ideal-int +pkg syscall (linux-386), const MAP_HUGETLB ideal-int +pkg syscall (linux-386), const MAP_LOCKED ideal-int +pkg syscall (linux-386), const MAP_NONBLOCK ideal-int +pkg syscall (linux-386), const MAP_NORESERVE ideal-int +pkg syscall (linux-386), const MAP_POPULATE ideal-int +pkg syscall (linux-386), const MAP_PRIVATE ideal-int +pkg syscall (linux-386), const MAP_SHARED ideal-int +pkg syscall (linux-386), const MAP_STACK ideal-int +pkg syscall (linux-386), const MAP_TYPE ideal-int +pkg syscall (linux-386), const MCL_CURRENT ideal-int +pkg syscall (linux-386), const MCL_FUTURE ideal-int +pkg syscall (linux-386), const MNT_DETACH ideal-int +pkg syscall (linux-386), const MNT_EXPIRE ideal-int +pkg syscall (linux-386), const MNT_FORCE ideal-int +pkg syscall (linux-386), const MSG_CMSG_CLOEXEC ideal-int +pkg syscall (linux-386), const MSG_CONFIRM ideal-int +pkg syscall (linux-386), const MSG_CTRUNC ideal-int +pkg syscall (linux-386), const MSG_DONTROUTE ideal-int +pkg syscall (linux-386), const MSG_DONTWAIT ideal-int +pkg syscall (linux-386), const MSG_EOR ideal-int +pkg syscall (linux-386), const MSG_ERRQUEUE ideal-int +pkg syscall (linux-386), const MSG_FIN ideal-int +pkg syscall (linux-386), const MSG_MORE ideal-int +pkg syscall (linux-386), const MSG_NOSIGNAL ideal-int +pkg syscall (linux-386), const MSG_OOB ideal-int +pkg syscall (linux-386), const MSG_PEEK ideal-int +pkg syscall (linux-386), const MSG_PROXY ideal-int +pkg syscall (linux-386), const MSG_RST ideal-int +pkg syscall (linux-386), const MSG_SYN ideal-int +pkg syscall (linux-386), const MSG_TRUNC ideal-int +pkg syscall (linux-386), const MSG_TRYHARD ideal-int +pkg syscall (linux-386), const MSG_WAITALL ideal-int +pkg syscall (linux-386), const MSG_WAITFORONE ideal-int +pkg syscall (linux-386), const MS_ACTIVE ideal-int +pkg syscall (linux-386), const MS_ASYNC ideal-int +pkg syscall (linux-386), const MS_BIND ideal-int +pkg syscall (linux-386), const MS_DIRSYNC ideal-int +pkg syscall (linux-386), const MS_INVALIDATE ideal-int +pkg syscall (linux-386), const MS_I_VERSION ideal-int +pkg syscall (linux-386), const MS_KERNMOUNT ideal-int +pkg syscall (linux-386), const MS_MANDLOCK ideal-int +pkg syscall (linux-386), const MS_MGC_MSK ideal-int +pkg syscall (linux-386), const MS_MGC_VAL ideal-int +pkg syscall (linux-386), const MS_MOVE ideal-int +pkg syscall (linux-386), const MS_NOATIME ideal-int +pkg syscall (linux-386), const MS_NODEV ideal-int +pkg syscall (linux-386), const MS_NODIRATIME ideal-int +pkg syscall (linux-386), const MS_NOEXEC ideal-int +pkg syscall (linux-386), const MS_NOSUID ideal-int +pkg syscall (linux-386), const MS_NOUSER ideal-int +pkg syscall (linux-386), const MS_POSIXACL ideal-int +pkg syscall (linux-386), const MS_PRIVATE ideal-int +pkg syscall (linux-386), const MS_RDONLY ideal-int +pkg syscall (linux-386), const MS_REC ideal-int +pkg syscall (linux-386), const MS_RELATIME ideal-int +pkg syscall (linux-386), const MS_REMOUNT ideal-int +pkg syscall (linux-386), const MS_RMT_MASK ideal-int +pkg syscall (linux-386), const MS_SHARED ideal-int +pkg syscall (linux-386), const MS_SILENT ideal-int +pkg syscall (linux-386), const MS_SLAVE ideal-int +pkg syscall (linux-386), const MS_STRICTATIME ideal-int +pkg syscall (linux-386), const MS_SYNC ideal-int +pkg syscall (linux-386), const MS_SYNCHRONOUS ideal-int +pkg syscall (linux-386), const MS_UNBINDABLE ideal-int +pkg syscall (linux-386), const NAME_MAX ideal-int +pkg syscall (linux-386), const NETLINK_ADD_MEMBERSHIP ideal-int +pkg syscall (linux-386), const NETLINK_AUDIT ideal-int +pkg syscall (linux-386), const NETLINK_BROADCAST_ERROR ideal-int +pkg syscall (linux-386), const NETLINK_CONNECTOR ideal-int +pkg syscall (linux-386), const NETLINK_DNRTMSG ideal-int +pkg syscall (linux-386), const NETLINK_DROP_MEMBERSHIP ideal-int +pkg syscall (linux-386), const NETLINK_ECRYPTFS ideal-int +pkg syscall (linux-386), const NETLINK_FIB_LOOKUP ideal-int +pkg syscall (linux-386), const NETLINK_FIREWALL ideal-int +pkg syscall (linux-386), const NETLINK_GENERIC ideal-int +pkg syscall (linux-386), const NETLINK_INET_DIAG ideal-int +pkg syscall (linux-386), const NETLINK_IP6_FW ideal-int +pkg syscall (linux-386), const NETLINK_ISCSI ideal-int +pkg syscall (linux-386), const NETLINK_KOBJECT_UEVENT ideal-int +pkg syscall (linux-386), const NETLINK_NETFILTER ideal-int +pkg syscall (linux-386), const NETLINK_NFLOG ideal-int +pkg syscall (linux-386), const NETLINK_NO_ENOBUFS ideal-int +pkg syscall (linux-386), const NETLINK_PKTINFO ideal-int +pkg syscall (linux-386), const NETLINK_ROUTE ideal-int +pkg syscall (linux-386), const NETLINK_SCSITRANSPORT ideal-int +pkg syscall (linux-386), const NETLINK_SELINUX ideal-int +pkg syscall (linux-386), const NETLINK_UNUSED ideal-int +pkg syscall (linux-386), const NETLINK_USERSOCK ideal-int +pkg syscall (linux-386), const NETLINK_XFRM ideal-int +pkg syscall (linux-386), const NLA_ALIGNTO ideal-int +pkg syscall (linux-386), const NLA_F_NESTED ideal-int +pkg syscall (linux-386), const NLA_F_NET_BYTEORDER ideal-int +pkg syscall (linux-386), const NLA_HDRLEN ideal-int +pkg syscall (linux-386), const NLMSG_ALIGNTO ideal-int +pkg syscall (linux-386), const NLMSG_DONE ideal-int +pkg syscall (linux-386), const NLMSG_ERROR ideal-int +pkg syscall (linux-386), const NLMSG_HDRLEN ideal-int +pkg syscall (linux-386), const NLMSG_MIN_TYPE ideal-int +pkg syscall (linux-386), const NLMSG_NOOP ideal-int +pkg syscall (linux-386), const NLMSG_OVERRUN ideal-int +pkg syscall (linux-386), const NLM_F_ACK ideal-int +pkg syscall (linux-386), const NLM_F_APPEND ideal-int +pkg syscall (linux-386), const NLM_F_ATOMIC ideal-int +pkg syscall (linux-386), const NLM_F_CREATE ideal-int +pkg syscall (linux-386), const NLM_F_DUMP ideal-int +pkg syscall (linux-386), const NLM_F_ECHO ideal-int +pkg syscall (linux-386), const NLM_F_EXCL ideal-int +pkg syscall (linux-386), const NLM_F_MATCH ideal-int +pkg syscall (linux-386), const NLM_F_MULTI ideal-int +pkg syscall (linux-386), const NLM_F_REPLACE ideal-int +pkg syscall (linux-386), const NLM_F_REQUEST ideal-int +pkg syscall (linux-386), const NLM_F_ROOT ideal-int +pkg syscall (linux-386), const NOFLSH ideal-int +pkg syscall (linux-386), const OCRNL ideal-int +pkg syscall (linux-386), const OFDEL ideal-int +pkg syscall (linux-386), const OFILL ideal-int +pkg syscall (linux-386), const OLCUC ideal-int +pkg syscall (linux-386), const ONLCR ideal-int +pkg syscall (linux-386), const ONLRET ideal-int +pkg syscall (linux-386), const ONOCR ideal-int +pkg syscall (linux-386), const OPOST ideal-int +pkg syscall (linux-386), const O_ACCMODE ideal-int +pkg syscall (linux-386), const O_DIRECT ideal-int +pkg syscall (linux-386), const O_DIRECTORY ideal-int +pkg syscall (linux-386), const O_DSYNC ideal-int +pkg syscall (linux-386), const O_FSYNC ideal-int +pkg syscall (linux-386), const O_LARGEFILE ideal-int +pkg syscall (linux-386), const O_NDELAY ideal-int +pkg syscall (linux-386), const O_NOATIME ideal-int +pkg syscall (linux-386), const O_NOFOLLOW ideal-int +pkg syscall (linux-386), const O_RSYNC ideal-int +pkg syscall (linux-386), const PACKET_ADD_MEMBERSHIP ideal-int +pkg syscall (linux-386), const PACKET_BROADCAST ideal-int +pkg syscall (linux-386), const PACKET_DROP_MEMBERSHIP ideal-int +pkg syscall (linux-386), const PACKET_FASTROUTE ideal-int +pkg syscall (linux-386), const PACKET_HOST ideal-int +pkg syscall (linux-386), const PACKET_LOOPBACK ideal-int +pkg syscall (linux-386), const PACKET_MR_ALLMULTI ideal-int +pkg syscall (linux-386), const PACKET_MR_MULTICAST ideal-int +pkg syscall (linux-386), const PACKET_MR_PROMISC ideal-int +pkg syscall (linux-386), const PACKET_MULTICAST ideal-int +pkg syscall (linux-386), const PACKET_OTHERHOST ideal-int +pkg syscall (linux-386), const PACKET_OUTGOING ideal-int +pkg syscall (linux-386), const PACKET_RECV_OUTPUT ideal-int +pkg syscall (linux-386), const PACKET_RX_RING ideal-int +pkg syscall (linux-386), const PACKET_STATISTICS ideal-int +pkg syscall (linux-386), const PARENB ideal-int +pkg syscall (linux-386), const PARMRK ideal-int +pkg syscall (linux-386), const PARODD ideal-int +pkg syscall (linux-386), const PENDIN ideal-int +pkg syscall (linux-386), const PROT_EXEC ideal-int +pkg syscall (linux-386), const PROT_GROWSDOWN ideal-int +pkg syscall (linux-386), const PROT_GROWSUP ideal-int +pkg syscall (linux-386), const PROT_NONE ideal-int +pkg syscall (linux-386), const PROT_READ ideal-int +pkg syscall (linux-386), const PROT_WRITE ideal-int +pkg syscall (linux-386), const PR_CAPBSET_DROP ideal-int +pkg syscall (linux-386), const PR_CAPBSET_READ ideal-int +pkg syscall (linux-386), const PR_ENDIAN_BIG ideal-int +pkg syscall (linux-386), const PR_ENDIAN_LITTLE ideal-int +pkg syscall (linux-386), const PR_ENDIAN_PPC_LITTLE ideal-int +pkg syscall (linux-386), const PR_FPEMU_NOPRINT ideal-int +pkg syscall (linux-386), const PR_FPEMU_SIGFPE ideal-int +pkg syscall (linux-386), const PR_FP_EXC_ASYNC ideal-int +pkg syscall (linux-386), const PR_FP_EXC_DISABLED ideal-int +pkg syscall (linux-386), const PR_FP_EXC_DIV ideal-int +pkg syscall (linux-386), const PR_FP_EXC_INV ideal-int +pkg syscall (linux-386), const PR_FP_EXC_NONRECOV ideal-int +pkg syscall (linux-386), const PR_FP_EXC_OVF ideal-int +pkg syscall (linux-386), const PR_FP_EXC_PRECISE ideal-int +pkg syscall (linux-386), const PR_FP_EXC_RES ideal-int +pkg syscall (linux-386), const PR_FP_EXC_SW_ENABLE ideal-int +pkg syscall (linux-386), const PR_FP_EXC_UND ideal-int +pkg syscall (linux-386), const PR_GET_DUMPABLE ideal-int +pkg syscall (linux-386), const PR_GET_ENDIAN ideal-int +pkg syscall (linux-386), const PR_GET_FPEMU ideal-int +pkg syscall (linux-386), const PR_GET_FPEXC ideal-int +pkg syscall (linux-386), const PR_GET_KEEPCAPS ideal-int +pkg syscall (linux-386), const PR_GET_NAME ideal-int +pkg syscall (linux-386), const PR_GET_PDEATHSIG ideal-int +pkg syscall (linux-386), const PR_GET_SECCOMP ideal-int +pkg syscall (linux-386), const PR_GET_SECUREBITS ideal-int +pkg syscall (linux-386), const PR_GET_TIMERSLACK ideal-int +pkg syscall (linux-386), const PR_GET_TIMING ideal-int +pkg syscall (linux-386), const PR_GET_TSC ideal-int +pkg syscall (linux-386), const PR_GET_UNALIGN ideal-int +pkg syscall (linux-386), const PR_MCE_KILL ideal-int +pkg syscall (linux-386), const PR_MCE_KILL_CLEAR ideal-int +pkg syscall (linux-386), const PR_MCE_KILL_DEFAULT ideal-int +pkg syscall (linux-386), const PR_MCE_KILL_EARLY ideal-int +pkg syscall (linux-386), const PR_MCE_KILL_GET ideal-int +pkg syscall (linux-386), const PR_MCE_KILL_LATE ideal-int +pkg syscall (linux-386), const PR_MCE_KILL_SET ideal-int +pkg syscall (linux-386), const PR_SET_DUMPABLE ideal-int +pkg syscall (linux-386), const PR_SET_ENDIAN ideal-int +pkg syscall (linux-386), const PR_SET_FPEMU ideal-int +pkg syscall (linux-386), const PR_SET_FPEXC ideal-int +pkg syscall (linux-386), const PR_SET_KEEPCAPS ideal-int +pkg syscall (linux-386), const PR_SET_NAME ideal-int +pkg syscall (linux-386), const PR_SET_PDEATHSIG ideal-int +pkg syscall (linux-386), const PR_SET_PTRACER ideal-int +pkg syscall (linux-386), const PR_SET_SECCOMP ideal-int +pkg syscall (linux-386), const PR_SET_SECUREBITS ideal-int +pkg syscall (linux-386), const PR_SET_TIMERSLACK ideal-int +pkg syscall (linux-386), const PR_SET_TIMING ideal-int +pkg syscall (linux-386), const PR_SET_TSC ideal-int +pkg syscall (linux-386), const PR_SET_UNALIGN ideal-int +pkg syscall (linux-386), const PR_TASK_PERF_EVENTS_DISABLE ideal-int +pkg syscall (linux-386), const PR_TASK_PERF_EVENTS_ENABLE ideal-int +pkg syscall (linux-386), const PR_TIMING_STATISTICAL ideal-int +pkg syscall (linux-386), const PR_TIMING_TIMESTAMP ideal-int +pkg syscall (linux-386), const PR_TSC_ENABLE ideal-int +pkg syscall (linux-386), const PR_TSC_SIGSEGV ideal-int +pkg syscall (linux-386), const PR_UNALIGN_NOPRINT ideal-int +pkg syscall (linux-386), const PR_UNALIGN_SIGBUS ideal-int +pkg syscall (linux-386), const PTRACE_ATTACH ideal-int +pkg syscall (linux-386), const PTRACE_CONT ideal-int +pkg syscall (linux-386), const PTRACE_DETACH ideal-int +pkg syscall (linux-386), const PTRACE_EVENT_CLONE ideal-int +pkg syscall (linux-386), const PTRACE_EVENT_EXEC ideal-int +pkg syscall (linux-386), const PTRACE_EVENT_EXIT ideal-int +pkg syscall (linux-386), const PTRACE_EVENT_FORK ideal-int +pkg syscall (linux-386), const PTRACE_EVENT_VFORK ideal-int +pkg syscall (linux-386), const PTRACE_EVENT_VFORK_DONE ideal-int +pkg syscall (linux-386), const PTRACE_GETEVENTMSG ideal-int +pkg syscall (linux-386), const PTRACE_GETFPREGS ideal-int +pkg syscall (linux-386), const PTRACE_GETFPXREGS ideal-int +pkg syscall (linux-386), const PTRACE_GETREGS ideal-int +pkg syscall (linux-386), const PTRACE_GETREGSET ideal-int +pkg syscall (linux-386), const PTRACE_GETSIGINFO ideal-int +pkg syscall (linux-386), const PTRACE_GET_THREAD_AREA ideal-int +pkg syscall (linux-386), const PTRACE_KILL ideal-int +pkg syscall (linux-386), const PTRACE_OLDSETOPTIONS ideal-int +pkg syscall (linux-386), const PTRACE_O_MASK ideal-int +pkg syscall (linux-386), const PTRACE_O_TRACECLONE ideal-int +pkg syscall (linux-386), const PTRACE_O_TRACEEXEC ideal-int +pkg syscall (linux-386), const PTRACE_O_TRACEEXIT ideal-int +pkg syscall (linux-386), const PTRACE_O_TRACEFORK ideal-int +pkg syscall (linux-386), const PTRACE_O_TRACESYSGOOD ideal-int +pkg syscall (linux-386), const PTRACE_O_TRACEVFORK ideal-int +pkg syscall (linux-386), const PTRACE_O_TRACEVFORKDONE ideal-int +pkg syscall (linux-386), const PTRACE_PEEKDATA ideal-int +pkg syscall (linux-386), const PTRACE_PEEKTEXT ideal-int +pkg syscall (linux-386), const PTRACE_PEEKUSR ideal-int +pkg syscall (linux-386), const PTRACE_POKEDATA ideal-int +pkg syscall (linux-386), const PTRACE_POKETEXT ideal-int +pkg syscall (linux-386), const PTRACE_POKEUSR ideal-int +pkg syscall (linux-386), const PTRACE_SETFPREGS ideal-int +pkg syscall (linux-386), const PTRACE_SETFPXREGS ideal-int +pkg syscall (linux-386), const PTRACE_SETOPTIONS ideal-int +pkg syscall (linux-386), const PTRACE_SETREGS ideal-int +pkg syscall (linux-386), const PTRACE_SETREGSET ideal-int +pkg syscall (linux-386), const PTRACE_SETSIGINFO ideal-int +pkg syscall (linux-386), const PTRACE_SET_THREAD_AREA ideal-int +pkg syscall (linux-386), const PTRACE_SINGLEBLOCK ideal-int +pkg syscall (linux-386), const PTRACE_SINGLESTEP ideal-int +pkg syscall (linux-386), const PTRACE_SYSCALL ideal-int +pkg syscall (linux-386), const PTRACE_SYSEMU ideal-int +pkg syscall (linux-386), const PTRACE_SYSEMU_SINGLESTEP ideal-int +pkg syscall (linux-386), const PTRACE_TRACEME ideal-int +pkg syscall (linux-386), const PathMax ideal-int +pkg syscall (linux-386), const RLIMIT_AS ideal-int +pkg syscall (linux-386), const RLIMIT_CORE ideal-int +pkg syscall (linux-386), const RLIMIT_CPU ideal-int +pkg syscall (linux-386), const RLIMIT_DATA ideal-int +pkg syscall (linux-386), const RLIMIT_FSIZE ideal-int +pkg syscall (linux-386), const RLIMIT_NOFILE ideal-int +pkg syscall (linux-386), const RLIMIT_STACK ideal-int +pkg syscall (linux-386), const RLIM_INFINITY ideal-int +pkg syscall (linux-386), const RTAX_ADVMSS ideal-int +pkg syscall (linux-386), const RTAX_CWND ideal-int +pkg syscall (linux-386), const RTAX_FEATURES ideal-int +pkg syscall (linux-386), const RTAX_FEATURE_ALLFRAG ideal-int +pkg syscall (linux-386), const RTAX_FEATURE_ECN ideal-int +pkg syscall (linux-386), const RTAX_FEATURE_SACK ideal-int +pkg syscall (linux-386), const RTAX_FEATURE_TIMESTAMP ideal-int +pkg syscall (linux-386), const RTAX_HOPLIMIT ideal-int +pkg syscall (linux-386), const RTAX_INITCWND ideal-int +pkg syscall (linux-386), const RTAX_INITRWND ideal-int +pkg syscall (linux-386), const RTAX_LOCK ideal-int +pkg syscall (linux-386), const RTAX_MAX ideal-int +pkg syscall (linux-386), const RTAX_MTU ideal-int +pkg syscall (linux-386), const RTAX_REORDERING ideal-int +pkg syscall (linux-386), const RTAX_RTO_MIN ideal-int +pkg syscall (linux-386), const RTAX_RTT ideal-int +pkg syscall (linux-386), const RTAX_RTTVAR ideal-int +pkg syscall (linux-386), const RTAX_SSTHRESH ideal-int +pkg syscall (linux-386), const RTAX_UNSPEC ideal-int +pkg syscall (linux-386), const RTAX_WINDOW ideal-int +pkg syscall (linux-386), const RTA_ALIGNTO ideal-int +pkg syscall (linux-386), const RTA_CACHEINFO ideal-int +pkg syscall (linux-386), const RTA_DST ideal-int +pkg syscall (linux-386), const RTA_FLOW ideal-int +pkg syscall (linux-386), const RTA_GATEWAY ideal-int +pkg syscall (linux-386), const RTA_IIF ideal-int +pkg syscall (linux-386), const RTA_MAX ideal-int +pkg syscall (linux-386), const RTA_METRICS ideal-int +pkg syscall (linux-386), const RTA_MULTIPATH ideal-int +pkg syscall (linux-386), const RTA_OIF ideal-int +pkg syscall (linux-386), const RTA_PREFSRC ideal-int +pkg syscall (linux-386), const RTA_PRIORITY ideal-int +pkg syscall (linux-386), const RTA_SRC ideal-int +pkg syscall (linux-386), const RTA_TABLE ideal-int +pkg syscall (linux-386), const RTA_UNSPEC ideal-int +pkg syscall (linux-386), const RTCF_DIRECTSRC ideal-int +pkg syscall (linux-386), const RTCF_DOREDIRECT ideal-int +pkg syscall (linux-386), const RTCF_LOG ideal-int +pkg syscall (linux-386), const RTCF_MASQ ideal-int +pkg syscall (linux-386), const RTCF_NAT ideal-int +pkg syscall (linux-386), const RTCF_VALVE ideal-int +pkg syscall (linux-386), const RTF_ADDRCLASSMASK ideal-int +pkg syscall (linux-386), const RTF_ADDRCONF ideal-int +pkg syscall (linux-386), const RTF_ALLONLINK ideal-int +pkg syscall (linux-386), const RTF_BROADCAST ideal-int +pkg syscall (linux-386), const RTF_CACHE ideal-int +pkg syscall (linux-386), const RTF_DEFAULT ideal-int +pkg syscall (linux-386), const RTF_DYNAMIC ideal-int +pkg syscall (linux-386), const RTF_FLOW ideal-int +pkg syscall (linux-386), const RTF_GATEWAY ideal-int +pkg syscall (linux-386), const RTF_HOST ideal-int +pkg syscall (linux-386), const RTF_INTERFACE ideal-int +pkg syscall (linux-386), const RTF_IRTT ideal-int +pkg syscall (linux-386), const RTF_LINKRT ideal-int +pkg syscall (linux-386), const RTF_LOCAL ideal-int +pkg syscall (linux-386), const RTF_MODIFIED ideal-int +pkg syscall (linux-386), const RTF_MSS ideal-int +pkg syscall (linux-386), const RTF_MTU ideal-int +pkg syscall (linux-386), const RTF_MULTICAST ideal-int +pkg syscall (linux-386), const RTF_NAT ideal-int +pkg syscall (linux-386), const RTF_NOFORWARD ideal-int +pkg syscall (linux-386), const RTF_NONEXTHOP ideal-int +pkg syscall (linux-386), const RTF_NOPMTUDISC ideal-int +pkg syscall (linux-386), const RTF_POLICY ideal-int +pkg syscall (linux-386), const RTF_REINSTATE ideal-int +pkg syscall (linux-386), const RTF_REJECT ideal-int +pkg syscall (linux-386), const RTF_STATIC ideal-int +pkg syscall (linux-386), const RTF_THROW ideal-int +pkg syscall (linux-386), const RTF_UP ideal-int +pkg syscall (linux-386), const RTF_WINDOW ideal-int +pkg syscall (linux-386), const RTF_XRESOLVE ideal-int +pkg syscall (linux-386), const RTM_BASE ideal-int +pkg syscall (linux-386), const RTM_DELACTION ideal-int +pkg syscall (linux-386), const RTM_DELADDR ideal-int +pkg syscall (linux-386), const RTM_DELADDRLABEL ideal-int +pkg syscall (linux-386), const RTM_DELLINK ideal-int +pkg syscall (linux-386), const RTM_DELNEIGH ideal-int +pkg syscall (linux-386), const RTM_DELQDISC ideal-int +pkg syscall (linux-386), const RTM_DELROUTE ideal-int +pkg syscall (linux-386), const RTM_DELRULE ideal-int +pkg syscall (linux-386), const RTM_DELTCLASS ideal-int +pkg syscall (linux-386), const RTM_DELTFILTER ideal-int +pkg syscall (linux-386), const RTM_F_CLONED ideal-int +pkg syscall (linux-386), const RTM_F_EQUALIZE ideal-int +pkg syscall (linux-386), const RTM_F_NOTIFY ideal-int +pkg syscall (linux-386), const RTM_F_PREFIX ideal-int +pkg syscall (linux-386), const RTM_GETACTION ideal-int +pkg syscall (linux-386), const RTM_GETADDR ideal-int +pkg syscall (linux-386), const RTM_GETADDRLABEL ideal-int +pkg syscall (linux-386), const RTM_GETANYCAST ideal-int +pkg syscall (linux-386), const RTM_GETDCB ideal-int +pkg syscall (linux-386), const RTM_GETLINK ideal-int +pkg syscall (linux-386), const RTM_GETMULTICAST ideal-int +pkg syscall (linux-386), const RTM_GETNEIGH ideal-int +pkg syscall (linux-386), const RTM_GETNEIGHTBL ideal-int +pkg syscall (linux-386), const RTM_GETQDISC ideal-int +pkg syscall (linux-386), const RTM_GETROUTE ideal-int +pkg syscall (linux-386), const RTM_GETRULE ideal-int +pkg syscall (linux-386), const RTM_GETTCLASS ideal-int +pkg syscall (linux-386), const RTM_GETTFILTER ideal-int +pkg syscall (linux-386), const RTM_MAX ideal-int +pkg syscall (linux-386), const RTM_NEWACTION ideal-int +pkg syscall (linux-386), const RTM_NEWADDR ideal-int +pkg syscall (linux-386), const RTM_NEWADDRLABEL ideal-int +pkg syscall (linux-386), const RTM_NEWLINK ideal-int +pkg syscall (linux-386), const RTM_NEWNDUSEROPT ideal-int +pkg syscall (linux-386), const RTM_NEWNEIGH ideal-int +pkg syscall (linux-386), const RTM_NEWNEIGHTBL ideal-int +pkg syscall (linux-386), const RTM_NEWPREFIX ideal-int +pkg syscall (linux-386), const RTM_NEWQDISC ideal-int +pkg syscall (linux-386), const RTM_NEWROUTE ideal-int +pkg syscall (linux-386), const RTM_NEWRULE ideal-int +pkg syscall (linux-386), const RTM_NEWTCLASS ideal-int +pkg syscall (linux-386), const RTM_NEWTFILTER ideal-int +pkg syscall (linux-386), const RTM_NR_FAMILIES ideal-int +pkg syscall (linux-386), const RTM_NR_MSGTYPES ideal-int +pkg syscall (linux-386), const RTM_SETDCB ideal-int +pkg syscall (linux-386), const RTM_SETLINK ideal-int +pkg syscall (linux-386), const RTM_SETNEIGHTBL ideal-int +pkg syscall (linux-386), const RTNH_ALIGNTO ideal-int +pkg syscall (linux-386), const RTNH_F_DEAD ideal-int +pkg syscall (linux-386), const RTNH_F_ONLINK ideal-int +pkg syscall (linux-386), const RTNH_F_PERVASIVE ideal-int +pkg syscall (linux-386), const RTN_ANYCAST ideal-int +pkg syscall (linux-386), const RTN_BLACKHOLE ideal-int +pkg syscall (linux-386), const RTN_BROADCAST ideal-int +pkg syscall (linux-386), const RTN_LOCAL ideal-int +pkg syscall (linux-386), const RTN_MAX ideal-int +pkg syscall (linux-386), const RTN_MULTICAST ideal-int +pkg syscall (linux-386), const RTN_NAT ideal-int +pkg syscall (linux-386), const RTN_PROHIBIT ideal-int +pkg syscall (linux-386), const RTN_THROW ideal-int +pkg syscall (linux-386), const RTN_UNICAST ideal-int +pkg syscall (linux-386), const RTN_UNREACHABLE ideal-int +pkg syscall (linux-386), const RTN_UNSPEC ideal-int +pkg syscall (linux-386), const RTN_XRESOLVE ideal-int +pkg syscall (linux-386), const RTPROT_BIRD ideal-int +pkg syscall (linux-386), const RTPROT_BOOT ideal-int +pkg syscall (linux-386), const RTPROT_DHCP ideal-int +pkg syscall (linux-386), const RTPROT_DNROUTED ideal-int +pkg syscall (linux-386), const RTPROT_GATED ideal-int +pkg syscall (linux-386), const RTPROT_KERNEL ideal-int +pkg syscall (linux-386), const RTPROT_MRT ideal-int +pkg syscall (linux-386), const RTPROT_NTK ideal-int +pkg syscall (linux-386), const RTPROT_RA ideal-int +pkg syscall (linux-386), const RTPROT_REDIRECT ideal-int +pkg syscall (linux-386), const RTPROT_STATIC ideal-int +pkg syscall (linux-386), const RTPROT_UNSPEC ideal-int +pkg syscall (linux-386), const RTPROT_XORP ideal-int +pkg syscall (linux-386), const RTPROT_ZEBRA ideal-int +pkg syscall (linux-386), const RT_CLASS_DEFAULT ideal-int +pkg syscall (linux-386), const RT_CLASS_LOCAL ideal-int +pkg syscall (linux-386), const RT_CLASS_MAIN ideal-int +pkg syscall (linux-386), const RT_CLASS_MAX ideal-int +pkg syscall (linux-386), const RT_CLASS_UNSPEC ideal-int +pkg syscall (linux-386), const RT_SCOPE_HOST ideal-int +pkg syscall (linux-386), const RT_SCOPE_LINK ideal-int +pkg syscall (linux-386), const RT_SCOPE_NOWHERE ideal-int +pkg syscall (linux-386), const RT_SCOPE_SITE ideal-int +pkg syscall (linux-386), const RT_SCOPE_UNIVERSE ideal-int +pkg syscall (linux-386), const RT_TABLE_COMPAT ideal-int +pkg syscall (linux-386), const RT_TABLE_DEFAULT ideal-int +pkg syscall (linux-386), const RT_TABLE_LOCAL ideal-int +pkg syscall (linux-386), const RT_TABLE_MAIN ideal-int +pkg syscall (linux-386), const RT_TABLE_MAX ideal-int +pkg syscall (linux-386), const RT_TABLE_UNSPEC ideal-int +pkg syscall (linux-386), const RUSAGE_CHILDREN ideal-int +pkg syscall (linux-386), const RUSAGE_SELF ideal-int +pkg syscall (linux-386), const RUSAGE_THREAD ideal-int +pkg syscall (linux-386), const SCM_CREDENTIALS ideal-int +pkg syscall (linux-386), const SCM_RIGHTS ideal-int +pkg syscall (linux-386), const SCM_TIMESTAMP ideal-int +pkg syscall (linux-386), const SCM_TIMESTAMPING ideal-int +pkg syscall (linux-386), const SCM_TIMESTAMPNS ideal-int +pkg syscall (linux-386), const SIGCHLD Signal +pkg syscall (linux-386), const SIGCLD Signal +pkg syscall (linux-386), const SIGCONT Signal +pkg syscall (linux-386), const SIGIO Signal +pkg syscall (linux-386), const SIGIOT Signal +pkg syscall (linux-386), const SIGPOLL Signal +pkg syscall (linux-386), const SIGPROF Signal +pkg syscall (linux-386), const SIGPWR Signal +pkg syscall (linux-386), const SIGSTKFLT Signal +pkg syscall (linux-386), const SIGSTOP Signal +pkg syscall (linux-386), const SIGSYS Signal +pkg syscall (linux-386), const SIGTSTP Signal +pkg syscall (linux-386), const SIGTTIN Signal +pkg syscall (linux-386), const SIGTTOU Signal +pkg syscall (linux-386), const SIGUNUSED Signal +pkg syscall (linux-386), const SIGURG Signal +pkg syscall (linux-386), const SIGUSR1 Signal +pkg syscall (linux-386), const SIGUSR2 Signal +pkg syscall (linux-386), const SIGVTALRM Signal +pkg syscall (linux-386), const SIGWINCH Signal +pkg syscall (linux-386), const SIGXCPU Signal +pkg syscall (linux-386), const SIGXFSZ Signal +pkg syscall (linux-386), const SIOCADDDLCI ideal-int +pkg syscall (linux-386), const SIOCADDMULTI ideal-int +pkg syscall (linux-386), const SIOCADDRT ideal-int +pkg syscall (linux-386), const SIOCATMARK ideal-int +pkg syscall (linux-386), const SIOCDARP ideal-int +pkg syscall (linux-386), const SIOCDELDLCI ideal-int +pkg syscall (linux-386), const SIOCDELMULTI ideal-int +pkg syscall (linux-386), const SIOCDELRT ideal-int +pkg syscall (linux-386), const SIOCDEVPRIVATE ideal-int +pkg syscall (linux-386), const SIOCDIFADDR ideal-int +pkg syscall (linux-386), const SIOCDRARP ideal-int +pkg syscall (linux-386), const SIOCGARP ideal-int +pkg syscall (linux-386), const SIOCGIFADDR ideal-int +pkg syscall (linux-386), const SIOCGIFBR ideal-int +pkg syscall (linux-386), const SIOCGIFBRDADDR ideal-int +pkg syscall (linux-386), const SIOCGIFCONF ideal-int +pkg syscall (linux-386), const SIOCGIFCOUNT ideal-int +pkg syscall (linux-386), const SIOCGIFDSTADDR ideal-int +pkg syscall (linux-386), const SIOCGIFENCAP ideal-int +pkg syscall (linux-386), const SIOCGIFFLAGS ideal-int +pkg syscall (linux-386), const SIOCGIFHWADDR ideal-int +pkg syscall (linux-386), const SIOCGIFINDEX ideal-int +pkg syscall (linux-386), const SIOCGIFMAP ideal-int +pkg syscall (linux-386), const SIOCGIFMEM ideal-int +pkg syscall (linux-386), const SIOCGIFMETRIC ideal-int +pkg syscall (linux-386), const SIOCGIFMTU ideal-int +pkg syscall (linux-386), const SIOCGIFNAME ideal-int +pkg syscall (linux-386), const SIOCGIFNETMASK ideal-int +pkg syscall (linux-386), const SIOCGIFPFLAGS ideal-int +pkg syscall (linux-386), const SIOCGIFSLAVE ideal-int +pkg syscall (linux-386), const SIOCGIFTXQLEN ideal-int +pkg syscall (linux-386), const SIOCGPGRP ideal-int +pkg syscall (linux-386), const SIOCGRARP ideal-int +pkg syscall (linux-386), const SIOCGSTAMP ideal-int +pkg syscall (linux-386), const SIOCGSTAMPNS ideal-int +pkg syscall (linux-386), const SIOCPROTOPRIVATE ideal-int +pkg syscall (linux-386), const SIOCRTMSG ideal-int +pkg syscall (linux-386), const SIOCSARP ideal-int +pkg syscall (linux-386), const SIOCSIFADDR ideal-int +pkg syscall (linux-386), const SIOCSIFBR ideal-int +pkg syscall (linux-386), const SIOCSIFBRDADDR ideal-int +pkg syscall (linux-386), const SIOCSIFDSTADDR ideal-int +pkg syscall (linux-386), const SIOCSIFENCAP ideal-int +pkg syscall (linux-386), const SIOCSIFFLAGS ideal-int +pkg syscall (linux-386), const SIOCSIFHWADDR ideal-int +pkg syscall (linux-386), const SIOCSIFHWBROADCAST ideal-int +pkg syscall (linux-386), const SIOCSIFLINK ideal-int +pkg syscall (linux-386), const SIOCSIFMAP ideal-int +pkg syscall (linux-386), const SIOCSIFMEM ideal-int +pkg syscall (linux-386), const SIOCSIFMETRIC ideal-int +pkg syscall (linux-386), const SIOCSIFMTU ideal-int +pkg syscall (linux-386), const SIOCSIFNAME ideal-int +pkg syscall (linux-386), const SIOCSIFNETMASK ideal-int +pkg syscall (linux-386), const SIOCSIFPFLAGS ideal-int +pkg syscall (linux-386), const SIOCSIFSLAVE ideal-int +pkg syscall (linux-386), const SIOCSIFTXQLEN ideal-int +pkg syscall (linux-386), const SIOCSPGRP ideal-int +pkg syscall (linux-386), const SIOCSRARP ideal-int +pkg syscall (linux-386), const SOCK_CLOEXEC ideal-int +pkg syscall (linux-386), const SOCK_DCCP ideal-int +pkg syscall (linux-386), const SOCK_NONBLOCK ideal-int +pkg syscall (linux-386), const SOCK_PACKET ideal-int +pkg syscall (linux-386), const SOCK_RDM ideal-int +pkg syscall (linux-386), const SOL_AAL ideal-int +pkg syscall (linux-386), const SOL_ATM ideal-int +pkg syscall (linux-386), const SOL_DECNET ideal-int +pkg syscall (linux-386), const SOL_ICMPV6 ideal-int +pkg syscall (linux-386), const SOL_IP ideal-int +pkg syscall (linux-386), const SOL_IPV6 ideal-int +pkg syscall (linux-386), const SOL_IRDA ideal-int +pkg syscall (linux-386), const SOL_PACKET ideal-int +pkg syscall (linux-386), const SOL_RAW ideal-int +pkg syscall (linux-386), const SOL_TCP ideal-int +pkg syscall (linux-386), const SOL_X25 ideal-int +pkg syscall (linux-386), const SO_ACCEPTCONN ideal-int +pkg syscall (linux-386), const SO_ATTACH_FILTER ideal-int +pkg syscall (linux-386), const SO_BINDTODEVICE ideal-int +pkg syscall (linux-386), const SO_BSDCOMPAT ideal-int +pkg syscall (linux-386), const SO_DEBUG ideal-int +pkg syscall (linux-386), const SO_DETACH_FILTER ideal-int +pkg syscall (linux-386), const SO_DOMAIN ideal-int +pkg syscall (linux-386), const SO_ERROR ideal-int +pkg syscall (linux-386), const SO_MARK ideal-int +pkg syscall (linux-386), const SO_NO_CHECK ideal-int +pkg syscall (linux-386), const SO_OOBINLINE ideal-int +pkg syscall (linux-386), const SO_PASSCRED ideal-int +pkg syscall (linux-386), const SO_PASSSEC ideal-int +pkg syscall (linux-386), const SO_PEERCRED ideal-int +pkg syscall (linux-386), const SO_PEERNAME ideal-int +pkg syscall (linux-386), const SO_PEERSEC ideal-int +pkg syscall (linux-386), const SO_PRIORITY ideal-int +pkg syscall (linux-386), const SO_PROTOCOL ideal-int +pkg syscall (linux-386), const SO_RCVBUFFORCE ideal-int +pkg syscall (linux-386), const SO_RCVLOWAT ideal-int +pkg syscall (linux-386), const SO_RCVTIMEO ideal-int +pkg syscall (linux-386), const SO_RXQ_OVFL ideal-int +pkg syscall (linux-386), const SO_SECURITY_AUTHENTICATION ideal-int +pkg syscall (linux-386), const SO_SECURITY_ENCRYPTION_NETWORK ideal-int +pkg syscall (linux-386), const SO_SECURITY_ENCRYPTION_TRANSPORT ideal-int +pkg syscall (linux-386), const SO_SNDBUFFORCE ideal-int +pkg syscall (linux-386), const SO_SNDLOWAT ideal-int +pkg syscall (linux-386), const SO_SNDTIMEO ideal-int +pkg syscall (linux-386), const SO_TIMESTAMP ideal-int +pkg syscall (linux-386), const SO_TIMESTAMPING ideal-int +pkg syscall (linux-386), const SO_TIMESTAMPNS ideal-int +pkg syscall (linux-386), const SO_TYPE ideal-int +pkg syscall (linux-386), const SYS_ACCESS ideal-int +pkg syscall (linux-386), const SYS_ACCT ideal-int +pkg syscall (linux-386), const SYS_ADD_KEY ideal-int +pkg syscall (linux-386), const SYS_ADJTIMEX ideal-int +pkg syscall (linux-386), const SYS_AFS_SYSCALL ideal-int +pkg syscall (linux-386), const SYS_ALARM ideal-int +pkg syscall (linux-386), const SYS_BDFLUSH ideal-int +pkg syscall (linux-386), const SYS_BREAK ideal-int +pkg syscall (linux-386), const SYS_BRK ideal-int +pkg syscall (linux-386), const SYS_CAPGET ideal-int +pkg syscall (linux-386), const SYS_CAPSET ideal-int +pkg syscall (linux-386), const SYS_CHDIR ideal-int +pkg syscall (linux-386), const SYS_CHMOD ideal-int +pkg syscall (linux-386), const SYS_CHOWN ideal-int +pkg syscall (linux-386), const SYS_CHOWN32 ideal-int +pkg syscall (linux-386), const SYS_CHROOT ideal-int +pkg syscall (linux-386), const SYS_CLOCK_GETRES ideal-int +pkg syscall (linux-386), const SYS_CLOCK_GETTIME ideal-int +pkg syscall (linux-386), const SYS_CLOCK_NANOSLEEP ideal-int +pkg syscall (linux-386), const SYS_CLOCK_SETTIME ideal-int +pkg syscall (linux-386), const SYS_CLONE ideal-int +pkg syscall (linux-386), const SYS_CLOSE ideal-int +pkg syscall (linux-386), const SYS_CREAT ideal-int +pkg syscall (linux-386), const SYS_CREATE_MODULE ideal-int +pkg syscall (linux-386), const SYS_DELETE_MODULE ideal-int +pkg syscall (linux-386), const SYS_DUP ideal-int +pkg syscall (linux-386), const SYS_DUP2 ideal-int +pkg syscall (linux-386), const SYS_DUP3 ideal-int +pkg syscall (linux-386), const SYS_EPOLL_CREATE ideal-int +pkg syscall (linux-386), const SYS_EPOLL_CREATE1 ideal-int +pkg syscall (linux-386), const SYS_EPOLL_CTL ideal-int +pkg syscall (linux-386), const SYS_EPOLL_PWAIT ideal-int +pkg syscall (linux-386), const SYS_EPOLL_WAIT ideal-int +pkg syscall (linux-386), const SYS_EVENTFD ideal-int +pkg syscall (linux-386), const SYS_EVENTFD2 ideal-int +pkg syscall (linux-386), const SYS_EXECVE ideal-int +pkg syscall (linux-386), const SYS_EXIT ideal-int +pkg syscall (linux-386), const SYS_EXIT_GROUP ideal-int +pkg syscall (linux-386), const SYS_FACCESSAT ideal-int +pkg syscall (linux-386), const SYS_FADVISE64 ideal-int +pkg syscall (linux-386), const SYS_FADVISE64_64 ideal-int +pkg syscall (linux-386), const SYS_FALLOCATE ideal-int +pkg syscall (linux-386), const SYS_FANOTIFY_INIT ideal-int +pkg syscall (linux-386), const SYS_FANOTIFY_MARK ideal-int +pkg syscall (linux-386), const SYS_FCHDIR ideal-int +pkg syscall (linux-386), const SYS_FCHMOD ideal-int +pkg syscall (linux-386), const SYS_FCHMODAT ideal-int +pkg syscall (linux-386), const SYS_FCHOWN ideal-int +pkg syscall (linux-386), const SYS_FCHOWN32 ideal-int +pkg syscall (linux-386), const SYS_FCHOWNAT ideal-int +pkg syscall (linux-386), const SYS_FCNTL ideal-int +pkg syscall (linux-386), const SYS_FCNTL64 ideal-int +pkg syscall (linux-386), const SYS_FDATASYNC ideal-int +pkg syscall (linux-386), const SYS_FGETXATTR ideal-int +pkg syscall (linux-386), const SYS_FLISTXATTR ideal-int +pkg syscall (linux-386), const SYS_FLOCK ideal-int +pkg syscall (linux-386), const SYS_FORK ideal-int +pkg syscall (linux-386), const SYS_FREMOVEXATTR ideal-int +pkg syscall (linux-386), const SYS_FSETXATTR ideal-int +pkg syscall (linux-386), const SYS_FSTAT ideal-int +pkg syscall (linux-386), const SYS_FSTAT64 ideal-int +pkg syscall (linux-386), const SYS_FSTATAT64 ideal-int +pkg syscall (linux-386), const SYS_FSTATFS ideal-int +pkg syscall (linux-386), const SYS_FSTATFS64 ideal-int +pkg syscall (linux-386), const SYS_FSYNC ideal-int +pkg syscall (linux-386), const SYS_FTIME ideal-int +pkg syscall (linux-386), const SYS_FTRUNCATE ideal-int +pkg syscall (linux-386), const SYS_FTRUNCATE64 ideal-int +pkg syscall (linux-386), const SYS_FUTEX ideal-int +pkg syscall (linux-386), const SYS_FUTIMESAT ideal-int +pkg syscall (linux-386), const SYS_GETCPU ideal-int +pkg syscall (linux-386), const SYS_GETCWD ideal-int +pkg syscall (linux-386), const SYS_GETDENTS ideal-int +pkg syscall (linux-386), const SYS_GETDENTS64 ideal-int +pkg syscall (linux-386), const SYS_GETEGID ideal-int +pkg syscall (linux-386), const SYS_GETEGID32 ideal-int +pkg syscall (linux-386), const SYS_GETEUID ideal-int +pkg syscall (linux-386), const SYS_GETEUID32 ideal-int +pkg syscall (linux-386), const SYS_GETGID ideal-int +pkg syscall (linux-386), const SYS_GETGID32 ideal-int +pkg syscall (linux-386), const SYS_GETGROUPS ideal-int +pkg syscall (linux-386), const SYS_GETGROUPS32 ideal-int +pkg syscall (linux-386), const SYS_GETITIMER ideal-int +pkg syscall (linux-386), const SYS_GETPGID ideal-int +pkg syscall (linux-386), const SYS_GETPGRP ideal-int +pkg syscall (linux-386), const SYS_GETPID ideal-int +pkg syscall (linux-386), const SYS_GETPMSG ideal-int +pkg syscall (linux-386), const SYS_GETPPID ideal-int +pkg syscall (linux-386), const SYS_GETPRIORITY ideal-int +pkg syscall (linux-386), const SYS_GETRESGID ideal-int +pkg syscall (linux-386), const SYS_GETRESGID32 ideal-int +pkg syscall (linux-386), const SYS_GETRESUID ideal-int +pkg syscall (linux-386), const SYS_GETRESUID32 ideal-int +pkg syscall (linux-386), const SYS_GETRLIMIT ideal-int +pkg syscall (linux-386), const SYS_GETRUSAGE ideal-int +pkg syscall (linux-386), const SYS_GETSID ideal-int +pkg syscall (linux-386), const SYS_GETTID ideal-int +pkg syscall (linux-386), const SYS_GETTIMEOFDAY ideal-int +pkg syscall (linux-386), const SYS_GETUID ideal-int +pkg syscall (linux-386), const SYS_GETUID32 ideal-int +pkg syscall (linux-386), const SYS_GETXATTR ideal-int +pkg syscall (linux-386), const SYS_GET_KERNEL_SYMS ideal-int +pkg syscall (linux-386), const SYS_GET_MEMPOLICY ideal-int +pkg syscall (linux-386), const SYS_GET_ROBUST_LIST ideal-int +pkg syscall (linux-386), const SYS_GET_THREAD_AREA ideal-int +pkg syscall (linux-386), const SYS_GTTY ideal-int +pkg syscall (linux-386), const SYS_IDLE ideal-int +pkg syscall (linux-386), const SYS_INIT_MODULE ideal-int +pkg syscall (linux-386), const SYS_INOTIFY_ADD_WATCH ideal-int +pkg syscall (linux-386), const SYS_INOTIFY_INIT ideal-int +pkg syscall (linux-386), const SYS_INOTIFY_INIT1 ideal-int +pkg syscall (linux-386), const SYS_INOTIFY_RM_WATCH ideal-int +pkg syscall (linux-386), const SYS_IOCTL ideal-int +pkg syscall (linux-386), const SYS_IOPERM ideal-int +pkg syscall (linux-386), const SYS_IOPL ideal-int +pkg syscall (linux-386), const SYS_IOPRIO_GET ideal-int +pkg syscall (linux-386), const SYS_IOPRIO_SET ideal-int +pkg syscall (linux-386), const SYS_IO_CANCEL ideal-int +pkg syscall (linux-386), const SYS_IO_DESTROY ideal-int +pkg syscall (linux-386), const SYS_IO_GETEVENTS ideal-int +pkg syscall (linux-386), const SYS_IO_SETUP ideal-int +pkg syscall (linux-386), const SYS_IO_SUBMIT ideal-int +pkg syscall (linux-386), const SYS_IPC ideal-int +pkg syscall (linux-386), const SYS_KEXEC_LOAD ideal-int +pkg syscall (linux-386), const SYS_KEYCTL ideal-int +pkg syscall (linux-386), const SYS_KILL ideal-int +pkg syscall (linux-386), const SYS_LCHOWN ideal-int +pkg syscall (linux-386), const SYS_LCHOWN32 ideal-int +pkg syscall (linux-386), const SYS_LGETXATTR ideal-int +pkg syscall (linux-386), const SYS_LINK ideal-int +pkg syscall (linux-386), const SYS_LINKAT ideal-int +pkg syscall (linux-386), const SYS_LISTXATTR ideal-int +pkg syscall (linux-386), const SYS_LLISTXATTR ideal-int +pkg syscall (linux-386), const SYS_LOCK ideal-int +pkg syscall (linux-386), const SYS_LOOKUP_DCOOKIE ideal-int +pkg syscall (linux-386), const SYS_LREMOVEXATTR ideal-int +pkg syscall (linux-386), const SYS_LSEEK ideal-int +pkg syscall (linux-386), const SYS_LSETXATTR ideal-int +pkg syscall (linux-386), const SYS_LSTAT ideal-int +pkg syscall (linux-386), const SYS_LSTAT64 ideal-int +pkg syscall (linux-386), const SYS_MADVISE ideal-int +pkg syscall (linux-386), const SYS_MADVISE1 ideal-int +pkg syscall (linux-386), const SYS_MBIND ideal-int +pkg syscall (linux-386), const SYS_MIGRATE_PAGES ideal-int +pkg syscall (linux-386), const SYS_MINCORE ideal-int +pkg syscall (linux-386), const SYS_MKDIR ideal-int +pkg syscall (linux-386), const SYS_MKDIRAT ideal-int +pkg syscall (linux-386), const SYS_MKNOD ideal-int +pkg syscall (linux-386), const SYS_MKNODAT ideal-int +pkg syscall (linux-386), const SYS_MLOCK ideal-int +pkg syscall (linux-386), const SYS_MLOCKALL ideal-int +pkg syscall (linux-386), const SYS_MMAP ideal-int +pkg syscall (linux-386), const SYS_MMAP2 ideal-int +pkg syscall (linux-386), const SYS_MODIFY_LDT ideal-int +pkg syscall (linux-386), const SYS_MOUNT ideal-int +pkg syscall (linux-386), const SYS_MOVE_PAGES ideal-int +pkg syscall (linux-386), const SYS_MPROTECT ideal-int +pkg syscall (linux-386), const SYS_MPX ideal-int +pkg syscall (linux-386), const SYS_MQ_GETSETATTR ideal-int +pkg syscall (linux-386), const SYS_MQ_NOTIFY ideal-int +pkg syscall (linux-386), const SYS_MQ_OPEN ideal-int +pkg syscall (linux-386), const SYS_MQ_TIMEDRECEIVE ideal-int +pkg syscall (linux-386), const SYS_MQ_TIMEDSEND ideal-int +pkg syscall (linux-386), const SYS_MQ_UNLINK ideal-int +pkg syscall (linux-386), const SYS_MREMAP ideal-int +pkg syscall (linux-386), const SYS_MSYNC ideal-int +pkg syscall (linux-386), const SYS_MUNLOCK ideal-int +pkg syscall (linux-386), const SYS_MUNLOCKALL ideal-int +pkg syscall (linux-386), const SYS_MUNMAP ideal-int +pkg syscall (linux-386), const SYS_NANOSLEEP ideal-int +pkg syscall (linux-386), const SYS_NFSSERVCTL ideal-int +pkg syscall (linux-386), const SYS_NICE ideal-int +pkg syscall (linux-386), const SYS_OLDFSTAT ideal-int +pkg syscall (linux-386), const SYS_OLDLSTAT ideal-int +pkg syscall (linux-386), const SYS_OLDOLDUNAME ideal-int +pkg syscall (linux-386), const SYS_OLDSTAT ideal-int +pkg syscall (linux-386), const SYS_OLDUNAME ideal-int +pkg syscall (linux-386), const SYS_OPEN ideal-int +pkg syscall (linux-386), const SYS_OPENAT ideal-int +pkg syscall (linux-386), const SYS_PAUSE ideal-int +pkg syscall (linux-386), const SYS_PERF_EVENT_OPEN ideal-int +pkg syscall (linux-386), const SYS_PERSONALITY ideal-int +pkg syscall (linux-386), const SYS_PIPE ideal-int +pkg syscall (linux-386), const SYS_PIPE2 ideal-int +pkg syscall (linux-386), const SYS_PIVOT_ROOT ideal-int +pkg syscall (linux-386), const SYS_POLL ideal-int +pkg syscall (linux-386), const SYS_PPOLL ideal-int +pkg syscall (linux-386), const SYS_PRCTL ideal-int +pkg syscall (linux-386), const SYS_PREAD64 ideal-int +pkg syscall (linux-386), const SYS_PREADV ideal-int +pkg syscall (linux-386), const SYS_PRLIMIT64 ideal-int +pkg syscall (linux-386), const SYS_PROF ideal-int +pkg syscall (linux-386), const SYS_PROFIL ideal-int +pkg syscall (linux-386), const SYS_PSELECT6 ideal-int +pkg syscall (linux-386), const SYS_PTRACE ideal-int +pkg syscall (linux-386), const SYS_PUTPMSG ideal-int +pkg syscall (linux-386), const SYS_PWRITE64 ideal-int +pkg syscall (linux-386), const SYS_PWRITEV ideal-int +pkg syscall (linux-386), const SYS_QUERY_MODULE ideal-int +pkg syscall (linux-386), const SYS_QUOTACTL ideal-int +pkg syscall (linux-386), const SYS_READ ideal-int +pkg syscall (linux-386), const SYS_READAHEAD ideal-int +pkg syscall (linux-386), const SYS_READDIR ideal-int +pkg syscall (linux-386), const SYS_READLINK ideal-int +pkg syscall (linux-386), const SYS_READLINKAT ideal-int +pkg syscall (linux-386), const SYS_READV ideal-int +pkg syscall (linux-386), const SYS_REBOOT ideal-int +pkg syscall (linux-386), const SYS_RECVMMSG ideal-int +pkg syscall (linux-386), const SYS_REMAP_FILE_PAGES ideal-int +pkg syscall (linux-386), const SYS_REMOVEXATTR ideal-int +pkg syscall (linux-386), const SYS_RENAME ideal-int +pkg syscall (linux-386), const SYS_RENAMEAT ideal-int +pkg syscall (linux-386), const SYS_REQUEST_KEY ideal-int +pkg syscall (linux-386), const SYS_RESTART_SYSCALL ideal-int +pkg syscall (linux-386), const SYS_RMDIR ideal-int +pkg syscall (linux-386), const SYS_RT_SIGACTION ideal-int +pkg syscall (linux-386), const SYS_RT_SIGPENDING ideal-int +pkg syscall (linux-386), const SYS_RT_SIGPROCMASK ideal-int +pkg syscall (linux-386), const SYS_RT_SIGQUEUEINFO ideal-int +pkg syscall (linux-386), const SYS_RT_SIGRETURN ideal-int +pkg syscall (linux-386), const SYS_RT_SIGSUSPEND ideal-int +pkg syscall (linux-386), const SYS_RT_SIGTIMEDWAIT ideal-int +pkg syscall (linux-386), const SYS_RT_TGSIGQUEUEINFO ideal-int +pkg syscall (linux-386), const SYS_SCHED_GETAFFINITY ideal-int +pkg syscall (linux-386), const SYS_SCHED_GETPARAM ideal-int +pkg syscall (linux-386), const SYS_SCHED_GETSCHEDULER ideal-int +pkg syscall (linux-386), const SYS_SCHED_GET_PRIORITY_MAX ideal-int +pkg syscall (linux-386), const SYS_SCHED_GET_PRIORITY_MIN ideal-int +pkg syscall (linux-386), const SYS_SCHED_RR_GET_INTERVAL ideal-int +pkg syscall (linux-386), const SYS_SCHED_SETAFFINITY ideal-int +pkg syscall (linux-386), const SYS_SCHED_SETPARAM ideal-int +pkg syscall (linux-386), const SYS_SCHED_SETSCHEDULER ideal-int +pkg syscall (linux-386), const SYS_SCHED_YIELD ideal-int +pkg syscall (linux-386), const SYS_SELECT ideal-int +pkg syscall (linux-386), const SYS_SENDFILE ideal-int +pkg syscall (linux-386), const SYS_SENDFILE64 ideal-int +pkg syscall (linux-386), const SYS_SETDOMAINNAME ideal-int +pkg syscall (linux-386), const SYS_SETFSGID ideal-int +pkg syscall (linux-386), const SYS_SETFSGID32 ideal-int +pkg syscall (linux-386), const SYS_SETFSUID ideal-int +pkg syscall (linux-386), const SYS_SETFSUID32 ideal-int +pkg syscall (linux-386), const SYS_SETGID ideal-int +pkg syscall (linux-386), const SYS_SETGID32 ideal-int +pkg syscall (linux-386), const SYS_SETGROUPS ideal-int +pkg syscall (linux-386), const SYS_SETGROUPS32 ideal-int +pkg syscall (linux-386), const SYS_SETHOSTNAME ideal-int +pkg syscall (linux-386), const SYS_SETITIMER ideal-int +pkg syscall (linux-386), const SYS_SETPGID ideal-int +pkg syscall (linux-386), const SYS_SETPRIORITY ideal-int +pkg syscall (linux-386), const SYS_SETREGID ideal-int +pkg syscall (linux-386), const SYS_SETREGID32 ideal-int +pkg syscall (linux-386), const SYS_SETRESGID ideal-int +pkg syscall (linux-386), const SYS_SETRESGID32 ideal-int +pkg syscall (linux-386), const SYS_SETRESUID ideal-int +pkg syscall (linux-386), const SYS_SETRESUID32 ideal-int +pkg syscall (linux-386), const SYS_SETREUID ideal-int +pkg syscall (linux-386), const SYS_SETREUID32 ideal-int +pkg syscall (linux-386), const SYS_SETRLIMIT ideal-int +pkg syscall (linux-386), const SYS_SETSID ideal-int +pkg syscall (linux-386), const SYS_SETTIMEOFDAY ideal-int +pkg syscall (linux-386), const SYS_SETUID ideal-int +pkg syscall (linux-386), const SYS_SETUID32 ideal-int +pkg syscall (linux-386), const SYS_SETXATTR ideal-int +pkg syscall (linux-386), const SYS_SET_MEMPOLICY ideal-int +pkg syscall (linux-386), const SYS_SET_ROBUST_LIST ideal-int +pkg syscall (linux-386), const SYS_SET_THREAD_AREA ideal-int +pkg syscall (linux-386), const SYS_SET_TID_ADDRESS ideal-int +pkg syscall (linux-386), const SYS_SGETMASK ideal-int +pkg syscall (linux-386), const SYS_SIGACTION ideal-int +pkg syscall (linux-386), const SYS_SIGALTSTACK ideal-int +pkg syscall (linux-386), const SYS_SIGNAL ideal-int +pkg syscall (linux-386), const SYS_SIGNALFD ideal-int +pkg syscall (linux-386), const SYS_SIGNALFD4 ideal-int +pkg syscall (linux-386), const SYS_SIGPENDING ideal-int +pkg syscall (linux-386), const SYS_SIGPROCMASK ideal-int +pkg syscall (linux-386), const SYS_SIGRETURN ideal-int +pkg syscall (linux-386), const SYS_SIGSUSPEND ideal-int +pkg syscall (linux-386), const SYS_SOCKETCALL ideal-int +pkg syscall (linux-386), const SYS_SPLICE ideal-int +pkg syscall (linux-386), const SYS_SSETMASK ideal-int +pkg syscall (linux-386), const SYS_STAT ideal-int +pkg syscall (linux-386), const SYS_STAT64 ideal-int +pkg syscall (linux-386), const SYS_STATFS ideal-int +pkg syscall (linux-386), const SYS_STATFS64 ideal-int +pkg syscall (linux-386), const SYS_STIME ideal-int +pkg syscall (linux-386), const SYS_STTY ideal-int +pkg syscall (linux-386), const SYS_SWAPOFF ideal-int +pkg syscall (linux-386), const SYS_SWAPON ideal-int +pkg syscall (linux-386), const SYS_SYMLINK ideal-int +pkg syscall (linux-386), const SYS_SYMLINKAT ideal-int +pkg syscall (linux-386), const SYS_SYNC ideal-int +pkg syscall (linux-386), const SYS_SYNC_FILE_RANGE ideal-int +pkg syscall (linux-386), const SYS_SYSFS ideal-int +pkg syscall (linux-386), const SYS_SYSINFO ideal-int +pkg syscall (linux-386), const SYS_SYSLOG ideal-int +pkg syscall (linux-386), const SYS_TEE ideal-int +pkg syscall (linux-386), const SYS_TGKILL ideal-int +pkg syscall (linux-386), const SYS_TIME ideal-int +pkg syscall (linux-386), const SYS_TIMERFD_CREATE ideal-int +pkg syscall (linux-386), const SYS_TIMERFD_GETTIME ideal-int +pkg syscall (linux-386), const SYS_TIMERFD_SETTIME ideal-int +pkg syscall (linux-386), const SYS_TIMER_CREATE ideal-int +pkg syscall (linux-386), const SYS_TIMER_DELETE ideal-int +pkg syscall (linux-386), const SYS_TIMER_GETOVERRUN ideal-int +pkg syscall (linux-386), const SYS_TIMER_GETTIME ideal-int +pkg syscall (linux-386), const SYS_TIMER_SETTIME ideal-int +pkg syscall (linux-386), const SYS_TIMES ideal-int +pkg syscall (linux-386), const SYS_TKILL ideal-int +pkg syscall (linux-386), const SYS_TRUNCATE ideal-int +pkg syscall (linux-386), const SYS_TRUNCATE64 ideal-int +pkg syscall (linux-386), const SYS_UGETRLIMIT ideal-int +pkg syscall (linux-386), const SYS_ULIMIT ideal-int +pkg syscall (linux-386), const SYS_UMASK ideal-int +pkg syscall (linux-386), const SYS_UMOUNT ideal-int +pkg syscall (linux-386), const SYS_UMOUNT2 ideal-int +pkg syscall (linux-386), const SYS_UNAME ideal-int +pkg syscall (linux-386), const SYS_UNLINK ideal-int +pkg syscall (linux-386), const SYS_UNLINKAT ideal-int +pkg syscall (linux-386), const SYS_UNSHARE ideal-int +pkg syscall (linux-386), const SYS_USELIB ideal-int +pkg syscall (linux-386), const SYS_USTAT ideal-int +pkg syscall (linux-386), const SYS_UTIME ideal-int +pkg syscall (linux-386), const SYS_UTIMENSAT ideal-int +pkg syscall (linux-386), const SYS_UTIMES ideal-int +pkg syscall (linux-386), const SYS_VFORK ideal-int +pkg syscall (linux-386), const SYS_VHANGUP ideal-int +pkg syscall (linux-386), const SYS_VM86 ideal-int +pkg syscall (linux-386), const SYS_VM86OLD ideal-int +pkg syscall (linux-386), const SYS_VMSPLICE ideal-int +pkg syscall (linux-386), const SYS_VSERVER ideal-int +pkg syscall (linux-386), const SYS_WAIT4 ideal-int +pkg syscall (linux-386), const SYS_WAITID ideal-int +pkg syscall (linux-386), const SYS_WAITPID ideal-int +pkg syscall (linux-386), const SYS_WRITE ideal-int +pkg syscall (linux-386), const SYS_WRITEV ideal-int +pkg syscall (linux-386), const SYS__LLSEEK ideal-int +pkg syscall (linux-386), const SYS__NEWSELECT ideal-int +pkg syscall (linux-386), const SYS__SYSCTL ideal-int +pkg syscall (linux-386), const S_BLKSIZE ideal-int +pkg syscall (linux-386), const S_IEXEC ideal-int +pkg syscall (linux-386), const S_IREAD ideal-int +pkg syscall (linux-386), const S_IRGRP ideal-int +pkg syscall (linux-386), const S_IROTH ideal-int +pkg syscall (linux-386), const S_IRWXG ideal-int +pkg syscall (linux-386), const S_IRWXO ideal-int +pkg syscall (linux-386), const S_IRWXU ideal-int +pkg syscall (linux-386), const S_IWGRP ideal-int +pkg syscall (linux-386), const S_IWOTH ideal-int +pkg syscall (linux-386), const S_IXGRP ideal-int +pkg syscall (linux-386), const S_IXOTH ideal-int +pkg syscall (linux-386), const SizeofCmsghdr ideal-int +pkg syscall (linux-386), const SizeofIPMreq ideal-int +pkg syscall (linux-386), const SizeofIPMreqn ideal-int +pkg syscall (linux-386), const SizeofIPv6Mreq ideal-int +pkg syscall (linux-386), const SizeofIfAddrmsg ideal-int +pkg syscall (linux-386), const SizeofIfInfomsg ideal-int +pkg syscall (linux-386), const SizeofInet4Pktinfo ideal-int +pkg syscall (linux-386), const SizeofInet6Pktinfo ideal-int +pkg syscall (linux-386), const SizeofInotifyEvent ideal-int +pkg syscall (linux-386), const SizeofLinger ideal-int +pkg syscall (linux-386), const SizeofMsghdr ideal-int +pkg syscall (linux-386), const SizeofNlAttr ideal-int +pkg syscall (linux-386), const SizeofNlMsgerr ideal-int +pkg syscall (linux-386), const SizeofNlMsghdr ideal-int +pkg syscall (linux-386), const SizeofRtAttr ideal-int +pkg syscall (linux-386), const SizeofRtGenmsg ideal-int +pkg syscall (linux-386), const SizeofRtMsg ideal-int +pkg syscall (linux-386), const SizeofRtNexthop ideal-int +pkg syscall (linux-386), const SizeofSockFilter ideal-int +pkg syscall (linux-386), const SizeofSockFprog ideal-int +pkg syscall (linux-386), const SizeofSockaddrAny ideal-int +pkg syscall (linux-386), const SizeofSockaddrInet4 ideal-int +pkg syscall (linux-386), const SizeofSockaddrInet6 ideal-int +pkg syscall (linux-386), const SizeofSockaddrLinklayer ideal-int +pkg syscall (linux-386), const SizeofSockaddrNetlink ideal-int +pkg syscall (linux-386), const SizeofSockaddrUnix ideal-int +pkg syscall (linux-386), const SizeofUcred ideal-int +pkg syscall (linux-386), const TCGETS ideal-int +pkg syscall (linux-386), const TCP_CONGESTION ideal-int +pkg syscall (linux-386), const TCP_CORK ideal-int +pkg syscall (linux-386), const TCP_DEFER_ACCEPT ideal-int +pkg syscall (linux-386), const TCP_INFO ideal-int +pkg syscall (linux-386), const TCP_KEEPCNT ideal-int +pkg syscall (linux-386), const TCP_KEEPIDLE ideal-int +pkg syscall (linux-386), const TCP_KEEPINTVL ideal-int +pkg syscall (linux-386), const TCP_LINGER2 ideal-int +pkg syscall (linux-386), const TCP_MAXSEG ideal-int +pkg syscall (linux-386), const TCP_MAXWIN ideal-int +pkg syscall (linux-386), const TCP_MAX_WINSHIFT ideal-int +pkg syscall (linux-386), const TCP_MD5SIG ideal-int +pkg syscall (linux-386), const TCP_MD5SIG_MAXKEYLEN ideal-int +pkg syscall (linux-386), const TCP_MSS ideal-int +pkg syscall (linux-386), const TCP_QUICKACK ideal-int +pkg syscall (linux-386), const TCP_SYNCNT ideal-int +pkg syscall (linux-386), const TCP_WINDOW_CLAMP ideal-int +pkg syscall (linux-386), const TCSETS ideal-int +pkg syscall (linux-386), const TIOCCBRK ideal-int +pkg syscall (linux-386), const TIOCCONS ideal-int +pkg syscall (linux-386), const TIOCEXCL ideal-int +pkg syscall (linux-386), const TIOCGDEV ideal-int +pkg syscall (linux-386), const TIOCGETD ideal-int +pkg syscall (linux-386), const TIOCGICOUNT ideal-int +pkg syscall (linux-386), const TIOCGLCKTRMIOS ideal-int +pkg syscall (linux-386), const TIOCGPGRP ideal-int +pkg syscall (linux-386), const TIOCGPTN ideal-int +pkg syscall (linux-386), const TIOCGRS485 ideal-int +pkg syscall (linux-386), const TIOCGSERIAL ideal-int +pkg syscall (linux-386), const TIOCGSID ideal-int +pkg syscall (linux-386), const TIOCGSOFTCAR ideal-int +pkg syscall (linux-386), const TIOCGWINSZ ideal-int +pkg syscall (linux-386), const TIOCINQ ideal-int +pkg syscall (linux-386), const TIOCLINUX ideal-int +pkg syscall (linux-386), const TIOCMBIC ideal-int +pkg syscall (linux-386), const TIOCMBIS ideal-int +pkg syscall (linux-386), const TIOCMGET ideal-int +pkg syscall (linux-386), const TIOCMIWAIT ideal-int +pkg syscall (linux-386), const TIOCMSET ideal-int +pkg syscall (linux-386), const TIOCM_CAR ideal-int +pkg syscall (linux-386), const TIOCM_CD ideal-int +pkg syscall (linux-386), const TIOCM_CTS ideal-int +pkg syscall (linux-386), const TIOCM_DSR ideal-int +pkg syscall (linux-386), const TIOCM_DTR ideal-int +pkg syscall (linux-386), const TIOCM_LE ideal-int +pkg syscall (linux-386), const TIOCM_RI ideal-int +pkg syscall (linux-386), const TIOCM_RNG ideal-int +pkg syscall (linux-386), const TIOCM_RTS ideal-int +pkg syscall (linux-386), const TIOCM_SR ideal-int +pkg syscall (linux-386), const TIOCM_ST ideal-int +pkg syscall (linux-386), const TIOCNOTTY ideal-int +pkg syscall (linux-386), const TIOCNXCL ideal-int +pkg syscall (linux-386), const TIOCOUTQ ideal-int +pkg syscall (linux-386), const TIOCPKT ideal-int +pkg syscall (linux-386), const TIOCPKT_DATA ideal-int +pkg syscall (linux-386), const TIOCPKT_DOSTOP ideal-int +pkg syscall (linux-386), const TIOCPKT_FLUSHREAD ideal-int +pkg syscall (linux-386), const TIOCPKT_FLUSHWRITE ideal-int +pkg syscall (linux-386), const TIOCPKT_IOCTL ideal-int +pkg syscall (linux-386), const TIOCPKT_NOSTOP ideal-int +pkg syscall (linux-386), const TIOCPKT_START ideal-int +pkg syscall (linux-386), const TIOCPKT_STOP ideal-int +pkg syscall (linux-386), const TIOCSBRK ideal-int +pkg syscall (linux-386), const TIOCSCTTY ideal-int +pkg syscall (linux-386), const TIOCSERCONFIG ideal-int +pkg syscall (linux-386), const TIOCSERGETLSR ideal-int +pkg syscall (linux-386), const TIOCSERGETMULTI ideal-int +pkg syscall (linux-386), const TIOCSERGSTRUCT ideal-int +pkg syscall (linux-386), const TIOCSERGWILD ideal-int +pkg syscall (linux-386), const TIOCSERSETMULTI ideal-int +pkg syscall (linux-386), const TIOCSERSWILD ideal-int +pkg syscall (linux-386), const TIOCSER_TEMT ideal-int +pkg syscall (linux-386), const TIOCSETD ideal-int +pkg syscall (linux-386), const TIOCSIG ideal-int +pkg syscall (linux-386), const TIOCSLCKTRMIOS ideal-int +pkg syscall (linux-386), const TIOCSPGRP ideal-int +pkg syscall (linux-386), const TIOCSPTLCK ideal-int +pkg syscall (linux-386), const TIOCSRS485 ideal-int +pkg syscall (linux-386), const TIOCSSERIAL ideal-int +pkg syscall (linux-386), const TIOCSSOFTCAR ideal-int +pkg syscall (linux-386), const TIOCSTI ideal-int +pkg syscall (linux-386), const TIOCSWINSZ ideal-int +pkg syscall (linux-386), const TOSTOP ideal-int +pkg syscall (linux-386), const TUNATTACHFILTER ideal-int +pkg syscall (linux-386), const TUNDETACHFILTER ideal-int +pkg syscall (linux-386), const TUNGETFEATURES ideal-int +pkg syscall (linux-386), const TUNGETIFF ideal-int +pkg syscall (linux-386), const TUNGETSNDBUF ideal-int +pkg syscall (linux-386), const TUNGETVNETHDRSZ ideal-int +pkg syscall (linux-386), const TUNSETDEBUG ideal-int +pkg syscall (linux-386), const TUNSETGROUP ideal-int +pkg syscall (linux-386), const TUNSETIFF ideal-int +pkg syscall (linux-386), const TUNSETLINK ideal-int +pkg syscall (linux-386), const TUNSETNOCSUM ideal-int +pkg syscall (linux-386), const TUNSETOFFLOAD ideal-int +pkg syscall (linux-386), const TUNSETOWNER ideal-int +pkg syscall (linux-386), const TUNSETPERSIST ideal-int +pkg syscall (linux-386), const TUNSETSNDBUF ideal-int +pkg syscall (linux-386), const TUNSETTXFILTER ideal-int +pkg syscall (linux-386), const TUNSETVNETHDRSZ ideal-int +pkg syscall (linux-386), const VDISCARD ideal-int +pkg syscall (linux-386), const VEOF ideal-int +pkg syscall (linux-386), const VEOL ideal-int +pkg syscall (linux-386), const VEOL2 ideal-int +pkg syscall (linux-386), const VERASE ideal-int +pkg syscall (linux-386), const VINTR ideal-int +pkg syscall (linux-386), const VKILL ideal-int +pkg syscall (linux-386), const VLNEXT ideal-int +pkg syscall (linux-386), const VMIN ideal-int +pkg syscall (linux-386), const VQUIT ideal-int +pkg syscall (linux-386), const VREPRINT ideal-int +pkg syscall (linux-386), const VSTART ideal-int +pkg syscall (linux-386), const VSTOP ideal-int +pkg syscall (linux-386), const VSUSP ideal-int +pkg syscall (linux-386), const VSWTC ideal-int +pkg syscall (linux-386), const VTIME ideal-int +pkg syscall (linux-386), const VWERASE ideal-int +pkg syscall (linux-386), const WALL ideal-int +pkg syscall (linux-386), const WCLONE ideal-int +pkg syscall (linux-386), const WCONTINUED ideal-int +pkg syscall (linux-386), const WEXITED ideal-int +pkg syscall (linux-386), const WNOHANG ideal-int +pkg syscall (linux-386), const WNOTHREAD ideal-int +pkg syscall (linux-386), const WNOWAIT ideal-int +pkg syscall (linux-386), const WORDSIZE ideal-int +pkg syscall (linux-386), const WSTOPPED ideal-int +pkg syscall (linux-386), const WUNTRACED ideal-int +pkg syscall (linux-386), const XCASE ideal-int +pkg syscall (linux-386), func Accept(int) (int, Sockaddr, error) +pkg syscall (linux-386), func Access(string, uint32) error +pkg syscall (linux-386), func Acct(string) error +pkg syscall (linux-386), func Adjtimex(*Timex) (int, error) +pkg syscall (linux-386), func AttachLsf(int, []SockFilter) error +pkg syscall (linux-386), func Bind(int, Sockaddr) error +pkg syscall (linux-386), func BindToDevice(int, string) error +pkg syscall (linux-386), func Chroot(string) error +pkg syscall (linux-386), func Close(int) error +pkg syscall (linux-386), func CloseOnExec(int) +pkg syscall (linux-386), func CmsgLen(int) int +pkg syscall (linux-386), func CmsgSpace(int) int +pkg syscall (linux-386), func Connect(int, Sockaddr) error +pkg syscall (linux-386), func Creat(string, uint32) (int, error) +pkg syscall (linux-386), func DetachLsf(int) error +pkg syscall (linux-386), func Dup(int) (int, error) +pkg syscall (linux-386), func Dup2(int, int) error +pkg syscall (linux-386), func EpollCreate(int) (int, error) +pkg syscall (linux-386), func EpollCreate1(int) (int, error) +pkg syscall (linux-386), func EpollCtl(int, int, int, *EpollEvent) error +pkg syscall (linux-386), func EpollWait(int, []EpollEvent, int) (int, error) +pkg syscall (linux-386), func Faccessat(int, string, uint32, int) error +pkg syscall (linux-386), func Fallocate(int, uint32, int64, int64) error +pkg syscall (linux-386), func Fchdir(int) error +pkg syscall (linux-386), func Fchmod(int, uint32) error +pkg syscall (linux-386), func Fchmodat(int, string, uint32, int) error +pkg syscall (linux-386), func Fchown(int, int, int) error +pkg syscall (linux-386), func Fchownat(int, string, int, int, int) error +pkg syscall (linux-386), func Fdatasync(int) error +pkg syscall (linux-386), func Flock(int, int) error +pkg syscall (linux-386), func ForkExec(string, []string, *ProcAttr) (int, error) +pkg syscall (linux-386), func Fstat(int, *Stat_t) error +pkg syscall (linux-386), func Fstatfs(int, *Statfs_t) error +pkg syscall (linux-386), func Fsync(int) error +pkg syscall (linux-386), func Ftruncate(int, int64) error +pkg syscall (linux-386), func Futimes(int, []Timeval) error +pkg syscall (linux-386), func Futimesat(int, string, []Timeval) error +pkg syscall (linux-386), func Getcwd([]byte) (int, error) +pkg syscall (linux-386), func Getdents(int, []byte) (int, error) +pkg syscall (linux-386), func Getpeername(int) (Sockaddr, error) +pkg syscall (linux-386), func Getpgid(int) (int, error) +pkg syscall (linux-386), func Getpgrp() int +pkg syscall (linux-386), func Getrlimit(int, *Rlimit) error +pkg syscall (linux-386), func Getrusage(int, *Rusage) error +pkg syscall (linux-386), func Getsockname(int) (Sockaddr, error) +pkg syscall (linux-386), func GetsockoptIPMreq(int) (*IPMreq, error) +pkg syscall (linux-386), func GetsockoptIPMreqn(int) (*IPMreqn, error) +pkg syscall (linux-386), func GetsockoptIPv6Mreq(int) (*IPv6Mreq, error) +pkg syscall (linux-386), func GetsockoptInet4Addr(int) ([4]byte, error) +pkg syscall (linux-386), func GetsockoptInt(int) (int, error) +pkg syscall (linux-386), func Gettid() int +pkg syscall (linux-386), func InotifyAddWatch(int, string, uint32) (int, error) +pkg syscall (linux-386), func InotifyInit() (int, error) +pkg syscall (linux-386), func InotifyInit1(int) (int, error) +pkg syscall (linux-386), func InotifyRmWatch(int, uint32) (int, error) +pkg syscall (linux-386), func Ioperm(int, int, int) error +pkg syscall (linux-386), func Iopl(int) error +pkg syscall (linux-386), func Kill(int, Signal) error +pkg syscall (linux-386), func Klogctl(int, []byte) (int, error) +pkg syscall (linux-386), func Link(string, string) error +pkg syscall (linux-386), func Listen(int, int) error +pkg syscall (linux-386), func LsfJump(int) *SockFilter +pkg syscall (linux-386), func LsfSocket(int) (int, error) +pkg syscall (linux-386), func LsfStmt(int) *SockFilter +pkg syscall (linux-386), func Lstat(string, *Stat_t) error +pkg syscall (linux-386), func Madvise([]byte, int) error +pkg syscall (linux-386), func Mkdirat(int, string, uint32) error +pkg syscall (linux-386), func Mkfifo(string, uint32) error +pkg syscall (linux-386), func Mknod(string, uint32, int) error +pkg syscall (linux-386), func Mknodat(int, string, uint32, int) error +pkg syscall (linux-386), func Mlock([]byte) error +pkg syscall (linux-386), func Mlockall(int) error +pkg syscall (linux-386), func Mmap(int, int64, int, int, int) ([]byte, error) +pkg syscall (linux-386), func Mount(string, string, string, uintptr, string) error +pkg syscall (linux-386), func Mprotect([]byte, int) error +pkg syscall (linux-386), func Munlock([]byte) error +pkg syscall (linux-386), func Munlockall() error +pkg syscall (linux-386), func Munmap([]byte) error +pkg syscall (linux-386), func Nanosleep(*Timespec, *Timespec) error +pkg syscall (linux-386), func NetlinkRIB(int) ([]byte, error) +pkg syscall (linux-386), func NsecToTimespec(int64) Timespec +pkg syscall (linux-386), func Open(string, int, uint32) (int, error) +pkg syscall (linux-386), func Openat(int, string, int, uint32) (int, error) +pkg syscall (linux-386), func ParseDirent([]byte, int, []string) (int, int, []string) +pkg syscall (linux-386), func ParseNetlinkMessage([]byte) ([]NetlinkMessage, error) +pkg syscall (linux-386), func ParseNetlinkRouteAttr(*NetlinkMessage) ([]NetlinkRouteAttr, error) +pkg syscall (linux-386), func ParseSocketControlMessage([]byte) ([]SocketControlMessage, error) +pkg syscall (linux-386), func ParseUnixCredentials(*SocketControlMessage) (*Ucred, error) +pkg syscall (linux-386), func ParseUnixRights(*SocketControlMessage) ([]int, error) +pkg syscall (linux-386), func Pause() error +pkg syscall (linux-386), func Pipe([]int) error +pkg syscall (linux-386), func PivotRoot(string, string) error +pkg syscall (linux-386), func Pread(int, []byte, int64) (int, error) +pkg syscall (linux-386), func PtraceAttach(int) error +pkg syscall (linux-386), func PtraceCont(int, int) error +pkg syscall (linux-386), func PtraceDetach(int) error +pkg syscall (linux-386), func PtraceGetEventMsg(int) (uint, error) +pkg syscall (linux-386), func PtraceGetRegs(int, *PtraceRegs) error +pkg syscall (linux-386), func PtracePeekData(int, uintptr, []byte) (int, error) +pkg syscall (linux-386), func PtracePeekText(int, uintptr, []byte) (int, error) +pkg syscall (linux-386), func PtracePokeData(int, uintptr, []byte) (int, error) +pkg syscall (linux-386), func PtracePokeText(int, uintptr, []byte) (int, error) +pkg syscall (linux-386), func PtraceSetOptions(int, int) error +pkg syscall (linux-386), func PtraceSetRegs(int, *PtraceRegs) error +pkg syscall (linux-386), func PtraceSingleStep(int) error +pkg syscall (linux-386), func Pwrite(int, []byte, int64) (int, error) +pkg syscall (linux-386), func RawSyscall(uintptr) (uintptr, Errno) +pkg syscall (linux-386), func RawSyscall6(uintptr) (uintptr, Errno) +pkg syscall (linux-386), func Read(int, []byte) (int, error) +pkg syscall (linux-386), func ReadDirent(int, []byte) (int, error) +pkg syscall (linux-386), func Reboot(int) error +pkg syscall (linux-386), func Recvfrom(int, []byte, int) (int, Sockaddr, error) +pkg syscall (linux-386), func Recvmsg(int, []byte, int) (int, int, Sockaddr, error) +pkg syscall (linux-386), func Rename(string, string) error +pkg syscall (linux-386), func Renameat(int, string, int, string) error +pkg syscall (linux-386), func Seek(int, int64, int) (int64, error) +pkg syscall (linux-386), func Select(int, *FdSet, *FdSet, *FdSet, *Timeval) (int, error) +pkg syscall (linux-386), func Sendfile(int, int, *int64, int) (int, error) +pkg syscall (linux-386), func Sendmsg(int, []byte, Sockaddr, int) error +pkg syscall (linux-386), func Sendto(int, []byte, int, Sockaddr) error +pkg syscall (linux-386), func SetLsfPromisc(string, bool) error +pkg syscall (linux-386), func SetNonblock(int, bool) error +pkg syscall (linux-386), func Setdomainname([]byte) error +pkg syscall (linux-386), func Setfsgid(int) error +pkg syscall (linux-386), func Setfsuid(int) error +pkg syscall (linux-386), func Setgid(int) error +pkg syscall (linux-386), func Setgroups([]int) error +pkg syscall (linux-386), func Sethostname([]byte) error +pkg syscall (linux-386), func Setpgid(int, int) error +pkg syscall (linux-386), func Setregid(int, int) error +pkg syscall (linux-386), func Setresgid(int, int, int) error +pkg syscall (linux-386), func Setresuid(int, int, int) error +pkg syscall (linux-386), func Setreuid(int, int) error +pkg syscall (linux-386), func Setrlimit(int, *Rlimit) error +pkg syscall (linux-386), func Setsid() (int, error) +pkg syscall (linux-386), func SetsockoptIPMreq(int, *IPMreq) error +pkg syscall (linux-386), func SetsockoptIPMreqn(int, *IPMreqn) error +pkg syscall (linux-386), func SetsockoptIPv6Mreq(int, *IPv6Mreq) error +pkg syscall (linux-386), func SetsockoptInet4Addr(int, [4]byte) error +pkg syscall (linux-386), func SetsockoptInt(int, int) error +pkg syscall (linux-386), func SetsockoptLinger(int, *Linger) error +pkg syscall (linux-386), func SetsockoptString(int, string) error +pkg syscall (linux-386), func SetsockoptTimeval(int, *Timeval) error +pkg syscall (linux-386), func Settimeofday(*Timeval) error +pkg syscall (linux-386), func Setuid(int) error +pkg syscall (linux-386), func Shutdown(int) error +pkg syscall (linux-386), func Socket(int) (int, error) +pkg syscall (linux-386), func Socketpair(int) ([2]int, error) +pkg syscall (linux-386), func Splice(int, *int64, int, *int64, int, int) (int, error) +pkg syscall (linux-386), func Stat(string, *Stat_t) error +pkg syscall (linux-386), func Statfs(string, *Statfs_t) error +pkg syscall (linux-386), func StringSlicePtr([]string) []*byte +pkg syscall (linux-386), func Symlink(string, string) error +pkg syscall (linux-386), func Sync() +pkg syscall (linux-386), func SyncFileRange(int, int64, int64, int) error +pkg syscall (linux-386), func Sysinfo(*Sysinfo_t) error +pkg syscall (linux-386), func Tee(int, int, int, int) (int64, error) +pkg syscall (linux-386), func Tgkill(int, int, Signal) error +pkg syscall (linux-386), func Time(*Time_t) (Time_t, error) +pkg syscall (linux-386), func Times(*Tms) (uintptr, error) +pkg syscall (linux-386), func TimespecToNsec(Timespec) int64 +pkg syscall (linux-386), func TimevalToNsec(Timeval) int64 +pkg syscall (linux-386), func Truncate(string, int64) error +pkg syscall (linux-386), func Umask(int) int +pkg syscall (linux-386), func Uname(*Utsname) error +pkg syscall (linux-386), func UnixCredentials(*Ucred) []byte +pkg syscall (linux-386), func UnixRights(...int) []byte +pkg syscall (linux-386), func Unlinkat(int, string) error +pkg syscall (linux-386), func Unmount(string, int) error +pkg syscall (linux-386), func Unshare(int) error +pkg syscall (linux-386), func Ustat(int, *Ustat_t) error +pkg syscall (linux-386), func Utime(string, *Utimbuf) error +pkg syscall (linux-386), func Wait4(int, *WaitStatus, int, *Rusage) (int, error) +pkg syscall (linux-386), func Write(int, []byte) (int, error) +pkg syscall (linux-386), method (*Cmsghdr) SetLen(int) +pkg syscall (linux-386), method (*Iovec) SetLen(int) +pkg syscall (linux-386), method (*Msghdr) SetControllen(int) +pkg syscall (linux-386), method (*PtraceRegs) PC() uint64 +pkg syscall (linux-386), method (*PtraceRegs) SetPC(uint64) +pkg syscall (linux-386), type Cmsghdr struct +pkg syscall (linux-386), type Cmsghdr struct, Len uint32 +pkg syscall (linux-386), type Cmsghdr struct, Level int32 +pkg syscall (linux-386), type Cmsghdr struct, Type int32 +pkg syscall (linux-386), type Cmsghdr struct, X__cmsg_data [0]byte +pkg syscall (linux-386), type Credential struct +pkg syscall (linux-386), type Credential struct, Gid uint32 +pkg syscall (linux-386), type Credential struct, Groups []uint32 +pkg syscall (linux-386), type Credential struct, Uid uint32 +pkg syscall (linux-386), type Dirent struct +pkg syscall (linux-386), type Dirent struct, Ino uint64 +pkg syscall (linux-386), type Dirent struct, Name [256]int8 +pkg syscall (linux-386), type Dirent struct, Off int64 +pkg syscall (linux-386), type Dirent struct, Pad_cgo_0 [1]byte +pkg syscall (linux-386), type Dirent struct, Reclen uint16 +pkg syscall (linux-386), type Dirent struct, Type uint8 +pkg syscall (linux-386), type EpollEvent struct +pkg syscall (linux-386), type EpollEvent struct, Events uint32 +pkg syscall (linux-386), type EpollEvent struct, Fd int32 +pkg syscall (linux-386), type EpollEvent struct, Pad int32 +pkg syscall (linux-386), type FdSet struct +pkg syscall (linux-386), type FdSet struct, Bits [32]int32 +pkg syscall (linux-386), type Fsid struct +pkg syscall (linux-386), type Fsid struct, X__val [2]int32 +pkg syscall (linux-386), type IPMreqn struct +pkg syscall (linux-386), type IPMreqn struct, Address [4]byte +pkg syscall (linux-386), type IPMreqn struct, Ifindex int32 +pkg syscall (linux-386), type IPMreqn struct, Multiaddr [4]byte +pkg syscall (linux-386), type IfAddrmsg struct +pkg syscall (linux-386), type IfAddrmsg struct, Family uint8 +pkg syscall (linux-386), type IfAddrmsg struct, Flags uint8 +pkg syscall (linux-386), type IfAddrmsg struct, Index uint32 +pkg syscall (linux-386), type IfAddrmsg struct, Prefixlen uint8 +pkg syscall (linux-386), type IfAddrmsg struct, Scope uint8 +pkg syscall (linux-386), type IfInfomsg struct +pkg syscall (linux-386), type IfInfomsg struct, Change uint32 +pkg syscall (linux-386), type IfInfomsg struct, Family uint8 +pkg syscall (linux-386), type IfInfomsg struct, Flags uint32 +pkg syscall (linux-386), type IfInfomsg struct, Index int32 +pkg syscall (linux-386), type IfInfomsg struct, Type uint16 +pkg syscall (linux-386), type IfInfomsg struct, X__ifi_pad uint8 +pkg syscall (linux-386), type Inet4Pktinfo struct +pkg syscall (linux-386), type Inet4Pktinfo struct, Addr [4]byte +pkg syscall (linux-386), type Inet4Pktinfo struct, Ifindex int32 +pkg syscall (linux-386), type Inet4Pktinfo struct, Spec_dst [4]byte +pkg syscall (linux-386), type Inet6Pktinfo struct +pkg syscall (linux-386), type Inet6Pktinfo struct, Addr [16]byte +pkg syscall (linux-386), type Inet6Pktinfo struct, Ifindex uint32 +pkg syscall (linux-386), type InotifyEvent struct +pkg syscall (linux-386), type InotifyEvent struct, Cookie uint32 +pkg syscall (linux-386), type InotifyEvent struct, Len uint32 +pkg syscall (linux-386), type InotifyEvent struct, Mask uint32 +pkg syscall (linux-386), type InotifyEvent struct, Name [0]byte +pkg syscall (linux-386), type InotifyEvent struct, Wd int32 +pkg syscall (linux-386), type Iovec struct +pkg syscall (linux-386), type Iovec struct, Base *byte +pkg syscall (linux-386), type Iovec struct, Len uint32 +pkg syscall (linux-386), type Msghdr struct +pkg syscall (linux-386), type Msghdr struct, Control *byte +pkg syscall (linux-386), type Msghdr struct, Controllen uint32 +pkg syscall (linux-386), type Msghdr struct, Flags int32 +pkg syscall (linux-386), type Msghdr struct, Iov *Iovec +pkg syscall (linux-386), type Msghdr struct, Iovlen uint32 +pkg syscall (linux-386), type Msghdr struct, Name *byte +pkg syscall (linux-386), type Msghdr struct, Namelen uint32 +pkg syscall (linux-386), type NetlinkMessage struct +pkg syscall (linux-386), type NetlinkMessage struct, Data []byte +pkg syscall (linux-386), type NetlinkMessage struct, Header NlMsghdr +pkg syscall (linux-386), type NetlinkRouteAttr struct +pkg syscall (linux-386), type NetlinkRouteAttr struct, Attr RtAttr +pkg syscall (linux-386), type NetlinkRouteAttr struct, Value []byte +pkg syscall (linux-386), type NetlinkRouteRequest struct +pkg syscall (linux-386), type NetlinkRouteRequest struct, Data RtGenmsg +pkg syscall (linux-386), type NetlinkRouteRequest struct, Header NlMsghdr +pkg syscall (linux-386), type NlAttr struct +pkg syscall (linux-386), type NlAttr struct, Len uint16 +pkg syscall (linux-386), type NlAttr struct, Type uint16 +pkg syscall (linux-386), type NlMsgerr struct +pkg syscall (linux-386), type NlMsgerr struct, Error int32 +pkg syscall (linux-386), type NlMsgerr struct, Msg NlMsghdr +pkg syscall (linux-386), type NlMsghdr struct +pkg syscall (linux-386), type NlMsghdr struct, Flags uint16 +pkg syscall (linux-386), type NlMsghdr struct, Len uint32 +pkg syscall (linux-386), type NlMsghdr struct, Pid uint32 +pkg syscall (linux-386), type NlMsghdr struct, Seq uint32 +pkg syscall (linux-386), type NlMsghdr struct, Type uint16 +pkg syscall (linux-386), type PtraceRegs struct +pkg syscall (linux-386), type PtraceRegs struct, Eax int32 +pkg syscall (linux-386), type PtraceRegs struct, Ebp int32 +pkg syscall (linux-386), type PtraceRegs struct, Ebx int32 +pkg syscall (linux-386), type PtraceRegs struct, Ecx int32 +pkg syscall (linux-386), type PtraceRegs struct, Edi int32 +pkg syscall (linux-386), type PtraceRegs struct, Edx int32 +pkg syscall (linux-386), type PtraceRegs struct, Eflags int32 +pkg syscall (linux-386), type PtraceRegs struct, Eip int32 +pkg syscall (linux-386), type PtraceRegs struct, Esi int32 +pkg syscall (linux-386), type PtraceRegs struct, Esp int32 +pkg syscall (linux-386), type PtraceRegs struct, Orig_eax int32 +pkg syscall (linux-386), type PtraceRegs struct, Xcs int32 +pkg syscall (linux-386), type PtraceRegs struct, Xds int32 +pkg syscall (linux-386), type PtraceRegs struct, Xes int32 +pkg syscall (linux-386), type PtraceRegs struct, Xfs int32 +pkg syscall (linux-386), type PtraceRegs struct, Xgs int32 +pkg syscall (linux-386), type PtraceRegs struct, Xss int32 +pkg syscall (linux-386), type RawSockaddr struct, Family uint16 +pkg syscall (linux-386), type RawSockaddrAny struct, Pad [96]int8 +pkg syscall (linux-386), type RawSockaddrInet4 struct, Family uint16 +pkg syscall (linux-386), type RawSockaddrInet4 struct, Zero [8]uint8 +pkg syscall (linux-386), type RawSockaddrInet6 struct +pkg syscall (linux-386), type RawSockaddrInet6 struct, Addr [16]byte +pkg syscall (linux-386), type RawSockaddrInet6 struct, Family uint16 +pkg syscall (linux-386), type RawSockaddrInet6 struct, Flowinfo uint32 +pkg syscall (linux-386), type RawSockaddrInet6 struct, Port uint16 +pkg syscall (linux-386), type RawSockaddrInet6 struct, Scope_id uint32 +pkg syscall (linux-386), type RawSockaddrLinklayer struct +pkg syscall (linux-386), type RawSockaddrLinklayer struct, Addr [8]uint8 +pkg syscall (linux-386), type RawSockaddrLinklayer struct, Family uint16 +pkg syscall (linux-386), type RawSockaddrLinklayer struct, Halen uint8 +pkg syscall (linux-386), type RawSockaddrLinklayer struct, Hatype uint16 +pkg syscall (linux-386), type RawSockaddrLinklayer struct, Ifindex int32 +pkg syscall (linux-386), type RawSockaddrLinklayer struct, Pkttype uint8 +pkg syscall (linux-386), type RawSockaddrLinklayer struct, Protocol uint16 +pkg syscall (linux-386), type RawSockaddrNetlink struct +pkg syscall (linux-386), type RawSockaddrNetlink struct, Family uint16 +pkg syscall (linux-386), type RawSockaddrNetlink struct, Groups uint32 +pkg syscall (linux-386), type RawSockaddrNetlink struct, Pad uint16 +pkg syscall (linux-386), type RawSockaddrNetlink struct, Pid uint32 +pkg syscall (linux-386), type RawSockaddrUnix struct +pkg syscall (linux-386), type RawSockaddrUnix struct, Family uint16 +pkg syscall (linux-386), type RawSockaddrUnix struct, Path [108]int8 +pkg syscall (linux-386), type Rlimit struct +pkg syscall (linux-386), type Rlimit struct, Cur uint64 +pkg syscall (linux-386), type Rlimit struct, Max uint64 +pkg syscall (linux-386), type RtAttr struct +pkg syscall (linux-386), type RtAttr struct, Len uint16 +pkg syscall (linux-386), type RtAttr struct, Type uint16 +pkg syscall (linux-386), type RtGenmsg struct +pkg syscall (linux-386), type RtGenmsg struct, Family uint8 +pkg syscall (linux-386), type RtMsg struct +pkg syscall (linux-386), type RtMsg struct, Dst_len uint8 +pkg syscall (linux-386), type RtMsg struct, Family uint8 +pkg syscall (linux-386), type RtMsg struct, Flags uint32 +pkg syscall (linux-386), type RtMsg struct, Protocol uint8 +pkg syscall (linux-386), type RtMsg struct, Scope uint8 +pkg syscall (linux-386), type RtMsg struct, Src_len uint8 +pkg syscall (linux-386), type RtMsg struct, Table uint8 +pkg syscall (linux-386), type RtMsg struct, Tos uint8 +pkg syscall (linux-386), type RtMsg struct, Type uint8 +pkg syscall (linux-386), type RtNexthop struct +pkg syscall (linux-386), type RtNexthop struct, Flags uint8 +pkg syscall (linux-386), type RtNexthop struct, Hops uint8 +pkg syscall (linux-386), type RtNexthop struct, Ifindex int32 +pkg syscall (linux-386), type RtNexthop struct, Len uint16 +pkg syscall (linux-386), type Rusage struct, Idrss int32 +pkg syscall (linux-386), type Rusage struct, Inblock int32 +pkg syscall (linux-386), type Rusage struct, Isrss int32 +pkg syscall (linux-386), type Rusage struct, Ixrss int32 +pkg syscall (linux-386), type Rusage struct, Majflt int32 +pkg syscall (linux-386), type Rusage struct, Maxrss int32 +pkg syscall (linux-386), type Rusage struct, Minflt int32 +pkg syscall (linux-386), type Rusage struct, Msgrcv int32 +pkg syscall (linux-386), type Rusage struct, Msgsnd int32 +pkg syscall (linux-386), type Rusage struct, Nivcsw int32 +pkg syscall (linux-386), type Rusage struct, Nsignals int32 +pkg syscall (linux-386), type Rusage struct, Nswap int32 +pkg syscall (linux-386), type Rusage struct, Nvcsw int32 +pkg syscall (linux-386), type Rusage struct, Oublock int32 +pkg syscall (linux-386), type Rusage struct, Stime Timeval +pkg syscall (linux-386), type Rusage struct, Utime Timeval +pkg syscall (linux-386), type SockFilter struct +pkg syscall (linux-386), type SockFilter struct, Code uint16 +pkg syscall (linux-386), type SockFilter struct, Jf uint8 +pkg syscall (linux-386), type SockFilter struct, Jt uint8 +pkg syscall (linux-386), type SockFilter struct, K uint32 +pkg syscall (linux-386), type SockFprog struct +pkg syscall (linux-386), type SockFprog struct, Filter *SockFilter +pkg syscall (linux-386), type SockFprog struct, Len uint16 +pkg syscall (linux-386), type SockFprog struct, Pad_cgo_0 [2]byte +pkg syscall (linux-386), type SockaddrLinklayer struct +pkg syscall (linux-386), type SockaddrLinklayer struct, Addr [8]byte +pkg syscall (linux-386), type SockaddrLinklayer struct, Halen uint8 +pkg syscall (linux-386), type SockaddrLinklayer struct, Hatype uint16 +pkg syscall (linux-386), type SockaddrLinklayer struct, Ifindex int +pkg syscall (linux-386), type SockaddrLinklayer struct, Pkttype uint8 +pkg syscall (linux-386), type SockaddrLinklayer struct, Protocol uint16 +pkg syscall (linux-386), type SockaddrNetlink struct +pkg syscall (linux-386), type SockaddrNetlink struct, Family uint16 +pkg syscall (linux-386), type SockaddrNetlink struct, Groups uint32 +pkg syscall (linux-386), type SockaddrNetlink struct, Pad uint16 +pkg syscall (linux-386), type SockaddrNetlink struct, Pid uint32 +pkg syscall (linux-386), type SocketControlMessage struct +pkg syscall (linux-386), type SocketControlMessage struct, Data []byte +pkg syscall (linux-386), type SocketControlMessage struct, Header Cmsghdr +pkg syscall (linux-386), type Stat_t struct +pkg syscall (linux-386), type Stat_t struct, Atim Timespec +pkg syscall (linux-386), type Stat_t struct, Blksize int32 +pkg syscall (linux-386), type Stat_t struct, Blocks int64 +pkg syscall (linux-386), type Stat_t struct, Ctim Timespec +pkg syscall (linux-386), type Stat_t struct, Dev uint64 +pkg syscall (linux-386), type Stat_t struct, Gid uint32 +pkg syscall (linux-386), type Stat_t struct, Ino uint64 +pkg syscall (linux-386), type Stat_t struct, Mode uint32 +pkg syscall (linux-386), type Stat_t struct, Mtim Timespec +pkg syscall (linux-386), type Stat_t struct, Nlink uint32 +pkg syscall (linux-386), type Stat_t struct, Pad_cgo_0 [2]byte +pkg syscall (linux-386), type Stat_t struct, Pad_cgo_1 [2]byte +pkg syscall (linux-386), type Stat_t struct, Rdev uint64 +pkg syscall (linux-386), type Stat_t struct, Size int64 +pkg syscall (linux-386), type Stat_t struct, Uid uint32 +pkg syscall (linux-386), type Stat_t struct, X__pad1 uint16 +pkg syscall (linux-386), type Stat_t struct, X__pad2 uint16 +pkg syscall (linux-386), type Stat_t struct, X__st_ino uint32 +pkg syscall (linux-386), type Statfs_t struct +pkg syscall (linux-386), type Statfs_t struct, Bavail uint64 +pkg syscall (linux-386), type Statfs_t struct, Bfree uint64 +pkg syscall (linux-386), type Statfs_t struct, Blocks uint64 +pkg syscall (linux-386), type Statfs_t struct, Bsize int32 +pkg syscall (linux-386), type Statfs_t struct, Ffree uint64 +pkg syscall (linux-386), type Statfs_t struct, Files uint64 +pkg syscall (linux-386), type Statfs_t struct, Flags int32 +pkg syscall (linux-386), type Statfs_t struct, Frsize int32 +pkg syscall (linux-386), type Statfs_t struct, Fsid Fsid +pkg syscall (linux-386), type Statfs_t struct, Namelen int32 +pkg syscall (linux-386), type Statfs_t struct, Spare [4]int32 +pkg syscall (linux-386), type Statfs_t struct, Type int32 +pkg syscall (linux-386), type SysProcAttr struct, Chroot string +pkg syscall (linux-386), type SysProcAttr struct, Credential *Credential +pkg syscall (linux-386), type SysProcAttr struct, Noctty bool +pkg syscall (linux-386), type SysProcAttr struct, Pdeathsig Signal +pkg syscall (linux-386), type SysProcAttr struct, Ptrace bool +pkg syscall (linux-386), type SysProcAttr struct, Setctty bool +pkg syscall (linux-386), type SysProcAttr struct, Setpgid bool +pkg syscall (linux-386), type SysProcAttr struct, Setsid bool +pkg syscall (linux-386), type Sysinfo_t struct +pkg syscall (linux-386), type Sysinfo_t struct, Bufferram uint32 +pkg syscall (linux-386), type Sysinfo_t struct, Freehigh uint32 +pkg syscall (linux-386), type Sysinfo_t struct, Freeram uint32 +pkg syscall (linux-386), type Sysinfo_t struct, Freeswap uint32 +pkg syscall (linux-386), type Sysinfo_t struct, Loads [3]uint32 +pkg syscall (linux-386), type Sysinfo_t struct, Pad uint16 +pkg syscall (linux-386), type Sysinfo_t struct, Procs uint16 +pkg syscall (linux-386), type Sysinfo_t struct, Sharedram uint32 +pkg syscall (linux-386), type Sysinfo_t struct, Totalhigh uint32 +pkg syscall (linux-386), type Sysinfo_t struct, Totalram uint32 +pkg syscall (linux-386), type Sysinfo_t struct, Totalswap uint32 +pkg syscall (linux-386), type Sysinfo_t struct, Unit uint32 +pkg syscall (linux-386), type Sysinfo_t struct, Uptime int32 +pkg syscall (linux-386), type Sysinfo_t struct, X_f [8]int8 +pkg syscall (linux-386), type Termios struct +pkg syscall (linux-386), type Termios struct, Cc [32]uint8 +pkg syscall (linux-386), type Termios struct, Cflag uint32 +pkg syscall (linux-386), type Termios struct, Iflag uint32 +pkg syscall (linux-386), type Termios struct, Ispeed uint32 +pkg syscall (linux-386), type Termios struct, Lflag uint32 +pkg syscall (linux-386), type Termios struct, Line uint8 +pkg syscall (linux-386), type Termios struct, Oflag uint32 +pkg syscall (linux-386), type Termios struct, Ospeed uint32 +pkg syscall (linux-386), type Termios struct, Pad_cgo_0 [3]byte +pkg syscall (linux-386), type Time_t int32 +pkg syscall (linux-386), type Timespec struct, Nsec int32 +pkg syscall (linux-386), type Timespec struct, Sec int32 +pkg syscall (linux-386), type Timeval struct, Sec int32 +pkg syscall (linux-386), type Timeval struct, Usec int32 +pkg syscall (linux-386), type Timex struct +pkg syscall (linux-386), type Timex struct, Calcnt int32 +pkg syscall (linux-386), type Timex struct, Constant int32 +pkg syscall (linux-386), type Timex struct, Errcnt int32 +pkg syscall (linux-386), type Timex struct, Esterror int32 +pkg syscall (linux-386), type Timex struct, Freq int32 +pkg syscall (linux-386), type Timex struct, Jitcnt int32 +pkg syscall (linux-386), type Timex struct, Jitter int32 +pkg syscall (linux-386), type Timex struct, Maxerror int32 +pkg syscall (linux-386), type Timex struct, Modes uint32 +pkg syscall (linux-386), type Timex struct, Offset int32 +pkg syscall (linux-386), type Timex struct, Pad_cgo_0 [44]byte +pkg syscall (linux-386), type Timex struct, Ppsfreq int32 +pkg syscall (linux-386), type Timex struct, Precision int32 +pkg syscall (linux-386), type Timex struct, Shift int32 +pkg syscall (linux-386), type Timex struct, Stabil int32 +pkg syscall (linux-386), type Timex struct, Status int32 +pkg syscall (linux-386), type Timex struct, Stbcnt int32 +pkg syscall (linux-386), type Timex struct, Tai int32 +pkg syscall (linux-386), type Timex struct, Tick int32 +pkg syscall (linux-386), type Timex struct, Time Timeval +pkg syscall (linux-386), type Timex struct, Tolerance int32 +pkg syscall (linux-386), type Tms struct +pkg syscall (linux-386), type Tms struct, Cstime int32 +pkg syscall (linux-386), type Tms struct, Cutime int32 +pkg syscall (linux-386), type Tms struct, Stime int32 +pkg syscall (linux-386), type Tms struct, Utime int32 +pkg syscall (linux-386), type Ucred struct +pkg syscall (linux-386), type Ucred struct, Gid uint32 +pkg syscall (linux-386), type Ucred struct, Pid int32 +pkg syscall (linux-386), type Ucred struct, Uid uint32 +pkg syscall (linux-386), type Ustat_t struct +pkg syscall (linux-386), type Ustat_t struct, Fname [6]int8 +pkg syscall (linux-386), type Ustat_t struct, Fpack [6]int8 +pkg syscall (linux-386), type Ustat_t struct, Tfree int32 +pkg syscall (linux-386), type Ustat_t struct, Tinode uint32 +pkg syscall (linux-386), type Utimbuf struct +pkg syscall (linux-386), type Utimbuf struct, Actime int32 +pkg syscall (linux-386), type Utimbuf struct, Modtime int32 +pkg syscall (linux-386), type Utsname struct +pkg syscall (linux-386), type Utsname struct, Domainname [65]int8 +pkg syscall (linux-386), type Utsname struct, Machine [65]int8 +pkg syscall (linux-386), type Utsname struct, Nodename [65]int8 +pkg syscall (linux-386), type Utsname struct, Release [65]int8 +pkg syscall (linux-386), type Utsname struct, Sysname [65]int8 +pkg syscall (linux-386), type Utsname struct, Version [65]int8 +pkg syscall (linux-386), type WaitStatus uint32 +pkg syscall (linux-386), var Stderr int +pkg syscall (linux-386), var Stdin int +pkg syscall (linux-386), var Stdout int +pkg syscall (linux-386-cgo), const AF_ALG ideal-int +pkg syscall (linux-386-cgo), const AF_APPLETALK ideal-int +pkg syscall (linux-386-cgo), const AF_ASH ideal-int +pkg syscall (linux-386-cgo), const AF_ATMPVC ideal-int +pkg syscall (linux-386-cgo), const AF_ATMSVC ideal-int +pkg syscall (linux-386-cgo), const AF_AX25 ideal-int +pkg syscall (linux-386-cgo), const AF_BLUETOOTH ideal-int +pkg syscall (linux-386-cgo), const AF_BRIDGE ideal-int +pkg syscall (linux-386-cgo), const AF_CAIF ideal-int +pkg syscall (linux-386-cgo), const AF_CAN ideal-int +pkg syscall (linux-386-cgo), const AF_DECnet ideal-int +pkg syscall (linux-386-cgo), const AF_ECONET ideal-int +pkg syscall (linux-386-cgo), const AF_FILE ideal-int +pkg syscall (linux-386-cgo), const AF_IEEE802154 ideal-int +pkg syscall (linux-386-cgo), const AF_IPX ideal-int +pkg syscall (linux-386-cgo), const AF_IRDA ideal-int +pkg syscall (linux-386-cgo), const AF_ISDN ideal-int +pkg syscall (linux-386-cgo), const AF_IUCV ideal-int +pkg syscall (linux-386-cgo), const AF_KEY ideal-int +pkg syscall (linux-386-cgo), const AF_LLC ideal-int +pkg syscall (linux-386-cgo), const AF_LOCAL ideal-int +pkg syscall (linux-386-cgo), const AF_MAX ideal-int +pkg syscall (linux-386-cgo), const AF_NETBEUI ideal-int +pkg syscall (linux-386-cgo), const AF_NETLINK ideal-int +pkg syscall (linux-386-cgo), const AF_NETROM ideal-int +pkg syscall (linux-386-cgo), const AF_PACKET ideal-int +pkg syscall (linux-386-cgo), const AF_PHONET ideal-int +pkg syscall (linux-386-cgo), const AF_PPPOX ideal-int +pkg syscall (linux-386-cgo), const AF_RDS ideal-int +pkg syscall (linux-386-cgo), const AF_ROSE ideal-int +pkg syscall (linux-386-cgo), const AF_ROUTE ideal-int +pkg syscall (linux-386-cgo), const AF_RXRPC ideal-int +pkg syscall (linux-386-cgo), const AF_SECURITY ideal-int +pkg syscall (linux-386-cgo), const AF_SNA ideal-int +pkg syscall (linux-386-cgo), const AF_TIPC ideal-int +pkg syscall (linux-386-cgo), const AF_WANPIPE ideal-int +pkg syscall (linux-386-cgo), const AF_X25 ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_ADAPT ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_APPLETLK ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_ARCNET ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_ASH ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_ATM ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_AX25 ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_BIF ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_CHAOS ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_CISCO ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_CSLIP ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_CSLIP6 ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_DDCMP ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_DLCI ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_ECONET ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_EETHER ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_ETHER ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_EUI64 ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_FCAL ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_FCFABRIC ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_FCPL ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_FCPP ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_FDDI ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_FRAD ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_HDLC ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_HIPPI ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_HWX25 ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_IEEE1394 ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_IEEE802 ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_IEEE80211 ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_IEEE80211_PRISM ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_IEEE80211_RADIOTAP ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_IEEE802154 ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_IEEE802154_PHY ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_IEEE802_TR ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_INFINIBAND ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_IPDDP ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_IPGRE ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_IRDA ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_LAPB ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_LOCALTLK ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_LOOPBACK ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_METRICOM ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_NETROM ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_NONE ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_PIMREG ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_PPP ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_PRONET ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_RAWHDLC ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_ROSE ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_RSRVD ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_SIT ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_SKIP ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_SLIP ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_SLIP6 ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_TUNNEL ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_TUNNEL6 ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_VOID ideal-int +pkg syscall (linux-386-cgo), const ARPHRD_X25 ideal-int +pkg syscall (linux-386-cgo), const B0 ideal-int +pkg syscall (linux-386-cgo), const B1000000 ideal-int +pkg syscall (linux-386-cgo), const B110 ideal-int +pkg syscall (linux-386-cgo), const B115200 ideal-int +pkg syscall (linux-386-cgo), const B1152000 ideal-int +pkg syscall (linux-386-cgo), const B1200 ideal-int +pkg syscall (linux-386-cgo), const B134 ideal-int +pkg syscall (linux-386-cgo), const B150 ideal-int +pkg syscall (linux-386-cgo), const B1500000 ideal-int +pkg syscall (linux-386-cgo), const B1800 ideal-int +pkg syscall (linux-386-cgo), const B19200 ideal-int +pkg syscall (linux-386-cgo), const B200 ideal-int +pkg syscall (linux-386-cgo), const B2000000 ideal-int +pkg syscall (linux-386-cgo), const B230400 ideal-int +pkg syscall (linux-386-cgo), const B2400 ideal-int +pkg syscall (linux-386-cgo), const B2500000 ideal-int +pkg syscall (linux-386-cgo), const B300 ideal-int +pkg syscall (linux-386-cgo), const B3000000 ideal-int +pkg syscall (linux-386-cgo), const B3500000 ideal-int +pkg syscall (linux-386-cgo), const B38400 ideal-int +pkg syscall (linux-386-cgo), const B4000000 ideal-int +pkg syscall (linux-386-cgo), const B460800 ideal-int +pkg syscall (linux-386-cgo), const B4800 ideal-int +pkg syscall (linux-386-cgo), const B50 ideal-int +pkg syscall (linux-386-cgo), const B500000 ideal-int +pkg syscall (linux-386-cgo), const B57600 ideal-int +pkg syscall (linux-386-cgo), const B576000 ideal-int +pkg syscall (linux-386-cgo), const B600 ideal-int +pkg syscall (linux-386-cgo), const B75 ideal-int +pkg syscall (linux-386-cgo), const B921600 ideal-int +pkg syscall (linux-386-cgo), const B9600 ideal-int +pkg syscall (linux-386-cgo), const BPF_A ideal-int +pkg syscall (linux-386-cgo), const BPF_ABS ideal-int +pkg syscall (linux-386-cgo), const BPF_ADD ideal-int +pkg syscall (linux-386-cgo), const BPF_ALU ideal-int +pkg syscall (linux-386-cgo), const BPF_AND ideal-int +pkg syscall (linux-386-cgo), const BPF_B ideal-int +pkg syscall (linux-386-cgo), const BPF_DIV ideal-int +pkg syscall (linux-386-cgo), const BPF_H ideal-int +pkg syscall (linux-386-cgo), const BPF_IMM ideal-int +pkg syscall (linux-386-cgo), const BPF_IND ideal-int +pkg syscall (linux-386-cgo), const BPF_JA ideal-int +pkg syscall (linux-386-cgo), const BPF_JEQ ideal-int +pkg syscall (linux-386-cgo), const BPF_JGE ideal-int +pkg syscall (linux-386-cgo), const BPF_JGT ideal-int +pkg syscall (linux-386-cgo), const BPF_JMP ideal-int +pkg syscall (linux-386-cgo), const BPF_JSET ideal-int +pkg syscall (linux-386-cgo), const BPF_K ideal-int +pkg syscall (linux-386-cgo), const BPF_LD ideal-int +pkg syscall (linux-386-cgo), const BPF_LDX ideal-int +pkg syscall (linux-386-cgo), const BPF_LEN ideal-int +pkg syscall (linux-386-cgo), const BPF_LSH ideal-int +pkg syscall (linux-386-cgo), const BPF_MAJOR_VERSION ideal-int +pkg syscall (linux-386-cgo), const BPF_MAXINSNS ideal-int +pkg syscall (linux-386-cgo), const BPF_MEM ideal-int +pkg syscall (linux-386-cgo), const BPF_MEMWORDS ideal-int +pkg syscall (linux-386-cgo), const BPF_MINOR_VERSION ideal-int +pkg syscall (linux-386-cgo), const BPF_MISC ideal-int +pkg syscall (linux-386-cgo), const BPF_MSH ideal-int +pkg syscall (linux-386-cgo), const BPF_MUL ideal-int +pkg syscall (linux-386-cgo), const BPF_NEG ideal-int +pkg syscall (linux-386-cgo), const BPF_OR ideal-int +pkg syscall (linux-386-cgo), const BPF_RET ideal-int +pkg syscall (linux-386-cgo), const BPF_RSH ideal-int +pkg syscall (linux-386-cgo), const BPF_ST ideal-int +pkg syscall (linux-386-cgo), const BPF_STX ideal-int +pkg syscall (linux-386-cgo), const BPF_SUB ideal-int +pkg syscall (linux-386-cgo), const BPF_TAX ideal-int +pkg syscall (linux-386-cgo), const BPF_TXA ideal-int +pkg syscall (linux-386-cgo), const BPF_W ideal-int +pkg syscall (linux-386-cgo), const BPF_X ideal-int +pkg syscall (linux-386-cgo), const BRKINT ideal-int +pkg syscall (linux-386-cgo), const CLOCAL ideal-int +pkg syscall (linux-386-cgo), const CREAD ideal-int +pkg syscall (linux-386-cgo), const CS5 ideal-int +pkg syscall (linux-386-cgo), const CS6 ideal-int +pkg syscall (linux-386-cgo), const CS7 ideal-int +pkg syscall (linux-386-cgo), const CS8 ideal-int +pkg syscall (linux-386-cgo), const CSIZE ideal-int +pkg syscall (linux-386-cgo), const CSTOPB ideal-int +pkg syscall (linux-386-cgo), const DT_BLK ideal-int +pkg syscall (linux-386-cgo), const DT_CHR ideal-int +pkg syscall (linux-386-cgo), const DT_DIR ideal-int +pkg syscall (linux-386-cgo), const DT_FIFO ideal-int +pkg syscall (linux-386-cgo), const DT_LNK ideal-int +pkg syscall (linux-386-cgo), const DT_REG ideal-int +pkg syscall (linux-386-cgo), const DT_SOCK ideal-int +pkg syscall (linux-386-cgo), const DT_UNKNOWN ideal-int +pkg syscall (linux-386-cgo), const DT_WHT ideal-int +pkg syscall (linux-386-cgo), const EADV Errno +pkg syscall (linux-386-cgo), const EBADE Errno +pkg syscall (linux-386-cgo), const EBADFD Errno +pkg syscall (linux-386-cgo), const EBADR Errno +pkg syscall (linux-386-cgo), const EBADRQC Errno +pkg syscall (linux-386-cgo), const EBADSLT Errno +pkg syscall (linux-386-cgo), const EBFONT Errno +pkg syscall (linux-386-cgo), const ECHO ideal-int +pkg syscall (linux-386-cgo), const ECHOCTL ideal-int +pkg syscall (linux-386-cgo), const ECHOE ideal-int +pkg syscall (linux-386-cgo), const ECHOK ideal-int +pkg syscall (linux-386-cgo), const ECHOKE ideal-int +pkg syscall (linux-386-cgo), const ECHONL ideal-int +pkg syscall (linux-386-cgo), const ECHOPRT ideal-int +pkg syscall (linux-386-cgo), const ECHRNG Errno +pkg syscall (linux-386-cgo), const ECOMM Errno +pkg syscall (linux-386-cgo), const EDEADLOCK Errno +pkg syscall (linux-386-cgo), const EDOTDOT Errno +pkg syscall (linux-386-cgo), const EISNAM Errno +pkg syscall (linux-386-cgo), const EKEYEXPIRED Errno +pkg syscall (linux-386-cgo), const EKEYREJECTED Errno +pkg syscall (linux-386-cgo), const EKEYREVOKED Errno +pkg syscall (linux-386-cgo), const EL2HLT Errno +pkg syscall (linux-386-cgo), const EL2NSYNC Errno +pkg syscall (linux-386-cgo), const EL3HLT Errno +pkg syscall (linux-386-cgo), const EL3RST Errno +pkg syscall (linux-386-cgo), const ELIBACC Errno +pkg syscall (linux-386-cgo), const ELIBBAD Errno +pkg syscall (linux-386-cgo), const ELIBEXEC Errno +pkg syscall (linux-386-cgo), const ELIBMAX Errno +pkg syscall (linux-386-cgo), const ELIBSCN Errno +pkg syscall (linux-386-cgo), const ELNRNG Errno +pkg syscall (linux-386-cgo), const EMEDIUMTYPE Errno +pkg syscall (linux-386-cgo), const ENAVAIL Errno +pkg syscall (linux-386-cgo), const ENOANO Errno +pkg syscall (linux-386-cgo), const ENOCSI Errno +pkg syscall (linux-386-cgo), const ENOKEY Errno +pkg syscall (linux-386-cgo), const ENOMEDIUM Errno +pkg syscall (linux-386-cgo), const ENONET Errno +pkg syscall (linux-386-cgo), const ENOPKG Errno +pkg syscall (linux-386-cgo), const ENOTNAM Errno +pkg syscall (linux-386-cgo), const ENOTUNIQ Errno +pkg syscall (linux-386-cgo), const EPOLLERR ideal-int +pkg syscall (linux-386-cgo), const EPOLLET ideal-int +pkg syscall (linux-386-cgo), const EPOLLHUP ideal-int +pkg syscall (linux-386-cgo), const EPOLLIN ideal-int +pkg syscall (linux-386-cgo), const EPOLLMSG ideal-int +pkg syscall (linux-386-cgo), const EPOLLONESHOT ideal-int +pkg syscall (linux-386-cgo), const EPOLLOUT ideal-int +pkg syscall (linux-386-cgo), const EPOLLPRI ideal-int +pkg syscall (linux-386-cgo), const EPOLLRDBAND ideal-int +pkg syscall (linux-386-cgo), const EPOLLRDHUP ideal-int +pkg syscall (linux-386-cgo), const EPOLLRDNORM ideal-int +pkg syscall (linux-386-cgo), const EPOLLWRBAND ideal-int +pkg syscall (linux-386-cgo), const EPOLLWRNORM ideal-int +pkg syscall (linux-386-cgo), const EPOLL_CLOEXEC ideal-int +pkg syscall (linux-386-cgo), const EPOLL_CTL_ADD ideal-int +pkg syscall (linux-386-cgo), const EPOLL_CTL_DEL ideal-int +pkg syscall (linux-386-cgo), const EPOLL_CTL_MOD ideal-int +pkg syscall (linux-386-cgo), const EPOLL_NONBLOCK ideal-int +pkg syscall (linux-386-cgo), const EREMCHG Errno +pkg syscall (linux-386-cgo), const EREMOTEIO Errno +pkg syscall (linux-386-cgo), const ERESTART Errno +pkg syscall (linux-386-cgo), const ERFKILL Errno +pkg syscall (linux-386-cgo), const ESRMNT Errno +pkg syscall (linux-386-cgo), const ESTRPIPE Errno +pkg syscall (linux-386-cgo), const ETH_P_1588 ideal-int +pkg syscall (linux-386-cgo), const ETH_P_8021Q ideal-int +pkg syscall (linux-386-cgo), const ETH_P_802_2 ideal-int +pkg syscall (linux-386-cgo), const ETH_P_802_3 ideal-int +pkg syscall (linux-386-cgo), const ETH_P_AARP ideal-int +pkg syscall (linux-386-cgo), const ETH_P_ALL ideal-int +pkg syscall (linux-386-cgo), const ETH_P_AOE ideal-int +pkg syscall (linux-386-cgo), const ETH_P_ARCNET ideal-int +pkg syscall (linux-386-cgo), const ETH_P_ARP ideal-int +pkg syscall (linux-386-cgo), const ETH_P_ATALK ideal-int +pkg syscall (linux-386-cgo), const ETH_P_ATMFATE ideal-int +pkg syscall (linux-386-cgo), const ETH_P_ATMMPOA ideal-int +pkg syscall (linux-386-cgo), const ETH_P_AX25 ideal-int +pkg syscall (linux-386-cgo), const ETH_P_BPQ ideal-int +pkg syscall (linux-386-cgo), const ETH_P_CAIF ideal-int +pkg syscall (linux-386-cgo), const ETH_P_CAN ideal-int +pkg syscall (linux-386-cgo), const ETH_P_CONTROL ideal-int +pkg syscall (linux-386-cgo), const ETH_P_CUST ideal-int +pkg syscall (linux-386-cgo), const ETH_P_DDCMP ideal-int +pkg syscall (linux-386-cgo), const ETH_P_DEC ideal-int +pkg syscall (linux-386-cgo), const ETH_P_DIAG ideal-int +pkg syscall (linux-386-cgo), const ETH_P_DNA_DL ideal-int +pkg syscall (linux-386-cgo), const ETH_P_DNA_RC ideal-int +pkg syscall (linux-386-cgo), const ETH_P_DNA_RT ideal-int +pkg syscall (linux-386-cgo), const ETH_P_DSA ideal-int +pkg syscall (linux-386-cgo), const ETH_P_ECONET ideal-int +pkg syscall (linux-386-cgo), const ETH_P_EDSA ideal-int +pkg syscall (linux-386-cgo), const ETH_P_FCOE ideal-int +pkg syscall (linux-386-cgo), const ETH_P_FIP ideal-int +pkg syscall (linux-386-cgo), const ETH_P_HDLC ideal-int +pkg syscall (linux-386-cgo), const ETH_P_IEEE802154 ideal-int +pkg syscall (linux-386-cgo), const ETH_P_IEEEPUP ideal-int +pkg syscall (linux-386-cgo), const ETH_P_IEEEPUPAT ideal-int +pkg syscall (linux-386-cgo), const ETH_P_IP ideal-int +pkg syscall (linux-386-cgo), const ETH_P_IPV6 ideal-int +pkg syscall (linux-386-cgo), const ETH_P_IPX ideal-int +pkg syscall (linux-386-cgo), const ETH_P_IRDA ideal-int +pkg syscall (linux-386-cgo), const ETH_P_LAT ideal-int +pkg syscall (linux-386-cgo), const ETH_P_LINK_CTL ideal-int +pkg syscall (linux-386-cgo), const ETH_P_LOCALTALK ideal-int +pkg syscall (linux-386-cgo), const ETH_P_LOOP ideal-int +pkg syscall (linux-386-cgo), const ETH_P_MOBITEX ideal-int +pkg syscall (linux-386-cgo), const ETH_P_MPLS_MC ideal-int +pkg syscall (linux-386-cgo), const ETH_P_MPLS_UC ideal-int +pkg syscall (linux-386-cgo), const ETH_P_PAE ideal-int +pkg syscall (linux-386-cgo), const ETH_P_PAUSE ideal-int +pkg syscall (linux-386-cgo), const ETH_P_PHONET ideal-int +pkg syscall (linux-386-cgo), const ETH_P_PPPTALK ideal-int +pkg syscall (linux-386-cgo), const ETH_P_PPP_DISC ideal-int +pkg syscall (linux-386-cgo), const ETH_P_PPP_MP ideal-int +pkg syscall (linux-386-cgo), const ETH_P_PPP_SES ideal-int +pkg syscall (linux-386-cgo), const ETH_P_PUP ideal-int +pkg syscall (linux-386-cgo), const ETH_P_PUPAT ideal-int +pkg syscall (linux-386-cgo), const ETH_P_RARP ideal-int +pkg syscall (linux-386-cgo), const ETH_P_SCA ideal-int +pkg syscall (linux-386-cgo), const ETH_P_SLOW ideal-int +pkg syscall (linux-386-cgo), const ETH_P_SNAP ideal-int +pkg syscall (linux-386-cgo), const ETH_P_TEB ideal-int +pkg syscall (linux-386-cgo), const ETH_P_TIPC ideal-int +pkg syscall (linux-386-cgo), const ETH_P_TRAILER ideal-int +pkg syscall (linux-386-cgo), const ETH_P_TR_802_2 ideal-int +pkg syscall (linux-386-cgo), const ETH_P_WAN_PPP ideal-int +pkg syscall (linux-386-cgo), const ETH_P_WCCP ideal-int +pkg syscall (linux-386-cgo), const ETH_P_X25 ideal-int +pkg syscall (linux-386-cgo), const EUCLEAN Errno +pkg syscall (linux-386-cgo), const EUNATCH Errno +pkg syscall (linux-386-cgo), const EXFULL Errno +pkg syscall (linux-386-cgo), const FD_CLOEXEC ideal-int +pkg syscall (linux-386-cgo), const FD_SETSIZE ideal-int +pkg syscall (linux-386-cgo), const FLUSHO ideal-int +pkg syscall (linux-386-cgo), const F_DUPFD ideal-int +pkg syscall (linux-386-cgo), const F_DUPFD_CLOEXEC ideal-int +pkg syscall (linux-386-cgo), const F_EXLCK ideal-int +pkg syscall (linux-386-cgo), const F_GETFD ideal-int +pkg syscall (linux-386-cgo), const F_GETFL ideal-int +pkg syscall (linux-386-cgo), const F_GETLEASE ideal-int +pkg syscall (linux-386-cgo), const F_GETLK ideal-int +pkg syscall (linux-386-cgo), const F_GETLK64 ideal-int +pkg syscall (linux-386-cgo), const F_GETOWN ideal-int +pkg syscall (linux-386-cgo), const F_GETOWN_EX ideal-int +pkg syscall (linux-386-cgo), const F_GETPIPE_SZ ideal-int +pkg syscall (linux-386-cgo), const F_GETSIG ideal-int +pkg syscall (linux-386-cgo), const F_LOCK ideal-int +pkg syscall (linux-386-cgo), const F_NOTIFY ideal-int +pkg syscall (linux-386-cgo), const F_OK ideal-int +pkg syscall (linux-386-cgo), const F_RDLCK ideal-int +pkg syscall (linux-386-cgo), const F_SETFD ideal-int +pkg syscall (linux-386-cgo), const F_SETFL ideal-int +pkg syscall (linux-386-cgo), const F_SETLEASE ideal-int +pkg syscall (linux-386-cgo), const F_SETLK ideal-int +pkg syscall (linux-386-cgo), const F_SETLK64 ideal-int +pkg syscall (linux-386-cgo), const F_SETLKW ideal-int +pkg syscall (linux-386-cgo), const F_SETLKW64 ideal-int +pkg syscall (linux-386-cgo), const F_SETOWN ideal-int +pkg syscall (linux-386-cgo), const F_SETOWN_EX ideal-int +pkg syscall (linux-386-cgo), const F_SETPIPE_SZ ideal-int +pkg syscall (linux-386-cgo), const F_SETSIG ideal-int +pkg syscall (linux-386-cgo), const F_SHLCK ideal-int +pkg syscall (linux-386-cgo), const F_TEST ideal-int +pkg syscall (linux-386-cgo), const F_TLOCK ideal-int +pkg syscall (linux-386-cgo), const F_ULOCK ideal-int +pkg syscall (linux-386-cgo), const F_UNLCK ideal-int +pkg syscall (linux-386-cgo), const F_WRLCK ideal-int +pkg syscall (linux-386-cgo), const HUPCL ideal-int +pkg syscall (linux-386-cgo), const ICANON ideal-int +pkg syscall (linux-386-cgo), const ICRNL ideal-int +pkg syscall (linux-386-cgo), const IEXTEN ideal-int +pkg syscall (linux-386-cgo), const IFA_ADDRESS ideal-int +pkg syscall (linux-386-cgo), const IFA_ANYCAST ideal-int +pkg syscall (linux-386-cgo), const IFA_BROADCAST ideal-int +pkg syscall (linux-386-cgo), const IFA_CACHEINFO ideal-int +pkg syscall (linux-386-cgo), const IFA_F_DADFAILED ideal-int +pkg syscall (linux-386-cgo), const IFA_F_DEPRECATED ideal-int +pkg syscall (linux-386-cgo), const IFA_F_HOMEADDRESS ideal-int +pkg syscall (linux-386-cgo), const IFA_F_NODAD ideal-int +pkg syscall (linux-386-cgo), const IFA_F_OPTIMISTIC ideal-int +pkg syscall (linux-386-cgo), const IFA_F_PERMANENT ideal-int +pkg syscall (linux-386-cgo), const IFA_F_SECONDARY ideal-int +pkg syscall (linux-386-cgo), const IFA_F_TEMPORARY ideal-int +pkg syscall (linux-386-cgo), const IFA_F_TENTATIVE ideal-int +pkg syscall (linux-386-cgo), const IFA_LABEL ideal-int +pkg syscall (linux-386-cgo), const IFA_LOCAL ideal-int +pkg syscall (linux-386-cgo), const IFA_MAX ideal-int +pkg syscall (linux-386-cgo), const IFA_MULTICAST ideal-int +pkg syscall (linux-386-cgo), const IFA_UNSPEC ideal-int +pkg syscall (linux-386-cgo), const IFF_ALLMULTI ideal-int +pkg syscall (linux-386-cgo), const IFF_AUTOMEDIA ideal-int +pkg syscall (linux-386-cgo), const IFF_DEBUG ideal-int +pkg syscall (linux-386-cgo), const IFF_DYNAMIC ideal-int +pkg syscall (linux-386-cgo), const IFF_MASTER ideal-int +pkg syscall (linux-386-cgo), const IFF_NOARP ideal-int +pkg syscall (linux-386-cgo), const IFF_NOTRAILERS ideal-int +pkg syscall (linux-386-cgo), const IFF_NO_PI ideal-int +pkg syscall (linux-386-cgo), const IFF_ONE_QUEUE ideal-int +pkg syscall (linux-386-cgo), const IFF_POINTOPOINT ideal-int +pkg syscall (linux-386-cgo), const IFF_PORTSEL ideal-int +pkg syscall (linux-386-cgo), const IFF_PROMISC ideal-int +pkg syscall (linux-386-cgo), const IFF_RUNNING ideal-int +pkg syscall (linux-386-cgo), const IFF_SLAVE ideal-int +pkg syscall (linux-386-cgo), const IFF_TAP ideal-int +pkg syscall (linux-386-cgo), const IFF_TUN ideal-int +pkg syscall (linux-386-cgo), const IFF_TUN_EXCL ideal-int +pkg syscall (linux-386-cgo), const IFF_VNET_HDR ideal-int +pkg syscall (linux-386-cgo), const IFLA_ADDRESS ideal-int +pkg syscall (linux-386-cgo), const IFLA_BROADCAST ideal-int +pkg syscall (linux-386-cgo), const IFLA_COST ideal-int +pkg syscall (linux-386-cgo), const IFLA_IFALIAS ideal-int +pkg syscall (linux-386-cgo), const IFLA_IFNAME ideal-int +pkg syscall (linux-386-cgo), const IFLA_LINK ideal-int +pkg syscall (linux-386-cgo), const IFLA_LINKINFO ideal-int +pkg syscall (linux-386-cgo), const IFLA_LINKMODE ideal-int +pkg syscall (linux-386-cgo), const IFLA_MAP ideal-int +pkg syscall (linux-386-cgo), const IFLA_MASTER ideal-int +pkg syscall (linux-386-cgo), const IFLA_MAX ideal-int +pkg syscall (linux-386-cgo), const IFLA_MTU ideal-int +pkg syscall (linux-386-cgo), const IFLA_NET_NS_PID ideal-int +pkg syscall (linux-386-cgo), const IFLA_OPERSTATE ideal-int +pkg syscall (linux-386-cgo), const IFLA_PRIORITY ideal-int +pkg syscall (linux-386-cgo), const IFLA_PROTINFO ideal-int +pkg syscall (linux-386-cgo), const IFLA_QDISC ideal-int +pkg syscall (linux-386-cgo), const IFLA_STATS ideal-int +pkg syscall (linux-386-cgo), const IFLA_TXQLEN ideal-int +pkg syscall (linux-386-cgo), const IFLA_UNSPEC ideal-int +pkg syscall (linux-386-cgo), const IFLA_WEIGHT ideal-int +pkg syscall (linux-386-cgo), const IFLA_WIRELESS ideal-int +pkg syscall (linux-386-cgo), const IFNAMSIZ ideal-int +pkg syscall (linux-386-cgo), const IGNBRK ideal-int +pkg syscall (linux-386-cgo), const IGNCR ideal-int +pkg syscall (linux-386-cgo), const IGNPAR ideal-int +pkg syscall (linux-386-cgo), const IMAXBEL ideal-int +pkg syscall (linux-386-cgo), const INLCR ideal-int +pkg syscall (linux-386-cgo), const INPCK ideal-int +pkg syscall (linux-386-cgo), const IN_ACCESS ideal-int +pkg syscall (linux-386-cgo), const IN_ALL_EVENTS ideal-int +pkg syscall (linux-386-cgo), const IN_ATTRIB ideal-int +pkg syscall (linux-386-cgo), const IN_CLASSA_HOST ideal-int +pkg syscall (linux-386-cgo), const IN_CLASSA_MAX ideal-int +pkg syscall (linux-386-cgo), const IN_CLASSA_NET ideal-int +pkg syscall (linux-386-cgo), const IN_CLASSA_NSHIFT ideal-int +pkg syscall (linux-386-cgo), const IN_CLASSB_HOST ideal-int +pkg syscall (linux-386-cgo), const IN_CLASSB_MAX ideal-int +pkg syscall (linux-386-cgo), const IN_CLASSB_NET ideal-int +pkg syscall (linux-386-cgo), const IN_CLASSB_NSHIFT ideal-int +pkg syscall (linux-386-cgo), const IN_CLASSC_HOST ideal-int +pkg syscall (linux-386-cgo), const IN_CLASSC_NET ideal-int +pkg syscall (linux-386-cgo), const IN_CLASSC_NSHIFT ideal-int +pkg syscall (linux-386-cgo), const IN_CLOEXEC ideal-int +pkg syscall (linux-386-cgo), const IN_CLOSE ideal-int +pkg syscall (linux-386-cgo), const IN_CLOSE_NOWRITE ideal-int +pkg syscall (linux-386-cgo), const IN_CLOSE_WRITE ideal-int +pkg syscall (linux-386-cgo), const IN_CREATE ideal-int +pkg syscall (linux-386-cgo), const IN_DELETE ideal-int +pkg syscall (linux-386-cgo), const IN_DELETE_SELF ideal-int +pkg syscall (linux-386-cgo), const IN_DONT_FOLLOW ideal-int +pkg syscall (linux-386-cgo), const IN_EXCL_UNLINK ideal-int +pkg syscall (linux-386-cgo), const IN_IGNORED ideal-int +pkg syscall (linux-386-cgo), const IN_ISDIR ideal-int +pkg syscall (linux-386-cgo), const IN_LOOPBACKNET ideal-int +pkg syscall (linux-386-cgo), const IN_MASK_ADD ideal-int +pkg syscall (linux-386-cgo), const IN_MODIFY ideal-int +pkg syscall (linux-386-cgo), const IN_MOVE ideal-int +pkg syscall (linux-386-cgo), const IN_MOVED_FROM ideal-int +pkg syscall (linux-386-cgo), const IN_MOVED_TO ideal-int +pkg syscall (linux-386-cgo), const IN_MOVE_SELF ideal-int +pkg syscall (linux-386-cgo), const IN_NONBLOCK ideal-int +pkg syscall (linux-386-cgo), const IN_ONESHOT ideal-int +pkg syscall (linux-386-cgo), const IN_ONLYDIR ideal-int +pkg syscall (linux-386-cgo), const IN_OPEN ideal-int +pkg syscall (linux-386-cgo), const IN_Q_OVERFLOW ideal-int +pkg syscall (linux-386-cgo), const IN_UNMOUNT ideal-int +pkg syscall (linux-386-cgo), const IPPROTO_AH ideal-int +pkg syscall (linux-386-cgo), const IPPROTO_COMP ideal-int +pkg syscall (linux-386-cgo), const IPPROTO_DCCP ideal-int +pkg syscall (linux-386-cgo), const IPPROTO_DSTOPTS ideal-int +pkg syscall (linux-386-cgo), const IPPROTO_EGP ideal-int +pkg syscall (linux-386-cgo), const IPPROTO_ENCAP ideal-int +pkg syscall (linux-386-cgo), const IPPROTO_ESP ideal-int +pkg syscall (linux-386-cgo), const IPPROTO_FRAGMENT ideal-int +pkg syscall (linux-386-cgo), const IPPROTO_GRE ideal-int +pkg syscall (linux-386-cgo), const IPPROTO_HOPOPTS ideal-int +pkg syscall (linux-386-cgo), const IPPROTO_ICMP ideal-int +pkg syscall (linux-386-cgo), const IPPROTO_ICMPV6 ideal-int +pkg syscall (linux-386-cgo), const IPPROTO_IDP ideal-int +pkg syscall (linux-386-cgo), const IPPROTO_IGMP ideal-int +pkg syscall (linux-386-cgo), const IPPROTO_IPIP ideal-int +pkg syscall (linux-386-cgo), const IPPROTO_MTP ideal-int +pkg syscall (linux-386-cgo), const IPPROTO_NONE ideal-int +pkg syscall (linux-386-cgo), const IPPROTO_PIM ideal-int +pkg syscall (linux-386-cgo), const IPPROTO_PUP ideal-int +pkg syscall (linux-386-cgo), const IPPROTO_RAW ideal-int +pkg syscall (linux-386-cgo), const IPPROTO_ROUTING ideal-int +pkg syscall (linux-386-cgo), const IPPROTO_RSVP ideal-int +pkg syscall (linux-386-cgo), const IPPROTO_SCTP ideal-int +pkg syscall (linux-386-cgo), const IPPROTO_TP ideal-int +pkg syscall (linux-386-cgo), const IPPROTO_UDPLITE ideal-int +pkg syscall (linux-386-cgo), const IPV6_2292DSTOPTS ideal-int +pkg syscall (linux-386-cgo), const IPV6_2292HOPLIMIT ideal-int +pkg syscall (linux-386-cgo), const IPV6_2292HOPOPTS ideal-int +pkg syscall (linux-386-cgo), const IPV6_2292PKTINFO ideal-int +pkg syscall (linux-386-cgo), const IPV6_2292PKTOPTIONS ideal-int +pkg syscall (linux-386-cgo), const IPV6_2292RTHDR ideal-int +pkg syscall (linux-386-cgo), const IPV6_ADDRFORM ideal-int +pkg syscall (linux-386-cgo), const IPV6_ADD_MEMBERSHIP ideal-int +pkg syscall (linux-386-cgo), const IPV6_AUTHHDR ideal-int +pkg syscall (linux-386-cgo), const IPV6_CHECKSUM ideal-int +pkg syscall (linux-386-cgo), const IPV6_DROP_MEMBERSHIP ideal-int +pkg syscall (linux-386-cgo), const IPV6_DSTOPTS ideal-int +pkg syscall (linux-386-cgo), const IPV6_HOPLIMIT ideal-int +pkg syscall (linux-386-cgo), const IPV6_HOPOPTS ideal-int +pkg syscall (linux-386-cgo), const IPV6_IPSEC_POLICY ideal-int +pkg syscall (linux-386-cgo), const IPV6_JOIN_ANYCAST ideal-int +pkg syscall (linux-386-cgo), const IPV6_LEAVE_ANYCAST ideal-int +pkg syscall (linux-386-cgo), const IPV6_MTU ideal-int +pkg syscall (linux-386-cgo), const IPV6_MTU_DISCOVER ideal-int +pkg syscall (linux-386-cgo), const IPV6_NEXTHOP ideal-int +pkg syscall (linux-386-cgo), const IPV6_PKTINFO ideal-int +pkg syscall (linux-386-cgo), const IPV6_PMTUDISC_DO ideal-int +pkg syscall (linux-386-cgo), const IPV6_PMTUDISC_DONT ideal-int +pkg syscall (linux-386-cgo), const IPV6_PMTUDISC_PROBE ideal-int +pkg syscall (linux-386-cgo), const IPV6_PMTUDISC_WANT ideal-int +pkg syscall (linux-386-cgo), const IPV6_RECVDSTOPTS ideal-int +pkg syscall (linux-386-cgo), const IPV6_RECVERR ideal-int +pkg syscall (linux-386-cgo), const IPV6_RECVHOPLIMIT ideal-int +pkg syscall (linux-386-cgo), const IPV6_RECVHOPOPTS ideal-int +pkg syscall (linux-386-cgo), const IPV6_RECVPKTINFO ideal-int +pkg syscall (linux-386-cgo), const IPV6_RECVRTHDR ideal-int +pkg syscall (linux-386-cgo), const IPV6_RECVTCLASS ideal-int +pkg syscall (linux-386-cgo), const IPV6_ROUTER_ALERT ideal-int +pkg syscall (linux-386-cgo), const IPV6_RTHDR ideal-int +pkg syscall (linux-386-cgo), const IPV6_RTHDRDSTOPTS ideal-int +pkg syscall (linux-386-cgo), const IPV6_RTHDR_LOOSE ideal-int +pkg syscall (linux-386-cgo), const IPV6_RTHDR_STRICT ideal-int +pkg syscall (linux-386-cgo), const IPV6_RTHDR_TYPE_0 ideal-int +pkg syscall (linux-386-cgo), const IPV6_RXDSTOPTS ideal-int +pkg syscall (linux-386-cgo), const IPV6_RXHOPOPTS ideal-int +pkg syscall (linux-386-cgo), const IPV6_TCLASS ideal-int +pkg syscall (linux-386-cgo), const IPV6_XFRM_POLICY ideal-int +pkg syscall (linux-386-cgo), const IP_ADD_SOURCE_MEMBERSHIP ideal-int +pkg syscall (linux-386-cgo), const IP_BLOCK_SOURCE ideal-int +pkg syscall (linux-386-cgo), const IP_DEFAULT_MULTICAST_LOOP ideal-int +pkg syscall (linux-386-cgo), const IP_DEFAULT_MULTICAST_TTL ideal-int +pkg syscall (linux-386-cgo), const IP_DF ideal-int +pkg syscall (linux-386-cgo), const IP_DROP_SOURCE_MEMBERSHIP ideal-int +pkg syscall (linux-386-cgo), const IP_FREEBIND ideal-int +pkg syscall (linux-386-cgo), const IP_HDRINCL ideal-int +pkg syscall (linux-386-cgo), const IP_IPSEC_POLICY ideal-int +pkg syscall (linux-386-cgo), const IP_MAXPACKET ideal-int +pkg syscall (linux-386-cgo), const IP_MAX_MEMBERSHIPS ideal-int +pkg syscall (linux-386-cgo), const IP_MF ideal-int +pkg syscall (linux-386-cgo), const IP_MINTTL ideal-int +pkg syscall (linux-386-cgo), const IP_MSFILTER ideal-int +pkg syscall (linux-386-cgo), const IP_MSS ideal-int +pkg syscall (linux-386-cgo), const IP_MTU ideal-int +pkg syscall (linux-386-cgo), const IP_MTU_DISCOVER ideal-int +pkg syscall (linux-386-cgo), const IP_OFFMASK ideal-int +pkg syscall (linux-386-cgo), const IP_OPTIONS ideal-int +pkg syscall (linux-386-cgo), const IP_ORIGDSTADDR ideal-int +pkg syscall (linux-386-cgo), const IP_PASSSEC ideal-int +pkg syscall (linux-386-cgo), const IP_PKTINFO ideal-int +pkg syscall (linux-386-cgo), const IP_PKTOPTIONS ideal-int +pkg syscall (linux-386-cgo), const IP_PMTUDISC ideal-int +pkg syscall (linux-386-cgo), const IP_PMTUDISC_DO ideal-int +pkg syscall (linux-386-cgo), const IP_PMTUDISC_DONT ideal-int +pkg syscall (linux-386-cgo), const IP_PMTUDISC_PROBE ideal-int +pkg syscall (linux-386-cgo), const IP_PMTUDISC_WANT ideal-int +pkg syscall (linux-386-cgo), const IP_RECVERR ideal-int +pkg syscall (linux-386-cgo), const IP_RECVOPTS ideal-int +pkg syscall (linux-386-cgo), const IP_RECVORIGDSTADDR ideal-int +pkg syscall (linux-386-cgo), const IP_RECVRETOPTS ideal-int +pkg syscall (linux-386-cgo), const IP_RECVTOS ideal-int +pkg syscall (linux-386-cgo), const IP_RECVTTL ideal-int +pkg syscall (linux-386-cgo), const IP_RETOPTS ideal-int +pkg syscall (linux-386-cgo), const IP_RF ideal-int +pkg syscall (linux-386-cgo), const IP_ROUTER_ALERT ideal-int +pkg syscall (linux-386-cgo), const IP_TRANSPARENT ideal-int +pkg syscall (linux-386-cgo), const IP_UNBLOCK_SOURCE ideal-int +pkg syscall (linux-386-cgo), const IP_XFRM_POLICY ideal-int +pkg syscall (linux-386-cgo), const ISIG ideal-int +pkg syscall (linux-386-cgo), const ISTRIP ideal-int +pkg syscall (linux-386-cgo), const IUCLC ideal-int +pkg syscall (linux-386-cgo), const IUTF8 ideal-int +pkg syscall (linux-386-cgo), const IXANY ideal-int +pkg syscall (linux-386-cgo), const IXOFF ideal-int +pkg syscall (linux-386-cgo), const IXON ideal-int +pkg syscall (linux-386-cgo), const LINUX_REBOOT_CMD_CAD_OFF ideal-int +pkg syscall (linux-386-cgo), const LINUX_REBOOT_CMD_CAD_ON ideal-int +pkg syscall (linux-386-cgo), const LINUX_REBOOT_CMD_HALT ideal-int +pkg syscall (linux-386-cgo), const LINUX_REBOOT_CMD_KEXEC ideal-int +pkg syscall (linux-386-cgo), const LINUX_REBOOT_CMD_POWER_OFF ideal-int +pkg syscall (linux-386-cgo), const LINUX_REBOOT_CMD_RESTART ideal-int +pkg syscall (linux-386-cgo), const LINUX_REBOOT_CMD_RESTART2 ideal-int +pkg syscall (linux-386-cgo), const LINUX_REBOOT_CMD_SW_SUSPEND ideal-int +pkg syscall (linux-386-cgo), const LINUX_REBOOT_MAGIC1 ideal-int +pkg syscall (linux-386-cgo), const LINUX_REBOOT_MAGIC2 ideal-int +pkg syscall (linux-386-cgo), const LOCK_EX ideal-int +pkg syscall (linux-386-cgo), const LOCK_NB ideal-int +pkg syscall (linux-386-cgo), const LOCK_SH ideal-int +pkg syscall (linux-386-cgo), const LOCK_UN ideal-int +pkg syscall (linux-386-cgo), const MADV_DOFORK ideal-int +pkg syscall (linux-386-cgo), const MADV_DONTFORK ideal-int +pkg syscall (linux-386-cgo), const MADV_DONTNEED ideal-int +pkg syscall (linux-386-cgo), const MADV_HUGEPAGE ideal-int +pkg syscall (linux-386-cgo), const MADV_HWPOISON ideal-int +pkg syscall (linux-386-cgo), const MADV_MERGEABLE ideal-int +pkg syscall (linux-386-cgo), const MADV_NOHUGEPAGE ideal-int +pkg syscall (linux-386-cgo), const MADV_NORMAL ideal-int +pkg syscall (linux-386-cgo), const MADV_RANDOM ideal-int +pkg syscall (linux-386-cgo), const MADV_REMOVE ideal-int +pkg syscall (linux-386-cgo), const MADV_SEQUENTIAL ideal-int +pkg syscall (linux-386-cgo), const MADV_UNMERGEABLE ideal-int +pkg syscall (linux-386-cgo), const MADV_WILLNEED ideal-int +pkg syscall (linux-386-cgo), const MAP_32BIT ideal-int +pkg syscall (linux-386-cgo), const MAP_ANON ideal-int +pkg syscall (linux-386-cgo), const MAP_ANONYMOUS ideal-int +pkg syscall (linux-386-cgo), const MAP_DENYWRITE ideal-int +pkg syscall (linux-386-cgo), const MAP_EXECUTABLE ideal-int +pkg syscall (linux-386-cgo), const MAP_FILE ideal-int +pkg syscall (linux-386-cgo), const MAP_FIXED ideal-int +pkg syscall (linux-386-cgo), const MAP_GROWSDOWN ideal-int +pkg syscall (linux-386-cgo), const MAP_HUGETLB ideal-int +pkg syscall (linux-386-cgo), const MAP_LOCKED ideal-int +pkg syscall (linux-386-cgo), const MAP_NONBLOCK ideal-int +pkg syscall (linux-386-cgo), const MAP_NORESERVE ideal-int +pkg syscall (linux-386-cgo), const MAP_POPULATE ideal-int +pkg syscall (linux-386-cgo), const MAP_PRIVATE ideal-int +pkg syscall (linux-386-cgo), const MAP_SHARED ideal-int +pkg syscall (linux-386-cgo), const MAP_STACK ideal-int +pkg syscall (linux-386-cgo), const MAP_TYPE ideal-int +pkg syscall (linux-386-cgo), const MCL_CURRENT ideal-int +pkg syscall (linux-386-cgo), const MCL_FUTURE ideal-int +pkg syscall (linux-386-cgo), const MNT_DETACH ideal-int +pkg syscall (linux-386-cgo), const MNT_EXPIRE ideal-int +pkg syscall (linux-386-cgo), const MNT_FORCE ideal-int +pkg syscall (linux-386-cgo), const MSG_CMSG_CLOEXEC ideal-int +pkg syscall (linux-386-cgo), const MSG_CONFIRM ideal-int +pkg syscall (linux-386-cgo), const MSG_CTRUNC ideal-int +pkg syscall (linux-386-cgo), const MSG_DONTROUTE ideal-int +pkg syscall (linux-386-cgo), const MSG_DONTWAIT ideal-int +pkg syscall (linux-386-cgo), const MSG_EOR ideal-int +pkg syscall (linux-386-cgo), const MSG_ERRQUEUE ideal-int +pkg syscall (linux-386-cgo), const MSG_FIN ideal-int +pkg syscall (linux-386-cgo), const MSG_MORE ideal-int +pkg syscall (linux-386-cgo), const MSG_NOSIGNAL ideal-int +pkg syscall (linux-386-cgo), const MSG_OOB ideal-int +pkg syscall (linux-386-cgo), const MSG_PEEK ideal-int +pkg syscall (linux-386-cgo), const MSG_PROXY ideal-int +pkg syscall (linux-386-cgo), const MSG_RST ideal-int +pkg syscall (linux-386-cgo), const MSG_SYN ideal-int +pkg syscall (linux-386-cgo), const MSG_TRUNC ideal-int +pkg syscall (linux-386-cgo), const MSG_TRYHARD ideal-int +pkg syscall (linux-386-cgo), const MSG_WAITALL ideal-int +pkg syscall (linux-386-cgo), const MSG_WAITFORONE ideal-int +pkg syscall (linux-386-cgo), const MS_ACTIVE ideal-int +pkg syscall (linux-386-cgo), const MS_ASYNC ideal-int +pkg syscall (linux-386-cgo), const MS_BIND ideal-int +pkg syscall (linux-386-cgo), const MS_DIRSYNC ideal-int +pkg syscall (linux-386-cgo), const MS_INVALIDATE ideal-int +pkg syscall (linux-386-cgo), const MS_I_VERSION ideal-int +pkg syscall (linux-386-cgo), const MS_KERNMOUNT ideal-int +pkg syscall (linux-386-cgo), const MS_MANDLOCK ideal-int +pkg syscall (linux-386-cgo), const MS_MGC_MSK ideal-int +pkg syscall (linux-386-cgo), const MS_MGC_VAL ideal-int +pkg syscall (linux-386-cgo), const MS_MOVE ideal-int +pkg syscall (linux-386-cgo), const MS_NOATIME ideal-int +pkg syscall (linux-386-cgo), const MS_NODEV ideal-int +pkg syscall (linux-386-cgo), const MS_NODIRATIME ideal-int +pkg syscall (linux-386-cgo), const MS_NOEXEC ideal-int +pkg syscall (linux-386-cgo), const MS_NOSUID ideal-int +pkg syscall (linux-386-cgo), const MS_NOUSER ideal-int +pkg syscall (linux-386-cgo), const MS_POSIXACL ideal-int +pkg syscall (linux-386-cgo), const MS_PRIVATE ideal-int +pkg syscall (linux-386-cgo), const MS_RDONLY ideal-int +pkg syscall (linux-386-cgo), const MS_REC ideal-int +pkg syscall (linux-386-cgo), const MS_RELATIME ideal-int +pkg syscall (linux-386-cgo), const MS_REMOUNT ideal-int +pkg syscall (linux-386-cgo), const MS_RMT_MASK ideal-int +pkg syscall (linux-386-cgo), const MS_SHARED ideal-int +pkg syscall (linux-386-cgo), const MS_SILENT ideal-int +pkg syscall (linux-386-cgo), const MS_SLAVE ideal-int +pkg syscall (linux-386-cgo), const MS_STRICTATIME ideal-int +pkg syscall (linux-386-cgo), const MS_SYNC ideal-int +pkg syscall (linux-386-cgo), const MS_SYNCHRONOUS ideal-int +pkg syscall (linux-386-cgo), const MS_UNBINDABLE ideal-int +pkg syscall (linux-386-cgo), const NAME_MAX ideal-int +pkg syscall (linux-386-cgo), const NETLINK_ADD_MEMBERSHIP ideal-int +pkg syscall (linux-386-cgo), const NETLINK_AUDIT ideal-int +pkg syscall (linux-386-cgo), const NETLINK_BROADCAST_ERROR ideal-int +pkg syscall (linux-386-cgo), const NETLINK_CONNECTOR ideal-int +pkg syscall (linux-386-cgo), const NETLINK_DNRTMSG ideal-int +pkg syscall (linux-386-cgo), const NETLINK_DROP_MEMBERSHIP ideal-int +pkg syscall (linux-386-cgo), const NETLINK_ECRYPTFS ideal-int +pkg syscall (linux-386-cgo), const NETLINK_FIB_LOOKUP ideal-int +pkg syscall (linux-386-cgo), const NETLINK_FIREWALL ideal-int +pkg syscall (linux-386-cgo), const NETLINK_GENERIC ideal-int +pkg syscall (linux-386-cgo), const NETLINK_INET_DIAG ideal-int +pkg syscall (linux-386-cgo), const NETLINK_IP6_FW ideal-int +pkg syscall (linux-386-cgo), const NETLINK_ISCSI ideal-int +pkg syscall (linux-386-cgo), const NETLINK_KOBJECT_UEVENT ideal-int +pkg syscall (linux-386-cgo), const NETLINK_NETFILTER ideal-int +pkg syscall (linux-386-cgo), const NETLINK_NFLOG ideal-int +pkg syscall (linux-386-cgo), const NETLINK_NO_ENOBUFS ideal-int +pkg syscall (linux-386-cgo), const NETLINK_PKTINFO ideal-int +pkg syscall (linux-386-cgo), const NETLINK_ROUTE ideal-int +pkg syscall (linux-386-cgo), const NETLINK_SCSITRANSPORT ideal-int +pkg syscall (linux-386-cgo), const NETLINK_SELINUX ideal-int +pkg syscall (linux-386-cgo), const NETLINK_UNUSED ideal-int +pkg syscall (linux-386-cgo), const NETLINK_USERSOCK ideal-int +pkg syscall (linux-386-cgo), const NETLINK_XFRM ideal-int +pkg syscall (linux-386-cgo), const NLA_ALIGNTO ideal-int +pkg syscall (linux-386-cgo), const NLA_F_NESTED ideal-int +pkg syscall (linux-386-cgo), const NLA_F_NET_BYTEORDER ideal-int +pkg syscall (linux-386-cgo), const NLA_HDRLEN ideal-int +pkg syscall (linux-386-cgo), const NLMSG_ALIGNTO ideal-int +pkg syscall (linux-386-cgo), const NLMSG_DONE ideal-int +pkg syscall (linux-386-cgo), const NLMSG_ERROR ideal-int +pkg syscall (linux-386-cgo), const NLMSG_HDRLEN ideal-int +pkg syscall (linux-386-cgo), const NLMSG_MIN_TYPE ideal-int +pkg syscall (linux-386-cgo), const NLMSG_NOOP ideal-int +pkg syscall (linux-386-cgo), const NLMSG_OVERRUN ideal-int +pkg syscall (linux-386-cgo), const NLM_F_ACK ideal-int +pkg syscall (linux-386-cgo), const NLM_F_APPEND ideal-int +pkg syscall (linux-386-cgo), const NLM_F_ATOMIC ideal-int +pkg syscall (linux-386-cgo), const NLM_F_CREATE ideal-int +pkg syscall (linux-386-cgo), const NLM_F_DUMP ideal-int +pkg syscall (linux-386-cgo), const NLM_F_ECHO ideal-int +pkg syscall (linux-386-cgo), const NLM_F_EXCL ideal-int +pkg syscall (linux-386-cgo), const NLM_F_MATCH ideal-int +pkg syscall (linux-386-cgo), const NLM_F_MULTI ideal-int +pkg syscall (linux-386-cgo), const NLM_F_REPLACE ideal-int +pkg syscall (linux-386-cgo), const NLM_F_REQUEST ideal-int +pkg syscall (linux-386-cgo), const NLM_F_ROOT ideal-int +pkg syscall (linux-386-cgo), const NOFLSH ideal-int +pkg syscall (linux-386-cgo), const OCRNL ideal-int +pkg syscall (linux-386-cgo), const OFDEL ideal-int +pkg syscall (linux-386-cgo), const OFILL ideal-int +pkg syscall (linux-386-cgo), const OLCUC ideal-int +pkg syscall (linux-386-cgo), const ONLCR ideal-int +pkg syscall (linux-386-cgo), const ONLRET ideal-int +pkg syscall (linux-386-cgo), const ONOCR ideal-int +pkg syscall (linux-386-cgo), const OPOST ideal-int +pkg syscall (linux-386-cgo), const O_ACCMODE ideal-int +pkg syscall (linux-386-cgo), const O_DIRECT ideal-int +pkg syscall (linux-386-cgo), const O_DIRECTORY ideal-int +pkg syscall (linux-386-cgo), const O_DSYNC ideal-int +pkg syscall (linux-386-cgo), const O_FSYNC ideal-int +pkg syscall (linux-386-cgo), const O_LARGEFILE ideal-int +pkg syscall (linux-386-cgo), const O_NDELAY ideal-int +pkg syscall (linux-386-cgo), const O_NOATIME ideal-int +pkg syscall (linux-386-cgo), const O_NOFOLLOW ideal-int +pkg syscall (linux-386-cgo), const O_RSYNC ideal-int +pkg syscall (linux-386-cgo), const PACKET_ADD_MEMBERSHIP ideal-int +pkg syscall (linux-386-cgo), const PACKET_BROADCAST ideal-int +pkg syscall (linux-386-cgo), const PACKET_DROP_MEMBERSHIP ideal-int +pkg syscall (linux-386-cgo), const PACKET_FASTROUTE ideal-int +pkg syscall (linux-386-cgo), const PACKET_HOST ideal-int +pkg syscall (linux-386-cgo), const PACKET_LOOPBACK ideal-int +pkg syscall (linux-386-cgo), const PACKET_MR_ALLMULTI ideal-int +pkg syscall (linux-386-cgo), const PACKET_MR_MULTICAST ideal-int +pkg syscall (linux-386-cgo), const PACKET_MR_PROMISC ideal-int +pkg syscall (linux-386-cgo), const PACKET_MULTICAST ideal-int +pkg syscall (linux-386-cgo), const PACKET_OTHERHOST ideal-int +pkg syscall (linux-386-cgo), const PACKET_OUTGOING ideal-int +pkg syscall (linux-386-cgo), const PACKET_RECV_OUTPUT ideal-int +pkg syscall (linux-386-cgo), const PACKET_RX_RING ideal-int +pkg syscall (linux-386-cgo), const PACKET_STATISTICS ideal-int +pkg syscall (linux-386-cgo), const PARENB ideal-int +pkg syscall (linux-386-cgo), const PARMRK ideal-int +pkg syscall (linux-386-cgo), const PARODD ideal-int +pkg syscall (linux-386-cgo), const PENDIN ideal-int +pkg syscall (linux-386-cgo), const PROT_EXEC ideal-int +pkg syscall (linux-386-cgo), const PROT_GROWSDOWN ideal-int +pkg syscall (linux-386-cgo), const PROT_GROWSUP ideal-int +pkg syscall (linux-386-cgo), const PROT_NONE ideal-int +pkg syscall (linux-386-cgo), const PROT_READ ideal-int +pkg syscall (linux-386-cgo), const PROT_WRITE ideal-int +pkg syscall (linux-386-cgo), const PR_CAPBSET_DROP ideal-int +pkg syscall (linux-386-cgo), const PR_CAPBSET_READ ideal-int +pkg syscall (linux-386-cgo), const PR_ENDIAN_BIG ideal-int +pkg syscall (linux-386-cgo), const PR_ENDIAN_LITTLE ideal-int +pkg syscall (linux-386-cgo), const PR_ENDIAN_PPC_LITTLE ideal-int +pkg syscall (linux-386-cgo), const PR_FPEMU_NOPRINT ideal-int +pkg syscall (linux-386-cgo), const PR_FPEMU_SIGFPE ideal-int +pkg syscall (linux-386-cgo), const PR_FP_EXC_ASYNC ideal-int +pkg syscall (linux-386-cgo), const PR_FP_EXC_DISABLED ideal-int +pkg syscall (linux-386-cgo), const PR_FP_EXC_DIV ideal-int +pkg syscall (linux-386-cgo), const PR_FP_EXC_INV ideal-int +pkg syscall (linux-386-cgo), const PR_FP_EXC_NONRECOV ideal-int +pkg syscall (linux-386-cgo), const PR_FP_EXC_OVF ideal-int +pkg syscall (linux-386-cgo), const PR_FP_EXC_PRECISE ideal-int +pkg syscall (linux-386-cgo), const PR_FP_EXC_RES ideal-int +pkg syscall (linux-386-cgo), const PR_FP_EXC_SW_ENABLE ideal-int +pkg syscall (linux-386-cgo), const PR_FP_EXC_UND ideal-int +pkg syscall (linux-386-cgo), const PR_GET_DUMPABLE ideal-int +pkg syscall (linux-386-cgo), const PR_GET_ENDIAN ideal-int +pkg syscall (linux-386-cgo), const PR_GET_FPEMU ideal-int +pkg syscall (linux-386-cgo), const PR_GET_FPEXC ideal-int +pkg syscall (linux-386-cgo), const PR_GET_KEEPCAPS ideal-int +pkg syscall (linux-386-cgo), const PR_GET_NAME ideal-int +pkg syscall (linux-386-cgo), const PR_GET_PDEATHSIG ideal-int +pkg syscall (linux-386-cgo), const PR_GET_SECCOMP ideal-int +pkg syscall (linux-386-cgo), const PR_GET_SECUREBITS ideal-int +pkg syscall (linux-386-cgo), const PR_GET_TIMERSLACK ideal-int +pkg syscall (linux-386-cgo), const PR_GET_TIMING ideal-int +pkg syscall (linux-386-cgo), const PR_GET_TSC ideal-int +pkg syscall (linux-386-cgo), const PR_GET_UNALIGN ideal-int +pkg syscall (linux-386-cgo), const PR_MCE_KILL ideal-int +pkg syscall (linux-386-cgo), const PR_MCE_KILL_CLEAR ideal-int +pkg syscall (linux-386-cgo), const PR_MCE_KILL_DEFAULT ideal-int +pkg syscall (linux-386-cgo), const PR_MCE_KILL_EARLY ideal-int +pkg syscall (linux-386-cgo), const PR_MCE_KILL_GET ideal-int +pkg syscall (linux-386-cgo), const PR_MCE_KILL_LATE ideal-int +pkg syscall (linux-386-cgo), const PR_MCE_KILL_SET ideal-int +pkg syscall (linux-386-cgo), const PR_SET_DUMPABLE ideal-int +pkg syscall (linux-386-cgo), const PR_SET_ENDIAN ideal-int +pkg syscall (linux-386-cgo), const PR_SET_FPEMU ideal-int +pkg syscall (linux-386-cgo), const PR_SET_FPEXC ideal-int +pkg syscall (linux-386-cgo), const PR_SET_KEEPCAPS ideal-int +pkg syscall (linux-386-cgo), const PR_SET_NAME ideal-int +pkg syscall (linux-386-cgo), const PR_SET_PDEATHSIG ideal-int +pkg syscall (linux-386-cgo), const PR_SET_PTRACER ideal-int +pkg syscall (linux-386-cgo), const PR_SET_SECCOMP ideal-int +pkg syscall (linux-386-cgo), const PR_SET_SECUREBITS ideal-int +pkg syscall (linux-386-cgo), const PR_SET_TIMERSLACK ideal-int +pkg syscall (linux-386-cgo), const PR_SET_TIMING ideal-int +pkg syscall (linux-386-cgo), const PR_SET_TSC ideal-int +pkg syscall (linux-386-cgo), const PR_SET_UNALIGN ideal-int +pkg syscall (linux-386-cgo), const PR_TASK_PERF_EVENTS_DISABLE ideal-int +pkg syscall (linux-386-cgo), const PR_TASK_PERF_EVENTS_ENABLE ideal-int +pkg syscall (linux-386-cgo), const PR_TIMING_STATISTICAL ideal-int +pkg syscall (linux-386-cgo), const PR_TIMING_TIMESTAMP ideal-int +pkg syscall (linux-386-cgo), const PR_TSC_ENABLE ideal-int +pkg syscall (linux-386-cgo), const PR_TSC_SIGSEGV ideal-int +pkg syscall (linux-386-cgo), const PR_UNALIGN_NOPRINT ideal-int +pkg syscall (linux-386-cgo), const PR_UNALIGN_SIGBUS ideal-int +pkg syscall (linux-386-cgo), const PTRACE_ATTACH ideal-int +pkg syscall (linux-386-cgo), const PTRACE_CONT ideal-int +pkg syscall (linux-386-cgo), const PTRACE_DETACH ideal-int +pkg syscall (linux-386-cgo), const PTRACE_EVENT_CLONE ideal-int +pkg syscall (linux-386-cgo), const PTRACE_EVENT_EXEC ideal-int +pkg syscall (linux-386-cgo), const PTRACE_EVENT_EXIT ideal-int +pkg syscall (linux-386-cgo), const PTRACE_EVENT_FORK ideal-int +pkg syscall (linux-386-cgo), const PTRACE_EVENT_VFORK ideal-int +pkg syscall (linux-386-cgo), const PTRACE_EVENT_VFORK_DONE ideal-int +pkg syscall (linux-386-cgo), const PTRACE_GETEVENTMSG ideal-int +pkg syscall (linux-386-cgo), const PTRACE_GETFPREGS ideal-int +pkg syscall (linux-386-cgo), const PTRACE_GETFPXREGS ideal-int +pkg syscall (linux-386-cgo), const PTRACE_GETREGS ideal-int +pkg syscall (linux-386-cgo), const PTRACE_GETREGSET ideal-int +pkg syscall (linux-386-cgo), const PTRACE_GETSIGINFO ideal-int +pkg syscall (linux-386-cgo), const PTRACE_GET_THREAD_AREA ideal-int +pkg syscall (linux-386-cgo), const PTRACE_KILL ideal-int +pkg syscall (linux-386-cgo), const PTRACE_OLDSETOPTIONS ideal-int +pkg syscall (linux-386-cgo), const PTRACE_O_MASK ideal-int +pkg syscall (linux-386-cgo), const PTRACE_O_TRACECLONE ideal-int +pkg syscall (linux-386-cgo), const PTRACE_O_TRACEEXEC ideal-int +pkg syscall (linux-386-cgo), const PTRACE_O_TRACEEXIT ideal-int +pkg syscall (linux-386-cgo), const PTRACE_O_TRACEFORK ideal-int +pkg syscall (linux-386-cgo), const PTRACE_O_TRACESYSGOOD ideal-int +pkg syscall (linux-386-cgo), const PTRACE_O_TRACEVFORK ideal-int +pkg syscall (linux-386-cgo), const PTRACE_O_TRACEVFORKDONE ideal-int +pkg syscall (linux-386-cgo), const PTRACE_PEEKDATA ideal-int +pkg syscall (linux-386-cgo), const PTRACE_PEEKTEXT ideal-int +pkg syscall (linux-386-cgo), const PTRACE_PEEKUSR ideal-int +pkg syscall (linux-386-cgo), const PTRACE_POKEDATA ideal-int +pkg syscall (linux-386-cgo), const PTRACE_POKETEXT ideal-int +pkg syscall (linux-386-cgo), const PTRACE_POKEUSR ideal-int +pkg syscall (linux-386-cgo), const PTRACE_SETFPREGS ideal-int +pkg syscall (linux-386-cgo), const PTRACE_SETFPXREGS ideal-int +pkg syscall (linux-386-cgo), const PTRACE_SETOPTIONS ideal-int +pkg syscall (linux-386-cgo), const PTRACE_SETREGS ideal-int +pkg syscall (linux-386-cgo), const PTRACE_SETREGSET ideal-int +pkg syscall (linux-386-cgo), const PTRACE_SETSIGINFO ideal-int +pkg syscall (linux-386-cgo), const PTRACE_SET_THREAD_AREA ideal-int +pkg syscall (linux-386-cgo), const PTRACE_SINGLEBLOCK ideal-int +pkg syscall (linux-386-cgo), const PTRACE_SINGLESTEP ideal-int +pkg syscall (linux-386-cgo), const PTRACE_SYSCALL ideal-int +pkg syscall (linux-386-cgo), const PTRACE_SYSEMU ideal-int +pkg syscall (linux-386-cgo), const PTRACE_SYSEMU_SINGLESTEP ideal-int +pkg syscall (linux-386-cgo), const PTRACE_TRACEME ideal-int +pkg syscall (linux-386-cgo), const PathMax ideal-int +pkg syscall (linux-386-cgo), const RLIMIT_AS ideal-int +pkg syscall (linux-386-cgo), const RLIMIT_CORE ideal-int +pkg syscall (linux-386-cgo), const RLIMIT_CPU ideal-int +pkg syscall (linux-386-cgo), const RLIMIT_DATA ideal-int +pkg syscall (linux-386-cgo), const RLIMIT_FSIZE ideal-int +pkg syscall (linux-386-cgo), const RLIMIT_NOFILE ideal-int +pkg syscall (linux-386-cgo), const RLIMIT_STACK ideal-int +pkg syscall (linux-386-cgo), const RLIM_INFINITY ideal-int +pkg syscall (linux-386-cgo), const RTAX_ADVMSS ideal-int +pkg syscall (linux-386-cgo), const RTAX_CWND ideal-int +pkg syscall (linux-386-cgo), const RTAX_FEATURES ideal-int +pkg syscall (linux-386-cgo), const RTAX_FEATURE_ALLFRAG ideal-int +pkg syscall (linux-386-cgo), const RTAX_FEATURE_ECN ideal-int +pkg syscall (linux-386-cgo), const RTAX_FEATURE_SACK ideal-int +pkg syscall (linux-386-cgo), const RTAX_FEATURE_TIMESTAMP ideal-int +pkg syscall (linux-386-cgo), const RTAX_HOPLIMIT ideal-int +pkg syscall (linux-386-cgo), const RTAX_INITCWND ideal-int +pkg syscall (linux-386-cgo), const RTAX_INITRWND ideal-int +pkg syscall (linux-386-cgo), const RTAX_LOCK ideal-int +pkg syscall (linux-386-cgo), const RTAX_MAX ideal-int +pkg syscall (linux-386-cgo), const RTAX_MTU ideal-int +pkg syscall (linux-386-cgo), const RTAX_REORDERING ideal-int +pkg syscall (linux-386-cgo), const RTAX_RTO_MIN ideal-int +pkg syscall (linux-386-cgo), const RTAX_RTT ideal-int +pkg syscall (linux-386-cgo), const RTAX_RTTVAR ideal-int +pkg syscall (linux-386-cgo), const RTAX_SSTHRESH ideal-int +pkg syscall (linux-386-cgo), const RTAX_UNSPEC ideal-int +pkg syscall (linux-386-cgo), const RTAX_WINDOW ideal-int +pkg syscall (linux-386-cgo), const RTA_ALIGNTO ideal-int +pkg syscall (linux-386-cgo), const RTA_CACHEINFO ideal-int +pkg syscall (linux-386-cgo), const RTA_DST ideal-int +pkg syscall (linux-386-cgo), const RTA_FLOW ideal-int +pkg syscall (linux-386-cgo), const RTA_GATEWAY ideal-int +pkg syscall (linux-386-cgo), const RTA_IIF ideal-int +pkg syscall (linux-386-cgo), const RTA_MAX ideal-int +pkg syscall (linux-386-cgo), const RTA_METRICS ideal-int +pkg syscall (linux-386-cgo), const RTA_MULTIPATH ideal-int +pkg syscall (linux-386-cgo), const RTA_OIF ideal-int +pkg syscall (linux-386-cgo), const RTA_PREFSRC ideal-int +pkg syscall (linux-386-cgo), const RTA_PRIORITY ideal-int +pkg syscall (linux-386-cgo), const RTA_SRC ideal-int +pkg syscall (linux-386-cgo), const RTA_TABLE ideal-int +pkg syscall (linux-386-cgo), const RTA_UNSPEC ideal-int +pkg syscall (linux-386-cgo), const RTCF_DIRECTSRC ideal-int +pkg syscall (linux-386-cgo), const RTCF_DOREDIRECT ideal-int +pkg syscall (linux-386-cgo), const RTCF_LOG ideal-int +pkg syscall (linux-386-cgo), const RTCF_MASQ ideal-int +pkg syscall (linux-386-cgo), const RTCF_NAT ideal-int +pkg syscall (linux-386-cgo), const RTCF_VALVE ideal-int +pkg syscall (linux-386-cgo), const RTF_ADDRCLASSMASK ideal-int +pkg syscall (linux-386-cgo), const RTF_ADDRCONF ideal-int +pkg syscall (linux-386-cgo), const RTF_ALLONLINK ideal-int +pkg syscall (linux-386-cgo), const RTF_BROADCAST ideal-int +pkg syscall (linux-386-cgo), const RTF_CACHE ideal-int +pkg syscall (linux-386-cgo), const RTF_DEFAULT ideal-int +pkg syscall (linux-386-cgo), const RTF_DYNAMIC ideal-int +pkg syscall (linux-386-cgo), const RTF_FLOW ideal-int +pkg syscall (linux-386-cgo), const RTF_GATEWAY ideal-int +pkg syscall (linux-386-cgo), const RTF_HOST ideal-int +pkg syscall (linux-386-cgo), const RTF_INTERFACE ideal-int +pkg syscall (linux-386-cgo), const RTF_IRTT ideal-int +pkg syscall (linux-386-cgo), const RTF_LINKRT ideal-int +pkg syscall (linux-386-cgo), const RTF_LOCAL ideal-int +pkg syscall (linux-386-cgo), const RTF_MODIFIED ideal-int +pkg syscall (linux-386-cgo), const RTF_MSS ideal-int +pkg syscall (linux-386-cgo), const RTF_MTU ideal-int +pkg syscall (linux-386-cgo), const RTF_MULTICAST ideal-int +pkg syscall (linux-386-cgo), const RTF_NAT ideal-int +pkg syscall (linux-386-cgo), const RTF_NOFORWARD ideal-int +pkg syscall (linux-386-cgo), const RTF_NONEXTHOP ideal-int +pkg syscall (linux-386-cgo), const RTF_NOPMTUDISC ideal-int +pkg syscall (linux-386-cgo), const RTF_POLICY ideal-int +pkg syscall (linux-386-cgo), const RTF_REINSTATE ideal-int +pkg syscall (linux-386-cgo), const RTF_REJECT ideal-int +pkg syscall (linux-386-cgo), const RTF_STATIC ideal-int +pkg syscall (linux-386-cgo), const RTF_THROW ideal-int +pkg syscall (linux-386-cgo), const RTF_UP ideal-int +pkg syscall (linux-386-cgo), const RTF_WINDOW ideal-int +pkg syscall (linux-386-cgo), const RTF_XRESOLVE ideal-int +pkg syscall (linux-386-cgo), const RTM_BASE ideal-int +pkg syscall (linux-386-cgo), const RTM_DELACTION ideal-int +pkg syscall (linux-386-cgo), const RTM_DELADDR ideal-int +pkg syscall (linux-386-cgo), const RTM_DELADDRLABEL ideal-int +pkg syscall (linux-386-cgo), const RTM_DELLINK ideal-int +pkg syscall (linux-386-cgo), const RTM_DELNEIGH ideal-int +pkg syscall (linux-386-cgo), const RTM_DELQDISC ideal-int +pkg syscall (linux-386-cgo), const RTM_DELROUTE ideal-int +pkg syscall (linux-386-cgo), const RTM_DELRULE ideal-int +pkg syscall (linux-386-cgo), const RTM_DELTCLASS ideal-int +pkg syscall (linux-386-cgo), const RTM_DELTFILTER ideal-int +pkg syscall (linux-386-cgo), const RTM_F_CLONED ideal-int +pkg syscall (linux-386-cgo), const RTM_F_EQUALIZE ideal-int +pkg syscall (linux-386-cgo), const RTM_F_NOTIFY ideal-int +pkg syscall (linux-386-cgo), const RTM_F_PREFIX ideal-int +pkg syscall (linux-386-cgo), const RTM_GETACTION ideal-int +pkg syscall (linux-386-cgo), const RTM_GETADDR ideal-int +pkg syscall (linux-386-cgo), const RTM_GETADDRLABEL ideal-int +pkg syscall (linux-386-cgo), const RTM_GETANYCAST ideal-int +pkg syscall (linux-386-cgo), const RTM_GETDCB ideal-int +pkg syscall (linux-386-cgo), const RTM_GETLINK ideal-int +pkg syscall (linux-386-cgo), const RTM_GETMULTICAST ideal-int +pkg syscall (linux-386-cgo), const RTM_GETNEIGH ideal-int +pkg syscall (linux-386-cgo), const RTM_GETNEIGHTBL ideal-int +pkg syscall (linux-386-cgo), const RTM_GETQDISC ideal-int +pkg syscall (linux-386-cgo), const RTM_GETROUTE ideal-int +pkg syscall (linux-386-cgo), const RTM_GETRULE ideal-int +pkg syscall (linux-386-cgo), const RTM_GETTCLASS ideal-int +pkg syscall (linux-386-cgo), const RTM_GETTFILTER ideal-int +pkg syscall (linux-386-cgo), const RTM_MAX ideal-int +pkg syscall (linux-386-cgo), const RTM_NEWACTION ideal-int +pkg syscall (linux-386-cgo), const RTM_NEWADDR ideal-int +pkg syscall (linux-386-cgo), const RTM_NEWADDRLABEL ideal-int +pkg syscall (linux-386-cgo), const RTM_NEWLINK ideal-int +pkg syscall (linux-386-cgo), const RTM_NEWNDUSEROPT ideal-int +pkg syscall (linux-386-cgo), const RTM_NEWNEIGH ideal-int +pkg syscall (linux-386-cgo), const RTM_NEWNEIGHTBL ideal-int +pkg syscall (linux-386-cgo), const RTM_NEWPREFIX ideal-int +pkg syscall (linux-386-cgo), const RTM_NEWQDISC ideal-int +pkg syscall (linux-386-cgo), const RTM_NEWROUTE ideal-int +pkg syscall (linux-386-cgo), const RTM_NEWRULE ideal-int +pkg syscall (linux-386-cgo), const RTM_NEWTCLASS ideal-int +pkg syscall (linux-386-cgo), const RTM_NEWTFILTER ideal-int +pkg syscall (linux-386-cgo), const RTM_NR_FAMILIES ideal-int +pkg syscall (linux-386-cgo), const RTM_NR_MSGTYPES ideal-int +pkg syscall (linux-386-cgo), const RTM_SETDCB ideal-int +pkg syscall (linux-386-cgo), const RTM_SETLINK ideal-int +pkg syscall (linux-386-cgo), const RTM_SETNEIGHTBL ideal-int +pkg syscall (linux-386-cgo), const RTNH_ALIGNTO ideal-int +pkg syscall (linux-386-cgo), const RTNH_F_DEAD ideal-int +pkg syscall (linux-386-cgo), const RTNH_F_ONLINK ideal-int +pkg syscall (linux-386-cgo), const RTNH_F_PERVASIVE ideal-int +pkg syscall (linux-386-cgo), const RTN_ANYCAST ideal-int +pkg syscall (linux-386-cgo), const RTN_BLACKHOLE ideal-int +pkg syscall (linux-386-cgo), const RTN_BROADCAST ideal-int +pkg syscall (linux-386-cgo), const RTN_LOCAL ideal-int +pkg syscall (linux-386-cgo), const RTN_MAX ideal-int +pkg syscall (linux-386-cgo), const RTN_MULTICAST ideal-int +pkg syscall (linux-386-cgo), const RTN_NAT ideal-int +pkg syscall (linux-386-cgo), const RTN_PROHIBIT ideal-int +pkg syscall (linux-386-cgo), const RTN_THROW ideal-int +pkg syscall (linux-386-cgo), const RTN_UNICAST ideal-int +pkg syscall (linux-386-cgo), const RTN_UNREACHABLE ideal-int +pkg syscall (linux-386-cgo), const RTN_UNSPEC ideal-int +pkg syscall (linux-386-cgo), const RTN_XRESOLVE ideal-int +pkg syscall (linux-386-cgo), const RTPROT_BIRD ideal-int +pkg syscall (linux-386-cgo), const RTPROT_BOOT ideal-int +pkg syscall (linux-386-cgo), const RTPROT_DHCP ideal-int +pkg syscall (linux-386-cgo), const RTPROT_DNROUTED ideal-int +pkg syscall (linux-386-cgo), const RTPROT_GATED ideal-int +pkg syscall (linux-386-cgo), const RTPROT_KERNEL ideal-int +pkg syscall (linux-386-cgo), const RTPROT_MRT ideal-int +pkg syscall (linux-386-cgo), const RTPROT_NTK ideal-int +pkg syscall (linux-386-cgo), const RTPROT_RA ideal-int +pkg syscall (linux-386-cgo), const RTPROT_REDIRECT ideal-int +pkg syscall (linux-386-cgo), const RTPROT_STATIC ideal-int +pkg syscall (linux-386-cgo), const RTPROT_UNSPEC ideal-int +pkg syscall (linux-386-cgo), const RTPROT_XORP ideal-int +pkg syscall (linux-386-cgo), const RTPROT_ZEBRA ideal-int +pkg syscall (linux-386-cgo), const RT_CLASS_DEFAULT ideal-int +pkg syscall (linux-386-cgo), const RT_CLASS_LOCAL ideal-int +pkg syscall (linux-386-cgo), const RT_CLASS_MAIN ideal-int +pkg syscall (linux-386-cgo), const RT_CLASS_MAX ideal-int +pkg syscall (linux-386-cgo), const RT_CLASS_UNSPEC ideal-int +pkg syscall (linux-386-cgo), const RT_SCOPE_HOST ideal-int +pkg syscall (linux-386-cgo), const RT_SCOPE_LINK ideal-int +pkg syscall (linux-386-cgo), const RT_SCOPE_NOWHERE ideal-int +pkg syscall (linux-386-cgo), const RT_SCOPE_SITE ideal-int +pkg syscall (linux-386-cgo), const RT_SCOPE_UNIVERSE ideal-int +pkg syscall (linux-386-cgo), const RT_TABLE_COMPAT ideal-int +pkg syscall (linux-386-cgo), const RT_TABLE_DEFAULT ideal-int +pkg syscall (linux-386-cgo), const RT_TABLE_LOCAL ideal-int +pkg syscall (linux-386-cgo), const RT_TABLE_MAIN ideal-int +pkg syscall (linux-386-cgo), const RT_TABLE_MAX ideal-int +pkg syscall (linux-386-cgo), const RT_TABLE_UNSPEC ideal-int +pkg syscall (linux-386-cgo), const RUSAGE_CHILDREN ideal-int +pkg syscall (linux-386-cgo), const RUSAGE_SELF ideal-int +pkg syscall (linux-386-cgo), const RUSAGE_THREAD ideal-int +pkg syscall (linux-386-cgo), const SCM_CREDENTIALS ideal-int +pkg syscall (linux-386-cgo), const SCM_RIGHTS ideal-int +pkg syscall (linux-386-cgo), const SCM_TIMESTAMP ideal-int +pkg syscall (linux-386-cgo), const SCM_TIMESTAMPING ideal-int +pkg syscall (linux-386-cgo), const SCM_TIMESTAMPNS ideal-int +pkg syscall (linux-386-cgo), const SIGCHLD Signal +pkg syscall (linux-386-cgo), const SIGCLD Signal +pkg syscall (linux-386-cgo), const SIGCONT Signal +pkg syscall (linux-386-cgo), const SIGIO Signal +pkg syscall (linux-386-cgo), const SIGIOT Signal +pkg syscall (linux-386-cgo), const SIGPOLL Signal +pkg syscall (linux-386-cgo), const SIGPROF Signal +pkg syscall (linux-386-cgo), const SIGPWR Signal +pkg syscall (linux-386-cgo), const SIGSTKFLT Signal +pkg syscall (linux-386-cgo), const SIGSTOP Signal +pkg syscall (linux-386-cgo), const SIGSYS Signal +pkg syscall (linux-386-cgo), const SIGTSTP Signal +pkg syscall (linux-386-cgo), const SIGTTIN Signal +pkg syscall (linux-386-cgo), const SIGTTOU Signal +pkg syscall (linux-386-cgo), const SIGUNUSED Signal +pkg syscall (linux-386-cgo), const SIGURG Signal +pkg syscall (linux-386-cgo), const SIGUSR1 Signal +pkg syscall (linux-386-cgo), const SIGUSR2 Signal +pkg syscall (linux-386-cgo), const SIGVTALRM Signal +pkg syscall (linux-386-cgo), const SIGWINCH Signal +pkg syscall (linux-386-cgo), const SIGXCPU Signal +pkg syscall (linux-386-cgo), const SIGXFSZ Signal +pkg syscall (linux-386-cgo), const SIOCADDDLCI ideal-int +pkg syscall (linux-386-cgo), const SIOCADDMULTI ideal-int +pkg syscall (linux-386-cgo), const SIOCADDRT ideal-int +pkg syscall (linux-386-cgo), const SIOCATMARK ideal-int +pkg syscall (linux-386-cgo), const SIOCDARP ideal-int +pkg syscall (linux-386-cgo), const SIOCDELDLCI ideal-int +pkg syscall (linux-386-cgo), const SIOCDELMULTI ideal-int +pkg syscall (linux-386-cgo), const SIOCDELRT ideal-int +pkg syscall (linux-386-cgo), const SIOCDEVPRIVATE ideal-int +pkg syscall (linux-386-cgo), const SIOCDIFADDR ideal-int +pkg syscall (linux-386-cgo), const SIOCDRARP ideal-int +pkg syscall (linux-386-cgo), const SIOCGARP ideal-int +pkg syscall (linux-386-cgo), const SIOCGIFADDR ideal-int +pkg syscall (linux-386-cgo), const SIOCGIFBR ideal-int +pkg syscall (linux-386-cgo), const SIOCGIFBRDADDR ideal-int +pkg syscall (linux-386-cgo), const SIOCGIFCONF ideal-int +pkg syscall (linux-386-cgo), const SIOCGIFCOUNT ideal-int +pkg syscall (linux-386-cgo), const SIOCGIFDSTADDR ideal-int +pkg syscall (linux-386-cgo), const SIOCGIFENCAP ideal-int +pkg syscall (linux-386-cgo), const SIOCGIFFLAGS ideal-int +pkg syscall (linux-386-cgo), const SIOCGIFHWADDR ideal-int +pkg syscall (linux-386-cgo), const SIOCGIFINDEX ideal-int +pkg syscall (linux-386-cgo), const SIOCGIFMAP ideal-int +pkg syscall (linux-386-cgo), const SIOCGIFMEM ideal-int +pkg syscall (linux-386-cgo), const SIOCGIFMETRIC ideal-int +pkg syscall (linux-386-cgo), const SIOCGIFMTU ideal-int +pkg syscall (linux-386-cgo), const SIOCGIFNAME ideal-int +pkg syscall (linux-386-cgo), const SIOCGIFNETMASK ideal-int +pkg syscall (linux-386-cgo), const SIOCGIFPFLAGS ideal-int +pkg syscall (linux-386-cgo), const SIOCGIFSLAVE ideal-int +pkg syscall (linux-386-cgo), const SIOCGIFTXQLEN ideal-int +pkg syscall (linux-386-cgo), const SIOCGPGRP ideal-int +pkg syscall (linux-386-cgo), const SIOCGRARP ideal-int +pkg syscall (linux-386-cgo), const SIOCGSTAMP ideal-int +pkg syscall (linux-386-cgo), const SIOCGSTAMPNS ideal-int +pkg syscall (linux-386-cgo), const SIOCPROTOPRIVATE ideal-int +pkg syscall (linux-386-cgo), const SIOCRTMSG ideal-int +pkg syscall (linux-386-cgo), const SIOCSARP ideal-int +pkg syscall (linux-386-cgo), const SIOCSIFADDR ideal-int +pkg syscall (linux-386-cgo), const SIOCSIFBR ideal-int +pkg syscall (linux-386-cgo), const SIOCSIFBRDADDR ideal-int +pkg syscall (linux-386-cgo), const SIOCSIFDSTADDR ideal-int +pkg syscall (linux-386-cgo), const SIOCSIFENCAP ideal-int +pkg syscall (linux-386-cgo), const SIOCSIFFLAGS ideal-int +pkg syscall (linux-386-cgo), const SIOCSIFHWADDR ideal-int +pkg syscall (linux-386-cgo), const SIOCSIFHWBROADCAST ideal-int +pkg syscall (linux-386-cgo), const SIOCSIFLINK ideal-int +pkg syscall (linux-386-cgo), const SIOCSIFMAP ideal-int +pkg syscall (linux-386-cgo), const SIOCSIFMEM ideal-int +pkg syscall (linux-386-cgo), const SIOCSIFMETRIC ideal-int +pkg syscall (linux-386-cgo), const SIOCSIFMTU ideal-int +pkg syscall (linux-386-cgo), const SIOCSIFNAME ideal-int +pkg syscall (linux-386-cgo), const SIOCSIFNETMASK ideal-int +pkg syscall (linux-386-cgo), const SIOCSIFPFLAGS ideal-int +pkg syscall (linux-386-cgo), const SIOCSIFSLAVE ideal-int +pkg syscall (linux-386-cgo), const SIOCSIFTXQLEN ideal-int +pkg syscall (linux-386-cgo), const SIOCSPGRP ideal-int +pkg syscall (linux-386-cgo), const SIOCSRARP ideal-int +pkg syscall (linux-386-cgo), const SOCK_CLOEXEC ideal-int +pkg syscall (linux-386-cgo), const SOCK_DCCP ideal-int +pkg syscall (linux-386-cgo), const SOCK_NONBLOCK ideal-int +pkg syscall (linux-386-cgo), const SOCK_PACKET ideal-int +pkg syscall (linux-386-cgo), const SOCK_RDM ideal-int +pkg syscall (linux-386-cgo), const SOL_AAL ideal-int +pkg syscall (linux-386-cgo), const SOL_ATM ideal-int +pkg syscall (linux-386-cgo), const SOL_DECNET ideal-int +pkg syscall (linux-386-cgo), const SOL_ICMPV6 ideal-int +pkg syscall (linux-386-cgo), const SOL_IP ideal-int +pkg syscall (linux-386-cgo), const SOL_IPV6 ideal-int +pkg syscall (linux-386-cgo), const SOL_IRDA ideal-int +pkg syscall (linux-386-cgo), const SOL_PACKET ideal-int +pkg syscall (linux-386-cgo), const SOL_RAW ideal-int +pkg syscall (linux-386-cgo), const SOL_TCP ideal-int +pkg syscall (linux-386-cgo), const SOL_X25 ideal-int +pkg syscall (linux-386-cgo), const SO_ACCEPTCONN ideal-int +pkg syscall (linux-386-cgo), const SO_ATTACH_FILTER ideal-int +pkg syscall (linux-386-cgo), const SO_BINDTODEVICE ideal-int +pkg syscall (linux-386-cgo), const SO_BSDCOMPAT ideal-int +pkg syscall (linux-386-cgo), const SO_DEBUG ideal-int +pkg syscall (linux-386-cgo), const SO_DETACH_FILTER ideal-int +pkg syscall (linux-386-cgo), const SO_DOMAIN ideal-int +pkg syscall (linux-386-cgo), const SO_ERROR ideal-int +pkg syscall (linux-386-cgo), const SO_MARK ideal-int +pkg syscall (linux-386-cgo), const SO_NO_CHECK ideal-int +pkg syscall (linux-386-cgo), const SO_OOBINLINE ideal-int +pkg syscall (linux-386-cgo), const SO_PASSCRED ideal-int +pkg syscall (linux-386-cgo), const SO_PASSSEC ideal-int +pkg syscall (linux-386-cgo), const SO_PEERCRED ideal-int +pkg syscall (linux-386-cgo), const SO_PEERNAME ideal-int +pkg syscall (linux-386-cgo), const SO_PEERSEC ideal-int +pkg syscall (linux-386-cgo), const SO_PRIORITY ideal-int +pkg syscall (linux-386-cgo), const SO_PROTOCOL ideal-int +pkg syscall (linux-386-cgo), const SO_RCVBUFFORCE ideal-int +pkg syscall (linux-386-cgo), const SO_RCVLOWAT ideal-int +pkg syscall (linux-386-cgo), const SO_RCVTIMEO ideal-int +pkg syscall (linux-386-cgo), const SO_RXQ_OVFL ideal-int +pkg syscall (linux-386-cgo), const SO_SECURITY_AUTHENTICATION ideal-int +pkg syscall (linux-386-cgo), const SO_SECURITY_ENCRYPTION_NETWORK ideal-int +pkg syscall (linux-386-cgo), const SO_SECURITY_ENCRYPTION_TRANSPORT ideal-int +pkg syscall (linux-386-cgo), const SO_SNDBUFFORCE ideal-int +pkg syscall (linux-386-cgo), const SO_SNDLOWAT ideal-int +pkg syscall (linux-386-cgo), const SO_SNDTIMEO ideal-int +pkg syscall (linux-386-cgo), const SO_TIMESTAMP ideal-int +pkg syscall (linux-386-cgo), const SO_TIMESTAMPING ideal-int +pkg syscall (linux-386-cgo), const SO_TIMESTAMPNS ideal-int +pkg syscall (linux-386-cgo), const SO_TYPE ideal-int +pkg syscall (linux-386-cgo), const SYS_ACCESS ideal-int +pkg syscall (linux-386-cgo), const SYS_ACCT ideal-int +pkg syscall (linux-386-cgo), const SYS_ADD_KEY ideal-int +pkg syscall (linux-386-cgo), const SYS_ADJTIMEX ideal-int +pkg syscall (linux-386-cgo), const SYS_AFS_SYSCALL ideal-int +pkg syscall (linux-386-cgo), const SYS_ALARM ideal-int +pkg syscall (linux-386-cgo), const SYS_BDFLUSH ideal-int +pkg syscall (linux-386-cgo), const SYS_BREAK ideal-int +pkg syscall (linux-386-cgo), const SYS_BRK ideal-int +pkg syscall (linux-386-cgo), const SYS_CAPGET ideal-int +pkg syscall (linux-386-cgo), const SYS_CAPSET ideal-int +pkg syscall (linux-386-cgo), const SYS_CHDIR ideal-int +pkg syscall (linux-386-cgo), const SYS_CHMOD ideal-int +pkg syscall (linux-386-cgo), const SYS_CHOWN ideal-int +pkg syscall (linux-386-cgo), const SYS_CHOWN32 ideal-int +pkg syscall (linux-386-cgo), const SYS_CHROOT ideal-int +pkg syscall (linux-386-cgo), const SYS_CLOCK_GETRES ideal-int +pkg syscall (linux-386-cgo), const SYS_CLOCK_GETTIME ideal-int +pkg syscall (linux-386-cgo), const SYS_CLOCK_NANOSLEEP ideal-int +pkg syscall (linux-386-cgo), const SYS_CLOCK_SETTIME ideal-int +pkg syscall (linux-386-cgo), const SYS_CLONE ideal-int +pkg syscall (linux-386-cgo), const SYS_CLOSE ideal-int +pkg syscall (linux-386-cgo), const SYS_CREAT ideal-int +pkg syscall (linux-386-cgo), const SYS_CREATE_MODULE ideal-int +pkg syscall (linux-386-cgo), const SYS_DELETE_MODULE ideal-int +pkg syscall (linux-386-cgo), const SYS_DUP ideal-int +pkg syscall (linux-386-cgo), const SYS_DUP2 ideal-int +pkg syscall (linux-386-cgo), const SYS_DUP3 ideal-int +pkg syscall (linux-386-cgo), const SYS_EPOLL_CREATE ideal-int +pkg syscall (linux-386-cgo), const SYS_EPOLL_CREATE1 ideal-int +pkg syscall (linux-386-cgo), const SYS_EPOLL_CTL ideal-int +pkg syscall (linux-386-cgo), const SYS_EPOLL_PWAIT ideal-int +pkg syscall (linux-386-cgo), const SYS_EPOLL_WAIT ideal-int +pkg syscall (linux-386-cgo), const SYS_EVENTFD ideal-int +pkg syscall (linux-386-cgo), const SYS_EVENTFD2 ideal-int +pkg syscall (linux-386-cgo), const SYS_EXECVE ideal-int +pkg syscall (linux-386-cgo), const SYS_EXIT ideal-int +pkg syscall (linux-386-cgo), const SYS_EXIT_GROUP ideal-int +pkg syscall (linux-386-cgo), const SYS_FACCESSAT ideal-int +pkg syscall (linux-386-cgo), const SYS_FADVISE64 ideal-int +pkg syscall (linux-386-cgo), const SYS_FADVISE64_64 ideal-int +pkg syscall (linux-386-cgo), const SYS_FALLOCATE ideal-int +pkg syscall (linux-386-cgo), const SYS_FANOTIFY_INIT ideal-int +pkg syscall (linux-386-cgo), const SYS_FANOTIFY_MARK ideal-int +pkg syscall (linux-386-cgo), const SYS_FCHDIR ideal-int +pkg syscall (linux-386-cgo), const SYS_FCHMOD ideal-int +pkg syscall (linux-386-cgo), const SYS_FCHMODAT ideal-int +pkg syscall (linux-386-cgo), const SYS_FCHOWN ideal-int +pkg syscall (linux-386-cgo), const SYS_FCHOWN32 ideal-int +pkg syscall (linux-386-cgo), const SYS_FCHOWNAT ideal-int +pkg syscall (linux-386-cgo), const SYS_FCNTL ideal-int +pkg syscall (linux-386-cgo), const SYS_FCNTL64 ideal-int +pkg syscall (linux-386-cgo), const SYS_FDATASYNC ideal-int +pkg syscall (linux-386-cgo), const SYS_FGETXATTR ideal-int +pkg syscall (linux-386-cgo), const SYS_FLISTXATTR ideal-int +pkg syscall (linux-386-cgo), const SYS_FLOCK ideal-int +pkg syscall (linux-386-cgo), const SYS_FORK ideal-int +pkg syscall (linux-386-cgo), const SYS_FREMOVEXATTR ideal-int +pkg syscall (linux-386-cgo), const SYS_FSETXATTR ideal-int +pkg syscall (linux-386-cgo), const SYS_FSTAT ideal-int +pkg syscall (linux-386-cgo), const SYS_FSTAT64 ideal-int +pkg syscall (linux-386-cgo), const SYS_FSTATAT64 ideal-int +pkg syscall (linux-386-cgo), const SYS_FSTATFS ideal-int +pkg syscall (linux-386-cgo), const SYS_FSTATFS64 ideal-int +pkg syscall (linux-386-cgo), const SYS_FSYNC ideal-int +pkg syscall (linux-386-cgo), const SYS_FTIME ideal-int +pkg syscall (linux-386-cgo), const SYS_FTRUNCATE ideal-int +pkg syscall (linux-386-cgo), const SYS_FTRUNCATE64 ideal-int +pkg syscall (linux-386-cgo), const SYS_FUTEX ideal-int +pkg syscall (linux-386-cgo), const SYS_FUTIMESAT ideal-int +pkg syscall (linux-386-cgo), const SYS_GETCPU ideal-int +pkg syscall (linux-386-cgo), const SYS_GETCWD ideal-int +pkg syscall (linux-386-cgo), const SYS_GETDENTS ideal-int +pkg syscall (linux-386-cgo), const SYS_GETDENTS64 ideal-int +pkg syscall (linux-386-cgo), const SYS_GETEGID ideal-int +pkg syscall (linux-386-cgo), const SYS_GETEGID32 ideal-int +pkg syscall (linux-386-cgo), const SYS_GETEUID ideal-int +pkg syscall (linux-386-cgo), const SYS_GETEUID32 ideal-int +pkg syscall (linux-386-cgo), const SYS_GETGID ideal-int +pkg syscall (linux-386-cgo), const SYS_GETGID32 ideal-int +pkg syscall (linux-386-cgo), const SYS_GETGROUPS ideal-int +pkg syscall (linux-386-cgo), const SYS_GETGROUPS32 ideal-int +pkg syscall (linux-386-cgo), const SYS_GETITIMER ideal-int +pkg syscall (linux-386-cgo), const SYS_GETPGID ideal-int +pkg syscall (linux-386-cgo), const SYS_GETPGRP ideal-int +pkg syscall (linux-386-cgo), const SYS_GETPID ideal-int +pkg syscall (linux-386-cgo), const SYS_GETPMSG ideal-int +pkg syscall (linux-386-cgo), const SYS_GETPPID ideal-int +pkg syscall (linux-386-cgo), const SYS_GETPRIORITY ideal-int +pkg syscall (linux-386-cgo), const SYS_GETRESGID ideal-int +pkg syscall (linux-386-cgo), const SYS_GETRESGID32 ideal-int +pkg syscall (linux-386-cgo), const SYS_GETRESUID ideal-int +pkg syscall (linux-386-cgo), const SYS_GETRESUID32 ideal-int +pkg syscall (linux-386-cgo), const SYS_GETRLIMIT ideal-int +pkg syscall (linux-386-cgo), const SYS_GETRUSAGE ideal-int +pkg syscall (linux-386-cgo), const SYS_GETSID ideal-int +pkg syscall (linux-386-cgo), const SYS_GETTID ideal-int +pkg syscall (linux-386-cgo), const SYS_GETTIMEOFDAY ideal-int +pkg syscall (linux-386-cgo), const SYS_GETUID ideal-int +pkg syscall (linux-386-cgo), const SYS_GETUID32 ideal-int +pkg syscall (linux-386-cgo), const SYS_GETXATTR ideal-int +pkg syscall (linux-386-cgo), const SYS_GET_KERNEL_SYMS ideal-int +pkg syscall (linux-386-cgo), const SYS_GET_MEMPOLICY ideal-int +pkg syscall (linux-386-cgo), const SYS_GET_ROBUST_LIST ideal-int +pkg syscall (linux-386-cgo), const SYS_GET_THREAD_AREA ideal-int +pkg syscall (linux-386-cgo), const SYS_GTTY ideal-int +pkg syscall (linux-386-cgo), const SYS_IDLE ideal-int +pkg syscall (linux-386-cgo), const SYS_INIT_MODULE ideal-int +pkg syscall (linux-386-cgo), const SYS_INOTIFY_ADD_WATCH ideal-int +pkg syscall (linux-386-cgo), const SYS_INOTIFY_INIT ideal-int +pkg syscall (linux-386-cgo), const SYS_INOTIFY_INIT1 ideal-int +pkg syscall (linux-386-cgo), const SYS_INOTIFY_RM_WATCH ideal-int +pkg syscall (linux-386-cgo), const SYS_IOCTL ideal-int +pkg syscall (linux-386-cgo), const SYS_IOPERM ideal-int +pkg syscall (linux-386-cgo), const SYS_IOPL ideal-int +pkg syscall (linux-386-cgo), const SYS_IOPRIO_GET ideal-int +pkg syscall (linux-386-cgo), const SYS_IOPRIO_SET ideal-int +pkg syscall (linux-386-cgo), const SYS_IO_CANCEL ideal-int +pkg syscall (linux-386-cgo), const SYS_IO_DESTROY ideal-int +pkg syscall (linux-386-cgo), const SYS_IO_GETEVENTS ideal-int +pkg syscall (linux-386-cgo), const SYS_IO_SETUP ideal-int +pkg syscall (linux-386-cgo), const SYS_IO_SUBMIT ideal-int +pkg syscall (linux-386-cgo), const SYS_IPC ideal-int +pkg syscall (linux-386-cgo), const SYS_KEXEC_LOAD ideal-int +pkg syscall (linux-386-cgo), const SYS_KEYCTL ideal-int +pkg syscall (linux-386-cgo), const SYS_KILL ideal-int +pkg syscall (linux-386-cgo), const SYS_LCHOWN ideal-int +pkg syscall (linux-386-cgo), const SYS_LCHOWN32 ideal-int +pkg syscall (linux-386-cgo), const SYS_LGETXATTR ideal-int +pkg syscall (linux-386-cgo), const SYS_LINK ideal-int +pkg syscall (linux-386-cgo), const SYS_LINKAT ideal-int +pkg syscall (linux-386-cgo), const SYS_LISTXATTR ideal-int +pkg syscall (linux-386-cgo), const SYS_LLISTXATTR ideal-int +pkg syscall (linux-386-cgo), const SYS_LOCK ideal-int +pkg syscall (linux-386-cgo), const SYS_LOOKUP_DCOOKIE ideal-int +pkg syscall (linux-386-cgo), const SYS_LREMOVEXATTR ideal-int +pkg syscall (linux-386-cgo), const SYS_LSEEK ideal-int +pkg syscall (linux-386-cgo), const SYS_LSETXATTR ideal-int +pkg syscall (linux-386-cgo), const SYS_LSTAT ideal-int +pkg syscall (linux-386-cgo), const SYS_LSTAT64 ideal-int +pkg syscall (linux-386-cgo), const SYS_MADVISE ideal-int +pkg syscall (linux-386-cgo), const SYS_MADVISE1 ideal-int +pkg syscall (linux-386-cgo), const SYS_MBIND ideal-int +pkg syscall (linux-386-cgo), const SYS_MIGRATE_PAGES ideal-int +pkg syscall (linux-386-cgo), const SYS_MINCORE ideal-int +pkg syscall (linux-386-cgo), const SYS_MKDIR ideal-int +pkg syscall (linux-386-cgo), const SYS_MKDIRAT ideal-int +pkg syscall (linux-386-cgo), const SYS_MKNOD ideal-int +pkg syscall (linux-386-cgo), const SYS_MKNODAT ideal-int +pkg syscall (linux-386-cgo), const SYS_MLOCK ideal-int +pkg syscall (linux-386-cgo), const SYS_MLOCKALL ideal-int +pkg syscall (linux-386-cgo), const SYS_MMAP ideal-int +pkg syscall (linux-386-cgo), const SYS_MMAP2 ideal-int +pkg syscall (linux-386-cgo), const SYS_MODIFY_LDT ideal-int +pkg syscall (linux-386-cgo), const SYS_MOUNT ideal-int +pkg syscall (linux-386-cgo), const SYS_MOVE_PAGES ideal-int +pkg syscall (linux-386-cgo), const SYS_MPROTECT ideal-int +pkg syscall (linux-386-cgo), const SYS_MPX ideal-int +pkg syscall (linux-386-cgo), const SYS_MQ_GETSETATTR ideal-int +pkg syscall (linux-386-cgo), const SYS_MQ_NOTIFY ideal-int +pkg syscall (linux-386-cgo), const SYS_MQ_OPEN ideal-int +pkg syscall (linux-386-cgo), const SYS_MQ_TIMEDRECEIVE ideal-int +pkg syscall (linux-386-cgo), const SYS_MQ_TIMEDSEND ideal-int +pkg syscall (linux-386-cgo), const SYS_MQ_UNLINK ideal-int +pkg syscall (linux-386-cgo), const SYS_MREMAP ideal-int +pkg syscall (linux-386-cgo), const SYS_MSYNC ideal-int +pkg syscall (linux-386-cgo), const SYS_MUNLOCK ideal-int +pkg syscall (linux-386-cgo), const SYS_MUNLOCKALL ideal-int +pkg syscall (linux-386-cgo), const SYS_MUNMAP ideal-int +pkg syscall (linux-386-cgo), const SYS_NANOSLEEP ideal-int +pkg syscall (linux-386-cgo), const SYS_NFSSERVCTL ideal-int +pkg syscall (linux-386-cgo), const SYS_NICE ideal-int +pkg syscall (linux-386-cgo), const SYS_OLDFSTAT ideal-int +pkg syscall (linux-386-cgo), const SYS_OLDLSTAT ideal-int +pkg syscall (linux-386-cgo), const SYS_OLDOLDUNAME ideal-int +pkg syscall (linux-386-cgo), const SYS_OLDSTAT ideal-int +pkg syscall (linux-386-cgo), const SYS_OLDUNAME ideal-int +pkg syscall (linux-386-cgo), const SYS_OPEN ideal-int +pkg syscall (linux-386-cgo), const SYS_OPENAT ideal-int +pkg syscall (linux-386-cgo), const SYS_PAUSE ideal-int +pkg syscall (linux-386-cgo), const SYS_PERF_EVENT_OPEN ideal-int +pkg syscall (linux-386-cgo), const SYS_PERSONALITY ideal-int +pkg syscall (linux-386-cgo), const SYS_PIPE ideal-int +pkg syscall (linux-386-cgo), const SYS_PIPE2 ideal-int +pkg syscall (linux-386-cgo), const SYS_PIVOT_ROOT ideal-int +pkg syscall (linux-386-cgo), const SYS_POLL ideal-int +pkg syscall (linux-386-cgo), const SYS_PPOLL ideal-int +pkg syscall (linux-386-cgo), const SYS_PRCTL ideal-int +pkg syscall (linux-386-cgo), const SYS_PREAD64 ideal-int +pkg syscall (linux-386-cgo), const SYS_PREADV ideal-int +pkg syscall (linux-386-cgo), const SYS_PRLIMIT64 ideal-int +pkg syscall (linux-386-cgo), const SYS_PROF ideal-int +pkg syscall (linux-386-cgo), const SYS_PROFIL ideal-int +pkg syscall (linux-386-cgo), const SYS_PSELECT6 ideal-int +pkg syscall (linux-386-cgo), const SYS_PTRACE ideal-int +pkg syscall (linux-386-cgo), const SYS_PUTPMSG ideal-int +pkg syscall (linux-386-cgo), const SYS_PWRITE64 ideal-int +pkg syscall (linux-386-cgo), const SYS_PWRITEV ideal-int +pkg syscall (linux-386-cgo), const SYS_QUERY_MODULE ideal-int +pkg syscall (linux-386-cgo), const SYS_QUOTACTL ideal-int +pkg syscall (linux-386-cgo), const SYS_READ ideal-int +pkg syscall (linux-386-cgo), const SYS_READAHEAD ideal-int +pkg syscall (linux-386-cgo), const SYS_READDIR ideal-int +pkg syscall (linux-386-cgo), const SYS_READLINK ideal-int +pkg syscall (linux-386-cgo), const SYS_READLINKAT ideal-int +pkg syscall (linux-386-cgo), const SYS_READV ideal-int +pkg syscall (linux-386-cgo), const SYS_REBOOT ideal-int +pkg syscall (linux-386-cgo), const SYS_RECVMMSG ideal-int +pkg syscall (linux-386-cgo), const SYS_REMAP_FILE_PAGES ideal-int +pkg syscall (linux-386-cgo), const SYS_REMOVEXATTR ideal-int +pkg syscall (linux-386-cgo), const SYS_RENAME ideal-int +pkg syscall (linux-386-cgo), const SYS_RENAMEAT ideal-int +pkg syscall (linux-386-cgo), const SYS_REQUEST_KEY ideal-int +pkg syscall (linux-386-cgo), const SYS_RESTART_SYSCALL ideal-int +pkg syscall (linux-386-cgo), const SYS_RMDIR ideal-int +pkg syscall (linux-386-cgo), const SYS_RT_SIGACTION ideal-int +pkg syscall (linux-386-cgo), const SYS_RT_SIGPENDING ideal-int +pkg syscall (linux-386-cgo), const SYS_RT_SIGPROCMASK ideal-int +pkg syscall (linux-386-cgo), const SYS_RT_SIGQUEUEINFO ideal-int +pkg syscall (linux-386-cgo), const SYS_RT_SIGRETURN ideal-int +pkg syscall (linux-386-cgo), const SYS_RT_SIGSUSPEND ideal-int +pkg syscall (linux-386-cgo), const SYS_RT_SIGTIMEDWAIT ideal-int +pkg syscall (linux-386-cgo), const SYS_RT_TGSIGQUEUEINFO ideal-int +pkg syscall (linux-386-cgo), const SYS_SCHED_GETAFFINITY ideal-int +pkg syscall (linux-386-cgo), const SYS_SCHED_GETPARAM ideal-int +pkg syscall (linux-386-cgo), const SYS_SCHED_GETSCHEDULER ideal-int +pkg syscall (linux-386-cgo), const SYS_SCHED_GET_PRIORITY_MAX ideal-int +pkg syscall (linux-386-cgo), const SYS_SCHED_GET_PRIORITY_MIN ideal-int +pkg syscall (linux-386-cgo), const SYS_SCHED_RR_GET_INTERVAL ideal-int +pkg syscall (linux-386-cgo), const SYS_SCHED_SETAFFINITY ideal-int +pkg syscall (linux-386-cgo), const SYS_SCHED_SETPARAM ideal-int +pkg syscall (linux-386-cgo), const SYS_SCHED_SETSCHEDULER ideal-int +pkg syscall (linux-386-cgo), const SYS_SCHED_YIELD ideal-int +pkg syscall (linux-386-cgo), const SYS_SELECT ideal-int +pkg syscall (linux-386-cgo), const SYS_SENDFILE ideal-int +pkg syscall (linux-386-cgo), const SYS_SENDFILE64 ideal-int +pkg syscall (linux-386-cgo), const SYS_SETDOMAINNAME ideal-int +pkg syscall (linux-386-cgo), const SYS_SETFSGID ideal-int +pkg syscall (linux-386-cgo), const SYS_SETFSGID32 ideal-int +pkg syscall (linux-386-cgo), const SYS_SETFSUID ideal-int +pkg syscall (linux-386-cgo), const SYS_SETFSUID32 ideal-int +pkg syscall (linux-386-cgo), const SYS_SETGID ideal-int +pkg syscall (linux-386-cgo), const SYS_SETGID32 ideal-int +pkg syscall (linux-386-cgo), const SYS_SETGROUPS ideal-int +pkg syscall (linux-386-cgo), const SYS_SETGROUPS32 ideal-int +pkg syscall (linux-386-cgo), const SYS_SETHOSTNAME ideal-int +pkg syscall (linux-386-cgo), const SYS_SETITIMER ideal-int +pkg syscall (linux-386-cgo), const SYS_SETPGID ideal-int +pkg syscall (linux-386-cgo), const SYS_SETPRIORITY ideal-int +pkg syscall (linux-386-cgo), const SYS_SETREGID ideal-int +pkg syscall (linux-386-cgo), const SYS_SETREGID32 ideal-int +pkg syscall (linux-386-cgo), const SYS_SETRESGID ideal-int +pkg syscall (linux-386-cgo), const SYS_SETRESGID32 ideal-int +pkg syscall (linux-386-cgo), const SYS_SETRESUID ideal-int +pkg syscall (linux-386-cgo), const SYS_SETRESUID32 ideal-int +pkg syscall (linux-386-cgo), const SYS_SETREUID ideal-int +pkg syscall (linux-386-cgo), const SYS_SETREUID32 ideal-int +pkg syscall (linux-386-cgo), const SYS_SETRLIMIT ideal-int +pkg syscall (linux-386-cgo), const SYS_SETSID ideal-int +pkg syscall (linux-386-cgo), const SYS_SETTIMEOFDAY ideal-int +pkg syscall (linux-386-cgo), const SYS_SETUID ideal-int +pkg syscall (linux-386-cgo), const SYS_SETUID32 ideal-int +pkg syscall (linux-386-cgo), const SYS_SETXATTR ideal-int +pkg syscall (linux-386-cgo), const SYS_SET_MEMPOLICY ideal-int +pkg syscall (linux-386-cgo), const SYS_SET_ROBUST_LIST ideal-int +pkg syscall (linux-386-cgo), const SYS_SET_THREAD_AREA ideal-int +pkg syscall (linux-386-cgo), const SYS_SET_TID_ADDRESS ideal-int +pkg syscall (linux-386-cgo), const SYS_SGETMASK ideal-int +pkg syscall (linux-386-cgo), const SYS_SIGACTION ideal-int +pkg syscall (linux-386-cgo), const SYS_SIGALTSTACK ideal-int +pkg syscall (linux-386-cgo), const SYS_SIGNAL ideal-int +pkg syscall (linux-386-cgo), const SYS_SIGNALFD ideal-int +pkg syscall (linux-386-cgo), const SYS_SIGNALFD4 ideal-int +pkg syscall (linux-386-cgo), const SYS_SIGPENDING ideal-int +pkg syscall (linux-386-cgo), const SYS_SIGPROCMASK ideal-int +pkg syscall (linux-386-cgo), const SYS_SIGRETURN ideal-int +pkg syscall (linux-386-cgo), const SYS_SIGSUSPEND ideal-int +pkg syscall (linux-386-cgo), const SYS_SOCKETCALL ideal-int +pkg syscall (linux-386-cgo), const SYS_SPLICE ideal-int +pkg syscall (linux-386-cgo), const SYS_SSETMASK ideal-int +pkg syscall (linux-386-cgo), const SYS_STAT ideal-int +pkg syscall (linux-386-cgo), const SYS_STAT64 ideal-int +pkg syscall (linux-386-cgo), const SYS_STATFS ideal-int +pkg syscall (linux-386-cgo), const SYS_STATFS64 ideal-int +pkg syscall (linux-386-cgo), const SYS_STIME ideal-int +pkg syscall (linux-386-cgo), const SYS_STTY ideal-int +pkg syscall (linux-386-cgo), const SYS_SWAPOFF ideal-int +pkg syscall (linux-386-cgo), const SYS_SWAPON ideal-int +pkg syscall (linux-386-cgo), const SYS_SYMLINK ideal-int +pkg syscall (linux-386-cgo), const SYS_SYMLINKAT ideal-int +pkg syscall (linux-386-cgo), const SYS_SYNC ideal-int +pkg syscall (linux-386-cgo), const SYS_SYNC_FILE_RANGE ideal-int +pkg syscall (linux-386-cgo), const SYS_SYSFS ideal-int +pkg syscall (linux-386-cgo), const SYS_SYSINFO ideal-int +pkg syscall (linux-386-cgo), const SYS_SYSLOG ideal-int +pkg syscall (linux-386-cgo), const SYS_TEE ideal-int +pkg syscall (linux-386-cgo), const SYS_TGKILL ideal-int +pkg syscall (linux-386-cgo), const SYS_TIME ideal-int +pkg syscall (linux-386-cgo), const SYS_TIMERFD_CREATE ideal-int +pkg syscall (linux-386-cgo), const SYS_TIMERFD_GETTIME ideal-int +pkg syscall (linux-386-cgo), const SYS_TIMERFD_SETTIME ideal-int +pkg syscall (linux-386-cgo), const SYS_TIMER_CREATE ideal-int +pkg syscall (linux-386-cgo), const SYS_TIMER_DELETE ideal-int +pkg syscall (linux-386-cgo), const SYS_TIMER_GETOVERRUN ideal-int +pkg syscall (linux-386-cgo), const SYS_TIMER_GETTIME ideal-int +pkg syscall (linux-386-cgo), const SYS_TIMER_SETTIME ideal-int +pkg syscall (linux-386-cgo), const SYS_TIMES ideal-int +pkg syscall (linux-386-cgo), const SYS_TKILL ideal-int +pkg syscall (linux-386-cgo), const SYS_TRUNCATE ideal-int +pkg syscall (linux-386-cgo), const SYS_TRUNCATE64 ideal-int +pkg syscall (linux-386-cgo), const SYS_UGETRLIMIT ideal-int +pkg syscall (linux-386-cgo), const SYS_ULIMIT ideal-int +pkg syscall (linux-386-cgo), const SYS_UMASK ideal-int +pkg syscall (linux-386-cgo), const SYS_UMOUNT ideal-int +pkg syscall (linux-386-cgo), const SYS_UMOUNT2 ideal-int +pkg syscall (linux-386-cgo), const SYS_UNAME ideal-int +pkg syscall (linux-386-cgo), const SYS_UNLINK ideal-int +pkg syscall (linux-386-cgo), const SYS_UNLINKAT ideal-int +pkg syscall (linux-386-cgo), const SYS_UNSHARE ideal-int +pkg syscall (linux-386-cgo), const SYS_USELIB ideal-int +pkg syscall (linux-386-cgo), const SYS_USTAT ideal-int +pkg syscall (linux-386-cgo), const SYS_UTIME ideal-int +pkg syscall (linux-386-cgo), const SYS_UTIMENSAT ideal-int +pkg syscall (linux-386-cgo), const SYS_UTIMES ideal-int +pkg syscall (linux-386-cgo), const SYS_VFORK ideal-int +pkg syscall (linux-386-cgo), const SYS_VHANGUP ideal-int +pkg syscall (linux-386-cgo), const SYS_VM86 ideal-int +pkg syscall (linux-386-cgo), const SYS_VM86OLD ideal-int +pkg syscall (linux-386-cgo), const SYS_VMSPLICE ideal-int +pkg syscall (linux-386-cgo), const SYS_VSERVER ideal-int +pkg syscall (linux-386-cgo), const SYS_WAIT4 ideal-int +pkg syscall (linux-386-cgo), const SYS_WAITID ideal-int +pkg syscall (linux-386-cgo), const SYS_WAITPID ideal-int +pkg syscall (linux-386-cgo), const SYS_WRITE ideal-int +pkg syscall (linux-386-cgo), const SYS_WRITEV ideal-int +pkg syscall (linux-386-cgo), const SYS__LLSEEK ideal-int +pkg syscall (linux-386-cgo), const SYS__NEWSELECT ideal-int +pkg syscall (linux-386-cgo), const SYS__SYSCTL ideal-int +pkg syscall (linux-386-cgo), const S_BLKSIZE ideal-int +pkg syscall (linux-386-cgo), const S_IEXEC ideal-int +pkg syscall (linux-386-cgo), const S_IREAD ideal-int +pkg syscall (linux-386-cgo), const S_IRGRP ideal-int +pkg syscall (linux-386-cgo), const S_IROTH ideal-int +pkg syscall (linux-386-cgo), const S_IRWXG ideal-int +pkg syscall (linux-386-cgo), const S_IRWXO ideal-int +pkg syscall (linux-386-cgo), const S_IRWXU ideal-int +pkg syscall (linux-386-cgo), const S_IWGRP ideal-int +pkg syscall (linux-386-cgo), const S_IWOTH ideal-int +pkg syscall (linux-386-cgo), const S_IXGRP ideal-int +pkg syscall (linux-386-cgo), const S_IXOTH ideal-int +pkg syscall (linux-386-cgo), const SizeofCmsghdr ideal-int +pkg syscall (linux-386-cgo), const SizeofIPMreq ideal-int +pkg syscall (linux-386-cgo), const SizeofIPMreqn ideal-int +pkg syscall (linux-386-cgo), const SizeofIPv6Mreq ideal-int +pkg syscall (linux-386-cgo), const SizeofIfAddrmsg ideal-int +pkg syscall (linux-386-cgo), const SizeofIfInfomsg ideal-int +pkg syscall (linux-386-cgo), const SizeofInet4Pktinfo ideal-int +pkg syscall (linux-386-cgo), const SizeofInet6Pktinfo ideal-int +pkg syscall (linux-386-cgo), const SizeofInotifyEvent ideal-int +pkg syscall (linux-386-cgo), const SizeofLinger ideal-int +pkg syscall (linux-386-cgo), const SizeofMsghdr ideal-int +pkg syscall (linux-386-cgo), const SizeofNlAttr ideal-int +pkg syscall (linux-386-cgo), const SizeofNlMsgerr ideal-int +pkg syscall (linux-386-cgo), const SizeofNlMsghdr ideal-int +pkg syscall (linux-386-cgo), const SizeofRtAttr ideal-int +pkg syscall (linux-386-cgo), const SizeofRtGenmsg ideal-int +pkg syscall (linux-386-cgo), const SizeofRtMsg ideal-int +pkg syscall (linux-386-cgo), const SizeofRtNexthop ideal-int +pkg syscall (linux-386-cgo), const SizeofSockFilter ideal-int +pkg syscall (linux-386-cgo), const SizeofSockFprog ideal-int +pkg syscall (linux-386-cgo), const SizeofSockaddrAny ideal-int +pkg syscall (linux-386-cgo), const SizeofSockaddrInet4 ideal-int +pkg syscall (linux-386-cgo), const SizeofSockaddrInet6 ideal-int +pkg syscall (linux-386-cgo), const SizeofSockaddrLinklayer ideal-int +pkg syscall (linux-386-cgo), const SizeofSockaddrNetlink ideal-int +pkg syscall (linux-386-cgo), const SizeofSockaddrUnix ideal-int +pkg syscall (linux-386-cgo), const SizeofUcred ideal-int +pkg syscall (linux-386-cgo), const TCGETS ideal-int +pkg syscall (linux-386-cgo), const TCP_CONGESTION ideal-int +pkg syscall (linux-386-cgo), const TCP_CORK ideal-int +pkg syscall (linux-386-cgo), const TCP_DEFER_ACCEPT ideal-int +pkg syscall (linux-386-cgo), const TCP_INFO ideal-int +pkg syscall (linux-386-cgo), const TCP_KEEPCNT ideal-int +pkg syscall (linux-386-cgo), const TCP_KEEPIDLE ideal-int +pkg syscall (linux-386-cgo), const TCP_KEEPINTVL ideal-int +pkg syscall (linux-386-cgo), const TCP_LINGER2 ideal-int +pkg syscall (linux-386-cgo), const TCP_MAXSEG ideal-int +pkg syscall (linux-386-cgo), const TCP_MAXWIN ideal-int +pkg syscall (linux-386-cgo), const TCP_MAX_WINSHIFT ideal-int +pkg syscall (linux-386-cgo), const TCP_MD5SIG ideal-int +pkg syscall (linux-386-cgo), const TCP_MD5SIG_MAXKEYLEN ideal-int +pkg syscall (linux-386-cgo), const TCP_MSS ideal-int +pkg syscall (linux-386-cgo), const TCP_QUICKACK ideal-int +pkg syscall (linux-386-cgo), const TCP_SYNCNT ideal-int +pkg syscall (linux-386-cgo), const TCP_WINDOW_CLAMP ideal-int +pkg syscall (linux-386-cgo), const TCSETS ideal-int +pkg syscall (linux-386-cgo), const TIOCCBRK ideal-int +pkg syscall (linux-386-cgo), const TIOCCONS ideal-int +pkg syscall (linux-386-cgo), const TIOCEXCL ideal-int +pkg syscall (linux-386-cgo), const TIOCGDEV ideal-int +pkg syscall (linux-386-cgo), const TIOCGETD ideal-int +pkg syscall (linux-386-cgo), const TIOCGICOUNT ideal-int +pkg syscall (linux-386-cgo), const TIOCGLCKTRMIOS ideal-int +pkg syscall (linux-386-cgo), const TIOCGPGRP ideal-int +pkg syscall (linux-386-cgo), const TIOCGPTN ideal-int +pkg syscall (linux-386-cgo), const TIOCGRS485 ideal-int +pkg syscall (linux-386-cgo), const TIOCGSERIAL ideal-int +pkg syscall (linux-386-cgo), const TIOCGSID ideal-int +pkg syscall (linux-386-cgo), const TIOCGSOFTCAR ideal-int +pkg syscall (linux-386-cgo), const TIOCGWINSZ ideal-int +pkg syscall (linux-386-cgo), const TIOCINQ ideal-int +pkg syscall (linux-386-cgo), const TIOCLINUX ideal-int +pkg syscall (linux-386-cgo), const TIOCMBIC ideal-int +pkg syscall (linux-386-cgo), const TIOCMBIS ideal-int +pkg syscall (linux-386-cgo), const TIOCMGET ideal-int +pkg syscall (linux-386-cgo), const TIOCMIWAIT ideal-int +pkg syscall (linux-386-cgo), const TIOCMSET ideal-int +pkg syscall (linux-386-cgo), const TIOCM_CAR ideal-int +pkg syscall (linux-386-cgo), const TIOCM_CD ideal-int +pkg syscall (linux-386-cgo), const TIOCM_CTS ideal-int +pkg syscall (linux-386-cgo), const TIOCM_DSR ideal-int +pkg syscall (linux-386-cgo), const TIOCM_DTR ideal-int +pkg syscall (linux-386-cgo), const TIOCM_LE ideal-int +pkg syscall (linux-386-cgo), const TIOCM_RI ideal-int +pkg syscall (linux-386-cgo), const TIOCM_RNG ideal-int +pkg syscall (linux-386-cgo), const TIOCM_RTS ideal-int +pkg syscall (linux-386-cgo), const TIOCM_SR ideal-int +pkg syscall (linux-386-cgo), const TIOCM_ST ideal-int +pkg syscall (linux-386-cgo), const TIOCNOTTY ideal-int +pkg syscall (linux-386-cgo), const TIOCNXCL ideal-int +pkg syscall (linux-386-cgo), const TIOCOUTQ ideal-int +pkg syscall (linux-386-cgo), const TIOCPKT ideal-int +pkg syscall (linux-386-cgo), const TIOCPKT_DATA ideal-int +pkg syscall (linux-386-cgo), const TIOCPKT_DOSTOP ideal-int +pkg syscall (linux-386-cgo), const TIOCPKT_FLUSHREAD ideal-int +pkg syscall (linux-386-cgo), const TIOCPKT_FLUSHWRITE ideal-int +pkg syscall (linux-386-cgo), const TIOCPKT_IOCTL ideal-int +pkg syscall (linux-386-cgo), const TIOCPKT_NOSTOP ideal-int +pkg syscall (linux-386-cgo), const TIOCPKT_START ideal-int +pkg syscall (linux-386-cgo), const TIOCPKT_STOP ideal-int +pkg syscall (linux-386-cgo), const TIOCSBRK ideal-int +pkg syscall (linux-386-cgo), const TIOCSCTTY ideal-int +pkg syscall (linux-386-cgo), const TIOCSERCONFIG ideal-int +pkg syscall (linux-386-cgo), const TIOCSERGETLSR ideal-int +pkg syscall (linux-386-cgo), const TIOCSERGETMULTI ideal-int +pkg syscall (linux-386-cgo), const TIOCSERGSTRUCT ideal-int +pkg syscall (linux-386-cgo), const TIOCSERGWILD ideal-int +pkg syscall (linux-386-cgo), const TIOCSERSETMULTI ideal-int +pkg syscall (linux-386-cgo), const TIOCSERSWILD ideal-int +pkg syscall (linux-386-cgo), const TIOCSER_TEMT ideal-int +pkg syscall (linux-386-cgo), const TIOCSETD ideal-int +pkg syscall (linux-386-cgo), const TIOCSIG ideal-int +pkg syscall (linux-386-cgo), const TIOCSLCKTRMIOS ideal-int +pkg syscall (linux-386-cgo), const TIOCSPGRP ideal-int +pkg syscall (linux-386-cgo), const TIOCSPTLCK ideal-int +pkg syscall (linux-386-cgo), const TIOCSRS485 ideal-int +pkg syscall (linux-386-cgo), const TIOCSSERIAL ideal-int +pkg syscall (linux-386-cgo), const TIOCSSOFTCAR ideal-int +pkg syscall (linux-386-cgo), const TIOCSTI ideal-int +pkg syscall (linux-386-cgo), const TIOCSWINSZ ideal-int +pkg syscall (linux-386-cgo), const TOSTOP ideal-int +pkg syscall (linux-386-cgo), const TUNATTACHFILTER ideal-int +pkg syscall (linux-386-cgo), const TUNDETACHFILTER ideal-int +pkg syscall (linux-386-cgo), const TUNGETFEATURES ideal-int +pkg syscall (linux-386-cgo), const TUNGETIFF ideal-int +pkg syscall (linux-386-cgo), const TUNGETSNDBUF ideal-int +pkg syscall (linux-386-cgo), const TUNGETVNETHDRSZ ideal-int +pkg syscall (linux-386-cgo), const TUNSETDEBUG ideal-int +pkg syscall (linux-386-cgo), const TUNSETGROUP ideal-int +pkg syscall (linux-386-cgo), const TUNSETIFF ideal-int +pkg syscall (linux-386-cgo), const TUNSETLINK ideal-int +pkg syscall (linux-386-cgo), const TUNSETNOCSUM ideal-int +pkg syscall (linux-386-cgo), const TUNSETOFFLOAD ideal-int +pkg syscall (linux-386-cgo), const TUNSETOWNER ideal-int +pkg syscall (linux-386-cgo), const TUNSETPERSIST ideal-int +pkg syscall (linux-386-cgo), const TUNSETSNDBUF ideal-int +pkg syscall (linux-386-cgo), const TUNSETTXFILTER ideal-int +pkg syscall (linux-386-cgo), const TUNSETVNETHDRSZ ideal-int +pkg syscall (linux-386-cgo), const VDISCARD ideal-int +pkg syscall (linux-386-cgo), const VEOF ideal-int +pkg syscall (linux-386-cgo), const VEOL ideal-int +pkg syscall (linux-386-cgo), const VEOL2 ideal-int +pkg syscall (linux-386-cgo), const VERASE ideal-int +pkg syscall (linux-386-cgo), const VINTR ideal-int +pkg syscall (linux-386-cgo), const VKILL ideal-int +pkg syscall (linux-386-cgo), const VLNEXT ideal-int +pkg syscall (linux-386-cgo), const VMIN ideal-int +pkg syscall (linux-386-cgo), const VQUIT ideal-int +pkg syscall (linux-386-cgo), const VREPRINT ideal-int +pkg syscall (linux-386-cgo), const VSTART ideal-int +pkg syscall (linux-386-cgo), const VSTOP ideal-int +pkg syscall (linux-386-cgo), const VSUSP ideal-int +pkg syscall (linux-386-cgo), const VSWTC ideal-int +pkg syscall (linux-386-cgo), const VTIME ideal-int +pkg syscall (linux-386-cgo), const VWERASE ideal-int +pkg syscall (linux-386-cgo), const WALL ideal-int +pkg syscall (linux-386-cgo), const WCLONE ideal-int +pkg syscall (linux-386-cgo), const WCONTINUED ideal-int +pkg syscall (linux-386-cgo), const WEXITED ideal-int +pkg syscall (linux-386-cgo), const WNOHANG ideal-int +pkg syscall (linux-386-cgo), const WNOTHREAD ideal-int +pkg syscall (linux-386-cgo), const WNOWAIT ideal-int +pkg syscall (linux-386-cgo), const WORDSIZE ideal-int +pkg syscall (linux-386-cgo), const WSTOPPED ideal-int +pkg syscall (linux-386-cgo), const WUNTRACED ideal-int +pkg syscall (linux-386-cgo), const XCASE ideal-int +pkg syscall (linux-386-cgo), func Accept(int) (int, Sockaddr, error) +pkg syscall (linux-386-cgo), func Access(string, uint32) error +pkg syscall (linux-386-cgo), func Acct(string) error +pkg syscall (linux-386-cgo), func Adjtimex(*Timex) (int, error) +pkg syscall (linux-386-cgo), func AttachLsf(int, []SockFilter) error +pkg syscall (linux-386-cgo), func Bind(int, Sockaddr) error +pkg syscall (linux-386-cgo), func BindToDevice(int, string) error +pkg syscall (linux-386-cgo), func Chroot(string) error +pkg syscall (linux-386-cgo), func Close(int) error +pkg syscall (linux-386-cgo), func CloseOnExec(int) +pkg syscall (linux-386-cgo), func CmsgLen(int) int +pkg syscall (linux-386-cgo), func CmsgSpace(int) int +pkg syscall (linux-386-cgo), func Connect(int, Sockaddr) error +pkg syscall (linux-386-cgo), func Creat(string, uint32) (int, error) +pkg syscall (linux-386-cgo), func DetachLsf(int) error +pkg syscall (linux-386-cgo), func Dup(int) (int, error) +pkg syscall (linux-386-cgo), func Dup2(int, int) error +pkg syscall (linux-386-cgo), func EpollCreate(int) (int, error) +pkg syscall (linux-386-cgo), func EpollCreate1(int) (int, error) +pkg syscall (linux-386-cgo), func EpollCtl(int, int, int, *EpollEvent) error +pkg syscall (linux-386-cgo), func EpollWait(int, []EpollEvent, int) (int, error) +pkg syscall (linux-386-cgo), func Faccessat(int, string, uint32, int) error +pkg syscall (linux-386-cgo), func Fallocate(int, uint32, int64, int64) error +pkg syscall (linux-386-cgo), func Fchdir(int) error +pkg syscall (linux-386-cgo), func Fchmod(int, uint32) error +pkg syscall (linux-386-cgo), func Fchmodat(int, string, uint32, int) error +pkg syscall (linux-386-cgo), func Fchown(int, int, int) error +pkg syscall (linux-386-cgo), func Fchownat(int, string, int, int, int) error +pkg syscall (linux-386-cgo), func Fdatasync(int) error +pkg syscall (linux-386-cgo), func Flock(int, int) error +pkg syscall (linux-386-cgo), func ForkExec(string, []string, *ProcAttr) (int, error) +pkg syscall (linux-386-cgo), func Fstat(int, *Stat_t) error +pkg syscall (linux-386-cgo), func Fstatfs(int, *Statfs_t) error +pkg syscall (linux-386-cgo), func Fsync(int) error +pkg syscall (linux-386-cgo), func Ftruncate(int, int64) error +pkg syscall (linux-386-cgo), func Futimes(int, []Timeval) error +pkg syscall (linux-386-cgo), func Futimesat(int, string, []Timeval) error +pkg syscall (linux-386-cgo), func Getcwd([]byte) (int, error) +pkg syscall (linux-386-cgo), func Getdents(int, []byte) (int, error) +pkg syscall (linux-386-cgo), func Getpeername(int) (Sockaddr, error) +pkg syscall (linux-386-cgo), func Getpgid(int) (int, error) +pkg syscall (linux-386-cgo), func Getpgrp() int +pkg syscall (linux-386-cgo), func Getrlimit(int, *Rlimit) error +pkg syscall (linux-386-cgo), func Getrusage(int, *Rusage) error +pkg syscall (linux-386-cgo), func Getsockname(int) (Sockaddr, error) +pkg syscall (linux-386-cgo), func GetsockoptIPMreq(int) (*IPMreq, error) +pkg syscall (linux-386-cgo), func GetsockoptIPMreqn(int) (*IPMreqn, error) +pkg syscall (linux-386-cgo), func GetsockoptIPv6Mreq(int) (*IPv6Mreq, error) +pkg syscall (linux-386-cgo), func GetsockoptInet4Addr(int) ([4]byte, error) +pkg syscall (linux-386-cgo), func GetsockoptInt(int) (int, error) +pkg syscall (linux-386-cgo), func Gettid() int +pkg syscall (linux-386-cgo), func InotifyAddWatch(int, string, uint32) (int, error) +pkg syscall (linux-386-cgo), func InotifyInit() (int, error) +pkg syscall (linux-386-cgo), func InotifyInit1(int) (int, error) +pkg syscall (linux-386-cgo), func InotifyRmWatch(int, uint32) (int, error) +pkg syscall (linux-386-cgo), func Ioperm(int, int, int) error +pkg syscall (linux-386-cgo), func Iopl(int) error +pkg syscall (linux-386-cgo), func Kill(int, Signal) error +pkg syscall (linux-386-cgo), func Klogctl(int, []byte) (int, error) +pkg syscall (linux-386-cgo), func Link(string, string) error +pkg syscall (linux-386-cgo), func Listen(int, int) error +pkg syscall (linux-386-cgo), func LsfJump(int) *SockFilter +pkg syscall (linux-386-cgo), func LsfSocket(int) (int, error) +pkg syscall (linux-386-cgo), func LsfStmt(int) *SockFilter +pkg syscall (linux-386-cgo), func Lstat(string, *Stat_t) error +pkg syscall (linux-386-cgo), func Madvise([]byte, int) error +pkg syscall (linux-386-cgo), func Mkdirat(int, string, uint32) error +pkg syscall (linux-386-cgo), func Mkfifo(string, uint32) error +pkg syscall (linux-386-cgo), func Mknod(string, uint32, int) error +pkg syscall (linux-386-cgo), func Mknodat(int, string, uint32, int) error +pkg syscall (linux-386-cgo), func Mlock([]byte) error +pkg syscall (linux-386-cgo), func Mlockall(int) error +pkg syscall (linux-386-cgo), func Mmap(int, int64, int, int, int) ([]byte, error) +pkg syscall (linux-386-cgo), func Mount(string, string, string, uintptr, string) error +pkg syscall (linux-386-cgo), func Mprotect([]byte, int) error +pkg syscall (linux-386-cgo), func Munlock([]byte) error +pkg syscall (linux-386-cgo), func Munlockall() error +pkg syscall (linux-386-cgo), func Munmap([]byte) error +pkg syscall (linux-386-cgo), func Nanosleep(*Timespec, *Timespec) error +pkg syscall (linux-386-cgo), func NetlinkRIB(int) ([]byte, error) +pkg syscall (linux-386-cgo), func NsecToTimespec(int64) Timespec +pkg syscall (linux-386-cgo), func Open(string, int, uint32) (int, error) +pkg syscall (linux-386-cgo), func Openat(int, string, int, uint32) (int, error) +pkg syscall (linux-386-cgo), func ParseDirent([]byte, int, []string) (int, int, []string) +pkg syscall (linux-386-cgo), func ParseNetlinkMessage([]byte) ([]NetlinkMessage, error) +pkg syscall (linux-386-cgo), func ParseNetlinkRouteAttr(*NetlinkMessage) ([]NetlinkRouteAttr, error) +pkg syscall (linux-386-cgo), func ParseSocketControlMessage([]byte) ([]SocketControlMessage, error) +pkg syscall (linux-386-cgo), func ParseUnixCredentials(*SocketControlMessage) (*Ucred, error) +pkg syscall (linux-386-cgo), func ParseUnixRights(*SocketControlMessage) ([]int, error) +pkg syscall (linux-386-cgo), func Pause() error +pkg syscall (linux-386-cgo), func Pipe([]int) error +pkg syscall (linux-386-cgo), func PivotRoot(string, string) error +pkg syscall (linux-386-cgo), func Pread(int, []byte, int64) (int, error) +pkg syscall (linux-386-cgo), func PtraceAttach(int) error +pkg syscall (linux-386-cgo), func PtraceCont(int, int) error +pkg syscall (linux-386-cgo), func PtraceDetach(int) error +pkg syscall (linux-386-cgo), func PtraceGetEventMsg(int) (uint, error) +pkg syscall (linux-386-cgo), func PtraceGetRegs(int, *PtraceRegs) error +pkg syscall (linux-386-cgo), func PtracePeekData(int, uintptr, []byte) (int, error) +pkg syscall (linux-386-cgo), func PtracePeekText(int, uintptr, []byte) (int, error) +pkg syscall (linux-386-cgo), func PtracePokeData(int, uintptr, []byte) (int, error) +pkg syscall (linux-386-cgo), func PtracePokeText(int, uintptr, []byte) (int, error) +pkg syscall (linux-386-cgo), func PtraceSetOptions(int, int) error +pkg syscall (linux-386-cgo), func PtraceSetRegs(int, *PtraceRegs) error +pkg syscall (linux-386-cgo), func PtraceSingleStep(int) error +pkg syscall (linux-386-cgo), func Pwrite(int, []byte, int64) (int, error) +pkg syscall (linux-386-cgo), func RawSyscall(uintptr) (uintptr, Errno) +pkg syscall (linux-386-cgo), func RawSyscall6(uintptr) (uintptr, Errno) +pkg syscall (linux-386-cgo), func Read(int, []byte) (int, error) +pkg syscall (linux-386-cgo), func ReadDirent(int, []byte) (int, error) +pkg syscall (linux-386-cgo), func Reboot(int) error +pkg syscall (linux-386-cgo), func Recvfrom(int, []byte, int) (int, Sockaddr, error) +pkg syscall (linux-386-cgo), func Recvmsg(int, []byte, int) (int, int, Sockaddr, error) +pkg syscall (linux-386-cgo), func Rename(string, string) error +pkg syscall (linux-386-cgo), func Renameat(int, string, int, string) error +pkg syscall (linux-386-cgo), func Seek(int, int64, int) (int64, error) +pkg syscall (linux-386-cgo), func Select(int, *FdSet, *FdSet, *FdSet, *Timeval) (int, error) +pkg syscall (linux-386-cgo), func Sendfile(int, int, *int64, int) (int, error) +pkg syscall (linux-386-cgo), func Sendmsg(int, []byte, Sockaddr, int) error +pkg syscall (linux-386-cgo), func Sendto(int, []byte, int, Sockaddr) error +pkg syscall (linux-386-cgo), func SetLsfPromisc(string, bool) error +pkg syscall (linux-386-cgo), func SetNonblock(int, bool) error +pkg syscall (linux-386-cgo), func Setdomainname([]byte) error +pkg syscall (linux-386-cgo), func Setfsgid(int) error +pkg syscall (linux-386-cgo), func Setfsuid(int) error +pkg syscall (linux-386-cgo), func Setgid(int) error +pkg syscall (linux-386-cgo), func Setgroups([]int) error +pkg syscall (linux-386-cgo), func Sethostname([]byte) error +pkg syscall (linux-386-cgo), func Setpgid(int, int) error +pkg syscall (linux-386-cgo), func Setregid(int, int) error +pkg syscall (linux-386-cgo), func Setresgid(int, int, int) error +pkg syscall (linux-386-cgo), func Setresuid(int, int, int) error +pkg syscall (linux-386-cgo), func Setreuid(int, int) error +pkg syscall (linux-386-cgo), func Setrlimit(int, *Rlimit) error +pkg syscall (linux-386-cgo), func Setsid() (int, error) +pkg syscall (linux-386-cgo), func SetsockoptIPMreq(int, *IPMreq) error +pkg syscall (linux-386-cgo), func SetsockoptIPMreqn(int, *IPMreqn) error +pkg syscall (linux-386-cgo), func SetsockoptIPv6Mreq(int, *IPv6Mreq) error +pkg syscall (linux-386-cgo), func SetsockoptInet4Addr(int, [4]byte) error +pkg syscall (linux-386-cgo), func SetsockoptInt(int, int) error +pkg syscall (linux-386-cgo), func SetsockoptLinger(int, *Linger) error +pkg syscall (linux-386-cgo), func SetsockoptString(int, string) error +pkg syscall (linux-386-cgo), func SetsockoptTimeval(int, *Timeval) error +pkg syscall (linux-386-cgo), func Settimeofday(*Timeval) error +pkg syscall (linux-386-cgo), func Setuid(int) error +pkg syscall (linux-386-cgo), func Shutdown(int) error +pkg syscall (linux-386-cgo), func Socket(int) (int, error) +pkg syscall (linux-386-cgo), func Socketpair(int) ([2]int, error) +pkg syscall (linux-386-cgo), func Splice(int, *int64, int, *int64, int, int) (int, error) +pkg syscall (linux-386-cgo), func Stat(string, *Stat_t) error +pkg syscall (linux-386-cgo), func Statfs(string, *Statfs_t) error +pkg syscall (linux-386-cgo), func StringSlicePtr([]string) []*byte +pkg syscall (linux-386-cgo), func Symlink(string, string) error +pkg syscall (linux-386-cgo), func Sync() +pkg syscall (linux-386-cgo), func SyncFileRange(int, int64, int64, int) error +pkg syscall (linux-386-cgo), func Sysinfo(*Sysinfo_t) error +pkg syscall (linux-386-cgo), func Tee(int, int, int, int) (int64, error) +pkg syscall (linux-386-cgo), func Tgkill(int, int, Signal) error +pkg syscall (linux-386-cgo), func Time(*Time_t) (Time_t, error) +pkg syscall (linux-386-cgo), func Times(*Tms) (uintptr, error) +pkg syscall (linux-386-cgo), func TimespecToNsec(Timespec) int64 +pkg syscall (linux-386-cgo), func TimevalToNsec(Timeval) int64 +pkg syscall (linux-386-cgo), func Truncate(string, int64) error +pkg syscall (linux-386-cgo), func Umask(int) int +pkg syscall (linux-386-cgo), func Uname(*Utsname) error +pkg syscall (linux-386-cgo), func UnixCredentials(*Ucred) []byte +pkg syscall (linux-386-cgo), func UnixRights(...int) []byte +pkg syscall (linux-386-cgo), func Unlinkat(int, string) error +pkg syscall (linux-386-cgo), func Unmount(string, int) error +pkg syscall (linux-386-cgo), func Unshare(int) error +pkg syscall (linux-386-cgo), func Ustat(int, *Ustat_t) error +pkg syscall (linux-386-cgo), func Utime(string, *Utimbuf) error +pkg syscall (linux-386-cgo), func Wait4(int, *WaitStatus, int, *Rusage) (int, error) +pkg syscall (linux-386-cgo), func Write(int, []byte) (int, error) +pkg syscall (linux-386-cgo), method (*Cmsghdr) SetLen(int) +pkg syscall (linux-386-cgo), method (*Iovec) SetLen(int) +pkg syscall (linux-386-cgo), method (*Msghdr) SetControllen(int) +pkg syscall (linux-386-cgo), method (*PtraceRegs) PC() uint64 +pkg syscall (linux-386-cgo), method (*PtraceRegs) SetPC(uint64) +pkg syscall (linux-386-cgo), type Cmsghdr struct +pkg syscall (linux-386-cgo), type Cmsghdr struct, Len uint32 +pkg syscall (linux-386-cgo), type Cmsghdr struct, Level int32 +pkg syscall (linux-386-cgo), type Cmsghdr struct, Type int32 +pkg syscall (linux-386-cgo), type Cmsghdr struct, X__cmsg_data [0]byte +pkg syscall (linux-386-cgo), type Credential struct +pkg syscall (linux-386-cgo), type Credential struct, Gid uint32 +pkg syscall (linux-386-cgo), type Credential struct, Groups []uint32 +pkg syscall (linux-386-cgo), type Credential struct, Uid uint32 +pkg syscall (linux-386-cgo), type Dirent struct +pkg syscall (linux-386-cgo), type Dirent struct, Ino uint64 +pkg syscall (linux-386-cgo), type Dirent struct, Name [256]int8 +pkg syscall (linux-386-cgo), type Dirent struct, Off int64 +pkg syscall (linux-386-cgo), type Dirent struct, Pad_cgo_0 [1]byte +pkg syscall (linux-386-cgo), type Dirent struct, Reclen uint16 +pkg syscall (linux-386-cgo), type Dirent struct, Type uint8 +pkg syscall (linux-386-cgo), type EpollEvent struct +pkg syscall (linux-386-cgo), type EpollEvent struct, Events uint32 +pkg syscall (linux-386-cgo), type EpollEvent struct, Fd int32 +pkg syscall (linux-386-cgo), type EpollEvent struct, Pad int32 +pkg syscall (linux-386-cgo), type FdSet struct +pkg syscall (linux-386-cgo), type FdSet struct, Bits [32]int32 +pkg syscall (linux-386-cgo), type Fsid struct +pkg syscall (linux-386-cgo), type Fsid struct, X__val [2]int32 +pkg syscall (linux-386-cgo), type IPMreqn struct +pkg syscall (linux-386-cgo), type IPMreqn struct, Address [4]byte +pkg syscall (linux-386-cgo), type IPMreqn struct, Ifindex int32 +pkg syscall (linux-386-cgo), type IPMreqn struct, Multiaddr [4]byte +pkg syscall (linux-386-cgo), type IfAddrmsg struct +pkg syscall (linux-386-cgo), type IfAddrmsg struct, Family uint8 +pkg syscall (linux-386-cgo), type IfAddrmsg struct, Flags uint8 +pkg syscall (linux-386-cgo), type IfAddrmsg struct, Index uint32 +pkg syscall (linux-386-cgo), type IfAddrmsg struct, Prefixlen uint8 +pkg syscall (linux-386-cgo), type IfAddrmsg struct, Scope uint8 +pkg syscall (linux-386-cgo), type IfInfomsg struct +pkg syscall (linux-386-cgo), type IfInfomsg struct, Change uint32 +pkg syscall (linux-386-cgo), type IfInfomsg struct, Family uint8 +pkg syscall (linux-386-cgo), type IfInfomsg struct, Flags uint32 +pkg syscall (linux-386-cgo), type IfInfomsg struct, Index int32 +pkg syscall (linux-386-cgo), type IfInfomsg struct, Type uint16 +pkg syscall (linux-386-cgo), type IfInfomsg struct, X__ifi_pad uint8 +pkg syscall (linux-386-cgo), type Inet4Pktinfo struct +pkg syscall (linux-386-cgo), type Inet4Pktinfo struct, Addr [4]byte +pkg syscall (linux-386-cgo), type Inet4Pktinfo struct, Ifindex int32 +pkg syscall (linux-386-cgo), type Inet4Pktinfo struct, Spec_dst [4]byte +pkg syscall (linux-386-cgo), type Inet6Pktinfo struct +pkg syscall (linux-386-cgo), type Inet6Pktinfo struct, Addr [16]byte +pkg syscall (linux-386-cgo), type Inet6Pktinfo struct, Ifindex uint32 +pkg syscall (linux-386-cgo), type InotifyEvent struct +pkg syscall (linux-386-cgo), type InotifyEvent struct, Cookie uint32 +pkg syscall (linux-386-cgo), type InotifyEvent struct, Len uint32 +pkg syscall (linux-386-cgo), type InotifyEvent struct, Mask uint32 +pkg syscall (linux-386-cgo), type InotifyEvent struct, Name [0]byte +pkg syscall (linux-386-cgo), type InotifyEvent struct, Wd int32 +pkg syscall (linux-386-cgo), type Iovec struct +pkg syscall (linux-386-cgo), type Iovec struct, Base *byte +pkg syscall (linux-386-cgo), type Iovec struct, Len uint32 +pkg syscall (linux-386-cgo), type Msghdr struct +pkg syscall (linux-386-cgo), type Msghdr struct, Control *byte +pkg syscall (linux-386-cgo), type Msghdr struct, Controllen uint32 +pkg syscall (linux-386-cgo), type Msghdr struct, Flags int32 +pkg syscall (linux-386-cgo), type Msghdr struct, Iov *Iovec +pkg syscall (linux-386-cgo), type Msghdr struct, Iovlen uint32 +pkg syscall (linux-386-cgo), type Msghdr struct, Name *byte +pkg syscall (linux-386-cgo), type Msghdr struct, Namelen uint32 +pkg syscall (linux-386-cgo), type NetlinkMessage struct +pkg syscall (linux-386-cgo), type NetlinkMessage struct, Data []byte +pkg syscall (linux-386-cgo), type NetlinkMessage struct, Header NlMsghdr +pkg syscall (linux-386-cgo), type NetlinkRouteAttr struct +pkg syscall (linux-386-cgo), type NetlinkRouteAttr struct, Attr RtAttr +pkg syscall (linux-386-cgo), type NetlinkRouteAttr struct, Value []byte +pkg syscall (linux-386-cgo), type NetlinkRouteRequest struct +pkg syscall (linux-386-cgo), type NetlinkRouteRequest struct, Data RtGenmsg +pkg syscall (linux-386-cgo), type NetlinkRouteRequest struct, Header NlMsghdr +pkg syscall (linux-386-cgo), type NlAttr struct +pkg syscall (linux-386-cgo), type NlAttr struct, Len uint16 +pkg syscall (linux-386-cgo), type NlAttr struct, Type uint16 +pkg syscall (linux-386-cgo), type NlMsgerr struct +pkg syscall (linux-386-cgo), type NlMsgerr struct, Error int32 +pkg syscall (linux-386-cgo), type NlMsgerr struct, Msg NlMsghdr +pkg syscall (linux-386-cgo), type NlMsghdr struct +pkg syscall (linux-386-cgo), type NlMsghdr struct, Flags uint16 +pkg syscall (linux-386-cgo), type NlMsghdr struct, Len uint32 +pkg syscall (linux-386-cgo), type NlMsghdr struct, Pid uint32 +pkg syscall (linux-386-cgo), type NlMsghdr struct, Seq uint32 +pkg syscall (linux-386-cgo), type NlMsghdr struct, Type uint16 +pkg syscall (linux-386-cgo), type PtraceRegs struct +pkg syscall (linux-386-cgo), type PtraceRegs struct, Eax int32 +pkg syscall (linux-386-cgo), type PtraceRegs struct, Ebp int32 +pkg syscall (linux-386-cgo), type PtraceRegs struct, Ebx int32 +pkg syscall (linux-386-cgo), type PtraceRegs struct, Ecx int32 +pkg syscall (linux-386-cgo), type PtraceRegs struct, Edi int32 +pkg syscall (linux-386-cgo), type PtraceRegs struct, Edx int32 +pkg syscall (linux-386-cgo), type PtraceRegs struct, Eflags int32 +pkg syscall (linux-386-cgo), type PtraceRegs struct, Eip int32 +pkg syscall (linux-386-cgo), type PtraceRegs struct, Esi int32 +pkg syscall (linux-386-cgo), type PtraceRegs struct, Esp int32 +pkg syscall (linux-386-cgo), type PtraceRegs struct, Orig_eax int32 +pkg syscall (linux-386-cgo), type PtraceRegs struct, Xcs int32 +pkg syscall (linux-386-cgo), type PtraceRegs struct, Xds int32 +pkg syscall (linux-386-cgo), type PtraceRegs struct, Xes int32 +pkg syscall (linux-386-cgo), type PtraceRegs struct, Xfs int32 +pkg syscall (linux-386-cgo), type PtraceRegs struct, Xgs int32 +pkg syscall (linux-386-cgo), type PtraceRegs struct, Xss int32 +pkg syscall (linux-386-cgo), type RawSockaddr struct, Family uint16 +pkg syscall (linux-386-cgo), type RawSockaddrAny struct, Pad [96]int8 +pkg syscall (linux-386-cgo), type RawSockaddrInet4 struct, Family uint16 +pkg syscall (linux-386-cgo), type RawSockaddrInet4 struct, Zero [8]uint8 +pkg syscall (linux-386-cgo), type RawSockaddrInet6 struct +pkg syscall (linux-386-cgo), type RawSockaddrInet6 struct, Addr [16]byte +pkg syscall (linux-386-cgo), type RawSockaddrInet6 struct, Family uint16 +pkg syscall (linux-386-cgo), type RawSockaddrInet6 struct, Flowinfo uint32 +pkg syscall (linux-386-cgo), type RawSockaddrInet6 struct, Port uint16 +pkg syscall (linux-386-cgo), type RawSockaddrInet6 struct, Scope_id uint32 +pkg syscall (linux-386-cgo), type RawSockaddrLinklayer struct +pkg syscall (linux-386-cgo), type RawSockaddrLinklayer struct, Addr [8]uint8 +pkg syscall (linux-386-cgo), type RawSockaddrLinklayer struct, Family uint16 +pkg syscall (linux-386-cgo), type RawSockaddrLinklayer struct, Halen uint8 +pkg syscall (linux-386-cgo), type RawSockaddrLinklayer struct, Hatype uint16 +pkg syscall (linux-386-cgo), type RawSockaddrLinklayer struct, Ifindex int32 +pkg syscall (linux-386-cgo), type RawSockaddrLinklayer struct, Pkttype uint8 +pkg syscall (linux-386-cgo), type RawSockaddrLinklayer struct, Protocol uint16 +pkg syscall (linux-386-cgo), type RawSockaddrNetlink struct +pkg syscall (linux-386-cgo), type RawSockaddrNetlink struct, Family uint16 +pkg syscall (linux-386-cgo), type RawSockaddrNetlink struct, Groups uint32 +pkg syscall (linux-386-cgo), type RawSockaddrNetlink struct, Pad uint16 +pkg syscall (linux-386-cgo), type RawSockaddrNetlink struct, Pid uint32 +pkg syscall (linux-386-cgo), type RawSockaddrUnix struct +pkg syscall (linux-386-cgo), type RawSockaddrUnix struct, Family uint16 +pkg syscall (linux-386-cgo), type RawSockaddrUnix struct, Path [108]int8 +pkg syscall (linux-386-cgo), type Rlimit struct +pkg syscall (linux-386-cgo), type Rlimit struct, Cur uint64 +pkg syscall (linux-386-cgo), type Rlimit struct, Max uint64 +pkg syscall (linux-386-cgo), type RtAttr struct +pkg syscall (linux-386-cgo), type RtAttr struct, Len uint16 +pkg syscall (linux-386-cgo), type RtAttr struct, Type uint16 +pkg syscall (linux-386-cgo), type RtGenmsg struct +pkg syscall (linux-386-cgo), type RtGenmsg struct, Family uint8 +pkg syscall (linux-386-cgo), type RtMsg struct +pkg syscall (linux-386-cgo), type RtMsg struct, Dst_len uint8 +pkg syscall (linux-386-cgo), type RtMsg struct, Family uint8 +pkg syscall (linux-386-cgo), type RtMsg struct, Flags uint32 +pkg syscall (linux-386-cgo), type RtMsg struct, Protocol uint8 +pkg syscall (linux-386-cgo), type RtMsg struct, Scope uint8 +pkg syscall (linux-386-cgo), type RtMsg struct, Src_len uint8 +pkg syscall (linux-386-cgo), type RtMsg struct, Table uint8 +pkg syscall (linux-386-cgo), type RtMsg struct, Tos uint8 +pkg syscall (linux-386-cgo), type RtMsg struct, Type uint8 +pkg syscall (linux-386-cgo), type RtNexthop struct +pkg syscall (linux-386-cgo), type RtNexthop struct, Flags uint8 +pkg syscall (linux-386-cgo), type RtNexthop struct, Hops uint8 +pkg syscall (linux-386-cgo), type RtNexthop struct, Ifindex int32 +pkg syscall (linux-386-cgo), type RtNexthop struct, Len uint16 +pkg syscall (linux-386-cgo), type Rusage struct, Idrss int32 +pkg syscall (linux-386-cgo), type Rusage struct, Inblock int32 +pkg syscall (linux-386-cgo), type Rusage struct, Isrss int32 +pkg syscall (linux-386-cgo), type Rusage struct, Ixrss int32 +pkg syscall (linux-386-cgo), type Rusage struct, Majflt int32 +pkg syscall (linux-386-cgo), type Rusage struct, Maxrss int32 +pkg syscall (linux-386-cgo), type Rusage struct, Minflt int32 +pkg syscall (linux-386-cgo), type Rusage struct, Msgrcv int32 +pkg syscall (linux-386-cgo), type Rusage struct, Msgsnd int32 +pkg syscall (linux-386-cgo), type Rusage struct, Nivcsw int32 +pkg syscall (linux-386-cgo), type Rusage struct, Nsignals int32 +pkg syscall (linux-386-cgo), type Rusage struct, Nswap int32 +pkg syscall (linux-386-cgo), type Rusage struct, Nvcsw int32 +pkg syscall (linux-386-cgo), type Rusage struct, Oublock int32 +pkg syscall (linux-386-cgo), type Rusage struct, Stime Timeval +pkg syscall (linux-386-cgo), type Rusage struct, Utime Timeval +pkg syscall (linux-386-cgo), type SockFilter struct +pkg syscall (linux-386-cgo), type SockFilter struct, Code uint16 +pkg syscall (linux-386-cgo), type SockFilter struct, Jf uint8 +pkg syscall (linux-386-cgo), type SockFilter struct, Jt uint8 +pkg syscall (linux-386-cgo), type SockFilter struct, K uint32 +pkg syscall (linux-386-cgo), type SockFprog struct +pkg syscall (linux-386-cgo), type SockFprog struct, Filter *SockFilter +pkg syscall (linux-386-cgo), type SockFprog struct, Len uint16 +pkg syscall (linux-386-cgo), type SockFprog struct, Pad_cgo_0 [2]byte +pkg syscall (linux-386-cgo), type SockaddrLinklayer struct +pkg syscall (linux-386-cgo), type SockaddrLinklayer struct, Addr [8]byte +pkg syscall (linux-386-cgo), type SockaddrLinklayer struct, Halen uint8 +pkg syscall (linux-386-cgo), type SockaddrLinklayer struct, Hatype uint16 +pkg syscall (linux-386-cgo), type SockaddrLinklayer struct, Ifindex int +pkg syscall (linux-386-cgo), type SockaddrLinklayer struct, Pkttype uint8 +pkg syscall (linux-386-cgo), type SockaddrLinklayer struct, Protocol uint16 +pkg syscall (linux-386-cgo), type SockaddrNetlink struct +pkg syscall (linux-386-cgo), type SockaddrNetlink struct, Family uint16 +pkg syscall (linux-386-cgo), type SockaddrNetlink struct, Groups uint32 +pkg syscall (linux-386-cgo), type SockaddrNetlink struct, Pad uint16 +pkg syscall (linux-386-cgo), type SockaddrNetlink struct, Pid uint32 +pkg syscall (linux-386-cgo), type SocketControlMessage struct +pkg syscall (linux-386-cgo), type SocketControlMessage struct, Data []byte +pkg syscall (linux-386-cgo), type SocketControlMessage struct, Header Cmsghdr +pkg syscall (linux-386-cgo), type Stat_t struct +pkg syscall (linux-386-cgo), type Stat_t struct, Atim Timespec +pkg syscall (linux-386-cgo), type Stat_t struct, Blksize int32 +pkg syscall (linux-386-cgo), type Stat_t struct, Blocks int64 +pkg syscall (linux-386-cgo), type Stat_t struct, Ctim Timespec +pkg syscall (linux-386-cgo), type Stat_t struct, Dev uint64 +pkg syscall (linux-386-cgo), type Stat_t struct, Gid uint32 +pkg syscall (linux-386-cgo), type Stat_t struct, Ino uint64 +pkg syscall (linux-386-cgo), type Stat_t struct, Mode uint32 +pkg syscall (linux-386-cgo), type Stat_t struct, Mtim Timespec +pkg syscall (linux-386-cgo), type Stat_t struct, Nlink uint32 +pkg syscall (linux-386-cgo), type Stat_t struct, Pad_cgo_0 [2]byte +pkg syscall (linux-386-cgo), type Stat_t struct, Pad_cgo_1 [2]byte +pkg syscall (linux-386-cgo), type Stat_t struct, Rdev uint64 +pkg syscall (linux-386-cgo), type Stat_t struct, Size int64 +pkg syscall (linux-386-cgo), type Stat_t struct, Uid uint32 +pkg syscall (linux-386-cgo), type Stat_t struct, X__pad1 uint16 +pkg syscall (linux-386-cgo), type Stat_t struct, X__pad2 uint16 +pkg syscall (linux-386-cgo), type Stat_t struct, X__st_ino uint32 +pkg syscall (linux-386-cgo), type Statfs_t struct +pkg syscall (linux-386-cgo), type Statfs_t struct, Bavail uint64 +pkg syscall (linux-386-cgo), type Statfs_t struct, Bfree uint64 +pkg syscall (linux-386-cgo), type Statfs_t struct, Blocks uint64 +pkg syscall (linux-386-cgo), type Statfs_t struct, Bsize int32 +pkg syscall (linux-386-cgo), type Statfs_t struct, Ffree uint64 +pkg syscall (linux-386-cgo), type Statfs_t struct, Files uint64 +pkg syscall (linux-386-cgo), type Statfs_t struct, Flags int32 +pkg syscall (linux-386-cgo), type Statfs_t struct, Frsize int32 +pkg syscall (linux-386-cgo), type Statfs_t struct, Fsid Fsid +pkg syscall (linux-386-cgo), type Statfs_t struct, Namelen int32 +pkg syscall (linux-386-cgo), type Statfs_t struct, Spare [4]int32 +pkg syscall (linux-386-cgo), type Statfs_t struct, Type int32 +pkg syscall (linux-386-cgo), type SysProcAttr struct, Chroot string +pkg syscall (linux-386-cgo), type SysProcAttr struct, Credential *Credential +pkg syscall (linux-386-cgo), type SysProcAttr struct, Noctty bool +pkg syscall (linux-386-cgo), type SysProcAttr struct, Pdeathsig Signal +pkg syscall (linux-386-cgo), type SysProcAttr struct, Ptrace bool +pkg syscall (linux-386-cgo), type SysProcAttr struct, Setctty bool +pkg syscall (linux-386-cgo), type SysProcAttr struct, Setpgid bool +pkg syscall (linux-386-cgo), type SysProcAttr struct, Setsid bool +pkg syscall (linux-386-cgo), type Sysinfo_t struct +pkg syscall (linux-386-cgo), type Sysinfo_t struct, Bufferram uint32 +pkg syscall (linux-386-cgo), type Sysinfo_t struct, Freehigh uint32 +pkg syscall (linux-386-cgo), type Sysinfo_t struct, Freeram uint32 +pkg syscall (linux-386-cgo), type Sysinfo_t struct, Freeswap uint32 +pkg syscall (linux-386-cgo), type Sysinfo_t struct, Loads [3]uint32 +pkg syscall (linux-386-cgo), type Sysinfo_t struct, Pad uint16 +pkg syscall (linux-386-cgo), type Sysinfo_t struct, Procs uint16 +pkg syscall (linux-386-cgo), type Sysinfo_t struct, Sharedram uint32 +pkg syscall (linux-386-cgo), type Sysinfo_t struct, Totalhigh uint32 +pkg syscall (linux-386-cgo), type Sysinfo_t struct, Totalram uint32 +pkg syscall (linux-386-cgo), type Sysinfo_t struct, Totalswap uint32 +pkg syscall (linux-386-cgo), type Sysinfo_t struct, Unit uint32 +pkg syscall (linux-386-cgo), type Sysinfo_t struct, Uptime int32 +pkg syscall (linux-386-cgo), type Sysinfo_t struct, X_f [8]int8 +pkg syscall (linux-386-cgo), type Termios struct +pkg syscall (linux-386-cgo), type Termios struct, Cc [32]uint8 +pkg syscall (linux-386-cgo), type Termios struct, Cflag uint32 +pkg syscall (linux-386-cgo), type Termios struct, Iflag uint32 +pkg syscall (linux-386-cgo), type Termios struct, Ispeed uint32 +pkg syscall (linux-386-cgo), type Termios struct, Lflag uint32 +pkg syscall (linux-386-cgo), type Termios struct, Line uint8 +pkg syscall (linux-386-cgo), type Termios struct, Oflag uint32 +pkg syscall (linux-386-cgo), type Termios struct, Ospeed uint32 +pkg syscall (linux-386-cgo), type Termios struct, Pad_cgo_0 [3]byte +pkg syscall (linux-386-cgo), type Time_t int32 +pkg syscall (linux-386-cgo), type Timespec struct, Nsec int32 +pkg syscall (linux-386-cgo), type Timespec struct, Sec int32 +pkg syscall (linux-386-cgo), type Timeval struct, Sec int32 +pkg syscall (linux-386-cgo), type Timeval struct, Usec int32 +pkg syscall (linux-386-cgo), type Timex struct +pkg syscall (linux-386-cgo), type Timex struct, Calcnt int32 +pkg syscall (linux-386-cgo), type Timex struct, Constant int32 +pkg syscall (linux-386-cgo), type Timex struct, Errcnt int32 +pkg syscall (linux-386-cgo), type Timex struct, Esterror int32 +pkg syscall (linux-386-cgo), type Timex struct, Freq int32 +pkg syscall (linux-386-cgo), type Timex struct, Jitcnt int32 +pkg syscall (linux-386-cgo), type Timex struct, Jitter int32 +pkg syscall (linux-386-cgo), type Timex struct, Maxerror int32 +pkg syscall (linux-386-cgo), type Timex struct, Modes uint32 +pkg syscall (linux-386-cgo), type Timex struct, Offset int32 +pkg syscall (linux-386-cgo), type Timex struct, Pad_cgo_0 [44]byte +pkg syscall (linux-386-cgo), type Timex struct, Ppsfreq int32 +pkg syscall (linux-386-cgo), type Timex struct, Precision int32 +pkg syscall (linux-386-cgo), type Timex struct, Shift int32 +pkg syscall (linux-386-cgo), type Timex struct, Stabil int32 +pkg syscall (linux-386-cgo), type Timex struct, Status int32 +pkg syscall (linux-386-cgo), type Timex struct, Stbcnt int32 +pkg syscall (linux-386-cgo), type Timex struct, Tai int32 +pkg syscall (linux-386-cgo), type Timex struct, Tick int32 +pkg syscall (linux-386-cgo), type Timex struct, Time Timeval +pkg syscall (linux-386-cgo), type Timex struct, Tolerance int32 +pkg syscall (linux-386-cgo), type Tms struct +pkg syscall (linux-386-cgo), type Tms struct, Cstime int32 +pkg syscall (linux-386-cgo), type Tms struct, Cutime int32 +pkg syscall (linux-386-cgo), type Tms struct, Stime int32 +pkg syscall (linux-386-cgo), type Tms struct, Utime int32 +pkg syscall (linux-386-cgo), type Ucred struct +pkg syscall (linux-386-cgo), type Ucred struct, Gid uint32 +pkg syscall (linux-386-cgo), type Ucred struct, Pid int32 +pkg syscall (linux-386-cgo), type Ucred struct, Uid uint32 +pkg syscall (linux-386-cgo), type Ustat_t struct +pkg syscall (linux-386-cgo), type Ustat_t struct, Fname [6]int8 +pkg syscall (linux-386-cgo), type Ustat_t struct, Fpack [6]int8 +pkg syscall (linux-386-cgo), type Ustat_t struct, Tfree int32 +pkg syscall (linux-386-cgo), type Ustat_t struct, Tinode uint32 +pkg syscall (linux-386-cgo), type Utimbuf struct +pkg syscall (linux-386-cgo), type Utimbuf struct, Actime int32 +pkg syscall (linux-386-cgo), type Utimbuf struct, Modtime int32 +pkg syscall (linux-386-cgo), type Utsname struct +pkg syscall (linux-386-cgo), type Utsname struct, Domainname [65]int8 +pkg syscall (linux-386-cgo), type Utsname struct, Machine [65]int8 +pkg syscall (linux-386-cgo), type Utsname struct, Nodename [65]int8 +pkg syscall (linux-386-cgo), type Utsname struct, Release [65]int8 +pkg syscall (linux-386-cgo), type Utsname struct, Sysname [65]int8 +pkg syscall (linux-386-cgo), type Utsname struct, Version [65]int8 +pkg syscall (linux-386-cgo), type WaitStatus uint32 +pkg syscall (linux-386-cgo), var Stderr int +pkg syscall (linux-386-cgo), var Stdin int +pkg syscall (linux-386-cgo), var Stdout int +pkg syscall (linux-amd64), const AF_ALG ideal-int +pkg syscall (linux-amd64), const AF_APPLETALK ideal-int +pkg syscall (linux-amd64), const AF_ASH ideal-int +pkg syscall (linux-amd64), const AF_ATMPVC ideal-int +pkg syscall (linux-amd64), const AF_ATMSVC ideal-int +pkg syscall (linux-amd64), const AF_AX25 ideal-int +pkg syscall (linux-amd64), const AF_BLUETOOTH ideal-int +pkg syscall (linux-amd64), const AF_BRIDGE ideal-int +pkg syscall (linux-amd64), const AF_CAIF ideal-int +pkg syscall (linux-amd64), const AF_CAN ideal-int +pkg syscall (linux-amd64), const AF_DECnet ideal-int +pkg syscall (linux-amd64), const AF_ECONET ideal-int +pkg syscall (linux-amd64), const AF_FILE ideal-int +pkg syscall (linux-amd64), const AF_IEEE802154 ideal-int +pkg syscall (linux-amd64), const AF_IPX ideal-int +pkg syscall (linux-amd64), const AF_IRDA ideal-int +pkg syscall (linux-amd64), const AF_ISDN ideal-int +pkg syscall (linux-amd64), const AF_IUCV ideal-int +pkg syscall (linux-amd64), const AF_KEY ideal-int +pkg syscall (linux-amd64), const AF_LLC ideal-int +pkg syscall (linux-amd64), const AF_LOCAL ideal-int +pkg syscall (linux-amd64), const AF_MAX ideal-int +pkg syscall (linux-amd64), const AF_NETBEUI ideal-int +pkg syscall (linux-amd64), const AF_NETLINK ideal-int +pkg syscall (linux-amd64), const AF_NETROM ideal-int +pkg syscall (linux-amd64), const AF_PACKET ideal-int +pkg syscall (linux-amd64), const AF_PHONET ideal-int +pkg syscall (linux-amd64), const AF_PPPOX ideal-int +pkg syscall (linux-amd64), const AF_RDS ideal-int +pkg syscall (linux-amd64), const AF_ROSE ideal-int +pkg syscall (linux-amd64), const AF_ROUTE ideal-int +pkg syscall (linux-amd64), const AF_RXRPC ideal-int +pkg syscall (linux-amd64), const AF_SECURITY ideal-int +pkg syscall (linux-amd64), const AF_SNA ideal-int +pkg syscall (linux-amd64), const AF_TIPC ideal-int +pkg syscall (linux-amd64), const AF_WANPIPE ideal-int +pkg syscall (linux-amd64), const AF_X25 ideal-int +pkg syscall (linux-amd64), const ARPHRD_ADAPT ideal-int +pkg syscall (linux-amd64), const ARPHRD_APPLETLK ideal-int +pkg syscall (linux-amd64), const ARPHRD_ARCNET ideal-int +pkg syscall (linux-amd64), const ARPHRD_ASH ideal-int +pkg syscall (linux-amd64), const ARPHRD_ATM ideal-int +pkg syscall (linux-amd64), const ARPHRD_AX25 ideal-int +pkg syscall (linux-amd64), const ARPHRD_BIF ideal-int +pkg syscall (linux-amd64), const ARPHRD_CHAOS ideal-int +pkg syscall (linux-amd64), const ARPHRD_CISCO ideal-int +pkg syscall (linux-amd64), const ARPHRD_CSLIP ideal-int +pkg syscall (linux-amd64), const ARPHRD_CSLIP6 ideal-int +pkg syscall (linux-amd64), const ARPHRD_DDCMP ideal-int +pkg syscall (linux-amd64), const ARPHRD_DLCI ideal-int +pkg syscall (linux-amd64), const ARPHRD_ECONET ideal-int +pkg syscall (linux-amd64), const ARPHRD_EETHER ideal-int +pkg syscall (linux-amd64), const ARPHRD_ETHER ideal-int +pkg syscall (linux-amd64), const ARPHRD_EUI64 ideal-int +pkg syscall (linux-amd64), const ARPHRD_FCAL ideal-int +pkg syscall (linux-amd64), const ARPHRD_FCFABRIC ideal-int +pkg syscall (linux-amd64), const ARPHRD_FCPL ideal-int +pkg syscall (linux-amd64), const ARPHRD_FCPP ideal-int +pkg syscall (linux-amd64), const ARPHRD_FDDI ideal-int +pkg syscall (linux-amd64), const ARPHRD_FRAD ideal-int +pkg syscall (linux-amd64), const ARPHRD_HDLC ideal-int +pkg syscall (linux-amd64), const ARPHRD_HIPPI ideal-int +pkg syscall (linux-amd64), const ARPHRD_HWX25 ideal-int +pkg syscall (linux-amd64), const ARPHRD_IEEE1394 ideal-int +pkg syscall (linux-amd64), const ARPHRD_IEEE802 ideal-int +pkg syscall (linux-amd64), const ARPHRD_IEEE80211 ideal-int +pkg syscall (linux-amd64), const ARPHRD_IEEE80211_PRISM ideal-int +pkg syscall (linux-amd64), const ARPHRD_IEEE80211_RADIOTAP ideal-int +pkg syscall (linux-amd64), const ARPHRD_IEEE802154 ideal-int +pkg syscall (linux-amd64), const ARPHRD_IEEE802154_PHY ideal-int +pkg syscall (linux-amd64), const ARPHRD_IEEE802_TR ideal-int +pkg syscall (linux-amd64), const ARPHRD_INFINIBAND ideal-int +pkg syscall (linux-amd64), const ARPHRD_IPDDP ideal-int +pkg syscall (linux-amd64), const ARPHRD_IPGRE ideal-int +pkg syscall (linux-amd64), const ARPHRD_IRDA ideal-int +pkg syscall (linux-amd64), const ARPHRD_LAPB ideal-int +pkg syscall (linux-amd64), const ARPHRD_LOCALTLK ideal-int +pkg syscall (linux-amd64), const ARPHRD_LOOPBACK ideal-int +pkg syscall (linux-amd64), const ARPHRD_METRICOM ideal-int +pkg syscall (linux-amd64), const ARPHRD_NETROM ideal-int +pkg syscall (linux-amd64), const ARPHRD_NONE ideal-int +pkg syscall (linux-amd64), const ARPHRD_PIMREG ideal-int +pkg syscall (linux-amd64), const ARPHRD_PPP ideal-int +pkg syscall (linux-amd64), const ARPHRD_PRONET ideal-int +pkg syscall (linux-amd64), const ARPHRD_RAWHDLC ideal-int +pkg syscall (linux-amd64), const ARPHRD_ROSE ideal-int +pkg syscall (linux-amd64), const ARPHRD_RSRVD ideal-int +pkg syscall (linux-amd64), const ARPHRD_SIT ideal-int +pkg syscall (linux-amd64), const ARPHRD_SKIP ideal-int +pkg syscall (linux-amd64), const ARPHRD_SLIP ideal-int +pkg syscall (linux-amd64), const ARPHRD_SLIP6 ideal-int +pkg syscall (linux-amd64), const ARPHRD_TUNNEL ideal-int +pkg syscall (linux-amd64), const ARPHRD_TUNNEL6 ideal-int +pkg syscall (linux-amd64), const ARPHRD_VOID ideal-int +pkg syscall (linux-amd64), const ARPHRD_X25 ideal-int +pkg syscall (linux-amd64), const B0 ideal-int +pkg syscall (linux-amd64), const B1000000 ideal-int +pkg syscall (linux-amd64), const B110 ideal-int +pkg syscall (linux-amd64), const B115200 ideal-int +pkg syscall (linux-amd64), const B1152000 ideal-int +pkg syscall (linux-amd64), const B1200 ideal-int +pkg syscall (linux-amd64), const B134 ideal-int +pkg syscall (linux-amd64), const B150 ideal-int +pkg syscall (linux-amd64), const B1500000 ideal-int +pkg syscall (linux-amd64), const B1800 ideal-int +pkg syscall (linux-amd64), const B19200 ideal-int +pkg syscall (linux-amd64), const B200 ideal-int +pkg syscall (linux-amd64), const B2000000 ideal-int +pkg syscall (linux-amd64), const B230400 ideal-int +pkg syscall (linux-amd64), const B2400 ideal-int +pkg syscall (linux-amd64), const B2500000 ideal-int +pkg syscall (linux-amd64), const B300 ideal-int +pkg syscall (linux-amd64), const B3000000 ideal-int +pkg syscall (linux-amd64), const B3500000 ideal-int +pkg syscall (linux-amd64), const B38400 ideal-int +pkg syscall (linux-amd64), const B4000000 ideal-int +pkg syscall (linux-amd64), const B460800 ideal-int +pkg syscall (linux-amd64), const B4800 ideal-int +pkg syscall (linux-amd64), const B50 ideal-int +pkg syscall (linux-amd64), const B500000 ideal-int +pkg syscall (linux-amd64), const B57600 ideal-int +pkg syscall (linux-amd64), const B576000 ideal-int +pkg syscall (linux-amd64), const B600 ideal-int +pkg syscall (linux-amd64), const B75 ideal-int +pkg syscall (linux-amd64), const B921600 ideal-int +pkg syscall (linux-amd64), const B9600 ideal-int +pkg syscall (linux-amd64), const BPF_A ideal-int +pkg syscall (linux-amd64), const BPF_ABS ideal-int +pkg syscall (linux-amd64), const BPF_ADD ideal-int +pkg syscall (linux-amd64), const BPF_ALU ideal-int +pkg syscall (linux-amd64), const BPF_AND ideal-int +pkg syscall (linux-amd64), const BPF_B ideal-int +pkg syscall (linux-amd64), const BPF_DIV ideal-int +pkg syscall (linux-amd64), const BPF_H ideal-int +pkg syscall (linux-amd64), const BPF_IMM ideal-int +pkg syscall (linux-amd64), const BPF_IND ideal-int +pkg syscall (linux-amd64), const BPF_JA ideal-int +pkg syscall (linux-amd64), const BPF_JEQ ideal-int +pkg syscall (linux-amd64), const BPF_JGE ideal-int +pkg syscall (linux-amd64), const BPF_JGT ideal-int +pkg syscall (linux-amd64), const BPF_JMP ideal-int +pkg syscall (linux-amd64), const BPF_JSET ideal-int +pkg syscall (linux-amd64), const BPF_K ideal-int +pkg syscall (linux-amd64), const BPF_LD ideal-int +pkg syscall (linux-amd64), const BPF_LDX ideal-int +pkg syscall (linux-amd64), const BPF_LEN ideal-int +pkg syscall (linux-amd64), const BPF_LSH ideal-int +pkg syscall (linux-amd64), const BPF_MAJOR_VERSION ideal-int +pkg syscall (linux-amd64), const BPF_MAXINSNS ideal-int +pkg syscall (linux-amd64), const BPF_MEM ideal-int +pkg syscall (linux-amd64), const BPF_MEMWORDS ideal-int +pkg syscall (linux-amd64), const BPF_MINOR_VERSION ideal-int +pkg syscall (linux-amd64), const BPF_MISC ideal-int +pkg syscall (linux-amd64), const BPF_MSH ideal-int +pkg syscall (linux-amd64), const BPF_MUL ideal-int +pkg syscall (linux-amd64), const BPF_NEG ideal-int +pkg syscall (linux-amd64), const BPF_OR ideal-int +pkg syscall (linux-amd64), const BPF_RET ideal-int +pkg syscall (linux-amd64), const BPF_RSH ideal-int +pkg syscall (linux-amd64), const BPF_ST ideal-int +pkg syscall (linux-amd64), const BPF_STX ideal-int +pkg syscall (linux-amd64), const BPF_SUB ideal-int +pkg syscall (linux-amd64), const BPF_TAX ideal-int +pkg syscall (linux-amd64), const BPF_TXA ideal-int +pkg syscall (linux-amd64), const BPF_W ideal-int +pkg syscall (linux-amd64), const BPF_X ideal-int +pkg syscall (linux-amd64), const BRKINT ideal-int +pkg syscall (linux-amd64), const CLOCAL ideal-int +pkg syscall (linux-amd64), const CREAD ideal-int +pkg syscall (linux-amd64), const CS5 ideal-int +pkg syscall (linux-amd64), const CS6 ideal-int +pkg syscall (linux-amd64), const CS7 ideal-int +pkg syscall (linux-amd64), const CS8 ideal-int +pkg syscall (linux-amd64), const CSIZE ideal-int +pkg syscall (linux-amd64), const CSTOPB ideal-int +pkg syscall (linux-amd64), const DT_BLK ideal-int +pkg syscall (linux-amd64), const DT_CHR ideal-int +pkg syscall (linux-amd64), const DT_DIR ideal-int +pkg syscall (linux-amd64), const DT_FIFO ideal-int +pkg syscall (linux-amd64), const DT_LNK ideal-int +pkg syscall (linux-amd64), const DT_REG ideal-int +pkg syscall (linux-amd64), const DT_SOCK ideal-int +pkg syscall (linux-amd64), const DT_UNKNOWN ideal-int +pkg syscall (linux-amd64), const DT_WHT ideal-int +pkg syscall (linux-amd64), const EADV Errno +pkg syscall (linux-amd64), const EBADE Errno +pkg syscall (linux-amd64), const EBADFD Errno +pkg syscall (linux-amd64), const EBADR Errno +pkg syscall (linux-amd64), const EBADRQC Errno +pkg syscall (linux-amd64), const EBADSLT Errno +pkg syscall (linux-amd64), const EBFONT Errno +pkg syscall (linux-amd64), const ECHO ideal-int +pkg syscall (linux-amd64), const ECHOCTL ideal-int +pkg syscall (linux-amd64), const ECHOE ideal-int +pkg syscall (linux-amd64), const ECHOK ideal-int +pkg syscall (linux-amd64), const ECHOKE ideal-int +pkg syscall (linux-amd64), const ECHONL ideal-int +pkg syscall (linux-amd64), const ECHOPRT ideal-int +pkg syscall (linux-amd64), const ECHRNG Errno +pkg syscall (linux-amd64), const ECOMM Errno +pkg syscall (linux-amd64), const EDEADLOCK Errno +pkg syscall (linux-amd64), const EDOTDOT Errno +pkg syscall (linux-amd64), const EISNAM Errno +pkg syscall (linux-amd64), const EKEYEXPIRED Errno +pkg syscall (linux-amd64), const EKEYREJECTED Errno +pkg syscall (linux-amd64), const EKEYREVOKED Errno +pkg syscall (linux-amd64), const EL2HLT Errno +pkg syscall (linux-amd64), const EL2NSYNC Errno +pkg syscall (linux-amd64), const EL3HLT Errno +pkg syscall (linux-amd64), const EL3RST Errno +pkg syscall (linux-amd64), const ELIBACC Errno +pkg syscall (linux-amd64), const ELIBBAD Errno +pkg syscall (linux-amd64), const ELIBEXEC Errno +pkg syscall (linux-amd64), const ELIBMAX Errno +pkg syscall (linux-amd64), const ELIBSCN Errno +pkg syscall (linux-amd64), const ELNRNG Errno +pkg syscall (linux-amd64), const EMEDIUMTYPE Errno +pkg syscall (linux-amd64), const ENAVAIL Errno +pkg syscall (linux-amd64), const ENOANO Errno +pkg syscall (linux-amd64), const ENOCSI Errno +pkg syscall (linux-amd64), const ENOKEY Errno +pkg syscall (linux-amd64), const ENOMEDIUM Errno +pkg syscall (linux-amd64), const ENONET Errno +pkg syscall (linux-amd64), const ENOPKG Errno +pkg syscall (linux-amd64), const ENOTNAM Errno +pkg syscall (linux-amd64), const ENOTUNIQ Errno +pkg syscall (linux-amd64), const EPOLLERR ideal-int +pkg syscall (linux-amd64), const EPOLLET ideal-int +pkg syscall (linux-amd64), const EPOLLHUP ideal-int +pkg syscall (linux-amd64), const EPOLLIN ideal-int +pkg syscall (linux-amd64), const EPOLLMSG ideal-int +pkg syscall (linux-amd64), const EPOLLONESHOT ideal-int +pkg syscall (linux-amd64), const EPOLLOUT ideal-int +pkg syscall (linux-amd64), const EPOLLPRI ideal-int +pkg syscall (linux-amd64), const EPOLLRDBAND ideal-int +pkg syscall (linux-amd64), const EPOLLRDHUP ideal-int +pkg syscall (linux-amd64), const EPOLLRDNORM ideal-int +pkg syscall (linux-amd64), const EPOLLWRBAND ideal-int +pkg syscall (linux-amd64), const EPOLLWRNORM ideal-int +pkg syscall (linux-amd64), const EPOLL_CLOEXEC ideal-int +pkg syscall (linux-amd64), const EPOLL_CTL_ADD ideal-int +pkg syscall (linux-amd64), const EPOLL_CTL_DEL ideal-int +pkg syscall (linux-amd64), const EPOLL_CTL_MOD ideal-int +pkg syscall (linux-amd64), const EPOLL_NONBLOCK ideal-int +pkg syscall (linux-amd64), const EREMCHG Errno +pkg syscall (linux-amd64), const EREMOTEIO Errno +pkg syscall (linux-amd64), const ERESTART Errno +pkg syscall (linux-amd64), const ERFKILL Errno +pkg syscall (linux-amd64), const ESRMNT Errno +pkg syscall (linux-amd64), const ESTRPIPE Errno +pkg syscall (linux-amd64), const ETH_P_1588 ideal-int +pkg syscall (linux-amd64), const ETH_P_8021Q ideal-int +pkg syscall (linux-amd64), const ETH_P_802_2 ideal-int +pkg syscall (linux-amd64), const ETH_P_802_3 ideal-int +pkg syscall (linux-amd64), const ETH_P_AARP ideal-int +pkg syscall (linux-amd64), const ETH_P_ALL ideal-int +pkg syscall (linux-amd64), const ETH_P_AOE ideal-int +pkg syscall (linux-amd64), const ETH_P_ARCNET ideal-int +pkg syscall (linux-amd64), const ETH_P_ARP ideal-int +pkg syscall (linux-amd64), const ETH_P_ATALK ideal-int +pkg syscall (linux-amd64), const ETH_P_ATMFATE ideal-int +pkg syscall (linux-amd64), const ETH_P_ATMMPOA ideal-int +pkg syscall (linux-amd64), const ETH_P_AX25 ideal-int +pkg syscall (linux-amd64), const ETH_P_BPQ ideal-int +pkg syscall (linux-amd64), const ETH_P_CAIF ideal-int +pkg syscall (linux-amd64), const ETH_P_CAN ideal-int +pkg syscall (linux-amd64), const ETH_P_CONTROL ideal-int +pkg syscall (linux-amd64), const ETH_P_CUST ideal-int +pkg syscall (linux-amd64), const ETH_P_DDCMP ideal-int +pkg syscall (linux-amd64), const ETH_P_DEC ideal-int +pkg syscall (linux-amd64), const ETH_P_DIAG ideal-int +pkg syscall (linux-amd64), const ETH_P_DNA_DL ideal-int +pkg syscall (linux-amd64), const ETH_P_DNA_RC ideal-int +pkg syscall (linux-amd64), const ETH_P_DNA_RT ideal-int +pkg syscall (linux-amd64), const ETH_P_DSA ideal-int +pkg syscall (linux-amd64), const ETH_P_ECONET ideal-int +pkg syscall (linux-amd64), const ETH_P_EDSA ideal-int +pkg syscall (linux-amd64), const ETH_P_FCOE ideal-int +pkg syscall (linux-amd64), const ETH_P_FIP ideal-int +pkg syscall (linux-amd64), const ETH_P_HDLC ideal-int +pkg syscall (linux-amd64), const ETH_P_IEEE802154 ideal-int +pkg syscall (linux-amd64), const ETH_P_IEEEPUP ideal-int +pkg syscall (linux-amd64), const ETH_P_IEEEPUPAT ideal-int +pkg syscall (linux-amd64), const ETH_P_IP ideal-int +pkg syscall (linux-amd64), const ETH_P_IPV6 ideal-int +pkg syscall (linux-amd64), const ETH_P_IPX ideal-int +pkg syscall (linux-amd64), const ETH_P_IRDA ideal-int +pkg syscall (linux-amd64), const ETH_P_LAT ideal-int +pkg syscall (linux-amd64), const ETH_P_LINK_CTL ideal-int +pkg syscall (linux-amd64), const ETH_P_LOCALTALK ideal-int +pkg syscall (linux-amd64), const ETH_P_LOOP ideal-int +pkg syscall (linux-amd64), const ETH_P_MOBITEX ideal-int +pkg syscall (linux-amd64), const ETH_P_MPLS_MC ideal-int +pkg syscall (linux-amd64), const ETH_P_MPLS_UC ideal-int +pkg syscall (linux-amd64), const ETH_P_PAE ideal-int +pkg syscall (linux-amd64), const ETH_P_PAUSE ideal-int +pkg syscall (linux-amd64), const ETH_P_PHONET ideal-int +pkg syscall (linux-amd64), const ETH_P_PPPTALK ideal-int +pkg syscall (linux-amd64), const ETH_P_PPP_DISC ideal-int +pkg syscall (linux-amd64), const ETH_P_PPP_MP ideal-int +pkg syscall (linux-amd64), const ETH_P_PPP_SES ideal-int +pkg syscall (linux-amd64), const ETH_P_PUP ideal-int +pkg syscall (linux-amd64), const ETH_P_PUPAT ideal-int +pkg syscall (linux-amd64), const ETH_P_RARP ideal-int +pkg syscall (linux-amd64), const ETH_P_SCA ideal-int +pkg syscall (linux-amd64), const ETH_P_SLOW ideal-int +pkg syscall (linux-amd64), const ETH_P_SNAP ideal-int +pkg syscall (linux-amd64), const ETH_P_TEB ideal-int +pkg syscall (linux-amd64), const ETH_P_TIPC ideal-int +pkg syscall (linux-amd64), const ETH_P_TRAILER ideal-int +pkg syscall (linux-amd64), const ETH_P_TR_802_2 ideal-int +pkg syscall (linux-amd64), const ETH_P_WAN_PPP ideal-int +pkg syscall (linux-amd64), const ETH_P_WCCP ideal-int +pkg syscall (linux-amd64), const ETH_P_X25 ideal-int +pkg syscall (linux-amd64), const EUCLEAN Errno +pkg syscall (linux-amd64), const EUNATCH Errno +pkg syscall (linux-amd64), const EXFULL Errno +pkg syscall (linux-amd64), const FD_CLOEXEC ideal-int +pkg syscall (linux-amd64), const FD_SETSIZE ideal-int +pkg syscall (linux-amd64), const FLUSHO ideal-int +pkg syscall (linux-amd64), const F_DUPFD ideal-int +pkg syscall (linux-amd64), const F_DUPFD_CLOEXEC ideal-int +pkg syscall (linux-amd64), const F_EXLCK ideal-int +pkg syscall (linux-amd64), const F_GETFD ideal-int +pkg syscall (linux-amd64), const F_GETFL ideal-int +pkg syscall (linux-amd64), const F_GETLEASE ideal-int +pkg syscall (linux-amd64), const F_GETLK ideal-int +pkg syscall (linux-amd64), const F_GETLK64 ideal-int +pkg syscall (linux-amd64), const F_GETOWN ideal-int +pkg syscall (linux-amd64), const F_GETOWN_EX ideal-int +pkg syscall (linux-amd64), const F_GETPIPE_SZ ideal-int +pkg syscall (linux-amd64), const F_GETSIG ideal-int +pkg syscall (linux-amd64), const F_LOCK ideal-int +pkg syscall (linux-amd64), const F_NOTIFY ideal-int +pkg syscall (linux-amd64), const F_OK ideal-int +pkg syscall (linux-amd64), const F_RDLCK ideal-int +pkg syscall (linux-amd64), const F_SETFD ideal-int +pkg syscall (linux-amd64), const F_SETFL ideal-int +pkg syscall (linux-amd64), const F_SETLEASE ideal-int +pkg syscall (linux-amd64), const F_SETLK ideal-int +pkg syscall (linux-amd64), const F_SETLK64 ideal-int +pkg syscall (linux-amd64), const F_SETLKW ideal-int +pkg syscall (linux-amd64), const F_SETLKW64 ideal-int +pkg syscall (linux-amd64), const F_SETOWN ideal-int +pkg syscall (linux-amd64), const F_SETOWN_EX ideal-int +pkg syscall (linux-amd64), const F_SETPIPE_SZ ideal-int +pkg syscall (linux-amd64), const F_SETSIG ideal-int +pkg syscall (linux-amd64), const F_SHLCK ideal-int +pkg syscall (linux-amd64), const F_TEST ideal-int +pkg syscall (linux-amd64), const F_TLOCK ideal-int +pkg syscall (linux-amd64), const F_ULOCK ideal-int +pkg syscall (linux-amd64), const F_UNLCK ideal-int +pkg syscall (linux-amd64), const F_WRLCK ideal-int +pkg syscall (linux-amd64), const HUPCL ideal-int +pkg syscall (linux-amd64), const ICANON ideal-int +pkg syscall (linux-amd64), const ICRNL ideal-int +pkg syscall (linux-amd64), const IEXTEN ideal-int +pkg syscall (linux-amd64), const IFA_ADDRESS ideal-int +pkg syscall (linux-amd64), const IFA_ANYCAST ideal-int +pkg syscall (linux-amd64), const IFA_BROADCAST ideal-int +pkg syscall (linux-amd64), const IFA_CACHEINFO ideal-int +pkg syscall (linux-amd64), const IFA_F_DADFAILED ideal-int +pkg syscall (linux-amd64), const IFA_F_DEPRECATED ideal-int +pkg syscall (linux-amd64), const IFA_F_HOMEADDRESS ideal-int +pkg syscall (linux-amd64), const IFA_F_NODAD ideal-int +pkg syscall (linux-amd64), const IFA_F_OPTIMISTIC ideal-int +pkg syscall (linux-amd64), const IFA_F_PERMANENT ideal-int +pkg syscall (linux-amd64), const IFA_F_SECONDARY ideal-int +pkg syscall (linux-amd64), const IFA_F_TEMPORARY ideal-int +pkg syscall (linux-amd64), const IFA_F_TENTATIVE ideal-int +pkg syscall (linux-amd64), const IFA_LABEL ideal-int +pkg syscall (linux-amd64), const IFA_LOCAL ideal-int +pkg syscall (linux-amd64), const IFA_MAX ideal-int +pkg syscall (linux-amd64), const IFA_MULTICAST ideal-int +pkg syscall (linux-amd64), const IFA_UNSPEC ideal-int +pkg syscall (linux-amd64), const IFF_ALLMULTI ideal-int +pkg syscall (linux-amd64), const IFF_AUTOMEDIA ideal-int +pkg syscall (linux-amd64), const IFF_DEBUG ideal-int +pkg syscall (linux-amd64), const IFF_DYNAMIC ideal-int +pkg syscall (linux-amd64), const IFF_MASTER ideal-int +pkg syscall (linux-amd64), const IFF_NOARP ideal-int +pkg syscall (linux-amd64), const IFF_NOTRAILERS ideal-int +pkg syscall (linux-amd64), const IFF_NO_PI ideal-int +pkg syscall (linux-amd64), const IFF_ONE_QUEUE ideal-int +pkg syscall (linux-amd64), const IFF_POINTOPOINT ideal-int +pkg syscall (linux-amd64), const IFF_PORTSEL ideal-int +pkg syscall (linux-amd64), const IFF_PROMISC ideal-int +pkg syscall (linux-amd64), const IFF_RUNNING ideal-int +pkg syscall (linux-amd64), const IFF_SLAVE ideal-int +pkg syscall (linux-amd64), const IFF_TAP ideal-int +pkg syscall (linux-amd64), const IFF_TUN ideal-int +pkg syscall (linux-amd64), const IFF_TUN_EXCL ideal-int +pkg syscall (linux-amd64), const IFF_VNET_HDR ideal-int +pkg syscall (linux-amd64), const IFLA_ADDRESS ideal-int +pkg syscall (linux-amd64), const IFLA_BROADCAST ideal-int +pkg syscall (linux-amd64), const IFLA_COST ideal-int +pkg syscall (linux-amd64), const IFLA_IFALIAS ideal-int +pkg syscall (linux-amd64), const IFLA_IFNAME ideal-int +pkg syscall (linux-amd64), const IFLA_LINK ideal-int +pkg syscall (linux-amd64), const IFLA_LINKINFO ideal-int +pkg syscall (linux-amd64), const IFLA_LINKMODE ideal-int +pkg syscall (linux-amd64), const IFLA_MAP ideal-int +pkg syscall (linux-amd64), const IFLA_MASTER ideal-int +pkg syscall (linux-amd64), const IFLA_MAX ideal-int +pkg syscall (linux-amd64), const IFLA_MTU ideal-int +pkg syscall (linux-amd64), const IFLA_NET_NS_PID ideal-int +pkg syscall (linux-amd64), const IFLA_OPERSTATE ideal-int +pkg syscall (linux-amd64), const IFLA_PRIORITY ideal-int +pkg syscall (linux-amd64), const IFLA_PROTINFO ideal-int +pkg syscall (linux-amd64), const IFLA_QDISC ideal-int +pkg syscall (linux-amd64), const IFLA_STATS ideal-int +pkg syscall (linux-amd64), const IFLA_TXQLEN ideal-int +pkg syscall (linux-amd64), const IFLA_UNSPEC ideal-int +pkg syscall (linux-amd64), const IFLA_WEIGHT ideal-int +pkg syscall (linux-amd64), const IFLA_WIRELESS ideal-int +pkg syscall (linux-amd64), const IFNAMSIZ ideal-int +pkg syscall (linux-amd64), const IGNBRK ideal-int +pkg syscall (linux-amd64), const IGNCR ideal-int +pkg syscall (linux-amd64), const IGNPAR ideal-int +pkg syscall (linux-amd64), const IMAXBEL ideal-int +pkg syscall (linux-amd64), const INLCR ideal-int +pkg syscall (linux-amd64), const INPCK ideal-int +pkg syscall (linux-amd64), const IN_ACCESS ideal-int +pkg syscall (linux-amd64), const IN_ALL_EVENTS ideal-int +pkg syscall (linux-amd64), const IN_ATTRIB ideal-int +pkg syscall (linux-amd64), const IN_CLASSA_HOST ideal-int +pkg syscall (linux-amd64), const IN_CLASSA_MAX ideal-int +pkg syscall (linux-amd64), const IN_CLASSA_NET ideal-int +pkg syscall (linux-amd64), const IN_CLASSA_NSHIFT ideal-int +pkg syscall (linux-amd64), const IN_CLASSB_HOST ideal-int +pkg syscall (linux-amd64), const IN_CLASSB_MAX ideal-int +pkg syscall (linux-amd64), const IN_CLASSB_NET ideal-int +pkg syscall (linux-amd64), const IN_CLASSB_NSHIFT ideal-int +pkg syscall (linux-amd64), const IN_CLASSC_HOST ideal-int +pkg syscall (linux-amd64), const IN_CLASSC_NET ideal-int +pkg syscall (linux-amd64), const IN_CLASSC_NSHIFT ideal-int +pkg syscall (linux-amd64), const IN_CLOEXEC ideal-int +pkg syscall (linux-amd64), const IN_CLOSE ideal-int +pkg syscall (linux-amd64), const IN_CLOSE_NOWRITE ideal-int +pkg syscall (linux-amd64), const IN_CLOSE_WRITE ideal-int +pkg syscall (linux-amd64), const IN_CREATE ideal-int +pkg syscall (linux-amd64), const IN_DELETE ideal-int +pkg syscall (linux-amd64), const IN_DELETE_SELF ideal-int +pkg syscall (linux-amd64), const IN_DONT_FOLLOW ideal-int +pkg syscall (linux-amd64), const IN_EXCL_UNLINK ideal-int +pkg syscall (linux-amd64), const IN_IGNORED ideal-int +pkg syscall (linux-amd64), const IN_ISDIR ideal-int +pkg syscall (linux-amd64), const IN_LOOPBACKNET ideal-int +pkg syscall (linux-amd64), const IN_MASK_ADD ideal-int +pkg syscall (linux-amd64), const IN_MODIFY ideal-int +pkg syscall (linux-amd64), const IN_MOVE ideal-int +pkg syscall (linux-amd64), const IN_MOVED_FROM ideal-int +pkg syscall (linux-amd64), const IN_MOVED_TO ideal-int +pkg syscall (linux-amd64), const IN_MOVE_SELF ideal-int +pkg syscall (linux-amd64), const IN_NONBLOCK ideal-int +pkg syscall (linux-amd64), const IN_ONESHOT ideal-int +pkg syscall (linux-amd64), const IN_ONLYDIR ideal-int +pkg syscall (linux-amd64), const IN_OPEN ideal-int +pkg syscall (linux-amd64), const IN_Q_OVERFLOW ideal-int +pkg syscall (linux-amd64), const IN_UNMOUNT ideal-int +pkg syscall (linux-amd64), const IPPROTO_AH ideal-int +pkg syscall (linux-amd64), const IPPROTO_COMP ideal-int +pkg syscall (linux-amd64), const IPPROTO_DCCP ideal-int +pkg syscall (linux-amd64), const IPPROTO_DSTOPTS ideal-int +pkg syscall (linux-amd64), const IPPROTO_EGP ideal-int +pkg syscall (linux-amd64), const IPPROTO_ENCAP ideal-int +pkg syscall (linux-amd64), const IPPROTO_ESP ideal-int +pkg syscall (linux-amd64), const IPPROTO_FRAGMENT ideal-int +pkg syscall (linux-amd64), const IPPROTO_GRE ideal-int +pkg syscall (linux-amd64), const IPPROTO_HOPOPTS ideal-int +pkg syscall (linux-amd64), const IPPROTO_ICMP ideal-int +pkg syscall (linux-amd64), const IPPROTO_ICMPV6 ideal-int +pkg syscall (linux-amd64), const IPPROTO_IDP ideal-int +pkg syscall (linux-amd64), const IPPROTO_IGMP ideal-int +pkg syscall (linux-amd64), const IPPROTO_IPIP ideal-int +pkg syscall (linux-amd64), const IPPROTO_MTP ideal-int +pkg syscall (linux-amd64), const IPPROTO_NONE ideal-int +pkg syscall (linux-amd64), const IPPROTO_PIM ideal-int +pkg syscall (linux-amd64), const IPPROTO_PUP ideal-int +pkg syscall (linux-amd64), const IPPROTO_RAW ideal-int +pkg syscall (linux-amd64), const IPPROTO_ROUTING ideal-int +pkg syscall (linux-amd64), const IPPROTO_RSVP ideal-int +pkg syscall (linux-amd64), const IPPROTO_SCTP ideal-int +pkg syscall (linux-amd64), const IPPROTO_TP ideal-int +pkg syscall (linux-amd64), const IPPROTO_UDPLITE ideal-int +pkg syscall (linux-amd64), const IPV6_2292DSTOPTS ideal-int +pkg syscall (linux-amd64), const IPV6_2292HOPLIMIT ideal-int +pkg syscall (linux-amd64), const IPV6_2292HOPOPTS ideal-int +pkg syscall (linux-amd64), const IPV6_2292PKTINFO ideal-int +pkg syscall (linux-amd64), const IPV6_2292PKTOPTIONS ideal-int +pkg syscall (linux-amd64), const IPV6_2292RTHDR ideal-int +pkg syscall (linux-amd64), const IPV6_ADDRFORM ideal-int +pkg syscall (linux-amd64), const IPV6_ADD_MEMBERSHIP ideal-int +pkg syscall (linux-amd64), const IPV6_AUTHHDR ideal-int +pkg syscall (linux-amd64), const IPV6_CHECKSUM ideal-int +pkg syscall (linux-amd64), const IPV6_DROP_MEMBERSHIP ideal-int +pkg syscall (linux-amd64), const IPV6_DSTOPTS ideal-int +pkg syscall (linux-amd64), const IPV6_HOPLIMIT ideal-int +pkg syscall (linux-amd64), const IPV6_HOPOPTS ideal-int +pkg syscall (linux-amd64), const IPV6_IPSEC_POLICY ideal-int +pkg syscall (linux-amd64), const IPV6_JOIN_ANYCAST ideal-int +pkg syscall (linux-amd64), const IPV6_LEAVE_ANYCAST ideal-int +pkg syscall (linux-amd64), const IPV6_MTU ideal-int +pkg syscall (linux-amd64), const IPV6_MTU_DISCOVER ideal-int +pkg syscall (linux-amd64), const IPV6_NEXTHOP ideal-int +pkg syscall (linux-amd64), const IPV6_PKTINFO ideal-int +pkg syscall (linux-amd64), const IPV6_PMTUDISC_DO ideal-int +pkg syscall (linux-amd64), const IPV6_PMTUDISC_DONT ideal-int +pkg syscall (linux-amd64), const IPV6_PMTUDISC_PROBE ideal-int +pkg syscall (linux-amd64), const IPV6_PMTUDISC_WANT ideal-int +pkg syscall (linux-amd64), const IPV6_RECVDSTOPTS ideal-int +pkg syscall (linux-amd64), const IPV6_RECVERR ideal-int +pkg syscall (linux-amd64), const IPV6_RECVHOPLIMIT ideal-int +pkg syscall (linux-amd64), const IPV6_RECVHOPOPTS ideal-int +pkg syscall (linux-amd64), const IPV6_RECVPKTINFO ideal-int +pkg syscall (linux-amd64), const IPV6_RECVRTHDR ideal-int +pkg syscall (linux-amd64), const IPV6_RECVTCLASS ideal-int +pkg syscall (linux-amd64), const IPV6_ROUTER_ALERT ideal-int +pkg syscall (linux-amd64), const IPV6_RTHDR ideal-int +pkg syscall (linux-amd64), const IPV6_RTHDRDSTOPTS ideal-int +pkg syscall (linux-amd64), const IPV6_RTHDR_LOOSE ideal-int +pkg syscall (linux-amd64), const IPV6_RTHDR_STRICT ideal-int +pkg syscall (linux-amd64), const IPV6_RTHDR_TYPE_0 ideal-int +pkg syscall (linux-amd64), const IPV6_RXDSTOPTS ideal-int +pkg syscall (linux-amd64), const IPV6_RXHOPOPTS ideal-int +pkg syscall (linux-amd64), const IPV6_TCLASS ideal-int +pkg syscall (linux-amd64), const IPV6_XFRM_POLICY ideal-int +pkg syscall (linux-amd64), const IP_ADD_SOURCE_MEMBERSHIP ideal-int +pkg syscall (linux-amd64), const IP_BLOCK_SOURCE ideal-int +pkg syscall (linux-amd64), const IP_DEFAULT_MULTICAST_LOOP ideal-int +pkg syscall (linux-amd64), const IP_DEFAULT_MULTICAST_TTL ideal-int +pkg syscall (linux-amd64), const IP_DF ideal-int +pkg syscall (linux-amd64), const IP_DROP_SOURCE_MEMBERSHIP ideal-int +pkg syscall (linux-amd64), const IP_FREEBIND ideal-int +pkg syscall (linux-amd64), const IP_HDRINCL ideal-int +pkg syscall (linux-amd64), const IP_IPSEC_POLICY ideal-int +pkg syscall (linux-amd64), const IP_MAXPACKET ideal-int +pkg syscall (linux-amd64), const IP_MAX_MEMBERSHIPS ideal-int +pkg syscall (linux-amd64), const IP_MF ideal-int +pkg syscall (linux-amd64), const IP_MINTTL ideal-int +pkg syscall (linux-amd64), const IP_MSFILTER ideal-int +pkg syscall (linux-amd64), const IP_MSS ideal-int +pkg syscall (linux-amd64), const IP_MTU ideal-int +pkg syscall (linux-amd64), const IP_MTU_DISCOVER ideal-int +pkg syscall (linux-amd64), const IP_OFFMASK ideal-int +pkg syscall (linux-amd64), const IP_OPTIONS ideal-int +pkg syscall (linux-amd64), const IP_ORIGDSTADDR ideal-int +pkg syscall (linux-amd64), const IP_PASSSEC ideal-int +pkg syscall (linux-amd64), const IP_PKTINFO ideal-int +pkg syscall (linux-amd64), const IP_PKTOPTIONS ideal-int +pkg syscall (linux-amd64), const IP_PMTUDISC ideal-int +pkg syscall (linux-amd64), const IP_PMTUDISC_DO ideal-int +pkg syscall (linux-amd64), const IP_PMTUDISC_DONT ideal-int +pkg syscall (linux-amd64), const IP_PMTUDISC_PROBE ideal-int +pkg syscall (linux-amd64), const IP_PMTUDISC_WANT ideal-int +pkg syscall (linux-amd64), const IP_RECVERR ideal-int +pkg syscall (linux-amd64), const IP_RECVOPTS ideal-int +pkg syscall (linux-amd64), const IP_RECVORIGDSTADDR ideal-int +pkg syscall (linux-amd64), const IP_RECVRETOPTS ideal-int +pkg syscall (linux-amd64), const IP_RECVTOS ideal-int +pkg syscall (linux-amd64), const IP_RECVTTL ideal-int +pkg syscall (linux-amd64), const IP_RETOPTS ideal-int +pkg syscall (linux-amd64), const IP_RF ideal-int +pkg syscall (linux-amd64), const IP_ROUTER_ALERT ideal-int +pkg syscall (linux-amd64), const IP_TRANSPARENT ideal-int +pkg syscall (linux-amd64), const IP_UNBLOCK_SOURCE ideal-int +pkg syscall (linux-amd64), const IP_XFRM_POLICY ideal-int +pkg syscall (linux-amd64), const ISIG ideal-int +pkg syscall (linux-amd64), const ISTRIP ideal-int +pkg syscall (linux-amd64), const IUCLC ideal-int +pkg syscall (linux-amd64), const IUTF8 ideal-int +pkg syscall (linux-amd64), const IXANY ideal-int +pkg syscall (linux-amd64), const IXOFF ideal-int +pkg syscall (linux-amd64), const IXON ideal-int +pkg syscall (linux-amd64), const LINUX_REBOOT_CMD_CAD_OFF ideal-int +pkg syscall (linux-amd64), const LINUX_REBOOT_CMD_CAD_ON ideal-int +pkg syscall (linux-amd64), const LINUX_REBOOT_CMD_HALT ideal-int +pkg syscall (linux-amd64), const LINUX_REBOOT_CMD_KEXEC ideal-int +pkg syscall (linux-amd64), const LINUX_REBOOT_CMD_POWER_OFF ideal-int +pkg syscall (linux-amd64), const LINUX_REBOOT_CMD_RESTART ideal-int +pkg syscall (linux-amd64), const LINUX_REBOOT_CMD_RESTART2 ideal-int +pkg syscall (linux-amd64), const LINUX_REBOOT_CMD_SW_SUSPEND ideal-int +pkg syscall (linux-amd64), const LINUX_REBOOT_MAGIC1 ideal-int +pkg syscall (linux-amd64), const LINUX_REBOOT_MAGIC2 ideal-int +pkg syscall (linux-amd64), const LOCK_EX ideal-int +pkg syscall (linux-amd64), const LOCK_NB ideal-int +pkg syscall (linux-amd64), const LOCK_SH ideal-int +pkg syscall (linux-amd64), const LOCK_UN ideal-int +pkg syscall (linux-amd64), const MADV_DOFORK ideal-int +pkg syscall (linux-amd64), const MADV_DONTFORK ideal-int +pkg syscall (linux-amd64), const MADV_DONTNEED ideal-int +pkg syscall (linux-amd64), const MADV_HUGEPAGE ideal-int +pkg syscall (linux-amd64), const MADV_HWPOISON ideal-int +pkg syscall (linux-amd64), const MADV_MERGEABLE ideal-int +pkg syscall (linux-amd64), const MADV_NOHUGEPAGE ideal-int +pkg syscall (linux-amd64), const MADV_NORMAL ideal-int +pkg syscall (linux-amd64), const MADV_RANDOM ideal-int +pkg syscall (linux-amd64), const MADV_REMOVE ideal-int +pkg syscall (linux-amd64), const MADV_SEQUENTIAL ideal-int +pkg syscall (linux-amd64), const MADV_UNMERGEABLE ideal-int +pkg syscall (linux-amd64), const MADV_WILLNEED ideal-int +pkg syscall (linux-amd64), const MAP_32BIT ideal-int +pkg syscall (linux-amd64), const MAP_ANON ideal-int +pkg syscall (linux-amd64), const MAP_ANONYMOUS ideal-int +pkg syscall (linux-amd64), const MAP_DENYWRITE ideal-int +pkg syscall (linux-amd64), const MAP_EXECUTABLE ideal-int +pkg syscall (linux-amd64), const MAP_FILE ideal-int +pkg syscall (linux-amd64), const MAP_FIXED ideal-int +pkg syscall (linux-amd64), const MAP_GROWSDOWN ideal-int +pkg syscall (linux-amd64), const MAP_HUGETLB ideal-int +pkg syscall (linux-amd64), const MAP_LOCKED ideal-int +pkg syscall (linux-amd64), const MAP_NONBLOCK ideal-int +pkg syscall (linux-amd64), const MAP_NORESERVE ideal-int +pkg syscall (linux-amd64), const MAP_POPULATE ideal-int +pkg syscall (linux-amd64), const MAP_PRIVATE ideal-int +pkg syscall (linux-amd64), const MAP_SHARED ideal-int +pkg syscall (linux-amd64), const MAP_STACK ideal-int +pkg syscall (linux-amd64), const MAP_TYPE ideal-int +pkg syscall (linux-amd64), const MCL_CURRENT ideal-int +pkg syscall (linux-amd64), const MCL_FUTURE ideal-int +pkg syscall (linux-amd64), const MNT_DETACH ideal-int +pkg syscall (linux-amd64), const MNT_EXPIRE ideal-int +pkg syscall (linux-amd64), const MNT_FORCE ideal-int +pkg syscall (linux-amd64), const MSG_CMSG_CLOEXEC ideal-int +pkg syscall (linux-amd64), const MSG_CONFIRM ideal-int +pkg syscall (linux-amd64), const MSG_CTRUNC ideal-int +pkg syscall (linux-amd64), const MSG_DONTROUTE ideal-int +pkg syscall (linux-amd64), const MSG_DONTWAIT ideal-int +pkg syscall (linux-amd64), const MSG_EOR ideal-int +pkg syscall (linux-amd64), const MSG_ERRQUEUE ideal-int +pkg syscall (linux-amd64), const MSG_FIN ideal-int +pkg syscall (linux-amd64), const MSG_MORE ideal-int +pkg syscall (linux-amd64), const MSG_NOSIGNAL ideal-int +pkg syscall (linux-amd64), const MSG_OOB ideal-int +pkg syscall (linux-amd64), const MSG_PEEK ideal-int +pkg syscall (linux-amd64), const MSG_PROXY ideal-int +pkg syscall (linux-amd64), const MSG_RST ideal-int +pkg syscall (linux-amd64), const MSG_SYN ideal-int +pkg syscall (linux-amd64), const MSG_TRUNC ideal-int +pkg syscall (linux-amd64), const MSG_TRYHARD ideal-int +pkg syscall (linux-amd64), const MSG_WAITALL ideal-int +pkg syscall (linux-amd64), const MSG_WAITFORONE ideal-int +pkg syscall (linux-amd64), const MS_ACTIVE ideal-int +pkg syscall (linux-amd64), const MS_ASYNC ideal-int +pkg syscall (linux-amd64), const MS_BIND ideal-int +pkg syscall (linux-amd64), const MS_DIRSYNC ideal-int +pkg syscall (linux-amd64), const MS_INVALIDATE ideal-int +pkg syscall (linux-amd64), const MS_I_VERSION ideal-int +pkg syscall (linux-amd64), const MS_KERNMOUNT ideal-int +pkg syscall (linux-amd64), const MS_MANDLOCK ideal-int +pkg syscall (linux-amd64), const MS_MGC_MSK ideal-int +pkg syscall (linux-amd64), const MS_MGC_VAL ideal-int +pkg syscall (linux-amd64), const MS_MOVE ideal-int +pkg syscall (linux-amd64), const MS_NOATIME ideal-int +pkg syscall (linux-amd64), const MS_NODEV ideal-int +pkg syscall (linux-amd64), const MS_NODIRATIME ideal-int +pkg syscall (linux-amd64), const MS_NOEXEC ideal-int +pkg syscall (linux-amd64), const MS_NOSUID ideal-int +pkg syscall (linux-amd64), const MS_NOUSER ideal-int +pkg syscall (linux-amd64), const MS_POSIXACL ideal-int +pkg syscall (linux-amd64), const MS_PRIVATE ideal-int +pkg syscall (linux-amd64), const MS_RDONLY ideal-int +pkg syscall (linux-amd64), const MS_REC ideal-int +pkg syscall (linux-amd64), const MS_RELATIME ideal-int +pkg syscall (linux-amd64), const MS_REMOUNT ideal-int +pkg syscall (linux-amd64), const MS_RMT_MASK ideal-int +pkg syscall (linux-amd64), const MS_SHARED ideal-int +pkg syscall (linux-amd64), const MS_SILENT ideal-int +pkg syscall (linux-amd64), const MS_SLAVE ideal-int +pkg syscall (linux-amd64), const MS_STRICTATIME ideal-int +pkg syscall (linux-amd64), const MS_SYNC ideal-int +pkg syscall (linux-amd64), const MS_SYNCHRONOUS ideal-int +pkg syscall (linux-amd64), const MS_UNBINDABLE ideal-int +pkg syscall (linux-amd64), const NAME_MAX ideal-int +pkg syscall (linux-amd64), const NETLINK_ADD_MEMBERSHIP ideal-int +pkg syscall (linux-amd64), const NETLINK_AUDIT ideal-int +pkg syscall (linux-amd64), const NETLINK_BROADCAST_ERROR ideal-int +pkg syscall (linux-amd64), const NETLINK_CONNECTOR ideal-int +pkg syscall (linux-amd64), const NETLINK_DNRTMSG ideal-int +pkg syscall (linux-amd64), const NETLINK_DROP_MEMBERSHIP ideal-int +pkg syscall (linux-amd64), const NETLINK_ECRYPTFS ideal-int +pkg syscall (linux-amd64), const NETLINK_FIB_LOOKUP ideal-int +pkg syscall (linux-amd64), const NETLINK_FIREWALL ideal-int +pkg syscall (linux-amd64), const NETLINK_GENERIC ideal-int +pkg syscall (linux-amd64), const NETLINK_INET_DIAG ideal-int +pkg syscall (linux-amd64), const NETLINK_IP6_FW ideal-int +pkg syscall (linux-amd64), const NETLINK_ISCSI ideal-int +pkg syscall (linux-amd64), const NETLINK_KOBJECT_UEVENT ideal-int +pkg syscall (linux-amd64), const NETLINK_NETFILTER ideal-int +pkg syscall (linux-amd64), const NETLINK_NFLOG ideal-int +pkg syscall (linux-amd64), const NETLINK_NO_ENOBUFS ideal-int +pkg syscall (linux-amd64), const NETLINK_PKTINFO ideal-int +pkg syscall (linux-amd64), const NETLINK_ROUTE ideal-int +pkg syscall (linux-amd64), const NETLINK_SCSITRANSPORT ideal-int +pkg syscall (linux-amd64), const NETLINK_SELINUX ideal-int +pkg syscall (linux-amd64), const NETLINK_UNUSED ideal-int +pkg syscall (linux-amd64), const NETLINK_USERSOCK ideal-int +pkg syscall (linux-amd64), const NETLINK_XFRM ideal-int +pkg syscall (linux-amd64), const NLA_ALIGNTO ideal-int +pkg syscall (linux-amd64), const NLA_F_NESTED ideal-int +pkg syscall (linux-amd64), const NLA_F_NET_BYTEORDER ideal-int +pkg syscall (linux-amd64), const NLA_HDRLEN ideal-int +pkg syscall (linux-amd64), const NLMSG_ALIGNTO ideal-int +pkg syscall (linux-amd64), const NLMSG_DONE ideal-int +pkg syscall (linux-amd64), const NLMSG_ERROR ideal-int +pkg syscall (linux-amd64), const NLMSG_HDRLEN ideal-int +pkg syscall (linux-amd64), const NLMSG_MIN_TYPE ideal-int +pkg syscall (linux-amd64), const NLMSG_NOOP ideal-int +pkg syscall (linux-amd64), const NLMSG_OVERRUN ideal-int +pkg syscall (linux-amd64), const NLM_F_ACK ideal-int +pkg syscall (linux-amd64), const NLM_F_APPEND ideal-int +pkg syscall (linux-amd64), const NLM_F_ATOMIC ideal-int +pkg syscall (linux-amd64), const NLM_F_CREATE ideal-int +pkg syscall (linux-amd64), const NLM_F_DUMP ideal-int +pkg syscall (linux-amd64), const NLM_F_ECHO ideal-int +pkg syscall (linux-amd64), const NLM_F_EXCL ideal-int +pkg syscall (linux-amd64), const NLM_F_MATCH ideal-int +pkg syscall (linux-amd64), const NLM_F_MULTI ideal-int +pkg syscall (linux-amd64), const NLM_F_REPLACE ideal-int +pkg syscall (linux-amd64), const NLM_F_REQUEST ideal-int +pkg syscall (linux-amd64), const NLM_F_ROOT ideal-int +pkg syscall (linux-amd64), const NOFLSH ideal-int +pkg syscall (linux-amd64), const OCRNL ideal-int +pkg syscall (linux-amd64), const OFDEL ideal-int +pkg syscall (linux-amd64), const OFILL ideal-int +pkg syscall (linux-amd64), const OLCUC ideal-int +pkg syscall (linux-amd64), const ONLCR ideal-int +pkg syscall (linux-amd64), const ONLRET ideal-int +pkg syscall (linux-amd64), const ONOCR ideal-int +pkg syscall (linux-amd64), const OPOST ideal-int +pkg syscall (linux-amd64), const O_ACCMODE ideal-int +pkg syscall (linux-amd64), const O_DIRECT ideal-int +pkg syscall (linux-amd64), const O_DIRECTORY ideal-int +pkg syscall (linux-amd64), const O_DSYNC ideal-int +pkg syscall (linux-amd64), const O_FSYNC ideal-int +pkg syscall (linux-amd64), const O_LARGEFILE ideal-int +pkg syscall (linux-amd64), const O_NDELAY ideal-int +pkg syscall (linux-amd64), const O_NOATIME ideal-int +pkg syscall (linux-amd64), const O_NOFOLLOW ideal-int +pkg syscall (linux-amd64), const O_RSYNC ideal-int +pkg syscall (linux-amd64), const PACKET_ADD_MEMBERSHIP ideal-int +pkg syscall (linux-amd64), const PACKET_BROADCAST ideal-int +pkg syscall (linux-amd64), const PACKET_DROP_MEMBERSHIP ideal-int +pkg syscall (linux-amd64), const PACKET_FASTROUTE ideal-int +pkg syscall (linux-amd64), const PACKET_HOST ideal-int +pkg syscall (linux-amd64), const PACKET_LOOPBACK ideal-int +pkg syscall (linux-amd64), const PACKET_MR_ALLMULTI ideal-int +pkg syscall (linux-amd64), const PACKET_MR_MULTICAST ideal-int +pkg syscall (linux-amd64), const PACKET_MR_PROMISC ideal-int +pkg syscall (linux-amd64), const PACKET_MULTICAST ideal-int +pkg syscall (linux-amd64), const PACKET_OTHERHOST ideal-int +pkg syscall (linux-amd64), const PACKET_OUTGOING ideal-int +pkg syscall (linux-amd64), const PACKET_RECV_OUTPUT ideal-int +pkg syscall (linux-amd64), const PACKET_RX_RING ideal-int +pkg syscall (linux-amd64), const PACKET_STATISTICS ideal-int +pkg syscall (linux-amd64), const PARENB ideal-int +pkg syscall (linux-amd64), const PARMRK ideal-int +pkg syscall (linux-amd64), const PARODD ideal-int +pkg syscall (linux-amd64), const PENDIN ideal-int +pkg syscall (linux-amd64), const PROT_EXEC ideal-int +pkg syscall (linux-amd64), const PROT_GROWSDOWN ideal-int +pkg syscall (linux-amd64), const PROT_GROWSUP ideal-int +pkg syscall (linux-amd64), const PROT_NONE ideal-int +pkg syscall (linux-amd64), const PROT_READ ideal-int +pkg syscall (linux-amd64), const PROT_WRITE ideal-int +pkg syscall (linux-amd64), const PR_CAPBSET_DROP ideal-int +pkg syscall (linux-amd64), const PR_CAPBSET_READ ideal-int +pkg syscall (linux-amd64), const PR_ENDIAN_BIG ideal-int +pkg syscall (linux-amd64), const PR_ENDIAN_LITTLE ideal-int +pkg syscall (linux-amd64), const PR_ENDIAN_PPC_LITTLE ideal-int +pkg syscall (linux-amd64), const PR_FPEMU_NOPRINT ideal-int +pkg syscall (linux-amd64), const PR_FPEMU_SIGFPE ideal-int +pkg syscall (linux-amd64), const PR_FP_EXC_ASYNC ideal-int +pkg syscall (linux-amd64), const PR_FP_EXC_DISABLED ideal-int +pkg syscall (linux-amd64), const PR_FP_EXC_DIV ideal-int +pkg syscall (linux-amd64), const PR_FP_EXC_INV ideal-int +pkg syscall (linux-amd64), const PR_FP_EXC_NONRECOV ideal-int +pkg syscall (linux-amd64), const PR_FP_EXC_OVF ideal-int +pkg syscall (linux-amd64), const PR_FP_EXC_PRECISE ideal-int +pkg syscall (linux-amd64), const PR_FP_EXC_RES ideal-int +pkg syscall (linux-amd64), const PR_FP_EXC_SW_ENABLE ideal-int +pkg syscall (linux-amd64), const PR_FP_EXC_UND ideal-int +pkg syscall (linux-amd64), const PR_GET_DUMPABLE ideal-int +pkg syscall (linux-amd64), const PR_GET_ENDIAN ideal-int +pkg syscall (linux-amd64), const PR_GET_FPEMU ideal-int +pkg syscall (linux-amd64), const PR_GET_FPEXC ideal-int +pkg syscall (linux-amd64), const PR_GET_KEEPCAPS ideal-int +pkg syscall (linux-amd64), const PR_GET_NAME ideal-int +pkg syscall (linux-amd64), const PR_GET_PDEATHSIG ideal-int +pkg syscall (linux-amd64), const PR_GET_SECCOMP ideal-int +pkg syscall (linux-amd64), const PR_GET_SECUREBITS ideal-int +pkg syscall (linux-amd64), const PR_GET_TIMERSLACK ideal-int +pkg syscall (linux-amd64), const PR_GET_TIMING ideal-int +pkg syscall (linux-amd64), const PR_GET_TSC ideal-int +pkg syscall (linux-amd64), const PR_GET_UNALIGN ideal-int +pkg syscall (linux-amd64), const PR_MCE_KILL ideal-int +pkg syscall (linux-amd64), const PR_MCE_KILL_CLEAR ideal-int +pkg syscall (linux-amd64), const PR_MCE_KILL_DEFAULT ideal-int +pkg syscall (linux-amd64), const PR_MCE_KILL_EARLY ideal-int +pkg syscall (linux-amd64), const PR_MCE_KILL_GET ideal-int +pkg syscall (linux-amd64), const PR_MCE_KILL_LATE ideal-int +pkg syscall (linux-amd64), const PR_MCE_KILL_SET ideal-int +pkg syscall (linux-amd64), const PR_SET_DUMPABLE ideal-int +pkg syscall (linux-amd64), const PR_SET_ENDIAN ideal-int +pkg syscall (linux-amd64), const PR_SET_FPEMU ideal-int +pkg syscall (linux-amd64), const PR_SET_FPEXC ideal-int +pkg syscall (linux-amd64), const PR_SET_KEEPCAPS ideal-int +pkg syscall (linux-amd64), const PR_SET_NAME ideal-int +pkg syscall (linux-amd64), const PR_SET_PDEATHSIG ideal-int +pkg syscall (linux-amd64), const PR_SET_PTRACER ideal-int +pkg syscall (linux-amd64), const PR_SET_SECCOMP ideal-int +pkg syscall (linux-amd64), const PR_SET_SECUREBITS ideal-int +pkg syscall (linux-amd64), const PR_SET_TIMERSLACK ideal-int +pkg syscall (linux-amd64), const PR_SET_TIMING ideal-int +pkg syscall (linux-amd64), const PR_SET_TSC ideal-int +pkg syscall (linux-amd64), const PR_SET_UNALIGN ideal-int +pkg syscall (linux-amd64), const PR_TASK_PERF_EVENTS_DISABLE ideal-int +pkg syscall (linux-amd64), const PR_TASK_PERF_EVENTS_ENABLE ideal-int +pkg syscall (linux-amd64), const PR_TIMING_STATISTICAL ideal-int +pkg syscall (linux-amd64), const PR_TIMING_TIMESTAMP ideal-int +pkg syscall (linux-amd64), const PR_TSC_ENABLE ideal-int +pkg syscall (linux-amd64), const PR_TSC_SIGSEGV ideal-int +pkg syscall (linux-amd64), const PR_UNALIGN_NOPRINT ideal-int +pkg syscall (linux-amd64), const PR_UNALIGN_SIGBUS ideal-int +pkg syscall (linux-amd64), const PTRACE_ARCH_PRCTL ideal-int +pkg syscall (linux-amd64), const PTRACE_ATTACH ideal-int +pkg syscall (linux-amd64), const PTRACE_CONT ideal-int +pkg syscall (linux-amd64), const PTRACE_DETACH ideal-int +pkg syscall (linux-amd64), const PTRACE_EVENT_CLONE ideal-int +pkg syscall (linux-amd64), const PTRACE_EVENT_EXEC ideal-int +pkg syscall (linux-amd64), const PTRACE_EVENT_EXIT ideal-int +pkg syscall (linux-amd64), const PTRACE_EVENT_FORK ideal-int +pkg syscall (linux-amd64), const PTRACE_EVENT_VFORK ideal-int +pkg syscall (linux-amd64), const PTRACE_EVENT_VFORK_DONE ideal-int +pkg syscall (linux-amd64), const PTRACE_GETEVENTMSG ideal-int +pkg syscall (linux-amd64), const PTRACE_GETFPREGS ideal-int +pkg syscall (linux-amd64), const PTRACE_GETFPXREGS ideal-int +pkg syscall (linux-amd64), const PTRACE_GETREGS ideal-int +pkg syscall (linux-amd64), const PTRACE_GETREGSET ideal-int +pkg syscall (linux-amd64), const PTRACE_GETSIGINFO ideal-int +pkg syscall (linux-amd64), const PTRACE_GET_THREAD_AREA ideal-int +pkg syscall (linux-amd64), const PTRACE_KILL ideal-int +pkg syscall (linux-amd64), const PTRACE_OLDSETOPTIONS ideal-int +pkg syscall (linux-amd64), const PTRACE_O_MASK ideal-int +pkg syscall (linux-amd64), const PTRACE_O_TRACECLONE ideal-int +pkg syscall (linux-amd64), const PTRACE_O_TRACEEXEC ideal-int +pkg syscall (linux-amd64), const PTRACE_O_TRACEEXIT ideal-int +pkg syscall (linux-amd64), const PTRACE_O_TRACEFORK ideal-int +pkg syscall (linux-amd64), const PTRACE_O_TRACESYSGOOD ideal-int +pkg syscall (linux-amd64), const PTRACE_O_TRACEVFORK ideal-int +pkg syscall (linux-amd64), const PTRACE_O_TRACEVFORKDONE ideal-int +pkg syscall (linux-amd64), const PTRACE_PEEKDATA ideal-int +pkg syscall (linux-amd64), const PTRACE_PEEKTEXT ideal-int +pkg syscall (linux-amd64), const PTRACE_PEEKUSR ideal-int +pkg syscall (linux-amd64), const PTRACE_POKEDATA ideal-int +pkg syscall (linux-amd64), const PTRACE_POKETEXT ideal-int +pkg syscall (linux-amd64), const PTRACE_POKEUSR ideal-int +pkg syscall (linux-amd64), const PTRACE_SETFPREGS ideal-int +pkg syscall (linux-amd64), const PTRACE_SETFPXREGS ideal-int +pkg syscall (linux-amd64), const PTRACE_SETOPTIONS ideal-int +pkg syscall (linux-amd64), const PTRACE_SETREGS ideal-int +pkg syscall (linux-amd64), const PTRACE_SETREGSET ideal-int +pkg syscall (linux-amd64), const PTRACE_SETSIGINFO ideal-int +pkg syscall (linux-amd64), const PTRACE_SET_THREAD_AREA ideal-int +pkg syscall (linux-amd64), const PTRACE_SINGLEBLOCK ideal-int +pkg syscall (linux-amd64), const PTRACE_SINGLESTEP ideal-int +pkg syscall (linux-amd64), const PTRACE_SYSCALL ideal-int +pkg syscall (linux-amd64), const PTRACE_SYSEMU ideal-int +pkg syscall (linux-amd64), const PTRACE_SYSEMU_SINGLESTEP ideal-int +pkg syscall (linux-amd64), const PTRACE_TRACEME ideal-int +pkg syscall (linux-amd64), const PathMax ideal-int +pkg syscall (linux-amd64), const RLIMIT_AS ideal-int +pkg syscall (linux-amd64), const RLIMIT_CORE ideal-int +pkg syscall (linux-amd64), const RLIMIT_CPU ideal-int +pkg syscall (linux-amd64), const RLIMIT_DATA ideal-int +pkg syscall (linux-amd64), const RLIMIT_FSIZE ideal-int +pkg syscall (linux-amd64), const RLIMIT_NOFILE ideal-int +pkg syscall (linux-amd64), const RLIMIT_STACK ideal-int +pkg syscall (linux-amd64), const RLIM_INFINITY ideal-int +pkg syscall (linux-amd64), const RTAX_ADVMSS ideal-int +pkg syscall (linux-amd64), const RTAX_CWND ideal-int +pkg syscall (linux-amd64), const RTAX_FEATURES ideal-int +pkg syscall (linux-amd64), const RTAX_FEATURE_ALLFRAG ideal-int +pkg syscall (linux-amd64), const RTAX_FEATURE_ECN ideal-int +pkg syscall (linux-amd64), const RTAX_FEATURE_SACK ideal-int +pkg syscall (linux-amd64), const RTAX_FEATURE_TIMESTAMP ideal-int +pkg syscall (linux-amd64), const RTAX_HOPLIMIT ideal-int +pkg syscall (linux-amd64), const RTAX_INITCWND ideal-int +pkg syscall (linux-amd64), const RTAX_INITRWND ideal-int +pkg syscall (linux-amd64), const RTAX_LOCK ideal-int +pkg syscall (linux-amd64), const RTAX_MAX ideal-int +pkg syscall (linux-amd64), const RTAX_MTU ideal-int +pkg syscall (linux-amd64), const RTAX_REORDERING ideal-int +pkg syscall (linux-amd64), const RTAX_RTO_MIN ideal-int +pkg syscall (linux-amd64), const RTAX_RTT ideal-int +pkg syscall (linux-amd64), const RTAX_RTTVAR ideal-int +pkg syscall (linux-amd64), const RTAX_SSTHRESH ideal-int +pkg syscall (linux-amd64), const RTAX_UNSPEC ideal-int +pkg syscall (linux-amd64), const RTAX_WINDOW ideal-int +pkg syscall (linux-amd64), const RTA_ALIGNTO ideal-int +pkg syscall (linux-amd64), const RTA_CACHEINFO ideal-int +pkg syscall (linux-amd64), const RTA_DST ideal-int +pkg syscall (linux-amd64), const RTA_FLOW ideal-int +pkg syscall (linux-amd64), const RTA_GATEWAY ideal-int +pkg syscall (linux-amd64), const RTA_IIF ideal-int +pkg syscall (linux-amd64), const RTA_MAX ideal-int +pkg syscall (linux-amd64), const RTA_METRICS ideal-int +pkg syscall (linux-amd64), const RTA_MULTIPATH ideal-int +pkg syscall (linux-amd64), const RTA_OIF ideal-int +pkg syscall (linux-amd64), const RTA_PREFSRC ideal-int +pkg syscall (linux-amd64), const RTA_PRIORITY ideal-int +pkg syscall (linux-amd64), const RTA_SRC ideal-int +pkg syscall (linux-amd64), const RTA_TABLE ideal-int +pkg syscall (linux-amd64), const RTA_UNSPEC ideal-int +pkg syscall (linux-amd64), const RTCF_DIRECTSRC ideal-int +pkg syscall (linux-amd64), const RTCF_DOREDIRECT ideal-int +pkg syscall (linux-amd64), const RTCF_LOG ideal-int +pkg syscall (linux-amd64), const RTCF_MASQ ideal-int +pkg syscall (linux-amd64), const RTCF_NAT ideal-int +pkg syscall (linux-amd64), const RTCF_VALVE ideal-int +pkg syscall (linux-amd64), const RTF_ADDRCLASSMASK ideal-int +pkg syscall (linux-amd64), const RTF_ADDRCONF ideal-int +pkg syscall (linux-amd64), const RTF_ALLONLINK ideal-int +pkg syscall (linux-amd64), const RTF_BROADCAST ideal-int +pkg syscall (linux-amd64), const RTF_CACHE ideal-int +pkg syscall (linux-amd64), const RTF_DEFAULT ideal-int +pkg syscall (linux-amd64), const RTF_DYNAMIC ideal-int +pkg syscall (linux-amd64), const RTF_FLOW ideal-int +pkg syscall (linux-amd64), const RTF_GATEWAY ideal-int +pkg syscall (linux-amd64), const RTF_HOST ideal-int +pkg syscall (linux-amd64), const RTF_INTERFACE ideal-int +pkg syscall (linux-amd64), const RTF_IRTT ideal-int +pkg syscall (linux-amd64), const RTF_LINKRT ideal-int +pkg syscall (linux-amd64), const RTF_LOCAL ideal-int +pkg syscall (linux-amd64), const RTF_MODIFIED ideal-int +pkg syscall (linux-amd64), const RTF_MSS ideal-int +pkg syscall (linux-amd64), const RTF_MTU ideal-int +pkg syscall (linux-amd64), const RTF_MULTICAST ideal-int +pkg syscall (linux-amd64), const RTF_NAT ideal-int +pkg syscall (linux-amd64), const RTF_NOFORWARD ideal-int +pkg syscall (linux-amd64), const RTF_NONEXTHOP ideal-int +pkg syscall (linux-amd64), const RTF_NOPMTUDISC ideal-int +pkg syscall (linux-amd64), const RTF_POLICY ideal-int +pkg syscall (linux-amd64), const RTF_REINSTATE ideal-int +pkg syscall (linux-amd64), const RTF_REJECT ideal-int +pkg syscall (linux-amd64), const RTF_STATIC ideal-int +pkg syscall (linux-amd64), const RTF_THROW ideal-int +pkg syscall (linux-amd64), const RTF_UP ideal-int +pkg syscall (linux-amd64), const RTF_WINDOW ideal-int +pkg syscall (linux-amd64), const RTF_XRESOLVE ideal-int +pkg syscall (linux-amd64), const RTM_BASE ideal-int +pkg syscall (linux-amd64), const RTM_DELACTION ideal-int +pkg syscall (linux-amd64), const RTM_DELADDR ideal-int +pkg syscall (linux-amd64), const RTM_DELADDRLABEL ideal-int +pkg syscall (linux-amd64), const RTM_DELLINK ideal-int +pkg syscall (linux-amd64), const RTM_DELNEIGH ideal-int +pkg syscall (linux-amd64), const RTM_DELQDISC ideal-int +pkg syscall (linux-amd64), const RTM_DELROUTE ideal-int +pkg syscall (linux-amd64), const RTM_DELRULE ideal-int +pkg syscall (linux-amd64), const RTM_DELTCLASS ideal-int +pkg syscall (linux-amd64), const RTM_DELTFILTER ideal-int +pkg syscall (linux-amd64), const RTM_F_CLONED ideal-int +pkg syscall (linux-amd64), const RTM_F_EQUALIZE ideal-int +pkg syscall (linux-amd64), const RTM_F_NOTIFY ideal-int +pkg syscall (linux-amd64), const RTM_F_PREFIX ideal-int +pkg syscall (linux-amd64), const RTM_GETACTION ideal-int +pkg syscall (linux-amd64), const RTM_GETADDR ideal-int +pkg syscall (linux-amd64), const RTM_GETADDRLABEL ideal-int +pkg syscall (linux-amd64), const RTM_GETANYCAST ideal-int +pkg syscall (linux-amd64), const RTM_GETDCB ideal-int +pkg syscall (linux-amd64), const RTM_GETLINK ideal-int +pkg syscall (linux-amd64), const RTM_GETMULTICAST ideal-int +pkg syscall (linux-amd64), const RTM_GETNEIGH ideal-int +pkg syscall (linux-amd64), const RTM_GETNEIGHTBL ideal-int +pkg syscall (linux-amd64), const RTM_GETQDISC ideal-int +pkg syscall (linux-amd64), const RTM_GETROUTE ideal-int +pkg syscall (linux-amd64), const RTM_GETRULE ideal-int +pkg syscall (linux-amd64), const RTM_GETTCLASS ideal-int +pkg syscall (linux-amd64), const RTM_GETTFILTER ideal-int +pkg syscall (linux-amd64), const RTM_MAX ideal-int +pkg syscall (linux-amd64), const RTM_NEWACTION ideal-int +pkg syscall (linux-amd64), const RTM_NEWADDR ideal-int +pkg syscall (linux-amd64), const RTM_NEWADDRLABEL ideal-int +pkg syscall (linux-amd64), const RTM_NEWLINK ideal-int +pkg syscall (linux-amd64), const RTM_NEWNDUSEROPT ideal-int +pkg syscall (linux-amd64), const RTM_NEWNEIGH ideal-int +pkg syscall (linux-amd64), const RTM_NEWNEIGHTBL ideal-int +pkg syscall (linux-amd64), const RTM_NEWPREFIX ideal-int +pkg syscall (linux-amd64), const RTM_NEWQDISC ideal-int +pkg syscall (linux-amd64), const RTM_NEWROUTE ideal-int +pkg syscall (linux-amd64), const RTM_NEWRULE ideal-int +pkg syscall (linux-amd64), const RTM_NEWTCLASS ideal-int +pkg syscall (linux-amd64), const RTM_NEWTFILTER ideal-int +pkg syscall (linux-amd64), const RTM_NR_FAMILIES ideal-int +pkg syscall (linux-amd64), const RTM_NR_MSGTYPES ideal-int +pkg syscall (linux-amd64), const RTM_SETDCB ideal-int +pkg syscall (linux-amd64), const RTM_SETLINK ideal-int +pkg syscall (linux-amd64), const RTM_SETNEIGHTBL ideal-int +pkg syscall (linux-amd64), const RTNH_ALIGNTO ideal-int +pkg syscall (linux-amd64), const RTNH_F_DEAD ideal-int +pkg syscall (linux-amd64), const RTNH_F_ONLINK ideal-int +pkg syscall (linux-amd64), const RTNH_F_PERVASIVE ideal-int +pkg syscall (linux-amd64), const RTN_ANYCAST ideal-int +pkg syscall (linux-amd64), const RTN_BLACKHOLE ideal-int +pkg syscall (linux-amd64), const RTN_BROADCAST ideal-int +pkg syscall (linux-amd64), const RTN_LOCAL ideal-int +pkg syscall (linux-amd64), const RTN_MAX ideal-int +pkg syscall (linux-amd64), const RTN_MULTICAST ideal-int +pkg syscall (linux-amd64), const RTN_NAT ideal-int +pkg syscall (linux-amd64), const RTN_PROHIBIT ideal-int +pkg syscall (linux-amd64), const RTN_THROW ideal-int +pkg syscall (linux-amd64), const RTN_UNICAST ideal-int +pkg syscall (linux-amd64), const RTN_UNREACHABLE ideal-int +pkg syscall (linux-amd64), const RTN_UNSPEC ideal-int +pkg syscall (linux-amd64), const RTN_XRESOLVE ideal-int +pkg syscall (linux-amd64), const RTPROT_BIRD ideal-int +pkg syscall (linux-amd64), const RTPROT_BOOT ideal-int +pkg syscall (linux-amd64), const RTPROT_DHCP ideal-int +pkg syscall (linux-amd64), const RTPROT_DNROUTED ideal-int +pkg syscall (linux-amd64), const RTPROT_GATED ideal-int +pkg syscall (linux-amd64), const RTPROT_KERNEL ideal-int +pkg syscall (linux-amd64), const RTPROT_MRT ideal-int +pkg syscall (linux-amd64), const RTPROT_NTK ideal-int +pkg syscall (linux-amd64), const RTPROT_RA ideal-int +pkg syscall (linux-amd64), const RTPROT_REDIRECT ideal-int +pkg syscall (linux-amd64), const RTPROT_STATIC ideal-int +pkg syscall (linux-amd64), const RTPROT_UNSPEC ideal-int +pkg syscall (linux-amd64), const RTPROT_XORP ideal-int +pkg syscall (linux-amd64), const RTPROT_ZEBRA ideal-int +pkg syscall (linux-amd64), const RT_CLASS_DEFAULT ideal-int +pkg syscall (linux-amd64), const RT_CLASS_LOCAL ideal-int +pkg syscall (linux-amd64), const RT_CLASS_MAIN ideal-int +pkg syscall (linux-amd64), const RT_CLASS_MAX ideal-int +pkg syscall (linux-amd64), const RT_CLASS_UNSPEC ideal-int +pkg syscall (linux-amd64), const RT_SCOPE_HOST ideal-int +pkg syscall (linux-amd64), const RT_SCOPE_LINK ideal-int +pkg syscall (linux-amd64), const RT_SCOPE_NOWHERE ideal-int +pkg syscall (linux-amd64), const RT_SCOPE_SITE ideal-int +pkg syscall (linux-amd64), const RT_SCOPE_UNIVERSE ideal-int +pkg syscall (linux-amd64), const RT_TABLE_COMPAT ideal-int +pkg syscall (linux-amd64), const RT_TABLE_DEFAULT ideal-int +pkg syscall (linux-amd64), const RT_TABLE_LOCAL ideal-int +pkg syscall (linux-amd64), const RT_TABLE_MAIN ideal-int +pkg syscall (linux-amd64), const RT_TABLE_MAX ideal-int +pkg syscall (linux-amd64), const RT_TABLE_UNSPEC ideal-int +pkg syscall (linux-amd64), const RUSAGE_CHILDREN ideal-int +pkg syscall (linux-amd64), const RUSAGE_SELF ideal-int +pkg syscall (linux-amd64), const RUSAGE_THREAD ideal-int +pkg syscall (linux-amd64), const SCM_CREDENTIALS ideal-int +pkg syscall (linux-amd64), const SCM_RIGHTS ideal-int +pkg syscall (linux-amd64), const SCM_TIMESTAMP ideal-int +pkg syscall (linux-amd64), const SCM_TIMESTAMPING ideal-int +pkg syscall (linux-amd64), const SCM_TIMESTAMPNS ideal-int +pkg syscall (linux-amd64), const SIGCHLD Signal +pkg syscall (linux-amd64), const SIGCLD Signal +pkg syscall (linux-amd64), const SIGCONT Signal +pkg syscall (linux-amd64), const SIGIO Signal +pkg syscall (linux-amd64), const SIGIOT Signal +pkg syscall (linux-amd64), const SIGPOLL Signal +pkg syscall (linux-amd64), const SIGPROF Signal +pkg syscall (linux-amd64), const SIGPWR Signal +pkg syscall (linux-amd64), const SIGSTKFLT Signal +pkg syscall (linux-amd64), const SIGSTOP Signal +pkg syscall (linux-amd64), const SIGSYS Signal +pkg syscall (linux-amd64), const SIGTSTP Signal +pkg syscall (linux-amd64), const SIGTTIN Signal +pkg syscall (linux-amd64), const SIGTTOU Signal +pkg syscall (linux-amd64), const SIGUNUSED Signal +pkg syscall (linux-amd64), const SIGURG Signal +pkg syscall (linux-amd64), const SIGUSR1 Signal +pkg syscall (linux-amd64), const SIGUSR2 Signal +pkg syscall (linux-amd64), const SIGVTALRM Signal +pkg syscall (linux-amd64), const SIGWINCH Signal +pkg syscall (linux-amd64), const SIGXCPU Signal +pkg syscall (linux-amd64), const SIGXFSZ Signal +pkg syscall (linux-amd64), const SIOCADDDLCI ideal-int +pkg syscall (linux-amd64), const SIOCADDMULTI ideal-int +pkg syscall (linux-amd64), const SIOCADDRT ideal-int +pkg syscall (linux-amd64), const SIOCATMARK ideal-int +pkg syscall (linux-amd64), const SIOCDARP ideal-int +pkg syscall (linux-amd64), const SIOCDELDLCI ideal-int +pkg syscall (linux-amd64), const SIOCDELMULTI ideal-int +pkg syscall (linux-amd64), const SIOCDELRT ideal-int +pkg syscall (linux-amd64), const SIOCDEVPRIVATE ideal-int +pkg syscall (linux-amd64), const SIOCDIFADDR ideal-int +pkg syscall (linux-amd64), const SIOCDRARP ideal-int +pkg syscall (linux-amd64), const SIOCGARP ideal-int +pkg syscall (linux-amd64), const SIOCGIFADDR ideal-int +pkg syscall (linux-amd64), const SIOCGIFBR ideal-int +pkg syscall (linux-amd64), const SIOCGIFBRDADDR ideal-int +pkg syscall (linux-amd64), const SIOCGIFCONF ideal-int +pkg syscall (linux-amd64), const SIOCGIFCOUNT ideal-int +pkg syscall (linux-amd64), const SIOCGIFDSTADDR ideal-int +pkg syscall (linux-amd64), const SIOCGIFENCAP ideal-int +pkg syscall (linux-amd64), const SIOCGIFFLAGS ideal-int +pkg syscall (linux-amd64), const SIOCGIFHWADDR ideal-int +pkg syscall (linux-amd64), const SIOCGIFINDEX ideal-int +pkg syscall (linux-amd64), const SIOCGIFMAP ideal-int +pkg syscall (linux-amd64), const SIOCGIFMEM ideal-int +pkg syscall (linux-amd64), const SIOCGIFMETRIC ideal-int +pkg syscall (linux-amd64), const SIOCGIFMTU ideal-int +pkg syscall (linux-amd64), const SIOCGIFNAME ideal-int +pkg syscall (linux-amd64), const SIOCGIFNETMASK ideal-int +pkg syscall (linux-amd64), const SIOCGIFPFLAGS ideal-int +pkg syscall (linux-amd64), const SIOCGIFSLAVE ideal-int +pkg syscall (linux-amd64), const SIOCGIFTXQLEN ideal-int +pkg syscall (linux-amd64), const SIOCGPGRP ideal-int +pkg syscall (linux-amd64), const SIOCGRARP ideal-int +pkg syscall (linux-amd64), const SIOCGSTAMP ideal-int +pkg syscall (linux-amd64), const SIOCGSTAMPNS ideal-int +pkg syscall (linux-amd64), const SIOCPROTOPRIVATE ideal-int +pkg syscall (linux-amd64), const SIOCRTMSG ideal-int +pkg syscall (linux-amd64), const SIOCSARP ideal-int +pkg syscall (linux-amd64), const SIOCSIFADDR ideal-int +pkg syscall (linux-amd64), const SIOCSIFBR ideal-int +pkg syscall (linux-amd64), const SIOCSIFBRDADDR ideal-int +pkg syscall (linux-amd64), const SIOCSIFDSTADDR ideal-int +pkg syscall (linux-amd64), const SIOCSIFENCAP ideal-int +pkg syscall (linux-amd64), const SIOCSIFFLAGS ideal-int +pkg syscall (linux-amd64), const SIOCSIFHWADDR ideal-int +pkg syscall (linux-amd64), const SIOCSIFHWBROADCAST ideal-int +pkg syscall (linux-amd64), const SIOCSIFLINK ideal-int +pkg syscall (linux-amd64), const SIOCSIFMAP ideal-int +pkg syscall (linux-amd64), const SIOCSIFMEM ideal-int +pkg syscall (linux-amd64), const SIOCSIFMETRIC ideal-int +pkg syscall (linux-amd64), const SIOCSIFMTU ideal-int +pkg syscall (linux-amd64), const SIOCSIFNAME ideal-int +pkg syscall (linux-amd64), const SIOCSIFNETMASK ideal-int +pkg syscall (linux-amd64), const SIOCSIFPFLAGS ideal-int +pkg syscall (linux-amd64), const SIOCSIFSLAVE ideal-int +pkg syscall (linux-amd64), const SIOCSIFTXQLEN ideal-int +pkg syscall (linux-amd64), const SIOCSPGRP ideal-int +pkg syscall (linux-amd64), const SIOCSRARP ideal-int +pkg syscall (linux-amd64), const SOCK_CLOEXEC ideal-int +pkg syscall (linux-amd64), const SOCK_DCCP ideal-int +pkg syscall (linux-amd64), const SOCK_NONBLOCK ideal-int +pkg syscall (linux-amd64), const SOCK_PACKET ideal-int +pkg syscall (linux-amd64), const SOCK_RDM ideal-int +pkg syscall (linux-amd64), const SOL_AAL ideal-int +pkg syscall (linux-amd64), const SOL_ATM ideal-int +pkg syscall (linux-amd64), const SOL_DECNET ideal-int +pkg syscall (linux-amd64), const SOL_ICMPV6 ideal-int +pkg syscall (linux-amd64), const SOL_IP ideal-int +pkg syscall (linux-amd64), const SOL_IPV6 ideal-int +pkg syscall (linux-amd64), const SOL_IRDA ideal-int +pkg syscall (linux-amd64), const SOL_PACKET ideal-int +pkg syscall (linux-amd64), const SOL_RAW ideal-int +pkg syscall (linux-amd64), const SOL_TCP ideal-int +pkg syscall (linux-amd64), const SOL_X25 ideal-int +pkg syscall (linux-amd64), const SO_ACCEPTCONN ideal-int +pkg syscall (linux-amd64), const SO_ATTACH_FILTER ideal-int +pkg syscall (linux-amd64), const SO_BINDTODEVICE ideal-int +pkg syscall (linux-amd64), const SO_BSDCOMPAT ideal-int +pkg syscall (linux-amd64), const SO_DEBUG ideal-int +pkg syscall (linux-amd64), const SO_DETACH_FILTER ideal-int +pkg syscall (linux-amd64), const SO_DOMAIN ideal-int +pkg syscall (linux-amd64), const SO_ERROR ideal-int +pkg syscall (linux-amd64), const SO_MARK ideal-int +pkg syscall (linux-amd64), const SO_NO_CHECK ideal-int +pkg syscall (linux-amd64), const SO_OOBINLINE ideal-int +pkg syscall (linux-amd64), const SO_PASSCRED ideal-int +pkg syscall (linux-amd64), const SO_PASSSEC ideal-int +pkg syscall (linux-amd64), const SO_PEERCRED ideal-int +pkg syscall (linux-amd64), const SO_PEERNAME ideal-int +pkg syscall (linux-amd64), const SO_PEERSEC ideal-int +pkg syscall (linux-amd64), const SO_PRIORITY ideal-int +pkg syscall (linux-amd64), const SO_PROTOCOL ideal-int +pkg syscall (linux-amd64), const SO_RCVBUFFORCE ideal-int +pkg syscall (linux-amd64), const SO_RCVLOWAT ideal-int +pkg syscall (linux-amd64), const SO_RCVTIMEO ideal-int +pkg syscall (linux-amd64), const SO_RXQ_OVFL ideal-int +pkg syscall (linux-amd64), const SO_SECURITY_AUTHENTICATION ideal-int +pkg syscall (linux-amd64), const SO_SECURITY_ENCRYPTION_NETWORK ideal-int +pkg syscall (linux-amd64), const SO_SECURITY_ENCRYPTION_TRANSPORT ideal-int +pkg syscall (linux-amd64), const SO_SNDBUFFORCE ideal-int +pkg syscall (linux-amd64), const SO_SNDLOWAT ideal-int +pkg syscall (linux-amd64), const SO_SNDTIMEO ideal-int +pkg syscall (linux-amd64), const SO_TIMESTAMP ideal-int +pkg syscall (linux-amd64), const SO_TIMESTAMPING ideal-int +pkg syscall (linux-amd64), const SO_TIMESTAMPNS ideal-int +pkg syscall (linux-amd64), const SO_TYPE ideal-int +pkg syscall (linux-amd64), const SYS_ACCEPT ideal-int +pkg syscall (linux-amd64), const SYS_ACCEPT4 ideal-int +pkg syscall (linux-amd64), const SYS_ACCESS ideal-int +pkg syscall (linux-amd64), const SYS_ACCT ideal-int +pkg syscall (linux-amd64), const SYS_ADD_KEY ideal-int +pkg syscall (linux-amd64), const SYS_ADJTIMEX ideal-int +pkg syscall (linux-amd64), const SYS_AFS_SYSCALL ideal-int +pkg syscall (linux-amd64), const SYS_ALARM ideal-int +pkg syscall (linux-amd64), const SYS_ARCH_PRCTL ideal-int +pkg syscall (linux-amd64), const SYS_BIND ideal-int +pkg syscall (linux-amd64), const SYS_BRK ideal-int +pkg syscall (linux-amd64), const SYS_CAPGET ideal-int +pkg syscall (linux-amd64), const SYS_CAPSET ideal-int +pkg syscall (linux-amd64), const SYS_CHDIR ideal-int +pkg syscall (linux-amd64), const SYS_CHMOD ideal-int +pkg syscall (linux-amd64), const SYS_CHOWN ideal-int +pkg syscall (linux-amd64), const SYS_CHROOT ideal-int +pkg syscall (linux-amd64), const SYS_CLOCK_GETRES ideal-int +pkg syscall (linux-amd64), const SYS_CLOCK_GETTIME ideal-int +pkg syscall (linux-amd64), const SYS_CLOCK_NANOSLEEP ideal-int +pkg syscall (linux-amd64), const SYS_CLOCK_SETTIME ideal-int +pkg syscall (linux-amd64), const SYS_CLONE ideal-int +pkg syscall (linux-amd64), const SYS_CLOSE ideal-int +pkg syscall (linux-amd64), const SYS_CONNECT ideal-int +pkg syscall (linux-amd64), const SYS_CREAT ideal-int +pkg syscall (linux-amd64), const SYS_CREATE_MODULE ideal-int +pkg syscall (linux-amd64), const SYS_DELETE_MODULE ideal-int +pkg syscall (linux-amd64), const SYS_DUP ideal-int +pkg syscall (linux-amd64), const SYS_DUP2 ideal-int +pkg syscall (linux-amd64), const SYS_DUP3 ideal-int +pkg syscall (linux-amd64), const SYS_EPOLL_CREATE ideal-int +pkg syscall (linux-amd64), const SYS_EPOLL_CREATE1 ideal-int +pkg syscall (linux-amd64), const SYS_EPOLL_CTL ideal-int +pkg syscall (linux-amd64), const SYS_EPOLL_CTL_OLD ideal-int +pkg syscall (linux-amd64), const SYS_EPOLL_PWAIT ideal-int +pkg syscall (linux-amd64), const SYS_EPOLL_WAIT ideal-int +pkg syscall (linux-amd64), const SYS_EPOLL_WAIT_OLD ideal-int +pkg syscall (linux-amd64), const SYS_EVENTFD ideal-int +pkg syscall (linux-amd64), const SYS_EVENTFD2 ideal-int +pkg syscall (linux-amd64), const SYS_EXECVE ideal-int +pkg syscall (linux-amd64), const SYS_EXIT ideal-int +pkg syscall (linux-amd64), const SYS_EXIT_GROUP ideal-int +pkg syscall (linux-amd64), const SYS_FACCESSAT ideal-int +pkg syscall (linux-amd64), const SYS_FADVISE64 ideal-int +pkg syscall (linux-amd64), const SYS_FALLOCATE ideal-int +pkg syscall (linux-amd64), const SYS_FANOTIFY_INIT ideal-int +pkg syscall (linux-amd64), const SYS_FANOTIFY_MARK ideal-int +pkg syscall (linux-amd64), const SYS_FCHDIR ideal-int +pkg syscall (linux-amd64), const SYS_FCHMOD ideal-int +pkg syscall (linux-amd64), const SYS_FCHMODAT ideal-int +pkg syscall (linux-amd64), const SYS_FCHOWN ideal-int +pkg syscall (linux-amd64), const SYS_FCHOWNAT ideal-int +pkg syscall (linux-amd64), const SYS_FCNTL ideal-int +pkg syscall (linux-amd64), const SYS_FDATASYNC ideal-int +pkg syscall (linux-amd64), const SYS_FGETXATTR ideal-int +pkg syscall (linux-amd64), const SYS_FLISTXATTR ideal-int +pkg syscall (linux-amd64), const SYS_FLOCK ideal-int +pkg syscall (linux-amd64), const SYS_FORK ideal-int +pkg syscall (linux-amd64), const SYS_FREMOVEXATTR ideal-int +pkg syscall (linux-amd64), const SYS_FSETXATTR ideal-int +pkg syscall (linux-amd64), const SYS_FSTAT ideal-int +pkg syscall (linux-amd64), const SYS_FSTATFS ideal-int +pkg syscall (linux-amd64), const SYS_FSYNC ideal-int +pkg syscall (linux-amd64), const SYS_FTRUNCATE ideal-int +pkg syscall (linux-amd64), const SYS_FUTEX ideal-int +pkg syscall (linux-amd64), const SYS_FUTIMESAT ideal-int +pkg syscall (linux-amd64), const SYS_GETCWD ideal-int +pkg syscall (linux-amd64), const SYS_GETDENTS ideal-int +pkg syscall (linux-amd64), const SYS_GETDENTS64 ideal-int +pkg syscall (linux-amd64), const SYS_GETEGID ideal-int +pkg syscall (linux-amd64), const SYS_GETEUID ideal-int +pkg syscall (linux-amd64), const SYS_GETGID ideal-int +pkg syscall (linux-amd64), const SYS_GETGROUPS ideal-int +pkg syscall (linux-amd64), const SYS_GETITIMER ideal-int +pkg syscall (linux-amd64), const SYS_GETPEERNAME ideal-int +pkg syscall (linux-amd64), const SYS_GETPGID ideal-int +pkg syscall (linux-amd64), const SYS_GETPGRP ideal-int +pkg syscall (linux-amd64), const SYS_GETPID ideal-int +pkg syscall (linux-amd64), const SYS_GETPMSG ideal-int +pkg syscall (linux-amd64), const SYS_GETPPID ideal-int +pkg syscall (linux-amd64), const SYS_GETPRIORITY ideal-int +pkg syscall (linux-amd64), const SYS_GETRESGID ideal-int +pkg syscall (linux-amd64), const SYS_GETRESUID ideal-int +pkg syscall (linux-amd64), const SYS_GETRLIMIT ideal-int +pkg syscall (linux-amd64), const SYS_GETRUSAGE ideal-int +pkg syscall (linux-amd64), const SYS_GETSID ideal-int +pkg syscall (linux-amd64), const SYS_GETSOCKNAME ideal-int +pkg syscall (linux-amd64), const SYS_GETSOCKOPT ideal-int +pkg syscall (linux-amd64), const SYS_GETTID ideal-int +pkg syscall (linux-amd64), const SYS_GETTIMEOFDAY ideal-int +pkg syscall (linux-amd64), const SYS_GETUID ideal-int +pkg syscall (linux-amd64), const SYS_GETXATTR ideal-int +pkg syscall (linux-amd64), const SYS_GET_KERNEL_SYMS ideal-int +pkg syscall (linux-amd64), const SYS_GET_MEMPOLICY ideal-int +pkg syscall (linux-amd64), const SYS_GET_ROBUST_LIST ideal-int +pkg syscall (linux-amd64), const SYS_GET_THREAD_AREA ideal-int +pkg syscall (linux-amd64), const SYS_INIT_MODULE ideal-int +pkg syscall (linux-amd64), const SYS_INOTIFY_ADD_WATCH ideal-int +pkg syscall (linux-amd64), const SYS_INOTIFY_INIT ideal-int +pkg syscall (linux-amd64), const SYS_INOTIFY_INIT1 ideal-int +pkg syscall (linux-amd64), const SYS_INOTIFY_RM_WATCH ideal-int +pkg syscall (linux-amd64), const SYS_IOCTL ideal-int +pkg syscall (linux-amd64), const SYS_IOPERM ideal-int +pkg syscall (linux-amd64), const SYS_IOPL ideal-int +pkg syscall (linux-amd64), const SYS_IOPRIO_GET ideal-int +pkg syscall (linux-amd64), const SYS_IOPRIO_SET ideal-int +pkg syscall (linux-amd64), const SYS_IO_CANCEL ideal-int +pkg syscall (linux-amd64), const SYS_IO_DESTROY ideal-int +pkg syscall (linux-amd64), const SYS_IO_GETEVENTS ideal-int +pkg syscall (linux-amd64), const SYS_IO_SETUP ideal-int +pkg syscall (linux-amd64), const SYS_IO_SUBMIT ideal-int +pkg syscall (linux-amd64), const SYS_KEXEC_LOAD ideal-int +pkg syscall (linux-amd64), const SYS_KEYCTL ideal-int +pkg syscall (linux-amd64), const SYS_KILL ideal-int +pkg syscall (linux-amd64), const SYS_LCHOWN ideal-int +pkg syscall (linux-amd64), const SYS_LGETXATTR ideal-int +pkg syscall (linux-amd64), const SYS_LINK ideal-int +pkg syscall (linux-amd64), const SYS_LINKAT ideal-int +pkg syscall (linux-amd64), const SYS_LISTEN ideal-int +pkg syscall (linux-amd64), const SYS_LISTXATTR ideal-int +pkg syscall (linux-amd64), const SYS_LLISTXATTR ideal-int +pkg syscall (linux-amd64), const SYS_LOOKUP_DCOOKIE ideal-int +pkg syscall (linux-amd64), const SYS_LREMOVEXATTR ideal-int +pkg syscall (linux-amd64), const SYS_LSEEK ideal-int +pkg syscall (linux-amd64), const SYS_LSETXATTR ideal-int +pkg syscall (linux-amd64), const SYS_LSTAT ideal-int +pkg syscall (linux-amd64), const SYS_MADVISE ideal-int +pkg syscall (linux-amd64), const SYS_MBIND ideal-int +pkg syscall (linux-amd64), const SYS_MIGRATE_PAGES ideal-int +pkg syscall (linux-amd64), const SYS_MINCORE ideal-int +pkg syscall (linux-amd64), const SYS_MKDIR ideal-int +pkg syscall (linux-amd64), const SYS_MKDIRAT ideal-int +pkg syscall (linux-amd64), const SYS_MKNOD ideal-int +pkg syscall (linux-amd64), const SYS_MKNODAT ideal-int +pkg syscall (linux-amd64), const SYS_MLOCK ideal-int +pkg syscall (linux-amd64), const SYS_MLOCKALL ideal-int +pkg syscall (linux-amd64), const SYS_MMAP ideal-int +pkg syscall (linux-amd64), const SYS_MODIFY_LDT ideal-int +pkg syscall (linux-amd64), const SYS_MOUNT ideal-int +pkg syscall (linux-amd64), const SYS_MOVE_PAGES ideal-int +pkg syscall (linux-amd64), const SYS_MPROTECT ideal-int +pkg syscall (linux-amd64), const SYS_MQ_GETSETATTR ideal-int +pkg syscall (linux-amd64), const SYS_MQ_NOTIFY ideal-int +pkg syscall (linux-amd64), const SYS_MQ_OPEN ideal-int +pkg syscall (linux-amd64), const SYS_MQ_TIMEDRECEIVE ideal-int +pkg syscall (linux-amd64), const SYS_MQ_TIMEDSEND ideal-int +pkg syscall (linux-amd64), const SYS_MQ_UNLINK ideal-int +pkg syscall (linux-amd64), const SYS_MREMAP ideal-int +pkg syscall (linux-amd64), const SYS_MSGCTL ideal-int +pkg syscall (linux-amd64), const SYS_MSGGET ideal-int +pkg syscall (linux-amd64), const SYS_MSGRCV ideal-int +pkg syscall (linux-amd64), const SYS_MSGSND ideal-int +pkg syscall (linux-amd64), const SYS_MSYNC ideal-int +pkg syscall (linux-amd64), const SYS_MUNLOCK ideal-int +pkg syscall (linux-amd64), const SYS_MUNLOCKALL ideal-int +pkg syscall (linux-amd64), const SYS_MUNMAP ideal-int +pkg syscall (linux-amd64), const SYS_NANOSLEEP ideal-int +pkg syscall (linux-amd64), const SYS_NEWFSTATAT ideal-int +pkg syscall (linux-amd64), const SYS_NFSSERVCTL ideal-int +pkg syscall (linux-amd64), const SYS_OPEN ideal-int +pkg syscall (linux-amd64), const SYS_OPENAT ideal-int +pkg syscall (linux-amd64), const SYS_PAUSE ideal-int +pkg syscall (linux-amd64), const SYS_PERF_EVENT_OPEN ideal-int +pkg syscall (linux-amd64), const SYS_PERSONALITY ideal-int +pkg syscall (linux-amd64), const SYS_PIPE ideal-int +pkg syscall (linux-amd64), const SYS_PIPE2 ideal-int +pkg syscall (linux-amd64), const SYS_PIVOT_ROOT ideal-int +pkg syscall (linux-amd64), const SYS_POLL ideal-int +pkg syscall (linux-amd64), const SYS_PPOLL ideal-int +pkg syscall (linux-amd64), const SYS_PRCTL ideal-int +pkg syscall (linux-amd64), const SYS_PREAD64 ideal-int +pkg syscall (linux-amd64), const SYS_PREADV ideal-int +pkg syscall (linux-amd64), const SYS_PRLIMIT64 ideal-int +pkg syscall (linux-amd64), const SYS_PSELECT6 ideal-int +pkg syscall (linux-amd64), const SYS_PTRACE ideal-int +pkg syscall (linux-amd64), const SYS_PUTPMSG ideal-int +pkg syscall (linux-amd64), const SYS_PWRITE64 ideal-int +pkg syscall (linux-amd64), const SYS_PWRITEV ideal-int +pkg syscall (linux-amd64), const SYS_QUERY_MODULE ideal-int +pkg syscall (linux-amd64), const SYS_QUOTACTL ideal-int +pkg syscall (linux-amd64), const SYS_READ ideal-int +pkg syscall (linux-amd64), const SYS_READAHEAD ideal-int +pkg syscall (linux-amd64), const SYS_READLINK ideal-int +pkg syscall (linux-amd64), const SYS_READLINKAT ideal-int +pkg syscall (linux-amd64), const SYS_READV ideal-int +pkg syscall (linux-amd64), const SYS_REBOOT ideal-int +pkg syscall (linux-amd64), const SYS_RECVFROM ideal-int +pkg syscall (linux-amd64), const SYS_RECVMMSG ideal-int +pkg syscall (linux-amd64), const SYS_RECVMSG ideal-int +pkg syscall (linux-amd64), const SYS_REMAP_FILE_PAGES ideal-int +pkg syscall (linux-amd64), const SYS_REMOVEXATTR ideal-int +pkg syscall (linux-amd64), const SYS_RENAME ideal-int +pkg syscall (linux-amd64), const SYS_RENAMEAT ideal-int +pkg syscall (linux-amd64), const SYS_REQUEST_KEY ideal-int +pkg syscall (linux-amd64), const SYS_RESTART_SYSCALL ideal-int +pkg syscall (linux-amd64), const SYS_RMDIR ideal-int +pkg syscall (linux-amd64), const SYS_RT_SIGACTION ideal-int +pkg syscall (linux-amd64), const SYS_RT_SIGPENDING ideal-int +pkg syscall (linux-amd64), const SYS_RT_SIGPROCMASK ideal-int +pkg syscall (linux-amd64), const SYS_RT_SIGQUEUEINFO ideal-int +pkg syscall (linux-amd64), const SYS_RT_SIGRETURN ideal-int +pkg syscall (linux-amd64), const SYS_RT_SIGSUSPEND ideal-int +pkg syscall (linux-amd64), const SYS_RT_SIGTIMEDWAIT ideal-int +pkg syscall (linux-amd64), const SYS_RT_TGSIGQUEUEINFO ideal-int +pkg syscall (linux-amd64), const SYS_SCHED_GETAFFINITY ideal-int +pkg syscall (linux-amd64), const SYS_SCHED_GETPARAM ideal-int +pkg syscall (linux-amd64), const SYS_SCHED_GETSCHEDULER ideal-int +pkg syscall (linux-amd64), const SYS_SCHED_GET_PRIORITY_MAX ideal-int +pkg syscall (linux-amd64), const SYS_SCHED_GET_PRIORITY_MIN ideal-int +pkg syscall (linux-amd64), const SYS_SCHED_RR_GET_INTERVAL ideal-int +pkg syscall (linux-amd64), const SYS_SCHED_SETAFFINITY ideal-int +pkg syscall (linux-amd64), const SYS_SCHED_SETPARAM ideal-int +pkg syscall (linux-amd64), const SYS_SCHED_SETSCHEDULER ideal-int +pkg syscall (linux-amd64), const SYS_SCHED_YIELD ideal-int +pkg syscall (linux-amd64), const SYS_SECURITY ideal-int +pkg syscall (linux-amd64), const SYS_SELECT ideal-int +pkg syscall (linux-amd64), const SYS_SEMCTL ideal-int +pkg syscall (linux-amd64), const SYS_SEMGET ideal-int +pkg syscall (linux-amd64), const SYS_SEMOP ideal-int +pkg syscall (linux-amd64), const SYS_SEMTIMEDOP ideal-int +pkg syscall (linux-amd64), const SYS_SENDFILE ideal-int +pkg syscall (linux-amd64), const SYS_SENDMSG ideal-int +pkg syscall (linux-amd64), const SYS_SENDTO ideal-int +pkg syscall (linux-amd64), const SYS_SETDOMAINNAME ideal-int +pkg syscall (linux-amd64), const SYS_SETFSGID ideal-int +pkg syscall (linux-amd64), const SYS_SETFSUID ideal-int +pkg syscall (linux-amd64), const SYS_SETGID ideal-int +pkg syscall (linux-amd64), const SYS_SETGROUPS ideal-int +pkg syscall (linux-amd64), const SYS_SETHOSTNAME ideal-int +pkg syscall (linux-amd64), const SYS_SETITIMER ideal-int +pkg syscall (linux-amd64), const SYS_SETPGID ideal-int +pkg syscall (linux-amd64), const SYS_SETPRIORITY ideal-int +pkg syscall (linux-amd64), const SYS_SETREGID ideal-int +pkg syscall (linux-amd64), const SYS_SETRESGID ideal-int +pkg syscall (linux-amd64), const SYS_SETRESUID ideal-int +pkg syscall (linux-amd64), const SYS_SETREUID ideal-int +pkg syscall (linux-amd64), const SYS_SETRLIMIT ideal-int +pkg syscall (linux-amd64), const SYS_SETSID ideal-int +pkg syscall (linux-amd64), const SYS_SETSOCKOPT ideal-int +pkg syscall (linux-amd64), const SYS_SETTIMEOFDAY ideal-int +pkg syscall (linux-amd64), const SYS_SETUID ideal-int +pkg syscall (linux-amd64), const SYS_SETXATTR ideal-int +pkg syscall (linux-amd64), const SYS_SET_MEMPOLICY ideal-int +pkg syscall (linux-amd64), const SYS_SET_ROBUST_LIST ideal-int +pkg syscall (linux-amd64), const SYS_SET_THREAD_AREA ideal-int +pkg syscall (linux-amd64), const SYS_SET_TID_ADDRESS ideal-int +pkg syscall (linux-amd64), const SYS_SHMAT ideal-int +pkg syscall (linux-amd64), const SYS_SHMCTL ideal-int +pkg syscall (linux-amd64), const SYS_SHMDT ideal-int +pkg syscall (linux-amd64), const SYS_SHMGET ideal-int +pkg syscall (linux-amd64), const SYS_SHUTDOWN ideal-int +pkg syscall (linux-amd64), const SYS_SIGALTSTACK ideal-int +pkg syscall (linux-amd64), const SYS_SIGNALFD ideal-int +pkg syscall (linux-amd64), const SYS_SIGNALFD4 ideal-int +pkg syscall (linux-amd64), const SYS_SOCKET ideal-int +pkg syscall (linux-amd64), const SYS_SOCKETPAIR ideal-int +pkg syscall (linux-amd64), const SYS_SPLICE ideal-int +pkg syscall (linux-amd64), const SYS_STAT ideal-int +pkg syscall (linux-amd64), const SYS_STATFS ideal-int +pkg syscall (linux-amd64), const SYS_SWAPOFF ideal-int +pkg syscall (linux-amd64), const SYS_SWAPON ideal-int +pkg syscall (linux-amd64), const SYS_SYMLINK ideal-int +pkg syscall (linux-amd64), const SYS_SYMLINKAT ideal-int +pkg syscall (linux-amd64), const SYS_SYNC ideal-int +pkg syscall (linux-amd64), const SYS_SYNC_FILE_RANGE ideal-int +pkg syscall (linux-amd64), const SYS_SYSFS ideal-int +pkg syscall (linux-amd64), const SYS_SYSINFO ideal-int +pkg syscall (linux-amd64), const SYS_SYSLOG ideal-int +pkg syscall (linux-amd64), const SYS_TEE ideal-int +pkg syscall (linux-amd64), const SYS_TGKILL ideal-int +pkg syscall (linux-amd64), const SYS_TIME ideal-int +pkg syscall (linux-amd64), const SYS_TIMERFD_CREATE ideal-int +pkg syscall (linux-amd64), const SYS_TIMERFD_GETTIME ideal-int +pkg syscall (linux-amd64), const SYS_TIMERFD_SETTIME ideal-int +pkg syscall (linux-amd64), const SYS_TIMER_CREATE ideal-int +pkg syscall (linux-amd64), const SYS_TIMER_DELETE ideal-int +pkg syscall (linux-amd64), const SYS_TIMER_GETOVERRUN ideal-int +pkg syscall (linux-amd64), const SYS_TIMER_GETTIME ideal-int +pkg syscall (linux-amd64), const SYS_TIMER_SETTIME ideal-int +pkg syscall (linux-amd64), const SYS_TIMES ideal-int +pkg syscall (linux-amd64), const SYS_TKILL ideal-int +pkg syscall (linux-amd64), const SYS_TRUNCATE ideal-int +pkg syscall (linux-amd64), const SYS_TUXCALL ideal-int +pkg syscall (linux-amd64), const SYS_UMASK ideal-int +pkg syscall (linux-amd64), const SYS_UMOUNT2 ideal-int +pkg syscall (linux-amd64), const SYS_UNAME ideal-int +pkg syscall (linux-amd64), const SYS_UNLINK ideal-int +pkg syscall (linux-amd64), const SYS_UNLINKAT ideal-int +pkg syscall (linux-amd64), const SYS_UNSHARE ideal-int +pkg syscall (linux-amd64), const SYS_USELIB ideal-int +pkg syscall (linux-amd64), const SYS_USTAT ideal-int +pkg syscall (linux-amd64), const SYS_UTIME ideal-int +pkg syscall (linux-amd64), const SYS_UTIMENSAT ideal-int +pkg syscall (linux-amd64), const SYS_UTIMES ideal-int +pkg syscall (linux-amd64), const SYS_VFORK ideal-int +pkg syscall (linux-amd64), const SYS_VHANGUP ideal-int +pkg syscall (linux-amd64), const SYS_VMSPLICE ideal-int +pkg syscall (linux-amd64), const SYS_VSERVER ideal-int +pkg syscall (linux-amd64), const SYS_WAIT4 ideal-int +pkg syscall (linux-amd64), const SYS_WAITID ideal-int +pkg syscall (linux-amd64), const SYS_WRITE ideal-int +pkg syscall (linux-amd64), const SYS_WRITEV ideal-int +pkg syscall (linux-amd64), const SYS__SYSCTL ideal-int +pkg syscall (linux-amd64), const S_BLKSIZE ideal-int +pkg syscall (linux-amd64), const S_IEXEC ideal-int +pkg syscall (linux-amd64), const S_IREAD ideal-int +pkg syscall (linux-amd64), const S_IRGRP ideal-int +pkg syscall (linux-amd64), const S_IROTH ideal-int +pkg syscall (linux-amd64), const S_IRWXG ideal-int +pkg syscall (linux-amd64), const S_IRWXO ideal-int +pkg syscall (linux-amd64), const S_IRWXU ideal-int +pkg syscall (linux-amd64), const S_IWGRP ideal-int +pkg syscall (linux-amd64), const S_IWOTH ideal-int +pkg syscall (linux-amd64), const S_IXGRP ideal-int +pkg syscall (linux-amd64), const S_IXOTH ideal-int +pkg syscall (linux-amd64), const SizeofCmsghdr ideal-int +pkg syscall (linux-amd64), const SizeofIPMreq ideal-int +pkg syscall (linux-amd64), const SizeofIPMreqn ideal-int +pkg syscall (linux-amd64), const SizeofIPv6Mreq ideal-int +pkg syscall (linux-amd64), const SizeofIfAddrmsg ideal-int +pkg syscall (linux-amd64), const SizeofIfInfomsg ideal-int +pkg syscall (linux-amd64), const SizeofInet4Pktinfo ideal-int +pkg syscall (linux-amd64), const SizeofInet6Pktinfo ideal-int +pkg syscall (linux-amd64), const SizeofInotifyEvent ideal-int +pkg syscall (linux-amd64), const SizeofLinger ideal-int +pkg syscall (linux-amd64), const SizeofMsghdr ideal-int +pkg syscall (linux-amd64), const SizeofNlAttr ideal-int +pkg syscall (linux-amd64), const SizeofNlMsgerr ideal-int +pkg syscall (linux-amd64), const SizeofNlMsghdr ideal-int +pkg syscall (linux-amd64), const SizeofRtAttr ideal-int +pkg syscall (linux-amd64), const SizeofRtGenmsg ideal-int +pkg syscall (linux-amd64), const SizeofRtMsg ideal-int +pkg syscall (linux-amd64), const SizeofRtNexthop ideal-int +pkg syscall (linux-amd64), const SizeofSockFilter ideal-int +pkg syscall (linux-amd64), const SizeofSockFprog ideal-int +pkg syscall (linux-amd64), const SizeofSockaddrAny ideal-int +pkg syscall (linux-amd64), const SizeofSockaddrInet4 ideal-int +pkg syscall (linux-amd64), const SizeofSockaddrInet6 ideal-int +pkg syscall (linux-amd64), const SizeofSockaddrLinklayer ideal-int +pkg syscall (linux-amd64), const SizeofSockaddrNetlink ideal-int +pkg syscall (linux-amd64), const SizeofSockaddrUnix ideal-int +pkg syscall (linux-amd64), const SizeofUcred ideal-int +pkg syscall (linux-amd64), const TCGETS ideal-int +pkg syscall (linux-amd64), const TCP_CONGESTION ideal-int +pkg syscall (linux-amd64), const TCP_CORK ideal-int +pkg syscall (linux-amd64), const TCP_DEFER_ACCEPT ideal-int +pkg syscall (linux-amd64), const TCP_INFO ideal-int +pkg syscall (linux-amd64), const TCP_KEEPCNT ideal-int +pkg syscall (linux-amd64), const TCP_KEEPIDLE ideal-int +pkg syscall (linux-amd64), const TCP_KEEPINTVL ideal-int +pkg syscall (linux-amd64), const TCP_LINGER2 ideal-int +pkg syscall (linux-amd64), const TCP_MAXSEG ideal-int +pkg syscall (linux-amd64), const TCP_MAXWIN ideal-int +pkg syscall (linux-amd64), const TCP_MAX_WINSHIFT ideal-int +pkg syscall (linux-amd64), const TCP_MD5SIG ideal-int +pkg syscall (linux-amd64), const TCP_MD5SIG_MAXKEYLEN ideal-int +pkg syscall (linux-amd64), const TCP_MSS ideal-int +pkg syscall (linux-amd64), const TCP_QUICKACK ideal-int +pkg syscall (linux-amd64), const TCP_SYNCNT ideal-int +pkg syscall (linux-amd64), const TCP_WINDOW_CLAMP ideal-int +pkg syscall (linux-amd64), const TCSETS ideal-int +pkg syscall (linux-amd64), const TIOCCBRK ideal-int +pkg syscall (linux-amd64), const TIOCCONS ideal-int +pkg syscall (linux-amd64), const TIOCEXCL ideal-int +pkg syscall (linux-amd64), const TIOCGDEV ideal-int +pkg syscall (linux-amd64), const TIOCGETD ideal-int +pkg syscall (linux-amd64), const TIOCGICOUNT ideal-int +pkg syscall (linux-amd64), const TIOCGLCKTRMIOS ideal-int +pkg syscall (linux-amd64), const TIOCGPGRP ideal-int +pkg syscall (linux-amd64), const TIOCGPTN ideal-int +pkg syscall (linux-amd64), const TIOCGRS485 ideal-int +pkg syscall (linux-amd64), const TIOCGSERIAL ideal-int +pkg syscall (linux-amd64), const TIOCGSID ideal-int +pkg syscall (linux-amd64), const TIOCGSOFTCAR ideal-int +pkg syscall (linux-amd64), const TIOCGWINSZ ideal-int +pkg syscall (linux-amd64), const TIOCINQ ideal-int +pkg syscall (linux-amd64), const TIOCLINUX ideal-int +pkg syscall (linux-amd64), const TIOCMBIC ideal-int +pkg syscall (linux-amd64), const TIOCMBIS ideal-int +pkg syscall (linux-amd64), const TIOCMGET ideal-int +pkg syscall (linux-amd64), const TIOCMIWAIT ideal-int +pkg syscall (linux-amd64), const TIOCMSET ideal-int +pkg syscall (linux-amd64), const TIOCM_CAR ideal-int +pkg syscall (linux-amd64), const TIOCM_CD ideal-int +pkg syscall (linux-amd64), const TIOCM_CTS ideal-int +pkg syscall (linux-amd64), const TIOCM_DSR ideal-int +pkg syscall (linux-amd64), const TIOCM_DTR ideal-int +pkg syscall (linux-amd64), const TIOCM_LE ideal-int +pkg syscall (linux-amd64), const TIOCM_RI ideal-int +pkg syscall (linux-amd64), const TIOCM_RNG ideal-int +pkg syscall (linux-amd64), const TIOCM_RTS ideal-int +pkg syscall (linux-amd64), const TIOCM_SR ideal-int +pkg syscall (linux-amd64), const TIOCM_ST ideal-int +pkg syscall (linux-amd64), const TIOCNOTTY ideal-int +pkg syscall (linux-amd64), const TIOCNXCL ideal-int +pkg syscall (linux-amd64), const TIOCOUTQ ideal-int +pkg syscall (linux-amd64), const TIOCPKT ideal-int +pkg syscall (linux-amd64), const TIOCPKT_DATA ideal-int +pkg syscall (linux-amd64), const TIOCPKT_DOSTOP ideal-int +pkg syscall (linux-amd64), const TIOCPKT_FLUSHREAD ideal-int +pkg syscall (linux-amd64), const TIOCPKT_FLUSHWRITE ideal-int +pkg syscall (linux-amd64), const TIOCPKT_IOCTL ideal-int +pkg syscall (linux-amd64), const TIOCPKT_NOSTOP ideal-int +pkg syscall (linux-amd64), const TIOCPKT_START ideal-int +pkg syscall (linux-amd64), const TIOCPKT_STOP ideal-int +pkg syscall (linux-amd64), const TIOCSBRK ideal-int +pkg syscall (linux-amd64), const TIOCSCTTY ideal-int +pkg syscall (linux-amd64), const TIOCSERCONFIG ideal-int +pkg syscall (linux-amd64), const TIOCSERGETLSR ideal-int +pkg syscall (linux-amd64), const TIOCSERGETMULTI ideal-int +pkg syscall (linux-amd64), const TIOCSERGSTRUCT ideal-int +pkg syscall (linux-amd64), const TIOCSERGWILD ideal-int +pkg syscall (linux-amd64), const TIOCSERSETMULTI ideal-int +pkg syscall (linux-amd64), const TIOCSERSWILD ideal-int +pkg syscall (linux-amd64), const TIOCSER_TEMT ideal-int +pkg syscall (linux-amd64), const TIOCSETD ideal-int +pkg syscall (linux-amd64), const TIOCSIG ideal-int +pkg syscall (linux-amd64), const TIOCSLCKTRMIOS ideal-int +pkg syscall (linux-amd64), const TIOCSPGRP ideal-int +pkg syscall (linux-amd64), const TIOCSPTLCK ideal-int +pkg syscall (linux-amd64), const TIOCSRS485 ideal-int +pkg syscall (linux-amd64), const TIOCSSERIAL ideal-int +pkg syscall (linux-amd64), const TIOCSSOFTCAR ideal-int +pkg syscall (linux-amd64), const TIOCSTI ideal-int +pkg syscall (linux-amd64), const TIOCSWINSZ ideal-int +pkg syscall (linux-amd64), const TOSTOP ideal-int +pkg syscall (linux-amd64), const TUNATTACHFILTER ideal-int +pkg syscall (linux-amd64), const TUNDETACHFILTER ideal-int +pkg syscall (linux-amd64), const TUNGETFEATURES ideal-int +pkg syscall (linux-amd64), const TUNGETIFF ideal-int +pkg syscall (linux-amd64), const TUNGETSNDBUF ideal-int +pkg syscall (linux-amd64), const TUNGETVNETHDRSZ ideal-int +pkg syscall (linux-amd64), const TUNSETDEBUG ideal-int +pkg syscall (linux-amd64), const TUNSETGROUP ideal-int +pkg syscall (linux-amd64), const TUNSETIFF ideal-int +pkg syscall (linux-amd64), const TUNSETLINK ideal-int +pkg syscall (linux-amd64), const TUNSETNOCSUM ideal-int +pkg syscall (linux-amd64), const TUNSETOFFLOAD ideal-int +pkg syscall (linux-amd64), const TUNSETOWNER ideal-int +pkg syscall (linux-amd64), const TUNSETPERSIST ideal-int +pkg syscall (linux-amd64), const TUNSETSNDBUF ideal-int +pkg syscall (linux-amd64), const TUNSETTXFILTER ideal-int +pkg syscall (linux-amd64), const TUNSETVNETHDRSZ ideal-int +pkg syscall (linux-amd64), const VDISCARD ideal-int +pkg syscall (linux-amd64), const VEOF ideal-int +pkg syscall (linux-amd64), const VEOL ideal-int +pkg syscall (linux-amd64), const VEOL2 ideal-int +pkg syscall (linux-amd64), const VERASE ideal-int +pkg syscall (linux-amd64), const VINTR ideal-int +pkg syscall (linux-amd64), const VKILL ideal-int +pkg syscall (linux-amd64), const VLNEXT ideal-int +pkg syscall (linux-amd64), const VMIN ideal-int +pkg syscall (linux-amd64), const VQUIT ideal-int +pkg syscall (linux-amd64), const VREPRINT ideal-int +pkg syscall (linux-amd64), const VSTART ideal-int +pkg syscall (linux-amd64), const VSTOP ideal-int +pkg syscall (linux-amd64), const VSUSP ideal-int +pkg syscall (linux-amd64), const VSWTC ideal-int +pkg syscall (linux-amd64), const VTIME ideal-int +pkg syscall (linux-amd64), const VWERASE ideal-int +pkg syscall (linux-amd64), const WALL ideal-int +pkg syscall (linux-amd64), const WCLONE ideal-int +pkg syscall (linux-amd64), const WCONTINUED ideal-int +pkg syscall (linux-amd64), const WEXITED ideal-int +pkg syscall (linux-amd64), const WNOHANG ideal-int +pkg syscall (linux-amd64), const WNOTHREAD ideal-int +pkg syscall (linux-amd64), const WNOWAIT ideal-int +pkg syscall (linux-amd64), const WORDSIZE ideal-int +pkg syscall (linux-amd64), const WSTOPPED ideal-int +pkg syscall (linux-amd64), const WUNTRACED ideal-int +pkg syscall (linux-amd64), const XCASE ideal-int +pkg syscall (linux-amd64), func Accept(int) (int, Sockaddr, error) +pkg syscall (linux-amd64), func Access(string, uint32) error +pkg syscall (linux-amd64), func Acct(string) error +pkg syscall (linux-amd64), func Adjtimex(*Timex) (int, error) +pkg syscall (linux-amd64), func AttachLsf(int, []SockFilter) error +pkg syscall (linux-amd64), func Bind(int, Sockaddr) error +pkg syscall (linux-amd64), func BindToDevice(int, string) error +pkg syscall (linux-amd64), func Chroot(string) error +pkg syscall (linux-amd64), func Close(int) error +pkg syscall (linux-amd64), func CloseOnExec(int) +pkg syscall (linux-amd64), func CmsgLen(int) int +pkg syscall (linux-amd64), func CmsgSpace(int) int +pkg syscall (linux-amd64), func Connect(int, Sockaddr) error +pkg syscall (linux-amd64), func Creat(string, uint32) (int, error) +pkg syscall (linux-amd64), func DetachLsf(int) error +pkg syscall (linux-amd64), func Dup(int) (int, error) +pkg syscall (linux-amd64), func Dup2(int, int) error +pkg syscall (linux-amd64), func EpollCreate(int) (int, error) +pkg syscall (linux-amd64), func EpollCreate1(int) (int, error) +pkg syscall (linux-amd64), func EpollCtl(int, int, int, *EpollEvent) error +pkg syscall (linux-amd64), func EpollWait(int, []EpollEvent, int) (int, error) +pkg syscall (linux-amd64), func Faccessat(int, string, uint32, int) error +pkg syscall (linux-amd64), func Fallocate(int, uint32, int64, int64) error +pkg syscall (linux-amd64), func Fchdir(int) error +pkg syscall (linux-amd64), func Fchmod(int, uint32) error +pkg syscall (linux-amd64), func Fchmodat(int, string, uint32, int) error +pkg syscall (linux-amd64), func Fchown(int, int, int) error +pkg syscall (linux-amd64), func Fchownat(int, string, int, int, int) error +pkg syscall (linux-amd64), func Fdatasync(int) error +pkg syscall (linux-amd64), func Flock(int, int) error +pkg syscall (linux-amd64), func ForkExec(string, []string, *ProcAttr) (int, error) +pkg syscall (linux-amd64), func Fstat(int, *Stat_t) error +pkg syscall (linux-amd64), func Fstatfs(int, *Statfs_t) error +pkg syscall (linux-amd64), func Fsync(int) error +pkg syscall (linux-amd64), func Ftruncate(int, int64) error +pkg syscall (linux-amd64), func Futimes(int, []Timeval) error +pkg syscall (linux-amd64), func Futimesat(int, string, []Timeval) error +pkg syscall (linux-amd64), func Getcwd([]byte) (int, error) +pkg syscall (linux-amd64), func Getdents(int, []byte) (int, error) +pkg syscall (linux-amd64), func Getpeername(int) (Sockaddr, error) +pkg syscall (linux-amd64), func Getpgid(int) (int, error) +pkg syscall (linux-amd64), func Getpgrp() int +pkg syscall (linux-amd64), func Getrlimit(int, *Rlimit) error +pkg syscall (linux-amd64), func Getrusage(int, *Rusage) error +pkg syscall (linux-amd64), func Getsockname(int) (Sockaddr, error) +pkg syscall (linux-amd64), func GetsockoptIPMreq(int) (*IPMreq, error) +pkg syscall (linux-amd64), func GetsockoptIPMreqn(int) (*IPMreqn, error) +pkg syscall (linux-amd64), func GetsockoptIPv6Mreq(int) (*IPv6Mreq, error) +pkg syscall (linux-amd64), func GetsockoptInet4Addr(int) ([4]byte, error) +pkg syscall (linux-amd64), func GetsockoptInt(int) (int, error) +pkg syscall (linux-amd64), func Gettid() int +pkg syscall (linux-amd64), func InotifyAddWatch(int, string, uint32) (int, error) +pkg syscall (linux-amd64), func InotifyInit() (int, error) +pkg syscall (linux-amd64), func InotifyInit1(int) (int, error) +pkg syscall (linux-amd64), func InotifyRmWatch(int, uint32) (int, error) +pkg syscall (linux-amd64), func Ioperm(int, int, int) error +pkg syscall (linux-amd64), func Iopl(int) error +pkg syscall (linux-amd64), func Kill(int, Signal) error +pkg syscall (linux-amd64), func Klogctl(int, []byte) (int, error) +pkg syscall (linux-amd64), func Link(string, string) error +pkg syscall (linux-amd64), func Listen(int, int) error +pkg syscall (linux-amd64), func LsfJump(int) *SockFilter +pkg syscall (linux-amd64), func LsfSocket(int) (int, error) +pkg syscall (linux-amd64), func LsfStmt(int) *SockFilter +pkg syscall (linux-amd64), func Lstat(string, *Stat_t) error +pkg syscall (linux-amd64), func Madvise([]byte, int) error +pkg syscall (linux-amd64), func Mkdirat(int, string, uint32) error +pkg syscall (linux-amd64), func Mkfifo(string, uint32) error +pkg syscall (linux-amd64), func Mknod(string, uint32, int) error +pkg syscall (linux-amd64), func Mknodat(int, string, uint32, int) error +pkg syscall (linux-amd64), func Mlock([]byte) error +pkg syscall (linux-amd64), func Mlockall(int) error +pkg syscall (linux-amd64), func Mmap(int, int64, int, int, int) ([]byte, error) +pkg syscall (linux-amd64), func Mount(string, string, string, uintptr, string) error +pkg syscall (linux-amd64), func Mprotect([]byte, int) error +pkg syscall (linux-amd64), func Munlock([]byte) error +pkg syscall (linux-amd64), func Munlockall() error +pkg syscall (linux-amd64), func Munmap([]byte) error +pkg syscall (linux-amd64), func Nanosleep(*Timespec, *Timespec) error +pkg syscall (linux-amd64), func NetlinkRIB(int) ([]byte, error) +pkg syscall (linux-amd64), func NsecToTimespec(int64) Timespec +pkg syscall (linux-amd64), func Open(string, int, uint32) (int, error) +pkg syscall (linux-amd64), func Openat(int, string, int, uint32) (int, error) +pkg syscall (linux-amd64), func ParseDirent([]byte, int, []string) (int, int, []string) +pkg syscall (linux-amd64), func ParseNetlinkMessage([]byte) ([]NetlinkMessage, error) +pkg syscall (linux-amd64), func ParseNetlinkRouteAttr(*NetlinkMessage) ([]NetlinkRouteAttr, error) +pkg syscall (linux-amd64), func ParseSocketControlMessage([]byte) ([]SocketControlMessage, error) +pkg syscall (linux-amd64), func ParseUnixCredentials(*SocketControlMessage) (*Ucred, error) +pkg syscall (linux-amd64), func ParseUnixRights(*SocketControlMessage) ([]int, error) +pkg syscall (linux-amd64), func Pause() error +pkg syscall (linux-amd64), func Pipe([]int) error +pkg syscall (linux-amd64), func PivotRoot(string, string) error +pkg syscall (linux-amd64), func Pread(int, []byte, int64) (int, error) +pkg syscall (linux-amd64), func PtraceAttach(int) error +pkg syscall (linux-amd64), func PtraceCont(int, int) error +pkg syscall (linux-amd64), func PtraceDetach(int) error +pkg syscall (linux-amd64), func PtraceGetEventMsg(int) (uint, error) +pkg syscall (linux-amd64), func PtraceGetRegs(int, *PtraceRegs) error +pkg syscall (linux-amd64), func PtracePeekData(int, uintptr, []byte) (int, error) +pkg syscall (linux-amd64), func PtracePeekText(int, uintptr, []byte) (int, error) +pkg syscall (linux-amd64), func PtracePokeData(int, uintptr, []byte) (int, error) +pkg syscall (linux-amd64), func PtracePokeText(int, uintptr, []byte) (int, error) +pkg syscall (linux-amd64), func PtraceSetOptions(int, int) error +pkg syscall (linux-amd64), func PtraceSetRegs(int, *PtraceRegs) error +pkg syscall (linux-amd64), func PtraceSingleStep(int) error +pkg syscall (linux-amd64), func Pwrite(int, []byte, int64) (int, error) +pkg syscall (linux-amd64), func RawSyscall(uintptr) (uintptr, Errno) +pkg syscall (linux-amd64), func RawSyscall6(uintptr) (uintptr, Errno) +pkg syscall (linux-amd64), func Read(int, []byte) (int, error) +pkg syscall (linux-amd64), func ReadDirent(int, []byte) (int, error) +pkg syscall (linux-amd64), func Reboot(int) error +pkg syscall (linux-amd64), func Recvfrom(int, []byte, int) (int, Sockaddr, error) +pkg syscall (linux-amd64), func Recvmsg(int, []byte, int) (int, int, Sockaddr, error) +pkg syscall (linux-amd64), func Rename(string, string) error +pkg syscall (linux-amd64), func Renameat(int, string, int, string) error +pkg syscall (linux-amd64), func Seek(int, int64, int) (int64, error) +pkg syscall (linux-amd64), func Select(int, *FdSet, *FdSet, *FdSet, *Timeval) (int, error) +pkg syscall (linux-amd64), func Sendfile(int, int, *int64, int) (int, error) +pkg syscall (linux-amd64), func Sendmsg(int, []byte, Sockaddr, int) error +pkg syscall (linux-amd64), func Sendto(int, []byte, int, Sockaddr) error +pkg syscall (linux-amd64), func SetLsfPromisc(string, bool) error +pkg syscall (linux-amd64), func SetNonblock(int, bool) error +pkg syscall (linux-amd64), func Setdomainname([]byte) error +pkg syscall (linux-amd64), func Setfsgid(int) error +pkg syscall (linux-amd64), func Setfsuid(int) error +pkg syscall (linux-amd64), func Setgid(int) error +pkg syscall (linux-amd64), func Setgroups([]int) error +pkg syscall (linux-amd64), func Sethostname([]byte) error +pkg syscall (linux-amd64), func Setpgid(int, int) error +pkg syscall (linux-amd64), func Setregid(int, int) error +pkg syscall (linux-amd64), func Setresgid(int, int, int) error +pkg syscall (linux-amd64), func Setresuid(int, int, int) error +pkg syscall (linux-amd64), func Setreuid(int, int) error +pkg syscall (linux-amd64), func Setrlimit(int, *Rlimit) error +pkg syscall (linux-amd64), func Setsid() (int, error) +pkg syscall (linux-amd64), func SetsockoptIPMreq(int, *IPMreq) error +pkg syscall (linux-amd64), func SetsockoptIPMreqn(int, *IPMreqn) error +pkg syscall (linux-amd64), func SetsockoptIPv6Mreq(int, *IPv6Mreq) error +pkg syscall (linux-amd64), func SetsockoptInet4Addr(int, [4]byte) error +pkg syscall (linux-amd64), func SetsockoptInt(int, int) error +pkg syscall (linux-amd64), func SetsockoptLinger(int, *Linger) error +pkg syscall (linux-amd64), func SetsockoptString(int, string) error +pkg syscall (linux-amd64), func SetsockoptTimeval(int, *Timeval) error +pkg syscall (linux-amd64), func Settimeofday(*Timeval) error +pkg syscall (linux-amd64), func Setuid(int) error +pkg syscall (linux-amd64), func Shutdown(int, int) error +pkg syscall (linux-amd64), func Socket(int) (int, error) +pkg syscall (linux-amd64), func Socketpair(int) ([2]int, error) +pkg syscall (linux-amd64), func Splice(int, *int64, int, *int64, int, int) (int64, error) +pkg syscall (linux-amd64), func Stat(string, *Stat_t) error +pkg syscall (linux-amd64), func Statfs(string, *Statfs_t) error +pkg syscall (linux-amd64), func StringSlicePtr([]string) []*byte +pkg syscall (linux-amd64), func Symlink(string, string) error +pkg syscall (linux-amd64), func Sync() +pkg syscall (linux-amd64), func SyncFileRange(int, int64, int64, int) error +pkg syscall (linux-amd64), func Sysinfo(*Sysinfo_t) error +pkg syscall (linux-amd64), func Tee(int, int, int, int) (int64, error) +pkg syscall (linux-amd64), func Tgkill(int, int, Signal) error +pkg syscall (linux-amd64), func Time(*Time_t) (Time_t, error) +pkg syscall (linux-amd64), func Times(*Tms) (uintptr, error) +pkg syscall (linux-amd64), func TimespecToNsec(Timespec) int64 +pkg syscall (linux-amd64), func TimevalToNsec(Timeval) int64 +pkg syscall (linux-amd64), func Truncate(string, int64) error +pkg syscall (linux-amd64), func Umask(int) int +pkg syscall (linux-amd64), func Uname(*Utsname) error +pkg syscall (linux-amd64), func UnixCredentials(*Ucred) []byte +pkg syscall (linux-amd64), func UnixRights(...int) []byte +pkg syscall (linux-amd64), func Unlinkat(int, string) error +pkg syscall (linux-amd64), func Unmount(string, int) error +pkg syscall (linux-amd64), func Unshare(int) error +pkg syscall (linux-amd64), func Ustat(int, *Ustat_t) error +pkg syscall (linux-amd64), func Utime(string, *Utimbuf) error +pkg syscall (linux-amd64), func Wait4(int, *WaitStatus, int, *Rusage) (int, error) +pkg syscall (linux-amd64), func Write(int, []byte) (int, error) +pkg syscall (linux-amd64), method (*Cmsghdr) SetLen(int) +pkg syscall (linux-amd64), method (*Iovec) SetLen(int) +pkg syscall (linux-amd64), method (*Msghdr) SetControllen(int) +pkg syscall (linux-amd64), method (*PtraceRegs) PC() uint64 +pkg syscall (linux-amd64), method (*PtraceRegs) SetPC(uint64) +pkg syscall (linux-amd64), type Cmsghdr struct +pkg syscall (linux-amd64), type Cmsghdr struct, Len uint64 +pkg syscall (linux-amd64), type Cmsghdr struct, Level int32 +pkg syscall (linux-amd64), type Cmsghdr struct, Type int32 +pkg syscall (linux-amd64), type Cmsghdr struct, X__cmsg_data [0]byte +pkg syscall (linux-amd64), type Credential struct +pkg syscall (linux-amd64), type Credential struct, Gid uint32 +pkg syscall (linux-amd64), type Credential struct, Groups []uint32 +pkg syscall (linux-amd64), type Credential struct, Uid uint32 +pkg syscall (linux-amd64), type Dirent struct +pkg syscall (linux-amd64), type Dirent struct, Ino uint64 +pkg syscall (linux-amd64), type Dirent struct, Name [256]int8 +pkg syscall (linux-amd64), type Dirent struct, Off int64 +pkg syscall (linux-amd64), type Dirent struct, Pad_cgo_0 [5]byte +pkg syscall (linux-amd64), type Dirent struct, Reclen uint16 +pkg syscall (linux-amd64), type Dirent struct, Type uint8 +pkg syscall (linux-amd64), type EpollEvent struct +pkg syscall (linux-amd64), type EpollEvent struct, Events uint32 +pkg syscall (linux-amd64), type EpollEvent struct, Fd int32 +pkg syscall (linux-amd64), type EpollEvent struct, Pad int32 +pkg syscall (linux-amd64), type FdSet struct +pkg syscall (linux-amd64), type FdSet struct, Bits [16]int64 +pkg syscall (linux-amd64), type Fsid struct +pkg syscall (linux-amd64), type Fsid struct, X__val [2]int32 +pkg syscall (linux-amd64), type IPMreqn struct +pkg syscall (linux-amd64), type IPMreqn struct, Address [4]byte +pkg syscall (linux-amd64), type IPMreqn struct, Ifindex int32 +pkg syscall (linux-amd64), type IPMreqn struct, Multiaddr [4]byte +pkg syscall (linux-amd64), type IfAddrmsg struct +pkg syscall (linux-amd64), type IfAddrmsg struct, Family uint8 +pkg syscall (linux-amd64), type IfAddrmsg struct, Flags uint8 +pkg syscall (linux-amd64), type IfAddrmsg struct, Index uint32 +pkg syscall (linux-amd64), type IfAddrmsg struct, Prefixlen uint8 +pkg syscall (linux-amd64), type IfAddrmsg struct, Scope uint8 +pkg syscall (linux-amd64), type IfInfomsg struct +pkg syscall (linux-amd64), type IfInfomsg struct, Change uint32 +pkg syscall (linux-amd64), type IfInfomsg struct, Family uint8 +pkg syscall (linux-amd64), type IfInfomsg struct, Flags uint32 +pkg syscall (linux-amd64), type IfInfomsg struct, Index int32 +pkg syscall (linux-amd64), type IfInfomsg struct, Type uint16 +pkg syscall (linux-amd64), type IfInfomsg struct, X__ifi_pad uint8 +pkg syscall (linux-amd64), type Inet4Pktinfo struct +pkg syscall (linux-amd64), type Inet4Pktinfo struct, Addr [4]byte +pkg syscall (linux-amd64), type Inet4Pktinfo struct, Ifindex int32 +pkg syscall (linux-amd64), type Inet4Pktinfo struct, Spec_dst [4]byte +pkg syscall (linux-amd64), type Inet6Pktinfo struct +pkg syscall (linux-amd64), type Inet6Pktinfo struct, Addr [16]byte +pkg syscall (linux-amd64), type Inet6Pktinfo struct, Ifindex uint32 +pkg syscall (linux-amd64), type InotifyEvent struct +pkg syscall (linux-amd64), type InotifyEvent struct, Cookie uint32 +pkg syscall (linux-amd64), type InotifyEvent struct, Len uint32 +pkg syscall (linux-amd64), type InotifyEvent struct, Mask uint32 +pkg syscall (linux-amd64), type InotifyEvent struct, Name [0]byte +pkg syscall (linux-amd64), type InotifyEvent struct, Wd int32 +pkg syscall (linux-amd64), type Iovec struct +pkg syscall (linux-amd64), type Iovec struct, Base *byte +pkg syscall (linux-amd64), type Iovec struct, Len uint64 +pkg syscall (linux-amd64), type Msghdr struct +pkg syscall (linux-amd64), type Msghdr struct, Control *byte +pkg syscall (linux-amd64), type Msghdr struct, Controllen uint64 +pkg syscall (linux-amd64), type Msghdr struct, Flags int32 +pkg syscall (linux-amd64), type Msghdr struct, Iov *Iovec +pkg syscall (linux-amd64), type Msghdr struct, Iovlen uint64 +pkg syscall (linux-amd64), type Msghdr struct, Name *byte +pkg syscall (linux-amd64), type Msghdr struct, Namelen uint32 +pkg syscall (linux-amd64), type Msghdr struct, Pad_cgo_0 [4]byte +pkg syscall (linux-amd64), type Msghdr struct, Pad_cgo_1 [4]byte +pkg syscall (linux-amd64), type NetlinkMessage struct +pkg syscall (linux-amd64), type NetlinkMessage struct, Data []byte +pkg syscall (linux-amd64), type NetlinkMessage struct, Header NlMsghdr +pkg syscall (linux-amd64), type NetlinkRouteAttr struct +pkg syscall (linux-amd64), type NetlinkRouteAttr struct, Attr RtAttr +pkg syscall (linux-amd64), type NetlinkRouteAttr struct, Value []byte +pkg syscall (linux-amd64), type NetlinkRouteRequest struct +pkg syscall (linux-amd64), type NetlinkRouteRequest struct, Data RtGenmsg +pkg syscall (linux-amd64), type NetlinkRouteRequest struct, Header NlMsghdr +pkg syscall (linux-amd64), type NlAttr struct +pkg syscall (linux-amd64), type NlAttr struct, Len uint16 +pkg syscall (linux-amd64), type NlAttr struct, Type uint16 +pkg syscall (linux-amd64), type NlMsgerr struct +pkg syscall (linux-amd64), type NlMsgerr struct, Error int32 +pkg syscall (linux-amd64), type NlMsgerr struct, Msg NlMsghdr +pkg syscall (linux-amd64), type NlMsghdr struct +pkg syscall (linux-amd64), type NlMsghdr struct, Flags uint16 +pkg syscall (linux-amd64), type NlMsghdr struct, Len uint32 +pkg syscall (linux-amd64), type NlMsghdr struct, Pid uint32 +pkg syscall (linux-amd64), type NlMsghdr struct, Seq uint32 +pkg syscall (linux-amd64), type NlMsghdr struct, Type uint16 +pkg syscall (linux-amd64), type PtraceRegs struct +pkg syscall (linux-amd64), type PtraceRegs struct, Cs uint64 +pkg syscall (linux-amd64), type PtraceRegs struct, Ds uint64 +pkg syscall (linux-amd64), type PtraceRegs struct, Eflags uint64 +pkg syscall (linux-amd64), type PtraceRegs struct, Es uint64 +pkg syscall (linux-amd64), type PtraceRegs struct, Fs uint64 +pkg syscall (linux-amd64), type PtraceRegs struct, Fs_base uint64 +pkg syscall (linux-amd64), type PtraceRegs struct, Gs uint64 +pkg syscall (linux-amd64), type PtraceRegs struct, Gs_base uint64 +pkg syscall (linux-amd64), type PtraceRegs struct, Orig_rax uint64 +pkg syscall (linux-amd64), type PtraceRegs struct, R10 uint64 +pkg syscall (linux-amd64), type PtraceRegs struct, R11 uint64 +pkg syscall (linux-amd64), type PtraceRegs struct, R12 uint64 +pkg syscall (linux-amd64), type PtraceRegs struct, R13 uint64 +pkg syscall (linux-amd64), type PtraceRegs struct, R14 uint64 +pkg syscall (linux-amd64), type PtraceRegs struct, R15 uint64 +pkg syscall (linux-amd64), type PtraceRegs struct, R8 uint64 +pkg syscall (linux-amd64), type PtraceRegs struct, R9 uint64 +pkg syscall (linux-amd64), type PtraceRegs struct, Rax uint64 +pkg syscall (linux-amd64), type PtraceRegs struct, Rbp uint64 +pkg syscall (linux-amd64), type PtraceRegs struct, Rbx uint64 +pkg syscall (linux-amd64), type PtraceRegs struct, Rcx uint64 +pkg syscall (linux-amd64), type PtraceRegs struct, Rdi uint64 +pkg syscall (linux-amd64), type PtraceRegs struct, Rdx uint64 +pkg syscall (linux-amd64), type PtraceRegs struct, Rip uint64 +pkg syscall (linux-amd64), type PtraceRegs struct, Rsi uint64 +pkg syscall (linux-amd64), type PtraceRegs struct, Rsp uint64 +pkg syscall (linux-amd64), type PtraceRegs struct, Ss uint64 +pkg syscall (linux-amd64), type RawSockaddr struct, Family uint16 +pkg syscall (linux-amd64), type RawSockaddrAny struct, Pad [96]int8 +pkg syscall (linux-amd64), type RawSockaddrInet4 struct, Family uint16 +pkg syscall (linux-amd64), type RawSockaddrInet4 struct, Zero [8]uint8 +pkg syscall (linux-amd64), type RawSockaddrInet6 struct +pkg syscall (linux-amd64), type RawSockaddrInet6 struct, Addr [16]byte +pkg syscall (linux-amd64), type RawSockaddrInet6 struct, Family uint16 +pkg syscall (linux-amd64), type RawSockaddrInet6 struct, Flowinfo uint32 +pkg syscall (linux-amd64), type RawSockaddrInet6 struct, Port uint16 +pkg syscall (linux-amd64), type RawSockaddrInet6 struct, Scope_id uint32 +pkg syscall (linux-amd64), type RawSockaddrLinklayer struct +pkg syscall (linux-amd64), type RawSockaddrLinklayer struct, Addr [8]uint8 +pkg syscall (linux-amd64), type RawSockaddrLinklayer struct, Family uint16 +pkg syscall (linux-amd64), type RawSockaddrLinklayer struct, Halen uint8 +pkg syscall (linux-amd64), type RawSockaddrLinklayer struct, Hatype uint16 +pkg syscall (linux-amd64), type RawSockaddrLinklayer struct, Ifindex int32 +pkg syscall (linux-amd64), type RawSockaddrLinklayer struct, Pkttype uint8 +pkg syscall (linux-amd64), type RawSockaddrLinklayer struct, Protocol uint16 +pkg syscall (linux-amd64), type RawSockaddrNetlink struct +pkg syscall (linux-amd64), type RawSockaddrNetlink struct, Family uint16 +pkg syscall (linux-amd64), type RawSockaddrNetlink struct, Groups uint32 +pkg syscall (linux-amd64), type RawSockaddrNetlink struct, Pad uint16 +pkg syscall (linux-amd64), type RawSockaddrNetlink struct, Pid uint32 +pkg syscall (linux-amd64), type RawSockaddrUnix struct +pkg syscall (linux-amd64), type RawSockaddrUnix struct, Family uint16 +pkg syscall (linux-amd64), type RawSockaddrUnix struct, Path [108]int8 +pkg syscall (linux-amd64), type Rlimit struct +pkg syscall (linux-amd64), type Rlimit struct, Cur uint64 +pkg syscall (linux-amd64), type Rlimit struct, Max uint64 +pkg syscall (linux-amd64), type RtAttr struct +pkg syscall (linux-amd64), type RtAttr struct, Len uint16 +pkg syscall (linux-amd64), type RtAttr struct, Type uint16 +pkg syscall (linux-amd64), type RtGenmsg struct +pkg syscall (linux-amd64), type RtGenmsg struct, Family uint8 +pkg syscall (linux-amd64), type RtMsg struct +pkg syscall (linux-amd64), type RtMsg struct, Dst_len uint8 +pkg syscall (linux-amd64), type RtMsg struct, Family uint8 +pkg syscall (linux-amd64), type RtMsg struct, Flags uint32 +pkg syscall (linux-amd64), type RtMsg struct, Protocol uint8 +pkg syscall (linux-amd64), type RtMsg struct, Scope uint8 +pkg syscall (linux-amd64), type RtMsg struct, Src_len uint8 +pkg syscall (linux-amd64), type RtMsg struct, Table uint8 +pkg syscall (linux-amd64), type RtMsg struct, Tos uint8 +pkg syscall (linux-amd64), type RtMsg struct, Type uint8 +pkg syscall (linux-amd64), type RtNexthop struct +pkg syscall (linux-amd64), type RtNexthop struct, Flags uint8 +pkg syscall (linux-amd64), type RtNexthop struct, Hops uint8 +pkg syscall (linux-amd64), type RtNexthop struct, Ifindex int32 +pkg syscall (linux-amd64), type RtNexthop struct, Len uint16 +pkg syscall (linux-amd64), type Rusage struct, Idrss int64 +pkg syscall (linux-amd64), type Rusage struct, Inblock int64 +pkg syscall (linux-amd64), type Rusage struct, Isrss int64 +pkg syscall (linux-amd64), type Rusage struct, Ixrss int64 +pkg syscall (linux-amd64), type Rusage struct, Majflt int64 +pkg syscall (linux-amd64), type Rusage struct, Maxrss int64 +pkg syscall (linux-amd64), type Rusage struct, Minflt int64 +pkg syscall (linux-amd64), type Rusage struct, Msgrcv int64 +pkg syscall (linux-amd64), type Rusage struct, Msgsnd int64 +pkg syscall (linux-amd64), type Rusage struct, Nivcsw int64 +pkg syscall (linux-amd64), type Rusage struct, Nsignals int64 +pkg syscall (linux-amd64), type Rusage struct, Nswap int64 +pkg syscall (linux-amd64), type Rusage struct, Nvcsw int64 +pkg syscall (linux-amd64), type Rusage struct, Oublock int64 +pkg syscall (linux-amd64), type Rusage struct, Stime Timeval +pkg syscall (linux-amd64), type Rusage struct, Utime Timeval +pkg syscall (linux-amd64), type SockFilter struct +pkg syscall (linux-amd64), type SockFilter struct, Code uint16 +pkg syscall (linux-amd64), type SockFilter struct, Jf uint8 +pkg syscall (linux-amd64), type SockFilter struct, Jt uint8 +pkg syscall (linux-amd64), type SockFilter struct, K uint32 +pkg syscall (linux-amd64), type SockFprog struct +pkg syscall (linux-amd64), type SockFprog struct, Filter *SockFilter +pkg syscall (linux-amd64), type SockFprog struct, Len uint16 +pkg syscall (linux-amd64), type SockFprog struct, Pad_cgo_0 [6]byte +pkg syscall (linux-amd64), type SockaddrLinklayer struct +pkg syscall (linux-amd64), type SockaddrLinklayer struct, Addr [8]byte +pkg syscall (linux-amd64), type SockaddrLinklayer struct, Halen uint8 +pkg syscall (linux-amd64), type SockaddrLinklayer struct, Hatype uint16 +pkg syscall (linux-amd64), type SockaddrLinklayer struct, Ifindex int +pkg syscall (linux-amd64), type SockaddrLinklayer struct, Pkttype uint8 +pkg syscall (linux-amd64), type SockaddrLinklayer struct, Protocol uint16 +pkg syscall (linux-amd64), type SockaddrNetlink struct +pkg syscall (linux-amd64), type SockaddrNetlink struct, Family uint16 +pkg syscall (linux-amd64), type SockaddrNetlink struct, Groups uint32 +pkg syscall (linux-amd64), type SockaddrNetlink struct, Pad uint16 +pkg syscall (linux-amd64), type SockaddrNetlink struct, Pid uint32 +pkg syscall (linux-amd64), type SocketControlMessage struct +pkg syscall (linux-amd64), type SocketControlMessage struct, Data []byte +pkg syscall (linux-amd64), type SocketControlMessage struct, Header Cmsghdr +pkg syscall (linux-amd64), type Stat_t struct +pkg syscall (linux-amd64), type Stat_t struct, Atim Timespec +pkg syscall (linux-amd64), type Stat_t struct, Blksize int64 +pkg syscall (linux-amd64), type Stat_t struct, Blocks int64 +pkg syscall (linux-amd64), type Stat_t struct, Ctim Timespec +pkg syscall (linux-amd64), type Stat_t struct, Dev uint64 +pkg syscall (linux-amd64), type Stat_t struct, Gid uint32 +pkg syscall (linux-amd64), type Stat_t struct, Ino uint64 +pkg syscall (linux-amd64), type Stat_t struct, Mode uint32 +pkg syscall (linux-amd64), type Stat_t struct, Mtim Timespec +pkg syscall (linux-amd64), type Stat_t struct, Nlink uint64 +pkg syscall (linux-amd64), type Stat_t struct, Rdev uint64 +pkg syscall (linux-amd64), type Stat_t struct, Size int64 +pkg syscall (linux-amd64), type Stat_t struct, Uid uint32 +pkg syscall (linux-amd64), type Stat_t struct, X__pad0 int32 +pkg syscall (linux-amd64), type Stat_t struct, X__unused [3]int64 +pkg syscall (linux-amd64), type Statfs_t struct +pkg syscall (linux-amd64), type Statfs_t struct, Bavail uint64 +pkg syscall (linux-amd64), type Statfs_t struct, Bfree uint64 +pkg syscall (linux-amd64), type Statfs_t struct, Blocks uint64 +pkg syscall (linux-amd64), type Statfs_t struct, Bsize int64 +pkg syscall (linux-amd64), type Statfs_t struct, Ffree uint64 +pkg syscall (linux-amd64), type Statfs_t struct, Files uint64 +pkg syscall (linux-amd64), type Statfs_t struct, Flags int64 +pkg syscall (linux-amd64), type Statfs_t struct, Frsize int64 +pkg syscall (linux-amd64), type Statfs_t struct, Fsid Fsid +pkg syscall (linux-amd64), type Statfs_t struct, Namelen int64 +pkg syscall (linux-amd64), type Statfs_t struct, Spare [4]int64 +pkg syscall (linux-amd64), type Statfs_t struct, Type int64 +pkg syscall (linux-amd64), type SysProcAttr struct, Chroot string +pkg syscall (linux-amd64), type SysProcAttr struct, Credential *Credential +pkg syscall (linux-amd64), type SysProcAttr struct, Noctty bool +pkg syscall (linux-amd64), type SysProcAttr struct, Pdeathsig Signal +pkg syscall (linux-amd64), type SysProcAttr struct, Ptrace bool +pkg syscall (linux-amd64), type SysProcAttr struct, Setctty bool +pkg syscall (linux-amd64), type SysProcAttr struct, Setpgid bool +pkg syscall (linux-amd64), type SysProcAttr struct, Setsid bool +pkg syscall (linux-amd64), type Sysinfo_t struct +pkg syscall (linux-amd64), type Sysinfo_t struct, Bufferram uint64 +pkg syscall (linux-amd64), type Sysinfo_t struct, Freehigh uint64 +pkg syscall (linux-amd64), type Sysinfo_t struct, Freeram uint64 +pkg syscall (linux-amd64), type Sysinfo_t struct, Freeswap uint64 +pkg syscall (linux-amd64), type Sysinfo_t struct, Loads [3]uint64 +pkg syscall (linux-amd64), type Sysinfo_t struct, Pad uint16 +pkg syscall (linux-amd64), type Sysinfo_t struct, Pad_cgo_0 [4]byte +pkg syscall (linux-amd64), type Sysinfo_t struct, Pad_cgo_1 [4]byte +pkg syscall (linux-amd64), type Sysinfo_t struct, Procs uint16 +pkg syscall (linux-amd64), type Sysinfo_t struct, Sharedram uint64 +pkg syscall (linux-amd64), type Sysinfo_t struct, Totalhigh uint64 +pkg syscall (linux-amd64), type Sysinfo_t struct, Totalram uint64 +pkg syscall (linux-amd64), type Sysinfo_t struct, Totalswap uint64 +pkg syscall (linux-amd64), type Sysinfo_t struct, Unit uint32 +pkg syscall (linux-amd64), type Sysinfo_t struct, Uptime int64 +pkg syscall (linux-amd64), type Sysinfo_t struct, X_f [0]byte +pkg syscall (linux-amd64), type Termios struct +pkg syscall (linux-amd64), type Termios struct, Cc [32]uint8 +pkg syscall (linux-amd64), type Termios struct, Cflag uint32 +pkg syscall (linux-amd64), type Termios struct, Iflag uint32 +pkg syscall (linux-amd64), type Termios struct, Ispeed uint32 +pkg syscall (linux-amd64), type Termios struct, Lflag uint32 +pkg syscall (linux-amd64), type Termios struct, Line uint8 +pkg syscall (linux-amd64), type Termios struct, Oflag uint32 +pkg syscall (linux-amd64), type Termios struct, Ospeed uint32 +pkg syscall (linux-amd64), type Termios struct, Pad_cgo_0 [3]byte +pkg syscall (linux-amd64), type Time_t int64 +pkg syscall (linux-amd64), type Timespec struct, Nsec int64 +pkg syscall (linux-amd64), type Timespec struct, Sec int64 +pkg syscall (linux-amd64), type Timeval struct, Sec int64 +pkg syscall (linux-amd64), type Timeval struct, Usec int64 +pkg syscall (linux-amd64), type Timex struct +pkg syscall (linux-amd64), type Timex struct, Calcnt int64 +pkg syscall (linux-amd64), type Timex struct, Constant int64 +pkg syscall (linux-amd64), type Timex struct, Errcnt int64 +pkg syscall (linux-amd64), type Timex struct, Esterror int64 +pkg syscall (linux-amd64), type Timex struct, Freq int64 +pkg syscall (linux-amd64), type Timex struct, Jitcnt int64 +pkg syscall (linux-amd64), type Timex struct, Jitter int64 +pkg syscall (linux-amd64), type Timex struct, Maxerror int64 +pkg syscall (linux-amd64), type Timex struct, Modes uint32 +pkg syscall (linux-amd64), type Timex struct, Offset int64 +pkg syscall (linux-amd64), type Timex struct, Pad_cgo_0 [4]byte +pkg syscall (linux-amd64), type Timex struct, Pad_cgo_1 [4]byte +pkg syscall (linux-amd64), type Timex struct, Pad_cgo_2 [4]byte +pkg syscall (linux-amd64), type Timex struct, Pad_cgo_3 [44]byte +pkg syscall (linux-amd64), type Timex struct, Ppsfreq int64 +pkg syscall (linux-amd64), type Timex struct, Precision int64 +pkg syscall (linux-amd64), type Timex struct, Shift int32 +pkg syscall (linux-amd64), type Timex struct, Stabil int64 +pkg syscall (linux-amd64), type Timex struct, Status int32 +pkg syscall (linux-amd64), type Timex struct, Stbcnt int64 +pkg syscall (linux-amd64), type Timex struct, Tai int32 +pkg syscall (linux-amd64), type Timex struct, Tick int64 +pkg syscall (linux-amd64), type Timex struct, Time Timeval +pkg syscall (linux-amd64), type Timex struct, Tolerance int64 +pkg syscall (linux-amd64), type Tms struct +pkg syscall (linux-amd64), type Tms struct, Cstime int64 +pkg syscall (linux-amd64), type Tms struct, Cutime int64 +pkg syscall (linux-amd64), type Tms struct, Stime int64 +pkg syscall (linux-amd64), type Tms struct, Utime int64 +pkg syscall (linux-amd64), type Ucred struct +pkg syscall (linux-amd64), type Ucred struct, Gid uint32 +pkg syscall (linux-amd64), type Ucred struct, Pid int32 +pkg syscall (linux-amd64), type Ucred struct, Uid uint32 +pkg syscall (linux-amd64), type Ustat_t struct +pkg syscall (linux-amd64), type Ustat_t struct, Fname [6]int8 +pkg syscall (linux-amd64), type Ustat_t struct, Fpack [6]int8 +pkg syscall (linux-amd64), type Ustat_t struct, Pad_cgo_0 [4]byte +pkg syscall (linux-amd64), type Ustat_t struct, Pad_cgo_1 [4]byte +pkg syscall (linux-amd64), type Ustat_t struct, Tfree int32 +pkg syscall (linux-amd64), type Ustat_t struct, Tinode uint64 +pkg syscall (linux-amd64), type Utimbuf struct +pkg syscall (linux-amd64), type Utimbuf struct, Actime int64 +pkg syscall (linux-amd64), type Utimbuf struct, Modtime int64 +pkg syscall (linux-amd64), type Utsname struct +pkg syscall (linux-amd64), type Utsname struct, Domainname [65]int8 +pkg syscall (linux-amd64), type Utsname struct, Machine [65]int8 +pkg syscall (linux-amd64), type Utsname struct, Nodename [65]int8 +pkg syscall (linux-amd64), type Utsname struct, Release [65]int8 +pkg syscall (linux-amd64), type Utsname struct, Sysname [65]int8 +pkg syscall (linux-amd64), type Utsname struct, Version [65]int8 +pkg syscall (linux-amd64), type WaitStatus uint32 +pkg syscall (linux-amd64), var Stderr int +pkg syscall (linux-amd64), var Stdin int +pkg syscall (linux-amd64), var Stdout int +pkg syscall (linux-amd64-cgo), const AF_ALG ideal-int +pkg syscall (linux-amd64-cgo), const AF_APPLETALK ideal-int +pkg syscall (linux-amd64-cgo), const AF_ASH ideal-int +pkg syscall (linux-amd64-cgo), const AF_ATMPVC ideal-int +pkg syscall (linux-amd64-cgo), const AF_ATMSVC ideal-int +pkg syscall (linux-amd64-cgo), const AF_AX25 ideal-int +pkg syscall (linux-amd64-cgo), const AF_BLUETOOTH ideal-int +pkg syscall (linux-amd64-cgo), const AF_BRIDGE ideal-int +pkg syscall (linux-amd64-cgo), const AF_CAIF ideal-int +pkg syscall (linux-amd64-cgo), const AF_CAN ideal-int +pkg syscall (linux-amd64-cgo), const AF_DECnet ideal-int +pkg syscall (linux-amd64-cgo), const AF_ECONET ideal-int +pkg syscall (linux-amd64-cgo), const AF_FILE ideal-int +pkg syscall (linux-amd64-cgo), const AF_IEEE802154 ideal-int +pkg syscall (linux-amd64-cgo), const AF_IPX ideal-int +pkg syscall (linux-amd64-cgo), const AF_IRDA ideal-int +pkg syscall (linux-amd64-cgo), const AF_ISDN ideal-int +pkg syscall (linux-amd64-cgo), const AF_IUCV ideal-int +pkg syscall (linux-amd64-cgo), const AF_KEY ideal-int +pkg syscall (linux-amd64-cgo), const AF_LLC ideal-int +pkg syscall (linux-amd64-cgo), const AF_LOCAL ideal-int +pkg syscall (linux-amd64-cgo), const AF_MAX ideal-int +pkg syscall (linux-amd64-cgo), const AF_NETBEUI ideal-int +pkg syscall (linux-amd64-cgo), const AF_NETLINK ideal-int +pkg syscall (linux-amd64-cgo), const AF_NETROM ideal-int +pkg syscall (linux-amd64-cgo), const AF_PACKET ideal-int +pkg syscall (linux-amd64-cgo), const AF_PHONET ideal-int +pkg syscall (linux-amd64-cgo), const AF_PPPOX ideal-int +pkg syscall (linux-amd64-cgo), const AF_RDS ideal-int +pkg syscall (linux-amd64-cgo), const AF_ROSE ideal-int +pkg syscall (linux-amd64-cgo), const AF_ROUTE ideal-int +pkg syscall (linux-amd64-cgo), const AF_RXRPC ideal-int +pkg syscall (linux-amd64-cgo), const AF_SECURITY ideal-int +pkg syscall (linux-amd64-cgo), const AF_SNA ideal-int +pkg syscall (linux-amd64-cgo), const AF_TIPC ideal-int +pkg syscall (linux-amd64-cgo), const AF_WANPIPE ideal-int +pkg syscall (linux-amd64-cgo), const AF_X25 ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_ADAPT ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_APPLETLK ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_ARCNET ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_ASH ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_ATM ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_AX25 ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_BIF ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_CHAOS ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_CISCO ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_CSLIP ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_CSLIP6 ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_DDCMP ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_DLCI ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_ECONET ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_EETHER ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_ETHER ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_EUI64 ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_FCAL ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_FCFABRIC ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_FCPL ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_FCPP ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_FDDI ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_FRAD ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_HDLC ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_HIPPI ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_HWX25 ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_IEEE1394 ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_IEEE802 ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_IEEE80211 ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_IEEE80211_PRISM ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_IEEE80211_RADIOTAP ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_IEEE802154 ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_IEEE802154_PHY ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_IEEE802_TR ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_INFINIBAND ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_IPDDP ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_IPGRE ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_IRDA ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_LAPB ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_LOCALTLK ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_LOOPBACK ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_METRICOM ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_NETROM ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_NONE ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_PIMREG ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_PPP ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_PRONET ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_RAWHDLC ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_ROSE ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_RSRVD ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_SIT ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_SKIP ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_SLIP ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_SLIP6 ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_TUNNEL ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_TUNNEL6 ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_VOID ideal-int +pkg syscall (linux-amd64-cgo), const ARPHRD_X25 ideal-int +pkg syscall (linux-amd64-cgo), const B0 ideal-int +pkg syscall (linux-amd64-cgo), const B1000000 ideal-int +pkg syscall (linux-amd64-cgo), const B110 ideal-int +pkg syscall (linux-amd64-cgo), const B115200 ideal-int +pkg syscall (linux-amd64-cgo), const B1152000 ideal-int +pkg syscall (linux-amd64-cgo), const B1200 ideal-int +pkg syscall (linux-amd64-cgo), const B134 ideal-int +pkg syscall (linux-amd64-cgo), const B150 ideal-int +pkg syscall (linux-amd64-cgo), const B1500000 ideal-int +pkg syscall (linux-amd64-cgo), const B1800 ideal-int +pkg syscall (linux-amd64-cgo), const B19200 ideal-int +pkg syscall (linux-amd64-cgo), const B200 ideal-int +pkg syscall (linux-amd64-cgo), const B2000000 ideal-int +pkg syscall (linux-amd64-cgo), const B230400 ideal-int +pkg syscall (linux-amd64-cgo), const B2400 ideal-int +pkg syscall (linux-amd64-cgo), const B2500000 ideal-int +pkg syscall (linux-amd64-cgo), const B300 ideal-int +pkg syscall (linux-amd64-cgo), const B3000000 ideal-int +pkg syscall (linux-amd64-cgo), const B3500000 ideal-int +pkg syscall (linux-amd64-cgo), const B38400 ideal-int +pkg syscall (linux-amd64-cgo), const B4000000 ideal-int +pkg syscall (linux-amd64-cgo), const B460800 ideal-int +pkg syscall (linux-amd64-cgo), const B4800 ideal-int +pkg syscall (linux-amd64-cgo), const B50 ideal-int +pkg syscall (linux-amd64-cgo), const B500000 ideal-int +pkg syscall (linux-amd64-cgo), const B57600 ideal-int +pkg syscall (linux-amd64-cgo), const B576000 ideal-int +pkg syscall (linux-amd64-cgo), const B600 ideal-int +pkg syscall (linux-amd64-cgo), const B75 ideal-int +pkg syscall (linux-amd64-cgo), const B921600 ideal-int +pkg syscall (linux-amd64-cgo), const B9600 ideal-int +pkg syscall (linux-amd64-cgo), const BPF_A ideal-int +pkg syscall (linux-amd64-cgo), const BPF_ABS ideal-int +pkg syscall (linux-amd64-cgo), const BPF_ADD ideal-int +pkg syscall (linux-amd64-cgo), const BPF_ALU ideal-int +pkg syscall (linux-amd64-cgo), const BPF_AND ideal-int +pkg syscall (linux-amd64-cgo), const BPF_B ideal-int +pkg syscall (linux-amd64-cgo), const BPF_DIV ideal-int +pkg syscall (linux-amd64-cgo), const BPF_H ideal-int +pkg syscall (linux-amd64-cgo), const BPF_IMM ideal-int +pkg syscall (linux-amd64-cgo), const BPF_IND ideal-int +pkg syscall (linux-amd64-cgo), const BPF_JA ideal-int +pkg syscall (linux-amd64-cgo), const BPF_JEQ ideal-int +pkg syscall (linux-amd64-cgo), const BPF_JGE ideal-int +pkg syscall (linux-amd64-cgo), const BPF_JGT ideal-int +pkg syscall (linux-amd64-cgo), const BPF_JMP ideal-int +pkg syscall (linux-amd64-cgo), const BPF_JSET ideal-int +pkg syscall (linux-amd64-cgo), const BPF_K ideal-int +pkg syscall (linux-amd64-cgo), const BPF_LD ideal-int +pkg syscall (linux-amd64-cgo), const BPF_LDX ideal-int +pkg syscall (linux-amd64-cgo), const BPF_LEN ideal-int +pkg syscall (linux-amd64-cgo), const BPF_LSH ideal-int +pkg syscall (linux-amd64-cgo), const BPF_MAJOR_VERSION ideal-int +pkg syscall (linux-amd64-cgo), const BPF_MAXINSNS ideal-int +pkg syscall (linux-amd64-cgo), const BPF_MEM ideal-int +pkg syscall (linux-amd64-cgo), const BPF_MEMWORDS ideal-int +pkg syscall (linux-amd64-cgo), const BPF_MINOR_VERSION ideal-int +pkg syscall (linux-amd64-cgo), const BPF_MISC ideal-int +pkg syscall (linux-amd64-cgo), const BPF_MSH ideal-int +pkg syscall (linux-amd64-cgo), const BPF_MUL ideal-int +pkg syscall (linux-amd64-cgo), const BPF_NEG ideal-int +pkg syscall (linux-amd64-cgo), const BPF_OR ideal-int +pkg syscall (linux-amd64-cgo), const BPF_RET ideal-int +pkg syscall (linux-amd64-cgo), const BPF_RSH ideal-int +pkg syscall (linux-amd64-cgo), const BPF_ST ideal-int +pkg syscall (linux-amd64-cgo), const BPF_STX ideal-int +pkg syscall (linux-amd64-cgo), const BPF_SUB ideal-int +pkg syscall (linux-amd64-cgo), const BPF_TAX ideal-int +pkg syscall (linux-amd64-cgo), const BPF_TXA ideal-int +pkg syscall (linux-amd64-cgo), const BPF_W ideal-int +pkg syscall (linux-amd64-cgo), const BPF_X ideal-int +pkg syscall (linux-amd64-cgo), const BRKINT ideal-int +pkg syscall (linux-amd64-cgo), const CLOCAL ideal-int +pkg syscall (linux-amd64-cgo), const CREAD ideal-int +pkg syscall (linux-amd64-cgo), const CS5 ideal-int +pkg syscall (linux-amd64-cgo), const CS6 ideal-int +pkg syscall (linux-amd64-cgo), const CS7 ideal-int +pkg syscall (linux-amd64-cgo), const CS8 ideal-int +pkg syscall (linux-amd64-cgo), const CSIZE ideal-int +pkg syscall (linux-amd64-cgo), const CSTOPB ideal-int +pkg syscall (linux-amd64-cgo), const DT_BLK ideal-int +pkg syscall (linux-amd64-cgo), const DT_CHR ideal-int +pkg syscall (linux-amd64-cgo), const DT_DIR ideal-int +pkg syscall (linux-amd64-cgo), const DT_FIFO ideal-int +pkg syscall (linux-amd64-cgo), const DT_LNK ideal-int +pkg syscall (linux-amd64-cgo), const DT_REG ideal-int +pkg syscall (linux-amd64-cgo), const DT_SOCK ideal-int +pkg syscall (linux-amd64-cgo), const DT_UNKNOWN ideal-int +pkg syscall (linux-amd64-cgo), const DT_WHT ideal-int +pkg syscall (linux-amd64-cgo), const EADV Errno +pkg syscall (linux-amd64-cgo), const EBADE Errno +pkg syscall (linux-amd64-cgo), const EBADFD Errno +pkg syscall (linux-amd64-cgo), const EBADR Errno +pkg syscall (linux-amd64-cgo), const EBADRQC Errno +pkg syscall (linux-amd64-cgo), const EBADSLT Errno +pkg syscall (linux-amd64-cgo), const EBFONT Errno +pkg syscall (linux-amd64-cgo), const ECHO ideal-int +pkg syscall (linux-amd64-cgo), const ECHOCTL ideal-int +pkg syscall (linux-amd64-cgo), const ECHOE ideal-int +pkg syscall (linux-amd64-cgo), const ECHOK ideal-int +pkg syscall (linux-amd64-cgo), const ECHOKE ideal-int +pkg syscall (linux-amd64-cgo), const ECHONL ideal-int +pkg syscall (linux-amd64-cgo), const ECHOPRT ideal-int +pkg syscall (linux-amd64-cgo), const ECHRNG Errno +pkg syscall (linux-amd64-cgo), const ECOMM Errno +pkg syscall (linux-amd64-cgo), const EDEADLOCK Errno +pkg syscall (linux-amd64-cgo), const EDOTDOT Errno +pkg syscall (linux-amd64-cgo), const EISNAM Errno +pkg syscall (linux-amd64-cgo), const EKEYEXPIRED Errno +pkg syscall (linux-amd64-cgo), const EKEYREJECTED Errno +pkg syscall (linux-amd64-cgo), const EKEYREVOKED Errno +pkg syscall (linux-amd64-cgo), const EL2HLT Errno +pkg syscall (linux-amd64-cgo), const EL2NSYNC Errno +pkg syscall (linux-amd64-cgo), const EL3HLT Errno +pkg syscall (linux-amd64-cgo), const EL3RST Errno +pkg syscall (linux-amd64-cgo), const ELIBACC Errno +pkg syscall (linux-amd64-cgo), const ELIBBAD Errno +pkg syscall (linux-amd64-cgo), const ELIBEXEC Errno +pkg syscall (linux-amd64-cgo), const ELIBMAX Errno +pkg syscall (linux-amd64-cgo), const ELIBSCN Errno +pkg syscall (linux-amd64-cgo), const ELNRNG Errno +pkg syscall (linux-amd64-cgo), const EMEDIUMTYPE Errno +pkg syscall (linux-amd64-cgo), const ENAVAIL Errno +pkg syscall (linux-amd64-cgo), const ENOANO Errno +pkg syscall (linux-amd64-cgo), const ENOCSI Errno +pkg syscall (linux-amd64-cgo), const ENOKEY Errno +pkg syscall (linux-amd64-cgo), const ENOMEDIUM Errno +pkg syscall (linux-amd64-cgo), const ENONET Errno +pkg syscall (linux-amd64-cgo), const ENOPKG Errno +pkg syscall (linux-amd64-cgo), const ENOTNAM Errno +pkg syscall (linux-amd64-cgo), const ENOTUNIQ Errno +pkg syscall (linux-amd64-cgo), const EPOLLERR ideal-int +pkg syscall (linux-amd64-cgo), const EPOLLET ideal-int +pkg syscall (linux-amd64-cgo), const EPOLLHUP ideal-int +pkg syscall (linux-amd64-cgo), const EPOLLIN ideal-int +pkg syscall (linux-amd64-cgo), const EPOLLMSG ideal-int +pkg syscall (linux-amd64-cgo), const EPOLLONESHOT ideal-int +pkg syscall (linux-amd64-cgo), const EPOLLOUT ideal-int +pkg syscall (linux-amd64-cgo), const EPOLLPRI ideal-int +pkg syscall (linux-amd64-cgo), const EPOLLRDBAND ideal-int +pkg syscall (linux-amd64-cgo), const EPOLLRDHUP ideal-int +pkg syscall (linux-amd64-cgo), const EPOLLRDNORM ideal-int +pkg syscall (linux-amd64-cgo), const EPOLLWRBAND ideal-int +pkg syscall (linux-amd64-cgo), const EPOLLWRNORM ideal-int +pkg syscall (linux-amd64-cgo), const EPOLL_CLOEXEC ideal-int +pkg syscall (linux-amd64-cgo), const EPOLL_CTL_ADD ideal-int +pkg syscall (linux-amd64-cgo), const EPOLL_CTL_DEL ideal-int +pkg syscall (linux-amd64-cgo), const EPOLL_CTL_MOD ideal-int +pkg syscall (linux-amd64-cgo), const EPOLL_NONBLOCK ideal-int +pkg syscall (linux-amd64-cgo), const EREMCHG Errno +pkg syscall (linux-amd64-cgo), const EREMOTEIO Errno +pkg syscall (linux-amd64-cgo), const ERESTART Errno +pkg syscall (linux-amd64-cgo), const ERFKILL Errno +pkg syscall (linux-amd64-cgo), const ESRMNT Errno +pkg syscall (linux-amd64-cgo), const ESTRPIPE Errno +pkg syscall (linux-amd64-cgo), const ETH_P_1588 ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_8021Q ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_802_2 ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_802_3 ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_AARP ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_ALL ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_AOE ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_ARCNET ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_ARP ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_ATALK ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_ATMFATE ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_ATMMPOA ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_AX25 ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_BPQ ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_CAIF ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_CAN ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_CONTROL ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_CUST ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_DDCMP ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_DEC ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_DIAG ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_DNA_DL ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_DNA_RC ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_DNA_RT ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_DSA ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_ECONET ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_EDSA ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_FCOE ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_FIP ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_HDLC ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_IEEE802154 ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_IEEEPUP ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_IEEEPUPAT ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_IP ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_IPV6 ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_IPX ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_IRDA ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_LAT ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_LINK_CTL ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_LOCALTALK ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_LOOP ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_MOBITEX ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_MPLS_MC ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_MPLS_UC ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_PAE ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_PAUSE ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_PHONET ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_PPPTALK ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_PPP_DISC ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_PPP_MP ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_PPP_SES ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_PUP ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_PUPAT ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_RARP ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_SCA ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_SLOW ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_SNAP ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_TEB ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_TIPC ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_TRAILER ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_TR_802_2 ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_WAN_PPP ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_WCCP ideal-int +pkg syscall (linux-amd64-cgo), const ETH_P_X25 ideal-int +pkg syscall (linux-amd64-cgo), const EUCLEAN Errno +pkg syscall (linux-amd64-cgo), const EUNATCH Errno +pkg syscall (linux-amd64-cgo), const EXFULL Errno +pkg syscall (linux-amd64-cgo), const FD_CLOEXEC ideal-int +pkg syscall (linux-amd64-cgo), const FD_SETSIZE ideal-int +pkg syscall (linux-amd64-cgo), const FLUSHO ideal-int +pkg syscall (linux-amd64-cgo), const F_DUPFD ideal-int +pkg syscall (linux-amd64-cgo), const F_DUPFD_CLOEXEC ideal-int +pkg syscall (linux-amd64-cgo), const F_EXLCK ideal-int +pkg syscall (linux-amd64-cgo), const F_GETFD ideal-int +pkg syscall (linux-amd64-cgo), const F_GETFL ideal-int +pkg syscall (linux-amd64-cgo), const F_GETLEASE ideal-int +pkg syscall (linux-amd64-cgo), const F_GETLK ideal-int +pkg syscall (linux-amd64-cgo), const F_GETLK64 ideal-int +pkg syscall (linux-amd64-cgo), const F_GETOWN ideal-int +pkg syscall (linux-amd64-cgo), const F_GETOWN_EX ideal-int +pkg syscall (linux-amd64-cgo), const F_GETPIPE_SZ ideal-int +pkg syscall (linux-amd64-cgo), const F_GETSIG ideal-int +pkg syscall (linux-amd64-cgo), const F_LOCK ideal-int +pkg syscall (linux-amd64-cgo), const F_NOTIFY ideal-int +pkg syscall (linux-amd64-cgo), const F_OK ideal-int +pkg syscall (linux-amd64-cgo), const F_RDLCK ideal-int +pkg syscall (linux-amd64-cgo), const F_SETFD ideal-int +pkg syscall (linux-amd64-cgo), const F_SETFL ideal-int +pkg syscall (linux-amd64-cgo), const F_SETLEASE ideal-int +pkg syscall (linux-amd64-cgo), const F_SETLK ideal-int +pkg syscall (linux-amd64-cgo), const F_SETLK64 ideal-int +pkg syscall (linux-amd64-cgo), const F_SETLKW ideal-int +pkg syscall (linux-amd64-cgo), const F_SETLKW64 ideal-int +pkg syscall (linux-amd64-cgo), const F_SETOWN ideal-int +pkg syscall (linux-amd64-cgo), const F_SETOWN_EX ideal-int +pkg syscall (linux-amd64-cgo), const F_SETPIPE_SZ ideal-int +pkg syscall (linux-amd64-cgo), const F_SETSIG ideal-int +pkg syscall (linux-amd64-cgo), const F_SHLCK ideal-int +pkg syscall (linux-amd64-cgo), const F_TEST ideal-int +pkg syscall (linux-amd64-cgo), const F_TLOCK ideal-int +pkg syscall (linux-amd64-cgo), const F_ULOCK ideal-int +pkg syscall (linux-amd64-cgo), const F_UNLCK ideal-int +pkg syscall (linux-amd64-cgo), const F_WRLCK ideal-int +pkg syscall (linux-amd64-cgo), const HUPCL ideal-int +pkg syscall (linux-amd64-cgo), const ICANON ideal-int +pkg syscall (linux-amd64-cgo), const ICRNL ideal-int +pkg syscall (linux-amd64-cgo), const IEXTEN ideal-int +pkg syscall (linux-amd64-cgo), const IFA_ADDRESS ideal-int +pkg syscall (linux-amd64-cgo), const IFA_ANYCAST ideal-int +pkg syscall (linux-amd64-cgo), const IFA_BROADCAST ideal-int +pkg syscall (linux-amd64-cgo), const IFA_CACHEINFO ideal-int +pkg syscall (linux-amd64-cgo), const IFA_F_DADFAILED ideal-int +pkg syscall (linux-amd64-cgo), const IFA_F_DEPRECATED ideal-int +pkg syscall (linux-amd64-cgo), const IFA_F_HOMEADDRESS ideal-int +pkg syscall (linux-amd64-cgo), const IFA_F_NODAD ideal-int +pkg syscall (linux-amd64-cgo), const IFA_F_OPTIMISTIC ideal-int +pkg syscall (linux-amd64-cgo), const IFA_F_PERMANENT ideal-int +pkg syscall (linux-amd64-cgo), const IFA_F_SECONDARY ideal-int +pkg syscall (linux-amd64-cgo), const IFA_F_TEMPORARY ideal-int +pkg syscall (linux-amd64-cgo), const IFA_F_TENTATIVE ideal-int +pkg syscall (linux-amd64-cgo), const IFA_LABEL ideal-int +pkg syscall (linux-amd64-cgo), const IFA_LOCAL ideal-int +pkg syscall (linux-amd64-cgo), const IFA_MAX ideal-int +pkg syscall (linux-amd64-cgo), const IFA_MULTICAST ideal-int +pkg syscall (linux-amd64-cgo), const IFA_UNSPEC ideal-int +pkg syscall (linux-amd64-cgo), const IFF_ALLMULTI ideal-int +pkg syscall (linux-amd64-cgo), const IFF_AUTOMEDIA ideal-int +pkg syscall (linux-amd64-cgo), const IFF_DEBUG ideal-int +pkg syscall (linux-amd64-cgo), const IFF_DYNAMIC ideal-int +pkg syscall (linux-amd64-cgo), const IFF_MASTER ideal-int +pkg syscall (linux-amd64-cgo), const IFF_NOARP ideal-int +pkg syscall (linux-amd64-cgo), const IFF_NOTRAILERS ideal-int +pkg syscall (linux-amd64-cgo), const IFF_NO_PI ideal-int +pkg syscall (linux-amd64-cgo), const IFF_ONE_QUEUE ideal-int +pkg syscall (linux-amd64-cgo), const IFF_POINTOPOINT ideal-int +pkg syscall (linux-amd64-cgo), const IFF_PORTSEL ideal-int +pkg syscall (linux-amd64-cgo), const IFF_PROMISC ideal-int +pkg syscall (linux-amd64-cgo), const IFF_RUNNING ideal-int +pkg syscall (linux-amd64-cgo), const IFF_SLAVE ideal-int +pkg syscall (linux-amd64-cgo), const IFF_TAP ideal-int +pkg syscall (linux-amd64-cgo), const IFF_TUN ideal-int +pkg syscall (linux-amd64-cgo), const IFF_TUN_EXCL ideal-int +pkg syscall (linux-amd64-cgo), const IFF_VNET_HDR ideal-int +pkg syscall (linux-amd64-cgo), const IFLA_ADDRESS ideal-int +pkg syscall (linux-amd64-cgo), const IFLA_BROADCAST ideal-int +pkg syscall (linux-amd64-cgo), const IFLA_COST ideal-int +pkg syscall (linux-amd64-cgo), const IFLA_IFALIAS ideal-int +pkg syscall (linux-amd64-cgo), const IFLA_IFNAME ideal-int +pkg syscall (linux-amd64-cgo), const IFLA_LINK ideal-int +pkg syscall (linux-amd64-cgo), const IFLA_LINKINFO ideal-int +pkg syscall (linux-amd64-cgo), const IFLA_LINKMODE ideal-int +pkg syscall (linux-amd64-cgo), const IFLA_MAP ideal-int +pkg syscall (linux-amd64-cgo), const IFLA_MASTER ideal-int +pkg syscall (linux-amd64-cgo), const IFLA_MAX ideal-int +pkg syscall (linux-amd64-cgo), const IFLA_MTU ideal-int +pkg syscall (linux-amd64-cgo), const IFLA_NET_NS_PID ideal-int +pkg syscall (linux-amd64-cgo), const IFLA_OPERSTATE ideal-int +pkg syscall (linux-amd64-cgo), const IFLA_PRIORITY ideal-int +pkg syscall (linux-amd64-cgo), const IFLA_PROTINFO ideal-int +pkg syscall (linux-amd64-cgo), const IFLA_QDISC ideal-int +pkg syscall (linux-amd64-cgo), const IFLA_STATS ideal-int +pkg syscall (linux-amd64-cgo), const IFLA_TXQLEN ideal-int +pkg syscall (linux-amd64-cgo), const IFLA_UNSPEC ideal-int +pkg syscall (linux-amd64-cgo), const IFLA_WEIGHT ideal-int +pkg syscall (linux-amd64-cgo), const IFLA_WIRELESS ideal-int +pkg syscall (linux-amd64-cgo), const IFNAMSIZ ideal-int +pkg syscall (linux-amd64-cgo), const IGNBRK ideal-int +pkg syscall (linux-amd64-cgo), const IGNCR ideal-int +pkg syscall (linux-amd64-cgo), const IGNPAR ideal-int +pkg syscall (linux-amd64-cgo), const IMAXBEL ideal-int +pkg syscall (linux-amd64-cgo), const INLCR ideal-int +pkg syscall (linux-amd64-cgo), const INPCK ideal-int +pkg syscall (linux-amd64-cgo), const IN_ACCESS ideal-int +pkg syscall (linux-amd64-cgo), const IN_ALL_EVENTS ideal-int +pkg syscall (linux-amd64-cgo), const IN_ATTRIB ideal-int +pkg syscall (linux-amd64-cgo), const IN_CLASSA_HOST ideal-int +pkg syscall (linux-amd64-cgo), const IN_CLASSA_MAX ideal-int +pkg syscall (linux-amd64-cgo), const IN_CLASSA_NET ideal-int +pkg syscall (linux-amd64-cgo), const IN_CLASSA_NSHIFT ideal-int +pkg syscall (linux-amd64-cgo), const IN_CLASSB_HOST ideal-int +pkg syscall (linux-amd64-cgo), const IN_CLASSB_MAX ideal-int +pkg syscall (linux-amd64-cgo), const IN_CLASSB_NET ideal-int +pkg syscall (linux-amd64-cgo), const IN_CLASSB_NSHIFT ideal-int +pkg syscall (linux-amd64-cgo), const IN_CLASSC_HOST ideal-int +pkg syscall (linux-amd64-cgo), const IN_CLASSC_NET ideal-int +pkg syscall (linux-amd64-cgo), const IN_CLASSC_NSHIFT ideal-int +pkg syscall (linux-amd64-cgo), const IN_CLOEXEC ideal-int +pkg syscall (linux-amd64-cgo), const IN_CLOSE ideal-int +pkg syscall (linux-amd64-cgo), const IN_CLOSE_NOWRITE ideal-int +pkg syscall (linux-amd64-cgo), const IN_CLOSE_WRITE ideal-int +pkg syscall (linux-amd64-cgo), const IN_CREATE ideal-int +pkg syscall (linux-amd64-cgo), const IN_DELETE ideal-int +pkg syscall (linux-amd64-cgo), const IN_DELETE_SELF ideal-int +pkg syscall (linux-amd64-cgo), const IN_DONT_FOLLOW ideal-int +pkg syscall (linux-amd64-cgo), const IN_EXCL_UNLINK ideal-int +pkg syscall (linux-amd64-cgo), const IN_IGNORED ideal-int +pkg syscall (linux-amd64-cgo), const IN_ISDIR ideal-int +pkg syscall (linux-amd64-cgo), const IN_LOOPBACKNET ideal-int +pkg syscall (linux-amd64-cgo), const IN_MASK_ADD ideal-int +pkg syscall (linux-amd64-cgo), const IN_MODIFY ideal-int +pkg syscall (linux-amd64-cgo), const IN_MOVE ideal-int +pkg syscall (linux-amd64-cgo), const IN_MOVED_FROM ideal-int +pkg syscall (linux-amd64-cgo), const IN_MOVED_TO ideal-int +pkg syscall (linux-amd64-cgo), const IN_MOVE_SELF ideal-int +pkg syscall (linux-amd64-cgo), const IN_NONBLOCK ideal-int +pkg syscall (linux-amd64-cgo), const IN_ONESHOT ideal-int +pkg syscall (linux-amd64-cgo), const IN_ONLYDIR ideal-int +pkg syscall (linux-amd64-cgo), const IN_OPEN ideal-int +pkg syscall (linux-amd64-cgo), const IN_Q_OVERFLOW ideal-int +pkg syscall (linux-amd64-cgo), const IN_UNMOUNT ideal-int +pkg syscall (linux-amd64-cgo), const IPPROTO_AH ideal-int +pkg syscall (linux-amd64-cgo), const IPPROTO_COMP ideal-int +pkg syscall (linux-amd64-cgo), const IPPROTO_DCCP ideal-int +pkg syscall (linux-amd64-cgo), const IPPROTO_DSTOPTS ideal-int +pkg syscall (linux-amd64-cgo), const IPPROTO_EGP ideal-int +pkg syscall (linux-amd64-cgo), const IPPROTO_ENCAP ideal-int +pkg syscall (linux-amd64-cgo), const IPPROTO_ESP ideal-int +pkg syscall (linux-amd64-cgo), const IPPROTO_FRAGMENT ideal-int +pkg syscall (linux-amd64-cgo), const IPPROTO_GRE ideal-int +pkg syscall (linux-amd64-cgo), const IPPROTO_HOPOPTS ideal-int +pkg syscall (linux-amd64-cgo), const IPPROTO_ICMP ideal-int +pkg syscall (linux-amd64-cgo), const IPPROTO_ICMPV6 ideal-int +pkg syscall (linux-amd64-cgo), const IPPROTO_IDP ideal-int +pkg syscall (linux-amd64-cgo), const IPPROTO_IGMP ideal-int +pkg syscall (linux-amd64-cgo), const IPPROTO_IPIP ideal-int +pkg syscall (linux-amd64-cgo), const IPPROTO_MTP ideal-int +pkg syscall (linux-amd64-cgo), const IPPROTO_NONE ideal-int +pkg syscall (linux-amd64-cgo), const IPPROTO_PIM ideal-int +pkg syscall (linux-amd64-cgo), const IPPROTO_PUP ideal-int +pkg syscall (linux-amd64-cgo), const IPPROTO_RAW ideal-int +pkg syscall (linux-amd64-cgo), const IPPROTO_ROUTING ideal-int +pkg syscall (linux-amd64-cgo), const IPPROTO_RSVP ideal-int +pkg syscall (linux-amd64-cgo), const IPPROTO_SCTP ideal-int +pkg syscall (linux-amd64-cgo), const IPPROTO_TP ideal-int +pkg syscall (linux-amd64-cgo), const IPPROTO_UDPLITE ideal-int +pkg syscall (linux-amd64-cgo), const IPV6_2292DSTOPTS ideal-int +pkg syscall (linux-amd64-cgo), const IPV6_2292HOPLIMIT ideal-int +pkg syscall (linux-amd64-cgo), const IPV6_2292HOPOPTS ideal-int +pkg syscall (linux-amd64-cgo), const IPV6_2292PKTINFO ideal-int +pkg syscall (linux-amd64-cgo), const IPV6_2292PKTOPTIONS ideal-int +pkg syscall (linux-amd64-cgo), const IPV6_2292RTHDR ideal-int +pkg syscall (linux-amd64-cgo), const IPV6_ADDRFORM ideal-int +pkg syscall (linux-amd64-cgo), const IPV6_ADD_MEMBERSHIP ideal-int +pkg syscall (linux-amd64-cgo), const IPV6_AUTHHDR ideal-int +pkg syscall (linux-amd64-cgo), const IPV6_CHECKSUM ideal-int +pkg syscall (linux-amd64-cgo), const IPV6_DROP_MEMBERSHIP ideal-int +pkg syscall (linux-amd64-cgo), const IPV6_DSTOPTS ideal-int +pkg syscall (linux-amd64-cgo), const IPV6_HOPLIMIT ideal-int +pkg syscall (linux-amd64-cgo), const IPV6_HOPOPTS ideal-int +pkg syscall (linux-amd64-cgo), const IPV6_IPSEC_POLICY ideal-int +pkg syscall (linux-amd64-cgo), const IPV6_JOIN_ANYCAST ideal-int +pkg syscall (linux-amd64-cgo), const IPV6_LEAVE_ANYCAST ideal-int +pkg syscall (linux-amd64-cgo), const IPV6_MTU ideal-int +pkg syscall (linux-amd64-cgo), const IPV6_MTU_DISCOVER ideal-int +pkg syscall (linux-amd64-cgo), const IPV6_NEXTHOP ideal-int +pkg syscall (linux-amd64-cgo), const IPV6_PKTINFO ideal-int +pkg syscall (linux-amd64-cgo), const IPV6_PMTUDISC_DO ideal-int +pkg syscall (linux-amd64-cgo), const IPV6_PMTUDISC_DONT ideal-int +pkg syscall (linux-amd64-cgo), const IPV6_PMTUDISC_PROBE ideal-int +pkg syscall (linux-amd64-cgo), const IPV6_PMTUDISC_WANT ideal-int +pkg syscall (linux-amd64-cgo), const IPV6_RECVDSTOPTS ideal-int +pkg syscall (linux-amd64-cgo), const IPV6_RECVERR ideal-int +pkg syscall (linux-amd64-cgo), const IPV6_RECVHOPLIMIT ideal-int +pkg syscall (linux-amd64-cgo), const IPV6_RECVHOPOPTS ideal-int +pkg syscall (linux-amd64-cgo), const IPV6_RECVPKTINFO ideal-int +pkg syscall (linux-amd64-cgo), const IPV6_RECVRTHDR ideal-int +pkg syscall (linux-amd64-cgo), const IPV6_RECVTCLASS ideal-int +pkg syscall (linux-amd64-cgo), const IPV6_ROUTER_ALERT ideal-int +pkg syscall (linux-amd64-cgo), const IPV6_RTHDR ideal-int +pkg syscall (linux-amd64-cgo), const IPV6_RTHDRDSTOPTS ideal-int +pkg syscall (linux-amd64-cgo), const IPV6_RTHDR_LOOSE ideal-int +pkg syscall (linux-amd64-cgo), const IPV6_RTHDR_STRICT ideal-int +pkg syscall (linux-amd64-cgo), const IPV6_RTHDR_TYPE_0 ideal-int +pkg syscall (linux-amd64-cgo), const IPV6_RXDSTOPTS ideal-int +pkg syscall (linux-amd64-cgo), const IPV6_RXHOPOPTS ideal-int +pkg syscall (linux-amd64-cgo), const IPV6_TCLASS ideal-int +pkg syscall (linux-amd64-cgo), const IPV6_XFRM_POLICY ideal-int +pkg syscall (linux-amd64-cgo), const IP_ADD_SOURCE_MEMBERSHIP ideal-int +pkg syscall (linux-amd64-cgo), const IP_BLOCK_SOURCE ideal-int +pkg syscall (linux-amd64-cgo), const IP_DEFAULT_MULTICAST_LOOP ideal-int +pkg syscall (linux-amd64-cgo), const IP_DEFAULT_MULTICAST_TTL ideal-int +pkg syscall (linux-amd64-cgo), const IP_DF ideal-int +pkg syscall (linux-amd64-cgo), const IP_DROP_SOURCE_MEMBERSHIP ideal-int +pkg syscall (linux-amd64-cgo), const IP_FREEBIND ideal-int +pkg syscall (linux-amd64-cgo), const IP_HDRINCL ideal-int +pkg syscall (linux-amd64-cgo), const IP_IPSEC_POLICY ideal-int +pkg syscall (linux-amd64-cgo), const IP_MAXPACKET ideal-int +pkg syscall (linux-amd64-cgo), const IP_MAX_MEMBERSHIPS ideal-int +pkg syscall (linux-amd64-cgo), const IP_MF ideal-int +pkg syscall (linux-amd64-cgo), const IP_MINTTL ideal-int +pkg syscall (linux-amd64-cgo), const IP_MSFILTER ideal-int +pkg syscall (linux-amd64-cgo), const IP_MSS ideal-int +pkg syscall (linux-amd64-cgo), const IP_MTU ideal-int +pkg syscall (linux-amd64-cgo), const IP_MTU_DISCOVER ideal-int +pkg syscall (linux-amd64-cgo), const IP_OFFMASK ideal-int +pkg syscall (linux-amd64-cgo), const IP_OPTIONS ideal-int +pkg syscall (linux-amd64-cgo), const IP_ORIGDSTADDR ideal-int +pkg syscall (linux-amd64-cgo), const IP_PASSSEC ideal-int +pkg syscall (linux-amd64-cgo), const IP_PKTINFO ideal-int +pkg syscall (linux-amd64-cgo), const IP_PKTOPTIONS ideal-int +pkg syscall (linux-amd64-cgo), const IP_PMTUDISC ideal-int +pkg syscall (linux-amd64-cgo), const IP_PMTUDISC_DO ideal-int +pkg syscall (linux-amd64-cgo), const IP_PMTUDISC_DONT ideal-int +pkg syscall (linux-amd64-cgo), const IP_PMTUDISC_PROBE ideal-int +pkg syscall (linux-amd64-cgo), const IP_PMTUDISC_WANT ideal-int +pkg syscall (linux-amd64-cgo), const IP_RECVERR ideal-int +pkg syscall (linux-amd64-cgo), const IP_RECVOPTS ideal-int +pkg syscall (linux-amd64-cgo), const IP_RECVORIGDSTADDR ideal-int +pkg syscall (linux-amd64-cgo), const IP_RECVRETOPTS ideal-int +pkg syscall (linux-amd64-cgo), const IP_RECVTOS ideal-int +pkg syscall (linux-amd64-cgo), const IP_RECVTTL ideal-int +pkg syscall (linux-amd64-cgo), const IP_RETOPTS ideal-int +pkg syscall (linux-amd64-cgo), const IP_RF ideal-int +pkg syscall (linux-amd64-cgo), const IP_ROUTER_ALERT ideal-int +pkg syscall (linux-amd64-cgo), const IP_TRANSPARENT ideal-int +pkg syscall (linux-amd64-cgo), const IP_UNBLOCK_SOURCE ideal-int +pkg syscall (linux-amd64-cgo), const IP_XFRM_POLICY ideal-int +pkg syscall (linux-amd64-cgo), const ISIG ideal-int +pkg syscall (linux-amd64-cgo), const ISTRIP ideal-int +pkg syscall (linux-amd64-cgo), const IUCLC ideal-int +pkg syscall (linux-amd64-cgo), const IUTF8 ideal-int +pkg syscall (linux-amd64-cgo), const IXANY ideal-int +pkg syscall (linux-amd64-cgo), const IXOFF ideal-int +pkg syscall (linux-amd64-cgo), const IXON ideal-int +pkg syscall (linux-amd64-cgo), const LINUX_REBOOT_CMD_CAD_OFF ideal-int +pkg syscall (linux-amd64-cgo), const LINUX_REBOOT_CMD_CAD_ON ideal-int +pkg syscall (linux-amd64-cgo), const LINUX_REBOOT_CMD_HALT ideal-int +pkg syscall (linux-amd64-cgo), const LINUX_REBOOT_CMD_KEXEC ideal-int +pkg syscall (linux-amd64-cgo), const LINUX_REBOOT_CMD_POWER_OFF ideal-int +pkg syscall (linux-amd64-cgo), const LINUX_REBOOT_CMD_RESTART ideal-int +pkg syscall (linux-amd64-cgo), const LINUX_REBOOT_CMD_RESTART2 ideal-int +pkg syscall (linux-amd64-cgo), const LINUX_REBOOT_CMD_SW_SUSPEND ideal-int +pkg syscall (linux-amd64-cgo), const LINUX_REBOOT_MAGIC1 ideal-int +pkg syscall (linux-amd64-cgo), const LINUX_REBOOT_MAGIC2 ideal-int +pkg syscall (linux-amd64-cgo), const LOCK_EX ideal-int +pkg syscall (linux-amd64-cgo), const LOCK_NB ideal-int +pkg syscall (linux-amd64-cgo), const LOCK_SH ideal-int +pkg syscall (linux-amd64-cgo), const LOCK_UN ideal-int +pkg syscall (linux-amd64-cgo), const MADV_DOFORK ideal-int +pkg syscall (linux-amd64-cgo), const MADV_DONTFORK ideal-int +pkg syscall (linux-amd64-cgo), const MADV_DONTNEED ideal-int +pkg syscall (linux-amd64-cgo), const MADV_HUGEPAGE ideal-int +pkg syscall (linux-amd64-cgo), const MADV_HWPOISON ideal-int +pkg syscall (linux-amd64-cgo), const MADV_MERGEABLE ideal-int +pkg syscall (linux-amd64-cgo), const MADV_NOHUGEPAGE ideal-int +pkg syscall (linux-amd64-cgo), const MADV_NORMAL ideal-int +pkg syscall (linux-amd64-cgo), const MADV_RANDOM ideal-int +pkg syscall (linux-amd64-cgo), const MADV_REMOVE ideal-int +pkg syscall (linux-amd64-cgo), const MADV_SEQUENTIAL ideal-int +pkg syscall (linux-amd64-cgo), const MADV_UNMERGEABLE ideal-int +pkg syscall (linux-amd64-cgo), const MADV_WILLNEED ideal-int +pkg syscall (linux-amd64-cgo), const MAP_32BIT ideal-int +pkg syscall (linux-amd64-cgo), const MAP_ANON ideal-int +pkg syscall (linux-amd64-cgo), const MAP_ANONYMOUS ideal-int +pkg syscall (linux-amd64-cgo), const MAP_DENYWRITE ideal-int +pkg syscall (linux-amd64-cgo), const MAP_EXECUTABLE ideal-int +pkg syscall (linux-amd64-cgo), const MAP_FILE ideal-int +pkg syscall (linux-amd64-cgo), const MAP_FIXED ideal-int +pkg syscall (linux-amd64-cgo), const MAP_GROWSDOWN ideal-int +pkg syscall (linux-amd64-cgo), const MAP_HUGETLB ideal-int +pkg syscall (linux-amd64-cgo), const MAP_LOCKED ideal-int +pkg syscall (linux-amd64-cgo), const MAP_NONBLOCK ideal-int +pkg syscall (linux-amd64-cgo), const MAP_NORESERVE ideal-int +pkg syscall (linux-amd64-cgo), const MAP_POPULATE ideal-int +pkg syscall (linux-amd64-cgo), const MAP_PRIVATE ideal-int +pkg syscall (linux-amd64-cgo), const MAP_SHARED ideal-int +pkg syscall (linux-amd64-cgo), const MAP_STACK ideal-int +pkg syscall (linux-amd64-cgo), const MAP_TYPE ideal-int +pkg syscall (linux-amd64-cgo), const MCL_CURRENT ideal-int +pkg syscall (linux-amd64-cgo), const MCL_FUTURE ideal-int +pkg syscall (linux-amd64-cgo), const MNT_DETACH ideal-int +pkg syscall (linux-amd64-cgo), const MNT_EXPIRE ideal-int +pkg syscall (linux-amd64-cgo), const MNT_FORCE ideal-int +pkg syscall (linux-amd64-cgo), const MSG_CMSG_CLOEXEC ideal-int +pkg syscall (linux-amd64-cgo), const MSG_CONFIRM ideal-int +pkg syscall (linux-amd64-cgo), const MSG_CTRUNC ideal-int +pkg syscall (linux-amd64-cgo), const MSG_DONTROUTE ideal-int +pkg syscall (linux-amd64-cgo), const MSG_DONTWAIT ideal-int +pkg syscall (linux-amd64-cgo), const MSG_EOR ideal-int +pkg syscall (linux-amd64-cgo), const MSG_ERRQUEUE ideal-int +pkg syscall (linux-amd64-cgo), const MSG_FIN ideal-int +pkg syscall (linux-amd64-cgo), const MSG_MORE ideal-int +pkg syscall (linux-amd64-cgo), const MSG_NOSIGNAL ideal-int +pkg syscall (linux-amd64-cgo), const MSG_OOB ideal-int +pkg syscall (linux-amd64-cgo), const MSG_PEEK ideal-int +pkg syscall (linux-amd64-cgo), const MSG_PROXY ideal-int +pkg syscall (linux-amd64-cgo), const MSG_RST ideal-int +pkg syscall (linux-amd64-cgo), const MSG_SYN ideal-int +pkg syscall (linux-amd64-cgo), const MSG_TRUNC ideal-int +pkg syscall (linux-amd64-cgo), const MSG_TRYHARD ideal-int +pkg syscall (linux-amd64-cgo), const MSG_WAITALL ideal-int +pkg syscall (linux-amd64-cgo), const MSG_WAITFORONE ideal-int +pkg syscall (linux-amd64-cgo), const MS_ACTIVE ideal-int +pkg syscall (linux-amd64-cgo), const MS_ASYNC ideal-int +pkg syscall (linux-amd64-cgo), const MS_BIND ideal-int +pkg syscall (linux-amd64-cgo), const MS_DIRSYNC ideal-int +pkg syscall (linux-amd64-cgo), const MS_INVALIDATE ideal-int +pkg syscall (linux-amd64-cgo), const MS_I_VERSION ideal-int +pkg syscall (linux-amd64-cgo), const MS_KERNMOUNT ideal-int +pkg syscall (linux-amd64-cgo), const MS_MANDLOCK ideal-int +pkg syscall (linux-amd64-cgo), const MS_MGC_MSK ideal-int +pkg syscall (linux-amd64-cgo), const MS_MGC_VAL ideal-int +pkg syscall (linux-amd64-cgo), const MS_MOVE ideal-int +pkg syscall (linux-amd64-cgo), const MS_NOATIME ideal-int +pkg syscall (linux-amd64-cgo), const MS_NODEV ideal-int +pkg syscall (linux-amd64-cgo), const MS_NODIRATIME ideal-int +pkg syscall (linux-amd64-cgo), const MS_NOEXEC ideal-int +pkg syscall (linux-amd64-cgo), const MS_NOSUID ideal-int +pkg syscall (linux-amd64-cgo), const MS_NOUSER ideal-int +pkg syscall (linux-amd64-cgo), const MS_POSIXACL ideal-int +pkg syscall (linux-amd64-cgo), const MS_PRIVATE ideal-int +pkg syscall (linux-amd64-cgo), const MS_RDONLY ideal-int +pkg syscall (linux-amd64-cgo), const MS_REC ideal-int +pkg syscall (linux-amd64-cgo), const MS_RELATIME ideal-int +pkg syscall (linux-amd64-cgo), const MS_REMOUNT ideal-int +pkg syscall (linux-amd64-cgo), const MS_RMT_MASK ideal-int +pkg syscall (linux-amd64-cgo), const MS_SHARED ideal-int +pkg syscall (linux-amd64-cgo), const MS_SILENT ideal-int +pkg syscall (linux-amd64-cgo), const MS_SLAVE ideal-int +pkg syscall (linux-amd64-cgo), const MS_STRICTATIME ideal-int +pkg syscall (linux-amd64-cgo), const MS_SYNC ideal-int +pkg syscall (linux-amd64-cgo), const MS_SYNCHRONOUS ideal-int +pkg syscall (linux-amd64-cgo), const MS_UNBINDABLE ideal-int +pkg syscall (linux-amd64-cgo), const NAME_MAX ideal-int +pkg syscall (linux-amd64-cgo), const NETLINK_ADD_MEMBERSHIP ideal-int +pkg syscall (linux-amd64-cgo), const NETLINK_AUDIT ideal-int +pkg syscall (linux-amd64-cgo), const NETLINK_BROADCAST_ERROR ideal-int +pkg syscall (linux-amd64-cgo), const NETLINK_CONNECTOR ideal-int +pkg syscall (linux-amd64-cgo), const NETLINK_DNRTMSG ideal-int +pkg syscall (linux-amd64-cgo), const NETLINK_DROP_MEMBERSHIP ideal-int +pkg syscall (linux-amd64-cgo), const NETLINK_ECRYPTFS ideal-int +pkg syscall (linux-amd64-cgo), const NETLINK_FIB_LOOKUP ideal-int +pkg syscall (linux-amd64-cgo), const NETLINK_FIREWALL ideal-int +pkg syscall (linux-amd64-cgo), const NETLINK_GENERIC ideal-int +pkg syscall (linux-amd64-cgo), const NETLINK_INET_DIAG ideal-int +pkg syscall (linux-amd64-cgo), const NETLINK_IP6_FW ideal-int +pkg syscall (linux-amd64-cgo), const NETLINK_ISCSI ideal-int +pkg syscall (linux-amd64-cgo), const NETLINK_KOBJECT_UEVENT ideal-int +pkg syscall (linux-amd64-cgo), const NETLINK_NETFILTER ideal-int +pkg syscall (linux-amd64-cgo), const NETLINK_NFLOG ideal-int +pkg syscall (linux-amd64-cgo), const NETLINK_NO_ENOBUFS ideal-int +pkg syscall (linux-amd64-cgo), const NETLINK_PKTINFO ideal-int +pkg syscall (linux-amd64-cgo), const NETLINK_ROUTE ideal-int +pkg syscall (linux-amd64-cgo), const NETLINK_SCSITRANSPORT ideal-int +pkg syscall (linux-amd64-cgo), const NETLINK_SELINUX ideal-int +pkg syscall (linux-amd64-cgo), const NETLINK_UNUSED ideal-int +pkg syscall (linux-amd64-cgo), const NETLINK_USERSOCK ideal-int +pkg syscall (linux-amd64-cgo), const NETLINK_XFRM ideal-int +pkg syscall (linux-amd64-cgo), const NLA_ALIGNTO ideal-int +pkg syscall (linux-amd64-cgo), const NLA_F_NESTED ideal-int +pkg syscall (linux-amd64-cgo), const NLA_F_NET_BYTEORDER ideal-int +pkg syscall (linux-amd64-cgo), const NLA_HDRLEN ideal-int +pkg syscall (linux-amd64-cgo), const NLMSG_ALIGNTO ideal-int +pkg syscall (linux-amd64-cgo), const NLMSG_DONE ideal-int +pkg syscall (linux-amd64-cgo), const NLMSG_ERROR ideal-int +pkg syscall (linux-amd64-cgo), const NLMSG_HDRLEN ideal-int +pkg syscall (linux-amd64-cgo), const NLMSG_MIN_TYPE ideal-int +pkg syscall (linux-amd64-cgo), const NLMSG_NOOP ideal-int +pkg syscall (linux-amd64-cgo), const NLMSG_OVERRUN ideal-int +pkg syscall (linux-amd64-cgo), const NLM_F_ACK ideal-int +pkg syscall (linux-amd64-cgo), const NLM_F_APPEND ideal-int +pkg syscall (linux-amd64-cgo), const NLM_F_ATOMIC ideal-int +pkg syscall (linux-amd64-cgo), const NLM_F_CREATE ideal-int +pkg syscall (linux-amd64-cgo), const NLM_F_DUMP ideal-int +pkg syscall (linux-amd64-cgo), const NLM_F_ECHO ideal-int +pkg syscall (linux-amd64-cgo), const NLM_F_EXCL ideal-int +pkg syscall (linux-amd64-cgo), const NLM_F_MATCH ideal-int +pkg syscall (linux-amd64-cgo), const NLM_F_MULTI ideal-int +pkg syscall (linux-amd64-cgo), const NLM_F_REPLACE ideal-int +pkg syscall (linux-amd64-cgo), const NLM_F_REQUEST ideal-int +pkg syscall (linux-amd64-cgo), const NLM_F_ROOT ideal-int +pkg syscall (linux-amd64-cgo), const NOFLSH ideal-int +pkg syscall (linux-amd64-cgo), const OCRNL ideal-int +pkg syscall (linux-amd64-cgo), const OFDEL ideal-int +pkg syscall (linux-amd64-cgo), const OFILL ideal-int +pkg syscall (linux-amd64-cgo), const OLCUC ideal-int +pkg syscall (linux-amd64-cgo), const ONLCR ideal-int +pkg syscall (linux-amd64-cgo), const ONLRET ideal-int +pkg syscall (linux-amd64-cgo), const ONOCR ideal-int +pkg syscall (linux-amd64-cgo), const OPOST ideal-int +pkg syscall (linux-amd64-cgo), const O_ACCMODE ideal-int +pkg syscall (linux-amd64-cgo), const O_DIRECT ideal-int +pkg syscall (linux-amd64-cgo), const O_DIRECTORY ideal-int +pkg syscall (linux-amd64-cgo), const O_DSYNC ideal-int +pkg syscall (linux-amd64-cgo), const O_FSYNC ideal-int +pkg syscall (linux-amd64-cgo), const O_LARGEFILE ideal-int +pkg syscall (linux-amd64-cgo), const O_NDELAY ideal-int +pkg syscall (linux-amd64-cgo), const O_NOATIME ideal-int +pkg syscall (linux-amd64-cgo), const O_NOFOLLOW ideal-int +pkg syscall (linux-amd64-cgo), const O_RSYNC ideal-int +pkg syscall (linux-amd64-cgo), const PACKET_ADD_MEMBERSHIP ideal-int +pkg syscall (linux-amd64-cgo), const PACKET_BROADCAST ideal-int +pkg syscall (linux-amd64-cgo), const PACKET_DROP_MEMBERSHIP ideal-int +pkg syscall (linux-amd64-cgo), const PACKET_FASTROUTE ideal-int +pkg syscall (linux-amd64-cgo), const PACKET_HOST ideal-int +pkg syscall (linux-amd64-cgo), const PACKET_LOOPBACK ideal-int +pkg syscall (linux-amd64-cgo), const PACKET_MR_ALLMULTI ideal-int +pkg syscall (linux-amd64-cgo), const PACKET_MR_MULTICAST ideal-int +pkg syscall (linux-amd64-cgo), const PACKET_MR_PROMISC ideal-int +pkg syscall (linux-amd64-cgo), const PACKET_MULTICAST ideal-int +pkg syscall (linux-amd64-cgo), const PACKET_OTHERHOST ideal-int +pkg syscall (linux-amd64-cgo), const PACKET_OUTGOING ideal-int +pkg syscall (linux-amd64-cgo), const PACKET_RECV_OUTPUT ideal-int +pkg syscall (linux-amd64-cgo), const PACKET_RX_RING ideal-int +pkg syscall (linux-amd64-cgo), const PACKET_STATISTICS ideal-int +pkg syscall (linux-amd64-cgo), const PARENB ideal-int +pkg syscall (linux-amd64-cgo), const PARMRK ideal-int +pkg syscall (linux-amd64-cgo), const PARODD ideal-int +pkg syscall (linux-amd64-cgo), const PENDIN ideal-int +pkg syscall (linux-amd64-cgo), const PROT_EXEC ideal-int +pkg syscall (linux-amd64-cgo), const PROT_GROWSDOWN ideal-int +pkg syscall (linux-amd64-cgo), const PROT_GROWSUP ideal-int +pkg syscall (linux-amd64-cgo), const PROT_NONE ideal-int +pkg syscall (linux-amd64-cgo), const PROT_READ ideal-int +pkg syscall (linux-amd64-cgo), const PROT_WRITE ideal-int +pkg syscall (linux-amd64-cgo), const PR_CAPBSET_DROP ideal-int +pkg syscall (linux-amd64-cgo), const PR_CAPBSET_READ ideal-int +pkg syscall (linux-amd64-cgo), const PR_ENDIAN_BIG ideal-int +pkg syscall (linux-amd64-cgo), const PR_ENDIAN_LITTLE ideal-int +pkg syscall (linux-amd64-cgo), const PR_ENDIAN_PPC_LITTLE ideal-int +pkg syscall (linux-amd64-cgo), const PR_FPEMU_NOPRINT ideal-int +pkg syscall (linux-amd64-cgo), const PR_FPEMU_SIGFPE ideal-int +pkg syscall (linux-amd64-cgo), const PR_FP_EXC_ASYNC ideal-int +pkg syscall (linux-amd64-cgo), const PR_FP_EXC_DISABLED ideal-int +pkg syscall (linux-amd64-cgo), const PR_FP_EXC_DIV ideal-int +pkg syscall (linux-amd64-cgo), const PR_FP_EXC_INV ideal-int +pkg syscall (linux-amd64-cgo), const PR_FP_EXC_NONRECOV ideal-int +pkg syscall (linux-amd64-cgo), const PR_FP_EXC_OVF ideal-int +pkg syscall (linux-amd64-cgo), const PR_FP_EXC_PRECISE ideal-int +pkg syscall (linux-amd64-cgo), const PR_FP_EXC_RES ideal-int +pkg syscall (linux-amd64-cgo), const PR_FP_EXC_SW_ENABLE ideal-int +pkg syscall (linux-amd64-cgo), const PR_FP_EXC_UND ideal-int +pkg syscall (linux-amd64-cgo), const PR_GET_DUMPABLE ideal-int +pkg syscall (linux-amd64-cgo), const PR_GET_ENDIAN ideal-int +pkg syscall (linux-amd64-cgo), const PR_GET_FPEMU ideal-int +pkg syscall (linux-amd64-cgo), const PR_GET_FPEXC ideal-int +pkg syscall (linux-amd64-cgo), const PR_GET_KEEPCAPS ideal-int +pkg syscall (linux-amd64-cgo), const PR_GET_NAME ideal-int +pkg syscall (linux-amd64-cgo), const PR_GET_PDEATHSIG ideal-int +pkg syscall (linux-amd64-cgo), const PR_GET_SECCOMP ideal-int +pkg syscall (linux-amd64-cgo), const PR_GET_SECUREBITS ideal-int +pkg syscall (linux-amd64-cgo), const PR_GET_TIMERSLACK ideal-int +pkg syscall (linux-amd64-cgo), const PR_GET_TIMING ideal-int +pkg syscall (linux-amd64-cgo), const PR_GET_TSC ideal-int +pkg syscall (linux-amd64-cgo), const PR_GET_UNALIGN ideal-int +pkg syscall (linux-amd64-cgo), const PR_MCE_KILL ideal-int +pkg syscall (linux-amd64-cgo), const PR_MCE_KILL_CLEAR ideal-int +pkg syscall (linux-amd64-cgo), const PR_MCE_KILL_DEFAULT ideal-int +pkg syscall (linux-amd64-cgo), const PR_MCE_KILL_EARLY ideal-int +pkg syscall (linux-amd64-cgo), const PR_MCE_KILL_GET ideal-int +pkg syscall (linux-amd64-cgo), const PR_MCE_KILL_LATE ideal-int +pkg syscall (linux-amd64-cgo), const PR_MCE_KILL_SET ideal-int +pkg syscall (linux-amd64-cgo), const PR_SET_DUMPABLE ideal-int +pkg syscall (linux-amd64-cgo), const PR_SET_ENDIAN ideal-int +pkg syscall (linux-amd64-cgo), const PR_SET_FPEMU ideal-int +pkg syscall (linux-amd64-cgo), const PR_SET_FPEXC ideal-int +pkg syscall (linux-amd64-cgo), const PR_SET_KEEPCAPS ideal-int +pkg syscall (linux-amd64-cgo), const PR_SET_NAME ideal-int +pkg syscall (linux-amd64-cgo), const PR_SET_PDEATHSIG ideal-int +pkg syscall (linux-amd64-cgo), const PR_SET_PTRACER ideal-int +pkg syscall (linux-amd64-cgo), const PR_SET_SECCOMP ideal-int +pkg syscall (linux-amd64-cgo), const PR_SET_SECUREBITS ideal-int +pkg syscall (linux-amd64-cgo), const PR_SET_TIMERSLACK ideal-int +pkg syscall (linux-amd64-cgo), const PR_SET_TIMING ideal-int +pkg syscall (linux-amd64-cgo), const PR_SET_TSC ideal-int +pkg syscall (linux-amd64-cgo), const PR_SET_UNALIGN ideal-int +pkg syscall (linux-amd64-cgo), const PR_TASK_PERF_EVENTS_DISABLE ideal-int +pkg syscall (linux-amd64-cgo), const PR_TASK_PERF_EVENTS_ENABLE ideal-int +pkg syscall (linux-amd64-cgo), const PR_TIMING_STATISTICAL ideal-int +pkg syscall (linux-amd64-cgo), const PR_TIMING_TIMESTAMP ideal-int +pkg syscall (linux-amd64-cgo), const PR_TSC_ENABLE ideal-int +pkg syscall (linux-amd64-cgo), const PR_TSC_SIGSEGV ideal-int +pkg syscall (linux-amd64-cgo), const PR_UNALIGN_NOPRINT ideal-int +pkg syscall (linux-amd64-cgo), const PR_UNALIGN_SIGBUS ideal-int +pkg syscall (linux-amd64-cgo), const PTRACE_ARCH_PRCTL ideal-int +pkg syscall (linux-amd64-cgo), const PTRACE_ATTACH ideal-int +pkg syscall (linux-amd64-cgo), const PTRACE_CONT ideal-int +pkg syscall (linux-amd64-cgo), const PTRACE_DETACH ideal-int +pkg syscall (linux-amd64-cgo), const PTRACE_EVENT_CLONE ideal-int +pkg syscall (linux-amd64-cgo), const PTRACE_EVENT_EXEC ideal-int +pkg syscall (linux-amd64-cgo), const PTRACE_EVENT_EXIT ideal-int +pkg syscall (linux-amd64-cgo), const PTRACE_EVENT_FORK ideal-int +pkg syscall (linux-amd64-cgo), const PTRACE_EVENT_VFORK ideal-int +pkg syscall (linux-amd64-cgo), const PTRACE_EVENT_VFORK_DONE ideal-int +pkg syscall (linux-amd64-cgo), const PTRACE_GETEVENTMSG ideal-int +pkg syscall (linux-amd64-cgo), const PTRACE_GETFPREGS ideal-int +pkg syscall (linux-amd64-cgo), const PTRACE_GETFPXREGS ideal-int +pkg syscall (linux-amd64-cgo), const PTRACE_GETREGS ideal-int +pkg syscall (linux-amd64-cgo), const PTRACE_GETREGSET ideal-int +pkg syscall (linux-amd64-cgo), const PTRACE_GETSIGINFO ideal-int +pkg syscall (linux-amd64-cgo), const PTRACE_GET_THREAD_AREA ideal-int +pkg syscall (linux-amd64-cgo), const PTRACE_KILL ideal-int +pkg syscall (linux-amd64-cgo), const PTRACE_OLDSETOPTIONS ideal-int +pkg syscall (linux-amd64-cgo), const PTRACE_O_MASK ideal-int +pkg syscall (linux-amd64-cgo), const PTRACE_O_TRACECLONE ideal-int +pkg syscall (linux-amd64-cgo), const PTRACE_O_TRACEEXEC ideal-int +pkg syscall (linux-amd64-cgo), const PTRACE_O_TRACEEXIT ideal-int +pkg syscall (linux-amd64-cgo), const PTRACE_O_TRACEFORK ideal-int +pkg syscall (linux-amd64-cgo), const PTRACE_O_TRACESYSGOOD ideal-int +pkg syscall (linux-amd64-cgo), const PTRACE_O_TRACEVFORK ideal-int +pkg syscall (linux-amd64-cgo), const PTRACE_O_TRACEVFORKDONE ideal-int +pkg syscall (linux-amd64-cgo), const PTRACE_PEEKDATA ideal-int +pkg syscall (linux-amd64-cgo), const PTRACE_PEEKTEXT ideal-int +pkg syscall (linux-amd64-cgo), const PTRACE_PEEKUSR ideal-int +pkg syscall (linux-amd64-cgo), const PTRACE_POKEDATA ideal-int +pkg syscall (linux-amd64-cgo), const PTRACE_POKETEXT ideal-int +pkg syscall (linux-amd64-cgo), const PTRACE_POKEUSR ideal-int +pkg syscall (linux-amd64-cgo), const PTRACE_SETFPREGS ideal-int +pkg syscall (linux-amd64-cgo), const PTRACE_SETFPXREGS ideal-int +pkg syscall (linux-amd64-cgo), const PTRACE_SETOPTIONS ideal-int +pkg syscall (linux-amd64-cgo), const PTRACE_SETREGS ideal-int +pkg syscall (linux-amd64-cgo), const PTRACE_SETREGSET ideal-int +pkg syscall (linux-amd64-cgo), const PTRACE_SETSIGINFO ideal-int +pkg syscall (linux-amd64-cgo), const PTRACE_SET_THREAD_AREA ideal-int +pkg syscall (linux-amd64-cgo), const PTRACE_SINGLEBLOCK ideal-int +pkg syscall (linux-amd64-cgo), const PTRACE_SINGLESTEP ideal-int +pkg syscall (linux-amd64-cgo), const PTRACE_SYSCALL ideal-int +pkg syscall (linux-amd64-cgo), const PTRACE_SYSEMU ideal-int +pkg syscall (linux-amd64-cgo), const PTRACE_SYSEMU_SINGLESTEP ideal-int +pkg syscall (linux-amd64-cgo), const PTRACE_TRACEME ideal-int +pkg syscall (linux-amd64-cgo), const PathMax ideal-int +pkg syscall (linux-amd64-cgo), const RLIMIT_AS ideal-int +pkg syscall (linux-amd64-cgo), const RLIMIT_CORE ideal-int +pkg syscall (linux-amd64-cgo), const RLIMIT_CPU ideal-int +pkg syscall (linux-amd64-cgo), const RLIMIT_DATA ideal-int +pkg syscall (linux-amd64-cgo), const RLIMIT_FSIZE ideal-int +pkg syscall (linux-amd64-cgo), const RLIMIT_NOFILE ideal-int +pkg syscall (linux-amd64-cgo), const RLIMIT_STACK ideal-int +pkg syscall (linux-amd64-cgo), const RLIM_INFINITY ideal-int +pkg syscall (linux-amd64-cgo), const RTAX_ADVMSS ideal-int +pkg syscall (linux-amd64-cgo), const RTAX_CWND ideal-int +pkg syscall (linux-amd64-cgo), const RTAX_FEATURES ideal-int +pkg syscall (linux-amd64-cgo), const RTAX_FEATURE_ALLFRAG ideal-int +pkg syscall (linux-amd64-cgo), const RTAX_FEATURE_ECN ideal-int +pkg syscall (linux-amd64-cgo), const RTAX_FEATURE_SACK ideal-int +pkg syscall (linux-amd64-cgo), const RTAX_FEATURE_TIMESTAMP ideal-int +pkg syscall (linux-amd64-cgo), const RTAX_HOPLIMIT ideal-int +pkg syscall (linux-amd64-cgo), const RTAX_INITCWND ideal-int +pkg syscall (linux-amd64-cgo), const RTAX_INITRWND ideal-int +pkg syscall (linux-amd64-cgo), const RTAX_LOCK ideal-int +pkg syscall (linux-amd64-cgo), const RTAX_MAX ideal-int +pkg syscall (linux-amd64-cgo), const RTAX_MTU ideal-int +pkg syscall (linux-amd64-cgo), const RTAX_REORDERING ideal-int +pkg syscall (linux-amd64-cgo), const RTAX_RTO_MIN ideal-int +pkg syscall (linux-amd64-cgo), const RTAX_RTT ideal-int +pkg syscall (linux-amd64-cgo), const RTAX_RTTVAR ideal-int +pkg syscall (linux-amd64-cgo), const RTAX_SSTHRESH ideal-int +pkg syscall (linux-amd64-cgo), const RTAX_UNSPEC ideal-int +pkg syscall (linux-amd64-cgo), const RTAX_WINDOW ideal-int +pkg syscall (linux-amd64-cgo), const RTA_ALIGNTO ideal-int +pkg syscall (linux-amd64-cgo), const RTA_CACHEINFO ideal-int +pkg syscall (linux-amd64-cgo), const RTA_DST ideal-int +pkg syscall (linux-amd64-cgo), const RTA_FLOW ideal-int +pkg syscall (linux-amd64-cgo), const RTA_GATEWAY ideal-int +pkg syscall (linux-amd64-cgo), const RTA_IIF ideal-int +pkg syscall (linux-amd64-cgo), const RTA_MAX ideal-int +pkg syscall (linux-amd64-cgo), const RTA_METRICS ideal-int +pkg syscall (linux-amd64-cgo), const RTA_MULTIPATH ideal-int +pkg syscall (linux-amd64-cgo), const RTA_OIF ideal-int +pkg syscall (linux-amd64-cgo), const RTA_PREFSRC ideal-int +pkg syscall (linux-amd64-cgo), const RTA_PRIORITY ideal-int +pkg syscall (linux-amd64-cgo), const RTA_SRC ideal-int +pkg syscall (linux-amd64-cgo), const RTA_TABLE ideal-int +pkg syscall (linux-amd64-cgo), const RTA_UNSPEC ideal-int +pkg syscall (linux-amd64-cgo), const RTCF_DIRECTSRC ideal-int +pkg syscall (linux-amd64-cgo), const RTCF_DOREDIRECT ideal-int +pkg syscall (linux-amd64-cgo), const RTCF_LOG ideal-int +pkg syscall (linux-amd64-cgo), const RTCF_MASQ ideal-int +pkg syscall (linux-amd64-cgo), const RTCF_NAT ideal-int +pkg syscall (linux-amd64-cgo), const RTCF_VALVE ideal-int +pkg syscall (linux-amd64-cgo), const RTF_ADDRCLASSMASK ideal-int +pkg syscall (linux-amd64-cgo), const RTF_ADDRCONF ideal-int +pkg syscall (linux-amd64-cgo), const RTF_ALLONLINK ideal-int +pkg syscall (linux-amd64-cgo), const RTF_BROADCAST ideal-int +pkg syscall (linux-amd64-cgo), const RTF_CACHE ideal-int +pkg syscall (linux-amd64-cgo), const RTF_DEFAULT ideal-int +pkg syscall (linux-amd64-cgo), const RTF_DYNAMIC ideal-int +pkg syscall (linux-amd64-cgo), const RTF_FLOW ideal-int +pkg syscall (linux-amd64-cgo), const RTF_GATEWAY ideal-int +pkg syscall (linux-amd64-cgo), const RTF_HOST ideal-int +pkg syscall (linux-amd64-cgo), const RTF_INTERFACE ideal-int +pkg syscall (linux-amd64-cgo), const RTF_IRTT ideal-int +pkg syscall (linux-amd64-cgo), const RTF_LINKRT ideal-int +pkg syscall (linux-amd64-cgo), const RTF_LOCAL ideal-int +pkg syscall (linux-amd64-cgo), const RTF_MODIFIED ideal-int +pkg syscall (linux-amd64-cgo), const RTF_MSS ideal-int +pkg syscall (linux-amd64-cgo), const RTF_MTU ideal-int +pkg syscall (linux-amd64-cgo), const RTF_MULTICAST ideal-int +pkg syscall (linux-amd64-cgo), const RTF_NAT ideal-int +pkg syscall (linux-amd64-cgo), const RTF_NOFORWARD ideal-int +pkg syscall (linux-amd64-cgo), const RTF_NONEXTHOP ideal-int +pkg syscall (linux-amd64-cgo), const RTF_NOPMTUDISC ideal-int +pkg syscall (linux-amd64-cgo), const RTF_POLICY ideal-int +pkg syscall (linux-amd64-cgo), const RTF_REINSTATE ideal-int +pkg syscall (linux-amd64-cgo), const RTF_REJECT ideal-int +pkg syscall (linux-amd64-cgo), const RTF_STATIC ideal-int +pkg syscall (linux-amd64-cgo), const RTF_THROW ideal-int +pkg syscall (linux-amd64-cgo), const RTF_UP ideal-int +pkg syscall (linux-amd64-cgo), const RTF_WINDOW ideal-int +pkg syscall (linux-amd64-cgo), const RTF_XRESOLVE ideal-int +pkg syscall (linux-amd64-cgo), const RTM_BASE ideal-int +pkg syscall (linux-amd64-cgo), const RTM_DELACTION ideal-int +pkg syscall (linux-amd64-cgo), const RTM_DELADDR ideal-int +pkg syscall (linux-amd64-cgo), const RTM_DELADDRLABEL ideal-int +pkg syscall (linux-amd64-cgo), const RTM_DELLINK ideal-int +pkg syscall (linux-amd64-cgo), const RTM_DELNEIGH ideal-int +pkg syscall (linux-amd64-cgo), const RTM_DELQDISC ideal-int +pkg syscall (linux-amd64-cgo), const RTM_DELROUTE ideal-int +pkg syscall (linux-amd64-cgo), const RTM_DELRULE ideal-int +pkg syscall (linux-amd64-cgo), const RTM_DELTCLASS ideal-int +pkg syscall (linux-amd64-cgo), const RTM_DELTFILTER ideal-int +pkg syscall (linux-amd64-cgo), const RTM_F_CLONED ideal-int +pkg syscall (linux-amd64-cgo), const RTM_F_EQUALIZE ideal-int +pkg syscall (linux-amd64-cgo), const RTM_F_NOTIFY ideal-int +pkg syscall (linux-amd64-cgo), const RTM_F_PREFIX ideal-int +pkg syscall (linux-amd64-cgo), const RTM_GETACTION ideal-int +pkg syscall (linux-amd64-cgo), const RTM_GETADDR ideal-int +pkg syscall (linux-amd64-cgo), const RTM_GETADDRLABEL ideal-int +pkg syscall (linux-amd64-cgo), const RTM_GETANYCAST ideal-int +pkg syscall (linux-amd64-cgo), const RTM_GETDCB ideal-int +pkg syscall (linux-amd64-cgo), const RTM_GETLINK ideal-int +pkg syscall (linux-amd64-cgo), const RTM_GETMULTICAST ideal-int +pkg syscall (linux-amd64-cgo), const RTM_GETNEIGH ideal-int +pkg syscall (linux-amd64-cgo), const RTM_GETNEIGHTBL ideal-int +pkg syscall (linux-amd64-cgo), const RTM_GETQDISC ideal-int +pkg syscall (linux-amd64-cgo), const RTM_GETROUTE ideal-int +pkg syscall (linux-amd64-cgo), const RTM_GETRULE ideal-int +pkg syscall (linux-amd64-cgo), const RTM_GETTCLASS ideal-int +pkg syscall (linux-amd64-cgo), const RTM_GETTFILTER ideal-int +pkg syscall (linux-amd64-cgo), const RTM_MAX ideal-int +pkg syscall (linux-amd64-cgo), const RTM_NEWACTION ideal-int +pkg syscall (linux-amd64-cgo), const RTM_NEWADDR ideal-int +pkg syscall (linux-amd64-cgo), const RTM_NEWADDRLABEL ideal-int +pkg syscall (linux-amd64-cgo), const RTM_NEWLINK ideal-int +pkg syscall (linux-amd64-cgo), const RTM_NEWNDUSEROPT ideal-int +pkg syscall (linux-amd64-cgo), const RTM_NEWNEIGH ideal-int +pkg syscall (linux-amd64-cgo), const RTM_NEWNEIGHTBL ideal-int +pkg syscall (linux-amd64-cgo), const RTM_NEWPREFIX ideal-int +pkg syscall (linux-amd64-cgo), const RTM_NEWQDISC ideal-int +pkg syscall (linux-amd64-cgo), const RTM_NEWROUTE ideal-int +pkg syscall (linux-amd64-cgo), const RTM_NEWRULE ideal-int +pkg syscall (linux-amd64-cgo), const RTM_NEWTCLASS ideal-int +pkg syscall (linux-amd64-cgo), const RTM_NEWTFILTER ideal-int +pkg syscall (linux-amd64-cgo), const RTM_NR_FAMILIES ideal-int +pkg syscall (linux-amd64-cgo), const RTM_NR_MSGTYPES ideal-int +pkg syscall (linux-amd64-cgo), const RTM_SETDCB ideal-int +pkg syscall (linux-amd64-cgo), const RTM_SETLINK ideal-int +pkg syscall (linux-amd64-cgo), const RTM_SETNEIGHTBL ideal-int +pkg syscall (linux-amd64-cgo), const RTNH_ALIGNTO ideal-int +pkg syscall (linux-amd64-cgo), const RTNH_F_DEAD ideal-int +pkg syscall (linux-amd64-cgo), const RTNH_F_ONLINK ideal-int +pkg syscall (linux-amd64-cgo), const RTNH_F_PERVASIVE ideal-int +pkg syscall (linux-amd64-cgo), const RTN_ANYCAST ideal-int +pkg syscall (linux-amd64-cgo), const RTN_BLACKHOLE ideal-int +pkg syscall (linux-amd64-cgo), const RTN_BROADCAST ideal-int +pkg syscall (linux-amd64-cgo), const RTN_LOCAL ideal-int +pkg syscall (linux-amd64-cgo), const RTN_MAX ideal-int +pkg syscall (linux-amd64-cgo), const RTN_MULTICAST ideal-int +pkg syscall (linux-amd64-cgo), const RTN_NAT ideal-int +pkg syscall (linux-amd64-cgo), const RTN_PROHIBIT ideal-int +pkg syscall (linux-amd64-cgo), const RTN_THROW ideal-int +pkg syscall (linux-amd64-cgo), const RTN_UNICAST ideal-int +pkg syscall (linux-amd64-cgo), const RTN_UNREACHABLE ideal-int +pkg syscall (linux-amd64-cgo), const RTN_UNSPEC ideal-int +pkg syscall (linux-amd64-cgo), const RTN_XRESOLVE ideal-int +pkg syscall (linux-amd64-cgo), const RTPROT_BIRD ideal-int +pkg syscall (linux-amd64-cgo), const RTPROT_BOOT ideal-int +pkg syscall (linux-amd64-cgo), const RTPROT_DHCP ideal-int +pkg syscall (linux-amd64-cgo), const RTPROT_DNROUTED ideal-int +pkg syscall (linux-amd64-cgo), const RTPROT_GATED ideal-int +pkg syscall (linux-amd64-cgo), const RTPROT_KERNEL ideal-int +pkg syscall (linux-amd64-cgo), const RTPROT_MRT ideal-int +pkg syscall (linux-amd64-cgo), const RTPROT_NTK ideal-int +pkg syscall (linux-amd64-cgo), const RTPROT_RA ideal-int +pkg syscall (linux-amd64-cgo), const RTPROT_REDIRECT ideal-int +pkg syscall (linux-amd64-cgo), const RTPROT_STATIC ideal-int +pkg syscall (linux-amd64-cgo), const RTPROT_UNSPEC ideal-int +pkg syscall (linux-amd64-cgo), const RTPROT_XORP ideal-int +pkg syscall (linux-amd64-cgo), const RTPROT_ZEBRA ideal-int +pkg syscall (linux-amd64-cgo), const RT_CLASS_DEFAULT ideal-int +pkg syscall (linux-amd64-cgo), const RT_CLASS_LOCAL ideal-int +pkg syscall (linux-amd64-cgo), const RT_CLASS_MAIN ideal-int +pkg syscall (linux-amd64-cgo), const RT_CLASS_MAX ideal-int +pkg syscall (linux-amd64-cgo), const RT_CLASS_UNSPEC ideal-int +pkg syscall (linux-amd64-cgo), const RT_SCOPE_HOST ideal-int +pkg syscall (linux-amd64-cgo), const RT_SCOPE_LINK ideal-int +pkg syscall (linux-amd64-cgo), const RT_SCOPE_NOWHERE ideal-int +pkg syscall (linux-amd64-cgo), const RT_SCOPE_SITE ideal-int +pkg syscall (linux-amd64-cgo), const RT_SCOPE_UNIVERSE ideal-int +pkg syscall (linux-amd64-cgo), const RT_TABLE_COMPAT ideal-int +pkg syscall (linux-amd64-cgo), const RT_TABLE_DEFAULT ideal-int +pkg syscall (linux-amd64-cgo), const RT_TABLE_LOCAL ideal-int +pkg syscall (linux-amd64-cgo), const RT_TABLE_MAIN ideal-int +pkg syscall (linux-amd64-cgo), const RT_TABLE_MAX ideal-int +pkg syscall (linux-amd64-cgo), const RT_TABLE_UNSPEC ideal-int +pkg syscall (linux-amd64-cgo), const RUSAGE_CHILDREN ideal-int +pkg syscall (linux-amd64-cgo), const RUSAGE_SELF ideal-int +pkg syscall (linux-amd64-cgo), const RUSAGE_THREAD ideal-int +pkg syscall (linux-amd64-cgo), const SCM_CREDENTIALS ideal-int +pkg syscall (linux-amd64-cgo), const SCM_RIGHTS ideal-int +pkg syscall (linux-amd64-cgo), const SCM_TIMESTAMP ideal-int +pkg syscall (linux-amd64-cgo), const SCM_TIMESTAMPING ideal-int +pkg syscall (linux-amd64-cgo), const SCM_TIMESTAMPNS ideal-int +pkg syscall (linux-amd64-cgo), const SIGCHLD Signal +pkg syscall (linux-amd64-cgo), const SIGCLD Signal +pkg syscall (linux-amd64-cgo), const SIGCONT Signal +pkg syscall (linux-amd64-cgo), const SIGIO Signal +pkg syscall (linux-amd64-cgo), const SIGIOT Signal +pkg syscall (linux-amd64-cgo), const SIGPOLL Signal +pkg syscall (linux-amd64-cgo), const SIGPROF Signal +pkg syscall (linux-amd64-cgo), const SIGPWR Signal +pkg syscall (linux-amd64-cgo), const SIGSTKFLT Signal +pkg syscall (linux-amd64-cgo), const SIGSTOP Signal +pkg syscall (linux-amd64-cgo), const SIGSYS Signal +pkg syscall (linux-amd64-cgo), const SIGTSTP Signal +pkg syscall (linux-amd64-cgo), const SIGTTIN Signal +pkg syscall (linux-amd64-cgo), const SIGTTOU Signal +pkg syscall (linux-amd64-cgo), const SIGUNUSED Signal +pkg syscall (linux-amd64-cgo), const SIGURG Signal +pkg syscall (linux-amd64-cgo), const SIGUSR1 Signal +pkg syscall (linux-amd64-cgo), const SIGUSR2 Signal +pkg syscall (linux-amd64-cgo), const SIGVTALRM Signal +pkg syscall (linux-amd64-cgo), const SIGWINCH Signal +pkg syscall (linux-amd64-cgo), const SIGXCPU Signal +pkg syscall (linux-amd64-cgo), const SIGXFSZ Signal +pkg syscall (linux-amd64-cgo), const SIOCADDDLCI ideal-int +pkg syscall (linux-amd64-cgo), const SIOCADDMULTI ideal-int +pkg syscall (linux-amd64-cgo), const SIOCADDRT ideal-int +pkg syscall (linux-amd64-cgo), const SIOCATMARK ideal-int +pkg syscall (linux-amd64-cgo), const SIOCDARP ideal-int +pkg syscall (linux-amd64-cgo), const SIOCDELDLCI ideal-int +pkg syscall (linux-amd64-cgo), const SIOCDELMULTI ideal-int +pkg syscall (linux-amd64-cgo), const SIOCDELRT ideal-int +pkg syscall (linux-amd64-cgo), const SIOCDEVPRIVATE ideal-int +pkg syscall (linux-amd64-cgo), const SIOCDIFADDR ideal-int +pkg syscall (linux-amd64-cgo), const SIOCDRARP ideal-int +pkg syscall (linux-amd64-cgo), const SIOCGARP ideal-int +pkg syscall (linux-amd64-cgo), const SIOCGIFADDR ideal-int +pkg syscall (linux-amd64-cgo), const SIOCGIFBR ideal-int +pkg syscall (linux-amd64-cgo), const SIOCGIFBRDADDR ideal-int +pkg syscall (linux-amd64-cgo), const SIOCGIFCONF ideal-int +pkg syscall (linux-amd64-cgo), const SIOCGIFCOUNT ideal-int +pkg syscall (linux-amd64-cgo), const SIOCGIFDSTADDR ideal-int +pkg syscall (linux-amd64-cgo), const SIOCGIFENCAP ideal-int +pkg syscall (linux-amd64-cgo), const SIOCGIFFLAGS ideal-int +pkg syscall (linux-amd64-cgo), const SIOCGIFHWADDR ideal-int +pkg syscall (linux-amd64-cgo), const SIOCGIFINDEX ideal-int +pkg syscall (linux-amd64-cgo), const SIOCGIFMAP ideal-int +pkg syscall (linux-amd64-cgo), const SIOCGIFMEM ideal-int +pkg syscall (linux-amd64-cgo), const SIOCGIFMETRIC ideal-int +pkg syscall (linux-amd64-cgo), const SIOCGIFMTU ideal-int +pkg syscall (linux-amd64-cgo), const SIOCGIFNAME ideal-int +pkg syscall (linux-amd64-cgo), const SIOCGIFNETMASK ideal-int +pkg syscall (linux-amd64-cgo), const SIOCGIFPFLAGS ideal-int +pkg syscall (linux-amd64-cgo), const SIOCGIFSLAVE ideal-int +pkg syscall (linux-amd64-cgo), const SIOCGIFTXQLEN ideal-int +pkg syscall (linux-amd64-cgo), const SIOCGPGRP ideal-int +pkg syscall (linux-amd64-cgo), const SIOCGRARP ideal-int +pkg syscall (linux-amd64-cgo), const SIOCGSTAMP ideal-int +pkg syscall (linux-amd64-cgo), const SIOCGSTAMPNS ideal-int +pkg syscall (linux-amd64-cgo), const SIOCPROTOPRIVATE ideal-int +pkg syscall (linux-amd64-cgo), const SIOCRTMSG ideal-int +pkg syscall (linux-amd64-cgo), const SIOCSARP ideal-int +pkg syscall (linux-amd64-cgo), const SIOCSIFADDR ideal-int +pkg syscall (linux-amd64-cgo), const SIOCSIFBR ideal-int +pkg syscall (linux-amd64-cgo), const SIOCSIFBRDADDR ideal-int +pkg syscall (linux-amd64-cgo), const SIOCSIFDSTADDR ideal-int +pkg syscall (linux-amd64-cgo), const SIOCSIFENCAP ideal-int +pkg syscall (linux-amd64-cgo), const SIOCSIFFLAGS ideal-int +pkg syscall (linux-amd64-cgo), const SIOCSIFHWADDR ideal-int +pkg syscall (linux-amd64-cgo), const SIOCSIFHWBROADCAST ideal-int +pkg syscall (linux-amd64-cgo), const SIOCSIFLINK ideal-int +pkg syscall (linux-amd64-cgo), const SIOCSIFMAP ideal-int +pkg syscall (linux-amd64-cgo), const SIOCSIFMEM ideal-int +pkg syscall (linux-amd64-cgo), const SIOCSIFMETRIC ideal-int +pkg syscall (linux-amd64-cgo), const SIOCSIFMTU ideal-int +pkg syscall (linux-amd64-cgo), const SIOCSIFNAME ideal-int +pkg syscall (linux-amd64-cgo), const SIOCSIFNETMASK ideal-int +pkg syscall (linux-amd64-cgo), const SIOCSIFPFLAGS ideal-int +pkg syscall (linux-amd64-cgo), const SIOCSIFSLAVE ideal-int +pkg syscall (linux-amd64-cgo), const SIOCSIFTXQLEN ideal-int +pkg syscall (linux-amd64-cgo), const SIOCSPGRP ideal-int +pkg syscall (linux-amd64-cgo), const SIOCSRARP ideal-int +pkg syscall (linux-amd64-cgo), const SOCK_CLOEXEC ideal-int +pkg syscall (linux-amd64-cgo), const SOCK_DCCP ideal-int +pkg syscall (linux-amd64-cgo), const SOCK_NONBLOCK ideal-int +pkg syscall (linux-amd64-cgo), const SOCK_PACKET ideal-int +pkg syscall (linux-amd64-cgo), const SOCK_RDM ideal-int +pkg syscall (linux-amd64-cgo), const SOL_AAL ideal-int +pkg syscall (linux-amd64-cgo), const SOL_ATM ideal-int +pkg syscall (linux-amd64-cgo), const SOL_DECNET ideal-int +pkg syscall (linux-amd64-cgo), const SOL_ICMPV6 ideal-int +pkg syscall (linux-amd64-cgo), const SOL_IP ideal-int +pkg syscall (linux-amd64-cgo), const SOL_IPV6 ideal-int +pkg syscall (linux-amd64-cgo), const SOL_IRDA ideal-int +pkg syscall (linux-amd64-cgo), const SOL_PACKET ideal-int +pkg syscall (linux-amd64-cgo), const SOL_RAW ideal-int +pkg syscall (linux-amd64-cgo), const SOL_TCP ideal-int +pkg syscall (linux-amd64-cgo), const SOL_X25 ideal-int +pkg syscall (linux-amd64-cgo), const SO_ACCEPTCONN ideal-int +pkg syscall (linux-amd64-cgo), const SO_ATTACH_FILTER ideal-int +pkg syscall (linux-amd64-cgo), const SO_BINDTODEVICE ideal-int +pkg syscall (linux-amd64-cgo), const SO_BSDCOMPAT ideal-int +pkg syscall (linux-amd64-cgo), const SO_DEBUG ideal-int +pkg syscall (linux-amd64-cgo), const SO_DETACH_FILTER ideal-int +pkg syscall (linux-amd64-cgo), const SO_DOMAIN ideal-int +pkg syscall (linux-amd64-cgo), const SO_ERROR ideal-int +pkg syscall (linux-amd64-cgo), const SO_MARK ideal-int +pkg syscall (linux-amd64-cgo), const SO_NO_CHECK ideal-int +pkg syscall (linux-amd64-cgo), const SO_OOBINLINE ideal-int +pkg syscall (linux-amd64-cgo), const SO_PASSCRED ideal-int +pkg syscall (linux-amd64-cgo), const SO_PASSSEC ideal-int +pkg syscall (linux-amd64-cgo), const SO_PEERCRED ideal-int +pkg syscall (linux-amd64-cgo), const SO_PEERNAME ideal-int +pkg syscall (linux-amd64-cgo), const SO_PEERSEC ideal-int +pkg syscall (linux-amd64-cgo), const SO_PRIORITY ideal-int +pkg syscall (linux-amd64-cgo), const SO_PROTOCOL ideal-int +pkg syscall (linux-amd64-cgo), const SO_RCVBUFFORCE ideal-int +pkg syscall (linux-amd64-cgo), const SO_RCVLOWAT ideal-int +pkg syscall (linux-amd64-cgo), const SO_RCVTIMEO ideal-int +pkg syscall (linux-amd64-cgo), const SO_RXQ_OVFL ideal-int +pkg syscall (linux-amd64-cgo), const SO_SECURITY_AUTHENTICATION ideal-int +pkg syscall (linux-amd64-cgo), const SO_SECURITY_ENCRYPTION_NETWORK ideal-int +pkg syscall (linux-amd64-cgo), const SO_SECURITY_ENCRYPTION_TRANSPORT ideal-int +pkg syscall (linux-amd64-cgo), const SO_SNDBUFFORCE ideal-int +pkg syscall (linux-amd64-cgo), const SO_SNDLOWAT ideal-int +pkg syscall (linux-amd64-cgo), const SO_SNDTIMEO ideal-int +pkg syscall (linux-amd64-cgo), const SO_TIMESTAMP ideal-int +pkg syscall (linux-amd64-cgo), const SO_TIMESTAMPING ideal-int +pkg syscall (linux-amd64-cgo), const SO_TIMESTAMPNS ideal-int +pkg syscall (linux-amd64-cgo), const SO_TYPE ideal-int +pkg syscall (linux-amd64-cgo), const SYS_ACCEPT ideal-int +pkg syscall (linux-amd64-cgo), const SYS_ACCEPT4 ideal-int +pkg syscall (linux-amd64-cgo), const SYS_ACCESS ideal-int +pkg syscall (linux-amd64-cgo), const SYS_ACCT ideal-int +pkg syscall (linux-amd64-cgo), const SYS_ADD_KEY ideal-int +pkg syscall (linux-amd64-cgo), const SYS_ADJTIMEX ideal-int +pkg syscall (linux-amd64-cgo), const SYS_AFS_SYSCALL ideal-int +pkg syscall (linux-amd64-cgo), const SYS_ALARM ideal-int +pkg syscall (linux-amd64-cgo), const SYS_ARCH_PRCTL ideal-int +pkg syscall (linux-amd64-cgo), const SYS_BIND ideal-int +pkg syscall (linux-amd64-cgo), const SYS_BRK ideal-int +pkg syscall (linux-amd64-cgo), const SYS_CAPGET ideal-int +pkg syscall (linux-amd64-cgo), const SYS_CAPSET ideal-int +pkg syscall (linux-amd64-cgo), const SYS_CHDIR ideal-int +pkg syscall (linux-amd64-cgo), const SYS_CHMOD ideal-int +pkg syscall (linux-amd64-cgo), const SYS_CHOWN ideal-int +pkg syscall (linux-amd64-cgo), const SYS_CHROOT ideal-int +pkg syscall (linux-amd64-cgo), const SYS_CLOCK_GETRES ideal-int +pkg syscall (linux-amd64-cgo), const SYS_CLOCK_GETTIME ideal-int +pkg syscall (linux-amd64-cgo), const SYS_CLOCK_NANOSLEEP ideal-int +pkg syscall (linux-amd64-cgo), const SYS_CLOCK_SETTIME ideal-int +pkg syscall (linux-amd64-cgo), const SYS_CLONE ideal-int +pkg syscall (linux-amd64-cgo), const SYS_CLOSE ideal-int +pkg syscall (linux-amd64-cgo), const SYS_CONNECT ideal-int +pkg syscall (linux-amd64-cgo), const SYS_CREAT ideal-int +pkg syscall (linux-amd64-cgo), const SYS_CREATE_MODULE ideal-int +pkg syscall (linux-amd64-cgo), const SYS_DELETE_MODULE ideal-int +pkg syscall (linux-amd64-cgo), const SYS_DUP ideal-int +pkg syscall (linux-amd64-cgo), const SYS_DUP2 ideal-int +pkg syscall (linux-amd64-cgo), const SYS_DUP3 ideal-int +pkg syscall (linux-amd64-cgo), const SYS_EPOLL_CREATE ideal-int +pkg syscall (linux-amd64-cgo), const SYS_EPOLL_CREATE1 ideal-int +pkg syscall (linux-amd64-cgo), const SYS_EPOLL_CTL ideal-int +pkg syscall (linux-amd64-cgo), const SYS_EPOLL_CTL_OLD ideal-int +pkg syscall (linux-amd64-cgo), const SYS_EPOLL_PWAIT ideal-int +pkg syscall (linux-amd64-cgo), const SYS_EPOLL_WAIT ideal-int +pkg syscall (linux-amd64-cgo), const SYS_EPOLL_WAIT_OLD ideal-int +pkg syscall (linux-amd64-cgo), const SYS_EVENTFD ideal-int +pkg syscall (linux-amd64-cgo), const SYS_EVENTFD2 ideal-int +pkg syscall (linux-amd64-cgo), const SYS_EXECVE ideal-int +pkg syscall (linux-amd64-cgo), const SYS_EXIT ideal-int +pkg syscall (linux-amd64-cgo), const SYS_EXIT_GROUP ideal-int +pkg syscall (linux-amd64-cgo), const SYS_FACCESSAT ideal-int +pkg syscall (linux-amd64-cgo), const SYS_FADVISE64 ideal-int +pkg syscall (linux-amd64-cgo), const SYS_FALLOCATE ideal-int +pkg syscall (linux-amd64-cgo), const SYS_FANOTIFY_INIT ideal-int +pkg syscall (linux-amd64-cgo), const SYS_FANOTIFY_MARK ideal-int +pkg syscall (linux-amd64-cgo), const SYS_FCHDIR ideal-int +pkg syscall (linux-amd64-cgo), const SYS_FCHMOD ideal-int +pkg syscall (linux-amd64-cgo), const SYS_FCHMODAT ideal-int +pkg syscall (linux-amd64-cgo), const SYS_FCHOWN ideal-int +pkg syscall (linux-amd64-cgo), const SYS_FCHOWNAT ideal-int +pkg syscall (linux-amd64-cgo), const SYS_FCNTL ideal-int +pkg syscall (linux-amd64-cgo), const SYS_FDATASYNC ideal-int +pkg syscall (linux-amd64-cgo), const SYS_FGETXATTR ideal-int +pkg syscall (linux-amd64-cgo), const SYS_FLISTXATTR ideal-int +pkg syscall (linux-amd64-cgo), const SYS_FLOCK ideal-int +pkg syscall (linux-amd64-cgo), const SYS_FORK ideal-int +pkg syscall (linux-amd64-cgo), const SYS_FREMOVEXATTR ideal-int +pkg syscall (linux-amd64-cgo), const SYS_FSETXATTR ideal-int +pkg syscall (linux-amd64-cgo), const SYS_FSTAT ideal-int +pkg syscall (linux-amd64-cgo), const SYS_FSTATFS ideal-int +pkg syscall (linux-amd64-cgo), const SYS_FSYNC ideal-int +pkg syscall (linux-amd64-cgo), const SYS_FTRUNCATE ideal-int +pkg syscall (linux-amd64-cgo), const SYS_FUTEX ideal-int +pkg syscall (linux-amd64-cgo), const SYS_FUTIMESAT ideal-int +pkg syscall (linux-amd64-cgo), const SYS_GETCWD ideal-int +pkg syscall (linux-amd64-cgo), const SYS_GETDENTS ideal-int +pkg syscall (linux-amd64-cgo), const SYS_GETDENTS64 ideal-int +pkg syscall (linux-amd64-cgo), const SYS_GETEGID ideal-int +pkg syscall (linux-amd64-cgo), const SYS_GETEUID ideal-int +pkg syscall (linux-amd64-cgo), const SYS_GETGID ideal-int +pkg syscall (linux-amd64-cgo), const SYS_GETGROUPS ideal-int +pkg syscall (linux-amd64-cgo), const SYS_GETITIMER ideal-int +pkg syscall (linux-amd64-cgo), const SYS_GETPEERNAME ideal-int +pkg syscall (linux-amd64-cgo), const SYS_GETPGID ideal-int +pkg syscall (linux-amd64-cgo), const SYS_GETPGRP ideal-int +pkg syscall (linux-amd64-cgo), const SYS_GETPID ideal-int +pkg syscall (linux-amd64-cgo), const SYS_GETPMSG ideal-int +pkg syscall (linux-amd64-cgo), const SYS_GETPPID ideal-int +pkg syscall (linux-amd64-cgo), const SYS_GETPRIORITY ideal-int +pkg syscall (linux-amd64-cgo), const SYS_GETRESGID ideal-int +pkg syscall (linux-amd64-cgo), const SYS_GETRESUID ideal-int +pkg syscall (linux-amd64-cgo), const SYS_GETRLIMIT ideal-int +pkg syscall (linux-amd64-cgo), const SYS_GETRUSAGE ideal-int +pkg syscall (linux-amd64-cgo), const SYS_GETSID ideal-int +pkg syscall (linux-amd64-cgo), const SYS_GETSOCKNAME ideal-int +pkg syscall (linux-amd64-cgo), const SYS_GETSOCKOPT ideal-int +pkg syscall (linux-amd64-cgo), const SYS_GETTID ideal-int +pkg syscall (linux-amd64-cgo), const SYS_GETTIMEOFDAY ideal-int +pkg syscall (linux-amd64-cgo), const SYS_GETUID ideal-int +pkg syscall (linux-amd64-cgo), const SYS_GETXATTR ideal-int +pkg syscall (linux-amd64-cgo), const SYS_GET_KERNEL_SYMS ideal-int +pkg syscall (linux-amd64-cgo), const SYS_GET_MEMPOLICY ideal-int +pkg syscall (linux-amd64-cgo), const SYS_GET_ROBUST_LIST ideal-int +pkg syscall (linux-amd64-cgo), const SYS_GET_THREAD_AREA ideal-int +pkg syscall (linux-amd64-cgo), const SYS_INIT_MODULE ideal-int +pkg syscall (linux-amd64-cgo), const SYS_INOTIFY_ADD_WATCH ideal-int +pkg syscall (linux-amd64-cgo), const SYS_INOTIFY_INIT ideal-int +pkg syscall (linux-amd64-cgo), const SYS_INOTIFY_INIT1 ideal-int +pkg syscall (linux-amd64-cgo), const SYS_INOTIFY_RM_WATCH ideal-int +pkg syscall (linux-amd64-cgo), const SYS_IOCTL ideal-int +pkg syscall (linux-amd64-cgo), const SYS_IOPERM ideal-int +pkg syscall (linux-amd64-cgo), const SYS_IOPL ideal-int +pkg syscall (linux-amd64-cgo), const SYS_IOPRIO_GET ideal-int +pkg syscall (linux-amd64-cgo), const SYS_IOPRIO_SET ideal-int +pkg syscall (linux-amd64-cgo), const SYS_IO_CANCEL ideal-int +pkg syscall (linux-amd64-cgo), const SYS_IO_DESTROY ideal-int +pkg syscall (linux-amd64-cgo), const SYS_IO_GETEVENTS ideal-int +pkg syscall (linux-amd64-cgo), const SYS_IO_SETUP ideal-int +pkg syscall (linux-amd64-cgo), const SYS_IO_SUBMIT ideal-int +pkg syscall (linux-amd64-cgo), const SYS_KEXEC_LOAD ideal-int +pkg syscall (linux-amd64-cgo), const SYS_KEYCTL ideal-int +pkg syscall (linux-amd64-cgo), const SYS_KILL ideal-int +pkg syscall (linux-amd64-cgo), const SYS_LCHOWN ideal-int +pkg syscall (linux-amd64-cgo), const SYS_LGETXATTR ideal-int +pkg syscall (linux-amd64-cgo), const SYS_LINK ideal-int +pkg syscall (linux-amd64-cgo), const SYS_LINKAT ideal-int +pkg syscall (linux-amd64-cgo), const SYS_LISTEN ideal-int +pkg syscall (linux-amd64-cgo), const SYS_LISTXATTR ideal-int +pkg syscall (linux-amd64-cgo), const SYS_LLISTXATTR ideal-int +pkg syscall (linux-amd64-cgo), const SYS_LOOKUP_DCOOKIE ideal-int +pkg syscall (linux-amd64-cgo), const SYS_LREMOVEXATTR ideal-int +pkg syscall (linux-amd64-cgo), const SYS_LSEEK ideal-int +pkg syscall (linux-amd64-cgo), const SYS_LSETXATTR ideal-int +pkg syscall (linux-amd64-cgo), const SYS_LSTAT ideal-int +pkg syscall (linux-amd64-cgo), const SYS_MADVISE ideal-int +pkg syscall (linux-amd64-cgo), const SYS_MBIND ideal-int +pkg syscall (linux-amd64-cgo), const SYS_MIGRATE_PAGES ideal-int +pkg syscall (linux-amd64-cgo), const SYS_MINCORE ideal-int +pkg syscall (linux-amd64-cgo), const SYS_MKDIR ideal-int +pkg syscall (linux-amd64-cgo), const SYS_MKDIRAT ideal-int +pkg syscall (linux-amd64-cgo), const SYS_MKNOD ideal-int +pkg syscall (linux-amd64-cgo), const SYS_MKNODAT ideal-int +pkg syscall (linux-amd64-cgo), const SYS_MLOCK ideal-int +pkg syscall (linux-amd64-cgo), const SYS_MLOCKALL ideal-int +pkg syscall (linux-amd64-cgo), const SYS_MMAP ideal-int +pkg syscall (linux-amd64-cgo), const SYS_MODIFY_LDT ideal-int +pkg syscall (linux-amd64-cgo), const SYS_MOUNT ideal-int +pkg syscall (linux-amd64-cgo), const SYS_MOVE_PAGES ideal-int +pkg syscall (linux-amd64-cgo), const SYS_MPROTECT ideal-int +pkg syscall (linux-amd64-cgo), const SYS_MQ_GETSETATTR ideal-int +pkg syscall (linux-amd64-cgo), const SYS_MQ_NOTIFY ideal-int +pkg syscall (linux-amd64-cgo), const SYS_MQ_OPEN ideal-int +pkg syscall (linux-amd64-cgo), const SYS_MQ_TIMEDRECEIVE ideal-int +pkg syscall (linux-amd64-cgo), const SYS_MQ_TIMEDSEND ideal-int +pkg syscall (linux-amd64-cgo), const SYS_MQ_UNLINK ideal-int +pkg syscall (linux-amd64-cgo), const SYS_MREMAP ideal-int +pkg syscall (linux-amd64-cgo), const SYS_MSGCTL ideal-int +pkg syscall (linux-amd64-cgo), const SYS_MSGGET ideal-int +pkg syscall (linux-amd64-cgo), const SYS_MSGRCV ideal-int +pkg syscall (linux-amd64-cgo), const SYS_MSGSND ideal-int +pkg syscall (linux-amd64-cgo), const SYS_MSYNC ideal-int +pkg syscall (linux-amd64-cgo), const SYS_MUNLOCK ideal-int +pkg syscall (linux-amd64-cgo), const SYS_MUNLOCKALL ideal-int +pkg syscall (linux-amd64-cgo), const SYS_MUNMAP ideal-int +pkg syscall (linux-amd64-cgo), const SYS_NANOSLEEP ideal-int +pkg syscall (linux-amd64-cgo), const SYS_NEWFSTATAT ideal-int +pkg syscall (linux-amd64-cgo), const SYS_NFSSERVCTL ideal-int +pkg syscall (linux-amd64-cgo), const SYS_OPEN ideal-int +pkg syscall (linux-amd64-cgo), const SYS_OPENAT ideal-int +pkg syscall (linux-amd64-cgo), const SYS_PAUSE ideal-int +pkg syscall (linux-amd64-cgo), const SYS_PERF_EVENT_OPEN ideal-int +pkg syscall (linux-amd64-cgo), const SYS_PERSONALITY ideal-int +pkg syscall (linux-amd64-cgo), const SYS_PIPE ideal-int +pkg syscall (linux-amd64-cgo), const SYS_PIPE2 ideal-int +pkg syscall (linux-amd64-cgo), const SYS_PIVOT_ROOT ideal-int +pkg syscall (linux-amd64-cgo), const SYS_POLL ideal-int +pkg syscall (linux-amd64-cgo), const SYS_PPOLL ideal-int +pkg syscall (linux-amd64-cgo), const SYS_PRCTL ideal-int +pkg syscall (linux-amd64-cgo), const SYS_PREAD64 ideal-int +pkg syscall (linux-amd64-cgo), const SYS_PREADV ideal-int +pkg syscall (linux-amd64-cgo), const SYS_PRLIMIT64 ideal-int +pkg syscall (linux-amd64-cgo), const SYS_PSELECT6 ideal-int +pkg syscall (linux-amd64-cgo), const SYS_PTRACE ideal-int +pkg syscall (linux-amd64-cgo), const SYS_PUTPMSG ideal-int +pkg syscall (linux-amd64-cgo), const SYS_PWRITE64 ideal-int +pkg syscall (linux-amd64-cgo), const SYS_PWRITEV ideal-int +pkg syscall (linux-amd64-cgo), const SYS_QUERY_MODULE ideal-int +pkg syscall (linux-amd64-cgo), const SYS_QUOTACTL ideal-int +pkg syscall (linux-amd64-cgo), const SYS_READ ideal-int +pkg syscall (linux-amd64-cgo), const SYS_READAHEAD ideal-int +pkg syscall (linux-amd64-cgo), const SYS_READLINK ideal-int +pkg syscall (linux-amd64-cgo), const SYS_READLINKAT ideal-int +pkg syscall (linux-amd64-cgo), const SYS_READV ideal-int +pkg syscall (linux-amd64-cgo), const SYS_REBOOT ideal-int +pkg syscall (linux-amd64-cgo), const SYS_RECVFROM ideal-int +pkg syscall (linux-amd64-cgo), const SYS_RECVMMSG ideal-int +pkg syscall (linux-amd64-cgo), const SYS_RECVMSG ideal-int +pkg syscall (linux-amd64-cgo), const SYS_REMAP_FILE_PAGES ideal-int +pkg syscall (linux-amd64-cgo), const SYS_REMOVEXATTR ideal-int +pkg syscall (linux-amd64-cgo), const SYS_RENAME ideal-int +pkg syscall (linux-amd64-cgo), const SYS_RENAMEAT ideal-int +pkg syscall (linux-amd64-cgo), const SYS_REQUEST_KEY ideal-int +pkg syscall (linux-amd64-cgo), const SYS_RESTART_SYSCALL ideal-int +pkg syscall (linux-amd64-cgo), const SYS_RMDIR ideal-int +pkg syscall (linux-amd64-cgo), const SYS_RT_SIGACTION ideal-int +pkg syscall (linux-amd64-cgo), const SYS_RT_SIGPENDING ideal-int +pkg syscall (linux-amd64-cgo), const SYS_RT_SIGPROCMASK ideal-int +pkg syscall (linux-amd64-cgo), const SYS_RT_SIGQUEUEINFO ideal-int +pkg syscall (linux-amd64-cgo), const SYS_RT_SIGRETURN ideal-int +pkg syscall (linux-amd64-cgo), const SYS_RT_SIGSUSPEND ideal-int +pkg syscall (linux-amd64-cgo), const SYS_RT_SIGTIMEDWAIT ideal-int +pkg syscall (linux-amd64-cgo), const SYS_RT_TGSIGQUEUEINFO ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SCHED_GETAFFINITY ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SCHED_GETPARAM ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SCHED_GETSCHEDULER ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SCHED_GET_PRIORITY_MAX ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SCHED_GET_PRIORITY_MIN ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SCHED_RR_GET_INTERVAL ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SCHED_SETAFFINITY ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SCHED_SETPARAM ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SCHED_SETSCHEDULER ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SCHED_YIELD ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SECURITY ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SELECT ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SEMCTL ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SEMGET ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SEMOP ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SEMTIMEDOP ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SENDFILE ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SENDMSG ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SENDTO ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SETDOMAINNAME ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SETFSGID ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SETFSUID ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SETGID ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SETGROUPS ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SETHOSTNAME ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SETITIMER ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SETPGID ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SETPRIORITY ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SETREGID ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SETRESGID ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SETRESUID ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SETREUID ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SETRLIMIT ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SETSID ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SETSOCKOPT ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SETTIMEOFDAY ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SETUID ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SETXATTR ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SET_MEMPOLICY ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SET_ROBUST_LIST ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SET_THREAD_AREA ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SET_TID_ADDRESS ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SHMAT ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SHMCTL ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SHMDT ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SHMGET ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SHUTDOWN ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SIGALTSTACK ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SIGNALFD ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SIGNALFD4 ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SOCKET ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SOCKETPAIR ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SPLICE ideal-int +pkg syscall (linux-amd64-cgo), const SYS_STAT ideal-int +pkg syscall (linux-amd64-cgo), const SYS_STATFS ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SWAPOFF ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SWAPON ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SYMLINK ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SYMLINKAT ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SYNC ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SYNC_FILE_RANGE ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SYSFS ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SYSINFO ideal-int +pkg syscall (linux-amd64-cgo), const SYS_SYSLOG ideal-int +pkg syscall (linux-amd64-cgo), const SYS_TEE ideal-int +pkg syscall (linux-amd64-cgo), const SYS_TGKILL ideal-int +pkg syscall (linux-amd64-cgo), const SYS_TIME ideal-int +pkg syscall (linux-amd64-cgo), const SYS_TIMERFD_CREATE ideal-int +pkg syscall (linux-amd64-cgo), const SYS_TIMERFD_GETTIME ideal-int +pkg syscall (linux-amd64-cgo), const SYS_TIMERFD_SETTIME ideal-int +pkg syscall (linux-amd64-cgo), const SYS_TIMER_CREATE ideal-int +pkg syscall (linux-amd64-cgo), const SYS_TIMER_DELETE ideal-int +pkg syscall (linux-amd64-cgo), const SYS_TIMER_GETOVERRUN ideal-int +pkg syscall (linux-amd64-cgo), const SYS_TIMER_GETTIME ideal-int +pkg syscall (linux-amd64-cgo), const SYS_TIMER_SETTIME ideal-int +pkg syscall (linux-amd64-cgo), const SYS_TIMES ideal-int +pkg syscall (linux-amd64-cgo), const SYS_TKILL ideal-int +pkg syscall (linux-amd64-cgo), const SYS_TRUNCATE ideal-int +pkg syscall (linux-amd64-cgo), const SYS_TUXCALL ideal-int +pkg syscall (linux-amd64-cgo), const SYS_UMASK ideal-int +pkg syscall (linux-amd64-cgo), const SYS_UMOUNT2 ideal-int +pkg syscall (linux-amd64-cgo), const SYS_UNAME ideal-int +pkg syscall (linux-amd64-cgo), const SYS_UNLINK ideal-int +pkg syscall (linux-amd64-cgo), const SYS_UNLINKAT ideal-int +pkg syscall (linux-amd64-cgo), const SYS_UNSHARE ideal-int +pkg syscall (linux-amd64-cgo), const SYS_USELIB ideal-int +pkg syscall (linux-amd64-cgo), const SYS_USTAT ideal-int +pkg syscall (linux-amd64-cgo), const SYS_UTIME ideal-int +pkg syscall (linux-amd64-cgo), const SYS_UTIMENSAT ideal-int +pkg syscall (linux-amd64-cgo), const SYS_UTIMES ideal-int +pkg syscall (linux-amd64-cgo), const SYS_VFORK ideal-int +pkg syscall (linux-amd64-cgo), const SYS_VHANGUP ideal-int +pkg syscall (linux-amd64-cgo), const SYS_VMSPLICE ideal-int +pkg syscall (linux-amd64-cgo), const SYS_VSERVER ideal-int +pkg syscall (linux-amd64-cgo), const SYS_WAIT4 ideal-int +pkg syscall (linux-amd64-cgo), const SYS_WAITID ideal-int +pkg syscall (linux-amd64-cgo), const SYS_WRITE ideal-int +pkg syscall (linux-amd64-cgo), const SYS_WRITEV ideal-int +pkg syscall (linux-amd64-cgo), const SYS__SYSCTL ideal-int +pkg syscall (linux-amd64-cgo), const S_BLKSIZE ideal-int +pkg syscall (linux-amd64-cgo), const S_IEXEC ideal-int +pkg syscall (linux-amd64-cgo), const S_IREAD ideal-int +pkg syscall (linux-amd64-cgo), const S_IRGRP ideal-int +pkg syscall (linux-amd64-cgo), const S_IROTH ideal-int +pkg syscall (linux-amd64-cgo), const S_IRWXG ideal-int +pkg syscall (linux-amd64-cgo), const S_IRWXO ideal-int +pkg syscall (linux-amd64-cgo), const S_IRWXU ideal-int +pkg syscall (linux-amd64-cgo), const S_IWGRP ideal-int +pkg syscall (linux-amd64-cgo), const S_IWOTH ideal-int +pkg syscall (linux-amd64-cgo), const S_IXGRP ideal-int +pkg syscall (linux-amd64-cgo), const S_IXOTH ideal-int +pkg syscall (linux-amd64-cgo), const SizeofCmsghdr ideal-int +pkg syscall (linux-amd64-cgo), const SizeofIPMreq ideal-int +pkg syscall (linux-amd64-cgo), const SizeofIPMreqn ideal-int +pkg syscall (linux-amd64-cgo), const SizeofIPv6Mreq ideal-int +pkg syscall (linux-amd64-cgo), const SizeofIfAddrmsg ideal-int +pkg syscall (linux-amd64-cgo), const SizeofIfInfomsg ideal-int +pkg syscall (linux-amd64-cgo), const SizeofInet4Pktinfo ideal-int +pkg syscall (linux-amd64-cgo), const SizeofInet6Pktinfo ideal-int +pkg syscall (linux-amd64-cgo), const SizeofInotifyEvent ideal-int +pkg syscall (linux-amd64-cgo), const SizeofLinger ideal-int +pkg syscall (linux-amd64-cgo), const SizeofMsghdr ideal-int +pkg syscall (linux-amd64-cgo), const SizeofNlAttr ideal-int +pkg syscall (linux-amd64-cgo), const SizeofNlMsgerr ideal-int +pkg syscall (linux-amd64-cgo), const SizeofNlMsghdr ideal-int +pkg syscall (linux-amd64-cgo), const SizeofRtAttr ideal-int +pkg syscall (linux-amd64-cgo), const SizeofRtGenmsg ideal-int +pkg syscall (linux-amd64-cgo), const SizeofRtMsg ideal-int +pkg syscall (linux-amd64-cgo), const SizeofRtNexthop ideal-int +pkg syscall (linux-amd64-cgo), const SizeofSockFilter ideal-int +pkg syscall (linux-amd64-cgo), const SizeofSockFprog ideal-int +pkg syscall (linux-amd64-cgo), const SizeofSockaddrAny ideal-int +pkg syscall (linux-amd64-cgo), const SizeofSockaddrInet4 ideal-int +pkg syscall (linux-amd64-cgo), const SizeofSockaddrInet6 ideal-int +pkg syscall (linux-amd64-cgo), const SizeofSockaddrLinklayer ideal-int +pkg syscall (linux-amd64-cgo), const SizeofSockaddrNetlink ideal-int +pkg syscall (linux-amd64-cgo), const SizeofSockaddrUnix ideal-int +pkg syscall (linux-amd64-cgo), const SizeofUcred ideal-int +pkg syscall (linux-amd64-cgo), const TCGETS ideal-int +pkg syscall (linux-amd64-cgo), const TCP_CONGESTION ideal-int +pkg syscall (linux-amd64-cgo), const TCP_CORK ideal-int +pkg syscall (linux-amd64-cgo), const TCP_DEFER_ACCEPT ideal-int +pkg syscall (linux-amd64-cgo), const TCP_INFO ideal-int +pkg syscall (linux-amd64-cgo), const TCP_KEEPCNT ideal-int +pkg syscall (linux-amd64-cgo), const TCP_KEEPIDLE ideal-int +pkg syscall (linux-amd64-cgo), const TCP_KEEPINTVL ideal-int +pkg syscall (linux-amd64-cgo), const TCP_LINGER2 ideal-int +pkg syscall (linux-amd64-cgo), const TCP_MAXSEG ideal-int +pkg syscall (linux-amd64-cgo), const TCP_MAXWIN ideal-int +pkg syscall (linux-amd64-cgo), const TCP_MAX_WINSHIFT ideal-int +pkg syscall (linux-amd64-cgo), const TCP_MD5SIG ideal-int +pkg syscall (linux-amd64-cgo), const TCP_MD5SIG_MAXKEYLEN ideal-int +pkg syscall (linux-amd64-cgo), const TCP_MSS ideal-int +pkg syscall (linux-amd64-cgo), const TCP_QUICKACK ideal-int +pkg syscall (linux-amd64-cgo), const TCP_SYNCNT ideal-int +pkg syscall (linux-amd64-cgo), const TCP_WINDOW_CLAMP ideal-int +pkg syscall (linux-amd64-cgo), const TCSETS ideal-int +pkg syscall (linux-amd64-cgo), const TIOCCBRK ideal-int +pkg syscall (linux-amd64-cgo), const TIOCCONS ideal-int +pkg syscall (linux-amd64-cgo), const TIOCEXCL ideal-int +pkg syscall (linux-amd64-cgo), const TIOCGDEV ideal-int +pkg syscall (linux-amd64-cgo), const TIOCGETD ideal-int +pkg syscall (linux-amd64-cgo), const TIOCGICOUNT ideal-int +pkg syscall (linux-amd64-cgo), const TIOCGLCKTRMIOS ideal-int +pkg syscall (linux-amd64-cgo), const TIOCGPGRP ideal-int +pkg syscall (linux-amd64-cgo), const TIOCGPTN ideal-int +pkg syscall (linux-amd64-cgo), const TIOCGRS485 ideal-int +pkg syscall (linux-amd64-cgo), const TIOCGSERIAL ideal-int +pkg syscall (linux-amd64-cgo), const TIOCGSID ideal-int +pkg syscall (linux-amd64-cgo), const TIOCGSOFTCAR ideal-int +pkg syscall (linux-amd64-cgo), const TIOCGWINSZ ideal-int +pkg syscall (linux-amd64-cgo), const TIOCINQ ideal-int +pkg syscall (linux-amd64-cgo), const TIOCLINUX ideal-int +pkg syscall (linux-amd64-cgo), const TIOCMBIC ideal-int +pkg syscall (linux-amd64-cgo), const TIOCMBIS ideal-int +pkg syscall (linux-amd64-cgo), const TIOCMGET ideal-int +pkg syscall (linux-amd64-cgo), const TIOCMIWAIT ideal-int +pkg syscall (linux-amd64-cgo), const TIOCMSET ideal-int +pkg syscall (linux-amd64-cgo), const TIOCM_CAR ideal-int +pkg syscall (linux-amd64-cgo), const TIOCM_CD ideal-int +pkg syscall (linux-amd64-cgo), const TIOCM_CTS ideal-int +pkg syscall (linux-amd64-cgo), const TIOCM_DSR ideal-int +pkg syscall (linux-amd64-cgo), const TIOCM_DTR ideal-int +pkg syscall (linux-amd64-cgo), const TIOCM_LE ideal-int +pkg syscall (linux-amd64-cgo), const TIOCM_RI ideal-int +pkg syscall (linux-amd64-cgo), const TIOCM_RNG ideal-int +pkg syscall (linux-amd64-cgo), const TIOCM_RTS ideal-int +pkg syscall (linux-amd64-cgo), const TIOCM_SR ideal-int +pkg syscall (linux-amd64-cgo), const TIOCM_ST ideal-int +pkg syscall (linux-amd64-cgo), const TIOCNOTTY ideal-int +pkg syscall (linux-amd64-cgo), const TIOCNXCL ideal-int +pkg syscall (linux-amd64-cgo), const TIOCOUTQ ideal-int +pkg syscall (linux-amd64-cgo), const TIOCPKT ideal-int +pkg syscall (linux-amd64-cgo), const TIOCPKT_DATA ideal-int +pkg syscall (linux-amd64-cgo), const TIOCPKT_DOSTOP ideal-int +pkg syscall (linux-amd64-cgo), const TIOCPKT_FLUSHREAD ideal-int +pkg syscall (linux-amd64-cgo), const TIOCPKT_FLUSHWRITE ideal-int +pkg syscall (linux-amd64-cgo), const TIOCPKT_IOCTL ideal-int +pkg syscall (linux-amd64-cgo), const TIOCPKT_NOSTOP ideal-int +pkg syscall (linux-amd64-cgo), const TIOCPKT_START ideal-int +pkg syscall (linux-amd64-cgo), const TIOCPKT_STOP ideal-int +pkg syscall (linux-amd64-cgo), const TIOCSBRK ideal-int +pkg syscall (linux-amd64-cgo), const TIOCSCTTY ideal-int +pkg syscall (linux-amd64-cgo), const TIOCSERCONFIG ideal-int +pkg syscall (linux-amd64-cgo), const TIOCSERGETLSR ideal-int +pkg syscall (linux-amd64-cgo), const TIOCSERGETMULTI ideal-int +pkg syscall (linux-amd64-cgo), const TIOCSERGSTRUCT ideal-int +pkg syscall (linux-amd64-cgo), const TIOCSERGWILD ideal-int +pkg syscall (linux-amd64-cgo), const TIOCSERSETMULTI ideal-int +pkg syscall (linux-amd64-cgo), const TIOCSERSWILD ideal-int +pkg syscall (linux-amd64-cgo), const TIOCSER_TEMT ideal-int +pkg syscall (linux-amd64-cgo), const TIOCSETD ideal-int +pkg syscall (linux-amd64-cgo), const TIOCSIG ideal-int +pkg syscall (linux-amd64-cgo), const TIOCSLCKTRMIOS ideal-int +pkg syscall (linux-amd64-cgo), const TIOCSPGRP ideal-int +pkg syscall (linux-amd64-cgo), const TIOCSPTLCK ideal-int +pkg syscall (linux-amd64-cgo), const TIOCSRS485 ideal-int +pkg syscall (linux-amd64-cgo), const TIOCSSERIAL ideal-int +pkg syscall (linux-amd64-cgo), const TIOCSSOFTCAR ideal-int +pkg syscall (linux-amd64-cgo), const TIOCSTI ideal-int +pkg syscall (linux-amd64-cgo), const TIOCSWINSZ ideal-int +pkg syscall (linux-amd64-cgo), const TOSTOP ideal-int +pkg syscall (linux-amd64-cgo), const TUNATTACHFILTER ideal-int +pkg syscall (linux-amd64-cgo), const TUNDETACHFILTER ideal-int +pkg syscall (linux-amd64-cgo), const TUNGETFEATURES ideal-int +pkg syscall (linux-amd64-cgo), const TUNGETIFF ideal-int +pkg syscall (linux-amd64-cgo), const TUNGETSNDBUF ideal-int +pkg syscall (linux-amd64-cgo), const TUNGETVNETHDRSZ ideal-int +pkg syscall (linux-amd64-cgo), const TUNSETDEBUG ideal-int +pkg syscall (linux-amd64-cgo), const TUNSETGROUP ideal-int +pkg syscall (linux-amd64-cgo), const TUNSETIFF ideal-int +pkg syscall (linux-amd64-cgo), const TUNSETLINK ideal-int +pkg syscall (linux-amd64-cgo), const TUNSETNOCSUM ideal-int +pkg syscall (linux-amd64-cgo), const TUNSETOFFLOAD ideal-int +pkg syscall (linux-amd64-cgo), const TUNSETOWNER ideal-int +pkg syscall (linux-amd64-cgo), const TUNSETPERSIST ideal-int +pkg syscall (linux-amd64-cgo), const TUNSETSNDBUF ideal-int +pkg syscall (linux-amd64-cgo), const TUNSETTXFILTER ideal-int +pkg syscall (linux-amd64-cgo), const TUNSETVNETHDRSZ ideal-int +pkg syscall (linux-amd64-cgo), const VDISCARD ideal-int +pkg syscall (linux-amd64-cgo), const VEOF ideal-int +pkg syscall (linux-amd64-cgo), const VEOL ideal-int +pkg syscall (linux-amd64-cgo), const VEOL2 ideal-int +pkg syscall (linux-amd64-cgo), const VERASE ideal-int +pkg syscall (linux-amd64-cgo), const VINTR ideal-int +pkg syscall (linux-amd64-cgo), const VKILL ideal-int +pkg syscall (linux-amd64-cgo), const VLNEXT ideal-int +pkg syscall (linux-amd64-cgo), const VMIN ideal-int +pkg syscall (linux-amd64-cgo), const VQUIT ideal-int +pkg syscall (linux-amd64-cgo), const VREPRINT ideal-int +pkg syscall (linux-amd64-cgo), const VSTART ideal-int +pkg syscall (linux-amd64-cgo), const VSTOP ideal-int +pkg syscall (linux-amd64-cgo), const VSUSP ideal-int +pkg syscall (linux-amd64-cgo), const VSWTC ideal-int +pkg syscall (linux-amd64-cgo), const VTIME ideal-int +pkg syscall (linux-amd64-cgo), const VWERASE ideal-int +pkg syscall (linux-amd64-cgo), const WALL ideal-int +pkg syscall (linux-amd64-cgo), const WCLONE ideal-int +pkg syscall (linux-amd64-cgo), const WCONTINUED ideal-int +pkg syscall (linux-amd64-cgo), const WEXITED ideal-int +pkg syscall (linux-amd64-cgo), const WNOHANG ideal-int +pkg syscall (linux-amd64-cgo), const WNOTHREAD ideal-int +pkg syscall (linux-amd64-cgo), const WNOWAIT ideal-int +pkg syscall (linux-amd64-cgo), const WORDSIZE ideal-int +pkg syscall (linux-amd64-cgo), const WSTOPPED ideal-int +pkg syscall (linux-amd64-cgo), const WUNTRACED ideal-int +pkg syscall (linux-amd64-cgo), const XCASE ideal-int +pkg syscall (linux-amd64-cgo), func Accept(int) (int, Sockaddr, error) +pkg syscall (linux-amd64-cgo), func Access(string, uint32) error +pkg syscall (linux-amd64-cgo), func Acct(string) error +pkg syscall (linux-amd64-cgo), func Adjtimex(*Timex) (int, error) +pkg syscall (linux-amd64-cgo), func AttachLsf(int, []SockFilter) error +pkg syscall (linux-amd64-cgo), func Bind(int, Sockaddr) error +pkg syscall (linux-amd64-cgo), func BindToDevice(int, string) error +pkg syscall (linux-amd64-cgo), func Chroot(string) error +pkg syscall (linux-amd64-cgo), func Close(int) error +pkg syscall (linux-amd64-cgo), func CloseOnExec(int) +pkg syscall (linux-amd64-cgo), func CmsgLen(int) int +pkg syscall (linux-amd64-cgo), func CmsgSpace(int) int +pkg syscall (linux-amd64-cgo), func Connect(int, Sockaddr) error +pkg syscall (linux-amd64-cgo), func Creat(string, uint32) (int, error) +pkg syscall (linux-amd64-cgo), func DetachLsf(int) error +pkg syscall (linux-amd64-cgo), func Dup(int) (int, error) +pkg syscall (linux-amd64-cgo), func Dup2(int, int) error +pkg syscall (linux-amd64-cgo), func EpollCreate(int) (int, error) +pkg syscall (linux-amd64-cgo), func EpollCreate1(int) (int, error) +pkg syscall (linux-amd64-cgo), func EpollCtl(int, int, int, *EpollEvent) error +pkg syscall (linux-amd64-cgo), func EpollWait(int, []EpollEvent, int) (int, error) +pkg syscall (linux-amd64-cgo), func Faccessat(int, string, uint32, int) error +pkg syscall (linux-amd64-cgo), func Fallocate(int, uint32, int64, int64) error +pkg syscall (linux-amd64-cgo), func Fchdir(int) error +pkg syscall (linux-amd64-cgo), func Fchmod(int, uint32) error +pkg syscall (linux-amd64-cgo), func Fchmodat(int, string, uint32, int) error +pkg syscall (linux-amd64-cgo), func Fchown(int, int, int) error +pkg syscall (linux-amd64-cgo), func Fchownat(int, string, int, int, int) error +pkg syscall (linux-amd64-cgo), func Fdatasync(int) error +pkg syscall (linux-amd64-cgo), func Flock(int, int) error +pkg syscall (linux-amd64-cgo), func ForkExec(string, []string, *ProcAttr) (int, error) +pkg syscall (linux-amd64-cgo), func Fstat(int, *Stat_t) error +pkg syscall (linux-amd64-cgo), func Fstatfs(int, *Statfs_t) error +pkg syscall (linux-amd64-cgo), func Fsync(int) error +pkg syscall (linux-amd64-cgo), func Ftruncate(int, int64) error +pkg syscall (linux-amd64-cgo), func Futimes(int, []Timeval) error +pkg syscall (linux-amd64-cgo), func Futimesat(int, string, []Timeval) error +pkg syscall (linux-amd64-cgo), func Getcwd([]byte) (int, error) +pkg syscall (linux-amd64-cgo), func Getdents(int, []byte) (int, error) +pkg syscall (linux-amd64-cgo), func Getpeername(int) (Sockaddr, error) +pkg syscall (linux-amd64-cgo), func Getpgid(int) (int, error) +pkg syscall (linux-amd64-cgo), func Getpgrp() int +pkg syscall (linux-amd64-cgo), func Getrlimit(int, *Rlimit) error +pkg syscall (linux-amd64-cgo), func Getrusage(int, *Rusage) error +pkg syscall (linux-amd64-cgo), func Getsockname(int) (Sockaddr, error) +pkg syscall (linux-amd64-cgo), func GetsockoptIPMreq(int) (*IPMreq, error) +pkg syscall (linux-amd64-cgo), func GetsockoptIPMreqn(int) (*IPMreqn, error) +pkg syscall (linux-amd64-cgo), func GetsockoptIPv6Mreq(int) (*IPv6Mreq, error) +pkg syscall (linux-amd64-cgo), func GetsockoptInet4Addr(int) ([4]byte, error) +pkg syscall (linux-amd64-cgo), func GetsockoptInt(int) (int, error) +pkg syscall (linux-amd64-cgo), func Gettid() int +pkg syscall (linux-amd64-cgo), func InotifyAddWatch(int, string, uint32) (int, error) +pkg syscall (linux-amd64-cgo), func InotifyInit() (int, error) +pkg syscall (linux-amd64-cgo), func InotifyInit1(int) (int, error) +pkg syscall (linux-amd64-cgo), func InotifyRmWatch(int, uint32) (int, error) +pkg syscall (linux-amd64-cgo), func Ioperm(int, int, int) error +pkg syscall (linux-amd64-cgo), func Iopl(int) error +pkg syscall (linux-amd64-cgo), func Kill(int, Signal) error +pkg syscall (linux-amd64-cgo), func Klogctl(int, []byte) (int, error) +pkg syscall (linux-amd64-cgo), func Link(string, string) error +pkg syscall (linux-amd64-cgo), func Listen(int, int) error +pkg syscall (linux-amd64-cgo), func LsfJump(int) *SockFilter +pkg syscall (linux-amd64-cgo), func LsfSocket(int) (int, error) +pkg syscall (linux-amd64-cgo), func LsfStmt(int) *SockFilter +pkg syscall (linux-amd64-cgo), func Lstat(string, *Stat_t) error +pkg syscall (linux-amd64-cgo), func Madvise([]byte, int) error +pkg syscall (linux-amd64-cgo), func Mkdirat(int, string, uint32) error +pkg syscall (linux-amd64-cgo), func Mkfifo(string, uint32) error +pkg syscall (linux-amd64-cgo), func Mknod(string, uint32, int) error +pkg syscall (linux-amd64-cgo), func Mknodat(int, string, uint32, int) error +pkg syscall (linux-amd64-cgo), func Mlock([]byte) error +pkg syscall (linux-amd64-cgo), func Mlockall(int) error +pkg syscall (linux-amd64-cgo), func Mmap(int, int64, int, int, int) ([]byte, error) +pkg syscall (linux-amd64-cgo), func Mount(string, string, string, uintptr, string) error +pkg syscall (linux-amd64-cgo), func Mprotect([]byte, int) error +pkg syscall (linux-amd64-cgo), func Munlock([]byte) error +pkg syscall (linux-amd64-cgo), func Munlockall() error +pkg syscall (linux-amd64-cgo), func Munmap([]byte) error +pkg syscall (linux-amd64-cgo), func Nanosleep(*Timespec, *Timespec) error +pkg syscall (linux-amd64-cgo), func NetlinkRIB(int) ([]byte, error) +pkg syscall (linux-amd64-cgo), func NsecToTimespec(int64) Timespec +pkg syscall (linux-amd64-cgo), func Open(string, int, uint32) (int, error) +pkg syscall (linux-amd64-cgo), func Openat(int, string, int, uint32) (int, error) +pkg syscall (linux-amd64-cgo), func ParseDirent([]byte, int, []string) (int, int, []string) +pkg syscall (linux-amd64-cgo), func ParseNetlinkMessage([]byte) ([]NetlinkMessage, error) +pkg syscall (linux-amd64-cgo), func ParseNetlinkRouteAttr(*NetlinkMessage) ([]NetlinkRouteAttr, error) +pkg syscall (linux-amd64-cgo), func ParseSocketControlMessage([]byte) ([]SocketControlMessage, error) +pkg syscall (linux-amd64-cgo), func ParseUnixCredentials(*SocketControlMessage) (*Ucred, error) +pkg syscall (linux-amd64-cgo), func ParseUnixRights(*SocketControlMessage) ([]int, error) +pkg syscall (linux-amd64-cgo), func Pause() error +pkg syscall (linux-amd64-cgo), func Pipe([]int) error +pkg syscall (linux-amd64-cgo), func PivotRoot(string, string) error +pkg syscall (linux-amd64-cgo), func Pread(int, []byte, int64) (int, error) +pkg syscall (linux-amd64-cgo), func PtraceAttach(int) error +pkg syscall (linux-amd64-cgo), func PtraceCont(int, int) error +pkg syscall (linux-amd64-cgo), func PtraceDetach(int) error +pkg syscall (linux-amd64-cgo), func PtraceGetEventMsg(int) (uint, error) +pkg syscall (linux-amd64-cgo), func PtraceGetRegs(int, *PtraceRegs) error +pkg syscall (linux-amd64-cgo), func PtracePeekData(int, uintptr, []byte) (int, error) +pkg syscall (linux-amd64-cgo), func PtracePeekText(int, uintptr, []byte) (int, error) +pkg syscall (linux-amd64-cgo), func PtracePokeData(int, uintptr, []byte) (int, error) +pkg syscall (linux-amd64-cgo), func PtracePokeText(int, uintptr, []byte) (int, error) +pkg syscall (linux-amd64-cgo), func PtraceSetOptions(int, int) error +pkg syscall (linux-amd64-cgo), func PtraceSetRegs(int, *PtraceRegs) error +pkg syscall (linux-amd64-cgo), func PtraceSingleStep(int) error +pkg syscall (linux-amd64-cgo), func Pwrite(int, []byte, int64) (int, error) +pkg syscall (linux-amd64-cgo), func RawSyscall(uintptr) (uintptr, Errno) +pkg syscall (linux-amd64-cgo), func RawSyscall6(uintptr) (uintptr, Errno) +pkg syscall (linux-amd64-cgo), func Read(int, []byte) (int, error) +pkg syscall (linux-amd64-cgo), func ReadDirent(int, []byte) (int, error) +pkg syscall (linux-amd64-cgo), func Reboot(int) error +pkg syscall (linux-amd64-cgo), func Recvfrom(int, []byte, int) (int, Sockaddr, error) +pkg syscall (linux-amd64-cgo), func Recvmsg(int, []byte, int) (int, int, Sockaddr, error) +pkg syscall (linux-amd64-cgo), func Rename(string, string) error +pkg syscall (linux-amd64-cgo), func Renameat(int, string, int, string) error +pkg syscall (linux-amd64-cgo), func Seek(int, int64, int) (int64, error) +pkg syscall (linux-amd64-cgo), func Select(int, *FdSet, *FdSet, *FdSet, *Timeval) (int, error) +pkg syscall (linux-amd64-cgo), func Sendfile(int, int, *int64, int) (int, error) +pkg syscall (linux-amd64-cgo), func Sendmsg(int, []byte, Sockaddr, int) error +pkg syscall (linux-amd64-cgo), func Sendto(int, []byte, int, Sockaddr) error +pkg syscall (linux-amd64-cgo), func SetLsfPromisc(string, bool) error +pkg syscall (linux-amd64-cgo), func SetNonblock(int, bool) error +pkg syscall (linux-amd64-cgo), func Setdomainname([]byte) error +pkg syscall (linux-amd64-cgo), func Setfsgid(int) error +pkg syscall (linux-amd64-cgo), func Setfsuid(int) error +pkg syscall (linux-amd64-cgo), func Setgid(int) error +pkg syscall (linux-amd64-cgo), func Setgroups([]int) error +pkg syscall (linux-amd64-cgo), func Sethostname([]byte) error +pkg syscall (linux-amd64-cgo), func Setpgid(int, int) error +pkg syscall (linux-amd64-cgo), func Setregid(int, int) error +pkg syscall (linux-amd64-cgo), func Setresgid(int, int, int) error +pkg syscall (linux-amd64-cgo), func Setresuid(int, int, int) error +pkg syscall (linux-amd64-cgo), func Setreuid(int, int) error +pkg syscall (linux-amd64-cgo), func Setrlimit(int, *Rlimit) error +pkg syscall (linux-amd64-cgo), func Setsid() (int, error) +pkg syscall (linux-amd64-cgo), func SetsockoptIPMreq(int, *IPMreq) error +pkg syscall (linux-amd64-cgo), func SetsockoptIPMreqn(int, *IPMreqn) error +pkg syscall (linux-amd64-cgo), func SetsockoptIPv6Mreq(int, *IPv6Mreq) error +pkg syscall (linux-amd64-cgo), func SetsockoptInet4Addr(int, [4]byte) error +pkg syscall (linux-amd64-cgo), func SetsockoptInt(int, int) error +pkg syscall (linux-amd64-cgo), func SetsockoptLinger(int, *Linger) error +pkg syscall (linux-amd64-cgo), func SetsockoptString(int, string) error +pkg syscall (linux-amd64-cgo), func SetsockoptTimeval(int, *Timeval) error +pkg syscall (linux-amd64-cgo), func Settimeofday(*Timeval) error +pkg syscall (linux-amd64-cgo), func Setuid(int) error +pkg syscall (linux-amd64-cgo), func Shutdown(int, int) error +pkg syscall (linux-amd64-cgo), func Socket(int) (int, error) +pkg syscall (linux-amd64-cgo), func Socketpair(int) ([2]int, error) +pkg syscall (linux-amd64-cgo), func Splice(int, *int64, int, *int64, int, int) (int64, error) +pkg syscall (linux-amd64-cgo), func Stat(string, *Stat_t) error +pkg syscall (linux-amd64-cgo), func Statfs(string, *Statfs_t) error +pkg syscall (linux-amd64-cgo), func StringSlicePtr([]string) []*byte +pkg syscall (linux-amd64-cgo), func Symlink(string, string) error +pkg syscall (linux-amd64-cgo), func Sync() +pkg syscall (linux-amd64-cgo), func SyncFileRange(int, int64, int64, int) error +pkg syscall (linux-amd64-cgo), func Sysinfo(*Sysinfo_t) error +pkg syscall (linux-amd64-cgo), func Tee(int, int, int, int) (int64, error) +pkg syscall (linux-amd64-cgo), func Tgkill(int, int, Signal) error +pkg syscall (linux-amd64-cgo), func Time(*Time_t) (Time_t, error) +pkg syscall (linux-amd64-cgo), func Times(*Tms) (uintptr, error) +pkg syscall (linux-amd64-cgo), func TimespecToNsec(Timespec) int64 +pkg syscall (linux-amd64-cgo), func TimevalToNsec(Timeval) int64 +pkg syscall (linux-amd64-cgo), func Truncate(string, int64) error +pkg syscall (linux-amd64-cgo), func Umask(int) int +pkg syscall (linux-amd64-cgo), func Uname(*Utsname) error +pkg syscall (linux-amd64-cgo), func UnixCredentials(*Ucred) []byte +pkg syscall (linux-amd64-cgo), func UnixRights(...int) []byte +pkg syscall (linux-amd64-cgo), func Unlinkat(int, string) error +pkg syscall (linux-amd64-cgo), func Unmount(string, int) error +pkg syscall (linux-amd64-cgo), func Unshare(int) error +pkg syscall (linux-amd64-cgo), func Ustat(int, *Ustat_t) error +pkg syscall (linux-amd64-cgo), func Utime(string, *Utimbuf) error +pkg syscall (linux-amd64-cgo), func Wait4(int, *WaitStatus, int, *Rusage) (int, error) +pkg syscall (linux-amd64-cgo), func Write(int, []byte) (int, error) +pkg syscall (linux-amd64-cgo), method (*Cmsghdr) SetLen(int) +pkg syscall (linux-amd64-cgo), method (*Iovec) SetLen(int) +pkg syscall (linux-amd64-cgo), method (*Msghdr) SetControllen(int) +pkg syscall (linux-amd64-cgo), method (*PtraceRegs) PC() uint64 +pkg syscall (linux-amd64-cgo), method (*PtraceRegs) SetPC(uint64) +pkg syscall (linux-amd64-cgo), type Cmsghdr struct +pkg syscall (linux-amd64-cgo), type Cmsghdr struct, Len uint64 +pkg syscall (linux-amd64-cgo), type Cmsghdr struct, Level int32 +pkg syscall (linux-amd64-cgo), type Cmsghdr struct, Type int32 +pkg syscall (linux-amd64-cgo), type Cmsghdr struct, X__cmsg_data [0]byte +pkg syscall (linux-amd64-cgo), type Credential struct +pkg syscall (linux-amd64-cgo), type Credential struct, Gid uint32 +pkg syscall (linux-amd64-cgo), type Credential struct, Groups []uint32 +pkg syscall (linux-amd64-cgo), type Credential struct, Uid uint32 +pkg syscall (linux-amd64-cgo), type Dirent struct +pkg syscall (linux-amd64-cgo), type Dirent struct, Ino uint64 +pkg syscall (linux-amd64-cgo), type Dirent struct, Name [256]int8 +pkg syscall (linux-amd64-cgo), type Dirent struct, Off int64 +pkg syscall (linux-amd64-cgo), type Dirent struct, Pad_cgo_0 [5]byte +pkg syscall (linux-amd64-cgo), type Dirent struct, Reclen uint16 +pkg syscall (linux-amd64-cgo), type Dirent struct, Type uint8 +pkg syscall (linux-amd64-cgo), type EpollEvent struct +pkg syscall (linux-amd64-cgo), type EpollEvent struct, Events uint32 +pkg syscall (linux-amd64-cgo), type EpollEvent struct, Fd int32 +pkg syscall (linux-amd64-cgo), type EpollEvent struct, Pad int32 +pkg syscall (linux-amd64-cgo), type FdSet struct +pkg syscall (linux-amd64-cgo), type FdSet struct, Bits [16]int64 +pkg syscall (linux-amd64-cgo), type Fsid struct +pkg syscall (linux-amd64-cgo), type Fsid struct, X__val [2]int32 +pkg syscall (linux-amd64-cgo), type IPMreqn struct +pkg syscall (linux-amd64-cgo), type IPMreqn struct, Address [4]byte +pkg syscall (linux-amd64-cgo), type IPMreqn struct, Ifindex int32 +pkg syscall (linux-amd64-cgo), type IPMreqn struct, Multiaddr [4]byte +pkg syscall (linux-amd64-cgo), type IfAddrmsg struct +pkg syscall (linux-amd64-cgo), type IfAddrmsg struct, Family uint8 +pkg syscall (linux-amd64-cgo), type IfAddrmsg struct, Flags uint8 +pkg syscall (linux-amd64-cgo), type IfAddrmsg struct, Index uint32 +pkg syscall (linux-amd64-cgo), type IfAddrmsg struct, Prefixlen uint8 +pkg syscall (linux-amd64-cgo), type IfAddrmsg struct, Scope uint8 +pkg syscall (linux-amd64-cgo), type IfInfomsg struct +pkg syscall (linux-amd64-cgo), type IfInfomsg struct, Change uint32 +pkg syscall (linux-amd64-cgo), type IfInfomsg struct, Family uint8 +pkg syscall (linux-amd64-cgo), type IfInfomsg struct, Flags uint32 +pkg syscall (linux-amd64-cgo), type IfInfomsg struct, Index int32 +pkg syscall (linux-amd64-cgo), type IfInfomsg struct, Type uint16 +pkg syscall (linux-amd64-cgo), type IfInfomsg struct, X__ifi_pad uint8 +pkg syscall (linux-amd64-cgo), type Inet4Pktinfo struct +pkg syscall (linux-amd64-cgo), type Inet4Pktinfo struct, Addr [4]byte +pkg syscall (linux-amd64-cgo), type Inet4Pktinfo struct, Ifindex int32 +pkg syscall (linux-amd64-cgo), type Inet4Pktinfo struct, Spec_dst [4]byte +pkg syscall (linux-amd64-cgo), type Inet6Pktinfo struct +pkg syscall (linux-amd64-cgo), type Inet6Pktinfo struct, Addr [16]byte +pkg syscall (linux-amd64-cgo), type Inet6Pktinfo struct, Ifindex uint32 +pkg syscall (linux-amd64-cgo), type InotifyEvent struct +pkg syscall (linux-amd64-cgo), type InotifyEvent struct, Cookie uint32 +pkg syscall (linux-amd64-cgo), type InotifyEvent struct, Len uint32 +pkg syscall (linux-amd64-cgo), type InotifyEvent struct, Mask uint32 +pkg syscall (linux-amd64-cgo), type InotifyEvent struct, Name [0]byte +pkg syscall (linux-amd64-cgo), type InotifyEvent struct, Wd int32 +pkg syscall (linux-amd64-cgo), type Iovec struct +pkg syscall (linux-amd64-cgo), type Iovec struct, Base *byte +pkg syscall (linux-amd64-cgo), type Iovec struct, Len uint64 +pkg syscall (linux-amd64-cgo), type Msghdr struct +pkg syscall (linux-amd64-cgo), type Msghdr struct, Control *byte +pkg syscall (linux-amd64-cgo), type Msghdr struct, Controllen uint64 +pkg syscall (linux-amd64-cgo), type Msghdr struct, Flags int32 +pkg syscall (linux-amd64-cgo), type Msghdr struct, Iov *Iovec +pkg syscall (linux-amd64-cgo), type Msghdr struct, Iovlen uint64 +pkg syscall (linux-amd64-cgo), type Msghdr struct, Name *byte +pkg syscall (linux-amd64-cgo), type Msghdr struct, Namelen uint32 +pkg syscall (linux-amd64-cgo), type Msghdr struct, Pad_cgo_0 [4]byte +pkg syscall (linux-amd64-cgo), type Msghdr struct, Pad_cgo_1 [4]byte +pkg syscall (linux-amd64-cgo), type NetlinkMessage struct +pkg syscall (linux-amd64-cgo), type NetlinkMessage struct, Data []byte +pkg syscall (linux-amd64-cgo), type NetlinkMessage struct, Header NlMsghdr +pkg syscall (linux-amd64-cgo), type NetlinkRouteAttr struct +pkg syscall (linux-amd64-cgo), type NetlinkRouteAttr struct, Attr RtAttr +pkg syscall (linux-amd64-cgo), type NetlinkRouteAttr struct, Value []byte +pkg syscall (linux-amd64-cgo), type NetlinkRouteRequest struct +pkg syscall (linux-amd64-cgo), type NetlinkRouteRequest struct, Data RtGenmsg +pkg syscall (linux-amd64-cgo), type NetlinkRouteRequest struct, Header NlMsghdr +pkg syscall (linux-amd64-cgo), type NlAttr struct +pkg syscall (linux-amd64-cgo), type NlAttr struct, Len uint16 +pkg syscall (linux-amd64-cgo), type NlAttr struct, Type uint16 +pkg syscall (linux-amd64-cgo), type NlMsgerr struct +pkg syscall (linux-amd64-cgo), type NlMsgerr struct, Error int32 +pkg syscall (linux-amd64-cgo), type NlMsgerr struct, Msg NlMsghdr +pkg syscall (linux-amd64-cgo), type NlMsghdr struct +pkg syscall (linux-amd64-cgo), type NlMsghdr struct, Flags uint16 +pkg syscall (linux-amd64-cgo), type NlMsghdr struct, Len uint32 +pkg syscall (linux-amd64-cgo), type NlMsghdr struct, Pid uint32 +pkg syscall (linux-amd64-cgo), type NlMsghdr struct, Seq uint32 +pkg syscall (linux-amd64-cgo), type NlMsghdr struct, Type uint16 +pkg syscall (linux-amd64-cgo), type PtraceRegs struct +pkg syscall (linux-amd64-cgo), type PtraceRegs struct, Cs uint64 +pkg syscall (linux-amd64-cgo), type PtraceRegs struct, Ds uint64 +pkg syscall (linux-amd64-cgo), type PtraceRegs struct, Eflags uint64 +pkg syscall (linux-amd64-cgo), type PtraceRegs struct, Es uint64 +pkg syscall (linux-amd64-cgo), type PtraceRegs struct, Fs uint64 +pkg syscall (linux-amd64-cgo), type PtraceRegs struct, Fs_base uint64 +pkg syscall (linux-amd64-cgo), type PtraceRegs struct, Gs uint64 +pkg syscall (linux-amd64-cgo), type PtraceRegs struct, Gs_base uint64 +pkg syscall (linux-amd64-cgo), type PtraceRegs struct, Orig_rax uint64 +pkg syscall (linux-amd64-cgo), type PtraceRegs struct, R10 uint64 +pkg syscall (linux-amd64-cgo), type PtraceRegs struct, R11 uint64 +pkg syscall (linux-amd64-cgo), type PtraceRegs struct, R12 uint64 +pkg syscall (linux-amd64-cgo), type PtraceRegs struct, R13 uint64 +pkg syscall (linux-amd64-cgo), type PtraceRegs struct, R14 uint64 +pkg syscall (linux-amd64-cgo), type PtraceRegs struct, R15 uint64 +pkg syscall (linux-amd64-cgo), type PtraceRegs struct, R8 uint64 +pkg syscall (linux-amd64-cgo), type PtraceRegs struct, R9 uint64 +pkg syscall (linux-amd64-cgo), type PtraceRegs struct, Rax uint64 +pkg syscall (linux-amd64-cgo), type PtraceRegs struct, Rbp uint64 +pkg syscall (linux-amd64-cgo), type PtraceRegs struct, Rbx uint64 +pkg syscall (linux-amd64-cgo), type PtraceRegs struct, Rcx uint64 +pkg syscall (linux-amd64-cgo), type PtraceRegs struct, Rdi uint64 +pkg syscall (linux-amd64-cgo), type PtraceRegs struct, Rdx uint64 +pkg syscall (linux-amd64-cgo), type PtraceRegs struct, Rip uint64 +pkg syscall (linux-amd64-cgo), type PtraceRegs struct, Rsi uint64 +pkg syscall (linux-amd64-cgo), type PtraceRegs struct, Rsp uint64 +pkg syscall (linux-amd64-cgo), type PtraceRegs struct, Ss uint64 +pkg syscall (linux-amd64-cgo), type RawSockaddr struct, Family uint16 +pkg syscall (linux-amd64-cgo), type RawSockaddrAny struct, Pad [96]int8 +pkg syscall (linux-amd64-cgo), type RawSockaddrInet4 struct, Family uint16 +pkg syscall (linux-amd64-cgo), type RawSockaddrInet4 struct, Zero [8]uint8 +pkg syscall (linux-amd64-cgo), type RawSockaddrInet6 struct +pkg syscall (linux-amd64-cgo), type RawSockaddrInet6 struct, Addr [16]byte +pkg syscall (linux-amd64-cgo), type RawSockaddrInet6 struct, Family uint16 +pkg syscall (linux-amd64-cgo), type RawSockaddrInet6 struct, Flowinfo uint32 +pkg syscall (linux-amd64-cgo), type RawSockaddrInet6 struct, Port uint16 +pkg syscall (linux-amd64-cgo), type RawSockaddrInet6 struct, Scope_id uint32 +pkg syscall (linux-amd64-cgo), type RawSockaddrLinklayer struct +pkg syscall (linux-amd64-cgo), type RawSockaddrLinklayer struct, Addr [8]uint8 +pkg syscall (linux-amd64-cgo), type RawSockaddrLinklayer struct, Family uint16 +pkg syscall (linux-amd64-cgo), type RawSockaddrLinklayer struct, Halen uint8 +pkg syscall (linux-amd64-cgo), type RawSockaddrLinklayer struct, Hatype uint16 +pkg syscall (linux-amd64-cgo), type RawSockaddrLinklayer struct, Ifindex int32 +pkg syscall (linux-amd64-cgo), type RawSockaddrLinklayer struct, Pkttype uint8 +pkg syscall (linux-amd64-cgo), type RawSockaddrLinklayer struct, Protocol uint16 +pkg syscall (linux-amd64-cgo), type RawSockaddrNetlink struct +pkg syscall (linux-amd64-cgo), type RawSockaddrNetlink struct, Family uint16 +pkg syscall (linux-amd64-cgo), type RawSockaddrNetlink struct, Groups uint32 +pkg syscall (linux-amd64-cgo), type RawSockaddrNetlink struct, Pad uint16 +pkg syscall (linux-amd64-cgo), type RawSockaddrNetlink struct, Pid uint32 +pkg syscall (linux-amd64-cgo), type RawSockaddrUnix struct +pkg syscall (linux-amd64-cgo), type RawSockaddrUnix struct, Family uint16 +pkg syscall (linux-amd64-cgo), type RawSockaddrUnix struct, Path [108]int8 +pkg syscall (linux-amd64-cgo), type Rlimit struct +pkg syscall (linux-amd64-cgo), type Rlimit struct, Cur uint64 +pkg syscall (linux-amd64-cgo), type Rlimit struct, Max uint64 +pkg syscall (linux-amd64-cgo), type RtAttr struct +pkg syscall (linux-amd64-cgo), type RtAttr struct, Len uint16 +pkg syscall (linux-amd64-cgo), type RtAttr struct, Type uint16 +pkg syscall (linux-amd64-cgo), type RtGenmsg struct +pkg syscall (linux-amd64-cgo), type RtGenmsg struct, Family uint8 +pkg syscall (linux-amd64-cgo), type RtMsg struct +pkg syscall (linux-amd64-cgo), type RtMsg struct, Dst_len uint8 +pkg syscall (linux-amd64-cgo), type RtMsg struct, Family uint8 +pkg syscall (linux-amd64-cgo), type RtMsg struct, Flags uint32 +pkg syscall (linux-amd64-cgo), type RtMsg struct, Protocol uint8 +pkg syscall (linux-amd64-cgo), type RtMsg struct, Scope uint8 +pkg syscall (linux-amd64-cgo), type RtMsg struct, Src_len uint8 +pkg syscall (linux-amd64-cgo), type RtMsg struct, Table uint8 +pkg syscall (linux-amd64-cgo), type RtMsg struct, Tos uint8 +pkg syscall (linux-amd64-cgo), type RtMsg struct, Type uint8 +pkg syscall (linux-amd64-cgo), type RtNexthop struct +pkg syscall (linux-amd64-cgo), type RtNexthop struct, Flags uint8 +pkg syscall (linux-amd64-cgo), type RtNexthop struct, Hops uint8 +pkg syscall (linux-amd64-cgo), type RtNexthop struct, Ifindex int32 +pkg syscall (linux-amd64-cgo), type RtNexthop struct, Len uint16 +pkg syscall (linux-amd64-cgo), type Rusage struct, Idrss int64 +pkg syscall (linux-amd64-cgo), type Rusage struct, Inblock int64 +pkg syscall (linux-amd64-cgo), type Rusage struct, Isrss int64 +pkg syscall (linux-amd64-cgo), type Rusage struct, Ixrss int64 +pkg syscall (linux-amd64-cgo), type Rusage struct, Majflt int64 +pkg syscall (linux-amd64-cgo), type Rusage struct, Maxrss int64 +pkg syscall (linux-amd64-cgo), type Rusage struct, Minflt int64 +pkg syscall (linux-amd64-cgo), type Rusage struct, Msgrcv int64 +pkg syscall (linux-amd64-cgo), type Rusage struct, Msgsnd int64 +pkg syscall (linux-amd64-cgo), type Rusage struct, Nivcsw int64 +pkg syscall (linux-amd64-cgo), type Rusage struct, Nsignals int64 +pkg syscall (linux-amd64-cgo), type Rusage struct, Nswap int64 +pkg syscall (linux-amd64-cgo), type Rusage struct, Nvcsw int64 +pkg syscall (linux-amd64-cgo), type Rusage struct, Oublock int64 +pkg syscall (linux-amd64-cgo), type Rusage struct, Stime Timeval +pkg syscall (linux-amd64-cgo), type Rusage struct, Utime Timeval +pkg syscall (linux-amd64-cgo), type SockFilter struct +pkg syscall (linux-amd64-cgo), type SockFilter struct, Code uint16 +pkg syscall (linux-amd64-cgo), type SockFilter struct, Jf uint8 +pkg syscall (linux-amd64-cgo), type SockFilter struct, Jt uint8 +pkg syscall (linux-amd64-cgo), type SockFilter struct, K uint32 +pkg syscall (linux-amd64-cgo), type SockFprog struct +pkg syscall (linux-amd64-cgo), type SockFprog struct, Filter *SockFilter +pkg syscall (linux-amd64-cgo), type SockFprog struct, Len uint16 +pkg syscall (linux-amd64-cgo), type SockFprog struct, Pad_cgo_0 [6]byte +pkg syscall (linux-amd64-cgo), type SockaddrLinklayer struct +pkg syscall (linux-amd64-cgo), type SockaddrLinklayer struct, Addr [8]byte +pkg syscall (linux-amd64-cgo), type SockaddrLinklayer struct, Halen uint8 +pkg syscall (linux-amd64-cgo), type SockaddrLinklayer struct, Hatype uint16 +pkg syscall (linux-amd64-cgo), type SockaddrLinklayer struct, Ifindex int +pkg syscall (linux-amd64-cgo), type SockaddrLinklayer struct, Pkttype uint8 +pkg syscall (linux-amd64-cgo), type SockaddrLinklayer struct, Protocol uint16 +pkg syscall (linux-amd64-cgo), type SockaddrNetlink struct +pkg syscall (linux-amd64-cgo), type SockaddrNetlink struct, Family uint16 +pkg syscall (linux-amd64-cgo), type SockaddrNetlink struct, Groups uint32 +pkg syscall (linux-amd64-cgo), type SockaddrNetlink struct, Pad uint16 +pkg syscall (linux-amd64-cgo), type SockaddrNetlink struct, Pid uint32 +pkg syscall (linux-amd64-cgo), type SocketControlMessage struct +pkg syscall (linux-amd64-cgo), type SocketControlMessage struct, Data []byte +pkg syscall (linux-amd64-cgo), type SocketControlMessage struct, Header Cmsghdr +pkg syscall (linux-amd64-cgo), type Stat_t struct +pkg syscall (linux-amd64-cgo), type Stat_t struct, Atim Timespec +pkg syscall (linux-amd64-cgo), type Stat_t struct, Blksize int64 +pkg syscall (linux-amd64-cgo), type Stat_t struct, Blocks int64 +pkg syscall (linux-amd64-cgo), type Stat_t struct, Ctim Timespec +pkg syscall (linux-amd64-cgo), type Stat_t struct, Dev uint64 +pkg syscall (linux-amd64-cgo), type Stat_t struct, Gid uint32 +pkg syscall (linux-amd64-cgo), type Stat_t struct, Ino uint64 +pkg syscall (linux-amd64-cgo), type Stat_t struct, Mode uint32 +pkg syscall (linux-amd64-cgo), type Stat_t struct, Mtim Timespec +pkg syscall (linux-amd64-cgo), type Stat_t struct, Nlink uint64 +pkg syscall (linux-amd64-cgo), type Stat_t struct, Rdev uint64 +pkg syscall (linux-amd64-cgo), type Stat_t struct, Size int64 +pkg syscall (linux-amd64-cgo), type Stat_t struct, Uid uint32 +pkg syscall (linux-amd64-cgo), type Stat_t struct, X__pad0 int32 +pkg syscall (linux-amd64-cgo), type Stat_t struct, X__unused [3]int64 +pkg syscall (linux-amd64-cgo), type Statfs_t struct +pkg syscall (linux-amd64-cgo), type Statfs_t struct, Bavail uint64 +pkg syscall (linux-amd64-cgo), type Statfs_t struct, Bfree uint64 +pkg syscall (linux-amd64-cgo), type Statfs_t struct, Blocks uint64 +pkg syscall (linux-amd64-cgo), type Statfs_t struct, Bsize int64 +pkg syscall (linux-amd64-cgo), type Statfs_t struct, Ffree uint64 +pkg syscall (linux-amd64-cgo), type Statfs_t struct, Files uint64 +pkg syscall (linux-amd64-cgo), type Statfs_t struct, Flags int64 +pkg syscall (linux-amd64-cgo), type Statfs_t struct, Frsize int64 +pkg syscall (linux-amd64-cgo), type Statfs_t struct, Fsid Fsid +pkg syscall (linux-amd64-cgo), type Statfs_t struct, Namelen int64 +pkg syscall (linux-amd64-cgo), type Statfs_t struct, Spare [4]int64 +pkg syscall (linux-amd64-cgo), type Statfs_t struct, Type int64 +pkg syscall (linux-amd64-cgo), type SysProcAttr struct, Chroot string +pkg syscall (linux-amd64-cgo), type SysProcAttr struct, Credential *Credential +pkg syscall (linux-amd64-cgo), type SysProcAttr struct, Noctty bool +pkg syscall (linux-amd64-cgo), type SysProcAttr struct, Pdeathsig Signal +pkg syscall (linux-amd64-cgo), type SysProcAttr struct, Ptrace bool +pkg syscall (linux-amd64-cgo), type SysProcAttr struct, Setctty bool +pkg syscall (linux-amd64-cgo), type SysProcAttr struct, Setpgid bool +pkg syscall (linux-amd64-cgo), type SysProcAttr struct, Setsid bool +pkg syscall (linux-amd64-cgo), type Sysinfo_t struct +pkg syscall (linux-amd64-cgo), type Sysinfo_t struct, Bufferram uint64 +pkg syscall (linux-amd64-cgo), type Sysinfo_t struct, Freehigh uint64 +pkg syscall (linux-amd64-cgo), type Sysinfo_t struct, Freeram uint64 +pkg syscall (linux-amd64-cgo), type Sysinfo_t struct, Freeswap uint64 +pkg syscall (linux-amd64-cgo), type Sysinfo_t struct, Loads [3]uint64 +pkg syscall (linux-amd64-cgo), type Sysinfo_t struct, Pad uint16 +pkg syscall (linux-amd64-cgo), type Sysinfo_t struct, Pad_cgo_0 [4]byte +pkg syscall (linux-amd64-cgo), type Sysinfo_t struct, Pad_cgo_1 [4]byte +pkg syscall (linux-amd64-cgo), type Sysinfo_t struct, Procs uint16 +pkg syscall (linux-amd64-cgo), type Sysinfo_t struct, Sharedram uint64 +pkg syscall (linux-amd64-cgo), type Sysinfo_t struct, Totalhigh uint64 +pkg syscall (linux-amd64-cgo), type Sysinfo_t struct, Totalram uint64 +pkg syscall (linux-amd64-cgo), type Sysinfo_t struct, Totalswap uint64 +pkg syscall (linux-amd64-cgo), type Sysinfo_t struct, Unit uint32 +pkg syscall (linux-amd64-cgo), type Sysinfo_t struct, Uptime int64 +pkg syscall (linux-amd64-cgo), type Sysinfo_t struct, X_f [0]byte +pkg syscall (linux-amd64-cgo), type Termios struct +pkg syscall (linux-amd64-cgo), type Termios struct, Cc [32]uint8 +pkg syscall (linux-amd64-cgo), type Termios struct, Cflag uint32 +pkg syscall (linux-amd64-cgo), type Termios struct, Iflag uint32 +pkg syscall (linux-amd64-cgo), type Termios struct, Ispeed uint32 +pkg syscall (linux-amd64-cgo), type Termios struct, Lflag uint32 +pkg syscall (linux-amd64-cgo), type Termios struct, Line uint8 +pkg syscall (linux-amd64-cgo), type Termios struct, Oflag uint32 +pkg syscall (linux-amd64-cgo), type Termios struct, Ospeed uint32 +pkg syscall (linux-amd64-cgo), type Termios struct, Pad_cgo_0 [3]byte +pkg syscall (linux-amd64-cgo), type Time_t int64 +pkg syscall (linux-amd64-cgo), type Timespec struct, Nsec int64 +pkg syscall (linux-amd64-cgo), type Timespec struct, Sec int64 +pkg syscall (linux-amd64-cgo), type Timeval struct, Sec int64 +pkg syscall (linux-amd64-cgo), type Timeval struct, Usec int64 +pkg syscall (linux-amd64-cgo), type Timex struct +pkg syscall (linux-amd64-cgo), type Timex struct, Calcnt int64 +pkg syscall (linux-amd64-cgo), type Timex struct, Constant int64 +pkg syscall (linux-amd64-cgo), type Timex struct, Errcnt int64 +pkg syscall (linux-amd64-cgo), type Timex struct, Esterror int64 +pkg syscall (linux-amd64-cgo), type Timex struct, Freq int64 +pkg syscall (linux-amd64-cgo), type Timex struct, Jitcnt int64 +pkg syscall (linux-amd64-cgo), type Timex struct, Jitter int64 +pkg syscall (linux-amd64-cgo), type Timex struct, Maxerror int64 +pkg syscall (linux-amd64-cgo), type Timex struct, Modes uint32 +pkg syscall (linux-amd64-cgo), type Timex struct, Offset int64 +pkg syscall (linux-amd64-cgo), type Timex struct, Pad_cgo_0 [4]byte +pkg syscall (linux-amd64-cgo), type Timex struct, Pad_cgo_1 [4]byte +pkg syscall (linux-amd64-cgo), type Timex struct, Pad_cgo_2 [4]byte +pkg syscall (linux-amd64-cgo), type Timex struct, Pad_cgo_3 [44]byte +pkg syscall (linux-amd64-cgo), type Timex struct, Ppsfreq int64 +pkg syscall (linux-amd64-cgo), type Timex struct, Precision int64 +pkg syscall (linux-amd64-cgo), type Timex struct, Shift int32 +pkg syscall (linux-amd64-cgo), type Timex struct, Stabil int64 +pkg syscall (linux-amd64-cgo), type Timex struct, Status int32 +pkg syscall (linux-amd64-cgo), type Timex struct, Stbcnt int64 +pkg syscall (linux-amd64-cgo), type Timex struct, Tai int32 +pkg syscall (linux-amd64-cgo), type Timex struct, Tick int64 +pkg syscall (linux-amd64-cgo), type Timex struct, Time Timeval +pkg syscall (linux-amd64-cgo), type Timex struct, Tolerance int64 +pkg syscall (linux-amd64-cgo), type Tms struct +pkg syscall (linux-amd64-cgo), type Tms struct, Cstime int64 +pkg syscall (linux-amd64-cgo), type Tms struct, Cutime int64 +pkg syscall (linux-amd64-cgo), type Tms struct, Stime int64 +pkg syscall (linux-amd64-cgo), type Tms struct, Utime int64 +pkg syscall (linux-amd64-cgo), type Ucred struct +pkg syscall (linux-amd64-cgo), type Ucred struct, Gid uint32 +pkg syscall (linux-amd64-cgo), type Ucred struct, Pid int32 +pkg syscall (linux-amd64-cgo), type Ucred struct, Uid uint32 +pkg syscall (linux-amd64-cgo), type Ustat_t struct +pkg syscall (linux-amd64-cgo), type Ustat_t struct, Fname [6]int8 +pkg syscall (linux-amd64-cgo), type Ustat_t struct, Fpack [6]int8 +pkg syscall (linux-amd64-cgo), type Ustat_t struct, Pad_cgo_0 [4]byte +pkg syscall (linux-amd64-cgo), type Ustat_t struct, Pad_cgo_1 [4]byte +pkg syscall (linux-amd64-cgo), type Ustat_t struct, Tfree int32 +pkg syscall (linux-amd64-cgo), type Ustat_t struct, Tinode uint64 +pkg syscall (linux-amd64-cgo), type Utimbuf struct +pkg syscall (linux-amd64-cgo), type Utimbuf struct, Actime int64 +pkg syscall (linux-amd64-cgo), type Utimbuf struct, Modtime int64 +pkg syscall (linux-amd64-cgo), type Utsname struct +pkg syscall (linux-amd64-cgo), type Utsname struct, Domainname [65]int8 +pkg syscall (linux-amd64-cgo), type Utsname struct, Machine [65]int8 +pkg syscall (linux-amd64-cgo), type Utsname struct, Nodename [65]int8 +pkg syscall (linux-amd64-cgo), type Utsname struct, Release [65]int8 +pkg syscall (linux-amd64-cgo), type Utsname struct, Sysname [65]int8 +pkg syscall (linux-amd64-cgo), type Utsname struct, Version [65]int8 +pkg syscall (linux-amd64-cgo), type WaitStatus uint32 +pkg syscall (linux-amd64-cgo), var Stderr int +pkg syscall (linux-amd64-cgo), var Stdin int +pkg syscall (linux-amd64-cgo), var Stdout int +pkg syscall (windows-386), const AF_NETBIOS ideal-int +pkg syscall (windows-386), const APPLICATION_ERROR ideal-int +pkg syscall (windows-386), const AUTHTYPE_CLIENT ideal-int +pkg syscall (windows-386), const AUTHTYPE_SERVER ideal-int +pkg syscall (windows-386), const CERT_CHAIN_POLICY_AUTHENTICODE ideal-int +pkg syscall (windows-386), const CERT_CHAIN_POLICY_AUTHENTICODE_TS ideal-int +pkg syscall (windows-386), const CERT_CHAIN_POLICY_BASE ideal-int +pkg syscall (windows-386), const CERT_CHAIN_POLICY_BASIC_CONSTRAINTS ideal-int +pkg syscall (windows-386), const CERT_CHAIN_POLICY_EV ideal-int +pkg syscall (windows-386), const CERT_CHAIN_POLICY_MICROSOFT_ROOT ideal-int +pkg syscall (windows-386), const CERT_CHAIN_POLICY_NT_AUTH ideal-int +pkg syscall (windows-386), const CERT_CHAIN_POLICY_SSL ideal-int +pkg syscall (windows-386), const CERT_E_CN_NO_MATCH ideal-int +pkg syscall (windows-386), const CERT_E_EXPIRED ideal-int +pkg syscall (windows-386), const CERT_E_PURPOSE ideal-int +pkg syscall (windows-386), const CERT_E_ROLE ideal-int +pkg syscall (windows-386), const CERT_E_UNTRUSTEDROOT ideal-int +pkg syscall (windows-386), const CERT_STORE_ADD_ALWAYS ideal-int +pkg syscall (windows-386), const CERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG ideal-int +pkg syscall (windows-386), const CERT_STORE_PROV_MEMORY ideal-int +pkg syscall (windows-386), const CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT ideal-int +pkg syscall (windows-386), const CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT ideal-int +pkg syscall (windows-386), const CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT ideal-int +pkg syscall (windows-386), const CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT ideal-int +pkg syscall (windows-386), const CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT ideal-int +pkg syscall (windows-386), const CERT_TRUST_INVALID_BASIC_CONSTRAINTS ideal-int +pkg syscall (windows-386), const CERT_TRUST_INVALID_EXTENSION ideal-int +pkg syscall (windows-386), const CERT_TRUST_INVALID_NAME_CONSTRAINTS ideal-int +pkg syscall (windows-386), const CERT_TRUST_INVALID_POLICY_CONSTRAINTS ideal-int +pkg syscall (windows-386), const CERT_TRUST_IS_CYCLIC ideal-int +pkg syscall (windows-386), const CERT_TRUST_IS_EXPLICIT_DISTRUST ideal-int +pkg syscall (windows-386), const CERT_TRUST_IS_NOT_SIGNATURE_VALID ideal-int +pkg syscall (windows-386), const CERT_TRUST_IS_NOT_TIME_VALID ideal-int +pkg syscall (windows-386), const CERT_TRUST_IS_NOT_VALID_FOR_USAGE ideal-int +pkg syscall (windows-386), const CERT_TRUST_IS_OFFLINE_REVOCATION ideal-int +pkg syscall (windows-386), const CERT_TRUST_IS_REVOKED ideal-int +pkg syscall (windows-386), const CERT_TRUST_IS_UNTRUSTED_ROOT ideal-int +pkg syscall (windows-386), const CERT_TRUST_NO_ERROR ideal-int +pkg syscall (windows-386), const CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY ideal-int +pkg syscall (windows-386), const CERT_TRUST_REVOCATION_STATUS_UNKNOWN ideal-int +pkg syscall (windows-386), const CREATE_ALWAYS ideal-int +pkg syscall (windows-386), const CREATE_NEW ideal-int +pkg syscall (windows-386), const CREATE_UNICODE_ENVIRONMENT ideal-int +pkg syscall (windows-386), const CRYPT_DEFAULT_CONTAINER_OPTIONAL ideal-int +pkg syscall (windows-386), const CRYPT_DELETEKEYSET ideal-int +pkg syscall (windows-386), const CRYPT_MACHINE_KEYSET ideal-int +pkg syscall (windows-386), const CRYPT_NEWKEYSET ideal-int +pkg syscall (windows-386), const CRYPT_SILENT ideal-int +pkg syscall (windows-386), const CRYPT_VERIFYCONTEXT ideal-int +pkg syscall (windows-386), const DNS_TYPE_A ideal-int +pkg syscall (windows-386), const DNS_TYPE_A6 ideal-int +pkg syscall (windows-386), const DNS_TYPE_AAAA ideal-int +pkg syscall (windows-386), const DNS_TYPE_ADDRS ideal-int +pkg syscall (windows-386), const DNS_TYPE_AFSDB ideal-int +pkg syscall (windows-386), const DNS_TYPE_ALL ideal-int +pkg syscall (windows-386), const DNS_TYPE_ANY ideal-int +pkg syscall (windows-386), const DNS_TYPE_ATMA ideal-int +pkg syscall (windows-386), const DNS_TYPE_AXFR ideal-int +pkg syscall (windows-386), const DNS_TYPE_CERT ideal-int +pkg syscall (windows-386), const DNS_TYPE_CNAME ideal-int +pkg syscall (windows-386), const DNS_TYPE_DHCID ideal-int +pkg syscall (windows-386), const DNS_TYPE_DNAME ideal-int +pkg syscall (windows-386), const DNS_TYPE_DNSKEY ideal-int +pkg syscall (windows-386), const DNS_TYPE_DS ideal-int +pkg syscall (windows-386), const DNS_TYPE_EID ideal-int +pkg syscall (windows-386), const DNS_TYPE_GID ideal-int +pkg syscall (windows-386), const DNS_TYPE_GPOS ideal-int +pkg syscall (windows-386), const DNS_TYPE_HINFO ideal-int +pkg syscall (windows-386), const DNS_TYPE_ISDN ideal-int +pkg syscall (windows-386), const DNS_TYPE_IXFR ideal-int +pkg syscall (windows-386), const DNS_TYPE_KEY ideal-int +pkg syscall (windows-386), const DNS_TYPE_KX ideal-int +pkg syscall (windows-386), const DNS_TYPE_LOC ideal-int +pkg syscall (windows-386), const DNS_TYPE_MAILA ideal-int +pkg syscall (windows-386), const DNS_TYPE_MAILB ideal-int +pkg syscall (windows-386), const DNS_TYPE_MB ideal-int +pkg syscall (windows-386), const DNS_TYPE_MD ideal-int +pkg syscall (windows-386), const DNS_TYPE_MF ideal-int +pkg syscall (windows-386), const DNS_TYPE_MG ideal-int +pkg syscall (windows-386), const DNS_TYPE_MINFO ideal-int +pkg syscall (windows-386), const DNS_TYPE_MR ideal-int +pkg syscall (windows-386), const DNS_TYPE_MX ideal-int +pkg syscall (windows-386), const DNS_TYPE_NAPTR ideal-int +pkg syscall (windows-386), const DNS_TYPE_NBSTAT ideal-int +pkg syscall (windows-386), const DNS_TYPE_NIMLOC ideal-int +pkg syscall (windows-386), const DNS_TYPE_NS ideal-int +pkg syscall (windows-386), const DNS_TYPE_NSAP ideal-int +pkg syscall (windows-386), const DNS_TYPE_NSAPPTR ideal-int +pkg syscall (windows-386), const DNS_TYPE_NSEC ideal-int +pkg syscall (windows-386), const DNS_TYPE_NULL ideal-int +pkg syscall (windows-386), const DNS_TYPE_NXT ideal-int +pkg syscall (windows-386), const DNS_TYPE_OPT ideal-int +pkg syscall (windows-386), const DNS_TYPE_PTR ideal-int +pkg syscall (windows-386), const DNS_TYPE_PX ideal-int +pkg syscall (windows-386), const DNS_TYPE_RP ideal-int +pkg syscall (windows-386), const DNS_TYPE_RRSIG ideal-int +pkg syscall (windows-386), const DNS_TYPE_RT ideal-int +pkg syscall (windows-386), const DNS_TYPE_SIG ideal-int +pkg syscall (windows-386), const DNS_TYPE_SINK ideal-int +pkg syscall (windows-386), const DNS_TYPE_SOA ideal-int +pkg syscall (windows-386), const DNS_TYPE_SRV ideal-int +pkg syscall (windows-386), const DNS_TYPE_TEXT ideal-int +pkg syscall (windows-386), const DNS_TYPE_TKEY ideal-int +pkg syscall (windows-386), const DNS_TYPE_TSIG ideal-int +pkg syscall (windows-386), const DNS_TYPE_UID ideal-int +pkg syscall (windows-386), const DNS_TYPE_UINFO ideal-int +pkg syscall (windows-386), const DNS_TYPE_UNSPEC ideal-int +pkg syscall (windows-386), const DNS_TYPE_WINS ideal-int +pkg syscall (windows-386), const DNS_TYPE_WINSR ideal-int +pkg syscall (windows-386), const DNS_TYPE_WKS ideal-int +pkg syscall (windows-386), const DNS_TYPE_X25 ideal-int +pkg syscall (windows-386), const DUPLICATE_CLOSE_SOURCE ideal-int +pkg syscall (windows-386), const DUPLICATE_SAME_ACCESS ideal-int +pkg syscall (windows-386), const EADV Errno +pkg syscall (windows-386), const EBADE Errno +pkg syscall (windows-386), const EBADFD Errno +pkg syscall (windows-386), const EBADR Errno +pkg syscall (windows-386), const EBADRQC Errno +pkg syscall (windows-386), const EBADSLT Errno +pkg syscall (windows-386), const EBFONT Errno +pkg syscall (windows-386), const ECHRNG Errno +pkg syscall (windows-386), const ECOMM Errno +pkg syscall (windows-386), const EDEADLOCK Errno +pkg syscall (windows-386), const EDOTDOT Errno +pkg syscall (windows-386), const EISNAM Errno +pkg syscall (windows-386), const EKEYEXPIRED Errno +pkg syscall (windows-386), const EKEYREJECTED Errno +pkg syscall (windows-386), const EKEYREVOKED Errno +pkg syscall (windows-386), const EL2HLT Errno +pkg syscall (windows-386), const EL2NSYNC Errno +pkg syscall (windows-386), const EL3HLT Errno +pkg syscall (windows-386), const EL3RST Errno +pkg syscall (windows-386), const ELIBACC Errno +pkg syscall (windows-386), const ELIBBAD Errno +pkg syscall (windows-386), const ELIBEXEC Errno +pkg syscall (windows-386), const ELIBMAX Errno +pkg syscall (windows-386), const ELIBSCN Errno +pkg syscall (windows-386), const ELNRNG Errno +pkg syscall (windows-386), const EMEDIUMTYPE Errno +pkg syscall (windows-386), const ENAVAIL Errno +pkg syscall (windows-386), const ENOANO Errno +pkg syscall (windows-386), const ENOCSI Errno +pkg syscall (windows-386), const ENOKEY Errno +pkg syscall (windows-386), const ENOMEDIUM Errno +pkg syscall (windows-386), const ENONET Errno +pkg syscall (windows-386), const ENOPKG Errno +pkg syscall (windows-386), const ENOTNAM Errno +pkg syscall (windows-386), const ENOTUNIQ Errno +pkg syscall (windows-386), const EREMCHG Errno +pkg syscall (windows-386), const EREMOTEIO Errno +pkg syscall (windows-386), const ERESTART Errno +pkg syscall (windows-386), const ERROR_ACCESS_DENIED Errno +pkg syscall (windows-386), const ERROR_ALREADY_EXISTS Errno +pkg syscall (windows-386), const ERROR_BROKEN_PIPE Errno +pkg syscall (windows-386), const ERROR_BUFFER_OVERFLOW Errno +pkg syscall (windows-386), const ERROR_ENVVAR_NOT_FOUND Errno +pkg syscall (windows-386), const ERROR_FILE_EXISTS Errno +pkg syscall (windows-386), const ERROR_FILE_NOT_FOUND Errno +pkg syscall (windows-386), const ERROR_INSUFFICIENT_BUFFER Errno +pkg syscall (windows-386), const ERROR_IO_PENDING Errno +pkg syscall (windows-386), const ERROR_MOD_NOT_FOUND Errno +pkg syscall (windows-386), const ERROR_NO_MORE_FILES Errno +pkg syscall (windows-386), const ERROR_OPERATION_ABORTED Errno +pkg syscall (windows-386), const ERROR_PATH_NOT_FOUND Errno +pkg syscall (windows-386), const ERROR_PROC_NOT_FOUND Errno +pkg syscall (windows-386), const ESRMNT Errno +pkg syscall (windows-386), const ESTRPIPE Errno +pkg syscall (windows-386), const EUCLEAN Errno +pkg syscall (windows-386), const EUNATCH Errno +pkg syscall (windows-386), const EWINDOWS Errno +pkg syscall (windows-386), const EXFULL Errno +pkg syscall (windows-386), const FILE_ACTION_ADDED ideal-int +pkg syscall (windows-386), const FILE_ACTION_MODIFIED ideal-int +pkg syscall (windows-386), const FILE_ACTION_REMOVED ideal-int +pkg syscall (windows-386), const FILE_ACTION_RENAMED_NEW_NAME ideal-int +pkg syscall (windows-386), const FILE_ACTION_RENAMED_OLD_NAME ideal-int +pkg syscall (windows-386), const FILE_APPEND_DATA ideal-int +pkg syscall (windows-386), const FILE_ATTRIBUTE_ARCHIVE ideal-int +pkg syscall (windows-386), const FILE_ATTRIBUTE_DIRECTORY ideal-int +pkg syscall (windows-386), const FILE_ATTRIBUTE_HIDDEN ideal-int +pkg syscall (windows-386), const FILE_ATTRIBUTE_NORMAL ideal-int +pkg syscall (windows-386), const FILE_ATTRIBUTE_READONLY ideal-int +pkg syscall (windows-386), const FILE_ATTRIBUTE_SYSTEM ideal-int +pkg syscall (windows-386), const FILE_BEGIN ideal-int +pkg syscall (windows-386), const FILE_CURRENT ideal-int +pkg syscall (windows-386), const FILE_END ideal-int +pkg syscall (windows-386), const FILE_FLAG_BACKUP_SEMANTICS ideal-int +pkg syscall (windows-386), const FILE_FLAG_OVERLAPPED ideal-int +pkg syscall (windows-386), const FILE_LIST_DIRECTORY ideal-int +pkg syscall (windows-386), const FILE_MAP_COPY ideal-int +pkg syscall (windows-386), const FILE_MAP_EXECUTE ideal-int +pkg syscall (windows-386), const FILE_MAP_READ ideal-int +pkg syscall (windows-386), const FILE_MAP_WRITE ideal-int +pkg syscall (windows-386), const FILE_NOTIFY_CHANGE_ATTRIBUTES ideal-int +pkg syscall (windows-386), const FILE_NOTIFY_CHANGE_CREATION ideal-int +pkg syscall (windows-386), const FILE_NOTIFY_CHANGE_DIR_NAME ideal-int +pkg syscall (windows-386), const FILE_NOTIFY_CHANGE_FILE_NAME ideal-int +pkg syscall (windows-386), const FILE_NOTIFY_CHANGE_LAST_ACCESS ideal-int +pkg syscall (windows-386), const FILE_NOTIFY_CHANGE_LAST_WRITE ideal-int +pkg syscall (windows-386), const FILE_NOTIFY_CHANGE_SIZE ideal-int +pkg syscall (windows-386), const FILE_SHARE_DELETE ideal-int +pkg syscall (windows-386), const FILE_SHARE_READ ideal-int +pkg syscall (windows-386), const FILE_SHARE_WRITE ideal-int +pkg syscall (windows-386), const FILE_TYPE_CHAR ideal-int +pkg syscall (windows-386), const FILE_TYPE_DISK ideal-int +pkg syscall (windows-386), const FILE_TYPE_PIPE ideal-int +pkg syscall (windows-386), const FILE_TYPE_REMOTE ideal-int +pkg syscall (windows-386), const FILE_TYPE_UNKNOWN ideal-int +pkg syscall (windows-386), const FILE_WRITE_ATTRIBUTES ideal-int +pkg syscall (windows-386), const FORMAT_MESSAGE_ALLOCATE_BUFFER ideal-int +pkg syscall (windows-386), const FORMAT_MESSAGE_ARGUMENT_ARRAY ideal-int +pkg syscall (windows-386), const FORMAT_MESSAGE_FROM_HMODULE ideal-int +pkg syscall (windows-386), const FORMAT_MESSAGE_FROM_STRING ideal-int +pkg syscall (windows-386), const FORMAT_MESSAGE_FROM_SYSTEM ideal-int +pkg syscall (windows-386), const FORMAT_MESSAGE_IGNORE_INSERTS ideal-int +pkg syscall (windows-386), const FORMAT_MESSAGE_MAX_WIDTH_MASK ideal-int +pkg syscall (windows-386), const GENERIC_ALL ideal-int +pkg syscall (windows-386), const GENERIC_EXECUTE ideal-int +pkg syscall (windows-386), const GENERIC_READ ideal-int +pkg syscall (windows-386), const GENERIC_WRITE ideal-int +pkg syscall (windows-386), const GetFileExInfoStandard ideal-int +pkg syscall (windows-386), const GetFileExMaxInfoLevel ideal-int +pkg syscall (windows-386), const HANDLE_FLAG_INHERIT ideal-int +pkg syscall (windows-386), const HKEY_CLASSES_ROOT ideal-int +pkg syscall (windows-386), const HKEY_CURRENT_CONFIG ideal-int +pkg syscall (windows-386), const HKEY_CURRENT_USER ideal-int +pkg syscall (windows-386), const HKEY_DYN_DATA ideal-int +pkg syscall (windows-386), const HKEY_LOCAL_MACHINE ideal-int +pkg syscall (windows-386), const HKEY_PERFORMANCE_DATA ideal-int +pkg syscall (windows-386), const HKEY_USERS ideal-int +pkg syscall (windows-386), const IFF_POINTTOPOINT ideal-int +pkg syscall (windows-386), const IGNORE ideal-int +pkg syscall (windows-386), const INFINITE ideal-int +pkg syscall (windows-386), const INVALID_FILE_ATTRIBUTES ideal-int +pkg syscall (windows-386), const InvalidHandle Handle +pkg syscall (windows-386), const KEY_ALL_ACCESS ideal-int +pkg syscall (windows-386), const KEY_CREATE_LINK ideal-int +pkg syscall (windows-386), const KEY_CREATE_SUB_KEY ideal-int +pkg syscall (windows-386), const KEY_ENUMERATE_SUB_KEYS ideal-int +pkg syscall (windows-386), const KEY_EXECUTE ideal-int +pkg syscall (windows-386), const KEY_NOTIFY ideal-int +pkg syscall (windows-386), const KEY_QUERY_VALUE ideal-int +pkg syscall (windows-386), const KEY_READ ideal-int +pkg syscall (windows-386), const KEY_SET_VALUE ideal-int +pkg syscall (windows-386), const KEY_WOW64_32KEY ideal-int +pkg syscall (windows-386), const KEY_WOW64_64KEY ideal-int +pkg syscall (windows-386), const KEY_WRITE ideal-int +pkg syscall (windows-386), const LANG_ENGLISH ideal-int +pkg syscall (windows-386), const MAXLEN_IFDESCR ideal-int +pkg syscall (windows-386), const MAXLEN_PHYSADDR ideal-int +pkg syscall (windows-386), const MAX_ADAPTER_ADDRESS_LENGTH ideal-int +pkg syscall (windows-386), const MAX_ADAPTER_DESCRIPTION_LENGTH ideal-int +pkg syscall (windows-386), const MAX_ADAPTER_NAME_LENGTH ideal-int +pkg syscall (windows-386), const MAX_COMPUTERNAME_LENGTH ideal-int +pkg syscall (windows-386), const MAX_INTERFACE_NAME_LEN ideal-int +pkg syscall (windows-386), const MAX_LONG_PATH ideal-int +pkg syscall (windows-386), const MAX_PATH ideal-int +pkg syscall (windows-386), const MaxTokenInfoClass ideal-int +pkg syscall (windows-386), const NameCanonical ideal-int +pkg syscall (windows-386), const NameCanonicalEx ideal-int +pkg syscall (windows-386), const NameDisplay ideal-int +pkg syscall (windows-386), const NameDnsDomain ideal-int +pkg syscall (windows-386), const NameFullyQualifiedDN ideal-int +pkg syscall (windows-386), const NameSamCompatible ideal-int +pkg syscall (windows-386), const NameServicePrincipal ideal-int +pkg syscall (windows-386), const NameUniqueId ideal-int +pkg syscall (windows-386), const NameUnknown ideal-int +pkg syscall (windows-386), const NameUserPrincipal ideal-int +pkg syscall (windows-386), const OPEN_ALWAYS ideal-int +pkg syscall (windows-386), const OPEN_EXISTING ideal-int +pkg syscall (windows-386), const PAGE_EXECUTE_READ ideal-int +pkg syscall (windows-386), const PAGE_EXECUTE_READWRITE ideal-int +pkg syscall (windows-386), const PAGE_EXECUTE_WRITECOPY ideal-int +pkg syscall (windows-386), const PAGE_READONLY ideal-int +pkg syscall (windows-386), const PAGE_READWRITE ideal-int +pkg syscall (windows-386), const PAGE_WRITECOPY ideal-int +pkg syscall (windows-386), const PKCS_7_ASN_ENCODING ideal-int +pkg syscall (windows-386), const PROCESS_QUERY_INFORMATION ideal-int +pkg syscall (windows-386), const PROV_DH_SCHANNEL ideal-int +pkg syscall (windows-386), const PROV_DSS ideal-int +pkg syscall (windows-386), const PROV_DSS_DH ideal-int +pkg syscall (windows-386), const PROV_EC_ECDSA_FULL ideal-int +pkg syscall (windows-386), const PROV_EC_ECDSA_SIG ideal-int +pkg syscall (windows-386), const PROV_EC_ECNRA_FULL ideal-int +pkg syscall (windows-386), const PROV_EC_ECNRA_SIG ideal-int +pkg syscall (windows-386), const PROV_FORTEZZA ideal-int +pkg syscall (windows-386), const PROV_INTEL_SEC ideal-int +pkg syscall (windows-386), const PROV_MS_EXCHANGE ideal-int +pkg syscall (windows-386), const PROV_REPLACE_OWF ideal-int +pkg syscall (windows-386), const PROV_RNG ideal-int +pkg syscall (windows-386), const PROV_RSA_AES ideal-int +pkg syscall (windows-386), const PROV_RSA_FULL ideal-int +pkg syscall (windows-386), const PROV_RSA_SCHANNEL ideal-int +pkg syscall (windows-386), const PROV_RSA_SIG ideal-int +pkg syscall (windows-386), const PROV_SPYRUS_LYNKS ideal-int +pkg syscall (windows-386), const PROV_SSL ideal-int +pkg syscall (windows-386), const REG_BINARY ideal-int +pkg syscall (windows-386), const REG_DWORD ideal-int +pkg syscall (windows-386), const REG_DWORD_BIG_ENDIAN ideal-int +pkg syscall (windows-386), const REG_DWORD_LITTLE_ENDIAN ideal-int +pkg syscall (windows-386), const REG_EXPAND_SZ ideal-int +pkg syscall (windows-386), const REG_FULL_RESOURCE_DESCRIPTOR ideal-int +pkg syscall (windows-386), const REG_LINK ideal-int +pkg syscall (windows-386), const REG_MULTI_SZ ideal-int +pkg syscall (windows-386), const REG_NONE ideal-int +pkg syscall (windows-386), const REG_QWORD ideal-int +pkg syscall (windows-386), const REG_QWORD_LITTLE_ENDIAN ideal-int +pkg syscall (windows-386), const REG_RESOURCE_LIST ideal-int +pkg syscall (windows-386), const REG_RESOURCE_REQUIREMENTS_LIST ideal-int +pkg syscall (windows-386), const REG_SZ ideal-int +pkg syscall (windows-386), const SIO_GET_INTERFACE_LIST ideal-int +pkg syscall (windows-386), const SO_UPDATE_ACCEPT_CONTEXT ideal-int +pkg syscall (windows-386), const STANDARD_RIGHTS_ALL ideal-int +pkg syscall (windows-386), const STANDARD_RIGHTS_EXECUTE ideal-int +pkg syscall (windows-386), const STANDARD_RIGHTS_READ ideal-int +pkg syscall (windows-386), const STANDARD_RIGHTS_REQUIRED ideal-int +pkg syscall (windows-386), const STANDARD_RIGHTS_WRITE ideal-int +pkg syscall (windows-386), const STARTF_USESHOWWINDOW ideal-int +pkg syscall (windows-386), const STARTF_USESTDHANDLES ideal-int +pkg syscall (windows-386), const STD_ERROR_HANDLE ideal-int +pkg syscall (windows-386), const STD_INPUT_HANDLE ideal-int +pkg syscall (windows-386), const STD_OUTPUT_HANDLE ideal-int +pkg syscall (windows-386), const SUBLANG_ENGLISH_US ideal-int +pkg syscall (windows-386), const SW_FORCEMINIMIZE ideal-int +pkg syscall (windows-386), const SW_HIDE ideal-int +pkg syscall (windows-386), const SW_MAXIMIZE ideal-int +pkg syscall (windows-386), const SW_MINIMIZE ideal-int +pkg syscall (windows-386), const SW_NORMAL ideal-int +pkg syscall (windows-386), const SW_RESTORE ideal-int +pkg syscall (windows-386), const SW_SHOW ideal-int +pkg syscall (windows-386), const SW_SHOWDEFAULT ideal-int +pkg syscall (windows-386), const SW_SHOWMAXIMIZED ideal-int +pkg syscall (windows-386), const SW_SHOWMINIMIZED ideal-int +pkg syscall (windows-386), const SW_SHOWMINNOACTIVE ideal-int +pkg syscall (windows-386), const SW_SHOWNA ideal-int +pkg syscall (windows-386), const SW_SHOWNOACTIVATE ideal-int +pkg syscall (windows-386), const SW_SHOWNORMAL ideal-int +pkg syscall (windows-386), const SYNCHRONIZE ideal-int +pkg syscall (windows-386), const SidTypeAlias ideal-int +pkg syscall (windows-386), const SidTypeComputer ideal-int +pkg syscall (windows-386), const SidTypeDeletedAccount ideal-int +pkg syscall (windows-386), const SidTypeDomain ideal-int +pkg syscall (windows-386), const SidTypeGroup ideal-int +pkg syscall (windows-386), const SidTypeInvalid ideal-int +pkg syscall (windows-386), const SidTypeLabel ideal-int +pkg syscall (windows-386), const SidTypeUnknown ideal-int +pkg syscall (windows-386), const SidTypeUser ideal-int +pkg syscall (windows-386), const SidTypeWellKnownGroup ideal-int +pkg syscall (windows-386), const TF_DISCONNECT ideal-int +pkg syscall (windows-386), const TF_REUSE_SOCKET ideal-int +pkg syscall (windows-386), const TF_USE_DEFAULT_WORKER ideal-int +pkg syscall (windows-386), const TF_USE_KERNEL_APC ideal-int +pkg syscall (windows-386), const TF_USE_SYSTEM_THREAD ideal-int +pkg syscall (windows-386), const TF_WRITE_BEHIND ideal-int +pkg syscall (windows-386), const TIME_ZONE_ID_DAYLIGHT ideal-int +pkg syscall (windows-386), const TIME_ZONE_ID_STANDARD ideal-int +pkg syscall (windows-386), const TIME_ZONE_ID_UNKNOWN ideal-int +pkg syscall (windows-386), const TOKEN_ADJUST_DEFAULT ideal-int +pkg syscall (windows-386), const TOKEN_ADJUST_GROUPS ideal-int +pkg syscall (windows-386), const TOKEN_ADJUST_PRIVILEGES ideal-int +pkg syscall (windows-386), const TOKEN_ALL_ACCESS ideal-int +pkg syscall (windows-386), const TOKEN_ASSIGN_PRIMARY ideal-int +pkg syscall (windows-386), const TOKEN_DUPLICATE ideal-int +pkg syscall (windows-386), const TOKEN_EXECUTE ideal-int +pkg syscall (windows-386), const TOKEN_IMPERSONATE ideal-int +pkg syscall (windows-386), const TOKEN_QUERY ideal-int +pkg syscall (windows-386), const TOKEN_QUERY_SOURCE ideal-int +pkg syscall (windows-386), const TOKEN_READ ideal-int +pkg syscall (windows-386), const TOKEN_WRITE ideal-int +pkg syscall (windows-386), const TRUNCATE_EXISTING ideal-int +pkg syscall (windows-386), const TokenAccessInformation ideal-int +pkg syscall (windows-386), const TokenAuditPolicy ideal-int +pkg syscall (windows-386), const TokenDefaultDacl ideal-int +pkg syscall (windows-386), const TokenElevation ideal-int +pkg syscall (windows-386), const TokenElevationType ideal-int +pkg syscall (windows-386), const TokenGroups ideal-int +pkg syscall (windows-386), const TokenGroupsAndPrivileges ideal-int +pkg syscall (windows-386), const TokenHasRestrictions ideal-int +pkg syscall (windows-386), const TokenImpersonationLevel ideal-int +pkg syscall (windows-386), const TokenIntegrityLevel ideal-int +pkg syscall (windows-386), const TokenLinkedToken ideal-int +pkg syscall (windows-386), const TokenLogonSid ideal-int +pkg syscall (windows-386), const TokenMandatoryPolicy ideal-int +pkg syscall (windows-386), const TokenOrigin ideal-int +pkg syscall (windows-386), const TokenOwner ideal-int +pkg syscall (windows-386), const TokenPrimaryGroup ideal-int +pkg syscall (windows-386), const TokenPrivileges ideal-int +pkg syscall (windows-386), const TokenRestrictedSids ideal-int +pkg syscall (windows-386), const TokenSandBoxInert ideal-int +pkg syscall (windows-386), const TokenSessionId ideal-int +pkg syscall (windows-386), const TokenSessionReference ideal-int +pkg syscall (windows-386), const TokenSource ideal-int +pkg syscall (windows-386), const TokenStatistics ideal-int +pkg syscall (windows-386), const TokenType ideal-int +pkg syscall (windows-386), const TokenUIAccess ideal-int +pkg syscall (windows-386), const TokenUser ideal-int +pkg syscall (windows-386), const TokenVirtualizationAllowed ideal-int +pkg syscall (windows-386), const TokenVirtualizationEnabled ideal-int +pkg syscall (windows-386), const USAGE_MATCH_TYPE_AND ideal-int +pkg syscall (windows-386), const USAGE_MATCH_TYPE_OR ideal-int +pkg syscall (windows-386), const WAIT_ABANDONED ideal-int +pkg syscall (windows-386), const WAIT_FAILED ideal-int +pkg syscall (windows-386), const WAIT_OBJECT_0 ideal-int +pkg syscall (windows-386), const WAIT_TIMEOUT ideal-int +pkg syscall (windows-386), const WSADESCRIPTION_LEN ideal-int +pkg syscall (windows-386), const WSASYS_STATUS_LEN ideal-int +pkg syscall (windows-386), const X509_ASN_ENCODING ideal-int +pkg syscall (windows-386), func Accept(Handle) (Handle, Sockaddr, error) +pkg syscall (windows-386), func AcceptEx(Handle, Handle, *byte, uint32, uint32, uint32, *uint32, *Overlapped) error +pkg syscall (windows-386), func Bind(Handle, Sockaddr) error +pkg syscall (windows-386), func CancelIo(Handle) error +pkg syscall (windows-386), func CertAddCertificateContextToStore(Handle, *CertContext, uint32, **CertContext) error +pkg syscall (windows-386), func CertCloseStore(Handle, uint32) error +pkg syscall (windows-386), func CertCreateCertificateContext(uint32, *byte, uint32) (*CertContext, error) +pkg syscall (windows-386), func CertEnumCertificatesInStore(Handle, *CertContext) (*CertContext, error) +pkg syscall (windows-386), func CertFreeCertificateChain(*CertChainContext) +pkg syscall (windows-386), func CertFreeCertificateContext(*CertContext) error +pkg syscall (windows-386), func CertGetCertificateChain(Handle, *CertContext, *Filetime, Handle, *CertChainPara, uint32, uintptr, **CertChainContext) error +pkg syscall (windows-386), func CertOpenStore(uintptr, uint32, uintptr, uint32, uintptr) (Handle, error) +pkg syscall (windows-386), func CertOpenSystemStore(Handle, *uint16) (Handle, error) +pkg syscall (windows-386), func CertVerifyCertificateChainPolicy(uintptr, *CertChainContext, *CertChainPolicyPara, *CertChainPolicyStatus) error +pkg syscall (windows-386), func Close(Handle) error +pkg syscall (windows-386), func CloseHandle(Handle) error +pkg syscall (windows-386), func CloseOnExec(Handle) +pkg syscall (windows-386), func Closesocket(Handle) error +pkg syscall (windows-386), func CommandLineToArgv(*uint16, *int32) (*[8192]*[8192]uint16, error) +pkg syscall (windows-386), func ComputerName() (string, error) +pkg syscall (windows-386), func Connect(Handle, Sockaddr) error +pkg syscall (windows-386), func ConvertSidToStringSid(*SID, **uint16) error +pkg syscall (windows-386), func ConvertStringSidToSid(*uint16, **SID) error +pkg syscall (windows-386), func CopySid(uint32, *SID, *SID) error +pkg syscall (windows-386), func CreateDirectory(*uint16, *SecurityAttributes) error +pkg syscall (windows-386), func CreateFile(*uint16, uint32, uint32, *SecurityAttributes, uint32, uint32, int32) (Handle, error) +pkg syscall (windows-386), func CreateFileMapping(Handle, *SecurityAttributes, uint32, uint32, uint32, *uint16) (Handle, error) +pkg syscall (windows-386), func CreateIoCompletionPort(Handle, Handle, uint32, uint32) (Handle, error) +pkg syscall (windows-386), func CreatePipe(*Handle, *Handle, *SecurityAttributes, uint32) error +pkg syscall (windows-386), func CreateProcess(*uint16, *uint16, *SecurityAttributes, *SecurityAttributes, bool, uint32, *uint16, *uint16, *StartupInfo, *ProcessInformation) error +pkg syscall (windows-386), func CryptAcquireContext(*Handle, *uint16, *uint16, uint32, uint32) error +pkg syscall (windows-386), func CryptGenRandom(Handle, uint32, *byte) error +pkg syscall (windows-386), func CryptReleaseContext(Handle, uint32) error +pkg syscall (windows-386), func DeleteFile(*uint16) error +pkg syscall (windows-386), func DnsQuery(string, uint16, uint32, *byte, **DNSRecord, *byte) error +pkg syscall (windows-386), func DnsRecordListFree(*DNSRecord, uint32) +pkg syscall (windows-386), func DuplicateHandle(Handle, Handle, Handle, *Handle, uint32, bool, uint32) error +pkg syscall (windows-386), func EscapeArg(string) string +pkg syscall (windows-386), func ExitProcess(uint32) +pkg syscall (windows-386), func Fchdir(Handle) error +pkg syscall (windows-386), func Fchmod(Handle, uint32) error +pkg syscall (windows-386), func Fchown(Handle, int, int) error +pkg syscall (windows-386), func FindClose(Handle) error +pkg syscall (windows-386), func FindFirstFile(*uint16, *Win32finddata) (Handle, error) +pkg syscall (windows-386), func FindNextFile(Handle, *Win32finddata) error +pkg syscall (windows-386), func FlushFileBuffers(Handle) error +pkg syscall (windows-386), func FlushViewOfFile(uintptr, uintptr) error +pkg syscall (windows-386), func FormatMessage(uint32, uint32, uint32, uint32, []uint16, *byte) (uint32, error) +pkg syscall (windows-386), func FreeEnvironmentStrings(*uint16) error +pkg syscall (windows-386), func FreeLibrary(Handle) error +pkg syscall (windows-386), func Fsync(Handle) error +pkg syscall (windows-386), func Ftruncate(Handle, int64) error +pkg syscall (windows-386), func GetAcceptExSockaddrs(*byte, uint32, uint32, uint32, **RawSockaddrAny, *int32, **RawSockaddrAny, *int32) +pkg syscall (windows-386), func GetAdaptersInfo(*IpAdapterInfo, *uint32) error +pkg syscall (windows-386), func GetCommandLine() *uint16 +pkg syscall (windows-386), func GetComputerName(*uint16, *uint32) error +pkg syscall (windows-386), func GetCurrentDirectory(uint32, *uint16) (uint32, error) +pkg syscall (windows-386), func GetCurrentProcess() (Handle, error) +pkg syscall (windows-386), func GetEnvironmentStrings() (*uint16, error) +pkg syscall (windows-386), func GetEnvironmentVariable(*uint16, *uint16, uint32) (uint32, error) +pkg syscall (windows-386), func GetExitCodeProcess(Handle, *uint32) error +pkg syscall (windows-386), func GetFileAttributes(*uint16) (uint32, error) +pkg syscall (windows-386), func GetFileAttributesEx(*uint16, uint32, *byte) error +pkg syscall (windows-386), func GetFileInformationByHandle(Handle, *ByHandleFileInformation) error +pkg syscall (windows-386), func GetFileType(Handle) (uint32, error) +pkg syscall (windows-386), func GetFullPathName(*uint16, uint32, *uint16, **uint16) (uint32, error) +pkg syscall (windows-386), func GetHostByName(string) (*Hostent, error) +pkg syscall (windows-386), func GetIfEntry(*MibIfRow) error +pkg syscall (windows-386), func GetLastError() error +pkg syscall (windows-386), func GetLengthSid(*SID) uint32 +pkg syscall (windows-386), func GetLongPathName(*uint16, *uint16, uint32) (uint32, error) +pkg syscall (windows-386), func GetProcAddress(Handle, string) (uintptr, error) +pkg syscall (windows-386), func GetProcessTimes(Handle, *Filetime, *Filetime, *Filetime, *Filetime) error +pkg syscall (windows-386), func GetProtoByName(string) (*Protoent, error) +pkg syscall (windows-386), func GetQueuedCompletionStatus(Handle, *uint32, *uint32, **Overlapped, uint32) error +pkg syscall (windows-386), func GetServByName(string, string) (*Servent, error) +pkg syscall (windows-386), func GetStartupInfo(*StartupInfo) error +pkg syscall (windows-386), func GetStdHandle(int) (Handle, error) +pkg syscall (windows-386), func GetSystemTimeAsFileTime(*Filetime) +pkg syscall (windows-386), func GetTempPath(uint32, *uint16) (uint32, error) +pkg syscall (windows-386), func GetTimeZoneInformation(*Timezoneinformation) (uint32, error) +pkg syscall (windows-386), func GetTokenInformation(Token, uint32, *byte, uint32, *uint32) error +pkg syscall (windows-386), func GetUserNameEx(uint32, *uint16, *uint32) error +pkg syscall (windows-386), func GetUserProfileDirectory(Token, *uint16, *uint32) error +pkg syscall (windows-386), func GetVersion() (uint32, error) +pkg syscall (windows-386), func Getpeername(Handle) (Sockaddr, error) +pkg syscall (windows-386), func Getsockname(Handle) (Sockaddr, error) +pkg syscall (windows-386), func GetsockoptInt(Handle, int) (int, error) +pkg syscall (windows-386), func Link(string) error +pkg syscall (windows-386), func Listen(Handle, int) error +pkg syscall (windows-386), func LoadDLL(string) (*DLL, error) +pkg syscall (windows-386), func LoadLibrary(string) (Handle, error) +pkg syscall (windows-386), func LocalFree(Handle) (Handle, error) +pkg syscall (windows-386), func LookupAccountName(*uint16, *uint16, *SID, *uint32, *uint16, *uint32, *uint32) error +pkg syscall (windows-386), func LookupAccountSid(*uint16, *SID, *uint16, *uint32, *uint16, *uint32, *uint32) error +pkg syscall (windows-386), func LookupSID(string) (*SID, string, uint32, error) +pkg syscall (windows-386), func MapViewOfFile(Handle, uint32, uint32, uint32, uintptr) (uintptr, error) +pkg syscall (windows-386), func MoveFile(*uint16, *uint16) error +pkg syscall (windows-386), func MustLoadDLL(string) *DLL +pkg syscall (windows-386), func NetApiBufferFree(*byte) error +pkg syscall (windows-386), func NetUserGetInfo(*uint16, *uint16, uint32, **byte) error +pkg syscall (windows-386), func NewCallback(interface{}) uintptr +pkg syscall (windows-386), func NewLazyDLL(string) *LazyDLL +pkg syscall (windows-386), func NsecToFiletime(int64) Filetime +pkg syscall (windows-386), func Ntohs(uint16) uint16 +pkg syscall (windows-386), func Open(string, int, uint32) (Handle, error) +pkg syscall (windows-386), func OpenCurrentProcessToken() (Token, error) +pkg syscall (windows-386), func OpenProcess(uint32, bool, uint32) (Handle, error) +pkg syscall (windows-386), func OpenProcessToken(Handle, uint32, *Token) error +pkg syscall (windows-386), func Pipe([]Handle) error +pkg syscall (windows-386), func PostQueuedCompletionStatus(Handle, uint32, uint32, *Overlapped) error +pkg syscall (windows-386), func Read(Handle, []byte) (int, error) +pkg syscall (windows-386), func ReadDirectoryChanges(Handle, *byte, uint32, bool, uint32, *uint32, *Overlapped, uintptr) error +pkg syscall (windows-386), func ReadFile(Handle, []byte, *uint32, *Overlapped) error +pkg syscall (windows-386), func Recvfrom(Handle, []byte, int) (int, Sockaddr, error) +pkg syscall (windows-386), func RegCloseKey(Handle) error +pkg syscall (windows-386), func RegEnumKeyEx(Handle, uint32, *uint16, *uint32, *uint32, *uint16, *uint32, *Filetime) error +pkg syscall (windows-386), func RegOpenKeyEx(Handle, *uint16, uint32, uint32, *Handle) error +pkg syscall (windows-386), func RegQueryInfoKey(Handle, *uint16, *uint32, *uint32, *uint32, *uint32, *uint32, *uint32, *uint32, *uint32, *uint32, *Filetime) error +pkg syscall (windows-386), func RegQueryValueEx(Handle, *uint16, *uint32, *uint32, *byte, *uint32) error +pkg syscall (windows-386), func RemoveDirectory(*uint16) error +pkg syscall (windows-386), func Rename(string) error +pkg syscall (windows-386), func Seek(Handle, int64, int) (int64, error) +pkg syscall (windows-386), func Sendto(Handle, []byte, int, Sockaddr) error +pkg syscall (windows-386), func SetCurrentDirectory(*uint16) error +pkg syscall (windows-386), func SetEndOfFile(Handle) error +pkg syscall (windows-386), func SetEnvironmentVariable(*uint16, *uint16) error +pkg syscall (windows-386), func SetFileAttributes(*uint16, uint32) error +pkg syscall (windows-386), func SetFilePointer(Handle, int32, *int32, uint32) (uint32, error) +pkg syscall (windows-386), func SetFileTime(Handle, *Filetime, *Filetime, *Filetime) error +pkg syscall (windows-386), func SetHandleInformation(Handle, uint32, uint32) error +pkg syscall (windows-386), func SetNonblock(Handle, bool) error +pkg syscall (windows-386), func Setsockopt(Handle, int32, int32, *byte, int32) error +pkg syscall (windows-386), func SetsockoptIPMreq(Handle, int, *IPMreq) error +pkg syscall (windows-386), func SetsockoptIPv6Mreq(Handle, int, *IPv6Mreq) error +pkg syscall (windows-386), func SetsockoptInet4Addr(Handle, int, [4]byte) error +pkg syscall (windows-386), func SetsockoptInt(Handle, int, int) error +pkg syscall (windows-386), func SetsockoptLinger(Handle, int, *Linger) error +pkg syscall (windows-386), func SetsockoptTimeval(Handle, int, *Timeval) error +pkg syscall (windows-386), func Shutdown(Handle, int) error +pkg syscall (windows-386), func Socket(int) (Handle, error) +pkg syscall (windows-386), func StringToSid(string) (*SID, error) +pkg syscall (windows-386), func StringToUTF16(string) []uint16 +pkg syscall (windows-386), func StringToUTF16Ptr(string) *uint16 +pkg syscall (windows-386), func Symlink(string) error +pkg syscall (windows-386), func Syscall12(uintptr) (uintptr, Errno) +pkg syscall (windows-386), func Syscall15(uintptr) (uintptr, Errno) +pkg syscall (windows-386), func Syscall9(uintptr) (uintptr, Errno) +pkg syscall (windows-386), func TerminateProcess(Handle, uint32) error +pkg syscall (windows-386), func TranslateAccountName(string, uint32, int) (string, error) +pkg syscall (windows-386), func TranslateName(*uint16, uint32, uint32, *uint16, *uint32) error +pkg syscall (windows-386), func TransmitFile(Handle, Handle, uint32, uint32, *Overlapped, *TransmitFileBuffers, uint32) error +pkg syscall (windows-386), func UTF16ToString([]uint16) string +pkg syscall (windows-386), func UnmapViewOfFile(uintptr) error +pkg syscall (windows-386), func VirtualLock(uintptr, uintptr) error +pkg syscall (windows-386), func VirtualUnlock(uintptr, uintptr) error +pkg syscall (windows-386), func WSACleanup() error +pkg syscall (windows-386), func WSAIoctl(Handle, uint32, *byte, uint32, *byte, uint32, *uint32, *Overlapped, uintptr) error +pkg syscall (windows-386), func WSARecv(Handle, *WSABuf, uint32, *uint32, *uint32, *Overlapped, *byte) error +pkg syscall (windows-386), func WSARecvFrom(Handle, *WSABuf, uint32, *uint32, *uint32, *RawSockaddrAny, *int32, *Overlapped, *byte) error +pkg syscall (windows-386), func WSASend(Handle, *WSABuf, uint32, *uint32, uint32, *Overlapped, *byte) error +pkg syscall (windows-386), func WSASendTo(Handle, *WSABuf, uint32, *uint32, uint32, *RawSockaddrAny, int32, *Overlapped, *byte) error +pkg syscall (windows-386), func WSASendto(Handle, *WSABuf, uint32, *uint32, uint32, Sockaddr, *Overlapped, *byte) error +pkg syscall (windows-386), func WSAStartup(uint32, *WSAData) error +pkg syscall (windows-386), func WaitForSingleObject(Handle, uint32) (uint32, error) +pkg syscall (windows-386), func Write(Handle, []byte) (int, error) +pkg syscall (windows-386), func WriteFile(Handle, []byte, *uint32, *Overlapped) error +pkg syscall (windows-386), method (*DLL) FindProc(string) (*Proc, error) +pkg syscall (windows-386), method (*DLL) MustFindProc(string) *Proc +pkg syscall (windows-386), method (*DLL) Release() error +pkg syscall (windows-386), method (*DLLError) Error() string +pkg syscall (windows-386), method (*Filetime) Nanoseconds() int64 +pkg syscall (windows-386), method (*LazyDLL) Handle() uintptr +pkg syscall (windows-386), method (*LazyDLL) Load() error +pkg syscall (windows-386), method (*LazyDLL) NewProc(string) *LazyProc +pkg syscall (windows-386), method (*LazyProc) Addr() uintptr +pkg syscall (windows-386), method (*LazyProc) Call(...uintptr) (uintptr, error) +pkg syscall (windows-386), method (*LazyProc) Find() error +pkg syscall (windows-386), method (*Proc) Addr() uintptr +pkg syscall (windows-386), method (*Proc) Call(...uintptr) (uintptr, error) +pkg syscall (windows-386), method (*RawSockaddrAny) Sockaddr() (Sockaddr, error) +pkg syscall (windows-386), method (*SID) Copy() (*SID, error) +pkg syscall (windows-386), method (*SID) Len() int +pkg syscall (windows-386), method (*SID) LookupAccount(string) (string, uint32, error) +pkg syscall (windows-386), method (*SID) String() (string, error) +pkg syscall (windows-386), method (*Timeval) Nanoseconds() int64 +pkg syscall (windows-386), method (Token) Close() error +pkg syscall (windows-386), method (Token) GetTokenPrimaryGroup() (*Tokenprimarygroup, error) +pkg syscall (windows-386), method (Token) GetTokenUser() (*Tokenuser, error) +pkg syscall (windows-386), method (Token) GetUserProfileDirectory() (string, error) +pkg syscall (windows-386), type ByHandleFileInformation struct +pkg syscall (windows-386), type ByHandleFileInformation struct, CreationTime Filetime +pkg syscall (windows-386), type ByHandleFileInformation struct, FileAttributes uint32 +pkg syscall (windows-386), type ByHandleFileInformation struct, FileIndexHigh uint32 +pkg syscall (windows-386), type ByHandleFileInformation struct, FileIndexLow uint32 +pkg syscall (windows-386), type ByHandleFileInformation struct, FileSizeHigh uint32 +pkg syscall (windows-386), type ByHandleFileInformation struct, FileSizeLow uint32 +pkg syscall (windows-386), type ByHandleFileInformation struct, LastAccessTime Filetime +pkg syscall (windows-386), type ByHandleFileInformation struct, LastWriteTime Filetime +pkg syscall (windows-386), type ByHandleFileInformation struct, NumberOfLinks uint32 +pkg syscall (windows-386), type ByHandleFileInformation struct, VolumeSerialNumber uint32 +pkg syscall (windows-386), type CertChainContext struct +pkg syscall (windows-386), type CertChainContext struct, ChainCount uint32 +pkg syscall (windows-386), type CertChainContext struct, Chains **CertSimpleChain +pkg syscall (windows-386), type CertChainContext struct, HasRevocationFreshnessTime uint32 +pkg syscall (windows-386), type CertChainContext struct, LowerQualityChainCount uint32 +pkg syscall (windows-386), type CertChainContext struct, LowerQualityChains **CertChainContext +pkg syscall (windows-386), type CertChainContext struct, RevocationFreshnessTime uint32 +pkg syscall (windows-386), type CertChainContext struct, Size uint32 +pkg syscall (windows-386), type CertChainContext struct, TrustStatus CertTrustStatus +pkg syscall (windows-386), type CertChainElement struct +pkg syscall (windows-386), type CertChainElement struct, ApplicationUsage *CertEnhKeyUsage +pkg syscall (windows-386), type CertChainElement struct, CertContext *CertContext +pkg syscall (windows-386), type CertChainElement struct, ExtendedErrorInfo *uint16 +pkg syscall (windows-386), type CertChainElement struct, IssuanceUsage *CertEnhKeyUsage +pkg syscall (windows-386), type CertChainElement struct, RevocationInfo *CertRevocationInfo +pkg syscall (windows-386), type CertChainElement struct, Size uint32 +pkg syscall (windows-386), type CertChainElement struct, TrustStatus CertTrustStatus +pkg syscall (windows-386), type CertChainPara struct +pkg syscall (windows-386), type CertChainPara struct, CacheResync *Filetime +pkg syscall (windows-386), type CertChainPara struct, CheckRevocationFreshnessTime uint32 +pkg syscall (windows-386), type CertChainPara struct, RequestedUsage CertUsageMatch +pkg syscall (windows-386), type CertChainPara struct, RequstedIssuancePolicy CertUsageMatch +pkg syscall (windows-386), type CertChainPara struct, RevocationFreshnessTime uint32 +pkg syscall (windows-386), type CertChainPara struct, Size uint32 +pkg syscall (windows-386), type CertChainPara struct, URLRetrievalTimeout uint32 +pkg syscall (windows-386), type CertChainPolicyPara struct +pkg syscall (windows-386), type CertChainPolicyPara struct, ExtraPolicyPara uintptr +pkg syscall (windows-386), type CertChainPolicyPara struct, Flags uint32 +pkg syscall (windows-386), type CertChainPolicyPara struct, Size uint32 +pkg syscall (windows-386), type CertChainPolicyStatus struct +pkg syscall (windows-386), type CertChainPolicyStatus struct, ChainIndex uint32 +pkg syscall (windows-386), type CertChainPolicyStatus struct, ElementIndex uint32 +pkg syscall (windows-386), type CertChainPolicyStatus struct, Error uint32 +pkg syscall (windows-386), type CertChainPolicyStatus struct, ExtraPolicyStatus uintptr +pkg syscall (windows-386), type CertChainPolicyStatus struct, Size uint32 +pkg syscall (windows-386), type CertContext struct +pkg syscall (windows-386), type CertContext struct, CertInfo uintptr +pkg syscall (windows-386), type CertContext struct, EncodedCert *byte +pkg syscall (windows-386), type CertContext struct, EncodingType uint32 +pkg syscall (windows-386), type CertContext struct, Length uint32 +pkg syscall (windows-386), type CertContext struct, Store Handle +pkg syscall (windows-386), type CertEnhKeyUsage struct +pkg syscall (windows-386), type CertEnhKeyUsage struct, Length uint32 +pkg syscall (windows-386), type CertEnhKeyUsage struct, UsageIdentifiers **byte +pkg syscall (windows-386), type CertRevocationInfo struct +pkg syscall (windows-386), type CertRevocationInfo struct, CrlInfo uintptr +pkg syscall (windows-386), type CertRevocationInfo struct, FreshnessTime uint32 +pkg syscall (windows-386), type CertRevocationInfo struct, HasFreshnessTime uint32 +pkg syscall (windows-386), type CertRevocationInfo struct, OidSpecificInfo uintptr +pkg syscall (windows-386), type CertRevocationInfo struct, RevocationOid *byte +pkg syscall (windows-386), type CertRevocationInfo struct, RevocationResult uint32 +pkg syscall (windows-386), type CertRevocationInfo struct, Size uint32 +pkg syscall (windows-386), type CertSimpleChain struct +pkg syscall (windows-386), type CertSimpleChain struct, Elements **CertChainElement +pkg syscall (windows-386), type CertSimpleChain struct, HasRevocationFreshnessTime uint32 +pkg syscall (windows-386), type CertSimpleChain struct, NumElements uint32 +pkg syscall (windows-386), type CertSimpleChain struct, RevocationFreshnessTime uint32 +pkg syscall (windows-386), type CertSimpleChain struct, Size uint32 +pkg syscall (windows-386), type CertSimpleChain struct, TrustListInfo uintptr +pkg syscall (windows-386), type CertSimpleChain struct, TrustStatus CertTrustStatus +pkg syscall (windows-386), type CertTrustStatus struct +pkg syscall (windows-386), type CertTrustStatus struct, ErrorStatus uint32 +pkg syscall (windows-386), type CertTrustStatus struct, InfoStatus uint32 +pkg syscall (windows-386), type CertUsageMatch struct +pkg syscall (windows-386), type CertUsageMatch struct, Type uint32 +pkg syscall (windows-386), type CertUsageMatch struct, Usage CertEnhKeyUsage +pkg syscall (windows-386), type DLL struct +pkg syscall (windows-386), type DLL struct, Handle Handle +pkg syscall (windows-386), type DLL struct, Name string +pkg syscall (windows-386), type DLLError struct +pkg syscall (windows-386), type DLLError struct, Err error +pkg syscall (windows-386), type DLLError struct, Msg string +pkg syscall (windows-386), type DLLError struct, ObjName string +pkg syscall (windows-386), type DNSMXData struct +pkg syscall (windows-386), type DNSMXData struct, NameExchange *uint16 +pkg syscall (windows-386), type DNSMXData struct, Pad uint16 +pkg syscall (windows-386), type DNSMXData struct, Preference uint16 +pkg syscall (windows-386), type DNSPTRData struct +pkg syscall (windows-386), type DNSPTRData struct, Host *uint16 +pkg syscall (windows-386), type DNSRecord struct +pkg syscall (windows-386), type DNSRecord struct, Data [40]byte +pkg syscall (windows-386), type DNSRecord struct, Dw uint32 +pkg syscall (windows-386), type DNSRecord struct, Length uint16 +pkg syscall (windows-386), type DNSRecord struct, Name *uint16 +pkg syscall (windows-386), type DNSRecord struct, Next *DNSRecord +pkg syscall (windows-386), type DNSRecord struct, Reserved uint32 +pkg syscall (windows-386), type DNSRecord struct, Ttl uint32 +pkg syscall (windows-386), type DNSRecord struct, Type uint16 +pkg syscall (windows-386), type DNSSRVData struct +pkg syscall (windows-386), type DNSSRVData struct, Pad uint16 +pkg syscall (windows-386), type DNSSRVData struct, Port uint16 +pkg syscall (windows-386), type DNSSRVData struct, Priority uint16 +pkg syscall (windows-386), type DNSSRVData struct, Target *uint16 +pkg syscall (windows-386), type DNSSRVData struct, Weight uint16 +pkg syscall (windows-386), type DNSTXTData struct +pkg syscall (windows-386), type DNSTXTData struct, StringArray [1]*uint16 +pkg syscall (windows-386), type DNSTXTData struct, StringCount uint16 +pkg syscall (windows-386), type FileNotifyInformation struct +pkg syscall (windows-386), type FileNotifyInformation struct, Action uint32 +pkg syscall (windows-386), type FileNotifyInformation struct, FileName uint16 +pkg syscall (windows-386), type FileNotifyInformation struct, FileNameLength uint32 +pkg syscall (windows-386), type FileNotifyInformation struct, NextEntryOffset uint32 +pkg syscall (windows-386), type Filetime struct +pkg syscall (windows-386), type Filetime struct, HighDateTime uint32 +pkg syscall (windows-386), type Filetime struct, LowDateTime uint32 +pkg syscall (windows-386), type Handle uintptr +pkg syscall (windows-386), type Hostent struct +pkg syscall (windows-386), type Hostent struct, AddrList **byte +pkg syscall (windows-386), type Hostent struct, AddrType uint16 +pkg syscall (windows-386), type Hostent struct, Aliases **byte +pkg syscall (windows-386), type Hostent struct, Length uint16 +pkg syscall (windows-386), type Hostent struct, Name *byte +pkg syscall (windows-386), type InterfaceInfo struct +pkg syscall (windows-386), type InterfaceInfo struct, Address SockaddrGen +pkg syscall (windows-386), type InterfaceInfo struct, BroadcastAddress SockaddrGen +pkg syscall (windows-386), type InterfaceInfo struct, Flags uint32 +pkg syscall (windows-386), type InterfaceInfo struct, Netmask SockaddrGen +pkg syscall (windows-386), type IpAdapterInfo struct +pkg syscall (windows-386), type IpAdapterInfo struct, AdapterName [MAX_ADAPTER_NAME_LENGTH + 4]byte +pkg syscall (windows-386), type IpAdapterInfo struct, Address [MAX_ADAPTER_ADDRESS_LENGTH]byte +pkg syscall (windows-386), type IpAdapterInfo struct, AddressLength uint32 +pkg syscall (windows-386), type IpAdapterInfo struct, ComboIndex uint32 +pkg syscall (windows-386), type IpAdapterInfo struct, CurrentIpAddress *IpAddrString +pkg syscall (windows-386), type IpAdapterInfo struct, Description [MAX_ADAPTER_DESCRIPTION_LENGTH + 4]byte +pkg syscall (windows-386), type IpAdapterInfo struct, DhcpEnabled uint32 +pkg syscall (windows-386), type IpAdapterInfo struct, DhcpServer IpAddrString +pkg syscall (windows-386), type IpAdapterInfo struct, GatewayList IpAddrString +pkg syscall (windows-386), type IpAdapterInfo struct, HaveWins bool +pkg syscall (windows-386), type IpAdapterInfo struct, Index uint32 +pkg syscall (windows-386), type IpAdapterInfo struct, IpAddressList IpAddrString +pkg syscall (windows-386), type IpAdapterInfo struct, LeaseExpires int64 +pkg syscall (windows-386), type IpAdapterInfo struct, LeaseObtained int64 +pkg syscall (windows-386), type IpAdapterInfo struct, Next *IpAdapterInfo +pkg syscall (windows-386), type IpAdapterInfo struct, PrimaryWinsServer IpAddrString +pkg syscall (windows-386), type IpAdapterInfo struct, SecondaryWinsServer IpAddrString +pkg syscall (windows-386), type IpAdapterInfo struct, Type uint32 +pkg syscall (windows-386), type IpAddrString struct +pkg syscall (windows-386), type IpAddrString struct, Context uint32 +pkg syscall (windows-386), type IpAddrString struct, IpAddress IpAddressString +pkg syscall (windows-386), type IpAddrString struct, IpMask IpMaskString +pkg syscall (windows-386), type IpAddrString struct, Next *IpAddrString +pkg syscall (windows-386), type IpAddressString struct +pkg syscall (windows-386), type IpAddressString struct, String [16]byte +pkg syscall (windows-386), type IpMaskString IpAddressString +pkg syscall (windows-386), type LazyDLL struct +pkg syscall (windows-386), type LazyDLL struct, Name string +pkg syscall (windows-386), type LazyProc struct +pkg syscall (windows-386), type LazyProc struct, Name string +pkg syscall (windows-386), type MibIfRow struct +pkg syscall (windows-386), type MibIfRow struct, AdminStatus uint32 +pkg syscall (windows-386), type MibIfRow struct, Descr [MAXLEN_IFDESCR]byte +pkg syscall (windows-386), type MibIfRow struct, DescrLen uint32 +pkg syscall (windows-386), type MibIfRow struct, InDiscards uint32 +pkg syscall (windows-386), type MibIfRow struct, InErrors uint32 +pkg syscall (windows-386), type MibIfRow struct, InNUcastPkts uint32 +pkg syscall (windows-386), type MibIfRow struct, InOctets uint32 +pkg syscall (windows-386), type MibIfRow struct, InUcastPkts uint32 +pkg syscall (windows-386), type MibIfRow struct, InUnknownProtos uint32 +pkg syscall (windows-386), type MibIfRow struct, Index uint32 +pkg syscall (windows-386), type MibIfRow struct, LastChange uint32 +pkg syscall (windows-386), type MibIfRow struct, Mtu uint32 +pkg syscall (windows-386), type MibIfRow struct, Name [MAX_INTERFACE_NAME_LEN]uint16 +pkg syscall (windows-386), type MibIfRow struct, OperStatus uint32 +pkg syscall (windows-386), type MibIfRow struct, OutDiscards uint32 +pkg syscall (windows-386), type MibIfRow struct, OutErrors uint32 +pkg syscall (windows-386), type MibIfRow struct, OutNUcastPkts uint32 +pkg syscall (windows-386), type MibIfRow struct, OutOctets uint32 +pkg syscall (windows-386), type MibIfRow struct, OutQLen uint32 +pkg syscall (windows-386), type MibIfRow struct, OutUcastPkts uint32 +pkg syscall (windows-386), type MibIfRow struct, PhysAddr [MAXLEN_PHYSADDR]byte +pkg syscall (windows-386), type MibIfRow struct, PhysAddrLen uint32 +pkg syscall (windows-386), type MibIfRow struct, Speed uint32 +pkg syscall (windows-386), type MibIfRow struct, Type uint32 +pkg syscall (windows-386), type Overlapped struct +pkg syscall (windows-386), type Overlapped struct, HEvent Handle +pkg syscall (windows-386), type Overlapped struct, Internal uintptr +pkg syscall (windows-386), type Overlapped struct, InternalHigh uintptr +pkg syscall (windows-386), type Overlapped struct, Offset uint32 +pkg syscall (windows-386), type Overlapped struct, OffsetHigh uint32 +pkg syscall (windows-386), type Proc struct +pkg syscall (windows-386), type Proc struct, Dll *DLL +pkg syscall (windows-386), type Proc struct, Name string +pkg syscall (windows-386), type ProcessInformation struct +pkg syscall (windows-386), type ProcessInformation struct, Process Handle +pkg syscall (windows-386), type ProcessInformation struct, ProcessId uint32 +pkg syscall (windows-386), type ProcessInformation struct, Thread Handle +pkg syscall (windows-386), type ProcessInformation struct, ThreadId uint32 +pkg syscall (windows-386), type Protoent struct +pkg syscall (windows-386), type Protoent struct, Aliases **byte +pkg syscall (windows-386), type Protoent struct, Name *byte +pkg syscall (windows-386), type Protoent struct, Proto uint16 +pkg syscall (windows-386), type RawSockaddr struct, Family uint16 +pkg syscall (windows-386), type RawSockaddrAny struct, Pad [96]int8 +pkg syscall (windows-386), type RawSockaddrInet4 struct, Family uint16 +pkg syscall (windows-386), type RawSockaddrInet4 struct, Zero [8]uint8 +pkg syscall (windows-386), type Rusage struct, CreationTime Filetime +pkg syscall (windows-386), type Rusage struct, ExitTime Filetime +pkg syscall (windows-386), type Rusage struct, KernelTime Filetime +pkg syscall (windows-386), type Rusage struct, UserTime Filetime +pkg syscall (windows-386), type SID struct +pkg syscall (windows-386), type SIDAndAttributes struct +pkg syscall (windows-386), type SIDAndAttributes struct, Attributes uint32 +pkg syscall (windows-386), type SIDAndAttributes struct, Sid *SID +pkg syscall (windows-386), type SSLExtraCertChainPolicyPara struct +pkg syscall (windows-386), type SSLExtraCertChainPolicyPara struct, AuthType uint32 +pkg syscall (windows-386), type SSLExtraCertChainPolicyPara struct, Checks uint32 +pkg syscall (windows-386), type SSLExtraCertChainPolicyPara struct, ServerName *uint16 +pkg syscall (windows-386), type SSLExtraCertChainPolicyPara struct, Size uint32 +pkg syscall (windows-386), type SecurityAttributes struct +pkg syscall (windows-386), type SecurityAttributes struct, InheritHandle uint32 +pkg syscall (windows-386), type SecurityAttributes struct, Length uint32 +pkg syscall (windows-386), type SecurityAttributes struct, SecurityDescriptor uintptr +pkg syscall (windows-386), type Servent struct +pkg syscall (windows-386), type Servent struct, Aliases **byte +pkg syscall (windows-386), type Servent struct, Name *byte +pkg syscall (windows-386), type Servent struct, Port uint16 +pkg syscall (windows-386), type Servent struct, Proto *byte +pkg syscall (windows-386), type SockaddrGen [24]byte +pkg syscall (windows-386), type StartupInfo struct +pkg syscall (windows-386), type StartupInfo struct, Cb uint32 +pkg syscall (windows-386), type StartupInfo struct, Desktop *uint16 +pkg syscall (windows-386), type StartupInfo struct, FillAttribute uint32 +pkg syscall (windows-386), type StartupInfo struct, Flags uint32 +pkg syscall (windows-386), type StartupInfo struct, ShowWindow uint16 +pkg syscall (windows-386), type StartupInfo struct, StdErr Handle +pkg syscall (windows-386), type StartupInfo struct, StdInput Handle +pkg syscall (windows-386), type StartupInfo struct, StdOutput Handle +pkg syscall (windows-386), type StartupInfo struct, Title *uint16 +pkg syscall (windows-386), type StartupInfo struct, X uint32 +pkg syscall (windows-386), type StartupInfo struct, XCountChars uint32 +pkg syscall (windows-386), type StartupInfo struct, XSize uint32 +pkg syscall (windows-386), type StartupInfo struct, Y uint32 +pkg syscall (windows-386), type StartupInfo struct, YCountChars uint32 +pkg syscall (windows-386), type StartupInfo struct, YSize uint32 +pkg syscall (windows-386), type SysProcAttr struct, CmdLine string +pkg syscall (windows-386), type SysProcAttr struct, HideWindow bool +pkg syscall (windows-386), type Systemtime struct +pkg syscall (windows-386), type Systemtime struct, Day uint16 +pkg syscall (windows-386), type Systemtime struct, DayOfWeek uint16 +pkg syscall (windows-386), type Systemtime struct, Hour uint16 +pkg syscall (windows-386), type Systemtime struct, Milliseconds uint16 +pkg syscall (windows-386), type Systemtime struct, Minute uint16 +pkg syscall (windows-386), type Systemtime struct, Month uint16 +pkg syscall (windows-386), type Systemtime struct, Second uint16 +pkg syscall (windows-386), type Systemtime struct, Year uint16 +pkg syscall (windows-386), type Timespec struct, Nsec int64 +pkg syscall (windows-386), type Timespec struct, Sec int64 +pkg syscall (windows-386), type Timeval struct, Sec int32 +pkg syscall (windows-386), type Timeval struct, Usec int32 +pkg syscall (windows-386), type Timezoneinformation struct +pkg syscall (windows-386), type Timezoneinformation struct, Bias int32 +pkg syscall (windows-386), type Timezoneinformation struct, DaylightBias int32 +pkg syscall (windows-386), type Timezoneinformation struct, DaylightDate Systemtime +pkg syscall (windows-386), type Timezoneinformation struct, DaylightName [32]uint16 +pkg syscall (windows-386), type Timezoneinformation struct, StandardBias int32 +pkg syscall (windows-386), type Timezoneinformation struct, StandardDate Systemtime +pkg syscall (windows-386), type Timezoneinformation struct, StandardName [32]uint16 +pkg syscall (windows-386), type Token Handle +pkg syscall (windows-386), type Tokenprimarygroup struct +pkg syscall (windows-386), type Tokenprimarygroup struct, PrimaryGroup *SID +pkg syscall (windows-386), type Tokenuser struct +pkg syscall (windows-386), type Tokenuser struct, User SIDAndAttributes +pkg syscall (windows-386), type TransmitFileBuffers struct +pkg syscall (windows-386), type TransmitFileBuffers struct, Head uintptr +pkg syscall (windows-386), type TransmitFileBuffers struct, HeadLength uint32 +pkg syscall (windows-386), type TransmitFileBuffers struct, Tail uintptr +pkg syscall (windows-386), type TransmitFileBuffers struct, TailLength uint32 +pkg syscall (windows-386), type UserInfo10 struct +pkg syscall (windows-386), type UserInfo10 struct, Comment *uint16 +pkg syscall (windows-386), type UserInfo10 struct, FullName *uint16 +pkg syscall (windows-386), type UserInfo10 struct, Name *uint16 +pkg syscall (windows-386), type UserInfo10 struct, UsrComment *uint16 +pkg syscall (windows-386), type WSABuf struct +pkg syscall (windows-386), type WSABuf struct, Buf *byte +pkg syscall (windows-386), type WSABuf struct, Len uint32 +pkg syscall (windows-386), type WSAData struct +pkg syscall (windows-386), type WSAData struct, Description [WSADESCRIPTION_LEN + 1]byte +pkg syscall (windows-386), type WSAData struct, HighVersion uint16 +pkg syscall (windows-386), type WSAData struct, MaxSockets uint16 +pkg syscall (windows-386), type WSAData struct, MaxUdpDg uint16 +pkg syscall (windows-386), type WSAData struct, SystemStatus [WSASYS_STATUS_LEN + 1]byte +pkg syscall (windows-386), type WSAData struct, VendorInfo *byte +pkg syscall (windows-386), type WSAData struct, Version uint16 +pkg syscall (windows-386), type WaitStatus struct +pkg syscall (windows-386), type WaitStatus struct, ExitCode uint32 +pkg syscall (windows-386), type Win32FileAttributeData struct +pkg syscall (windows-386), type Win32FileAttributeData struct, CreationTime Filetime +pkg syscall (windows-386), type Win32FileAttributeData struct, FileAttributes uint32 +pkg syscall (windows-386), type Win32FileAttributeData struct, FileSizeHigh uint32 +pkg syscall (windows-386), type Win32FileAttributeData struct, FileSizeLow uint32 +pkg syscall (windows-386), type Win32FileAttributeData struct, LastAccessTime Filetime +pkg syscall (windows-386), type Win32FileAttributeData struct, LastWriteTime Filetime +pkg syscall (windows-386), type Win32finddata struct +pkg syscall (windows-386), type Win32finddata struct, AlternateFileName [13]uint16 +pkg syscall (windows-386), type Win32finddata struct, CreationTime Filetime +pkg syscall (windows-386), type Win32finddata struct, FileAttributes uint32 +pkg syscall (windows-386), type Win32finddata struct, FileName [MAX_PATH - 1]uint16 +pkg syscall (windows-386), type Win32finddata struct, FileSizeHigh uint32 +pkg syscall (windows-386), type Win32finddata struct, FileSizeLow uint32 +pkg syscall (windows-386), type Win32finddata struct, LastAccessTime Filetime +pkg syscall (windows-386), type Win32finddata struct, LastWriteTime Filetime +pkg syscall (windows-386), type Win32finddata struct, Reserved0 uint32 +pkg syscall (windows-386), type Win32finddata struct, Reserved1 uint32 +pkg syscall (windows-386), var OID_PKIX_KP_SERVER_AUTH []byte +pkg syscall (windows-386), var OID_SERVER_GATED_CRYPTO []byte +pkg syscall (windows-386), var OID_SGC_NETSCAPE []byte +pkg syscall (windows-386), var Stderr Handle +pkg syscall (windows-386), var Stdin Handle +pkg syscall (windows-386), var Stdout Handle +pkg syscall (windows-amd64), const AF_NETBIOS ideal-int +pkg syscall (windows-amd64), const APPLICATION_ERROR ideal-int +pkg syscall (windows-amd64), const AUTHTYPE_CLIENT ideal-int +pkg syscall (windows-amd64), const AUTHTYPE_SERVER ideal-int +pkg syscall (windows-amd64), const CERT_CHAIN_POLICY_AUTHENTICODE ideal-int +pkg syscall (windows-amd64), const CERT_CHAIN_POLICY_AUTHENTICODE_TS ideal-int +pkg syscall (windows-amd64), const CERT_CHAIN_POLICY_BASE ideal-int +pkg syscall (windows-amd64), const CERT_CHAIN_POLICY_BASIC_CONSTRAINTS ideal-int +pkg syscall (windows-amd64), const CERT_CHAIN_POLICY_EV ideal-int +pkg syscall (windows-amd64), const CERT_CHAIN_POLICY_MICROSOFT_ROOT ideal-int +pkg syscall (windows-amd64), const CERT_CHAIN_POLICY_NT_AUTH ideal-int +pkg syscall (windows-amd64), const CERT_CHAIN_POLICY_SSL ideal-int +pkg syscall (windows-amd64), const CERT_E_CN_NO_MATCH ideal-int +pkg syscall (windows-amd64), const CERT_E_EXPIRED ideal-int +pkg syscall (windows-amd64), const CERT_E_PURPOSE ideal-int +pkg syscall (windows-amd64), const CERT_E_ROLE ideal-int +pkg syscall (windows-amd64), const CERT_E_UNTRUSTEDROOT ideal-int +pkg syscall (windows-amd64), const CERT_STORE_ADD_ALWAYS ideal-int +pkg syscall (windows-amd64), const CERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG ideal-int +pkg syscall (windows-amd64), const CERT_STORE_PROV_MEMORY ideal-int +pkg syscall (windows-amd64), const CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT ideal-int +pkg syscall (windows-amd64), const CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT ideal-int +pkg syscall (windows-amd64), const CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT ideal-int +pkg syscall (windows-amd64), const CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT ideal-int +pkg syscall (windows-amd64), const CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT ideal-int +pkg syscall (windows-amd64), const CERT_TRUST_INVALID_BASIC_CONSTRAINTS ideal-int +pkg syscall (windows-amd64), const CERT_TRUST_INVALID_EXTENSION ideal-int +pkg syscall (windows-amd64), const CERT_TRUST_INVALID_NAME_CONSTRAINTS ideal-int +pkg syscall (windows-amd64), const CERT_TRUST_INVALID_POLICY_CONSTRAINTS ideal-int +pkg syscall (windows-amd64), const CERT_TRUST_IS_CYCLIC ideal-int +pkg syscall (windows-amd64), const CERT_TRUST_IS_EXPLICIT_DISTRUST ideal-int +pkg syscall (windows-amd64), const CERT_TRUST_IS_NOT_SIGNATURE_VALID ideal-int +pkg syscall (windows-amd64), const CERT_TRUST_IS_NOT_TIME_VALID ideal-int +pkg syscall (windows-amd64), const CERT_TRUST_IS_NOT_VALID_FOR_USAGE ideal-int +pkg syscall (windows-amd64), const CERT_TRUST_IS_OFFLINE_REVOCATION ideal-int +pkg syscall (windows-amd64), const CERT_TRUST_IS_REVOKED ideal-int +pkg syscall (windows-amd64), const CERT_TRUST_IS_UNTRUSTED_ROOT ideal-int +pkg syscall (windows-amd64), const CERT_TRUST_NO_ERROR ideal-int +pkg syscall (windows-amd64), const CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY ideal-int +pkg syscall (windows-amd64), const CERT_TRUST_REVOCATION_STATUS_UNKNOWN ideal-int +pkg syscall (windows-amd64), const CREATE_ALWAYS ideal-int +pkg syscall (windows-amd64), const CREATE_NEW ideal-int +pkg syscall (windows-amd64), const CREATE_UNICODE_ENVIRONMENT ideal-int +pkg syscall (windows-amd64), const CRYPT_DEFAULT_CONTAINER_OPTIONAL ideal-int +pkg syscall (windows-amd64), const CRYPT_DELETEKEYSET ideal-int +pkg syscall (windows-amd64), const CRYPT_MACHINE_KEYSET ideal-int +pkg syscall (windows-amd64), const CRYPT_NEWKEYSET ideal-int +pkg syscall (windows-amd64), const CRYPT_SILENT ideal-int +pkg syscall (windows-amd64), const CRYPT_VERIFYCONTEXT ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_A ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_A6 ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_AAAA ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_ADDRS ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_AFSDB ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_ALL ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_ANY ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_ATMA ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_AXFR ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_CERT ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_CNAME ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_DHCID ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_DNAME ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_DNSKEY ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_DS ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_EID ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_GID ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_GPOS ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_HINFO ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_ISDN ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_IXFR ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_KEY ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_KX ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_LOC ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_MAILA ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_MAILB ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_MB ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_MD ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_MF ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_MG ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_MINFO ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_MR ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_MX ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_NAPTR ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_NBSTAT ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_NIMLOC ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_NS ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_NSAP ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_NSAPPTR ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_NSEC ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_NULL ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_NXT ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_OPT ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_PTR ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_PX ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_RP ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_RRSIG ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_RT ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_SIG ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_SINK ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_SOA ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_SRV ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_TEXT ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_TKEY ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_TSIG ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_UID ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_UINFO ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_UNSPEC ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_WINS ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_WINSR ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_WKS ideal-int +pkg syscall (windows-amd64), const DNS_TYPE_X25 ideal-int +pkg syscall (windows-amd64), const DUPLICATE_CLOSE_SOURCE ideal-int +pkg syscall (windows-amd64), const DUPLICATE_SAME_ACCESS ideal-int +pkg syscall (windows-amd64), const EADV Errno +pkg syscall (windows-amd64), const EBADE Errno +pkg syscall (windows-amd64), const EBADFD Errno +pkg syscall (windows-amd64), const EBADR Errno +pkg syscall (windows-amd64), const EBADRQC Errno +pkg syscall (windows-amd64), const EBADSLT Errno +pkg syscall (windows-amd64), const EBFONT Errno +pkg syscall (windows-amd64), const ECHRNG Errno +pkg syscall (windows-amd64), const ECOMM Errno +pkg syscall (windows-amd64), const EDEADLOCK Errno +pkg syscall (windows-amd64), const EDOTDOT Errno +pkg syscall (windows-amd64), const EISNAM Errno +pkg syscall (windows-amd64), const EKEYEXPIRED Errno +pkg syscall (windows-amd64), const EKEYREJECTED Errno +pkg syscall (windows-amd64), const EKEYREVOKED Errno +pkg syscall (windows-amd64), const EL2HLT Errno +pkg syscall (windows-amd64), const EL2NSYNC Errno +pkg syscall (windows-amd64), const EL3HLT Errno +pkg syscall (windows-amd64), const EL3RST Errno +pkg syscall (windows-amd64), const ELIBACC Errno +pkg syscall (windows-amd64), const ELIBBAD Errno +pkg syscall (windows-amd64), const ELIBEXEC Errno +pkg syscall (windows-amd64), const ELIBMAX Errno +pkg syscall (windows-amd64), const ELIBSCN Errno +pkg syscall (windows-amd64), const ELNRNG Errno +pkg syscall (windows-amd64), const EMEDIUMTYPE Errno +pkg syscall (windows-amd64), const ENAVAIL Errno +pkg syscall (windows-amd64), const ENOANO Errno +pkg syscall (windows-amd64), const ENOCSI Errno +pkg syscall (windows-amd64), const ENOKEY Errno +pkg syscall (windows-amd64), const ENOMEDIUM Errno +pkg syscall (windows-amd64), const ENONET Errno +pkg syscall (windows-amd64), const ENOPKG Errno +pkg syscall (windows-amd64), const ENOTNAM Errno +pkg syscall (windows-amd64), const ENOTUNIQ Errno +pkg syscall (windows-amd64), const EREMCHG Errno +pkg syscall (windows-amd64), const EREMOTEIO Errno +pkg syscall (windows-amd64), const ERESTART Errno +pkg syscall (windows-amd64), const ERROR_ACCESS_DENIED Errno +pkg syscall (windows-amd64), const ERROR_ALREADY_EXISTS Errno +pkg syscall (windows-amd64), const ERROR_BROKEN_PIPE Errno +pkg syscall (windows-amd64), const ERROR_BUFFER_OVERFLOW Errno +pkg syscall (windows-amd64), const ERROR_ENVVAR_NOT_FOUND Errno +pkg syscall (windows-amd64), const ERROR_FILE_EXISTS Errno +pkg syscall (windows-amd64), const ERROR_FILE_NOT_FOUND Errno +pkg syscall (windows-amd64), const ERROR_INSUFFICIENT_BUFFER Errno +pkg syscall (windows-amd64), const ERROR_IO_PENDING Errno +pkg syscall (windows-amd64), const ERROR_MOD_NOT_FOUND Errno +pkg syscall (windows-amd64), const ERROR_NO_MORE_FILES Errno +pkg syscall (windows-amd64), const ERROR_OPERATION_ABORTED Errno +pkg syscall (windows-amd64), const ERROR_PATH_NOT_FOUND Errno +pkg syscall (windows-amd64), const ERROR_PROC_NOT_FOUND Errno +pkg syscall (windows-amd64), const ESRMNT Errno +pkg syscall (windows-amd64), const ESTRPIPE Errno +pkg syscall (windows-amd64), const EUCLEAN Errno +pkg syscall (windows-amd64), const EUNATCH Errno +pkg syscall (windows-amd64), const EWINDOWS Errno +pkg syscall (windows-amd64), const EXFULL Errno +pkg syscall (windows-amd64), const FILE_ACTION_ADDED ideal-int +pkg syscall (windows-amd64), const FILE_ACTION_MODIFIED ideal-int +pkg syscall (windows-amd64), const FILE_ACTION_REMOVED ideal-int +pkg syscall (windows-amd64), const FILE_ACTION_RENAMED_NEW_NAME ideal-int +pkg syscall (windows-amd64), const FILE_ACTION_RENAMED_OLD_NAME ideal-int +pkg syscall (windows-amd64), const FILE_APPEND_DATA ideal-int +pkg syscall (windows-amd64), const FILE_ATTRIBUTE_ARCHIVE ideal-int +pkg syscall (windows-amd64), const FILE_ATTRIBUTE_DIRECTORY ideal-int +pkg syscall (windows-amd64), const FILE_ATTRIBUTE_HIDDEN ideal-int +pkg syscall (windows-amd64), const FILE_ATTRIBUTE_NORMAL ideal-int +pkg syscall (windows-amd64), const FILE_ATTRIBUTE_READONLY ideal-int +pkg syscall (windows-amd64), const FILE_ATTRIBUTE_SYSTEM ideal-int +pkg syscall (windows-amd64), const FILE_BEGIN ideal-int +pkg syscall (windows-amd64), const FILE_CURRENT ideal-int +pkg syscall (windows-amd64), const FILE_END ideal-int +pkg syscall (windows-amd64), const FILE_FLAG_BACKUP_SEMANTICS ideal-int +pkg syscall (windows-amd64), const FILE_FLAG_OVERLAPPED ideal-int +pkg syscall (windows-amd64), const FILE_LIST_DIRECTORY ideal-int +pkg syscall (windows-amd64), const FILE_MAP_COPY ideal-int +pkg syscall (windows-amd64), const FILE_MAP_EXECUTE ideal-int +pkg syscall (windows-amd64), const FILE_MAP_READ ideal-int +pkg syscall (windows-amd64), const FILE_MAP_WRITE ideal-int +pkg syscall (windows-amd64), const FILE_NOTIFY_CHANGE_ATTRIBUTES ideal-int +pkg syscall (windows-amd64), const FILE_NOTIFY_CHANGE_CREATION ideal-int +pkg syscall (windows-amd64), const FILE_NOTIFY_CHANGE_DIR_NAME ideal-int +pkg syscall (windows-amd64), const FILE_NOTIFY_CHANGE_FILE_NAME ideal-int +pkg syscall (windows-amd64), const FILE_NOTIFY_CHANGE_LAST_ACCESS ideal-int +pkg syscall (windows-amd64), const FILE_NOTIFY_CHANGE_LAST_WRITE ideal-int +pkg syscall (windows-amd64), const FILE_NOTIFY_CHANGE_SIZE ideal-int +pkg syscall (windows-amd64), const FILE_SHARE_DELETE ideal-int +pkg syscall (windows-amd64), const FILE_SHARE_READ ideal-int +pkg syscall (windows-amd64), const FILE_SHARE_WRITE ideal-int +pkg syscall (windows-amd64), const FILE_TYPE_CHAR ideal-int +pkg syscall (windows-amd64), const FILE_TYPE_DISK ideal-int +pkg syscall (windows-amd64), const FILE_TYPE_PIPE ideal-int +pkg syscall (windows-amd64), const FILE_TYPE_REMOTE ideal-int +pkg syscall (windows-amd64), const FILE_TYPE_UNKNOWN ideal-int +pkg syscall (windows-amd64), const FILE_WRITE_ATTRIBUTES ideal-int +pkg syscall (windows-amd64), const FORMAT_MESSAGE_ALLOCATE_BUFFER ideal-int +pkg syscall (windows-amd64), const FORMAT_MESSAGE_ARGUMENT_ARRAY ideal-int +pkg syscall (windows-amd64), const FORMAT_MESSAGE_FROM_HMODULE ideal-int +pkg syscall (windows-amd64), const FORMAT_MESSAGE_FROM_STRING ideal-int +pkg syscall (windows-amd64), const FORMAT_MESSAGE_FROM_SYSTEM ideal-int +pkg syscall (windows-amd64), const FORMAT_MESSAGE_IGNORE_INSERTS ideal-int +pkg syscall (windows-amd64), const FORMAT_MESSAGE_MAX_WIDTH_MASK ideal-int +pkg syscall (windows-amd64), const GENERIC_ALL ideal-int +pkg syscall (windows-amd64), const GENERIC_EXECUTE ideal-int +pkg syscall (windows-amd64), const GENERIC_READ ideal-int +pkg syscall (windows-amd64), const GENERIC_WRITE ideal-int +pkg syscall (windows-amd64), const GetFileExInfoStandard ideal-int +pkg syscall (windows-amd64), const GetFileExMaxInfoLevel ideal-int +pkg syscall (windows-amd64), const HANDLE_FLAG_INHERIT ideal-int +pkg syscall (windows-amd64), const HKEY_CLASSES_ROOT ideal-int +pkg syscall (windows-amd64), const HKEY_CURRENT_CONFIG ideal-int +pkg syscall (windows-amd64), const HKEY_CURRENT_USER ideal-int +pkg syscall (windows-amd64), const HKEY_DYN_DATA ideal-int +pkg syscall (windows-amd64), const HKEY_LOCAL_MACHINE ideal-int +pkg syscall (windows-amd64), const HKEY_PERFORMANCE_DATA ideal-int +pkg syscall (windows-amd64), const HKEY_USERS ideal-int +pkg syscall (windows-amd64), const IFF_POINTTOPOINT ideal-int +pkg syscall (windows-amd64), const IGNORE ideal-int +pkg syscall (windows-amd64), const INFINITE ideal-int +pkg syscall (windows-amd64), const INVALID_FILE_ATTRIBUTES ideal-int +pkg syscall (windows-amd64), const InvalidHandle Handle +pkg syscall (windows-amd64), const KEY_ALL_ACCESS ideal-int +pkg syscall (windows-amd64), const KEY_CREATE_LINK ideal-int +pkg syscall (windows-amd64), const KEY_CREATE_SUB_KEY ideal-int +pkg syscall (windows-amd64), const KEY_ENUMERATE_SUB_KEYS ideal-int +pkg syscall (windows-amd64), const KEY_EXECUTE ideal-int +pkg syscall (windows-amd64), const KEY_NOTIFY ideal-int +pkg syscall (windows-amd64), const KEY_QUERY_VALUE ideal-int +pkg syscall (windows-amd64), const KEY_READ ideal-int +pkg syscall (windows-amd64), const KEY_SET_VALUE ideal-int +pkg syscall (windows-amd64), const KEY_WOW64_32KEY ideal-int +pkg syscall (windows-amd64), const KEY_WOW64_64KEY ideal-int +pkg syscall (windows-amd64), const KEY_WRITE ideal-int +pkg syscall (windows-amd64), const LANG_ENGLISH ideal-int +pkg syscall (windows-amd64), const MAXLEN_IFDESCR ideal-int +pkg syscall (windows-amd64), const MAXLEN_PHYSADDR ideal-int +pkg syscall (windows-amd64), const MAX_ADAPTER_ADDRESS_LENGTH ideal-int +pkg syscall (windows-amd64), const MAX_ADAPTER_DESCRIPTION_LENGTH ideal-int +pkg syscall (windows-amd64), const MAX_ADAPTER_NAME_LENGTH ideal-int +pkg syscall (windows-amd64), const MAX_COMPUTERNAME_LENGTH ideal-int +pkg syscall (windows-amd64), const MAX_INTERFACE_NAME_LEN ideal-int +pkg syscall (windows-amd64), const MAX_LONG_PATH ideal-int +pkg syscall (windows-amd64), const MAX_PATH ideal-int +pkg syscall (windows-amd64), const MaxTokenInfoClass ideal-int +pkg syscall (windows-amd64), const NameCanonical ideal-int +pkg syscall (windows-amd64), const NameCanonicalEx ideal-int +pkg syscall (windows-amd64), const NameDisplay ideal-int +pkg syscall (windows-amd64), const NameDnsDomain ideal-int +pkg syscall (windows-amd64), const NameFullyQualifiedDN ideal-int +pkg syscall (windows-amd64), const NameSamCompatible ideal-int +pkg syscall (windows-amd64), const NameServicePrincipal ideal-int +pkg syscall (windows-amd64), const NameUniqueId ideal-int +pkg syscall (windows-amd64), const NameUnknown ideal-int +pkg syscall (windows-amd64), const NameUserPrincipal ideal-int +pkg syscall (windows-amd64), const OPEN_ALWAYS ideal-int +pkg syscall (windows-amd64), const OPEN_EXISTING ideal-int +pkg syscall (windows-amd64), const PAGE_EXECUTE_READ ideal-int +pkg syscall (windows-amd64), const PAGE_EXECUTE_READWRITE ideal-int +pkg syscall (windows-amd64), const PAGE_EXECUTE_WRITECOPY ideal-int +pkg syscall (windows-amd64), const PAGE_READONLY ideal-int +pkg syscall (windows-amd64), const PAGE_READWRITE ideal-int +pkg syscall (windows-amd64), const PAGE_WRITECOPY ideal-int +pkg syscall (windows-amd64), const PKCS_7_ASN_ENCODING ideal-int +pkg syscall (windows-amd64), const PROCESS_QUERY_INFORMATION ideal-int +pkg syscall (windows-amd64), const PROV_DH_SCHANNEL ideal-int +pkg syscall (windows-amd64), const PROV_DSS ideal-int +pkg syscall (windows-amd64), const PROV_DSS_DH ideal-int +pkg syscall (windows-amd64), const PROV_EC_ECDSA_FULL ideal-int +pkg syscall (windows-amd64), const PROV_EC_ECDSA_SIG ideal-int +pkg syscall (windows-amd64), const PROV_EC_ECNRA_FULL ideal-int +pkg syscall (windows-amd64), const PROV_EC_ECNRA_SIG ideal-int +pkg syscall (windows-amd64), const PROV_FORTEZZA ideal-int +pkg syscall (windows-amd64), const PROV_INTEL_SEC ideal-int +pkg syscall (windows-amd64), const PROV_MS_EXCHANGE ideal-int +pkg syscall (windows-amd64), const PROV_REPLACE_OWF ideal-int +pkg syscall (windows-amd64), const PROV_RNG ideal-int +pkg syscall (windows-amd64), const PROV_RSA_AES ideal-int +pkg syscall (windows-amd64), const PROV_RSA_FULL ideal-int +pkg syscall (windows-amd64), const PROV_RSA_SCHANNEL ideal-int +pkg syscall (windows-amd64), const PROV_RSA_SIG ideal-int +pkg syscall (windows-amd64), const PROV_SPYRUS_LYNKS ideal-int +pkg syscall (windows-amd64), const PROV_SSL ideal-int +pkg syscall (windows-amd64), const REG_BINARY ideal-int +pkg syscall (windows-amd64), const REG_DWORD ideal-int +pkg syscall (windows-amd64), const REG_DWORD_BIG_ENDIAN ideal-int +pkg syscall (windows-amd64), const REG_DWORD_LITTLE_ENDIAN ideal-int +pkg syscall (windows-amd64), const REG_EXPAND_SZ ideal-int +pkg syscall (windows-amd64), const REG_FULL_RESOURCE_DESCRIPTOR ideal-int +pkg syscall (windows-amd64), const REG_LINK ideal-int +pkg syscall (windows-amd64), const REG_MULTI_SZ ideal-int +pkg syscall (windows-amd64), const REG_NONE ideal-int +pkg syscall (windows-amd64), const REG_QWORD ideal-int +pkg syscall (windows-amd64), const REG_QWORD_LITTLE_ENDIAN ideal-int +pkg syscall (windows-amd64), const REG_RESOURCE_LIST ideal-int +pkg syscall (windows-amd64), const REG_RESOURCE_REQUIREMENTS_LIST ideal-int +pkg syscall (windows-amd64), const REG_SZ ideal-int +pkg syscall (windows-amd64), const SIO_GET_INTERFACE_LIST ideal-int +pkg syscall (windows-amd64), const SO_UPDATE_ACCEPT_CONTEXT ideal-int +pkg syscall (windows-amd64), const STANDARD_RIGHTS_ALL ideal-int +pkg syscall (windows-amd64), const STANDARD_RIGHTS_EXECUTE ideal-int +pkg syscall (windows-amd64), const STANDARD_RIGHTS_READ ideal-int +pkg syscall (windows-amd64), const STANDARD_RIGHTS_REQUIRED ideal-int +pkg syscall (windows-amd64), const STANDARD_RIGHTS_WRITE ideal-int +pkg syscall (windows-amd64), const STARTF_USESHOWWINDOW ideal-int +pkg syscall (windows-amd64), const STARTF_USESTDHANDLES ideal-int +pkg syscall (windows-amd64), const STD_ERROR_HANDLE ideal-int +pkg syscall (windows-amd64), const STD_INPUT_HANDLE ideal-int +pkg syscall (windows-amd64), const STD_OUTPUT_HANDLE ideal-int +pkg syscall (windows-amd64), const SUBLANG_ENGLISH_US ideal-int +pkg syscall (windows-amd64), const SW_FORCEMINIMIZE ideal-int +pkg syscall (windows-amd64), const SW_HIDE ideal-int +pkg syscall (windows-amd64), const SW_MAXIMIZE ideal-int +pkg syscall (windows-amd64), const SW_MINIMIZE ideal-int +pkg syscall (windows-amd64), const SW_NORMAL ideal-int +pkg syscall (windows-amd64), const SW_RESTORE ideal-int +pkg syscall (windows-amd64), const SW_SHOW ideal-int +pkg syscall (windows-amd64), const SW_SHOWDEFAULT ideal-int +pkg syscall (windows-amd64), const SW_SHOWMAXIMIZED ideal-int +pkg syscall (windows-amd64), const SW_SHOWMINIMIZED ideal-int +pkg syscall (windows-amd64), const SW_SHOWMINNOACTIVE ideal-int +pkg syscall (windows-amd64), const SW_SHOWNA ideal-int +pkg syscall (windows-amd64), const SW_SHOWNOACTIVATE ideal-int +pkg syscall (windows-amd64), const SW_SHOWNORMAL ideal-int +pkg syscall (windows-amd64), const SYNCHRONIZE ideal-int +pkg syscall (windows-amd64), const SidTypeAlias ideal-int +pkg syscall (windows-amd64), const SidTypeComputer ideal-int +pkg syscall (windows-amd64), const SidTypeDeletedAccount ideal-int +pkg syscall (windows-amd64), const SidTypeDomain ideal-int +pkg syscall (windows-amd64), const SidTypeGroup ideal-int +pkg syscall (windows-amd64), const SidTypeInvalid ideal-int +pkg syscall (windows-amd64), const SidTypeLabel ideal-int +pkg syscall (windows-amd64), const SidTypeUnknown ideal-int +pkg syscall (windows-amd64), const SidTypeUser ideal-int +pkg syscall (windows-amd64), const SidTypeWellKnownGroup ideal-int +pkg syscall (windows-amd64), const TF_DISCONNECT ideal-int +pkg syscall (windows-amd64), const TF_REUSE_SOCKET ideal-int +pkg syscall (windows-amd64), const TF_USE_DEFAULT_WORKER ideal-int +pkg syscall (windows-amd64), const TF_USE_KERNEL_APC ideal-int +pkg syscall (windows-amd64), const TF_USE_SYSTEM_THREAD ideal-int +pkg syscall (windows-amd64), const TF_WRITE_BEHIND ideal-int +pkg syscall (windows-amd64), const TIME_ZONE_ID_DAYLIGHT ideal-int +pkg syscall (windows-amd64), const TIME_ZONE_ID_STANDARD ideal-int +pkg syscall (windows-amd64), const TIME_ZONE_ID_UNKNOWN ideal-int +pkg syscall (windows-amd64), const TOKEN_ADJUST_DEFAULT ideal-int +pkg syscall (windows-amd64), const TOKEN_ADJUST_GROUPS ideal-int +pkg syscall (windows-amd64), const TOKEN_ADJUST_PRIVILEGES ideal-int +pkg syscall (windows-amd64), const TOKEN_ALL_ACCESS ideal-int +pkg syscall (windows-amd64), const TOKEN_ASSIGN_PRIMARY ideal-int +pkg syscall (windows-amd64), const TOKEN_DUPLICATE ideal-int +pkg syscall (windows-amd64), const TOKEN_EXECUTE ideal-int +pkg syscall (windows-amd64), const TOKEN_IMPERSONATE ideal-int +pkg syscall (windows-amd64), const TOKEN_QUERY ideal-int +pkg syscall (windows-amd64), const TOKEN_QUERY_SOURCE ideal-int +pkg syscall (windows-amd64), const TOKEN_READ ideal-int +pkg syscall (windows-amd64), const TOKEN_WRITE ideal-int +pkg syscall (windows-amd64), const TRUNCATE_EXISTING ideal-int +pkg syscall (windows-amd64), const TokenAccessInformation ideal-int +pkg syscall (windows-amd64), const TokenAuditPolicy ideal-int +pkg syscall (windows-amd64), const TokenDefaultDacl ideal-int +pkg syscall (windows-amd64), const TokenElevation ideal-int +pkg syscall (windows-amd64), const TokenElevationType ideal-int +pkg syscall (windows-amd64), const TokenGroups ideal-int +pkg syscall (windows-amd64), const TokenGroupsAndPrivileges ideal-int +pkg syscall (windows-amd64), const TokenHasRestrictions ideal-int +pkg syscall (windows-amd64), const TokenImpersonationLevel ideal-int +pkg syscall (windows-amd64), const TokenIntegrityLevel ideal-int +pkg syscall (windows-amd64), const TokenLinkedToken ideal-int +pkg syscall (windows-amd64), const TokenLogonSid ideal-int +pkg syscall (windows-amd64), const TokenMandatoryPolicy ideal-int +pkg syscall (windows-amd64), const TokenOrigin ideal-int +pkg syscall (windows-amd64), const TokenOwner ideal-int +pkg syscall (windows-amd64), const TokenPrimaryGroup ideal-int +pkg syscall (windows-amd64), const TokenPrivileges ideal-int +pkg syscall (windows-amd64), const TokenRestrictedSids ideal-int +pkg syscall (windows-amd64), const TokenSandBoxInert ideal-int +pkg syscall (windows-amd64), const TokenSessionId ideal-int +pkg syscall (windows-amd64), const TokenSessionReference ideal-int +pkg syscall (windows-amd64), const TokenSource ideal-int +pkg syscall (windows-amd64), const TokenStatistics ideal-int +pkg syscall (windows-amd64), const TokenType ideal-int +pkg syscall (windows-amd64), const TokenUIAccess ideal-int +pkg syscall (windows-amd64), const TokenUser ideal-int +pkg syscall (windows-amd64), const TokenVirtualizationAllowed ideal-int +pkg syscall (windows-amd64), const TokenVirtualizationEnabled ideal-int +pkg syscall (windows-amd64), const USAGE_MATCH_TYPE_AND ideal-int +pkg syscall (windows-amd64), const USAGE_MATCH_TYPE_OR ideal-int +pkg syscall (windows-amd64), const WAIT_ABANDONED ideal-int +pkg syscall (windows-amd64), const WAIT_FAILED ideal-int +pkg syscall (windows-amd64), const WAIT_OBJECT_0 ideal-int +pkg syscall (windows-amd64), const WAIT_TIMEOUT ideal-int +pkg syscall (windows-amd64), const WSADESCRIPTION_LEN ideal-int +pkg syscall (windows-amd64), const WSASYS_STATUS_LEN ideal-int +pkg syscall (windows-amd64), const X509_ASN_ENCODING ideal-int +pkg syscall (windows-amd64), func Accept(Handle) (Handle, Sockaddr, error) +pkg syscall (windows-amd64), func AcceptEx(Handle, Handle, *byte, uint32, uint32, uint32, *uint32, *Overlapped) error +pkg syscall (windows-amd64), func Bind(Handle, Sockaddr) error +pkg syscall (windows-amd64), func CancelIo(Handle) error +pkg syscall (windows-amd64), func CertAddCertificateContextToStore(Handle, *CertContext, uint32, **CertContext) error +pkg syscall (windows-amd64), func CertCloseStore(Handle, uint32) error +pkg syscall (windows-amd64), func CertCreateCertificateContext(uint32, *byte, uint32) (*CertContext, error) +pkg syscall (windows-amd64), func CertEnumCertificatesInStore(Handle, *CertContext) (*CertContext, error) +pkg syscall (windows-amd64), func CertFreeCertificateChain(*CertChainContext) +pkg syscall (windows-amd64), func CertFreeCertificateContext(*CertContext) error +pkg syscall (windows-amd64), func CertGetCertificateChain(Handle, *CertContext, *Filetime, Handle, *CertChainPara, uint32, uintptr, **CertChainContext) error +pkg syscall (windows-amd64), func CertOpenStore(uintptr, uint32, uintptr, uint32, uintptr) (Handle, error) +pkg syscall (windows-amd64), func CertOpenSystemStore(Handle, *uint16) (Handle, error) +pkg syscall (windows-amd64), func CertVerifyCertificateChainPolicy(uintptr, *CertChainContext, *CertChainPolicyPara, *CertChainPolicyStatus) error +pkg syscall (windows-amd64), func Close(Handle) error +pkg syscall (windows-amd64), func CloseHandle(Handle) error +pkg syscall (windows-amd64), func CloseOnExec(Handle) +pkg syscall (windows-amd64), func Closesocket(Handle) error +pkg syscall (windows-amd64), func CommandLineToArgv(*uint16, *int32) (*[8192]*[8192]uint16, error) +pkg syscall (windows-amd64), func ComputerName() (string, error) +pkg syscall (windows-amd64), func Connect(Handle, Sockaddr) error +pkg syscall (windows-amd64), func ConvertSidToStringSid(*SID, **uint16) error +pkg syscall (windows-amd64), func ConvertStringSidToSid(*uint16, **SID) error +pkg syscall (windows-amd64), func CopySid(uint32, *SID, *SID) error +pkg syscall (windows-amd64), func CreateDirectory(*uint16, *SecurityAttributes) error +pkg syscall (windows-amd64), func CreateFile(*uint16, uint32, uint32, *SecurityAttributes, uint32, uint32, int32) (Handle, error) +pkg syscall (windows-amd64), func CreateFileMapping(Handle, *SecurityAttributes, uint32, uint32, uint32, *uint16) (Handle, error) +pkg syscall (windows-amd64), func CreateIoCompletionPort(Handle, Handle, uint32, uint32) (Handle, error) +pkg syscall (windows-amd64), func CreatePipe(*Handle, *Handle, *SecurityAttributes, uint32) error +pkg syscall (windows-amd64), func CreateProcess(*uint16, *uint16, *SecurityAttributes, *SecurityAttributes, bool, uint32, *uint16, *uint16, *StartupInfo, *ProcessInformation) error +pkg syscall (windows-amd64), func CryptAcquireContext(*Handle, *uint16, *uint16, uint32, uint32) error +pkg syscall (windows-amd64), func CryptGenRandom(Handle, uint32, *byte) error +pkg syscall (windows-amd64), func CryptReleaseContext(Handle, uint32) error +pkg syscall (windows-amd64), func DeleteFile(*uint16) error +pkg syscall (windows-amd64), func DnsQuery(string, uint16, uint32, *byte, **DNSRecord, *byte) error +pkg syscall (windows-amd64), func DnsRecordListFree(*DNSRecord, uint32) +pkg syscall (windows-amd64), func DuplicateHandle(Handle, Handle, Handle, *Handle, uint32, bool, uint32) error +pkg syscall (windows-amd64), func EscapeArg(string) string +pkg syscall (windows-amd64), func ExitProcess(uint32) +pkg syscall (windows-amd64), func Fchdir(Handle) error +pkg syscall (windows-amd64), func Fchmod(Handle, uint32) error +pkg syscall (windows-amd64), func Fchown(Handle, int, int) error +pkg syscall (windows-amd64), func FindClose(Handle) error +pkg syscall (windows-amd64), func FindFirstFile(*uint16, *Win32finddata) (Handle, error) +pkg syscall (windows-amd64), func FindNextFile(Handle, *Win32finddata) error +pkg syscall (windows-amd64), func FlushFileBuffers(Handle) error +pkg syscall (windows-amd64), func FlushViewOfFile(uintptr, uintptr) error +pkg syscall (windows-amd64), func FormatMessage(uint32, uint32, uint32, uint32, []uint16, *byte) (uint32, error) +pkg syscall (windows-amd64), func FreeEnvironmentStrings(*uint16) error +pkg syscall (windows-amd64), func FreeLibrary(Handle) error +pkg syscall (windows-amd64), func Fsync(Handle) error +pkg syscall (windows-amd64), func Ftruncate(Handle, int64) error +pkg syscall (windows-amd64), func GetAcceptExSockaddrs(*byte, uint32, uint32, uint32, **RawSockaddrAny, *int32, **RawSockaddrAny, *int32) +pkg syscall (windows-amd64), func GetAdaptersInfo(*IpAdapterInfo, *uint32) error +pkg syscall (windows-amd64), func GetCommandLine() *uint16 +pkg syscall (windows-amd64), func GetComputerName(*uint16, *uint32) error +pkg syscall (windows-amd64), func GetCurrentDirectory(uint32, *uint16) (uint32, error) +pkg syscall (windows-amd64), func GetCurrentProcess() (Handle, error) +pkg syscall (windows-amd64), func GetEnvironmentStrings() (*uint16, error) +pkg syscall (windows-amd64), func GetEnvironmentVariable(*uint16, *uint16, uint32) (uint32, error) +pkg syscall (windows-amd64), func GetExitCodeProcess(Handle, *uint32) error +pkg syscall (windows-amd64), func GetFileAttributes(*uint16) (uint32, error) +pkg syscall (windows-amd64), func GetFileAttributesEx(*uint16, uint32, *byte) error +pkg syscall (windows-amd64), func GetFileInformationByHandle(Handle, *ByHandleFileInformation) error +pkg syscall (windows-amd64), func GetFileType(Handle) (uint32, error) +pkg syscall (windows-amd64), func GetFullPathName(*uint16, uint32, *uint16, **uint16) (uint32, error) +pkg syscall (windows-amd64), func GetHostByName(string) (*Hostent, error) +pkg syscall (windows-amd64), func GetIfEntry(*MibIfRow) error +pkg syscall (windows-amd64), func GetLastError() error +pkg syscall (windows-amd64), func GetLengthSid(*SID) uint32 +pkg syscall (windows-amd64), func GetLongPathName(*uint16, *uint16, uint32) (uint32, error) +pkg syscall (windows-amd64), func GetProcAddress(Handle, string) (uintptr, error) +pkg syscall (windows-amd64), func GetProcessTimes(Handle, *Filetime, *Filetime, *Filetime, *Filetime) error +pkg syscall (windows-amd64), func GetProtoByName(string) (*Protoent, error) +pkg syscall (windows-amd64), func GetQueuedCompletionStatus(Handle, *uint32, *uint32, **Overlapped, uint32) error +pkg syscall (windows-amd64), func GetServByName(string, string) (*Servent, error) +pkg syscall (windows-amd64), func GetStartupInfo(*StartupInfo) error +pkg syscall (windows-amd64), func GetStdHandle(int) (Handle, error) +pkg syscall (windows-amd64), func GetSystemTimeAsFileTime(*Filetime) +pkg syscall (windows-amd64), func GetTempPath(uint32, *uint16) (uint32, error) +pkg syscall (windows-amd64), func GetTimeZoneInformation(*Timezoneinformation) (uint32, error) +pkg syscall (windows-amd64), func GetTokenInformation(Token, uint32, *byte, uint32, *uint32) error +pkg syscall (windows-amd64), func GetUserNameEx(uint32, *uint16, *uint32) error +pkg syscall (windows-amd64), func GetUserProfileDirectory(Token, *uint16, *uint32) error +pkg syscall (windows-amd64), func GetVersion() (uint32, error) +pkg syscall (windows-amd64), func Getpeername(Handle) (Sockaddr, error) +pkg syscall (windows-amd64), func Getsockname(Handle) (Sockaddr, error) +pkg syscall (windows-amd64), func GetsockoptInt(Handle, int) (int, error) +pkg syscall (windows-amd64), func Link(string) error +pkg syscall (windows-amd64), func Listen(Handle, int) error +pkg syscall (windows-amd64), func LoadDLL(string) (*DLL, error) +pkg syscall (windows-amd64), func LoadLibrary(string) (Handle, error) +pkg syscall (windows-amd64), func LocalFree(Handle) (Handle, error) +pkg syscall (windows-amd64), func LookupAccountName(*uint16, *uint16, *SID, *uint32, *uint16, *uint32, *uint32) error +pkg syscall (windows-amd64), func LookupAccountSid(*uint16, *SID, *uint16, *uint32, *uint16, *uint32, *uint32) error +pkg syscall (windows-amd64), func LookupSID(string) (*SID, string, uint32, error) +pkg syscall (windows-amd64), func MapViewOfFile(Handle, uint32, uint32, uint32, uintptr) (uintptr, error) +pkg syscall (windows-amd64), func MoveFile(*uint16, *uint16) error +pkg syscall (windows-amd64), func MustLoadDLL(string) *DLL +pkg syscall (windows-amd64), func NetApiBufferFree(*byte) error +pkg syscall (windows-amd64), func NetUserGetInfo(*uint16, *uint16, uint32, **byte) error +pkg syscall (windows-amd64), func NewCallback(interface{}) uintptr +pkg syscall (windows-amd64), func NewLazyDLL(string) *LazyDLL +pkg syscall (windows-amd64), func NsecToFiletime(int64) Filetime +pkg syscall (windows-amd64), func Ntohs(uint16) uint16 +pkg syscall (windows-amd64), func Open(string, int, uint32) (Handle, error) +pkg syscall (windows-amd64), func OpenCurrentProcessToken() (Token, error) +pkg syscall (windows-amd64), func OpenProcess(uint32, bool, uint32) (Handle, error) +pkg syscall (windows-amd64), func OpenProcessToken(Handle, uint32, *Token) error +pkg syscall (windows-amd64), func Pipe([]Handle) error +pkg syscall (windows-amd64), func PostQueuedCompletionStatus(Handle, uint32, uint32, *Overlapped) error +pkg syscall (windows-amd64), func Read(Handle, []byte) (int, error) +pkg syscall (windows-amd64), func ReadDirectoryChanges(Handle, *byte, uint32, bool, uint32, *uint32, *Overlapped, uintptr) error +pkg syscall (windows-amd64), func ReadFile(Handle, []byte, *uint32, *Overlapped) error +pkg syscall (windows-amd64), func Recvfrom(Handle, []byte, int) (int, Sockaddr, error) +pkg syscall (windows-amd64), func RegCloseKey(Handle) error +pkg syscall (windows-amd64), func RegEnumKeyEx(Handle, uint32, *uint16, *uint32, *uint32, *uint16, *uint32, *Filetime) error +pkg syscall (windows-amd64), func RegOpenKeyEx(Handle, *uint16, uint32, uint32, *Handle) error +pkg syscall (windows-amd64), func RegQueryInfoKey(Handle, *uint16, *uint32, *uint32, *uint32, *uint32, *uint32, *uint32, *uint32, *uint32, *uint32, *Filetime) error +pkg syscall (windows-amd64), func RegQueryValueEx(Handle, *uint16, *uint32, *uint32, *byte, *uint32) error +pkg syscall (windows-amd64), func RemoveDirectory(*uint16) error +pkg syscall (windows-amd64), func Rename(string) error +pkg syscall (windows-amd64), func Seek(Handle, int64, int) (int64, error) +pkg syscall (windows-amd64), func Sendto(Handle, []byte, int, Sockaddr) error +pkg syscall (windows-amd64), func SetCurrentDirectory(*uint16) error +pkg syscall (windows-amd64), func SetEndOfFile(Handle) error +pkg syscall (windows-amd64), func SetEnvironmentVariable(*uint16, *uint16) error +pkg syscall (windows-amd64), func SetFileAttributes(*uint16, uint32) error +pkg syscall (windows-amd64), func SetFilePointer(Handle, int32, *int32, uint32) (uint32, error) +pkg syscall (windows-amd64), func SetFileTime(Handle, *Filetime, *Filetime, *Filetime) error +pkg syscall (windows-amd64), func SetHandleInformation(Handle, uint32, uint32) error +pkg syscall (windows-amd64), func SetNonblock(Handle, bool) error +pkg syscall (windows-amd64), func Setsockopt(Handle, int32, int32, *byte, int32) error +pkg syscall (windows-amd64), func SetsockoptIPMreq(Handle, int, *IPMreq) error +pkg syscall (windows-amd64), func SetsockoptIPv6Mreq(Handle, int, *IPv6Mreq) error +pkg syscall (windows-amd64), func SetsockoptInet4Addr(Handle, int, [4]byte) error +pkg syscall (windows-amd64), func SetsockoptInt(Handle, int, int) error +pkg syscall (windows-amd64), func SetsockoptLinger(Handle, int, *Linger) error +pkg syscall (windows-amd64), func SetsockoptTimeval(Handle, int, *Timeval) error +pkg syscall (windows-amd64), func Shutdown(Handle, int) error +pkg syscall (windows-amd64), func Socket(int) (Handle, error) +pkg syscall (windows-amd64), func StringToSid(string) (*SID, error) +pkg syscall (windows-amd64), func StringToUTF16(string) []uint16 +pkg syscall (windows-amd64), func StringToUTF16Ptr(string) *uint16 +pkg syscall (windows-amd64), func Symlink(string) error +pkg syscall (windows-amd64), func Syscall12(uintptr) (uintptr, Errno) +pkg syscall (windows-amd64), func Syscall15(uintptr) (uintptr, Errno) +pkg syscall (windows-amd64), func Syscall9(uintptr) (uintptr, Errno) +pkg syscall (windows-amd64), func TerminateProcess(Handle, uint32) error +pkg syscall (windows-amd64), func TranslateAccountName(string, uint32, int) (string, error) +pkg syscall (windows-amd64), func TranslateName(*uint16, uint32, uint32, *uint16, *uint32) error +pkg syscall (windows-amd64), func TransmitFile(Handle, Handle, uint32, uint32, *Overlapped, *TransmitFileBuffers, uint32) error +pkg syscall (windows-amd64), func UTF16ToString([]uint16) string +pkg syscall (windows-amd64), func UnmapViewOfFile(uintptr) error +pkg syscall (windows-amd64), func VirtualLock(uintptr, uintptr) error +pkg syscall (windows-amd64), func VirtualUnlock(uintptr, uintptr) error +pkg syscall (windows-amd64), func WSACleanup() error +pkg syscall (windows-amd64), func WSAIoctl(Handle, uint32, *byte, uint32, *byte, uint32, *uint32, *Overlapped, uintptr) error +pkg syscall (windows-amd64), func WSARecv(Handle, *WSABuf, uint32, *uint32, *uint32, *Overlapped, *byte) error +pkg syscall (windows-amd64), func WSARecvFrom(Handle, *WSABuf, uint32, *uint32, *uint32, *RawSockaddrAny, *int32, *Overlapped, *byte) error +pkg syscall (windows-amd64), func WSASend(Handle, *WSABuf, uint32, *uint32, uint32, *Overlapped, *byte) error +pkg syscall (windows-amd64), func WSASendTo(Handle, *WSABuf, uint32, *uint32, uint32, *RawSockaddrAny, int32, *Overlapped, *byte) error +pkg syscall (windows-amd64), func WSASendto(Handle, *WSABuf, uint32, *uint32, uint32, Sockaddr, *Overlapped, *byte) error +pkg syscall (windows-amd64), func WSAStartup(uint32, *WSAData) error +pkg syscall (windows-amd64), func WaitForSingleObject(Handle, uint32) (uint32, error) +pkg syscall (windows-amd64), func Write(Handle, []byte) (int, error) +pkg syscall (windows-amd64), func WriteFile(Handle, []byte, *uint32, *Overlapped) error +pkg syscall (windows-amd64), method (*DLL) FindProc(string) (*Proc, error) +pkg syscall (windows-amd64), method (*DLL) MustFindProc(string) *Proc +pkg syscall (windows-amd64), method (*DLL) Release() error +pkg syscall (windows-amd64), method (*DLLError) Error() string +pkg syscall (windows-amd64), method (*Filetime) Nanoseconds() int64 +pkg syscall (windows-amd64), method (*LazyDLL) Handle() uintptr +pkg syscall (windows-amd64), method (*LazyDLL) Load() error +pkg syscall (windows-amd64), method (*LazyDLL) NewProc(string) *LazyProc +pkg syscall (windows-amd64), method (*LazyProc) Addr() uintptr +pkg syscall (windows-amd64), method (*LazyProc) Call(...uintptr) (uintptr, error) +pkg syscall (windows-amd64), method (*LazyProc) Find() error +pkg syscall (windows-amd64), method (*Proc) Addr() uintptr +pkg syscall (windows-amd64), method (*Proc) Call(...uintptr) (uintptr, error) +pkg syscall (windows-amd64), method (*RawSockaddrAny) Sockaddr() (Sockaddr, error) +pkg syscall (windows-amd64), method (*SID) Copy() (*SID, error) +pkg syscall (windows-amd64), method (*SID) Len() int +pkg syscall (windows-amd64), method (*SID) LookupAccount(string) (string, uint32, error) +pkg syscall (windows-amd64), method (*SID) String() (string, error) +pkg syscall (windows-amd64), method (*Timeval) Nanoseconds() int64 +pkg syscall (windows-amd64), method (Token) Close() error +pkg syscall (windows-amd64), method (Token) GetTokenPrimaryGroup() (*Tokenprimarygroup, error) +pkg syscall (windows-amd64), method (Token) GetTokenUser() (*Tokenuser, error) +pkg syscall (windows-amd64), method (Token) GetUserProfileDirectory() (string, error) +pkg syscall (windows-amd64), type ByHandleFileInformation struct +pkg syscall (windows-amd64), type ByHandleFileInformation struct, CreationTime Filetime +pkg syscall (windows-amd64), type ByHandleFileInformation struct, FileAttributes uint32 +pkg syscall (windows-amd64), type ByHandleFileInformation struct, FileIndexHigh uint32 +pkg syscall (windows-amd64), type ByHandleFileInformation struct, FileIndexLow uint32 +pkg syscall (windows-amd64), type ByHandleFileInformation struct, FileSizeHigh uint32 +pkg syscall (windows-amd64), type ByHandleFileInformation struct, FileSizeLow uint32 +pkg syscall (windows-amd64), type ByHandleFileInformation struct, LastAccessTime Filetime +pkg syscall (windows-amd64), type ByHandleFileInformation struct, LastWriteTime Filetime +pkg syscall (windows-amd64), type ByHandleFileInformation struct, NumberOfLinks uint32 +pkg syscall (windows-amd64), type ByHandleFileInformation struct, VolumeSerialNumber uint32 +pkg syscall (windows-amd64), type CertChainContext struct +pkg syscall (windows-amd64), type CertChainContext struct, ChainCount uint32 +pkg syscall (windows-amd64), type CertChainContext struct, Chains **CertSimpleChain +pkg syscall (windows-amd64), type CertChainContext struct, HasRevocationFreshnessTime uint32 +pkg syscall (windows-amd64), type CertChainContext struct, LowerQualityChainCount uint32 +pkg syscall (windows-amd64), type CertChainContext struct, LowerQualityChains **CertChainContext +pkg syscall (windows-amd64), type CertChainContext struct, RevocationFreshnessTime uint32 +pkg syscall (windows-amd64), type CertChainContext struct, Size uint32 +pkg syscall (windows-amd64), type CertChainContext struct, TrustStatus CertTrustStatus +pkg syscall (windows-amd64), type CertChainElement struct +pkg syscall (windows-amd64), type CertChainElement struct, ApplicationUsage *CertEnhKeyUsage +pkg syscall (windows-amd64), type CertChainElement struct, CertContext *CertContext +pkg syscall (windows-amd64), type CertChainElement struct, ExtendedErrorInfo *uint16 +pkg syscall (windows-amd64), type CertChainElement struct, IssuanceUsage *CertEnhKeyUsage +pkg syscall (windows-amd64), type CertChainElement struct, RevocationInfo *CertRevocationInfo +pkg syscall (windows-amd64), type CertChainElement struct, Size uint32 +pkg syscall (windows-amd64), type CertChainElement struct, TrustStatus CertTrustStatus +pkg syscall (windows-amd64), type CertChainPara struct +pkg syscall (windows-amd64), type CertChainPara struct, CacheResync *Filetime +pkg syscall (windows-amd64), type CertChainPara struct, CheckRevocationFreshnessTime uint32 +pkg syscall (windows-amd64), type CertChainPara struct, RequestedUsage CertUsageMatch +pkg syscall (windows-amd64), type CertChainPara struct, RequstedIssuancePolicy CertUsageMatch +pkg syscall (windows-amd64), type CertChainPara struct, RevocationFreshnessTime uint32 +pkg syscall (windows-amd64), type CertChainPara struct, Size uint32 +pkg syscall (windows-amd64), type CertChainPara struct, URLRetrievalTimeout uint32 +pkg syscall (windows-amd64), type CertChainPolicyPara struct +pkg syscall (windows-amd64), type CertChainPolicyPara struct, ExtraPolicyPara uintptr +pkg syscall (windows-amd64), type CertChainPolicyPara struct, Flags uint32 +pkg syscall (windows-amd64), type CertChainPolicyPara struct, Size uint32 +pkg syscall (windows-amd64), type CertChainPolicyStatus struct +pkg syscall (windows-amd64), type CertChainPolicyStatus struct, ChainIndex uint32 +pkg syscall (windows-amd64), type CertChainPolicyStatus struct, ElementIndex uint32 +pkg syscall (windows-amd64), type CertChainPolicyStatus struct, Error uint32 +pkg syscall (windows-amd64), type CertChainPolicyStatus struct, ExtraPolicyStatus uintptr +pkg syscall (windows-amd64), type CertChainPolicyStatus struct, Size uint32 +pkg syscall (windows-amd64), type CertContext struct +pkg syscall (windows-amd64), type CertContext struct, CertInfo uintptr +pkg syscall (windows-amd64), type CertContext struct, EncodedCert *byte +pkg syscall (windows-amd64), type CertContext struct, EncodingType uint32 +pkg syscall (windows-amd64), type CertContext struct, Length uint32 +pkg syscall (windows-amd64), type CertContext struct, Store Handle +pkg syscall (windows-amd64), type CertEnhKeyUsage struct +pkg syscall (windows-amd64), type CertEnhKeyUsage struct, Length uint32 +pkg syscall (windows-amd64), type CertEnhKeyUsage struct, UsageIdentifiers **byte +pkg syscall (windows-amd64), type CertRevocationInfo struct +pkg syscall (windows-amd64), type CertRevocationInfo struct, CrlInfo uintptr +pkg syscall (windows-amd64), type CertRevocationInfo struct, FreshnessTime uint32 +pkg syscall (windows-amd64), type CertRevocationInfo struct, HasFreshnessTime uint32 +pkg syscall (windows-amd64), type CertRevocationInfo struct, OidSpecificInfo uintptr +pkg syscall (windows-amd64), type CertRevocationInfo struct, RevocationOid *byte +pkg syscall (windows-amd64), type CertRevocationInfo struct, RevocationResult uint32 +pkg syscall (windows-amd64), type CertRevocationInfo struct, Size uint32 +pkg syscall (windows-amd64), type CertSimpleChain struct +pkg syscall (windows-amd64), type CertSimpleChain struct, Elements **CertChainElement +pkg syscall (windows-amd64), type CertSimpleChain struct, HasRevocationFreshnessTime uint32 +pkg syscall (windows-amd64), type CertSimpleChain struct, NumElements uint32 +pkg syscall (windows-amd64), type CertSimpleChain struct, RevocationFreshnessTime uint32 +pkg syscall (windows-amd64), type CertSimpleChain struct, Size uint32 +pkg syscall (windows-amd64), type CertSimpleChain struct, TrustListInfo uintptr +pkg syscall (windows-amd64), type CertSimpleChain struct, TrustStatus CertTrustStatus +pkg syscall (windows-amd64), type CertTrustStatus struct +pkg syscall (windows-amd64), type CertTrustStatus struct, ErrorStatus uint32 +pkg syscall (windows-amd64), type CertTrustStatus struct, InfoStatus uint32 +pkg syscall (windows-amd64), type CertUsageMatch struct +pkg syscall (windows-amd64), type CertUsageMatch struct, Type uint32 +pkg syscall (windows-amd64), type CertUsageMatch struct, Usage CertEnhKeyUsage +pkg syscall (windows-amd64), type DLL struct +pkg syscall (windows-amd64), type DLL struct, Handle Handle +pkg syscall (windows-amd64), type DLL struct, Name string +pkg syscall (windows-amd64), type DLLError struct +pkg syscall (windows-amd64), type DLLError struct, Err error +pkg syscall (windows-amd64), type DLLError struct, Msg string +pkg syscall (windows-amd64), type DLLError struct, ObjName string +pkg syscall (windows-amd64), type DNSMXData struct +pkg syscall (windows-amd64), type DNSMXData struct, NameExchange *uint16 +pkg syscall (windows-amd64), type DNSMXData struct, Pad uint16 +pkg syscall (windows-amd64), type DNSMXData struct, Preference uint16 +pkg syscall (windows-amd64), type DNSPTRData struct +pkg syscall (windows-amd64), type DNSPTRData struct, Host *uint16 +pkg syscall (windows-amd64), type DNSRecord struct +pkg syscall (windows-amd64), type DNSRecord struct, Data [40]byte +pkg syscall (windows-amd64), type DNSRecord struct, Dw uint32 +pkg syscall (windows-amd64), type DNSRecord struct, Length uint16 +pkg syscall (windows-amd64), type DNSRecord struct, Name *uint16 +pkg syscall (windows-amd64), type DNSRecord struct, Next *DNSRecord +pkg syscall (windows-amd64), type DNSRecord struct, Reserved uint32 +pkg syscall (windows-amd64), type DNSRecord struct, Ttl uint32 +pkg syscall (windows-amd64), type DNSRecord struct, Type uint16 +pkg syscall (windows-amd64), type DNSSRVData struct +pkg syscall (windows-amd64), type DNSSRVData struct, Pad uint16 +pkg syscall (windows-amd64), type DNSSRVData struct, Port uint16 +pkg syscall (windows-amd64), type DNSSRVData struct, Priority uint16 +pkg syscall (windows-amd64), type DNSSRVData struct, Target *uint16 +pkg syscall (windows-amd64), type DNSSRVData struct, Weight uint16 +pkg syscall (windows-amd64), type DNSTXTData struct +pkg syscall (windows-amd64), type DNSTXTData struct, StringArray [1]*uint16 +pkg syscall (windows-amd64), type DNSTXTData struct, StringCount uint16 +pkg syscall (windows-amd64), type FileNotifyInformation struct +pkg syscall (windows-amd64), type FileNotifyInformation struct, Action uint32 +pkg syscall (windows-amd64), type FileNotifyInformation struct, FileName uint16 +pkg syscall (windows-amd64), type FileNotifyInformation struct, FileNameLength uint32 +pkg syscall (windows-amd64), type FileNotifyInformation struct, NextEntryOffset uint32 +pkg syscall (windows-amd64), type Filetime struct +pkg syscall (windows-amd64), type Filetime struct, HighDateTime uint32 +pkg syscall (windows-amd64), type Filetime struct, LowDateTime uint32 +pkg syscall (windows-amd64), type Handle uintptr +pkg syscall (windows-amd64), type Hostent struct +pkg syscall (windows-amd64), type Hostent struct, AddrList **byte +pkg syscall (windows-amd64), type Hostent struct, AddrType uint16 +pkg syscall (windows-amd64), type Hostent struct, Aliases **byte +pkg syscall (windows-amd64), type Hostent struct, Length uint16 +pkg syscall (windows-amd64), type Hostent struct, Name *byte +pkg syscall (windows-amd64), type InterfaceInfo struct +pkg syscall (windows-amd64), type InterfaceInfo struct, Address SockaddrGen +pkg syscall (windows-amd64), type InterfaceInfo struct, BroadcastAddress SockaddrGen +pkg syscall (windows-amd64), type InterfaceInfo struct, Flags uint32 +pkg syscall (windows-amd64), type InterfaceInfo struct, Netmask SockaddrGen +pkg syscall (windows-amd64), type IpAdapterInfo struct +pkg syscall (windows-amd64), type IpAdapterInfo struct, AdapterName [MAX_ADAPTER_NAME_LENGTH + 4]byte +pkg syscall (windows-amd64), type IpAdapterInfo struct, Address [MAX_ADAPTER_ADDRESS_LENGTH]byte +pkg syscall (windows-amd64), type IpAdapterInfo struct, AddressLength uint32 +pkg syscall (windows-amd64), type IpAdapterInfo struct, ComboIndex uint32 +pkg syscall (windows-amd64), type IpAdapterInfo struct, CurrentIpAddress *IpAddrString +pkg syscall (windows-amd64), type IpAdapterInfo struct, Description [MAX_ADAPTER_DESCRIPTION_LENGTH + 4]byte +pkg syscall (windows-amd64), type IpAdapterInfo struct, DhcpEnabled uint32 +pkg syscall (windows-amd64), type IpAdapterInfo struct, DhcpServer IpAddrString +pkg syscall (windows-amd64), type IpAdapterInfo struct, GatewayList IpAddrString +pkg syscall (windows-amd64), type IpAdapterInfo struct, HaveWins bool +pkg syscall (windows-amd64), type IpAdapterInfo struct, Index uint32 +pkg syscall (windows-amd64), type IpAdapterInfo struct, IpAddressList IpAddrString +pkg syscall (windows-amd64), type IpAdapterInfo struct, LeaseExpires int64 +pkg syscall (windows-amd64), type IpAdapterInfo struct, LeaseObtained int64 +pkg syscall (windows-amd64), type IpAdapterInfo struct, Next *IpAdapterInfo +pkg syscall (windows-amd64), type IpAdapterInfo struct, PrimaryWinsServer IpAddrString +pkg syscall (windows-amd64), type IpAdapterInfo struct, SecondaryWinsServer IpAddrString +pkg syscall (windows-amd64), type IpAdapterInfo struct, Type uint32 +pkg syscall (windows-amd64), type IpAddrString struct +pkg syscall (windows-amd64), type IpAddrString struct, Context uint32 +pkg syscall (windows-amd64), type IpAddrString struct, IpAddress IpAddressString +pkg syscall (windows-amd64), type IpAddrString struct, IpMask IpMaskString +pkg syscall (windows-amd64), type IpAddrString struct, Next *IpAddrString +pkg syscall (windows-amd64), type IpAddressString struct +pkg syscall (windows-amd64), type IpAddressString struct, String [16]byte +pkg syscall (windows-amd64), type IpMaskString IpAddressString +pkg syscall (windows-amd64), type LazyDLL struct +pkg syscall (windows-amd64), type LazyDLL struct, Name string +pkg syscall (windows-amd64), type LazyProc struct +pkg syscall (windows-amd64), type LazyProc struct, Name string +pkg syscall (windows-amd64), type MibIfRow struct +pkg syscall (windows-amd64), type MibIfRow struct, AdminStatus uint32 +pkg syscall (windows-amd64), type MibIfRow struct, Descr [MAXLEN_IFDESCR]byte +pkg syscall (windows-amd64), type MibIfRow struct, DescrLen uint32 +pkg syscall (windows-amd64), type MibIfRow struct, InDiscards uint32 +pkg syscall (windows-amd64), type MibIfRow struct, InErrors uint32 +pkg syscall (windows-amd64), type MibIfRow struct, InNUcastPkts uint32 +pkg syscall (windows-amd64), type MibIfRow struct, InOctets uint32 +pkg syscall (windows-amd64), type MibIfRow struct, InUcastPkts uint32 +pkg syscall (windows-amd64), type MibIfRow struct, InUnknownProtos uint32 +pkg syscall (windows-amd64), type MibIfRow struct, Index uint32 +pkg syscall (windows-amd64), type MibIfRow struct, LastChange uint32 +pkg syscall (windows-amd64), type MibIfRow struct, Mtu uint32 +pkg syscall (windows-amd64), type MibIfRow struct, Name [MAX_INTERFACE_NAME_LEN]uint16 +pkg syscall (windows-amd64), type MibIfRow struct, OperStatus uint32 +pkg syscall (windows-amd64), type MibIfRow struct, OutDiscards uint32 +pkg syscall (windows-amd64), type MibIfRow struct, OutErrors uint32 +pkg syscall (windows-amd64), type MibIfRow struct, OutNUcastPkts uint32 +pkg syscall (windows-amd64), type MibIfRow struct, OutOctets uint32 +pkg syscall (windows-amd64), type MibIfRow struct, OutQLen uint32 +pkg syscall (windows-amd64), type MibIfRow struct, OutUcastPkts uint32 +pkg syscall (windows-amd64), type MibIfRow struct, PhysAddr [MAXLEN_PHYSADDR]byte +pkg syscall (windows-amd64), type MibIfRow struct, PhysAddrLen uint32 +pkg syscall (windows-amd64), type MibIfRow struct, Speed uint32 +pkg syscall (windows-amd64), type MibIfRow struct, Type uint32 +pkg syscall (windows-amd64), type Overlapped struct +pkg syscall (windows-amd64), type Overlapped struct, HEvent Handle +pkg syscall (windows-amd64), type Overlapped struct, Internal uintptr +pkg syscall (windows-amd64), type Overlapped struct, InternalHigh uintptr +pkg syscall (windows-amd64), type Overlapped struct, Offset uint32 +pkg syscall (windows-amd64), type Overlapped struct, OffsetHigh uint32 +pkg syscall (windows-amd64), type Proc struct +pkg syscall (windows-amd64), type Proc struct, Dll *DLL +pkg syscall (windows-amd64), type Proc struct, Name string +pkg syscall (windows-amd64), type ProcessInformation struct +pkg syscall (windows-amd64), type ProcessInformation struct, Process Handle +pkg syscall (windows-amd64), type ProcessInformation struct, ProcessId uint32 +pkg syscall (windows-amd64), type ProcessInformation struct, Thread Handle +pkg syscall (windows-amd64), type ProcessInformation struct, ThreadId uint32 +pkg syscall (windows-amd64), type Protoent struct +pkg syscall (windows-amd64), type Protoent struct, Aliases **byte +pkg syscall (windows-amd64), type Protoent struct, Name *byte +pkg syscall (windows-amd64), type Protoent struct, Proto uint16 +pkg syscall (windows-amd64), type RawSockaddr struct, Family uint16 +pkg syscall (windows-amd64), type RawSockaddrAny struct, Pad [96]int8 +pkg syscall (windows-amd64), type RawSockaddrInet4 struct, Family uint16 +pkg syscall (windows-amd64), type RawSockaddrInet4 struct, Zero [8]uint8 +pkg syscall (windows-amd64), type Rusage struct, CreationTime Filetime +pkg syscall (windows-amd64), type Rusage struct, ExitTime Filetime +pkg syscall (windows-amd64), type Rusage struct, KernelTime Filetime +pkg syscall (windows-amd64), type Rusage struct, UserTime Filetime +pkg syscall (windows-amd64), type SID struct +pkg syscall (windows-amd64), type SIDAndAttributes struct +pkg syscall (windows-amd64), type SIDAndAttributes struct, Attributes uint32 +pkg syscall (windows-amd64), type SIDAndAttributes struct, Sid *SID +pkg syscall (windows-amd64), type SSLExtraCertChainPolicyPara struct +pkg syscall (windows-amd64), type SSLExtraCertChainPolicyPara struct, AuthType uint32 +pkg syscall (windows-amd64), type SSLExtraCertChainPolicyPara struct, Checks uint32 +pkg syscall (windows-amd64), type SSLExtraCertChainPolicyPara struct, ServerName *uint16 +pkg syscall (windows-amd64), type SSLExtraCertChainPolicyPara struct, Size uint32 +pkg syscall (windows-amd64), type SecurityAttributes struct +pkg syscall (windows-amd64), type SecurityAttributes struct, InheritHandle uint32 +pkg syscall (windows-amd64), type SecurityAttributes struct, Length uint32 +pkg syscall (windows-amd64), type SecurityAttributes struct, SecurityDescriptor uintptr +pkg syscall (windows-amd64), type Servent struct +pkg syscall (windows-amd64), type Servent struct, Aliases **byte +pkg syscall (windows-amd64), type Servent struct, Name *byte +pkg syscall (windows-amd64), type Servent struct, Port uint16 +pkg syscall (windows-amd64), type Servent struct, Proto *byte +pkg syscall (windows-amd64), type SockaddrGen [24]byte +pkg syscall (windows-amd64), type StartupInfo struct +pkg syscall (windows-amd64), type StartupInfo struct, Cb uint32 +pkg syscall (windows-amd64), type StartupInfo struct, Desktop *uint16 +pkg syscall (windows-amd64), type StartupInfo struct, FillAttribute uint32 +pkg syscall (windows-amd64), type StartupInfo struct, Flags uint32 +pkg syscall (windows-amd64), type StartupInfo struct, ShowWindow uint16 +pkg syscall (windows-amd64), type StartupInfo struct, StdErr Handle +pkg syscall (windows-amd64), type StartupInfo struct, StdInput Handle +pkg syscall (windows-amd64), type StartupInfo struct, StdOutput Handle +pkg syscall (windows-amd64), type StartupInfo struct, Title *uint16 +pkg syscall (windows-amd64), type StartupInfo struct, X uint32 +pkg syscall (windows-amd64), type StartupInfo struct, XCountChars uint32 +pkg syscall (windows-amd64), type StartupInfo struct, XSize uint32 +pkg syscall (windows-amd64), type StartupInfo struct, Y uint32 +pkg syscall (windows-amd64), type StartupInfo struct, YCountChars uint32 +pkg syscall (windows-amd64), type StartupInfo struct, YSize uint32 +pkg syscall (windows-amd64), type SysProcAttr struct, CmdLine string +pkg syscall (windows-amd64), type SysProcAttr struct, HideWindow bool +pkg syscall (windows-amd64), type Systemtime struct +pkg syscall (windows-amd64), type Systemtime struct, Day uint16 +pkg syscall (windows-amd64), type Systemtime struct, DayOfWeek uint16 +pkg syscall (windows-amd64), type Systemtime struct, Hour uint16 +pkg syscall (windows-amd64), type Systemtime struct, Milliseconds uint16 +pkg syscall (windows-amd64), type Systemtime struct, Minute uint16 +pkg syscall (windows-amd64), type Systemtime struct, Month uint16 +pkg syscall (windows-amd64), type Systemtime struct, Second uint16 +pkg syscall (windows-amd64), type Systemtime struct, Year uint16 +pkg syscall (windows-amd64), type Timespec struct, Nsec int64 +pkg syscall (windows-amd64), type Timespec struct, Sec int64 +pkg syscall (windows-amd64), type Timeval struct, Sec int32 +pkg syscall (windows-amd64), type Timeval struct, Usec int32 +pkg syscall (windows-amd64), type Timezoneinformation struct +pkg syscall (windows-amd64), type Timezoneinformation struct, Bias int32 +pkg syscall (windows-amd64), type Timezoneinformation struct, DaylightBias int32 +pkg syscall (windows-amd64), type Timezoneinformation struct, DaylightDate Systemtime +pkg syscall (windows-amd64), type Timezoneinformation struct, DaylightName [32]uint16 +pkg syscall (windows-amd64), type Timezoneinformation struct, StandardBias int32 +pkg syscall (windows-amd64), type Timezoneinformation struct, StandardDate Systemtime +pkg syscall (windows-amd64), type Timezoneinformation struct, StandardName [32]uint16 +pkg syscall (windows-amd64), type Token Handle +pkg syscall (windows-amd64), type Tokenprimarygroup struct +pkg syscall (windows-amd64), type Tokenprimarygroup struct, PrimaryGroup *SID +pkg syscall (windows-amd64), type Tokenuser struct +pkg syscall (windows-amd64), type Tokenuser struct, User SIDAndAttributes +pkg syscall (windows-amd64), type TransmitFileBuffers struct +pkg syscall (windows-amd64), type TransmitFileBuffers struct, Head uintptr +pkg syscall (windows-amd64), type TransmitFileBuffers struct, HeadLength uint32 +pkg syscall (windows-amd64), type TransmitFileBuffers struct, Tail uintptr +pkg syscall (windows-amd64), type TransmitFileBuffers struct, TailLength uint32 +pkg syscall (windows-amd64), type UserInfo10 struct +pkg syscall (windows-amd64), type UserInfo10 struct, Comment *uint16 +pkg syscall (windows-amd64), type UserInfo10 struct, FullName *uint16 +pkg syscall (windows-amd64), type UserInfo10 struct, Name *uint16 +pkg syscall (windows-amd64), type UserInfo10 struct, UsrComment *uint16 +pkg syscall (windows-amd64), type WSABuf struct +pkg syscall (windows-amd64), type WSABuf struct, Buf *byte +pkg syscall (windows-amd64), type WSABuf struct, Len uint32 +pkg syscall (windows-amd64), type WSAData struct +pkg syscall (windows-amd64), type WSAData struct, Description [WSADESCRIPTION_LEN + 1]byte +pkg syscall (windows-amd64), type WSAData struct, HighVersion uint16 +pkg syscall (windows-amd64), type WSAData struct, MaxSockets uint16 +pkg syscall (windows-amd64), type WSAData struct, MaxUdpDg uint16 +pkg syscall (windows-amd64), type WSAData struct, SystemStatus [WSASYS_STATUS_LEN + 1]byte +pkg syscall (windows-amd64), type WSAData struct, VendorInfo *byte +pkg syscall (windows-amd64), type WSAData struct, Version uint16 +pkg syscall (windows-amd64), type WaitStatus struct +pkg syscall (windows-amd64), type WaitStatus struct, ExitCode uint32 +pkg syscall (windows-amd64), type Win32FileAttributeData struct +pkg syscall (windows-amd64), type Win32FileAttributeData struct, CreationTime Filetime +pkg syscall (windows-amd64), type Win32FileAttributeData struct, FileAttributes uint32 +pkg syscall (windows-amd64), type Win32FileAttributeData struct, FileSizeHigh uint32 +pkg syscall (windows-amd64), type Win32FileAttributeData struct, FileSizeLow uint32 +pkg syscall (windows-amd64), type Win32FileAttributeData struct, LastAccessTime Filetime +pkg syscall (windows-amd64), type Win32FileAttributeData struct, LastWriteTime Filetime +pkg syscall (windows-amd64), type Win32finddata struct +pkg syscall (windows-amd64), type Win32finddata struct, AlternateFileName [13]uint16 +pkg syscall (windows-amd64), type Win32finddata struct, CreationTime Filetime +pkg syscall (windows-amd64), type Win32finddata struct, FileAttributes uint32 +pkg syscall (windows-amd64), type Win32finddata struct, FileName [MAX_PATH - 1]uint16 +pkg syscall (windows-amd64), type Win32finddata struct, FileSizeHigh uint32 +pkg syscall (windows-amd64), type Win32finddata struct, FileSizeLow uint32 +pkg syscall (windows-amd64), type Win32finddata struct, LastAccessTime Filetime +pkg syscall (windows-amd64), type Win32finddata struct, LastWriteTime Filetime +pkg syscall (windows-amd64), type Win32finddata struct, Reserved0 uint32 +pkg syscall (windows-amd64), type Win32finddata struct, Reserved1 uint32 +pkg syscall (windows-amd64), var OID_PKIX_KP_SERVER_AUTH []byte +pkg syscall (windows-amd64), var OID_SERVER_GATED_CRYPTO []byte +pkg syscall (windows-amd64), var OID_SGC_NETSCAPE []byte +pkg syscall (windows-amd64), var Stderr Handle +pkg syscall (windows-amd64), var Stdin Handle +pkg syscall (windows-amd64), var Stdout Handle +pkg syscall, const AF_INET ideal-int +pkg syscall, const AF_INET6 ideal-int +pkg syscall, const AF_UNIX ideal-int +pkg syscall, const AF_UNSPEC ideal-int +pkg syscall, const E2BIG Errno +pkg syscall, const EACCES Errno +pkg syscall, const EADDRINUSE Errno +pkg syscall, const EADDRNOTAVAIL Errno +pkg syscall, const EAFNOSUPPORT Errno +pkg syscall, const EAGAIN Errno +pkg syscall, const EALREADY Errno +pkg syscall, const EBADF Errno +pkg syscall, const EBADMSG Errno +pkg syscall, const EBUSY Errno +pkg syscall, const ECANCELED Errno +pkg syscall, const ECHILD Errno +pkg syscall, const ECONNABORTED Errno +pkg syscall, const ECONNREFUSED Errno +pkg syscall, const ECONNRESET Errno +pkg syscall, const EDEADLK Errno +pkg syscall, const EDESTADDRREQ Errno +pkg syscall, const EDOM Errno +pkg syscall, const EDQUOT Errno +pkg syscall, const EEXIST Errno +pkg syscall, const EFAULT Errno +pkg syscall, const EFBIG Errno +pkg syscall, const EHOSTDOWN Errno +pkg syscall, const EHOSTUNREACH Errno +pkg syscall, const EIDRM Errno +pkg syscall, const EILSEQ Errno +pkg syscall, const EINPROGRESS Errno +pkg syscall, const EINTR Errno +pkg syscall, const EINVAL Errno +pkg syscall, const EIO Errno +pkg syscall, const EISCONN Errno +pkg syscall, const EISDIR Errno +pkg syscall, const ELOOP Errno +pkg syscall, const EMFILE Errno +pkg syscall, const EMLINK Errno +pkg syscall, const EMSGSIZE Errno +pkg syscall, const EMULTIHOP Errno +pkg syscall, const ENAMETOOLONG Errno +pkg syscall, const ENETDOWN Errno +pkg syscall, const ENETRESET Errno +pkg syscall, const ENETUNREACH Errno +pkg syscall, const ENFILE Errno +pkg syscall, const ENOBUFS Errno +pkg syscall, const ENODATA Errno +pkg syscall, const ENODEV Errno +pkg syscall, const ENOENT Errno +pkg syscall, const ENOEXEC Errno +pkg syscall, const ENOLCK Errno +pkg syscall, const ENOLINK Errno +pkg syscall, const ENOMEM Errno +pkg syscall, const ENOMSG Errno +pkg syscall, const ENOPROTOOPT Errno +pkg syscall, const ENOSPC Errno +pkg syscall, const ENOSR Errno +pkg syscall, const ENOSTR Errno +pkg syscall, const ENOSYS Errno +pkg syscall, const ENOTBLK Errno +pkg syscall, const ENOTCONN Errno +pkg syscall, const ENOTDIR Errno +pkg syscall, const ENOTEMPTY Errno +pkg syscall, const ENOTRECOVERABLE Errno +pkg syscall, const ENOTSOCK Errno +pkg syscall, const ENOTSUP Errno +pkg syscall, const ENOTTY Errno +pkg syscall, const ENXIO Errno +pkg syscall, const EOPNOTSUPP Errno +pkg syscall, const EOVERFLOW Errno +pkg syscall, const EOWNERDEAD Errno +pkg syscall, const EPERM Errno +pkg syscall, const EPFNOSUPPORT Errno +pkg syscall, const EPIPE Errno +pkg syscall, const EPROTO Errno +pkg syscall, const EPROTONOSUPPORT Errno +pkg syscall, const EPROTOTYPE Errno +pkg syscall, const ERANGE Errno +pkg syscall, const EREMOTE Errno +pkg syscall, const EROFS Errno +pkg syscall, const ESHUTDOWN Errno +pkg syscall, const ESOCKTNOSUPPORT Errno +pkg syscall, const ESPIPE Errno +pkg syscall, const ESRCH Errno +pkg syscall, const ESTALE Errno +pkg syscall, const ETIME Errno +pkg syscall, const ETIMEDOUT Errno +pkg syscall, const ETOOMANYREFS Errno +pkg syscall, const ETXTBSY Errno +pkg syscall, const EUSERS Errno +pkg syscall, const EWOULDBLOCK Errno +pkg syscall, const EXDEV Errno +pkg syscall, const IFF_BROADCAST ideal-int +pkg syscall, const IFF_LOOPBACK ideal-int +pkg syscall, const IFF_MULTICAST ideal-int +pkg syscall, const IFF_UP ideal-int +pkg syscall, const IPPROTO_IP ideal-int +pkg syscall, const IPPROTO_IPV6 ideal-int +pkg syscall, const IPPROTO_TCP ideal-int +pkg syscall, const IPPROTO_UDP ideal-int +pkg syscall, const IPV6_JOIN_GROUP ideal-int +pkg syscall, const IPV6_LEAVE_GROUP ideal-int +pkg syscall, const IPV6_MULTICAST_HOPS ideal-int +pkg syscall, const IPV6_MULTICAST_IF ideal-int +pkg syscall, const IPV6_MULTICAST_LOOP ideal-int +pkg syscall, const IPV6_UNICAST_HOPS ideal-int +pkg syscall, const IPV6_V6ONLY ideal-int +pkg syscall, const IP_ADD_MEMBERSHIP ideal-int +pkg syscall, const IP_DROP_MEMBERSHIP ideal-int +pkg syscall, const IP_MULTICAST_IF ideal-int +pkg syscall, const IP_MULTICAST_LOOP ideal-int +pkg syscall, const IP_MULTICAST_TTL ideal-int +pkg syscall, const IP_TOS ideal-int +pkg syscall, const IP_TTL ideal-int +pkg syscall, const ImplementsGetwd bool +pkg syscall, const O_APPEND ideal-int +pkg syscall, const O_ASYNC ideal-int +pkg syscall, const O_CLOEXEC ideal-int +pkg syscall, const O_CREAT ideal-int +pkg syscall, const O_EXCL ideal-int +pkg syscall, const O_NOCTTY ideal-int +pkg syscall, const O_NONBLOCK ideal-int +pkg syscall, const O_RDONLY ideal-int +pkg syscall, const O_RDWR ideal-int +pkg syscall, const O_SYNC ideal-int +pkg syscall, const O_TRUNC ideal-int +pkg syscall, const O_WRONLY ideal-int +pkg syscall, const SHUT_RD ideal-int +pkg syscall, const SHUT_RDWR ideal-int +pkg syscall, const SHUT_WR ideal-int +pkg syscall, const SIGABRT Signal +pkg syscall, const SIGALRM Signal +pkg syscall, const SIGBUS Signal +pkg syscall, const SIGFPE Signal +pkg syscall, const SIGHUP Signal +pkg syscall, const SIGILL Signal +pkg syscall, const SIGINT Signal +pkg syscall, const SIGKILL Signal +pkg syscall, const SIGPIPE Signal +pkg syscall, const SIGQUIT Signal +pkg syscall, const SIGSEGV Signal +pkg syscall, const SIGTERM Signal +pkg syscall, const SIGTRAP Signal +pkg syscall, const SOCK_DGRAM ideal-int +pkg syscall, const SOCK_RAW ideal-int +pkg syscall, const SOCK_SEQPACKET ideal-int +pkg syscall, const SOCK_STREAM ideal-int +pkg syscall, const SOL_SOCKET ideal-int +pkg syscall, const SOMAXCONN ideal-int +pkg syscall, const SO_BROADCAST ideal-int +pkg syscall, const SO_DONTROUTE ideal-int +pkg syscall, const SO_KEEPALIVE ideal-int +pkg syscall, const SO_LINGER ideal-int +pkg syscall, const SO_RCVBUF ideal-int +pkg syscall, const SO_REUSEADDR ideal-int +pkg syscall, const SO_SNDBUF ideal-int +pkg syscall, const S_IFBLK ideal-int +pkg syscall, const S_IFCHR ideal-int +pkg syscall, const S_IFDIR ideal-int +pkg syscall, const S_IFIFO ideal-int +pkg syscall, const S_IFLNK ideal-int +pkg syscall, const S_IFMT ideal-int +pkg syscall, const S_IFREG ideal-int +pkg syscall, const S_IFSOCK ideal-int +pkg syscall, const S_IRUSR ideal-int +pkg syscall, const S_ISGID ideal-int +pkg syscall, const S_ISUID ideal-int +pkg syscall, const S_ISVTX ideal-int +pkg syscall, const S_IWRITE ideal-int +pkg syscall, const S_IWUSR ideal-int +pkg syscall, const S_IXUSR ideal-int +pkg syscall, const TCP_NODELAY ideal-int +pkg syscall, func Chdir(string) error +pkg syscall, func Chmod(string, uint32) error +pkg syscall, func Chown(string, int, int) error +pkg syscall, func Clearenv() +pkg syscall, func Environ() []string +pkg syscall, func Exec(string, []string, []string) error +pkg syscall, func Exit(int) +pkg syscall, func Getegid() int +pkg syscall, func Getenv(string) (string, bool) +pkg syscall, func Geteuid() int +pkg syscall, func Getgid() int +pkg syscall, func Getgroups() ([]int, error) +pkg syscall, func Getpagesize() int +pkg syscall, func Getpid() int +pkg syscall, func Getppid() int +pkg syscall, func Gettimeofday(*Timeval) error +pkg syscall, func Getuid() int +pkg syscall, func Getwd() (string, error) +pkg syscall, func Lchown(string, int, int) error +pkg syscall, func Mkdir(string, uint32) error +pkg syscall, func NsecToTimeval(int64) Timeval +pkg syscall, func Readlink(string, []byte) (int, error) +pkg syscall, func Rmdir(string) error +pkg syscall, func Setenv(string) error +pkg syscall, func StartProcess(string, []string, *ProcAttr) (int, uintptr, error) +pkg syscall, func StringBytePtr(string) *byte +pkg syscall, func StringByteSlice(string) []byte +pkg syscall, func Syscall(uintptr) (uintptr, Errno) +pkg syscall, func Syscall6(uintptr) (uintptr, Errno) +pkg syscall, func Unlink(string) error +pkg syscall, func Utimes(string, []Timeval) error +pkg syscall, method (*Timespec) Nano() int64 +pkg syscall, method (*Timespec) Unix() (int64, int64) +pkg syscall, method (*Timeval) Nano() int64 +pkg syscall, method (*Timeval) Unix() (int64, int64) +pkg syscall, method (Errno) Error() string +pkg syscall, method (Errno) Temporary() bool +pkg syscall, method (Errno) Timeout() bool +pkg syscall, method (Signal) Signal() +pkg syscall, method (Signal) String() string +pkg syscall, method (WaitStatus) Continued() bool +pkg syscall, method (WaitStatus) CoreDump() bool +pkg syscall, method (WaitStatus) ExitStatus() int +pkg syscall, method (WaitStatus) Exited() bool +pkg syscall, method (WaitStatus) Signal() Signal +pkg syscall, method (WaitStatus) Signaled() bool +pkg syscall, method (WaitStatus) StopSignal() Signal +pkg syscall, method (WaitStatus) Stopped() bool +pkg syscall, method (WaitStatus) TrapCause() int +pkg syscall, type Errno uintptr +pkg syscall, type IPMreq struct +pkg syscall, type IPMreq struct, Interface [4]byte +pkg syscall, type IPMreq struct, Multiaddr [4]byte +pkg syscall, type IPv6Mreq struct +pkg syscall, type IPv6Mreq struct, Interface uint32 +pkg syscall, type IPv6Mreq struct, Multiaddr [16]byte +pkg syscall, type Linger struct +pkg syscall, type Linger struct, Linger int32 +pkg syscall, type Linger struct, Onoff int32 +pkg syscall, type ProcAttr struct +pkg syscall, type ProcAttr struct, Dir string +pkg syscall, type ProcAttr struct, Env []string +pkg syscall, type ProcAttr struct, Files []uintptr +pkg syscall, type ProcAttr struct, Sys *SysProcAttr +pkg syscall, type RawSockaddr struct +pkg syscall, type RawSockaddr struct, Data [14]int8 +pkg syscall, type RawSockaddrAny struct +pkg syscall, type RawSockaddrAny struct, Addr RawSockaddr +pkg syscall, type RawSockaddrInet4 struct +pkg syscall, type RawSockaddrInet4 struct, Addr [4]byte +pkg syscall, type RawSockaddrInet4 struct, Port uint16 +pkg syscall, type Rusage struct +pkg syscall, type Signal int +pkg syscall, type Sockaddr interface {} +pkg syscall, type SockaddrInet4 struct +pkg syscall, type SockaddrInet4 struct, Addr [4]byte +pkg syscall, type SockaddrInet4 struct, Port int +pkg syscall, type SockaddrInet6 struct +pkg syscall, type SockaddrInet6 struct, Addr [16]byte +pkg syscall, type SockaddrInet6 struct, Port int +pkg syscall, type SockaddrInet6 struct, ZoneId uint32 +pkg syscall, type SockaddrUnix struct +pkg syscall, type SockaddrUnix struct, Name string +pkg syscall, type SysProcAttr struct +pkg syscall, type Timespec struct +pkg syscall, type Timeval struct +pkg syscall, var ForkLock sync.RWMutex +pkg syscall, var SocketDisableIPv6 bool +pkg testing, func Benchmark(func(*B)) BenchmarkResult +pkg testing, func Main(func(string) (bool, error), []InternalTest, []InternalBenchmark, []InternalExample) +pkg testing, func RunBenchmarks(func(string) (bool, error), []InternalBenchmark) +pkg testing, func RunExamples(func(string) (bool, error), []InternalExample) bool +pkg testing, func RunTests(func(string) (bool, error), []InternalTest) bool +pkg testing, func Short() bool +pkg testing, method (*B) Error(...interface{}) +pkg testing, method (*B) Errorf(string, ...interface{}) +pkg testing, method (*B) Fail() +pkg testing, method (*B) FailNow() +pkg testing, method (*B) Failed() bool +pkg testing, method (*B) Fatal(...interface{}) +pkg testing, method (*B) Fatalf(string, ...interface{}) +pkg testing, method (*B) Log(...interface{}) +pkg testing, method (*B) Logf(string, ...interface{}) +pkg testing, method (*B) ResetTimer() +pkg testing, method (*B) SetBytes(int64) +pkg testing, method (*B) StartTimer() +pkg testing, method (*B) StopTimer() +pkg testing, method (*T) Error(...interface{}) +pkg testing, method (*T) Errorf(string, ...interface{}) +pkg testing, method (*T) Fail() +pkg testing, method (*T) FailNow() +pkg testing, method (*T) Failed() bool +pkg testing, method (*T) Fatal(...interface{}) +pkg testing, method (*T) Fatalf(string, ...interface{}) +pkg testing, method (*T) Log(...interface{}) +pkg testing, method (*T) Logf(string, ...interface{}) +pkg testing, method (*T) Parallel() +pkg testing, method (BenchmarkResult) NsPerOp() int64 +pkg testing, method (BenchmarkResult) String() string +pkg testing, type B struct +pkg testing, type B struct, N int +pkg testing, type BenchmarkResult struct +pkg testing, type BenchmarkResult struct, Bytes int64 +pkg testing, type BenchmarkResult struct, N int +pkg testing, type BenchmarkResult struct, T time.Duration +pkg testing, type InternalBenchmark struct +pkg testing, type InternalBenchmark struct, F func(*B) +pkg testing, type InternalBenchmark struct, Name string +pkg testing, type InternalExample struct +pkg testing, type InternalExample struct, F func() +pkg testing, type InternalExample struct, Name string +pkg testing, type InternalExample struct, Output string +pkg testing, type InternalTest struct +pkg testing, type InternalTest struct, F func(*T) +pkg testing, type InternalTest struct, Name string +pkg testing, type T struct +pkg testing/iotest, func DataErrReader(io.Reader) io.Reader +pkg testing/iotest, func HalfReader(io.Reader) io.Reader +pkg testing/iotest, func NewReadLogger(string, io.Reader) io.Reader +pkg testing/iotest, func NewWriteLogger(string, io.Writer) io.Writer +pkg testing/iotest, func OneByteReader(io.Reader) io.Reader +pkg testing/iotest, func TimeoutReader(io.Reader) io.Reader +pkg testing/iotest, func TruncateWriter(io.Writer, int64) io.Writer +pkg testing/iotest, var ErrTimeout error +pkg testing/quick, func Check(interface{}, *Config) error +pkg testing/quick, func CheckEqual(interface{}, *Config) error +pkg testing/quick, func Value(reflect.Type, *rand.Rand) (reflect.Value, bool) +pkg testing/quick, method (*CheckEqualError) Error() string +pkg testing/quick, method (*CheckError) Error() string +pkg testing/quick, method (SetupError) Error() string +pkg testing/quick, type CheckEqualError struct +pkg testing/quick, type CheckEqualError struct, Out1 []interface{} +pkg testing/quick, type CheckEqualError struct, Out2 []interface{} +pkg testing/quick, type CheckEqualError struct, embedded CheckError +pkg testing/quick, type CheckError struct +pkg testing/quick, type CheckError struct, Count int +pkg testing/quick, type CheckError struct, In []interface{} +pkg testing/quick, type Config struct +pkg testing/quick, type Config struct, MaxCount int +pkg testing/quick, type Config struct, MaxCountScale float64 +pkg testing/quick, type Config struct, Rand *rand.Rand +pkg testing/quick, type Config struct, Values func([]reflect.Value, *rand.Rand) +pkg testing/quick, type Generator interface { Generate } +pkg testing/quick, type Generator interface, Generate(*rand.Rand, int) reflect.Value +pkg testing/quick, type SetupError string +pkg text/scanner, const Char ideal-int +pkg text/scanner, const Comment ideal-int +pkg text/scanner, const EOF ideal-int +pkg text/scanner, const Float ideal-int +pkg text/scanner, const GoTokens ideal-int +pkg text/scanner, const GoWhitespace ideal-int +pkg text/scanner, const Ident ideal-int +pkg text/scanner, const Int ideal-int +pkg text/scanner, const RawString ideal-int +pkg text/scanner, const ScanChars ideal-int +pkg text/scanner, const ScanComments ideal-int +pkg text/scanner, const ScanFloats ideal-int +pkg text/scanner, const ScanIdents ideal-int +pkg text/scanner, const ScanInts ideal-int +pkg text/scanner, const ScanRawStrings ideal-int +pkg text/scanner, const ScanStrings ideal-int +pkg text/scanner, const SkipComments ideal-int +pkg text/scanner, const String ideal-int +pkg text/scanner, func TokenString(rune) string +pkg text/scanner, method (*Position) IsValid() bool +pkg text/scanner, method (*Scanner) Init(io.Reader) *Scanner +pkg text/scanner, method (*Scanner) IsValid() bool +pkg text/scanner, method (*Scanner) Next() rune +pkg text/scanner, method (*Scanner) Peek() rune +pkg text/scanner, method (*Scanner) Pos() Position +pkg text/scanner, method (*Scanner) Scan() rune +pkg text/scanner, method (*Scanner) TokenText() string +pkg text/scanner, method (Position) String() string +pkg text/scanner, method (Scanner) String() string +pkg text/scanner, type Position struct +pkg text/scanner, type Position struct, Column int +pkg text/scanner, type Position struct, Filename string +pkg text/scanner, type Position struct, Line int +pkg text/scanner, type Position struct, Offset int +pkg text/scanner, type Scanner struct +pkg text/scanner, type Scanner struct, Error func(*Scanner, string) +pkg text/scanner, type Scanner struct, ErrorCount int +pkg text/scanner, type Scanner struct, Mode uint +pkg text/scanner, type Scanner struct, Whitespace uint64 +pkg text/scanner, type Scanner struct, embedded Position +pkg text/tabwriter, const AlignRight uint +pkg text/tabwriter, const Debug uint +pkg text/tabwriter, const DiscardEmptyColumns uint +pkg text/tabwriter, const Escape ideal-char +pkg text/tabwriter, const FilterHTML uint +pkg text/tabwriter, const StripEscape uint +pkg text/tabwriter, const TabIndent uint +pkg text/tabwriter, func NewWriter(io.Writer, int, byte, uint) *Writer +pkg text/tabwriter, method (*Writer) Flush() error +pkg text/tabwriter, method (*Writer) Init(io.Writer, int, byte, uint) *Writer +pkg text/tabwriter, method (*Writer) Write([]byte) (int, error) +pkg text/tabwriter, type Writer struct +pkg text/template, func HTMLEscape(io.Writer, []byte) +pkg text/template, func HTMLEscapeString(string) string +pkg text/template, func HTMLEscaper(...interface{}) string +pkg text/template, func JSEscape(io.Writer, []byte) +pkg text/template, func JSEscapeString(string) string +pkg text/template, func JSEscaper(...interface{}) string +pkg text/template, func Must(*Template, error) *Template +pkg text/template, func New(string) *Template +pkg text/template, func ParseFiles(...string) (*Template, error) +pkg text/template, func ParseGlob(string) (*Template, error) +pkg text/template, func URLQueryEscaper(...interface{}) string +pkg text/template, method (*Template) AddParseTree(string, *parse.Tree) (*Template, error) +pkg text/template, method (*Template) Clone() (*Template, error) +pkg text/template, method (*Template) Delims(string) *Template +pkg text/template, method (*Template) Execute(io.Writer, interface{}) error +pkg text/template, method (*Template) ExecuteTemplate(io.Writer, string, interface{}) error +pkg text/template, method (*Template) Funcs(FuncMap) *Template +pkg text/template, method (*Template) Lookup(string) *Template +pkg text/template, method (*Template) Name() string +pkg text/template, method (*Template) New(string) *Template +pkg text/template, method (*Template) Parse(string) (*Template, error) +pkg text/template, method (*Template) ParseFiles(...string) (*Template, error) +pkg text/template, method (*Template) ParseGlob(string) (*Template, error) +pkg text/template, method (*Template) Templates() []*Template +pkg text/template, type FuncMap map[string]interface{} +pkg text/template, type Template struct +pkg text/template, type Template struct, embedded *parse.Tree +pkg text/template/parse, const NodeAction NodeType +pkg text/template/parse, const NodeBool NodeType +pkg text/template/parse, const NodeCommand NodeType +pkg text/template/parse, const NodeDot NodeType +pkg text/template/parse, const NodeField NodeType +pkg text/template/parse, const NodeIdentifier NodeType +pkg text/template/parse, const NodeIf NodeType +pkg text/template/parse, const NodeList NodeType +pkg text/template/parse, const NodeNumber NodeType +pkg text/template/parse, const NodePipe NodeType +pkg text/template/parse, const NodeRange NodeType +pkg text/template/parse, const NodeString NodeType +pkg text/template/parse, const NodeTemplate NodeType +pkg text/template/parse, const NodeText NodeType +pkg text/template/parse, const NodeVariable NodeType +pkg text/template/parse, const NodeWith NodeType +pkg text/template/parse, func IsEmptyTree(Node) bool +pkg text/template/parse, func New(string, ...map[string]interface{}) *Tree +pkg text/template/parse, func NewIdentifier(string) *IdentifierNode +pkg text/template/parse, func Parse(string, ...map[string]interface{}) (map[string]*Tree, error) +pkg text/template/parse, method (*ActionNode) Copy() Node +pkg text/template/parse, method (*ActionNode) String() string +pkg text/template/parse, method (*BoolNode) Copy() Node +pkg text/template/parse, method (*BoolNode) String() string +pkg text/template/parse, method (*BranchNode) String() string +pkg text/template/parse, method (*CommandNode) Copy() Node +pkg text/template/parse, method (*CommandNode) String() string +pkg text/template/parse, method (*DotNode) Copy() Node +pkg text/template/parse, method (*DotNode) String() string +pkg text/template/parse, method (*DotNode) Type() NodeType +pkg text/template/parse, method (*FieldNode) Copy() Node +pkg text/template/parse, method (*FieldNode) String() string +pkg text/template/parse, method (*IdentifierNode) Copy() Node +pkg text/template/parse, method (*IdentifierNode) String() string +pkg text/template/parse, method (*IfNode) Copy() Node +pkg text/template/parse, method (*IfNode) String() string +pkg text/template/parse, method (*ListNode) Copy() Node +pkg text/template/parse, method (*ListNode) CopyList() *ListNode +pkg text/template/parse, method (*ListNode) String() string +pkg text/template/parse, method (*NumberNode) Copy() Node +pkg text/template/parse, method (*NumberNode) String() string +pkg text/template/parse, method (*PipeNode) Copy() Node +pkg text/template/parse, method (*PipeNode) CopyPipe() *PipeNode +pkg text/template/parse, method (*PipeNode) String() string +pkg text/template/parse, method (*RangeNode) Copy() Node +pkg text/template/parse, method (*RangeNode) String() string +pkg text/template/parse, method (*StringNode) Copy() Node +pkg text/template/parse, method (*StringNode) String() string +pkg text/template/parse, method (*TemplateNode) Copy() Node +pkg text/template/parse, method (*TemplateNode) String() string +pkg text/template/parse, method (*TextNode) Copy() Node +pkg text/template/parse, method (*TextNode) String() string +pkg text/template/parse, method (*Tree) Parse(string, map[string]*Tree, ...map[string]interface{}) (*Tree, error) +pkg text/template/parse, method (*VariableNode) Copy() Node +pkg text/template/parse, method (*VariableNode) String() string +pkg text/template/parse, method (*WithNode) Copy() Node +pkg text/template/parse, method (*WithNode) String() string +pkg text/template/parse, method (ActionNode) Type() NodeType +pkg text/template/parse, method (BoolNode) Type() NodeType +pkg text/template/parse, method (BranchNode) Type() NodeType +pkg text/template/parse, method (CommandNode) Type() NodeType +pkg text/template/parse, method (FieldNode) Type() NodeType +pkg text/template/parse, method (IdentifierNode) Type() NodeType +pkg text/template/parse, method (IfNode) Type() NodeType +pkg text/template/parse, method (ListNode) Type() NodeType +pkg text/template/parse, method (NodeType) Type() NodeType +pkg text/template/parse, method (NumberNode) Type() NodeType +pkg text/template/parse, method (PipeNode) Type() NodeType +pkg text/template/parse, method (RangeNode) Type() NodeType +pkg text/template/parse, method (StringNode) Type() NodeType +pkg text/template/parse, method (TemplateNode) Type() NodeType +pkg text/template/parse, method (TextNode) Type() NodeType +pkg text/template/parse, method (VariableNode) Type() NodeType +pkg text/template/parse, method (WithNode) Type() NodeType +pkg text/template/parse, type ActionNode struct +pkg text/template/parse, type ActionNode struct, Line int +pkg text/template/parse, type ActionNode struct, Pipe *PipeNode +pkg text/template/parse, type ActionNode struct, embedded NodeType +pkg text/template/parse, type BoolNode struct +pkg text/template/parse, type BoolNode struct, True bool +pkg text/template/parse, type BoolNode struct, embedded NodeType +pkg text/template/parse, type BranchNode struct +pkg text/template/parse, type BranchNode struct, ElseList *ListNode +pkg text/template/parse, type BranchNode struct, Line int +pkg text/template/parse, type BranchNode struct, List *ListNode +pkg text/template/parse, type BranchNode struct, Pipe *PipeNode +pkg text/template/parse, type BranchNode struct, embedded NodeType +pkg text/template/parse, type CommandNode struct +pkg text/template/parse, type CommandNode struct, Args []Node +pkg text/template/parse, type CommandNode struct, embedded NodeType +pkg text/template/parse, type DotNode bool +pkg text/template/parse, type FieldNode struct +pkg text/template/parse, type FieldNode struct, Ident []string +pkg text/template/parse, type FieldNode struct, embedded NodeType +pkg text/template/parse, type IdentifierNode struct +pkg text/template/parse, type IdentifierNode struct, Ident string +pkg text/template/parse, type IdentifierNode struct, embedded NodeType +pkg text/template/parse, type IfNode struct +pkg text/template/parse, type IfNode struct, embedded BranchNode +pkg text/template/parse, type ListNode struct +pkg text/template/parse, type ListNode struct, Nodes []Node +pkg text/template/parse, type ListNode struct, embedded NodeType +pkg text/template/parse, type Node interface { Copy, String, Type } +pkg text/template/parse, type Node interface, Copy() Node +pkg text/template/parse, type Node interface, String() string +pkg text/template/parse, type Node interface, Type() NodeType +pkg text/template/parse, type NodeType int +pkg text/template/parse, type NumberNode struct +pkg text/template/parse, type NumberNode struct, Complex128 complex128 +pkg text/template/parse, type NumberNode struct, Float64 float64 +pkg text/template/parse, type NumberNode struct, Int64 int64 +pkg text/template/parse, type NumberNode struct, IsComplex bool +pkg text/template/parse, type NumberNode struct, IsFloat bool +pkg text/template/parse, type NumberNode struct, IsInt bool +pkg text/template/parse, type NumberNode struct, IsUint bool +pkg text/template/parse, type NumberNode struct, Text string +pkg text/template/parse, type NumberNode struct, Uint64 uint64 +pkg text/template/parse, type NumberNode struct, embedded NodeType +pkg text/template/parse, type PipeNode struct +pkg text/template/parse, type PipeNode struct, Cmds []*CommandNode +pkg text/template/parse, type PipeNode struct, Decl []*VariableNode +pkg text/template/parse, type PipeNode struct, Line int +pkg text/template/parse, type PipeNode struct, embedded NodeType +pkg text/template/parse, type RangeNode struct +pkg text/template/parse, type RangeNode struct, embedded BranchNode +pkg text/template/parse, type StringNode struct +pkg text/template/parse, type StringNode struct, Quoted string +pkg text/template/parse, type StringNode struct, Text string +pkg text/template/parse, type StringNode struct, embedded NodeType +pkg text/template/parse, type TemplateNode struct +pkg text/template/parse, type TemplateNode struct, Line int +pkg text/template/parse, type TemplateNode struct, Name string +pkg text/template/parse, type TemplateNode struct, Pipe *PipeNode +pkg text/template/parse, type TemplateNode struct, embedded NodeType +pkg text/template/parse, type TextNode struct +pkg text/template/parse, type TextNode struct, Text []byte +pkg text/template/parse, type TextNode struct, embedded NodeType +pkg text/template/parse, type Tree struct +pkg text/template/parse, type Tree struct, Name string +pkg text/template/parse, type Tree struct, Root *ListNode +pkg text/template/parse, type VariableNode struct +pkg text/template/parse, type VariableNode struct, Ident []string +pkg text/template/parse, type VariableNode struct, embedded NodeType +pkg text/template/parse, type WithNode struct +pkg text/template/parse, type WithNode struct, embedded BranchNode +pkg time, const ANSIC ideal-string +pkg time, const April Month +pkg time, const August Month +pkg time, const December Month +pkg time, const February Month +pkg time, const Friday Weekday +pkg time, const Hour Duration +pkg time, const January Month +pkg time, const July Month +pkg time, const June Month +pkg time, const Kitchen ideal-string +pkg time, const March Month +pkg time, const May Month +pkg time, const Microsecond Duration +pkg time, const Millisecond Duration +pkg time, const Minute Duration +pkg time, const Monday Weekday +pkg time, const Nanosecond Duration +pkg time, const November Month +pkg time, const October Month +pkg time, const RFC1123 ideal-string +pkg time, const RFC1123Z ideal-string +pkg time, const RFC3339 ideal-string +pkg time, const RFC3339Nano ideal-string +pkg time, const RFC822 ideal-string +pkg time, const RFC822Z ideal-string +pkg time, const RFC850 ideal-string +pkg time, const RubyDate ideal-string +pkg time, const Saturday Weekday +pkg time, const Second Duration +pkg time, const September Month +pkg time, const Stamp ideal-string +pkg time, const StampMicro ideal-string +pkg time, const StampMilli ideal-string +pkg time, const StampNano ideal-string +pkg time, const Sunday Weekday +pkg time, const Thursday Weekday +pkg time, const Tuesday Weekday +pkg time, const UnixDate ideal-string +pkg time, const Wednesday Weekday +pkg time, func After(Duration) <-chan Time +pkg time, func AfterFunc(Duration, func()) *Timer +pkg time, func Date(int, Month, int, *Location) Time +pkg time, func FixedZone(string, int) *Location +pkg time, func LoadLocation(string) (*Location, error) +pkg time, func NewTicker(Duration) *Ticker +pkg time, func NewTimer(Duration) *Timer +pkg time, func Now() Time +pkg time, func Parse(string) (Time, error) +pkg time, func ParseDuration(string) (Duration, error) +pkg time, func Since(Time) Duration +pkg time, func Sleep(Duration) +pkg time, func Tick(Duration) <-chan Time +pkg time, func Unix(int64, int64) Time +pkg time, method (*Location) String() string +pkg time, method (*ParseError) Error() string +pkg time, method (*Ticker) Stop() +pkg time, method (*Time) GobDecode([]byte) error +pkg time, method (*Time) UnmarshalJSON([]byte) error +pkg time, method (*Timer) Stop() bool +pkg time, method (Duration) Hours() float64 +pkg time, method (Duration) Minutes() float64 +pkg time, method (Duration) Nanoseconds() int64 +pkg time, method (Duration) Seconds() float64 +pkg time, method (Duration) String() string +pkg time, method (Month) String() string +pkg time, method (Time) Add(Duration) Time +pkg time, method (Time) AddDate(int, int, int) Time +pkg time, method (Time) After(Time) bool +pkg time, method (Time) Before(Time) bool +pkg time, method (Time) Clock() int +pkg time, method (Time) Date() (int, Month, int) +pkg time, method (Time) Day() int +pkg time, method (Time) Equal(Time) bool +pkg time, method (Time) Format(string) string +pkg time, method (Time) GobEncode() ([]byte, error) +pkg time, method (Time) Hour() int +pkg time, method (Time) ISOWeek() int +pkg time, method (Time) In(*Location) Time +pkg time, method (Time) IsZero() bool +pkg time, method (Time) Local() Time +pkg time, method (Time) Location() *Location +pkg time, method (Time) MarshalJSON() ([]byte, error) +pkg time, method (Time) Minute() int +pkg time, method (Time) Month() Month +pkg time, method (Time) Nanosecond() int +pkg time, method (Time) Second() int +pkg time, method (Time) String() string +pkg time, method (Time) Sub(Time) Duration +pkg time, method (Time) UTC() Time +pkg time, method (Time) Unix() int64 +pkg time, method (Time) UnixNano() int64 +pkg time, method (Time) Weekday() Weekday +pkg time, method (Time) Year() int +pkg time, method (Time) Zone() (string, int) +pkg time, method (Weekday) String() string +pkg time, type Duration int64 +pkg time, type Location struct +pkg time, type Month int +pkg time, type ParseError struct +pkg time, type ParseError struct, Layout string +pkg time, type ParseError struct, LayoutElem string +pkg time, type ParseError struct, Message string +pkg time, type ParseError struct, Value string +pkg time, type ParseError struct, ValueElem string +pkg time, type Ticker struct +pkg time, type Ticker struct, C <-chan Time +pkg time, type Time struct +pkg time, type Timer struct +pkg time, type Timer struct, C <-chan Time +pkg time, type Weekday int +pkg time, var Local *Location +pkg time, var UTC *Location +pkg unicode, const LowerCase ideal-int +pkg unicode, const MaxASCII ideal-char +pkg unicode, const MaxCase ideal-int +pkg unicode, const MaxLatin1 ideal-char +pkg unicode, const MaxRune ideal-char +pkg unicode, const ReplacementChar ideal-char +pkg unicode, const TitleCase ideal-int +pkg unicode, const UpperCase ideal-int +pkg unicode, const UpperLower ideal-int +pkg unicode, const Version ideal-string +pkg unicode, func Is(*RangeTable, rune) bool +pkg unicode, func IsControl(rune) bool +pkg unicode, func IsDigit(rune) bool +pkg unicode, func IsGraphic(rune) bool +pkg unicode, func IsLetter(rune) bool +pkg unicode, func IsLower(rune) bool +pkg unicode, func IsMark(rune) bool +pkg unicode, func IsNumber(rune) bool +pkg unicode, func IsOneOf([]*RangeTable, rune) bool +pkg unicode, func IsPrint(rune) bool +pkg unicode, func IsPunct(rune) bool +pkg unicode, func IsSpace(rune) bool +pkg unicode, func IsSymbol(rune) bool +pkg unicode, func IsTitle(rune) bool +pkg unicode, func IsUpper(rune) bool +pkg unicode, func SimpleFold(rune) rune +pkg unicode, func To(int, rune) rune +pkg unicode, func ToLower(rune) rune +pkg unicode, func ToTitle(rune) rune +pkg unicode, func ToUpper(rune) rune +pkg unicode, method (SpecialCase) ToLower(rune) rune +pkg unicode, method (SpecialCase) ToTitle(rune) rune +pkg unicode, method (SpecialCase) ToUpper(rune) rune +pkg unicode, type CaseRange struct +pkg unicode, type CaseRange struct, Delta d +pkg unicode, type CaseRange struct, Hi uint32 +pkg unicode, type CaseRange struct, Lo uint32 +pkg unicode, type Range16 struct +pkg unicode, type Range16 struct, Hi uint16 +pkg unicode, type Range16 struct, Lo uint16 +pkg unicode, type Range16 struct, Stride uint16 +pkg unicode, type Range32 struct +pkg unicode, type Range32 struct, Hi uint32 +pkg unicode, type Range32 struct, Lo uint32 +pkg unicode, type Range32 struct, Stride uint32 +pkg unicode, type RangeTable struct +pkg unicode, type RangeTable struct, R16 []Range16 +pkg unicode, type RangeTable struct, R32 []Range32 +pkg unicode, type SpecialCase []CaseRange +pkg unicode, var ASCII_Hex_Digit *RangeTable +pkg unicode, var Arabic *RangeTable +pkg unicode, var Armenian *RangeTable +pkg unicode, var Avestan *RangeTable +pkg unicode, var AzeriCase SpecialCase +pkg unicode, var Balinese *RangeTable +pkg unicode, var Bamum *RangeTable +pkg unicode, var Batak *RangeTable +pkg unicode, var Bengali *RangeTable +pkg unicode, var Bidi_Control *RangeTable +pkg unicode, var Bopomofo *RangeTable +pkg unicode, var Brahmi *RangeTable +pkg unicode, var Braille *RangeTable +pkg unicode, var Buginese *RangeTable +pkg unicode, var Buhid *RangeTable +pkg unicode, var C *RangeTable +pkg unicode, var Canadian_Aboriginal *RangeTable +pkg unicode, var Carian *RangeTable +pkg unicode, var CaseRanges []CaseRange +pkg unicode, var Categories map[string]*RangeTable +pkg unicode, var Cc *RangeTable +pkg unicode, var Cf *RangeTable +pkg unicode, var Cham *RangeTable +pkg unicode, var Cherokee *RangeTable +pkg unicode, var Co *RangeTable +pkg unicode, var Common *RangeTable +pkg unicode, var Coptic *RangeTable +pkg unicode, var Cs *RangeTable +pkg unicode, var Cuneiform *RangeTable +pkg unicode, var Cypriot *RangeTable +pkg unicode, var Cyrillic *RangeTable +pkg unicode, var Dash *RangeTable +pkg unicode, var Deprecated *RangeTable +pkg unicode, var Deseret *RangeTable +pkg unicode, var Devanagari *RangeTable +pkg unicode, var Diacritic *RangeTable +pkg unicode, var Digit *RangeTable +pkg unicode, var Egyptian_Hieroglyphs *RangeTable +pkg unicode, var Ethiopic *RangeTable +pkg unicode, var Extender *RangeTable +pkg unicode, var FoldCategory map[string]*RangeTable +pkg unicode, var FoldScript map[string]*RangeTable +pkg unicode, var Georgian *RangeTable +pkg unicode, var Glagolitic *RangeTable +pkg unicode, var Gothic *RangeTable +pkg unicode, var GraphicRanges []*RangeTable +pkg unicode, var Greek *RangeTable +pkg unicode, var Gujarati *RangeTable +pkg unicode, var Gurmukhi *RangeTable +pkg unicode, var Han *RangeTable +pkg unicode, var Hangul *RangeTable +pkg unicode, var Hanunoo *RangeTable +pkg unicode, var Hebrew *RangeTable +pkg unicode, var Hex_Digit *RangeTable +pkg unicode, var Hiragana *RangeTable +pkg unicode, var Hyphen *RangeTable +pkg unicode, var IDS_Binary_Operator *RangeTable +pkg unicode, var IDS_Trinary_Operator *RangeTable +pkg unicode, var Ideographic *RangeTable +pkg unicode, var Imperial_Aramaic *RangeTable +pkg unicode, var Inherited *RangeTable +pkg unicode, var Inscriptional_Pahlavi *RangeTable +pkg unicode, var Inscriptional_Parthian *RangeTable +pkg unicode, var Javanese *RangeTable +pkg unicode, var Join_Control *RangeTable +pkg unicode, var Kaithi *RangeTable +pkg unicode, var Kannada *RangeTable +pkg unicode, var Katakana *RangeTable +pkg unicode, var Kayah_Li *RangeTable +pkg unicode, var Kharoshthi *RangeTable +pkg unicode, var Khmer *RangeTable +pkg unicode, var L *RangeTable +pkg unicode, var Lao *RangeTable +pkg unicode, var Latin *RangeTable +pkg unicode, var Lepcha *RangeTable +pkg unicode, var Letter *RangeTable +pkg unicode, var Limbu *RangeTable +pkg unicode, var Linear_B *RangeTable +pkg unicode, var Lisu *RangeTable +pkg unicode, var Ll *RangeTable +pkg unicode, var Lm *RangeTable +pkg unicode, var Lo *RangeTable +pkg unicode, var Logical_Order_Exception *RangeTable +pkg unicode, var Lower *RangeTable +pkg unicode, var Lt *RangeTable +pkg unicode, var Lu *RangeTable +pkg unicode, var Lycian *RangeTable +pkg unicode, var Lydian *RangeTable +pkg unicode, var M *RangeTable +pkg unicode, var Malayalam *RangeTable +pkg unicode, var Mandaic *RangeTable +pkg unicode, var Mark *RangeTable +pkg unicode, var Mc *RangeTable +pkg unicode, var Me *RangeTable +pkg unicode, var Meetei_Mayek *RangeTable +pkg unicode, var Mn *RangeTable +pkg unicode, var Mongolian *RangeTable +pkg unicode, var Myanmar *RangeTable +pkg unicode, var N *RangeTable +pkg unicode, var Nd *RangeTable +pkg unicode, var New_Tai_Lue *RangeTable +pkg unicode, var Nko *RangeTable +pkg unicode, var Nl *RangeTable +pkg unicode, var No *RangeTable +pkg unicode, var Noncharacter_Code_Point *RangeTable +pkg unicode, var Number *RangeTable +pkg unicode, var Ogham *RangeTable +pkg unicode, var Ol_Chiki *RangeTable +pkg unicode, var Old_Italic *RangeTable +pkg unicode, var Old_Persian *RangeTable +pkg unicode, var Old_South_Arabian *RangeTable +pkg unicode, var Old_Turkic *RangeTable +pkg unicode, var Oriya *RangeTable +pkg unicode, var Osmanya *RangeTable +pkg unicode, var Other *RangeTable +pkg unicode, var Other_Alphabetic *RangeTable +pkg unicode, var Other_Default_Ignorable_Code_Point *RangeTable +pkg unicode, var Other_Grapheme_Extend *RangeTable +pkg unicode, var Other_ID_Continue *RangeTable +pkg unicode, var Other_ID_Start *RangeTable +pkg unicode, var Other_Lowercase *RangeTable +pkg unicode, var Other_Math *RangeTable +pkg unicode, var Other_Uppercase *RangeTable +pkg unicode, var P *RangeTable +pkg unicode, var Pattern_Syntax *RangeTable +pkg unicode, var Pattern_White_Space *RangeTable +pkg unicode, var Pc *RangeTable +pkg unicode, var Pd *RangeTable +pkg unicode, var Pe *RangeTable +pkg unicode, var Pf *RangeTable +pkg unicode, var Phags_Pa *RangeTable +pkg unicode, var Phoenician *RangeTable +pkg unicode, var Pi *RangeTable +pkg unicode, var Po *RangeTable +pkg unicode, var PrintRanges []*RangeTable +pkg unicode, var Properties map[string]*RangeTable +pkg unicode, var Ps *RangeTable +pkg unicode, var Punct *RangeTable +pkg unicode, var Quotation_Mark *RangeTable +pkg unicode, var Radical *RangeTable +pkg unicode, var Rejang *RangeTable +pkg unicode, var Runic *RangeTable +pkg unicode, var S *RangeTable +pkg unicode, var STerm *RangeTable +pkg unicode, var Samaritan *RangeTable +pkg unicode, var Saurashtra *RangeTable +pkg unicode, var Sc *RangeTable +pkg unicode, var Scripts map[string]*RangeTable +pkg unicode, var Shavian *RangeTable +pkg unicode, var Sinhala *RangeTable +pkg unicode, var Sk *RangeTable +pkg unicode, var Sm *RangeTable +pkg unicode, var So *RangeTable +pkg unicode, var Soft_Dotted *RangeTable +pkg unicode, var Space *RangeTable +pkg unicode, var Sundanese *RangeTable +pkg unicode, var Syloti_Nagri *RangeTable +pkg unicode, var Symbol *RangeTable +pkg unicode, var Syriac *RangeTable +pkg unicode, var Tagalog *RangeTable +pkg unicode, var Tagbanwa *RangeTable +pkg unicode, var Tai_Le *RangeTable +pkg unicode, var Tai_Tham *RangeTable +pkg unicode, var Tai_Viet *RangeTable +pkg unicode, var Tamil *RangeTable +pkg unicode, var Telugu *RangeTable +pkg unicode, var Terminal_Punctuation *RangeTable +pkg unicode, var Thaana *RangeTable +pkg unicode, var Thai *RangeTable +pkg unicode, var Tibetan *RangeTable +pkg unicode, var Tifinagh *RangeTable +pkg unicode, var Title *RangeTable +pkg unicode, var TurkishCase SpecialCase +pkg unicode, var Ugaritic *RangeTable +pkg unicode, var Unified_Ideograph *RangeTable +pkg unicode, var Upper *RangeTable +pkg unicode, var Vai *RangeTable +pkg unicode, var Variation_Selector *RangeTable +pkg unicode, var White_Space *RangeTable +pkg unicode, var Yi *RangeTable +pkg unicode, var Z *RangeTable +pkg unicode, var Zl *RangeTable +pkg unicode, var Zp *RangeTable +pkg unicode, var Zs *RangeTable +pkg unicode/utf16, func Decode([]uint16) []rune +pkg unicode/utf16, func DecodeRune(rune) rune +pkg unicode/utf16, func Encode([]rune) []uint16 +pkg unicode/utf16, func EncodeRune(rune) rune +pkg unicode/utf16, func IsSurrogate(rune) bool +pkg unicode/utf8, const MaxRune ideal-char +pkg unicode/utf8, const RuneError ideal-char +pkg unicode/utf8, const RuneSelf ideal-int +pkg unicode/utf8, const UTFMax ideal-int +pkg unicode/utf8, func DecodeLastRune([]byte) (rune, int) +pkg unicode/utf8, func DecodeLastRuneInString(string) (rune, int) +pkg unicode/utf8, func DecodeRune([]byte) (rune, int) +pkg unicode/utf8, func DecodeRuneInString(string) (rune, int) +pkg unicode/utf8, func EncodeRune([]byte, rune) int +pkg unicode/utf8, func FullRune([]byte) bool +pkg unicode/utf8, func FullRuneInString(string) bool +pkg unicode/utf8, func RuneCount([]byte) int +pkg unicode/utf8, func RuneCountInString(string) int +pkg unicode/utf8, func RuneLen(rune) int +pkg unicode/utf8, func RuneStart(byte) bool +pkg unicode/utf8, func Valid([]byte) bool +pkg unicode/utf8, func ValidString(string) bool +pkg unsafe, func Alignof(ArbitraryType) uintptr +pkg unsafe, func Offsetof(ArbitraryType) uintptr +pkg unsafe, func Sizeof(ArbitraryType) uintptr +pkg unsafe, type ArbitraryType int +pkg unsafe, type Pointer *ArbitraryType diff --git a/doc/Makefile b/doc/Makefile index ff69bc775..da29e600b 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -2,18 +2,24 @@ # Use of this source code is governed by a BSD-style # license that can be found in the LICENSE file. -HTML=\ - articles/defer_panic_recover.html\ - articles/error_handling.html\ - articles/slices_usage_and_internals.html\ - articles/laws_of_reflection.html\ - effective_go.html\ - go1.html\ +RAWHTML=\ + articles/defer_panic_recover.rawhtml\ + articles/error_handling.rawhtml\ + articles/slices_usage_and_internals.rawhtml\ + articles/laws_of_reflection.rawhtml\ + articles/c_go_cgo.rawhtml\ + articles/go_concurrency_patterns_timing_out_moving_on.rawhtml\ + articles/godoc_documenting_go_code.rawhtml\ + articles/gobs_of_data.rawhtml\ + articles/json_and_go.rawhtml\ + articles/image_draw.rawhtml\ + effective_go.rawhtml\ + go1.rawhtml\ -all: tmpltohtml $(HTML) +all: $(RAWHTML) -tmpltohtml: tmpltohtml.go - go build tmpltohtml.go +%.rawhtml: %.html + godoc -url /doc/$< >$@ -%.html: %.tmpl tmpltohtml - ./makehtml $*.tmpl +clean: + rm -f $(RAWHTML) diff --git a/doc/articles/c_go_cgo.html b/doc/articles/c_go_cgo.html new file mode 100644 index 000000000..ac6bb29a2 --- /dev/null +++ b/doc/articles/c_go_cgo.html @@ -0,0 +1,180 @@ +<!--{ +"Title": "C? Go? Cgo!", +"Template": true +}--> + +<p> +Cgo lets Go packages call C code. Given a Go source file written with some +special features, cgo outputs Go and C files that can be combined into a +single Go package. +</p> + +<p> +To lead with an example, here's a Go package that provides two functions - +<code>Random</code> and <code>Seed</code> - that wrap C's <code>random</code> +and <code>srandom</code> functions. +</p> + +{{code "/doc/progs/cgo1.go" `/package rand/` `/END/`}} + +<p> +Let's look at what's happening here, starting with the import statement. +</p> + +<p> +The <code>rand</code> package imports <code>"C"</code>, but you'll find there's +no such package in the standard Go library. That's because <code>C</code> is a +"pseudo-package", a special name interpreted by cgo as a reference to C's +name space. +</p> + +<p> +The <code>rand</code> package contains four references to the <code>C</code> +package: the calls to <code>C.random</code> and <code>C.srandom</code>, the +conversion <code>C.uint(i)</code>, and the <code>import</code> statement. +</p> + +<p> +The <code>Random</code> function calls the standard C library's <code>random</code> +function and returns the result. In C, <code>random</code> returns a value of the +C type <code>long</code>, which cgo represents as the type <code>C.long</code>. +It must be converted to a Go type before it can be used by Go code outside this +package, using an ordinary Go type conversion: +</p> + +{{code "/doc/progs/cgo1.go" `/func Random/` `/STOP/`}} + +<p> +Here's an equivalent function that uses a temporary variable to illustrate +the type conversion more explicitly: +</p> + +{{code "/doc/progs/cgo2.go" `/func Random/` `/STOP/`}} + +<p> +The <code>Seed</code> function does the reverse, in a way. It takes a +regular Go <code>int</code>, converts it to the C <code>unsigned int</code> +type, and passes it to the C function <code>srandom</code>. +</p> + +{{code "/doc/progs/cgo1.go" `/func Seed/` `/END/`}} + +<p> +Note that cgo knows the <code>unsigned int</code> type as <code>C.uint</code>; +see the <a href="/cmd/cgo">cgo documentation</a> for a complete list of +these numeric type names. +</p> + +<p> +The one detail of this example we haven't examined yet is the comment +above the <code>import</code> statement. +</p> + +{{code "/doc/progs/cgo1.go" `/\/\*/` `/STOP/`}} + +<p> +Cgo recognizes this comment. Any lines starting +with <code>#cgo</code> +followed +by a space character are removed; these become directives for cgo. +The remaining lines are used as a header when compiling the C parts of +the package. In this case those lines are just a +single <code>#include</code> +statement, but they can be almost any C code. The <code>#cgo</code> +directives are +used to provide flags for the compiler and linker when building the C +parts of the package. +</p> + +<p> +There is a limitation: if your program uses any <code>//export</code> +directives, then the C code in the comment may only include declarations +(<code>extern int f();</code>), not definitions (<code>int f() { +return 1; }</code>). You can use <code>//export</code> directives to +make Go functions accessible to C code. +</p> + +<p> +The <code>#cgo</code> and <code>//export</code> directives are +documented in +the <a href="/cmd/cgo/">cgo documentation</a>. +</p> + +<p> +<b>Strings and things</b> +</p> + +<p> +Unlike Go, C doesn't have an explicit string type. Strings in C are +represented by a zero-terminated array of chars. +</p> + +<p> +Conversion between Go and C strings is done with the +<code>C.CString</code>, <code>C.GoString</code>, and +<code>C.GoStringN</code> functions. These conversions make a copy of the +string data. +</p> + +<p> +This next example implements a <code>Print</code> function that writes a +string to standard output using C's <code>fputs</code> function from the +<code>stdio</code> library: +</p> + +{{code "/doc/progs/cgo3.go" `/package print/` `/END/`}} + +<p> +Memory allocations made by C code are not known to Go's memory manager. +When you create a C string with <code>C.CString</code> (or any C memory +allocation) you must remember to free the memory when you're done with it +by calling <code>C.free</code>. +</p> + +<p> +The call to <code>C.CString</code> returns a pointer to the start of the +char array, so before the function exits we convert it to an +<a href="/pkg/unsafe/#Pointer"><code>unsafe.Pointer</code></a> and release +the memory allocation with <code>C.free</code>. A common idiom in cgo programs +is to <a href="/doc/articles/defer_panic_recover.html"><code>defer</code></a> +the free immediately after allocating (especially when the code that follows +is more complex than a single function call), as in this rewrite of +<code>Print</code>: +</p> + +{{code "/doc/progs/cgo4.go" `/func Print/` `/END/`}} + +<p> +<b>Building cgo packages</b> +</p> + +<p> +To build cgo packages, just use <a href="/cmd/go/#Compile_packages_and_dependencies">" +<code>go build</code>"</a> or +<a href="/cmd/go/#Compile_and_install_packages_and_dependencies">"<code>go install</code> +"</a> as usual. The go tool recognizes the special <code>"C"</code> import and automatically +uses cgo for those files. +</p> + +<p> +<b>More cgo resources</b> +</p> + +<p> +The <a href="/cmd/cgo/">cgo command</a> documentation has more detail about +the C pseudo-package and the build process. The <a href="/misc/cgo/">cgo examples</a> +in the Go tree demonstrate more advanced concepts. +</p> + +<p> +For a simple, idiomatic example of a cgo-based package, see Russ Cox's <a +href="http://code.google.com/p/gosqlite/source/browse/sqlite/sqlite.go">gosqlite</a>. +Also, the Go Project Dashboard lists <a +href="https://godashboard.appspot.com/project?tag=cgo">several other +cgo packages</a>. +</p> + +<p> +Finally, if you're curious as to how all this works internally, take a look +at the introductory comment of the runtime package's <a href="/src/pkg/runtime/cgocall.c">cgocall.c</a>. +</p> diff --git a/doc/articles/concurrency_patterns.html b/doc/articles/concurrency_patterns.html new file mode 100644 index 000000000..63c8cd59e --- /dev/null +++ b/doc/articles/concurrency_patterns.html @@ -0,0 +1,79 @@ +<!--{ +"Title": "Go Concurrency Patterns: Timing out, moving on", +"Template": true +}--> + +<p> +Concurrent programming has its own idioms. A good example is timeouts. Although +Go's channels do not support them directly, they are easy to implement. Say we +want to receive from the channel <code>ch</code>, but want to wait at most one +second for the value to arrive. We would start by creating a signalling channel +and launching a goroutine that sleeps before sending on the channel: +</p> + +{{code "/doc/progs/timeout1.go" `/timeout :=/` `/STOP/`}} + +<p> +We can then use a <code>select</code> statement to receive from either +<code>ch</code> or <code>timeout</code>. If nothing arrives on <code>ch</code> +after one second, the timeout case is selected and the attempt to read from +<cde>ch</cde> is abandoned. +</p> + +{{code "/doc/progs/timeout1.go" `/select {/` `/STOP/`}} + +<p> +The <code>timeout</code> channel is buffered with space for 1 value, allowing +the timeout goroutine to send to the channel and then exit. The goroutine +doesn't know (or care) whether the value is received. This means the goroutine +won't hang around forever if the <code>ch</code> receive happens before the +timeout is reached. The <code>timeout</code> channel will eventually be +deallocated by the garbage collector. +</p> + +<p> +(In this example we used <code>time.Sleep</code> to demonstrate the mechanics +of goroutines and channels. In real programs you should use <code> +<a href="/pkg/time/#After">time.After</a></code>, a function that returns +a channel and sends on that channel after the specified duration.) +</p> + +<p> +Let's look at another variation of this pattern. In this example we have a +program that reads from multiple replicated databases simultaneously. The +program needs only one of the answers, and it should accept the answer that +arrives first. +</p> + +<p> +The function <code>Query</code> takes a slice of database connections and a +<code>query</code> string. It queries each of the databases in parallel and +returns the first response it receives: +</p> + +{{code "/doc/progs/timeout2.go" `/func Query/` `/STOP/`}} + +<p> +In this example, the closure does a non-blocking send, which it achieves by +using the send operation in <code>select</code> statement with a +<code>default</code> case. If the send cannot go through immediately the +default case will be selected. Making the send non-blocking guarantees that +none of the goroutines launched in the loop will hang around. However, if the +result arrives before the main function has made it to the receive, the send +could fail since no one is ready. +</p> + +<p> +This problem is a textbook of example of what is known as a +<a href="https://en.wikipedia.org/wiki/Race_condition">race condition</a>, but +the fix is trivial. We just make sure to buffer the channel <code>ch</code> (by +adding the buffer length as the second argument to <a href="/pkg/builtin/#make">make</a>), +guaranteeing that the first send has a place to put the value. This ensures the +send will always succeed, and the first value to arrive will be retrieved +regardless of the order of execution. +</p> + +<p> +These two examples demonstrate the simplicity with which Go can express complex +interactions between goroutines. +</p> diff --git a/doc/articles/defer_panic_recover.html b/doc/articles/defer_panic_recover.html index be97045dd..206b836d8 100644 --- a/doc/articles/defer_panic_recover.html +++ b/doc/articles/defer_panic_recover.html @@ -1,10 +1,7 @@ <!--{ - "Title": "Defer, Panic, and Recover" + "Title": "Defer, Panic, and Recover", + "Template": true }--> -<!-- - DO NOT EDIT: created by - tmpltohtml articles/defer_panic_recover.tmpl ---> <p> Go has the usual mechanisms for control flow: if, for, switch, goto. It also @@ -23,23 +20,7 @@ For example, let's look at a function that opens two files and copies the contents of one file to the other: </p> -<pre><!--{{code "progs/defer.go" `/func CopyFile/` `/STOP/`}} --->func CopyFile(dstName, srcName string) (written int64, err error) { - src, err := os.Open(srcName) - if err != nil { - return - } - - dst, err := os.Create(dstName) - if err != nil { - return - } - - written, err = io.Copy(dst, src) - dst.Close() - src.Close() - return -}</pre> +{{code "/doc/progs/defer.go" `/func CopyFile/` `/STOP/`}} <p> This works, but there is a bug. If the call to os.Create fails, the @@ -50,22 +31,7 @@ noticed and resolved. By introducing defer statements we can ensure that the files are always closed: </p> -<pre><!--{{code "progs/defer2.go" `/func CopyFile/` `/STOP/`}} --->func CopyFile(dstName, srcName string) (written int64, err error) { - src, err := os.Open(srcName) - if err != nil { - return - } - defer src.Close() - - dst, err := os.Create(dstName) - if err != nil { - return - } - defer dst.Close() - - return io.Copy(dst, src) -}</pre> +{{code "/doc/progs/defer2.go" `/func CopyFile/` `/STOP/`}} <p> Defer statements allow us to think about closing each file right after opening @@ -88,13 +54,7 @@ In this example, the expression "i" is evaluated when the Println call is deferred. The deferred call will print "0" after the function returns. </p> -<pre><!--{{code "progs/defer.go" `/func a/` `/STOP/`}} --->func a() { - i := 0 - defer fmt.Println(i) - i++ - return -}</pre> +{{code "/doc/progs/defer.go" `/func a/` `/STOP/`}} <p> 2. <i>Deferred function calls are executed in Last In First Out order @@ -105,12 +65,7 @@ deferred. The deferred call will print "0" after the function returns. This function prints "3210": </p> -<pre><!--{{code "progs/defer.go" `/func b/` `/STOP/`}} --->func b() { - for i := 0; i < 4; i++ { - defer fmt.Print(i) - } -}</pre> +{{code "/doc/progs/defer.go" `/func b/` `/STOP/`}} <p> 3. <i>Deferred functions may read and assign to the returning function's named @@ -122,11 +77,7 @@ In this example, a deferred function increments the return value i <i>after</i> the surrounding function returns. Thus, this function returns 2: </p> -<pre><!--{{code "progs/defer.go" `/func c/` `/STOP/`}} --->func c() (i int) { - defer func() { i++ }() - return 1 -}</pre> +{{code "/doc/progs/defer.go" `/func c/` `/STOP/`}} <p> This is convenient for modifying the error return value of a function; we will @@ -156,36 +107,7 @@ to panic and resume normal execution. Here's an example program that demonstrates the mechanics of panic and defer: </p> -<pre><!--{{code "progs/defer2.go" `/package main/` `/STOP/`}} --->package main - -import "fmt" - -func main() { - f() - fmt.Println("Returned normally from f.") -} - -func f() { - defer func() { - if r := recover(); r != nil { - fmt.Println("Recovered in f", r) - } - }() - fmt.Println("Calling g.") - g(0) - fmt.Println("Returned normally from g.") -} - -func g(i int) { - if i > 3 { - fmt.Println("Panicking!") - panic(fmt.Sprintf("%v", i)) - } - defer fmt.Println("Defer in g", i) - fmt.Println("Printing in g", i) - g(i + 1) -}</pre> +{{code "/doc/progs/defer2.go" `/package main/` `/STOP/`}} <p> The function g takes the int i, and panics if i is greater than 3, or else it diff --git a/doc/articles/defer_panic_recover.tmpl b/doc/articles/defer_panic_recover.tmpl deleted file mode 100644 index 5f48c6ef4..000000000 --- a/doc/articles/defer_panic_recover.tmpl +++ /dev/null @@ -1,195 +0,0 @@ -<!--{ - "Title": "Defer, Panic, and Recover" -}--> -{{donotedit}} -<p> -Go has the usual mechanisms for control flow: if, for, switch, goto. It also -has the go statement to run code in a separate goroutine. Here I'd like to -discuss some of the less common ones: defer, panic, and recover. -</p> - -<p> -A <b>defer statement</b> pushes a function call onto a list. The list of saved -calls is executed after the surrounding function returns. Defer is commonly -used to simplify functions that perform various clean-up actions. -</p> - -<p> -For example, let's look at a function that opens two files and copies the -contents of one file to the other: -</p> - -{{code "progs/defer.go" `/func CopyFile/` `/STOP/`}} - -<p> -This works, but there is a bug. If the call to os.Create fails, the -function will return without closing the source file. This can be easily -remedied by putting a call to src.Close() before the second return statement, -but if the function were more complex the problem might not be so easily -noticed and resolved. By introducing defer statements we can ensure that the -files are always closed: -</p> - -{{code "progs/defer2.go" `/func CopyFile/` `/STOP/`}} - -<p> -Defer statements allow us to think about closing each file right after opening -it, guaranteeing that, regardless of the number of return statements in the -function, the files <i>will</i> be closed. -</p> - -<p> -The behavior of defer statements is straightforward and predictable. There are -three simple rules: -</p> - -<p> -1. <i>A deferred function's arguments are evaluated when the defer statement is -evaluated.</i> -</p> - -<p> -In this example, the expression "i" is evaluated when the Println call is -deferred. The deferred call will print "0" after the function returns. -</p> - -{{code "progs/defer.go" `/func a/` `/STOP/`}} - -<p> -2. <i>Deferred function calls are executed in Last In First Out order -</i>after<i> the surrounding function returns.</i> -</p> - -<p> -This function prints "3210": -</p> - -{{code "progs/defer.go" `/func b/` `/STOP/`}} - -<p> -3. <i>Deferred functions may read and assign to the returning function's named -return values.</i> -</p> - -<p> -In this example, a deferred function increments the return value i <i>after</i> -the surrounding function returns. Thus, this function returns 2: -</p> - -{{code "progs/defer.go" `/func c/` `/STOP/`}} - -<p> -This is convenient for modifying the error return value of a function; we will -see an example of this shortly. -</p> - -<p> -<b>Panic</b> is a built-in function that stops the ordinary flow of control and -begins <i>panicking</i>. When the function F calls panic, execution of F stops, -any deferred functions in F are executed normally, and then F returns to its -caller. To the caller, F then behaves like a call to panic. The process -continues up the stack until all functions in the current goroutine have -returned, at which point the program crashes. Panics can be initiated by -invoking panic directly. They can also be caused by runtime errors, such as -out-of-bounds array accesses. -</p> - -<p> -<b>Recover</b> is a built-in function that regains control of a panicking -goroutine. Recover is only useful inside deferred functions. During normal -execution, a call to recover will return nil and have no other effect. If the -current goroutine is panicking, a call to recover will capture the value given -to panic and resume normal execution. -</p> - -<p> -Here's an example program that demonstrates the mechanics of panic and defer: -</p> - -{{code "progs/defer2.go" `/package main/` `/STOP/`}} - -<p> -The function g takes the int i, and panics if i is greater than 3, or else it -calls itself with the argument i+1. The function f defers a function that calls -recover and prints the recovered value (if it is non-nil). Try to picture what -the output of this program might be before reading on. -</p> - -<p> -The program will output: -</p> - -<pre>Calling g. -Printing in g 0 -Printing in g 1 -Printing in g 2 -Printing in g 3 -Panicking! -Defer in g 3 -Defer in g 2 -Defer in g 1 -Defer in g 0 -Recovered in f 4 -Returned normally from f.</pre> - -<p> -If we remove the deferred function from f the panic is not recovered and -reaches the top of the goroutine's call stack, terminating the program. This -modified program will output: -</p> - -<pre>Calling g. -Printing in g 0 -Printing in g 1 -Printing in g 2 -Printing in g 3 -Panicking! -Defer in g 3 -Defer in g 2 -Defer in g 1 -Defer in g 0 -panic: 4 - -panic PC=0x2a9cd8 -[stack trace omitted]</pre> - -<p> -For a real-world example of <b>panic</b> and <b>recover</b>, see the -<a href="/pkg/encoding/json/">json package</a> from the Go standard library. -It decodes JSON-encoded data with a set of recursive functions. -When malformed JSON is encountered, the parser calls panic to unwind the -stack to the top-level function call, which recovers from the panic and returns -an appropriate error value (see the 'error' and 'unmarshal' functions in -<a href="/src/pkg/encoding/json/decode.go">decode.go</a>). -</p> - -<p> -The convention in the Go libraries is that even when a package uses panic -internally, its external API still presents explicit error return values. -</p> - -<p> -Other uses of <b>defer</b> (beyond the file.Close() example given earlier) -include releasing a mutex: -</p> - -<pre>mu.Lock() -defer mu.Unlock()</pre> - -<p> -printing a footer: -</p> - -<pre>printHeader() -defer printFooter()</pre> - -<p> -and more. -</p> - -<p> -In summary, the defer statement (with or without panic and recover) provides an -unusual and powerful mechanism for control flow. It can be used to model a -number of features implemented by special-purpose structures in other -programming languages. Try it out. -</p> diff --git a/doc/articles/error_handling.html b/doc/articles/error_handling.html index ac33f1dab..8f4fffb48 100644 --- a/doc/articles/error_handling.html +++ b/doc/articles/error_handling.html @@ -1,10 +1,7 @@ <!--{ - "Title": "Error Handling and Go" + "Title": "Error Handling and Go", + "Template": true }--> -<!-- - DO NOT EDIT: created by - tmpltohtml articles/error_handling.tmpl ---> <p> If you have written any Go code you have probably encountered the built-in @@ -13,20 +10,14 @@ indicate an abnormal state. For example, the <code>os.Open</code> function returns a non-nil <code>error</code> value when it fails to open a file. </p> -<pre><!--{{code "progs/error.go" `/func Open/`}} --->func Open(name string) (file *File, err error)</pre> +{{code "/doc/progs/error.go" `/func Open/`}} <p> The following code uses <code>os.Open</code> to open a file. If an error occurs it calls <code>log.Fatal</code> to print the error message and stop. </p> -<pre><!--{{code "progs/error.go" `/func openFile/` `/STOP/`}} ---> f, err := os.Open("filename.ext") - if err != nil { - log.Fatal(err) - } - // do something with the open *File f</pre> +{{code "/doc/progs/error.go" `/func openFile/` `/STOP/`}} <p> You can get a lot done in Go knowing just this about the <code>error</code> @@ -59,15 +50,7 @@ The most commonly-used <code>error</code> implementation is the <a href="/pkg/errors/">errors</a> package's unexported <code>errorString</code> type. </p> -<pre><!--{{code "progs/error.go" `/errorString/` `/STOP/`}} --->// errorString is a trivial implementation of error. -type errorString struct { - s string -} - -func (e *errorString) Error() string { - return e.s -}</pre> +{{code "/doc/progs/error.go" `/errorString/` `/STOP/`}} <p> You can construct one of these values with the <code>errors.New</code> @@ -75,23 +58,13 @@ function. It takes a string that it converts to an <code>errors.errorString</cod and returns as an <code>error</code> value. </p> -<pre><!--{{code "progs/error.go" `/New/` `/STOP/`}} --->// New returns an error that formats as the given text. -func New(text string) error { - return &errorString{text} -}</pre> +{{code "/doc/progs/error.go" `/New/` `/STOP/`}} <p> Here's how you might use <code>errors.New</code>: </p> -<pre><!--{{code "progs/error.go" `/func Sqrt/` `/STOP/`}} --->func Sqrt(f float64) (float64, error) { - if f < 0 { - return 0, errors.New("math: square root of negative number") - } - // implementation -}</pre> +{{code "/doc/progs/error.go" `/func Sqrt/` `/STOP/`}} <p> A caller passing a negative argument to <code>Sqrt</code> receives a non-nil @@ -101,11 +74,7 @@ A caller passing a negative argument to <code>Sqrt</code> receives a non-nil <code>Error</code> method, or by just printing it: </p> -<pre><!--{{code "progs/error.go" `/func printErr/` `/STOP/`}} ---> f, err := Sqrt(-1) - if err != nil { - fmt.Println(err) - }</pre> +{{code "/doc/progs/error.go" `/func printErr/` `/STOP/`}} <p> The <a href="/pkg/fmt/">fmt</a> package formats an <code>error</code> value @@ -126,10 +95,7 @@ rules and returns it as an <code>error</code> created by <code>errors.New</code>. </p> -<pre><!--{{code "progs/error.go" `/fmtError/` `/STOP/`}} ---> if f < 0 { - return 0, fmt.Errorf("math: square root of negative number %g", f) - }</pre> +{{code "/doc/progs/error.go" `/fmtError/` `/STOP/`}} <p> In many cases <code>fmt.Errorf</code> is good enough, but since @@ -143,12 +109,7 @@ argument passed to <code>Sqrt</code>. We can enable that by defining a new error implementation instead of using <code>errors.errorString</code>: </p> -<pre><!--{{code "progs/error.go" `/type NegativeSqrtError/` `/STOP/`}} --->type NegativeSqrtError float64 - -func (f NegativeSqrtError) Error() string { - return fmt.Sprintf("math: square root of negative number %g", float64(f)) -}</pre> +{{code "/doc/progs/error.go" `/type NegativeSqrtError/` `/STOP/`}} <p> A sophisticated caller can then use a @@ -164,13 +125,7 @@ As another example, the <a href="/pkg/encoding/json/">json</a> package specifies returns when it encounters a syntax error parsing a JSON blob. </p> -<pre><!--{{code "progs/error.go" `/type SyntaxError/` `/STOP/`}} --->type SyntaxError struct { - msg string // description of error - Offset int64 // error occurred after reading Offset bytes -} - -func (e *SyntaxError) Error() string { return e.msg }</pre> +{{code "/doc/progs/error.go" `/type SyntaxError/` `/STOP/`}} <p> The <code>Offset</code> field isn't even shown in the default formatting of the @@ -178,14 +133,7 @@ error, but callers can use it to add file and line information to their error messages: </p> -<pre><!--{{code "progs/error.go" `/func decodeError/` `/STOP/`}} ---> if err := dec.Decode(&val); err != nil { - if serr, ok := err.(*json.SyntaxError); ok { - line, col := findLine(f, serr.Offset) - return fmt.Errorf("%s:%d:%d: %v", f.Name(), line, col, err) - } - return err - }</pre> +{{code "/doc/progs/error.go" `/func decodeError/` `/STOP/`}} <p> (This is a slightly simplified version of some @@ -217,14 +165,7 @@ web crawler might sleep and retry when it encounters a temporary error and give up otherwise. </p> -<pre><!--{{code "progs/error.go" `/func netError/` `/STOP/`}} ---> if nerr, ok := err.(net.Error); ok && nerr.Temporary() { - time.Sleep(1e9) - continue - } - if err != nil { - log.Fatal(err) - }</pre> +{{code "/doc/progs/error.go" `/func netError/` `/STOP/`}} <p> <b>Simplifying repetitive error handling</b> @@ -244,23 +185,7 @@ application with an HTTP handler that retrieves a record from the datastore and formats it with a template. </p> -<pre><!--{{code "progs/error2.go" `/func init/` `/STOP/`}} --->func init() { - http.HandleFunc("/view", viewRecord) -} - -func viewRecord(w http.ResponseWriter, r *http.Request) { - c := appengine.NewContext(r) - key := datastore.NewKey(c, "Record", r.FormValue("id"), 0, nil) - record := new(Record) - if err := datastore.Get(c, key, record); err != nil { - http.Error(w, err.Error(), 500) - return - } - if err := viewTemplate.Execute(w, record); err != nil { - http.Error(w, err.Error(), 500) - } -}</pre> +{{code "/doc/progs/error2.go" `/func init/` `/STOP/`}} <p> This function handles errors returned by the <code>datastore.Get</code> @@ -276,23 +201,13 @@ To reduce the repetition we can define our own HTTP <code>appHandler</code> type that includes an <code>error</code> return value: </p> -<pre><!--{{code "progs/error3.go" `/type appHandler/`}} --->type appHandler func(http.ResponseWriter, *http.Request) error</pre> +{{code "/doc/progs/error3.go" `/type appHandler/`}} <p> Then we can change our <code>viewRecord</code> function to return errors: </p> -<pre><!--{{code "progs/error3.go" `/func viewRecord/` `/STOP/`}} --->func viewRecord(w http.ResponseWriter, r *http.Request) error { - c := appengine.NewContext(r) - key := datastore.NewKey(c, "Record", r.FormValue("id"), 0, nil) - record := new(Record) - if err := datastore.Get(c, key, record); err != nil { - return err - } - return viewTemplate.Execute(w, record) -}</pre> +{{code "/doc/progs/error3.go" `/func viewRecord/` `/STOP/`}} <p> This is simpler than the original version, but the <a @@ -302,12 +217,7 @@ To fix this we can implement the <code>http.Handler</code> interface's <code>ServeHTTP</code> method on <code>appHandler</code>: </p> -<pre><!--{{code "progs/error3.go" `/ServeHTTP/` `/STOP/`}} --->func (fn appHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { - if err := fn(w, r); err != nil { - http.Error(w, err.Error(), 500) - } -}</pre> +{{code "/doc/progs/error3.go" `/ServeHTTP/` `/STOP/`}} <p> The <code>ServeHTTP</code> method calls the <code>appHandler</code> function @@ -323,10 +233,7 @@ Now when registering <code>viewRecord</code> with the http package we use the <code>http.HandlerFunc</code>). </p> -<pre><!--{{code "progs/error3.go" `/func init/` `/STOP/`}} --->func init() { - http.Handle("/view", appHandler(viewRecord)) -}</pre> +{{code "/doc/progs/error3.go" `/func init/` `/STOP/`}} <p> With this basic error handling infrastructure in place, we can make it more @@ -341,24 +248,19 @@ To do this we create an <code>appError</code> struct containing an <code>error</code> and some other fields: </p> -<pre><!--{{code "progs/error4.go" `/type appError/` `/STOP/`}} --->type appError struct { - Error error - Message string - Code int -}</pre> +{{code "/doc/progs/error4.go" `/type appError/` `/STOP/`}} <p> Next we modify the appHandler type to return <code>*appError</code> values: </p> -<pre><!--{{code "progs/error4.go" `/type appHandler/`}} --->type appHandler func(http.ResponseWriter, *http.Request) *appError</pre> +{{code "/doc/progs/error4.go" `/type appHandler/`}} <p> (It's usually a mistake to pass back the concrete type of an error rather than -<code>error</code>, for reasons to be discussed in another article, but -it's the right thing to do here because <code>ServeHTTP</code> is the only +<code>error</code>, +for reasons discussed in <a href="/doc/go_faq.html#nil_error">the Go FAQ</a>, +but it's the right thing to do here because <code>ServeHTTP</code> is the only place that sees the value and uses its contents.) </p> @@ -369,33 +271,14 @@ status <code>Code</code> and log the full <code>Error</code> to the developer console: </p> -<pre><!--{{code "progs/error4.go" `/ServeHTTP/` `/STOP/`}} --->func (fn appHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { - if e := fn(w, r); e != nil { // e is *appError, not os.Error. - c := appengine.NewContext(r) - c.Errorf("%v", e.Error) - http.Error(w, e.Message, e.Code) - } -}</pre> +{{code "/doc/progs/error4.go" `/ServeHTTP/` `/STOP/`}} <p> Finally, we update <code>viewRecord</code> to the new function signature and have it return more context when it encounters an error: </p> -<pre><!--{{code "progs/error4.go" `/func viewRecord/` `/STOP/`}} --->func viewRecord(w http.ResponseWriter, r *http.Request) *appError { - c := appengine.NewContext(r) - key := datastore.NewKey(c, "Record", r.FormValue("id"), 0, nil) - record := new(Record) - if err := datastore.Get(c, key, record); err != nil { - return &appError{err, "Record not found", 404} - } - if err := viewTemplate.Execute(w, record); err != nil { - return &appError{err, "Can't display record", 500} - } - return nil -}</pre> +{{code "/doc/progs/error4.go" `/func viewRecord/` `/STOP/`}} <p> This version of <code>viewRecord</code> is the same length as the original, but diff --git a/doc/articles/error_handling.tmpl b/doc/articles/error_handling.tmpl deleted file mode 100644 index 56b7fb309..000000000 --- a/doc/articles/error_handling.tmpl +++ /dev/null @@ -1,314 +0,0 @@ -<!--{ - "Title": "Error Handling and Go" -}--> -{{donotedit}} -<p> -If you have written any Go code you have probably encountered the built-in -<code>error</code> type. Go code uses <code>error</code> values to -indicate an abnormal state. For example, the <code>os.Open</code> function -returns a non-nil <code>error</code> value when it fails to open a file. -</p> - -{{code "progs/error.go" `/func Open/`}} - -<p> -The following code uses <code>os.Open</code> to open a file. If an error -occurs it calls <code>log.Fatal</code> to print the error message and stop. -</p> - -{{code "progs/error.go" `/func openFile/` `/STOP/`}} - -<p> -You can get a lot done in Go knowing just this about the <code>error</code> -type, but in this article we'll take a closer look at <code>error</code> and -discuss some good practices for error handling in Go. -</p> - -<p> -<b>The error type</b> -</p> - -<p> -The <code>error</code> type is an interface type. An <code>error</code> -variable represents any value that can describe itself as a string. Here is the -interface's declaration: -</p> - -<pre>type error interface { - Error() string -}</pre> - -<p> -The <code>error</code> type, as with all built in types, is -<a href="/doc/go_spec.html#Predeclared_identifiers">predeclared</a> in the -<a href="/doc/go_spec.html#Blocks">universe block</a>. -</p> - -<p> -The most commonly-used <code>error</code> implementation is the -<a href="/pkg/errors/">errors</a> package's unexported <code>errorString</code> type. -</p> - -{{code "progs/error.go" `/errorString/` `/STOP/`}} - -<p> -You can construct one of these values with the <code>errors.New</code> -function. It takes a string that it converts to an <code>errors.errorString</code> -and returns as an <code>error</code> value. -</p> - -{{code "progs/error.go" `/New/` `/STOP/`}} - -<p> -Here's how you might use <code>errors.New</code>: -</p> - -{{code "progs/error.go" `/func Sqrt/` `/STOP/`}} - -<p> -A caller passing a negative argument to <code>Sqrt</code> receives a non-nil -<code>error</code> value (whose concrete representation is an -<code>errors.errorString</code> value). The caller can access the error string -("math: square root of...") by calling the <code>error</code>'s -<code>Error</code> method, or by just printing it: -</p> - -{{code "progs/error.go" `/func printErr/` `/STOP/`}} - -<p> -The <a href="/pkg/fmt/">fmt</a> package formats an <code>error</code> value -by calling its <code>Error() string</code> method. -</p> - -<p> -It is the error implementation's responsibility to summarize the context. -The error returned by <code>os.Open</code> formats as "open /etc/passwd: -permission denied," not just "permission denied." The error returned by our -<code>Sqrt</code> is missing information about the invalid argument. -</p> - -<p> -To add that information, a useful function is the <code>fmt</code> package's -<code>Errorf</code>. It formats a string according to <code>Printf</code>'s -rules and returns it as an <code>error</code> created by -<code>errors.New</code>. -</p> - -{{code "progs/error.go" `/fmtError/` `/STOP/`}} - -<p> -In many cases <code>fmt.Errorf</code> is good enough, but since -<code>error</code> is an interface, you can use arbitrary data structures as -error values, to allow callers to inspect the details of the error. -</p> - -<p> -For instance, our hypothetical callers might want to recover the invalid -argument passed to <code>Sqrt</code>. We can enable that by defining a new -error implementation instead of using <code>errors.errorString</code>: -</p> - -{{code "progs/error.go" `/type NegativeSqrtError/` `/STOP/`}} - -<p> -A sophisticated caller can then use a -<a href="/doc/go_spec.html#Type_assertions">type assertion</a> to check for a -<code>NegativeSqrtError</code> and handle it specially, while callers that just -pass the error to <code>fmt.Println</code> or <code>log.Fatal</code> will see -no change in behavior. -</p> - -<p> -As another example, the <a href="/pkg/encoding/json/">json</a> package specifies a -<code>SyntaxError</code> type that the <code>json.Decode</code> function -returns when it encounters a syntax error parsing a JSON blob. -</p> - -{{code "progs/error.go" `/type SyntaxError/` `/STOP/`}} - -<p> -The <code>Offset</code> field isn't even shown in the default formatting of the -error, but callers can use it to add file and line information to their error -messages: -</p> - -{{code "progs/error.go" `/func decodeError/` `/STOP/`}} - -<p> -(This is a slightly simplified version of some -<a href="http://camlistore.org/code/?p=camlistore.git;a=blob;f=lib/go/camli/jsonconfig/eval.go#l68">actual code</a> -from the <a href="http://camlistore.org">Camlistore</a> project.) -</p> - -<p> -The <code>error</code> interface requires only a <code>Error</code> method; -specific error implementations might have additional methods. For instance, the -<a href="/pkg/net/">net</a> package returns errors of type -<code>error</code>, following the usual convention, but some of the error -implementations have additional methods defined by the <code>net.Error</code> -interface: -</p> - -<pre>package net - -type Error interface { - error - Timeout() bool // Is the error a timeout? - Temporary() bool // Is the error temporary? -}</pre> - -<p> -Client code can test for a <code>net.Error</code> with a type assertion and -then distinguish transient network errors from permanent ones. For instance, a -web crawler might sleep and retry when it encounters a temporary error and give -up otherwise. -</p> - -{{code "progs/error.go" `/func netError/` `/STOP/`}} - -<p> -<b>Simplifying repetitive error handling</b> -</p> - -<p> -In Go, error handling is important. The language's design and conventions -encourage you to explicitly check for errors where they occur (as distinct from -the convention in other languages of throwing exceptions and sometimes catching -them). In some cases this makes Go code verbose, but fortunately there are some -techniques you can use to minimize repetitive error handling. -</p> - -<p> -Consider an <a href="http://code.google.com/appengine/docs/go/">App Engine</a> -application with an HTTP handler that retrieves a record from the datastore and -formats it with a template. -</p> - -{{code "progs/error2.go" `/func init/` `/STOP/`}} - -<p> -This function handles errors returned by the <code>datastore.Get</code> -function and <code>viewTemplate</code>'s <code>Execute</code> method. In both -cases, it presents a simple error message to the user with the HTTP status code -500 ("Internal Server Error"). This looks like a manageable amount of code, but -add some more HTTP handlers and you quickly end up with many copies of -identical error handling code. -</p> - -<p> -To reduce the repetition we can define our own HTTP <code>appHandler</code> -type that includes an <code>error</code> return value: -</p> - -{{code "progs/error3.go" `/type appHandler/`}} - -<p> -Then we can change our <code>viewRecord</code> function to return errors: -</p> - -{{code "progs/error3.go" `/func viewRecord/` `/STOP/`}} - -<p> -This is simpler than the original version, but the <a -href="/pkg/net/http/">http</a> package doesn't understand functions that return -<code>error</code>. -To fix this we can implement the <code>http.Handler</code> interface's -<code>ServeHTTP</code> method on <code>appHandler</code>: -</p> - -{{code "progs/error3.go" `/ServeHTTP/` `/STOP/`}} - -<p> -The <code>ServeHTTP</code> method calls the <code>appHandler</code> function -and displays the returned error (if any) to the user. Notice that the method's -receiver, <code>fn</code>, is a function. (Go can do that!) The method invokes -the function by calling the receiver in the expression <code>fn(w, r)</code>. -</p> - -<p> -Now when registering <code>viewRecord</code> with the http package we use the -<code>Handle</code> function (instead of <code>HandleFunc</code>) as -<code>appHandler</code> is an <code>http.Handler</code> (not an -<code>http.HandlerFunc</code>). -</p> - -{{code "progs/error3.go" `/func init/` `/STOP/`}} - -<p> -With this basic error handling infrastructure in place, we can make it more -user friendly. Rather than just displaying the error string, it would be better -to give the user a simple error message with an appropriate HTTP status code, -while logging the full error to the App Engine developer console for debugging -purposes. -</p> - -<p> -To do this we create an <code>appError</code> struct containing an -<code>error</code> and some other fields: -</p> - -{{code "progs/error4.go" `/type appError/` `/STOP/`}} - -<p> -Next we modify the appHandler type to return <code>*appError</code> values: -</p> - -{{code "progs/error4.go" `/type appHandler/`}} - -<p> -(It's usually a mistake to pass back the concrete type of an error rather than -<code>error</code>, for reasons to be discussed in another article, but -it's the right thing to do here because <code>ServeHTTP</code> is the only -place that sees the value and uses its contents.) -</p> - -<p> -And make <code>appHandler</code>'s <code>ServeHTTP</code> method display the -<code>appError</code>'s <code>Message</code> to the user with the correct HTTP -status <code>Code</code> and log the full <code>Error</code> to the developer -console: -</p> - -{{code "progs/error4.go" `/ServeHTTP/` `/STOP/`}} - -<p> -Finally, we update <code>viewRecord</code> to the new function signature and -have it return more context when it encounters an error: -</p> - -{{code "progs/error4.go" `/func viewRecord/` `/STOP/`}} - -<p> -This version of <code>viewRecord</code> is the same length as the original, but -now each of those lines has specific meaning and we are providing a friendlier -user experience. -</p> - -<p> -It doesn't end there; we can further improve the error handling in our -application. Some ideas: -</p> - -<ul> -<li>give the error handler a pretty HTML template, -<li>make debugging easier by writing the stack trace to the HTTP response when -the user is an administrator, -<li>write a constructor function for <code>appError</code> that stores the -stack trace for easier debugging, -<li>recover from panics inside the <code>appHandler</code>, logging the error -to the console as "Critical," while telling the user "a serious error -has occurred." This is a nice touch to avoid exposing the user to inscrutable -error messages caused by programming errors. -See the <a href="defer_panic_recover.html">Defer, Panic, and Recover</a> -article for more details. -</ul> - -<p> -<b>Conclusion</b> -</p> - -<p> -Proper error handling is an essential requirement of good software. By -employing the techniques described in this post you should be able to write -more reliable and succinct Go code. -</p> diff --git a/doc/articles/go_command.html b/doc/articles/go_command.html new file mode 100644 index 000000000..1e9e70fd8 --- /dev/null +++ b/doc/articles/go_command.html @@ -0,0 +1,265 @@ +<!--{ + "title": "About the go command" +}--> + +<p>The Go distribution includes a command, named +"<code><a href="/cmd/go/">go</a></code>", that +automates the downloading, building, installation, and testing of Go packages +and commands. This document talks about why we wrote a new command, what it +is, what it's not, and how to use it.</p> + +<h2>Motivation</h2> + +<p>You might have seen early Go talks in which Rob Pike jokes that the idea +for Go arose while waiting for a large Google server to compile. That +really was the motivation for Go: to build a language that worked well +for building the large software that Google writes and runs. It was +clear from the start that such a language must provide a way to +express dependencies between code libraries clearly, hence the package +grouping and the explicit import blocks. It was also clear from the +start that you might want arbitrary syntax for describing the code +being imported; this is why import paths are string literals.</p> + +<p>An explicit goal for Go from the beginning was to be able to build Go +code using only the information found in the source itself, not +needing to write a makefile or one of the many modern replacements for +makefiles. If Go needed a configuration file to explain how to build +your program, then Go would have failed.</p> + +<p>At first, there was no Go compiler, and the initial development +focused on building one and then building libraries for it. For +expedience, we postponed the automation of building Go code by using +make and writing makefiles. When compiling a single package involved +multiple invocations of the Go compiler, we even used a program to +write the makefiles for us. You can find it if you dig through the +repository history.</p> + +<p>The purpose of the new go command is our return to this ideal, that Go +programs should compile without configuration or additional effort on +the part of the developer beyond writing the necessary import +statements.</p> + +<h2>Configuration versus convention</h2> + +<p>The way to achieve the simplicity of a configuration-free system is to +establish conventions. The system works only to the extent that those conventions +are followed. When we first launched Go, many people published packages that +had to be installed in certain places, under certain names, using certain build +tools, in order to be used. That's understandable: that's the way it works in +most other languages. Over the last few years we consistently reminded people +about the <code>goinstall</code> command +(now replaced by <a href="/cmd/go/#Download_and_install_packages_and_dependencies"><code>go get</code></a>) +and its conventions: first, that the import path is derived in a known way from +the URL of the source code; second, that that the place to store the sources in +the local file system is derived in a known way from the import path; third, +that each directory in a source tree corresponds to a single package; and +fourth, that the package is built using only information in the source code. +Today, the vast majority of packages follow these conventions. +The Go ecosystem is simpler and more powerful as a result.</p> + +<p>We received many requests to allow a makefile in a package directory to +provide just a little extra configuration beyond what's in the source code. +But that would have introduced new rules. Because we did not accede to such +requests, we were able to write the go command and eliminate our use of make +or any other build system.</p> + +<p>It is important to understand that the go command is not a general +build tool. It cannot be configured and it does not attempt to build +anything but Go packages. These are important simplifying +assumptions: they simplify not only the implementation but also, more +important, the use of the tool itself.</p> + +<h2>Go's conventions</h2> + +<p>The <code>go</code> command requires that code adheres to a few key, +well-established conventions.</p> + +<p>First, the import path is derived in an known way from the URL of the +source code. For Bitbucket, GitHub, Google Code, and Launchpad, the +root directory of the repository is identified by the repository's +main URL, without the <code>http://</code> prefix. Subdirectories are named by +adding to that path. For example, the supplemental networking +libraries for Go are obtained by running</p> + +<pre> +hg clone http://code.google.com/p/go.net +</pre> + +<p>and thus the import path for the root directory of that repository is +"<code>code.google.com/p/go.net</code>". The websocket package is stored in a +subdirectory, so its import path is +"<code>code.google.com/p/go.net/websocket</code>".</p> + +<p>These paths are on the long side, but in exchange we get an +automatically managed name space for import paths and the ability for +a tool like the go command to look at an unfamiliar import path and +deduce where to obtain the source code.</p> + +<p>Second, the place to store sources in the local file system is derived +in a known way from the import path. Specifically, the first choice +is <code>$GOPATH/src/<import-path></code>. If <code>$GOPATH</code> is +unset, the go command will fall back to storing source code alongside the +standard Go packages, in <code>$GOROOT/src/pkg/<import-path></code>. +If <code>$GOPATH</code> is set to a list of paths, the go command tries +<code><dir>/src/<import-path></code> for each of the directories in +that list.</p> + +<p>Each of those trees contains, by convention, a top-level directory named +"<code>bin</code>", for holding compiled executables, and a top-level directory +named "<code>pkg</code>", for holding compiled packages that can be imported, +and the "<code>src</code>" directory, for holding package source files. +Imposing this structure lets us keep each of these directory trees +self-contained: the compiled form and the sources are always near each +other.</p> + +<p>These naming conventions also let us work in the reverse direction, +from a directory name to its import path. This mapping is important +for many of the go command's subcommands, as we'll see below.</p> + +<p>Third, each directory in a source tree corresponds to a single +package. By restricting a directory to a single package, we don't have +to create hybrid import paths that specify first the directory and +then the package within that directory. Also, most file management +tools and UIs work on directories as fundamental units. Tying the +fundamental Go unit—the package—to file system structure means +that file system tools become Go package tools. Copying, moving, or +deleting a package corresponds to copying, moving, or deleting a +directory.</p> + +<p>Fourth, each package is built using only the information present in +the source files. This makes it much more likely that the tool will +be able to adapt to changing build environments and conditions. For +example, if we allowed extra configuration such as compiler flags or +command line recipes, then that configuration would need to be updated +each time the build tools changed; it would also be inherently tied +to the use of a specific tool chain.</p> + +<h2>Getting started with the go command</h2> + +<p>Finally, a quick tour of how to use the go command, to supplement +the information in <a href="/doc/code.html">How to Write Go Code</a>, +which you might want to read first. Assuming you want +to keep your source code separate from the Go distribution source +tree, the first step is to set <code>$GOPATH</code>, the one piece of global +configuration that the go command needs. The <code>$GOPATH</code> can be a +list of directories, but by far the most common usage should be to set it to a +single directory. In particular, you do not need a separate entry in +<code>$GOPATH</code> for each of your projects. One <code>$GOPATH</code> can +support many projects.</p> + +<p>Here’s an example. Let’s say we decide to keep our Go code in the directory +<code>$HOME/mygo</code>. We need to create that directory and set +<code>$GOPATH</code> accordingly.</p> + +<pre> +$ mkdir $HOME/mygo +$ export GOPATH=$HOME/mygo +$ +</pre> + +<p>Into this directory, we now add some source code. Suppose we want to use +the indexing library from the codesearch project along with a left-leaning +red-black tree. We can install both with the "<code>go get</code>" +subcommand:</p> + +<pre> +$ go get code.google.com/p/codesearch/index +$ go get github.com/petar/GoLLRB/llrb +$ +</pre> + +<p>Both of these projects are now downloaded and installed into our +<code>$GOPATH</code> directory. The one tree now contains the two directories +<code>src/code.google.com/p/codesearch/index/</code> and +<code>src/github.com/petar/GoLLRB/llrb/</code>, along with the compiled +packages (in <code>pkg/</code>) for those libraries and their dependencies.</p> + +<p>Because we used version control systems (Mercurial and Git) to check +out the sources, the source tree also contains the other files in the +corresponding repositories, such as related packages. The "<code>go list</code>" +subcommand lists the import paths corresponding to its arguments, and +the pattern "<code>./...</code>" means start in the current directory +("<code>./</code>") and find all packages below that directory +("<code>...</code>"):</p> + +<pre> +$ go list ./... +code.google.com/p/codesearch/cmd/cgrep +code.google.com/p/codesearch/cmd/cindex +code.google.com/p/codesearch/cmd/csearch +code.google.com/p/codesearch/index +code.google.com/p/codesearch/regexp +code.google.com/p/codesearch/sparse +github.com/petar/GoLLRB/example +github.com/petar/GoLLRB/llrb +$ +</pre> + +<p>We can also test those packages:</p> + +<pre> +$ go test ./... +? code.google.com/p/codesearch/cmd/cgrep [no test files] +? code.google.com/p/codesearch/cmd/cindex [no test files] +? code.google.com/p/codesearch/cmd/csearch [no test files] +ok code.google.com/p/codesearch/index 0.239s +ok code.google.com/p/codesearch/regexp 0.021s +? code.google.com/p/codesearch/sparse [no test files] +? github.com/petar/GoLLRB/example [no test files] +ok github.com/petar/GoLLRB/llrb 0.231s +$ +</pre> + +<p>If a go subcommand is invoked with no paths listed, it operates on the +current directory:</p> + +<pre> +$ cd $GOPATH/src/code.google.com/p/codesearch/regexp +$ go list +code.google.com/p/codesearch/regexp +$ go test -v +=== RUN TestNstateEnc +--- PASS: TestNstateEnc (0.00 seconds) +=== RUN TestMatch +--- PASS: TestMatch (0.01 seconds) +=== RUN TestGrep +--- PASS: TestGrep (0.00 seconds) +PASS +ok code.google.com/p/codesearch/regexp 0.021s +$ go install +$ +</pre> + +<p>That "<code>go install</code>" subcommand installs the latest copy of the +package into the pkg directory. Because the go command can analyze the +dependency graph, "<code>go install</code>" also installs any packages that +this package imports but that are out of date, recursively.</p> + +<p>Notice that "<code>go install</code>" was able to determine the name of the +import path for the package in the current directory, because of the convention +for directory naming. It would be a little more convenient if we could pick +the name of the directory where we kept source code, and we probably wouldn't +pick such a long name, but that ability would require additional configuration +and complexity in the tool. Typing an extra directory name or two is a small +price to pay for the increased simplicity and power.</p> + +<p>As the example shows, it’s fine to work with packages from many different +projects at once within a single <code>$GOPATH</code> root directory.</p> + +<h2>Limitations</h2> + +<p>As mentioned above, the go command is not a general-purpose build +tool. In particular, it does not have any facility for generating Go +source files during a build. Instead, if you want to use a tool like +yacc or the protocol buffer compiler, you will need to write a +makefile (or a configuration file for the build tool of your choice) +to generate the Go files and then check those generated source files +into your repository. This is more work for you, the package author, +but it is significantly less work for your users, who can use +"<code>go get</code>" without needing to obtain and build +any additional tools.</p> + +<h2>More information</h2> + +<p>For more information, read <a href="/doc/code.html">How to Write Go Code</a> +and see the <a href="/cmd/go/">go command documentation</a>.</p> diff --git a/doc/articles/gobs_of_data.html b/doc/articles/gobs_of_data.html new file mode 100644 index 000000000..6b836b2c3 --- /dev/null +++ b/doc/articles/gobs_of_data.html @@ -0,0 +1,315 @@ +<!--{ +"Title": "Gobs of data", +"Template": true +}--> + +<p> +To transmit a data structure across a network or to store it in a file, it must +be encoded and then decoded again. There are many encodings available, of +course: <a href="http://www.json.org/">JSON</a>, +<a href="http://www.w3.org/XML/">XML</a>, Google's +<a href="http://code.google.com/p/protobuf">protocol buffers</a>, and more. +And now there's another, provided by Go's <a href="/pkg/encoding/gob/">gob</a> +package. +</p> + +<p> +Why define a new encoding? It's a lot of work and redundant at that. Why not +just use one of the existing formats? Well, for one thing, we do! Go has +<a href="/pkg/">packages</a> supporting all the encodings just mentioned (the +<a href="http://code.google.com/p/goprotobuf">protocol buffer package</a> is in +a separate repository but it's one of the most frequently downloaded). And for +many purposes, including communicating with tools and systems written in other +languages, they're the right choice. +</p> + +<p> +But for a Go-specific environment, such as communicating between two servers +written in Go, there's an opportunity to build something much easier to use and +possibly more efficient. +</p> + +<p> +Gobs work with the language in a way that an externally-defined, +language-independent encoding cannot. At the same time, there are lessons to be +learned from the existing systems. +</p> + +<p> +<b>Goals</b> +</p> + +<p> +The gob package was designed with a number of goals in mind. +</p> + +<p> +First, and most obvious, it had to be very easy to use. First, because Go has +reflection, there is no need for a separate interface definition language or +"protocol compiler". The data structure itself is all the package should need +to figure out how to encode and decode it. On the other hand, this approach +means that gobs will never work as well with other languages, but that's OK: +gobs are unashamedly Go-centric. +</p> + +<p> +Efficiency is also important. Textual representations, exemplified by XML and +JSON, are too slow to put at the center of an efficient communications network. +A binary encoding is necessary. +</p> + +<p> +Gob streams must be self-describing. Each gob stream, read from the beginning, +contains sufficient information that the entire stream can be parsed by an +agent that knows nothing a priori about its contents. This property means that +you will always be able to decode a gob stream stored in a file, even long +after you've forgotten what data it represents. +</p> + +<p> +There were also some things to learn from our experiences with Google protocol +buffers. +</p> + +<p> +<b>Protocol buffer misfeatures</b> +</p> + +<p> +Protocol buffers had a major effect on the design of gobs, but have three +features that were deliberately avoided. (Leaving aside the property that +protocol buffers aren't self-describing: if you don't know the data definition +used to encode a protocol buffer, you might not be able to parse it.) +</p> + +<p> +First, protocol buffers only work on the data type we call a struct in Go. You +can't encode an integer or array at the top level, only a struct with fields +inside it. That seems a pointless restriction, at least in Go. If all you want +to send is an array of integers, why should you have to put it into a +struct first? +</p> + +<p> +Next, a protocol buffer definition may specify that fields <code>T.x</code> and +<code>T.y</code> are required to be present whenever a value of type +<code>T</code> is encoded or decoded. Although such required fields may seem +like a good idea, they are costly to implement because the codec must maintain a +separate data structure while encoding and decoding, to be able to report when +required fields are missing. They're also a maintenance problem. Over time, one +may want to modify the data definition to remove a required field, but that may +cause existing clients of the data to crash. It's better not to have them in the +encoding at all. (Protocol buffers also have optional fields. But if we don't +have required fields, all fields are optional and that's that. There will be +more to say about optional fields a little later.) +</p> + +<p> +The third protocol buffer misfeature is default values. If a protocol buffer +omits the value for a "defaulted" field, then the decoded structure behaves as +if the field were set to that value. This idea works nicely when you have +getter and setter methods to control access to the field, but is harder to +handle cleanly when the container is just a plain idiomatic struct. Required +fields are also tricky to implement: where does one define the default values, +what types do they have (is text UTF-8? uninterpreted bytes? how many bits in a +float?) and despite the apparent simplicity, there were a number of +complications in their design and implementation for protocol buffers. We +decided to leave them out of gobs and fall back to Go's trivial but effective +defaulting rule: unless you set something otherwise, it has the "zero value" +for that type - and it doesn't need to be transmitted. +</p> + +<p> +So gobs end up looking like a sort of generalized, simplified protocol buffer. +How do they work? +</p> + +<p> +<b>Values</b> +</p> + +<p> +The encoded gob data isn't about <code>int8</code>s and <code>uint16</code>s. +Instead, somewhat analogous to constants in Go, its integer values are abstract, +sizeless numbers, either signed or unsigned. When you encode an +<code>int8</code>, its value is transmitted as an unsized, variable-length +integer. When you encode an <code>int64</code>, its value is also transmitted as +an unsized, variable-length integer. (Signed and unsigned are treated +distinctly, but the same unsized-ness applies to unsigned values too.) If both +have the value 7, the bits sent on the wire will be identical. When the receiver +decodes that value, it puts it into the receiver's variable, which may be of +arbitrary integer type. Thus an encoder may send a 7 that came from an +<code>int8</code>, but the receiver may store it in an <code>int64</code>. This +is fine: the value is an integer and as a long as it fits, everything works. (If +it doesn't fit, an error results.) This decoupling from the size of the variable +gives some flexibility to the encoding: we can expand the type of the integer +variable as the software evolves, but still be able to decode old data. +</p> + +<p> +This flexibility also applies to pointers. Before transmission, all pointers are +flattened. Values of type <code>int8</code>, <code>*int8</code>, +<code>**int8</code>, <code>****int8</code>, etc. are all transmitted as an +integer value, which may then be stored in <code>int</code> of any size, or +<code>*int</code>, or <code>******int</code>, etc. Again, this allows for +flexibility. +</p> + +<p> +Flexibility also happens because, when decoding a struct, only those fields +that are sent by the encoder are stored in the destination. Given the value +</p> + +{{code "/doc/progs/gobs1.go" `/type T/` `/STOP/`}} + +<p> +the encoding of <code>t</code> sends only the 7 and 8. Because it's zero, the +value of <code>Y</code> isn't even sent; there's no need to send a zero value. +</p> + +<p> +The receiver could instead decode the value into this structure: +</p> + +{{code "/doc/progs/gobs1.go" `/type U/` `/STOP/`}} + +<p> +and acquire a value of <code>u</code> with only <code>X</code> set (to the +address of an <code>int8</code> variable set to 7); the <code>Z</code> field is +ignored - where would you put it? When decoding structs, fields are matched by +name and compatible type, and only fields that exist in both are affected. This +simple approach finesses the "optional field" problem: as the type +<code>T</code> evolves by adding fields, out of date receivers will still +function with the part of the type they recognize. Thus gobs provide the +important result of optional fields - extensibility - without any additional +mechanism or notation. +</p> + +<p> +From integers we can build all the other types: bytes, strings, arrays, slices, +maps, even floats. Floating-point values are represented by their IEEE 754 +floating-point bit pattern, stored as an integer, which works fine as long as +you know their type, which we always do. By the way, that integer is sent in +byte-reversed order because common values of floating-point numbers, such as +small integers, have a lot of zeros at the low end that we can avoid +transmitting. +</p> + +<p> +One nice feature of gobs that Go makes possible is that they allow you to define +your own encoding by having your type satisfy the +<a href="/pkg/encoding/gob/#GobEncoder">GobEncoder</a> and +<a href="/pkg/encoding/gob/#GobDecoder">GobDecoder</a> interfaces, in a manner +analogous to the <a href="/pkg/encoding/json/">JSON</a> package's +<a href="/pkg/encoding/json/#Marshaler">Marshaler</a> and +<a href="/pkg/encoding/json/#Unmarshaler">Unmarshaler</a> and also to the +<a href="/pkg/fmt/#Stringer">Stringer</a> interface from +<a href="/pkg/fmt/">package fmt</a>. This facility makes it possible to +represent special features, enforce constraints, or hide secrets when you +transmit data. See the <a href="/pkg/encoding/gob/">documentation</a> for +details. +</p> + +<p> +<b>Types on the wire</b> +</p> + +<p> +The first time you send a given type, the gob package includes in the data +stream a description of that type. In fact, what happens is that the encoder is +used to encode, in the standard gob encoding format, an internal struct that +describes the type and gives it a unique number. (Basic types, plus the layout +of the type description structure, are predefined by the software for +bootstrapping.) After the type is described, it can be referenced by its type +number. +</p> + +<p> +Thus when we send our first type <code>T</code>, the gob encoder sends a +description of <code>T</code> and tags it with a type number, say 127. All +values, including the first, are then prefixed by that number, so a stream of +<code>T</code> values looks like: +</p> + +<pre> +("define type id" 127, definition of type T)(127, T value)(127, T value), ... +</pre> + +<p> +These type numbers make it possible to describe recursive types and send values +of those types. Thus gobs can encode types such as trees: +</p> + +{{code "/doc/progs/gobs1.go" `/type Node/` `/STOP/`}} + +<p> +(It's an exercise for the reader to discover how the zero-defaulting rule makes +this work, even though gobs don't represent pointers.) +</p> + +<p> +With the type information, a gob stream is fully self-describing except for the +set of bootstrap types, which is a well-defined starting point. +</p> + +<p> +<b>Compiling a machine</b> +</p> + +<p> +The first time you encode a value of a given type, the gob package builds a +little interpreted machine specific to that data type. It uses reflection on +the type to construct that machine, but once the machine is built it does not +depend on reflection. The machine uses package unsafe and some trickery to +convert the data into the encoded bytes at high speed. It could use reflection +and avoid unsafe, but would be significantly slower. (A similar high-speed +approach is taken by the protocol buffer support for Go, whose design was +influenced by the implementation of gobs.) Subsequent values of the same type +use the already-compiled machine, so they can be encoded right away. +</p> + +<p> +Decoding is similar but harder. When you decode a value, the gob package holds +a byte slice representing a value of a given encoder-defined type to decode, +plus a Go value into which to decode it. The gob package builds a machine for +that pair: the gob type sent on the wire crossed with the Go type provided for +decoding. Once that decoding machine is built, though, it's again a +reflectionless engine that uses unsafe methods to get maximum speed. +</p> + +<p> +<b>Use</b> +</p> + +<p> +There's a lot going on under the hood, but the result is an efficient, +easy-to-use encoding system for transmitting data. Here's a complete example +showing differing encoded and decoded types. Note how easy it is to send and +receive values; all you need to do is present values and variables to the +<a href="/pkg/encoding/gob/">gob package</a> and it does all the work. +</p> + +{{code "/doc/progs/gobs2.go" `/package main/` `$`}} + +<p> +You can compile and run this example code in the +<a href="http://play.golang.org/p/_-OJV-rwMq">Go Playground</a>. +</p> + +<p> +The <a href="/pkg/net/rpc/">rpc package</a> builds on gobs to turn this +encode/decode automation into transport for method calls across the network. +That's a subject for another article. +</p> + +<p> +<b>Details</b> +</p> + +<p> +The <a href="/pkg/encoding/gob/">gob package documentation</a>, especially the +file <a href="/src/pkg/encoding/gob/doc.go">doc.go</a>, expands on many of the +details described here and includes a full worked example showing how the +encoding represents data. If you are interested in the innards of the gob +implementation, that's a good place to start. +</p> diff --git a/doc/articles/godoc_documenting_go_code.html b/doc/articles/godoc_documenting_go_code.html new file mode 100644 index 000000000..ca66076ad --- /dev/null +++ b/doc/articles/godoc_documenting_go_code.html @@ -0,0 +1,139 @@ +<!--{ +"Title": "Godoc: documenting Go code", +"Template": true +}--> + +<p> +The Go project takes documentation seriously. Documentation is a huge part of +making software accessible and maintainable. Of course it must be well-written +and accurate, but it also must be easy to write and to maintain. Ideally, it +should be coupled to the code itself so the documentation evolves along with the +code. The easier it is for programmers to produce good documentation, the better +for everyone. +</p> + +<p> +To that end, we have developed the <a href="/cmd/godoc/">godoc</a> documentation +tool. This article describes godoc's approach to documentation, and explains how +you can use our conventions and tools to write good documentation for your own +projects. +</p> + +<p> +Godoc parses Go source code - including comments - and produces documentation as +HTML or plain text. The end result is documentation tightly coupled with the +code it documents. For example, through godoc's web interface you can navigate +from a function's <a href="/pkg/strings/#HasPrefix">documentation</a> to its +<a href="/src/pkg/strings/strings.go?#L312">implementation</a> with one click. +</p> + +<p> +Godoc is conceptually related to Python's +<a href="http://www.python.org/dev/peps/pep-0257/">Docstring</a> and Java's +<a href="http://www.oracle.com/technetwork/java/javase/documentation/index-jsp-135444.html">Javadoc</a>, +but its design is simpler. The comments read by godoc are not language +constructs (as with Docstring) nor must they have their own machine-readable +syntax (as with Javadoc). Godoc comments are just good comments, the sort you +would want to read even if godoc didn't exist. +</p> + +<p> +The convention is simple: to document a type, variable, constant, function, or +even a package, write a regular comment directly preceding its declaration, with +no intervening blank line. Godoc will then present that comment as text +alongside the item it documents. For example, this is the documentation for the +<code>fmt</code> package's <a href="/pkg/fmt/#Fprint"><code>Fprint</code></a> +function: +</p> + +{{code "/src/pkg/fmt/print.go" `/Fprint formats using the default/` `/func Fprint/`}} + +<p> +Notice this comment is a complete sentence that begins with the name of the +element it describes. This important convention allows us to generate +documentation in a variety of formats, from plain text to HTML to UNIX man +pages, and makes it read better when tools truncate it for brevity, such as when +they extract the first line or sentence. +</p> + +<p> +Comments on package declarations should provide general package documentation. +These comments can be short, like the <a href="/pkg/sort/"><code>sort</code></a> +package's brief description: +</p> + +{{code "/src/pkg/sort/sort.go" `/Package sort provides/` `/package sort/`}} + +<p> +They can also be detailed like the <a href="/pkg/encoding/gob/">gob package</a>'s +overview. That package uses another convention for packages +that need large amounts of introductory documentation: the package comment is +placed in its own file, <a href="/src/pkg/encoding/gob/doc.go">doc.go</a>, which +contains only those comments and a package clause. +</p> + +<p> +When writing package comments of any size, keep in mind that their first +sentence will appear in godoc's <a href="/pkg/">package list</a>. +</p> + +<p> +Comments that are not adjacent to a top-level declaration are omitted from +godoc's output, with one notable exception. Top-level comments that begin with +the word <code>"BUG(who)”</code> are recognized as known bugs, and included in +the "Bugs” section of the package documentation. The "who” part should be the +user name of someone who could provide more information. For example, this is a +known issue from the <a href="/pkg/bytes/#bugs">bytes package</a>: +</p> + +<pre> +// BUG(r): The rule Title uses for word boundaries does not handle Unicode punctuation properly. +</pre> + +<p> +Godoc treats executable commands somewhat differently. Instead of inspecting the +command source code, it looks for a Go source file belonging to the special +package "documentation”. The comment on the "package documentation” clause is +used as the command's documentation. For example, see the +<a href="/cmd/godoc/">godoc documentation</a> and its corresponding +<a href="/src/cmd/godoc/doc.go">doc.go</a> file. +</p> + +<p> +There are a few formatting rules that Godoc uses when converting comments to +HTML: +</p> + +<ul> +<li> +Subsequent lines of text are considered part of the same paragraph; you must +leave a blank line to separate paragraphs. +</li> +<li> +Pre-formatted text must be indented relative to the surrounding comment text +(see gob's <a href="/src/pkg/encoding/gob/doc.go">doc.go</a> for an example). +</li> +<li> +URLs will be converted to HTML links; no special markup is necessary. +</li> +</ul> + +<p> +Note that none of these rules requires you to do anything out of the ordinary. +</p> + +<p> +In fact, the best thing about godoc's minimal approach is how easy it is to use. +As a result, a lot of Go code, including all of the standard library, already +follows the conventions. +</p> + +<p> +Your own code can present good documentation just by having comments as +described above. Any Go packages installed inside <code>$GOROOT/src/pkg</code> +and any <code>GOPATH</code> work spaces will already be accessible via godoc's +command-line and HTTP interfaces, and you can specify additional paths for +indexing via the <code>-path</code> flag or just by running <code>"godoc ."</code> +in the source directory. See the <a href="/cmd/godoc/">godoc documentation</a> +for more details. +</p> diff --git a/doc/articles/gos_declaration_syntax.html b/doc/articles/gos_declaration_syntax.html new file mode 100644 index 000000000..455cced1d --- /dev/null +++ b/doc/articles/gos_declaration_syntax.html @@ -0,0 +1,348 @@ +<!--{ +"Title": "Go's Declaration Syntax" +}--> + +<p> +Newcomers to Go wonder why the declaration syntax is different from the +tradition established in the C family. In this post we'll compare the +two approaches and explain why Go's declarations look as they do. +</p> + +<p> +<b>C syntax</b> +</p> + +<p> +First, let's talk about C syntax. C took an unusual and clever approach +to declaration syntax. Instead of describing the types with special +syntax, one writes an expression involving the item being declared, and +states what type that expression will have. Thus +</p> + +<pre> +int x; +</pre> + +<p> +declares x to be an int: the expression 'x' will have type int. In +general, to figure out how to write the type of a new variable, write an +expression involving that variable that evaluates to a basic type, then +put the basic type on the left and the expression on the right. +</p> + +<p> +Thus, the declarations +</p> + +<pre> +int *p; +int a[3]; +</pre> + +<p> +state that p is a pointer to int because '*p' has type int, and that a +is an array of ints because a[3] (ignoring the particular index value, +which is punned to be the size of the array) has type int. +</p> + +<p> +What about functions? Originally, C's function declarations wrote the +types of the arguments outside the parens, like this: +</p> + +<pre> +int main(argc, argv) + int argc; + char *argv[]; +{ /* ... */ } +</pre> + +<p> +Again, we see that main is a function because the expression main(argc, +argv) returns an int. In modern notation we'd write +</p> + +<pre> +int main(int argc, char *argv[]) { /* ... */ } +</pre> + +<p> +but the basic structure is the same. +</p> + +<p> +This is a clever syntactic idea that works well for simple types but can +get confusing fast. The famous example is declaring a function pointer. +Follow the rules and you get this: +</p> + +<pre> +int (*fp)(int a, int b); +</pre> + +<p> +Here, fp is a pointer to a function because if you write the expression +(*fp)(a, b) you'll call a function that returns int. What if one of fp's +arguments is itself a function? +</p> + +<pre> +int (*fp)(int (*ff)(int x, int y), int b) +</pre> + +<p> +That's starting to get hard to read. +</p> + +<p> +Of course, we can leave out the name of the parameters when we declare a +function, so main can be declared +</p> + +<pre> +int main(int, char *[]) +</pre> + +<p> +Recall that argv is declared like this, +</p> + +<pre> +char *argv[] +</pre> + +<p> +so you drop the name from the <em>middle</em> of its declaration to construct +its type. It's not obvious, though, that you declare something of type +char *[] by putting its name in the middle. +</p> + +<p> +And look what happens to fp's declaration if you don't name the +parameters: +</p> + +<pre> +int (*fp)(int (*)(int, int), int) +</pre> + +<p> +Not only is it not obvious where to put the name inside +</p> + +<pre> +int (*)(int, int) +</pre> + +<p> +it's not exactly clear that it's a function pointer declaration at all. +And what if the return type is a function pointer? +</p> + +<pre> +int (*(*fp)(int (*)(int, int), int))(int, int) +</pre> + +<p> +It's hard even to see that this declaration is about fp. +</p> + +<p> +You can construct more elaborate examples but these should illustrate +some of the difficulties that C's declaration syntax can introduce. +</p> + +<p> +There's one more point that needs to be made, though. Because type and +declaration syntax are the same, it can be difficult to parse +expressions with types in the middle. This is why, for instance, C casts +always parenthesize the type, as in +</p> + +<pre> +(int)M_PI +</pre> + +<p> +<b>Go syntax</b> +</p> + +<p> +Languages outside the C family usually use a distinct type syntax in +declarations. Although it's a separate point, the name usually comes +first, often followed by a colon. Thus our examples above become +something like (in a fictional but illustrative language) +</p> + +<pre> +x: int +p: pointer to int +a: array[3] of int +</pre> + +<p> +These declarations are clear, if verbose - you just read them left to +right. Go takes its cue from here, but in the interests of brevity it +drops the colon and removes some of the keywords: +</p> + +<pre> +x int +p *int +a [3]int +</pre> + +<p> +There is no direct correspondence between the look of [3]int and how to +use a in an expression. (We'll come back to pointers in the next +section.) You gain clarity at the cost of a separate syntax. +</p> + +<p> +Now consider functions. Let's transcribe the declaration for main, even +though the main function in Go takes no arguments: +</p> + +<pre> +func main(argc int, argv *[]byte) int +</pre> + +<p> +Superficially that's not much different from C, but it reads well from +left to right: +</p> + +<p> +<em>function main takes an int and a pointer to a slice of bytes and returns an int.</em> +</p> + +<p> +Drop the parameter names and it's just as clear - they're always first +so there's no confusion. +</p> + +<pre> +func main(int, *[]byte) int +</pre> + +<p> +One value of this left-to-right style is how well it works as the types +become more complex. Here's a declaration of a function variable +(analogous to a function pointer in C): +</p> + +<pre> +f func(func(int,int) int, int) int +</pre> + +<p> +Or if f returns a function: +</p> + +<pre> +f func(func(int,int) int, int) func(int, int) int +</pre> + +<p> +It still reads clearly, from left to right, and it's always obvious +which name is being declared - the name comes first. +</p> + +<p> +The distinction between type and expression syntax makes it easy to +write and invoke closures in Go: +</p> + +<pre> +sum := func(a, b int) int { return a+b } (3, 4) +</pre> + +<p> +<b>Pointers</b> +</p> + +<p> +Pointers are the exception that proves the rule. Notice that in arrays +and slices, for instance, Go's type syntax puts the brackets on the left +of the type but the expression syntax puts them on the right of the +expression: +</p> + +<pre> +var a []int +x = a[1] +</pre> + +<p> +For familiarity, Go's pointers use the * notation from C, but we could +not bring ourselves to make a similar reversal for pointer types. Thus +pointers work like this +</p> + +<pre> +var p *int +x = *p +</pre> + +<p> +We couldn't say +</p> + +<pre> +var p *int +x = p* +</pre> + +<p> +because that postfix * would conflate with multiplication. We could have +used the Pascal ^, for example: +</p> + +<pre> +var p ^int +x = p^ +</pre> + +<p> +and perhaps we should have (and chosen another operator for xor), +because the prefix asterisk on both types and expressions complicates +things in a number of ways. For instance, although one can write +</p> + +<pre> +[]int("hi") +</pre> + +<p> +as a conversion, one must parenthesize the type if it starts with a *: +</p> + +<pre> +(*int)(nil) +</pre> + +<p> +Had we been willing to give up * as pointer syntax, those parentheses +would be unnecessary. +</p> + +<p> +So Go's pointer syntax is tied to the familiar C form, but those ties +mean that we cannot break completely from using parentheses to +disambiguate types and expressions in the grammar. +</p> + +<p> +Overall, though, we believe Go's type syntax is easier to understand +than C's, especially when things get complicated. +</p> + +<p> +<b>Notes</b> +</p> + +<p> +Go's declarations read left to right. It's been pointed out that C's +read in a spiral! See <a href="http://c-faq.com/decl/spiral.anderson.html"> +The "Clockwise/Spiral Rule"</a> by David Anderson. +</p> diff --git a/doc/articles/image-20.png b/doc/articles/image-20.png Binary files differnew file mode 100644 index 000000000..063e43064 --- /dev/null +++ b/doc/articles/image-20.png diff --git a/doc/articles/image-2a.png b/doc/articles/image-2a.png Binary files differnew file mode 100644 index 000000000..3f1c0afff --- /dev/null +++ b/doc/articles/image-2a.png diff --git a/doc/articles/image-2b.png b/doc/articles/image-2b.png Binary files differnew file mode 100644 index 000000000..32b247011 --- /dev/null +++ b/doc/articles/image-2b.png diff --git a/doc/articles/image-2c.png b/doc/articles/image-2c.png Binary files differnew file mode 100644 index 000000000..f9abce5b5 --- /dev/null +++ b/doc/articles/image-2c.png diff --git a/doc/articles/image-2d.png b/doc/articles/image-2d.png Binary files differnew file mode 100644 index 000000000..ed0a9f92c --- /dev/null +++ b/doc/articles/image-2d.png diff --git a/doc/articles/image-2e.png b/doc/articles/image-2e.png Binary files differnew file mode 100644 index 000000000..483b208e3 --- /dev/null +++ b/doc/articles/image-2e.png diff --git a/doc/articles/image-2f.png b/doc/articles/image-2f.png Binary files differnew file mode 100644 index 000000000..3dce02d5f --- /dev/null +++ b/doc/articles/image-2f.png diff --git a/doc/articles/image_draw.html b/doc/articles/image_draw.html new file mode 100644 index 000000000..848b65982 --- /dev/null +++ b/doc/articles/image_draw.html @@ -0,0 +1,222 @@ +<!--{ + "Title": "The Go image/draw package", + "Template": true +}--> + +<p> +<a href="http://golang.org/pkg/image/draw/">Package image/draw</a> defines +only one operation: drawing a source image onto a destination +image, through an optional mask image. This one operation is +surprisingly versatile and can perform a number of common image +manipulation tasks elegantly and efficiently. +</p> + +<p> +Composition is performed pixel by pixel in the style of the Plan 9 +graphics library and the X Render extension. The model is based on +the classic "Compositing Digital Images" paper by Porter and Duff, +with an additional mask parameter: <code>dst = (src IN mask) OP dst</code>. +For a fully opaque mask, this reduces to the original Porter-Duff +formula: <code>dst = src OP dst</code>. In Go, a nil mask image is equivalent +to an infinitely sized, fully opaque mask image. +</p> + +<p> +The Porter-Duff paper presented +<a href="http://www.w3.org/TR/SVGCompositing/examples/compop-porterduff-examples.png">12 different composition operators</a>, +but with an explicit mask, only 2 of these are needed in practice: +source-over-destination and source. In Go, these operators are +represented by the <code>Over</code> and <code>Src</code> constants. The <code>Over</code> operator +performs the natural layering of a source image over a destination +image: the change to the destination image is smaller where the +source (after masking) is more transparent (that is, has lower +alpha). The <code>Src</code> operator merely copies the source (after masking) +with no regard for the destination image's original content. For +fully opaque source and mask images, the two operators produce the +same output, but the <code>Src</code> operator is usually faster. +</p> + +<p><b>Geometric Alignment</b></p> + +<p> +Composition requires associating destination pixels with source and +mask pixels. Obviously, this requires destination, source and mask +images, and a composition operator, but it also requires specifying +what rectangle of each image to use. Not every drawing should write +to the entire destination: when updating an animating image, it is +more efficient to only draw the parts of the image that have +changed. Not every drawing should read from the entire source: when +using a sprite that combines many small images into one large one, +only a part of the image is needed. Not every drawing should read +from the entire mask: a mask image that collects a font's glyphs is +similar to a sprite. Thus, drawing also needs to know three +rectangles, one for each image. Since each rectangle has the same +width and height, it suffices to pass a destination rectangle `r` +and two points <code>sp</code> and <code>mp</code>: the source rectangle is equal to <code>r</code> +translated so that <code>r.Min</code> in the destination image aligns with +<code>sp</code> in the source image, and similarly for <code>mp</code>. The effective +rectangle is also clipped to each image's bounds in their +respective co-ordinate space. +</p> + +<p> +<img src="image-20.png"> +</p> + +<p> +The <a href="http://golang.org/pkg/image/draw/#DrawMask"><code>DrawMask</code></a> +function takes seven arguments, but an explicit mask and mask-point +are usually unnecessary, so the +<a href="http://golang.org/pkg/image/draw/#Draw"><code>Draw</code></a> function takes five: +</p> + +<pre> +// Draw calls DrawMask with a nil mask. +func Draw(dst Image, r image.Rectangle, src image.Image, sp image.Point, op Op) +func DrawMask(dst Image, r image.Rectangle, src image.Image, sp image.Point, + mask image.Image, mp image.Point, op Op) +</pre> + +<p> +The destination image must be mutable, so the image/draw package +defines a <a href="http://golang.org/pkg/image/draw/#Image"><code>draw.Image</code></a> +interface which has a <code>Set</code> method. +</p> + +{{code "../src/pkg/image/draw/draw.go" `/type Image/` `/}/`}} + +<p><b>Filling a Rectangle</b></p> + +<p> +To fill a rectangle with a solid color, use an <code>image.Uniform</code> +source. The <code>ColorImage</code> type re-interprets a <code>Color</code> as a +practically infinite-sized <code>Image</code> of that color. For those +familiar with the design of Plan 9's draw library, there is no need +for an explicit "repeat bit" in Go's slice-based image types; the +concept is subsumed by <code>Uniform</code>. +</p> + +{{code "/doc/progs/image_draw.go" `/ZERO/` `/STOP/`}} + +<p> +To initialize a new image to all-blue: +</p> + +{{code "/doc/progs/image_draw.go" `/BLUE/` `/STOP/`}} + +<p> +To reset an image to transparent (or black, if the destination +image's color model cannot represent transparency), use +<code>image.Transparent</code>, which is an <code>image.Uniform</code>: +</p> + +{{code "/doc/progs/image_draw.go" `/RESET/` `/STOP/`}} + +<p> +<img src="image-2a.png"> +</p> + + +<p><b>Copying an Image</b></p> + +<p> +To copy from a rectangle <code>sr</code> in the source image to a rectangle +starting at a point <code>dp</code> in the destination, convert the source +rectangle into the destination image's co-ordinate space: +</p> + +{{code "/doc/progs/image_draw.go" `/RECT/` `/STOP/`}} + +<p> +Alternatively: +</p> + +{{code "/doc/progs/image_draw.go" `/RECT2/` `/STOP/`}} + +<p> +To copy the entire source image, use <code>sr = src.Bounds()</code>. +</p> + +<p> +<img src="image-2b.png"> +</p> + +<p><b>Scrolling an Image</b></p> + +<p> +Scrolling an image is just copying an image to itself, with +different destination and source rectangles. Overlapping +destination and source images are perfectly valid, just as Go's +built-in copy function can handle overlapping destination and +source slices. To scroll an image m by 20 pixels: +</p> + +{{code "/doc/progs/image_draw.go" `/SCROLL/` `/STOP/`}} + +<p><img src="image-2c.png"></p> + +<p><b>Converting an Image to RGBA</b></p> + +<p> +The result of decoding an image format might not be an +<code>image.RGBA</code>: decoding a GIF results in an <code>image.Paletted</code>, +decoding a JPEG results in a <code>ycbcr.YCbCr</code>, and the result of +decoding a PNG depends on the image data. To convert any image to +an <code>image.RGBA</code>: +</p> + +{{code "/doc/progs/image_draw.go" `/CONV/` `/STOP/`}} + +<p> +<img src="image-2d.png"> +</p> + +<p><b>Drawing Through a Mask</b></p> + +<p> +To draw an image through a circular mask with center <code>p</code> and radius +<code>r</code>: +</p> + +{{code "/doc/progs/image_draw.go" `/CIRCLE/` `/STOP/`}} +{{code "/doc/progs/image_draw.go" `/CIRCLE2/` `/STOP/`}} + +<p> +<img src="image-2e.png"> +</p> + +<p><b>Drawing Font Glyphs</b></p> + +<p> +To draw a font glyph in blue starting from a point <code>p</code>, draw with +an <code>image.ColorImage</code> source and an <code>image.Alpha mask</code>. For +simplicity, we aren't performing any sub-pixel positioning or +rendering, or correcting for a font's height above a baseline. +</p> + +{{code "/doc/progs/image_draw.go" `/GLYPH/` `/STOP/`}} + +<p> +<img src="image-2f.png"> +</p> + +<p><b>Performance</b></p> + +<p> +The image/draw package implementation demonstrates how to provide +an image manipulation function that is both general purpose, yet +efficient for common cases. The <code>DrawMask</code> function takes arguments +of interface types, but immediately makes type assertions that its +arguments are of specific struct types, corresponding to common +operations like drawing one <code>image.RGBA</code> image onto another, or +drawing an <code>image.Alpha</code> mask (such as a font glyph) onto an +<code>image.RGBA</code> image. If a type assertion succeeds, that type +information is used to run a specialized implementation of the +general algorithm. If the assertions fail, the fallback code path +uses the generic <code>At</code> and <code>Set</code> methods. The fast-paths are purely +a performance optimization; the resultant destination image is the +same either way. In practice, only a small number of special cases +are necessary to support typical applications. +</p> + + diff --git a/doc/articles/json_and_go.html b/doc/articles/json_and_go.html new file mode 100644 index 000000000..af7776c0a --- /dev/null +++ b/doc/articles/json_and_go.html @@ -0,0 +1,356 @@ +<!--{ +"Title": "JSON and Go", +"Template": true +}--> + +<p> +JSON (JavaScript Object Notation) is a simple data interchange format. +Syntactically it resembles the objects and lists of JavaScript. It is most +commonly used for communication between web back-ends and JavaScript programs +running in the browser, but it is used in many other places, too. Its home page, +<a href="http://json.org">json.org</a>, provides a wonderfully clear and concise +definition of the standard. +</p> + +<p> +With the <a href="/pkg/encoding/json/">json package</a> it's a snap to read and +write JSON data from your Go programs. +</p> + +<p> +<b>Encoding</b> +</p> + +<p> +To encode JSON data we use the +<a href="/pkg/encoding/json/#Marshal"><code>Marshal</code></a> function. +</p> + +<pre> +func Marshal(v interface{}) ([]byte, error) +</pre> + +<p> +Given the Go data structure, <code>Message</code>, +</p> + +{{code "/doc/progs/json1.go" `/type Message/` `/STOP/`}} + +<p> +and an instance of <code>Message</code> +</p> + +{{code "/doc/progs/json1.go" `/m :=/`}} + +<p> +we can marshal a JSON-encoded version of m using <code>json.Marshal</code>: +</p> + +{{code "/doc/progs/json1.go" `/b, err :=/`}} + +<p> +If all is well, <code>err</code> will be <code>nil</code> and <code>b</code> +will be a <code>[]byte</code> containing this JSON data: +</p> + +<pre> +b == []byte(`{"Name":"Alice","Body":"Hello","Time":1294706395881547000}`) +</pre> + +<p> +Only data structures that can be represented as valid JSON will be encoded: +</p> + +<ul> +<li> +JSON objects only support strings as keys; to encode a Go map type it must be +of the form <code>map[string]T</code> (where <code>T</code> is any Go type +supported by the json package). +</li> +<li> +Channel, complex, and function types cannot be encoded. +</li> +<li> +Cyclic data structures are not supported; they will cause <code>Marshal</code> +to go into an infinite loop. +</li> +<li> +Pointers will be encoded as the values they point to (or 'null' if the pointer +is <code>nil</code>). +</li> +</ul> + +<p> +The json package only accesses the exported fields of struct types (those that +begin with an uppercase letter). Therefore only the the exported fields of a +struct will be present in the JSON output. +</p> + +<p> +<b>Decoding</b> +</p> + +<p> +To decode JSON data we use the +<a href="/pkg/encoding/json/#Unmarshal"><code>Unmarshal</code></a> function. +</p> + +<pre> +func Unmarshal(data []byte, v interface{}) error +</pre> + +<p> +We must first create a place where the decoded data will be stored +</p> + +{{code "/doc/progs/json1.go" `/var m Message/`}} + +<p> +and call <code>json.Unmarshal</code>, passing it a <code>[]byte</code> of JSON +data and a pointer to <code>m</code> +</p> + +{{code "/doc/progs/json1.go" `/err := json.Unmarshal/`}} + +<p> +If <code>b</code> contains valid JSON that fits in <code>m</code>, after the +call <code>err</code> will be <code>nil</code> and the data from <code>b</code> +will have been stored in the struct <code>m</code>, as if by an assignment +like: +</p> + +{{code "/doc/progs/json1.go" `/m = Message/` `/STOP/`}} + +<p> +How does <code>Unmarshal</code> identify the fields in which to store the +decoded data? For a given JSON key <code>"Foo"</code>, <code>Unmarshal</code> +will look through the destination struct's fields to find (in order of +preference): +</p> + +<ul> +<li> +An exported field with a tag of <code>"Foo"</code> (see the +<a href="/ref/spec#Struct_types">Go spec</a> for more on struct tags), +</li> +<li> +An exported field named <code>"Foo"</code>, or +</li> +<li> +An exported field named <code>"FOO"</code> or <code>"FoO"</code> or some other +case-insensitive match of <code>"Foo"</code>. +</li> +</ul> + +<p> +What happens when the structure of the JSON data doesn't exactly match the Go +type? +</p> + +{{code "/doc/progs/json1.go" `/"Food":"Pickle"/` `/STOP/`}} + +<p> +<code>Unmarshal</code> will decode only the fields that it can find in the +destination type. In this case, only the Name field of m will be populated, +and the Food field will be ignored. This behavior is particularly useful when +you wish to pick only a few specific fields out of a large JSON blob. It also +means that any unexported fields in the destination struct will be unaffected +by <code>Unmarshal</code>. +</p> + +<p> +But what if you don't know the structure of your JSON data beforehand? +</p> + +<p> +<b>Generic JSON with interface{}</b> +</p> + +<p> +The <code>interface{}</code> (empty interface) type describes an interface with +zero methods. Every Go type implements at least zero methods and therefore +satisfies the empty interface. +</p> + +<p> +The empty interface serves as a general container type: +</p> + +{{code "/doc/progs/json2.go" `/var i interface{}/` `/STOP/`}} + +<p> +A type assertion accesses the underlying concrete type: +</p> + +{{code "/doc/progs/json2.go" `/r := i/` `/STOP/`}} + +<p> +Or, if the underlying type is unknown, a type switch determines the type: +</p> + +{{code "/doc/progs/json2.go" `/switch v/` `/STOP/`}} + + +The json package uses <code>map[string]interface{}</code> and +<code>[]interface{}</code> values to store arbitrary JSON objects and arrays; +it will happily unmarshal any valid JSON blob into a plain +<code>interface{}</code> value. The default concrete Go types are: + +<ul> +<li> +<code>bool</code> for JSON booleans, +</li> +<li> +<code>float64</code> for JSON numbers, +</li> +<li> +<code>string</code> for JSON strings, and +</li> +<li> +<code>nil</code> for JSON null. +</li> +</ul> + +<p> +<b>Decoding arbitrary data</b> +</p> + +<p> +Consider this JSON data, stored in the variable <code>b</code>: +</p> + +{{code "/doc/progs/json3.go" `/b :=/`}} + +<p> +Without knowing this data's structure, we can decode it into an +<code>interface{}</code> value with <code>Unmarshal</code>: +</p> + +{{code "/doc/progs/json3.go" `/var f interface/` `/STOP/`}} + +<p> +At this point the Go value in <code>f</code> would be a map whose keys are +strings and whose values are themselves stored as empty interface values: +</p> + +{{code "/doc/progs/json3.go" `/f = map/` `/STOP/`}} + +<p> +To access this data we can use a type assertion to access <code>f</code>'s +underlying <code>map[string]interface{}</code>: +</p> + +{{code "/doc/progs/json3.go" `/m := f/`}} + +<p> +We can then iterate through the map with a range statement and use a type switch +to access its values as their concrete types: +</p> + +{{code "/doc/progs/json3.go" `/for k, v/` `/STOP/`}} + +<p> +In this way you can work with unknown JSON data while still enjoying the +benefits of type safety. +</p> + +<p> +<b>Reference Types</b> +</p> + +<p> +Let's define a Go type to contain the data from the previous example: +</p> + +{{code "/doc/progs/json4.go" `/type FamilyMember/` `/STOP/`}} + +{{code "/doc/progs/json4.go" `/var m FamilyMember/` `/STOP/`}} + +<p> +Unmarshaling that data into a <code>FamilyMember</code> value works as +expected, but if we look closely we can see a remarkable thing has happened. +With the var statement we allocated a <code>FamilyMember</code> struct, and +then provided a pointer to that value to <code>Unmarshal</code>, but at that +time the <code>Parents</code> field was a <code>nil</code> slice value. To +populate the <code>Parents</code> field, <code>Unmarshal</code> allocated a new +slice behind the scenes. This is typical of how <code>Unmarshal</code> works +with the supported reference types (pointers, slices, and maps). +</p> + +<p> +Consider unmarshaling into this data structure: +</p> + +<pre> +type Foo struct { + Bar *Bar +} +</pre> + +<p> +If there were a <code>Bar</code> field in the JSON object, +<code>Unmarshal</code> would allocate a new <code>Bar</code> and populate it. +If not, <code>Bar</code> would be left as a <code>nil</code> pointer. +</p> + +<p> +From this a useful pattern arises: if you have an application that receives a +few distinct message types, you might define "receiver" structure like +</p> + +<pre> +type IncomingMessage struct { + Cmd *Command + Msg *Message +} +</pre> + +<p> +and the sending party can populate the <code>Cmd</code> field and/or the +<code>Msg</code> field of the top-level JSON object, depending on the type of +message they want to communicate. <code>Unmarshal</code>, when decoding the +JSON into an <code>IncomingMessage</code> struct, will only allocate the data +structures present in the JSON data. To know which messages to process, the +programmer need simply test that either <code>Cmd</code> or <code>Msg</code> is +not <code>nil</code>. +</p> + +<p> +<b>Streaming Encoders and Decoders</b> +</p> + +<p> +The json package provides <code>Decoder</code> and <code>Encoder</code> types +to support the common operation of reading and writing streams of JSON data. +The <code>NewDecoder</code> and <code>NewEncoder</code> functions wrap the +<a href="/pkg/io/#Reader"><code>io.Reader</code></a> and +<a href="/pkg/io/#Writer"><code>io.Writer</code></a> interface types. +</p> + +<pre> +func NewDecoder(r io.Reader) *Decoder +func NewEncoder(w io.Writer) *Encoder +</pre> + +<p> +Here's an example program that reads a series of JSON objects from standard +input, removes all but the <code>Name</code> field from each object, and then +writes the objects to standard output: +</p> + +{{code "/doc/progs/json5.go" `/package main/` `$`}} + +<p> +Due to the ubiquity of Readers and Writers, these <code>Encoder</code> and +<code>Decoder</code> types can be used in a broad range of scenarios, such as +reading and writing to HTTP connections, WebSockets, or files. +</p> + +<p> +<b>References</b> +</p> + +<p> +For more information see the <a href="/pkg/encoding/json/">json package documentation</a>. For an example usage of +json see the source files of the <a href="/pkg/net/rpc/jsonrpc/">jsonrpc package</a>. +</p> diff --git a/doc/articles/laws_of_reflection.html b/doc/articles/laws_of_reflection.html index 4df70e0d2..a6175f73c 100644 --- a/doc/articles/laws_of_reflection.html +++ b/doc/articles/laws_of_reflection.html @@ -1,11 +1,7 @@ <!--{ - "Title": "The Laws of Reflection" + "Title": "The Laws of Reflection", + "Template": true }--> -<!-- - DO NOT EDIT: created by - tmpltohtml articles/laws_of_reflection.tmpl ---> - <p> Reflection in computing is the @@ -36,11 +32,7 @@ exactly one type known and fixed at compile time: <code>int</code>, and so on. If we declare </p> -<pre><!--{{code "progs/interface.go" `/type MyInt/` `/STOP/`}} --->type MyInt int - -var i int -var j MyInt</pre> +{{code "/doc/progs/interface.go" `/type MyInt/` `/STOP/`}} <p> then <code>i</code> has type <code>int</code> and <code>j</code> @@ -60,16 +52,7 @@ interface's methods. A well-known pair of examples is "http://golang.org/pkg/io/">io package</a>: </p> -<pre><!--{{code "progs/interface.go" `/// Reader/` `/STOP/`}} --->// Reader is the interface that wraps the basic Read method. -type Reader interface { - Read(p []byte) (n int, err error) -} - -// Writer is the interface that wraps the basic Write method. -type Writer interface { - Write(p []byte) (n int, err error) -}</pre> +{{code "/doc/progs/interface.go" `/// Reader/` `/STOP/`}} <p> Any type that implements a <code>Read</code> (or @@ -80,12 +63,7 @@ purposes of this discussion, that means that a variable of type <code>Read</code> method: </p> -<pre><!--{{code "progs/interface.go" `/func readers/` `/STOP/`}} ---> var r io.Reader - r = os.Stdin - r = bufio.NewReader(r) - r = new(bytes.Buffer) - // and so on</pre> +{{code "/doc/progs/interface.go" `/func readers/` `/STOP/`}} <p> It's important to be clear that whatever concrete value @@ -138,13 +116,7 @@ that implements the interface and the type describes the full type of that item. For instance, after </p> -<pre><!--{{code "progs/interface.go" `/func typeAssertions/` `/STOP/`}} ---> var r io.Reader - tty, err := os.OpenFile("/dev/tty", os.O_RDWR, 0) - if err != nil { - return nil, err - } - r = tty</pre> +{{code "/doc/progs/interface.go" `/func typeAssertions/` `/STOP/`}} <p> <code>r</code> contains, schematically, the (value, type) pair, @@ -156,9 +128,7 @@ the type information about that value. That's why we can do things like this: </p> -<pre><!--{{code "progs/interface.go" `/var w io.Writer/` `/STOP/`}} ---> var w io.Writer - w = r.(io.Writer)</pre> +{{code "/doc/progs/interface.go" `/var w io.Writer/` `/STOP/`}} <p> The expression in this assignment is a type assertion; what it @@ -176,9 +146,7 @@ methods. Continuing, we can do this: </p> -<pre><!--{{code "progs/interface.go" `/var empty interface{}/` `/STOP/`}} ---> var empty interface{} - empty = w</pre> +{{code "/doc/progs/interface.go" `/var empty interface{}/` `/STOP/`}} <p> and our empty interface value <code>e</code> will again contain @@ -216,7 +184,7 @@ At the basic level, reflection is just a mechanism to examine the type and value pair stored inside an interface variable. To get started, there are two types we need to know about in <a href="http://golang.org/pkg/reflect">package reflect</a>: -<a href="http://golang.org/pkg/reflect/#Type">Type</a>and +<a href="http://golang.org/pkg/reflect/#Type">Type</a> and <a href="http://golang.org/pkg/reflect/#Value">Value</a>. Those two types give access to the contents of an interface variable, and two simple functions, called <code>reflect.TypeOf</code> and @@ -232,18 +200,7 @@ now.) Let's start with <code>TypeOf</code>: </p> -<pre><!--{{code "progs/interface2.go" `/package main/` `/STOP main/`}} --->package main - -import ( - "fmt" - "reflect" -) - -func main() { - var x float64 = 3.4 - fmt.Println("type:", reflect.TypeOf(x)) -}</pre> +{{code "/doc/progs/interface2.go" `/package main/` `/STOP main/`}} <p> This program prints @@ -281,9 +238,7 @@ value (from here on we'll elide the boilerplate and focus just on the executable code): </p> -<pre><!--{{code "progs/interface2.go" `/var x/` `/STOP/`}} ---> var x float64 = 3.4 - fmt.Println("type:", reflect.TypeOf(x))</pre> +{{code "/doc/progs/interface2.go" `/START f9/` `/STOP/`}} <p> prints @@ -307,12 +262,7 @@ on. Also methods on <code>Value</code> with names like <code>int64</code> and <code>float64</code>) stored inside: </p> -<pre><!--{{code "progs/interface2.go" `/START f1/` `/STOP/`}} ---> var x float64 = 3.4 - v := reflect.ValueOf(x) - fmt.Println("type:", v.Type()) - fmt.Println("kind is float64:", v.Kind() == reflect.Float64) - fmt.Println("value:", v.Float())</pre> +{{code "/doc/progs/interface2.go" `/START f1/` `/STOP/`}} <p> prints @@ -342,12 +292,7 @@ instance. That is, the <code>Int</code> method of necessary to convert to the actual type involved: </p> -<pre><!--{{code "progs/interface2.go" `/START f2/` `/STOP/`}} ---> var x uint8 = 'x' - v := reflect.ValueOf(x) - fmt.Println("type:", v.Type()) // uint8. - fmt.Println("kind is uint8: ", v.Kind() == reflect.Uint8) // true. - x = uint8(v.Uint()) // v.Uint returns a uint64.</pre> +{{code "/doc/progs/interface2.go" `/START f2/` `/STOP/`}} <p> The second property is that the <code>Kind</code> of a reflection @@ -356,10 +301,7 @@ reflection object contains a value of a user-defined integer type, as in </p> -<pre><!--{{code "progs/interface2.go" `/START f3/` `/START/`}} ---> type MyInt int - var x MyInt = 7 - v := reflect.ValueOf(x)</pre> +{{code "/doc/progs/interface2.go" `/START f3/` `/STOP/`}} <p> the <code>Kind</code> of <code>v</code> is still @@ -395,9 +337,7 @@ func (v Value) Interface() interface{} As a consequence we can say </p> -<pre><!--{{code "progs/interface2.go" `/START f3b/` `/START/`}} ---> y := v.Interface().(float64) // y will have type float64. - fmt.Println(y)</pre> +{{code "/doc/progs/interface2.go" `/START f3b/` `/STOP/`}} <p> to print the <code>float64</code> value represented by the @@ -415,8 +355,7 @@ the <code>Interface</code> method to the formatted print routine: </p> -<pre><!--{{code "progs/interface2.go" `/START f3c/` `/START/`}} ---> fmt.Println(v.Interface())</pre> +{{code "/doc/progs/interface2.go" `/START f3c/` `/STOP/`}} <p> (Why not <code>fmt.Println(v)</code>? Because <code>v</code> is a @@ -425,8 +364,7 @@ Since our value is a <code>float64</code>, we can even use a floating-point format if we want: </p> -<pre><!--{{code "progs/interface2.go" `/START f3d/` `/STOP/`}} ---> fmt.Printf("value is %7.1e\n", v.Interface())</pre> +{{code "/doc/progs/interface2.go" `/START f3d/` `/STOP/`}} <p> and get in this case @@ -467,10 +405,7 @@ enough to understand if we start from first principles. Here is some code that does not work, but is worth studying. </p> -<pre><!--{{code "progs/interface2.go" `/START f4/` `/STOP/`}} ---> var x float64 = 3.4 - v := reflect.ValueOf(x) - v.SetFloat(7.1) // Error: will panic.</pre> +{{code "/doc/progs/interface2.go" `/START f4/` `/STOP/`}} <p> If you run this code, it will panic with the cryptic message @@ -492,10 +427,7 @@ The <code>CanSet</code> method of <code>Value</code> reports the settability of a <code>Value</code>; in our case, </p> -<pre><!--{{code "progs/interface2.go" `/START f5/` `/STOP/`}} ---> var x float64 = 3.4 - v := reflect.ValueOf(x) - fmt.Println("settability of v:", v.CanSet())</pre> +{{code "/doc/progs/interface2.go" `/START f5/` `/STOP/`}} <p> prints @@ -518,9 +450,7 @@ determined by whether the reflection object holds the original item. When we say </p> -<pre><!--{{code "progs/interface2.go" `/START f6/` `/START/`}} ---> var x float64 = 3.4 - v := reflect.ValueOf(x)</pre> +{{code "/doc/progs/interface2.go" `/START f6/` `/STOP/`}} <p> we pass a <em>copy</em> of <code>x</code> to @@ -530,8 +460,7 @@ argument to <code>reflect.ValueOf</code> is a <em>copy</em> of statement </p> -<pre><!--{{code "progs/interface2.go" `/START f6b/` `/STOP/`}} ---> v.SetFloat(7.1)</pre> +{{code "/doc/progs/interface2.go" `/START f6b/` `/STOP/`}} <p> were allowed to succeed, it would not update <code>x</code>, even @@ -577,11 +506,7 @@ and then create a reflection value that points to it, called <code>p</code>. </p> -<pre><!--{{code "progs/interface2.go" `/START f7/` `/START/`}} ---> var x float64 = 3.4 - p := reflect.ValueOf(&x) // Note: take the address of x. - fmt.Println("type of p:", p.Type()) - fmt.Println("settability of p:", p.CanSet())</pre> +{{code "/doc/progs/interface2.go" `/START f7/` `/STOP/`}} <p> The output so far is @@ -601,9 +526,7 @@ and save the result in a reflection <code>Value</code> called <code>v</code>: </p> -<pre><!--{{code "progs/interface2.go" `/START f7b/` `/START/`}} ---> v := p.Elem() - fmt.Println("settability of v:", v.CanSet())</pre> +{{code "/doc/progs/interface2.go" `/START f7b/` `/STOP/`}} <p> Now <code>v</code> is a settable reflection object, as the output @@ -620,10 +543,7 @@ and since it represents <code>x</code>, we are finally able to use <code>x</code>: </p> -<pre><!--{{code "progs/interface2.go" `/START f7c/` `/STOP/`}} ---> v.SetFloat(7.1) - fmt.Println(v.Interface()) - fmt.Println(x)</pre> +{{code "/doc/progs/interface2.go" `/START f7c/` `/STOP/`}} <p> The output, as expected, is @@ -664,22 +584,7 @@ but the fields themselves are regular <code>reflect.Value</code> objects. </p> -<pre><!--{{code "progs/interface2.go" `/START f8/` `/STOP/`}} ---> type T struct { - A int - B string - } - t := T{23, "skidoo"} - s := reflect.ValueOf(&t).Elem() - typeOfT := s.Type() - for i := 0; i < s.NumField(); i++ { - f := s.Field(i) - fmt.Printf("%d: %s %s = %v\n", i, - typeOfT.Field(i).Name, f.Type(), f.Interface()) - } - s.Field(0).SetInt(77) - s.Field(1).SetString("Sunset Strip") - fmt.Println("t is now", t)</pre> +{{code "/doc/progs/interface2.go" `/START f8/` `/STOP/`}} <p> The output of this program is @@ -702,10 +607,7 @@ Because <code>s</code> contains a settable reflection object, we can modify the fields of the structure. </p> -<pre><!--{{code "progs/interface2.go" `/START f8b/` `/STOP/`}} ---> s.Field(0).SetInt(77) - s.Field(1).SetString("Sunset Strip") - fmt.Println("t is now", t)</pre> +{{code "/doc/progs/interface2.go" `/START f8b/` `/STOP/`}} <p> And here's the result: @@ -749,4 +651,4 @@ sending and receiving on channels, allocating memory, using slices and maps, calling methods and functions — but this post is long enough. We'll cover some of those topics in a later article. -</p>
\ No newline at end of file +</p> diff --git a/doc/articles/laws_of_reflection.tmpl b/doc/articles/laws_of_reflection.tmpl deleted file mode 100644 index 7db5d6d3b..000000000 --- a/doc/articles/laws_of_reflection.tmpl +++ /dev/null @@ -1,654 +0,0 @@ -<!--{ - "Title": "The Laws of Reflection" -}--> -{{donotedit}} - -<p> -Reflection in computing is the -ability of a program to examine its own structure, particularly -through types; it's a form of metaprogramming. It's also a great -source of confusion. -</p> - -<p> -In this article we attempt to clarify things by explaining how -reflection works in Go. Each language's reflection model is -different (and many languages don't support it at all), but -this article is about Go, so for the rest of this article the word -"reflection" should be taken to mean "reflection in Go". -</p> - -<p><b>Types and interfaces</b></p> - -<p> -Because reflection builds on the type system, let's start with a -refresher about types in Go. -</p> - -<p> -Go is statically typed. Every variable has a static type, that is, -exactly one type known and fixed at compile time: <code>int</code>, -<code>float32</code>, <code>*MyType</code>, <code>[]byte</code>, -and so on. If we declare -</p> - -{{code "progs/interface.go" `/type MyInt/` `/STOP/`}} - -<p> -then <code>i</code> has type <code>int</code> and <code>j</code> -has type <code>MyInt</code>. The variables <code>i</code> and -<code>j</code> have distinct static types and, although they have -the same underlying type, they cannot be assigned to one another -without a conversion. -</p> - -<p> -One important category of type is interface types, which represent -fixed sets of methods. An interface variable can store any concrete -(non-interface) value as long as that value implements the -interface's methods. A well-known pair of examples is -<code>io.Reader</code> and <code>io.Writer</code>, the types -<code>Reader</code> and <code>Writer</code> from the <a href= -"http://golang.org/pkg/io/">io package</a>: -</p> - -{{code "progs/interface.go" `/// Reader/` `/STOP/`}} - -<p> -Any type that implements a <code>Read</code> (or -<code>Write</code>) method with this signature is said to implement -<code>io.Reader</code> (or <code>io.Writer</code>). For the -purposes of this discussion, that means that a variable of type -<code>io.Reader</code> can hold any value whose type has a -<code>Read</code> method: -</p> - -{{code "progs/interface.go" `/func readers/` `/STOP/`}} - -<p> -It's important to be clear that whatever concrete value -<code>r</code> may hold, <code>r</code>'s type is always -<code>io.Reader</code>: Go is statically typed and the static type -of <code>r</code> is <code>io.Reader</code>.</p> - -<p> -An extremely important example of an interface type is the empty -interface: -</p> - -<pre> -interface{} -</pre> - -<p> -It represents the empty set of methods and is satisfied by any -value at all, since any value has zero or more methods. -</p> - -<p> -Some people say that Go's interfaces are dynamically typed, but -that is misleading. They are statically typed: a variable of -interface type always has the same static type, and even though at -run time the value stored in the interface variable may change -type, that value will always satisfy the interface. -</p> - -<p> -We need to be precise about all this because reflection and -interfaces are closely related. -</p> - -<p><b>The representation of an interface</b></p> - -<p> -Russ Cox has written a <a href= -"http://research.swtch.com/2009/12/go-data-structures-interfaces.html"> -detailed blog post</a> about the representation of interface values -in Go. It's not necessary to repeat the full story here, but a -simplified summary is in order. -</p> - -<p> -A variable of interface type stores a pair: the concrete value -assigned to the variable, and that value's type descriptor. -To be more precise, the value is the underlying concrete data item -that implements the interface and the type describes the full type -of that item. For instance, after -</p> - -{{code "progs/interface.go" `/func typeAssertions/` `/STOP/`}} - -<p> -<code>r</code> contains, schematically, the (value, type) pair, -(<code>tty</code>, <code>*os.File</code>). Notice that the type -<code>*os.File</code> implements methods other than -<code>Read</code>; even though the interface value provides access -only to the <code>Read</code> method, the value inside carries all -the type information about that value. That's why we can do things -like this: -</p> - -{{code "progs/interface.go" `/var w io.Writer/` `/STOP/`}} - -<p> -The expression in this assignment is a type assertion; what it -asserts is that the item inside <code>r</code> also implements -<code>io.Writer</code>, and so we can assign it to <code>w</code>. -After the assignment, <code>w</code> will contain the pair -(<code>tty</code>, <code>*os.File</code>). That's the same pair as -was held in <code>r</code>. The static type of the interface -determines what methods may be invoked with an interface variable, -even though the concrete value inside may have a larger set of -methods. -</p> - -<p> -Continuing, we can do this: -</p> - -{{code "progs/interface.go" `/var empty interface{}/` `/STOP/`}} - -<p> -and our empty interface value <code>e</code> will again contain -that same pair, (<code>tty</code>, <code>*os.File</code>). That's -handy: an empty interface can hold any value and contains all the -information we could ever need about that value. -</p> - -<p> -(We don't need a type assertion here because it's known statically -that <code>w</code> satisfies the empty interface. In the example -where we moved a value from a <code>Reader</code> to a -<code>Writer</code>, we needed to be explicit and use a type -assertion because <code>Writer</code>'s methods are not a -subset of <code>Reader</code>'s.) -</p> - -<p> -One important detail is that the pair inside an interface always -has the form (value, concrete type) and cannot have the form -(value, interface type). Interfaces do not hold interface -values. -</p> - -<p> -Now we're ready to reflect. -</p> - -<p><b>The first law of reflection</b></p> - -<p><b>1. Reflection goes from interface value to reflection object.</b></p> - -<p> -At the basic level, reflection is just a mechanism to examine the -type and value pair stored inside an interface variable. To get -started, there are two types we need to know about in -<a href="http://golang.org/pkg/reflect">package reflect</a>: -<a href="http://golang.org/pkg/reflect/#Type">Type</a>and -<a href="http://golang.org/pkg/reflect/#Value">Value</a>. Those two types -give access to the contents of an interface variable, and two -simple functions, called <code>reflect.TypeOf</code> and -<code>reflect.ValueOf</code>, retrieve <code>reflect.Type</code> -and <code>reflect.Value</code> pieces out of an interface value. -(Also, from the <code>reflect.Value</code> it's easy to get -to the <code>reflect.Type</code>, but let's keep the -<code>Value</code> and <code>Type</code> concepts separate for -now.) -</p> - -<p> -Let's start with <code>TypeOf</code>: -</p> - -{{code "progs/interface2.go" `/package main/` `/STOP main/`}} - -<p> -This program prints -</p> - -<pre> -type: float64 -</pre> - -<p> -You might be wondering where the interface is here, since the -program looks like it's passing the <code>float64</code> -variable <code>x</code>, not an interface value, to -<code>reflect.TypeOf</code>. But it's there; as <a href= -"http://golang.org/pkg/reflect/#Type.TypeOf">godoc reports</a>, the -signature of <code>reflect.TypeOf</code> includes an empty -interface: -</p> - -<pre> -// TypeOf returns the reflection Type of the value in the interface{}. -func TypeOf(i interface{}) Type -</pre> - -<p> -When we call <code>reflect.TypeOf(x)</code>, <code>x</code> is -first stored in an empty interface, which is then passed as the -argument; <code>reflect.TypeOf</code> unpacks that empty interface -to recover the type information. -</p> - -<p> -The <code>reflect.ValueOf</code> function, of course, recovers the -value (from here on we'll elide the boilerplate and focus just on -the executable code): -</p> - -{{code "progs/interface2.go" `/var x/` `/STOP/`}} - -<p> -prints -</p> - -<pre> -value: <float64 Value> -</pre> - -<p> -Both <code>reflect.Type</code> and <code>reflect.Value</code> have -lots of methods to let us examine and manipulate them. One -important example is that <code>Value</code> has a -<code>Type</code> method that returns the <code>Type</code> of a -<code>reflect.Value</code>. Another is that both <code>Type</code> -and <code>Value</code> have a <code>Kind</code> method that returns -a constant indicating what sort of item is stored: -<code>Uint</code>, <code>Float64</code>, <code>Slice</code>, and so -on. Also methods on <code>Value</code> with names like -<code>Int</code> and <code>Float</code> let us grab values (as -<code>int64</code> and <code>float64</code>) stored inside: -</p> - -{{code "progs/interface2.go" `/START f1/` `/STOP/`}} - -<p> -prints -</p> - -<pre> -type: float64 -kind is float64: true -value: 3.4 -</pre> - -<p> -There are also methods like <code>SetInt</code> and -<code>SetFloat</code> but to use them we need to understand -settability, the subject of the third law of reflection, discussed -below. -</p> - -<p> -The reflection library has a couple of properties worth singling -out. First, to keep the API simple, the "getter" and "setter" -methods of <code>Value</code> operate on the largest type that can -hold the value: <code>int64</code> for all the signed integers, for -instance. That is, the <code>Int</code> method of -<code>Value</code> returns an <code>int64</code> and the -<code>SetInt</code> value takes an <code>int64</code>; it may be -necessary to convert to the actual type involved: -</p> - -{{code "progs/interface2.go" `/START f2/` `/STOP/`}} - -<p> -The second property is that the <code>Kind</code> of a reflection -object describes the underlying type, not the static type. If a -reflection object contains a value of a user-defined integer type, -as in -</p> - -{{code "progs/interface2.go" `/START f3/` `/START/`}} - -<p> -the <code>Kind</code> of <code>v</code> is still -<code>reflect.Int</code>, even though the static type of -<code>x</code> is <code>MyInt</code>, not <code>int</code>. In -other words, the <code>Kind</code> cannot discriminate an int from -a <code>MyInt</code> even though the <code>Type</code> can. -</p> - -<p><b>The second law of reflection</b></p> - -<p><b>2. Reflection goes from reflection object to interface -value.</b></p> - -<p> -Like physical reflection, reflection in Go generates its own -inverse. -</p> - -<p> -Given a <code>reflect.Value</code> we can recover an interface -value using the <code>Interface</code> method; in effect the method -packs the type and value information back into an interface -representation and returns the result: -</p> - -<pre> -// Interface returns v's value as an interface{}. -func (v Value) Interface() interface{} -</pre> - -<p> -As a consequence we can say -</p> - -{{code "progs/interface2.go" `/START f3b/` `/START/`}} - -<p> -to print the <code>float64</code> value represented by the -reflection object <code>v</code>. -</p> - -<p> -We can do even better, though. The arguments to -<code>fmt.Println</code>, <code>fmt.Printf</code> and so on are all -passed as empty interface values, which are then unpacked by the -<code>fmt</code> package internally just as we have been doing in -the previous examples. Therefore all it takes to print the contents -of a <code>reflect.Value</code> correctly is to pass the result of -the <code>Interface</code> method to the formatted print -routine: -</p> - -{{code "progs/interface2.go" `/START f3c/` `/START/`}} - -<p> -(Why not <code>fmt.Println(v)</code>? Because <code>v</code> is a -<code>reflect.Value</code>; we want the concrete value it holds.) -Since our value is a <code>float64</code>, we can even use a -floating-point format if we want: -</p> - -{{code "progs/interface2.go" `/START f3d/` `/STOP/`}} - -<p> -and get in this case -</p> - -<pre> -3.4e+00 -</pre> - -<p> -Again, there's no need to type-assert the result of -<code>v.Interface()</code> to <code>float64</code>; the empty -interface value has the concrete value's type information inside -and <code>Printf</code> will recover it. -</p> - -<p> -In short, the <code>Interface</code> method is the inverse of the -<code>ValueOf</code> function, except that its result is always of -static type <code>interface{}</code>. -</p> - -<p> -Reiterating: Reflection goes from interface values to reflection -objects and back again. -</p> - -<p><b>The third law of reflection</b></p> - -<p><b>3. To modify a reflection object, the value must be settable.</b></p> - -<p> -The third law is the most subtle and confusing, but it's easy -enough to understand if we start from first principles. -</p> - -<p> -Here is some code that does not work, but is worth studying. -</p> - -{{code "progs/interface2.go" `/START f4/` `/STOP/`}} - -<p> -If you run this code, it will panic with the cryptic message -</p> - -<pre> -panic: reflect.Value.SetFloat using unaddressable value -</pre> - -<p> -The problem is not that the value <code>7.1</code> is not -addressable; it's that <code>v</code> is not settable. Settability -is a property of a reflection <code>Value</code>, and not all -reflection <code>Values</code> have it. -</p> - -<p> -The <code>CanSet</code> method of <code>Value</code> reports the -settability of a <code>Value</code>; in our case, -</p> - -{{code "progs/interface2.go" `/START f5/` `/STOP/`}} - -<p> -prints -</p> - -<pre> -settability of v: false -</pre> - -<p> -It is an error to call a <code>Set</code> method on an non-settable -<code>Value</code>. But what is settability? -</p> - -<p> -Settability is a bit like addressability, but stricter. It's the -property that a reflection object can modify the actual storage -that was used to create the reflection object. Settability is -determined by whether the reflection object holds the original -item. When we say -</p> - -{{code "progs/interface2.go" `/START f6/` `/START/`}} - -<p> -we pass a <em>copy</em> of <code>x</code> to -<code>reflect.ValueOf</code>, so the interface value created as the -argument to <code>reflect.ValueOf</code> is a <em>copy</em> of -<code>x</code>, not <code>x</code> itself. Thus, if the -statement -</p> - -{{code "progs/interface2.go" `/START f6b/` `/STOP/`}} - -<p> -were allowed to succeed, it would not update <code>x</code>, even -though <code>v</code> looks like it was created from -<code>x</code>. Instead, it would update the copy of <code>x</code> -stored inside the reflection value and <code>x</code> itself would -be unaffected. That would be confusing and useless, so it is -illegal, and settability is the property used to avoid this -issue. -</p> - -<p> -If this seems bizarre, it's not. It's actually a familiar situation -in unusual garb. Think of passing <code>x</code> to a -function: -</p> - -<pre> -f(x) -</pre> - -<p> -We would not expect <code>f</code> to be able to modify -<code>x</code> because we passed a copy of <code>x</code>'s value, -not <code>x</code> itself. If we want <code>f</code> to modify -<code>x</code> directly we must pass our function the address of -<code>x</code> (that is, a pointer to <code>x</code>):</p> - -<p> -<code>f(&x)</code> -</p> - -<p> -This is straightforward and familiar, and reflection works the same -way. If we want to modify <code>x</code> by reflection, we must -give the reflection library a pointer to the value we want to -modify. -</p> - -<p> -Let's do that. First we initialize <code>x</code> as usual -and then create a reflection value that points to it, called -<code>p</code>. -</p> - -{{code "progs/interface2.go" `/START f7/` `/START/`}} - -<p> -The output so far is -</p> - -<pre> -type of p: *float64 -settability of p: false -</pre> - -<p> -The reflection object <code>p</code> isn't settable, but it's not -<code>p</code> we want to set, it's (in effect) <code>*p</code>. To -get to what <code>p</code> points to, we call the <code>Elem</code> -method of <code>Value</code>, which indirects through the pointer, -and save the result in a reflection <code>Value</code> called -<code>v</code>: -</p> - -{{code "progs/interface2.go" `/START f7b/` `/START/`}} - -<p> -Now <code>v</code> is a settable reflection object, as the output -demonstrates, -</p> - -<pre> -settability of v: true -</pre> - -<p> -and since it represents <code>x</code>, we are finally able to use -<code>v.SetFloat</code> to modify the value of -<code>x</code>: -</p> - -{{code "progs/interface2.go" `/START f7c/` `/STOP/`}} - -<p> -The output, as expected, is -</p> - -<pre> -7.1 -7.1 -</pre> - -<p> -Reflection can be hard to understand but it's doing exactly what -the language does, albeit through reflection <code>Types</code> and -<code>Values</code> that can disguise what's going on. Just keep in -mind that reflection Values need the address of something in order -to modify what they represent. -</p> - -<p><b>Structs</b></p> - -<p> -In our previous example <code>v</code> wasn't a pointer itself, it -was just derived from one. A common way for this situation to arise -is when using reflection to modify the fields of a structure. As -long as we have the address of the structure, we can modify its -fields. -</p> - -<p> -Here's a simple example that analyzes a struct value, -<code>t</code>. We create the reflection object with the address of -the struct because we'll want to modify it later. Then we set -<code>typeOfT</code> to its type and iterate over the fields using -straightforward method calls (see -<a href="http://golang.org/pkg/reflect/">package reflect</a> for details). -Note that we extract the names of the fields from the struct type, -but the fields themselves are regular <code>reflect.Value</code> -objects. -</p> - -{{code "progs/interface2.go" `/START f8/` `/STOP/`}} - -<p> -The output of this program is -</p> - -<pre> -0: A int = 23 -1: B string = skidoo -</pre> - -<p> -There's one more point about settability introduced in -passing here: the field names of <code>T</code> are upper case -(exported) because only exported fields of a struct are -settable. -</p> - -<p> -Because <code>s</code> contains a settable reflection object, we -can modify the fields of the structure. -</p> - -{{code "progs/interface2.go" `/START f8b/` `/STOP/`}} - -<p> -And here's the result: -</p> - -<pre> -t is now {77 Sunset Strip} -</pre> - -<p> -If we modified the program so that <code>s</code> was created from -<code>t</code>, not <code>&t</code>, the calls to -<code>SetInt</code> and <code>SetString</code> would fail as the -fields of <code>t</code> would not be settable. -</p> - -<p><b>Conclusion</b></p> - -<p> -Here again are the laws of reflection: -</p> - -<ol> -<li>Reflection goes from interface value to reflection -object.</li> -<li>Reflection goes from reflection object to interface -value.</li> -<li>To modify a reflection object, the value must be settable.</li> -</ol> - -<p> -Once you understand these laws reflection in Go becomes much easier -to use, although it remains subtle. It's a powerful tool that -should be used with care and avoided unless strictly -necessary. -</p> - -<p> -There's plenty more to reflection that we haven't covered — -sending and receiving on channels, allocating memory, using slices -and maps, calling methods and functions — but this post is -long enough. We'll cover some of those topics in a later -article. -</p>
\ No newline at end of file diff --git a/doc/articles/slices_usage_and_internals.html b/doc/articles/slices_usage_and_internals.html index c10dfe0ca..810b0a41f 100644 --- a/doc/articles/slices_usage_and_internals.html +++ b/doc/articles/slices_usage_and_internals.html @@ -1,11 +1,7 @@ <!--{ - "Title": "Slices: usage and internals" + "Title": "Slices: usage and internals", + "Template": true }--> -<!-- - DO NOT EDIT: created by - tmpltohtml articles/slices_usage_and_internals.tmpl ---> - <p> Go's slice type provides a convenient and efficient means of working with @@ -326,20 +322,7 @@ appends byte elements to a slice of bytes, growing the slice if necessary, and returns the updated slice value: </p> -<pre><!--{{code "progs/slices.go" `/AppendByte/` `/STOP/`}} --->func AppendByte(slice []byte, data ...byte) []byte { - m := len(slice) - n := m + len(data) - if n > cap(slice) { // if necessary, reallocate - // allocate double what's needed, for future growth. - newSlice := make([]byte, (n+1)*2) - copy(newSlice, slice) - slice = newSlice - } - slice = slice[0:n] - copy(slice[m:n], data) - return slice -}</pre> +{{code "/doc/progs/slices.go" `/AppendByte/` `/STOP/`}} <p> One could use <code>AppendByte</code> like this: @@ -398,18 +381,7 @@ Since the zero value of a slice (<code>nil</code>) acts like a zero-length slice, you can declare a slice variable and then append to it in a loop: </p> -<pre><!--{{code "progs/slices.go" `/Filter/` `/STOP/`}} --->// Filter returns a new slice holding only -// the elements of s that satisfy f() -func Filter(s []int, fn func(int) bool) []int { - var p []int // == nil - for _, i := range s { - if fn(i) { - p = append(p, i) - } - } - return p -}</pre> +{{code "/doc/progs/slices.go" `/Filter/` `/STOP/`}} <p> <b>A possible "gotcha"</b> @@ -428,13 +400,7 @@ searches it for the first group of consecutive numeric digits, returning them as a new slice. </p> -<pre><!--{{code "progs/slices.go" `/digit/` `/STOP/`}} --->var digitRegexp = regexp.MustCompile("[0-9]+") - -func FindDigits(filename string) []byte { - b, _ := ioutil.ReadFile(filename) - return digitRegexp.Find(b) -}</pre> +{{code "/doc/progs/slices.go" `/digit/` `/STOP/`}} <p> This code behaves as advertised, but the returned <code>[]byte</code> points @@ -449,14 +415,7 @@ To fix this problem one can copy the interesting data to a new slice before returning it: </p> -<pre><!--{{code "progs/slices.go" `/CopyDigits/` `/STOP/`}} --->func CopyDigits(filename string) []byte { - b, _ := ioutil.ReadFile(filename) - b = digitRegexp.Find(b) - c := make([]byte, len(b)) - copy(c, b) - return c -}</pre> +{{code "/doc/progs/slices.go" `/CopyDigits/` `/STOP/`}} <p> A more concise version of this function could be constructed by using diff --git a/doc/articles/slices_usage_and_internals.tmpl b/doc/articles/slices_usage_and_internals.tmpl deleted file mode 100644 index d2f8fb7f5..000000000 --- a/doc/articles/slices_usage_and_internals.tmpl +++ /dev/null @@ -1,438 +0,0 @@ -<!--{ - "Title": "Slices: usage and internals" -}--> -{{donotedit}} - -<p> -Go's slice type provides a convenient and efficient means of working with -sequences of typed data. Slices are analogous to arrays in other languages, but -have some unusual properties. This article will look at what slices are and how -they are used. -</p> - -<p> -<b>Arrays</b> -</p> - -<p> -The slice type is an abstraction built on top of Go's array type, and so to -understand slices we must first understand arrays. -</p> - -<p> -An array type definition specifies a length and an element type. For example, -the type <code>[4]int</code> represents an array of four integers. An array's -size is fixed; its length is part of its type (<code>[4]int</code> and -<code>[5]int</code> are distinct, incompatible types). Arrays can be indexed in -the usual way, so the expression <code>s[n]</code> accesses the <i>n</i>th -element: -</p> - -<pre> -var a [4]int -a[0] = 1 -i := a[0] -// i == 1 -</pre> - -<p> -Arrays do not need to be initialized explicitly; the zero value of an array is -a ready-to-use array whose elements are themselves zeroed: -</p> - -<pre> -// a[2] == 0, the zero value of the int type -</pre> - -<p> -The in-memory representation of <code>[4]int</code> is just four integer values laid out sequentially: -</p> - -<p> -<img src="slice-array.png"> -</p> - -<p> -Go's arrays are values. An array variable denotes the entire array; it is not a -pointer to the first array element (as would be the case in C). This means -that when you assign or pass around an array value you will make a copy of its -contents. (To avoid the copy you could pass a <i>pointer</i> to the array, but -then that's a pointer to an array, not an array.) One way to think about arrays -is as a sort of struct but with indexed rather than named fields: a fixed-size -composite value. -</p> - -<p> -An array literal can be specified like so: -</p> - -<pre> -b := [2]string{"Penn", "Teller"} -</pre> - -<p> -Or, you can have the compiler count the array elements for you: -</p> - -<pre> -b := [...]string{"Penn", "Teller"} -</pre> - -<p> -In both cases, the type of <code>b</code> is <code>[2]string</code>. -</p> - -<p> -<b>Slices</b> -</p> - -<p> -Arrays have their place, but they're a bit inflexible, so you don't see them -too often in Go code. Slices, though, are everywhere. They build on arrays to -provide great power and convenience. -</p> - -<p> -The type specification for a slice is <code>[]T</code>, where <code>T</code> is -the type of the elements of the slice. Unlike an array type, a slice type has -no specified length. -</p> - -<p> -A slice literal is declared just like an array literal, except you leave out -the element count: -</p> - -<pre> -letters := []string{"a", "b", "c", "d"} -</pre> - -<p> -A slice can be created with the built-in function called <code>make</code>, -which has the signature, -</p> - -<pre> -func make([]T, len, cap) []T -</pre> - -<p> -where T stands for the element type of the slice to be created. The -<code>make</code> function takes a type, a length, and an optional capacity. -When called, <code>make</code> allocates an array and returns a slice that -refers to that array. -</p> - -<pre> -var s []byte -s = make([]byte, 5, 5) -// s == []byte{0, 0, 0, 0, 0} -</pre> - -<p> -When the capacity argument is omitted, it defaults to the specified length. -Here's a more succinct version of the same code: -</p> - -<pre> -s := make([]byte, 5) -</pre> - -<p> -The length and capacity of a slice can be inspected using the built-in -<code>len</code> and <code>cap</code> functions. -</p> - -<pre> -len(s) == 5 -cap(s) == 5 -</pre> - -<p> -The next two sections discuss the relationship between length and capacity. -</p> - -<p> -The zero value of a slice is <code>nil</code>. The <code>len</code> and -<code>cap</code> functions will both return 0 for a nil slice. -</p> - -<p> -A slice can also be formed by "slicing" an existing slice or array. Slicing is -done by specifying a half-open range with two indices separated by a colon. For -example, the expression <code>b[1:4]</code> creates a slice including elements -1 through 3 of <code>b</code> (the indices of the resulting slice will be 0 -through 2). -</p> - -<pre> -b := []byte{'g', 'o', 'l', 'a', 'n', 'g'} -// b[1:4] == []byte{'o', 'l', 'a'}, sharing the same storage as b -</pre> - -<p> -The start and end indices of a slice expression are optional; they default to zero and the slice's length respectively: -</p> - -<pre> -// b[:2] == []byte{'g', 'o'} -// b[2:] == []byte{'l', 'a', 'n', 'g'} -// b[:] == b -</pre> - -<p> -This is also the syntax to create a slice given an array: -</p> - -<pre> -x := [3]string{"Лайка", "Белка", "Стрелка"} -s := x[:] // a slice referencing the storage of x -</pre> - -<p> -<b>Slice internals</b> -</p> - -<p> -A slice is a descriptor of an array segment. It consists of a pointer to the -array, the length of the segment, and its capacity (the maximum length of the -segment). -</p> - -<p> -<img src="slice-struct.png"> -</p> - -<p> -Our variable <code>s</code>, created earlier by <code>make([]byte, 5)</code>, -is structured like this: -</p> - -<p> -<img src="slice-1.png"> -</p> - -<p> -The length is the number of elements referred to by the slice. The capacity is -the number of elements in the underlying array (beginning at the element -referred to by the slice pointer). The distinction between length and capacity -will be made clear as we walk through the next few examples. -</p> - -<p> -As we slice <code>s</code>, observe the changes in the slice data structure and -their relation to the underlying array: -</p> - -<pre> -s = s[2:4] -</pre> - -<p> -<img src="slice-2.png"> -</p> - -<p> -Slicing does not copy the slice's data. It creates a new slice value that -points to the original array. This makes slice operations as efficient as -manipulating array indices. Therefore, modifying the <i>elements</i> (not the -slice itself) of a re-slice modifies the elements of the original slice: -</p> - -<pre> -d := []byte{'r', 'o', 'a', 'd'} -e := d[2:] -// e == []byte{'a', 'd'} -e[1] == 'm' -// e == []byte{'a', 'm'} -// d == []byte{'r', 'o', 'a', 'm'} -</pre> - -<p> -Earlier we sliced <code>s</code> to a length shorter than its capacity. We can -grow s to its capacity by slicing it again: -</p> - -<pre> -s = s[:cap(s)] -</pre> - -<p> -<img src="slice-3.png"> -</p> - -<p> -A slice cannot be grown beyond its capacity. Attempting to do so will cause a -runtime panic, just as when indexing outside the bounds of a slice or array. -Similarly, slices cannot be re-sliced below zero to access earlier elements in -the array. -</p> - -<p> -<b>Growing slices (the copy and append functions)</b> -</p> - -<p> -To increase the capacity of a slice one must create a new, larger slice and -copy the contents of the original slice into it. This technique is how dynamic -array implementations from other languages work behind the scenes. The next -example doubles the capacity of <code>s</code> by making a new slice, -<code>t</code>, copying the contents of <code>s</code> into <code>t</code>, and -then assigning the slice value <code>t</code> to <code>s</code>: -</p> - -<pre> -t := make([]byte, len(s), (cap(s)+1)*2) // +1 in case cap(s) == 0 -for i := range s { - t[i] = s[i] -} -s = t -</pre> - -<p> -The looping piece of this common operation is made easier by the built-in copy -function. As the name suggests, copy copies data from a source slice to a -destination slice. It returns the number of elements copied. -</p> - -<pre> -func copy(dst, src []T) int -</pre> - -<p> -The <code>copy</code> function supports copying between slices of different -lengths (it will copy only up to the smaller number of elements). In addition, -<code>copy</code> can handle source and destination slices that share the same -underlying array, handling overlapping slices correctly. -</p> - -<p> -Using <code>copy</code>, we can simplify the code snippet above: -</p> - -<pre> -t := make([]byte, len(s), (cap(s)+1)*2) -copy(t, s) -s = t -</pre> - -<p> -A common operation is to append data to the end of a slice. This function -appends byte elements to a slice of bytes, growing the slice if necessary, and -returns the updated slice value: -</p> - -{{code "progs/slices.go" `/AppendByte/` `/STOP/`}} - -<p> -One could use <code>AppendByte</code> like this: -</p> - -<pre> -p := []byte{2, 3, 5} -p = AppendByte(p, 7, 11, 13) -// p == []byte{2, 3, 5, 7, 11, 13} -</pre> - -<p> -Functions like <code>AppendByte</code> are useful because they offer complete -control over the way the slice is grown. Depending on the characteristics of -the program, it may be desirable to allocate in smaller or larger chunks, or to -put a ceiling on the size of a reallocation. -</p> - -<p> -But most programs don't need complete control, so Go provides a built-in -<code>append</code> function that's good for most purposes; it has the -signature -</p> - -<pre> -func append(s []T, x ...T) []T -</pre> - -<p> -The <code>append</code> function appends the elements <code>x</code> to the end -of the slice <code>s</code>, and grows the slice if a greater capacity is -needed. -</p> - -<pre> -a := make([]int, 1) -// a == []int{0} -a = append(a, 1, 2, 3) -// a == []int{0, 1, 2, 3} -</pre> - -<p> -To append one slice to another, use <code>...</code> to expand the second -argument to a list of arguments. -</p> - -<pre> -a := []string{"John", "Paul"} -b := []string{"George", "Ringo", "Pete"} -a = append(a, b...) // equivalent to "append(a, b[0], b[1], b[2])" -// a == []string{"John", "Paul", "George", "Ringo", "Pete"} -</pre> - -<p> -Since the zero value of a slice (<code>nil</code>) acts like a zero-length -slice, you can declare a slice variable and then append to it in a loop: -</p> - -{{code "progs/slices.go" `/Filter/` `/STOP/`}} - -<p> -<b>A possible "gotcha"</b> -</p> - -<p> -As mentioned earlier, re-slicing a slice doesn't make a copy of the underlying -array. The full array will be kept in memory until it is no longer referenced. -Occasionally this can cause the program to hold all the data in memory when -only a small piece of it is needed. -</p> - -<p> -For example, this <code>FindDigits</code> function loads a file into memory and -searches it for the first group of consecutive numeric digits, returning them -as a new slice. -</p> - -{{code "progs/slices.go" `/digit/` `/STOP/`}} - -<p> -This code behaves as advertised, but the returned <code>[]byte</code> points -into an array containing the entire file. Since the slice references the -original array, as long as the slice is kept around the garbage collector can't -release the array; the few useful bytes of the file keep the entire contents in -memory. -</p> - -<p> -To fix this problem one can copy the interesting data to a new slice before -returning it: -</p> - -{{code "progs/slices.go" `/CopyDigits/` `/STOP/`}} - -<p> -A more concise version of this function could be constructed by using -<code>append</code>. This is left as an exercise for the reader. -</p> - -<p> -<b>Further Reading</b> -</p> - -<p> -<a href="/doc/effective_go.html">Effective Go</a> contains an -in-depth treatment of <a href="/doc/effective_go.html#slices">slices</a> -and <a href="/doc/effective_go.html#arrays">arrays</a>, -and the Go <a href="/doc/go_spec.html">language specification</a> -defines <a href="/doc/go_spec.html#Slice_types">slices</a> and their -<a href="/doc/go_spec.html#Length_and_capacity">associated</a> -<a href="/doc/go_spec.html#Making_slices_maps_and_channels">helper</a> -<a href="/doc/go_spec.html#Appending_and_copying_slices">functions</a>. -</p> diff --git a/doc/articles/wiki/test.sh b/doc/articles/wiki/test.bash index 58b218a78..5c2cb60dc 100755 --- a/doc/articles/wiki/test.sh +++ b/doc/articles/wiki/test.bash @@ -1,4 +1,7 @@ #!/usr/bin/env bash +# 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. set -e wiki_pid= @@ -8,10 +11,10 @@ cleanup() { } trap cleanup 0 INT -make get.bin +go build -o get.bin get.go addr=$(./get.bin -addr) sed s/:8080/$addr/ < final.go > final-test.go -make final-test.bin +go build -o final-test.bin final-test.go (./final-test.bin) & wiki_pid=$! diff --git a/doc/button_background.png b/doc/button_background.png Binary files differdeleted file mode 100644 index 86a3b3086..000000000 --- a/doc/button_background.png +++ /dev/null diff --git a/doc/code.html b/doc/code.html index 768a9995a..238cb0643 100644 --- a/doc/code.html +++ b/doc/code.html @@ -245,7 +245,7 @@ $ go install </pre> <p> -The resulting workspace directory tree (assuimg we're running Linux on a 64-bit +The resulting workspace directory tree (assuming we're running Linux on a 64-bit system) looks like this: </p> diff --git a/doc/codewalk/markov.xml b/doc/codewalk/markov.xml index 81df1289c..085ead7bc 100644 --- a/doc/codewalk/markov.xml +++ b/doc/codewalk/markov.xml @@ -155,7 +155,7 @@ Prefix Map key <br/><br/> For more information about the <code>append</code> function and slices in general see the - <a href="http://blog.golang.org/2011/01/go-slices-usage-and-internals.html">Slices: usage and internals</a> article. + <a href="/doc/articles/slices_usage_and_internals.html">Slices: usage and internals</a> article. </step> <step title="Pushing the suffix onto the prefix" src="doc/codewalk/markov.go:/p\.Shift/"> @@ -275,16 +275,15 @@ p[len(p)-1] = suffix </step> <step title="Using this program" src="doc/codewalk/markov.go"> - To use this program, first compile and link it. - If you are using <code>6g</code> as your compiler, the command - would look something like this: + To use this program, first build it with the + <a href="/cmd/go/">go</a> command: <pre> -$ 6g markov.go && 6l -o markov markov.6</pre> +$ go build markov.go</pre> And then execute it while piping in some input text: <pre> -$ echo "a man a plan a canal panama" | ./markov -prefix=1 -a plan a man a plan a canal panama - </pre> +$ echo "a man a plan a canal panama" \ + | ./markov -prefix=1 +a plan a man a plan a canal panama</pre> Here's a transcript of generating some text using the Go distribution's README file as source material: <pre> diff --git a/doc/contrib.html b/doc/contrib.html index 76cee1ffd..b4bd47e96 100644 --- a/doc/contrib.html +++ b/doc/contrib.html @@ -3,6 +3,8 @@ "Path": "/project/" }--> +<img class="gopher" src="/doc/gopher/project.png" /> + <div id="manual-nav"></div> <p> @@ -15,6 +17,15 @@ Go is an open source project developed by a team at Go is distributed under a <a href="/LICENSE">BSD-style license</a>. </p> +<h3 id="announce"><a href="http://groups.google.com/group/golang-announce">Announcements Mailing List</a></h3> +<p> +A low traffic mailing list for important announcements, such as new releases. +</p> +<p> +We encourage all Go users to subscribe to +<a href="http://groups.google.com/group/golang-announce">golang-announce</a>. +</p> + <h2 id="resources">Developer Resources</h2> <h3 id="source"><a href="https://code.google.com/p/go/source">Source Code</a></h3> diff --git a/doc/contribute.html b/doc/contribute.html index 73233c588..e1f39ae7e 100644 --- a/doc/contribute.html +++ b/doc/contribute.html @@ -404,7 +404,7 @@ $ hg mail -r golang-dev@googlegroups.com --cc math-nuts@swtch.com 99999 <p> Running <code>hg mail</code> will send an email to you and the reviewers -asking them to visit the issue's URL and make coments on the change. +asking them to visit the issue's URL and make comments on the change. When done, the reviewer clicks “Publish and Mail comments” to send comments back. </p> diff --git a/doc/debugging_with_gdb.html b/doc/debugging_with_gdb.html index 43977b777..1ac1c1fd8 100644 --- a/doc/debugging_with_gdb.html +++ b/doc/debugging_with_gdb.html @@ -4,22 +4,23 @@ }--> <p><i> -This applies to the 6g toolchain. Gccgo has native gdb support. Besides this -overview you might want to consult the +This applies to the <code>gc</code> toolchain. Gccgo has native gdb support. +Besides this overview you might want to consult the <a href="http://sourceware.org/gdb/current/onlinedocs/gdb/">GDB manual</a>. </i></p> <h2 id="Introduction">Introduction</h2> <p> -When you compile and link your Go programs with the 6g/6l or 8g/8l toolchains -on Linux, Mac OSX or FreeBSD, the resulting binaries contain DWARFv3 -debugging information that recent versions (>7.1) of the GDB debugger can +When you compile and link your Go programs with the <code>gc</code> toolchain +on Linux, Mac OS X or FreeBSD, the resulting binaries contain DWARFv3 +debugging information that recent versions (>7.1) of the GDB debugger can use to inspect a live process or a core dump. </p> <p> -Pass the <code>'-s'</code> flag to the linker to omit the debug information. +Pass the <code>'-s'</code> flag to the linker to omit the debug information +(for example, <code>go build -ldflags "-s" prog.go</code>). </p> @@ -28,7 +29,7 @@ Pass the <code>'-s'</code> flag to the linker to omit the debug information. <ul> <li> Show file and line number for code -and set breakpoints: +, set breakpoints and disassemble: <pre>(gdb) <b>list</b> (gdb) <b>list <i>line</i></b> (gdb) <b>list <i>file.go</i>:<i>line</i></b> @@ -37,7 +38,7 @@ and set breakpoints: (gdb) <b>disas</b></pre> </li> <li> -Unwind stack frames: +Show backtraces and unwind stack frames: <pre>(gdb) <b>bt</b> (gdb) <b>frame <i>n</i></b></pre> </li> @@ -101,7 +102,7 @@ the Go source distribution. It depends on some special magic types <code>runtime.g</code>) that the linker (<a href="/src/cmd/ld/dwarf.c">src/cmd/ld/dwarf.c</a>) ensures are described in the DWARF code. -</ines +</p> <p> If you're interested in what the debugging information looks like, run @@ -128,26 +129,26 @@ the form <code>pkg.(*MyType).Meth</code>. <p> In this tutorial we will inspect the binary of the <a href="/pkg/regexp/">regexp</a> package's unit tests. To build the binary, -change to <code>$GOROOT/src/pkg/regexp</code> and run <code>gotest</code>. -This should produce an executable file named <code>6.out</code>. +change to <code>$GOROOT/src/pkg/regexp</code> and run <code>go test -c</code>. +This should produce an executable file named <code>regexp.test</code>. </p> <h3 id="Getting_Started">Getting Started</h3> <p> -Launch GDB, debugging <code>6.out</code>: +Launch GDB, debugging <code>regexp.test</code>: </p> <pre> -$ <b>gdb 6.out</b> +$ <b>gdb regexp.test</b> GNU gdb (GDB) 7.2-gg8 Copyright (C) 2010 Free Software Foundation, Inc. License GPLv 3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> Type "show copying" and "show warranty" for licensing/warranty details. This GDB was configured as "x86_64-linux". -Reading symbols from /home/user/go/src/pkg/regexp/6.out... +Reading symbols from /home/user/go/src/pkg/regexp/regexp.test... done. Loading Go Runtime support. (gdb) @@ -164,7 +165,7 @@ pass your <code>$GOROOT</code> with the <code>'-d'</code> flag: </p> <pre> -$ <b>gdb 6.out -d $GOROOT</b> +$ <b>gdb regexp.test -d $GOROOT</b> </pre> <p> @@ -217,14 +218,13 @@ package is known to GDB as <code>'regexp.Compile'</code>. <p> Methods must be qualified with the name of their receiver types. For example, -the <code>*Regexp</code> type’s <code>doParse</code> method is known as -<code>'regexp.*Regexp.doParse'</code>. (Note that the second dot is a "middot," -an artifact of Go’s internal representation of methods.) +the <code>*Regexp</code> type’s <code>String</code> method is known as +<code>'regexp.(*Regexp).String'</code>. </p> <p> Variables that shadow other variables are magically suffixed with a number in the debug info. -Variables referenced by closures will appear as pointers magically prefixed with '&'. +Variables referenced by closures will appear as pointers magically prefixed with '&'. </p> <h3 id="Setting_breakpoints">Setting breakpoints</h3> @@ -244,7 +244,7 @@ Run the program: <pre> (gdb) <b>run</b> -Starting program: /home/lvd/g/src/pkg/regexp/6.out +Starting program: /home/user/go/src/pkg/regexp/regexp.test Breakpoint 1, regexp.TestFind (t=0xf8404a89c0) at /home/user/go/src/pkg/regexp/find_test.go:148 148 func TestFind(t *testing.T) { @@ -287,16 +287,18 @@ The other goroutine, number 1, is stuck in <code>runtime.gosched</code>, blocked <pre> (gdb) <b>goroutine 1 bt</b> -#0 0x000000000040facb in runtime.gosched () at /home/lvd/g/src/pkg/runtime/proc.c:873 +#0 0x000000000040facb in runtime.gosched () at /home/user/go/src/pkg/runtime/proc.c:873 #1 0x00000000004031c9 in runtime.chanrecv (c=void, ep=void, selected=void, received=void) - at /home/lvd/g/src/pkg/runtime/chan.c:342 -#2 0x0000000000403299 in runtime.chanrecv1 (t=void, c=void) at/home/lvd/g/src/pkg/runtime/chan.c:423 -#3 0x000000000043075b in testing.RunTests (matchString={void (struct string, struct string, bool *, error *)} 0x7ffff7f9ef60, tests= []testing.InternalTest = {...}) at /home/lvd/g/src/pkg/testing/testing.go:201 -#4 0x00000000004302b1 in testing.Main (matchString={void (struct string, struct string, bool *, error *)} 0x7ffff7f9ef80, tests= []testing.InternalTest = {...}, benchmarks= []testing.InternalBenchmark = {...}) - at /home/lvd/g/src/pkg/testing/testing.go:168 -#5 0x0000000000400dc1 in main.main () at /home/lvd/g/src/pkg/regexp/_testmain.go:98 -#6 0x00000000004022e7 in runtime.mainstart () at /home/lvd/g/src/pkg/runtime/amd64/asm.s:78 -#7 0x000000000040ea6f in runtime.initdone () at /home/lvd/g/src/pkg/runtime/proc.c:243 + at /home/user/go/src/pkg/runtime/chan.c:342 +#2 0x0000000000403299 in runtime.chanrecv1 (t=void, c=void) at/home/user/go/src/pkg/runtime/chan.c:423 +#3 0x000000000043075b in testing.RunTests (matchString={void (struct string, struct string, bool *, error *)} + 0x7ffff7f9ef60, tests= []testing.InternalTest = {...}) at /home/user/go/src/pkg/testing/testing.go:201 +#4 0x00000000004302b1 in testing.Main (matchString={void (struct string, struct string, bool *, error *)} + 0x7ffff7f9ef80, tests= []testing.InternalTest = {...}, benchmarks= []testing.InternalBenchmark = {...}) +at /home/user/go/src/pkg/testing/testing.go:168 +#5 0x0000000000400dc1 in main.main () at /home/user/go/src/pkg/regexp/_testmain.go:98 +#6 0x00000000004022e7 in runtime.mainstart () at /home/user/go/src/pkg/runtime/amd64/asm.s:78 +#7 0x000000000040ea6f in runtime.initdone () at /home/user/go/src/pkg/runtime/proc.c:243 #8 0x0000000000000000 in ?? () </pre> @@ -307,7 +309,7 @@ The stack frame shows we’re currently executing the <code>regexp.TestFind</cod <pre> (gdb) <b>info frame</b> Stack level 0, frame at 0x7ffff7f9ff88: - rip = 0x425530 in regexp.TestFind (/home/lvd/g/src/pkg/regexp/find_test.go:148); + rip = 0x425530 in regexp.TestFind (/home/user/go/src/pkg/regexp/find_test.go:148); saved rip 0x430233 called by frame at 0x7ffff7f9ffa8 source language minimal. @@ -346,12 +348,12 @@ $1 = (struct testing.T *) 0xf840688b60 $1 = (struct testing.T *) 0xf840688b60 (gdb) p *t $2 = {errors = "", failed = false, ch = 0xf8406f5690} -(gdb) p *t->ch -$3 = struct hchan<*testing.T> +(gdb) p *t->ch +$3 = struct hchan<*testing.T> </pre> <p> -That <code>struct hchan<*testing.T></code> is the runtime-internal represntation of a channel. It is currently empty, or gdb would have pretty-printed it's contents. +That <code>struct hchan<*testing.T></code> is the runtime-internal representation of a channel. It is currently empty, or gdb would have pretty-printed it's contents. </p> <p> @@ -384,7 +386,7 @@ We can step into the <code>String</code>function call with <code>"s"</code>: <pre> (gdb) <b>s</b> -regexp.(*Regexp).String (re=0xf84068d070, noname=void) at /home/lvd/g/src/pkg/regexp/regexp.go:97 +regexp.(*Regexp).String (re=0xf84068d070, noname=void) at /home/user/go/src/pkg/regexp/regexp.go:97 97 func (re *Regexp) String() string { </pre> @@ -394,14 +396,13 @@ Get a stack trace to see where we are: <pre> (gdb) <b>bt</b> -(gdb) bt #0 regexp.(*Regexp).String (re=0xf84068d070, noname=void) - at /home/lvd/g/src/pkg/regexp/regexp.go:97 + at /home/user/go/src/pkg/regexp/regexp.go:97 #1 0x0000000000425615 in regexp.TestFind (t=0xf840688b60) - at /home/lvd/g/src/pkg/regexp/find_test.go:151 + at /home/user/go/src/pkg/regexp/find_test.go:151 #2 0x0000000000430233 in testing.tRunner (t=0xf840688b60, test=0x5747b8) - at /home/lvd/g/src/pkg/testing/testing.go:156 -#3 0x000000000040ea6f in runtime.initdone () at /home/lvd/g/src/pkg/runtime/proc.c:243 + at /home/user/go/src/pkg/testing/testing.go:156 +#3 0x000000000040ea6f in runtime.initdone () at /home/user/go/src/pkg/runtime/proc.c:243 .... </pre> @@ -442,7 +443,7 @@ you can look inside the runtime representation to do that (tab completion helps (gdb) <b>p slc</b> $11 = []int = {0, 0} -(gdb) <b>p slc-></b><i><TAB></i> +(gdb) <b>p slc-></b><i><TAB></i> array slc len (gdb) <b>p slc->array</b> $12 = (int *) 0xf84057af00 @@ -463,7 +464,7 @@ $24 = 4 </pre> <p> -Channels and maps are 'reference' types, which gdb shows as pointers to C++-like types <code>hash<int,string>*</code>. Dereferencing will trigger prettyprinting +Channels and maps are 'reference' types, which gdb shows as pointers to C++-like types <code>hash<int,string>*</code>. Dereferencing will trigger prettyprinting </p> <p> diff --git a/doc/devel/weekly.html b/doc/devel/weekly.html index ba88c3625..4c4b52e44 100644 --- a/doc/devel/weekly.html +++ b/doc/devel/weekly.html @@ -14,6 +14,254 @@ hg pull hg update weekly.<i>YYYY-MM-DD</i> </pre> +<h2 id="2012-03-22">2012-03-22 (Go 1 Release Candidate 2)</h2> + +<pre> +As with last week's snapshot, this snapshot is another Go 1 release candidate. +A notable change in this snapshot are Windows installer fixes. + +Changes in this snapshot: +* 5l, 6l, 8l: fix stack split logic for stacks near default segment size. +* archive/zip: move r.zip off disk, into reader_test.go. +* build: catch API changes during build, + do more during windows build (thanks Alex Brainman), + lengthen timeout for the lengthy runtime test (thanks Shenghou Ma), + unset GOPATH before tests (thanks Shenghou Ma). +* cmd/cgo: add support for function export for gccgo (thanks Rémy Oudompheng), + fix handling of errno for gccgo. +* cmd/go: add -fno-common by default on Darwin (thanks Shenghou Ma), + don't add detail to errPrintedOutput, + fix directory->import path conversion, + make build errors more visible, + use .o, not .{5,6,8}, for gccgo created object files, + work around occasional ETXTBSY running cgo. +* cmd/godoc: add toys, tour button to playground, + inform users that the playground doesn't work via local godoc, + style example headings like links, + use *goroot as base path in zip file, + use FormatText for formating code in html template, + use shorter titles for tabs. +* cmd/gofmt: show ascii in usage (thanks Yasuhiro Matsumoto). +* cmd/pack: also recognize '\\' as path separator in filenames (thanks Shenghou Ma). +* crypto/tls: always send a Certificate message if one was requested. +* doc/install: remove reference to "Go Tutorial" (thanks Shenghou Ma). +* doc/play: use []rune instead of []int (thanks Yasuhiro Matsumoto). +* doc: add Go Concurrency Patterns: Timing out, moving on article (thanks Francisco Souza), + add Go image/draw package article and convert code snippets to Go1, + add Gobs of data article (thanks Francisco Souza), + add Godoc: documenting Go code article (thanks Francisco Souza), + add JSON and Go article (thanks Francisco Souza), + general update of gccgo installation instructions, + minor updates to most docs. +* flag: add examples. +* gc: fix struct and array comparisons for new bool rules (thanks Anthony Martin), + use quoted string format in import error, + when expanding append inline, preserve arguments. +* go/build: clarify why we exclude files starting with '_' or '.' (thanks Shenghou Ma), + clearer argument name for Import (src -> srcDir), + do not report Target for local imports, + fix match. +* go/printer, gofmt: fix multi-line logic. +* html/template: add Templates and XXXEscape functions, + fix nil pointer bug, + fix panic on Clone. +* io/ioutil: fix crash when Stat fails. +* make.bat: fix for old files (thanks Christopher Redden), + don't show error message if old generated files do not exist (thanks Shenghou Ma), + properly handle directories with spaces (thanks Alex Brainman). +* misc/cgo/gmp: update for Go 1 (thanks Shenghou Ma). +* misc/dashboard: remove old python package dashboard. +* misc/dist: don't ship cmd/cov or cmd/prof, + force modes to 0755 or 0644 in tarballs, + remove exp and old before building. +* misc/vim: restore fileencodings (thanks Yasuhiro Matsumoto). +* net/http: couple more triv.go modernizations, + ensure triv.go compiles and runs (thanks Robert Hencke). +* net: drop unnecessary type assertions and fix leak in test (thanks Mikio Hara). +* os: IsNotExist() should also consider ERROR_PATH_NOT_FOUND on Windows (thanks Shenghou Ma), + do not assume syscall.Write will write everything, + remove document duplication in error predicate functions (thanks Shenghou Ma), + return some invented data from Stat(DevNull) on windows (thanks Alex Brainman). +* path/filepath: implement Match and Glob on windows (thanks Alex Brainman). +* reflect: document PkgPath, Method, StructField, + panic if MakeSlice is given bad len/cap arguments. +* run.bat: disable test in test\bench\go1 to fix build (thanks Alex Brainman). +* runtime/cgo: darwin signal masking (thanks Mikio Hara), + linux signal masking (thanks Mikio Hara). +* runtime: do not handle signals before configuring handler, + manage stack by ourselves for badcallback on windows/amd64 (thanks Shenghou Ma), + remove unused goc2c.c (thanks Shenghou Ma). +* sort: add time complexity to doc (thanks Stefan Nilsson), + fix computation of maxDepth to avoid infinite loop (thanks Stefan Nilsson). +* spec: delete references to unsafe.Reflect,Typeof,Unreflect. +* syscall: Test SCM_CREDENTIALS, SO_PASSCRED on Linux (thanks Albert Strasheim), + add a test for passing an fd over a unix socket, + delete passfd_test.go. +* test: use testlib in a few more cases (thanks Shenghou Ma). +* text/template: fix a couple of parse bugs around identifiers, + variables do not take arguments. +</pre> + +<h2 id="2012-03-13">2012-03-13 (Go 1 Release Candidate 1)</h2> + +<pre> +This weekly snapshot is very close to what we expect will be the contents of +the Go 1 release. There are still a few minor documentation issues to resolve, +and a handful of bugs that should be addressed before the release, but the vast +majority of Go programs should be completely unaffected by any changes we make +between now and the full release. + +If you're interested in helping us test, eager to try out Go 1, or just +curious, this weekly snapshot is the one to try. We'll issue a new App Engine +Go 1 beta SDK very soon, so if you're an App Engine user you can try it there +too. + +To help us focus on any remaining bugs and avoid introducing new ones, we will +restrict our attention to critical fixes and issues marked Go1-Must in the +issue tracker. Everything non-essential will be held until after the Go 1 +release is cut and in the field for a while. + +Changes in this snapshot: +* archive/zip: verify CRC32s in non-streamed files, + write data descriptor signature for OS X; fix bugs reading it. +* build: build correct cmd/dist matching GOHOSTARCH (thanks Shenghou Ma), + re-enable some broken tests in run.bash (thanks Shenghou Ma), + remove some references to Make.inc etc. + use run.go for running tests. +* builder: use short test for subrepos (thanks Shenghou Ma). +* cgo, runtime: diagnose callback on non-Go thread. +* cmd/api: set compiler for all build contexts, + work on Windows again, and make gccgo files work a bit more. +* cmd/cgo: document CGO_LDFLAGS and CGO_CFLAGS, + silence const warnings. +* cmd/dist, cmd/go: move CGO_ENABLED from 'go tool dist env' to 'go env' (thanks Shenghou Ma). +* cmd/dist: fix build for Linux/ARM (thanks Shenghou Ma), + use correct hg tag for go version (thanks Alex Brainman). +* cmd/fix: add rules for net/http -> net/http/httputil renames. +* cmd/gc: allow ~ in import paths, + delete old map delete in walk, + do not confuse unexported methods of same name, + if $GOROOT_FINAL is set, rewrite file names in object files, + implement len(array) / cap(array) rule, + import path cannot start with slash on Windows (thanks Shenghou Ma), + must not inline panic, recover, + show duplicate key in error, + unnamed struct types can have methods. +* cmd/go: add -compiler, + add env command, use to fix misc/cgo/testso, + allow go get with arbitrary URLs, + allow ssh tunnelled bzr, git and svn (thanks Ingo Oeser), + always provide .exe suffix on windows (thanks Shenghou Ma), + document import path meta tag discovery in go help remote, + honor buildflags in run, test (thanks Rémy Oudompheng), + local import fixes, + make go get new.code/... work, + rebuild external test package dependencies, + respect $GOBIN always, + support -compiler for go list, fix isStale for gccgo (thanks Rémy Oudompheng). +* cmd/godoc: add support for serving templates. + fix codewalk handler (thanks Francisco Souza). + remove extra / in paths (thanks Ugorji Nwoke), + support $GOPATH, simplify file system code, + switch on +1 buttons. +* cmd/gofmt: fix race in long test (thanks Mikio Hara). +* codereview: fix for Mercurial 2.1. +* crypto/x509: allow server gated crypto in windows systemVerify (thanks Mikkel Krautz), + do not forget to free cert context (thanks Alex Brainman), + don't include empty additional primes in PKCS#1 private key, + enforce path length constraint, + new home for root fetchers; build chains using Windows API (thanks Mikkel Krautz). +* csv: clarify what a negative FieldsPerRecord means. +* database/sql: add docs about connection state, pooling, + ensure Stmts are correctly closed (thanks Gwenael Treguier), + fix double connection free on Stmt.Query error, + fix typo bug resulting in double-Prepare. +* database/sql: add ErrBadConn. +* doc/go1: template packages have changed since r60. +* doc/go_mem: init-created goroutine behavior changes for Go 1 (thanks Shenghou Ma). +* doc/gopher: flip frontpage gopher's eyes. +* doc: add "About the go command" article, + add C? Go? Cgo! article (thanks Francisco Souza), + add Go's declaration syntax article (thanks Francisco Souza), + add more gophers, + add note about import . to Go 1 compatibility notes, + several doc fixes and improvements, + update Effective Go init section, + update progs/run (thanks Shenghou Ma), + update reference gopher, + web site tweaks. +* encoding/asn1: handle UTCTime before the year 2000. +* encoding/binary: improve package comment (thanks Stefan Nilsson). +* encoding/gob: fix memory corruption. +* encoding/json: document that nil slice encodes as `null`. +* exp/wingui: moved to code.google.com/p/gowingui. +* expvar: add locking to String, and use RWMutex properly throughout, + add missing locking in String methods. +* fmt, log: stop using unicode. +* fmt: minor tweak of package doc to show headings in godoc (thanks Volker Dobler). +* go/build, cmd/go: add support for .syso files. +* go/build: add NoGoError, + add dependency test, + do not parse .syso files (thanks Alex Brainman). +* go/parser: avoid endless loop in case of internal error, + better error synchronization. +* go/printer, gofmt: nicer formatting of multi-line returns. +* go/printer: example for Fprint. +* go/scanner: better panic diagnostic. +* go spec: no known implementation differences anymore, + fix inaccuracy in type identity definition. +* io: better document WriterAt. +* misc/dashboard: remove obsolete package builder code. +* misc/dist: add source archive support, + add windows installer and zip support, + minimum target requirement is 10.6 for Darwin (thanks Shenghou Ma). +* misc/emacs: fix extra indentation after comments that end with a period. +* misc/xcode: example install of language spec for Xcode 4.x (thanks Emil Hessman). +* net, net/rpc, reflect, time: document concurrency guarantees. +* net/http: fix crash with Transport.CloseIdleConnections, + return appropriate errors from ReadRequest. +* net: add skip message to test (thanks Mikio Hara), + disable use of external listen along with other external network uses, + do not use reflect for DNS messages (thanks Rémy Oudompheng), + document ReadMsgUnix, WriteMsgUnix, + fix TestDialTimeout on windows builder, + improve server and file tests (thanks Mikio Hara), + make Dial and Listen behavior consistent across over platforms (thanks Mikio Hara), + remove dependence on bytes, fmt, strconv, + silence another epoll print, + use IANA reserved port to test dial timeout (thanks Mikio Hara). +* os: document FileInfo.Size as system-dependent for irregular files, + fix SameFile to work for directories on windows (thanks Alex Brainman). +* path/filepath/path_test.go: repair and enable TestAbs. +* path/filepath: disable AbsTest on windows, + retrieve real file name in windows EvalSymlinks (thanks Alex Brainman). +* runtime/pprof: disable test on Leopard 64-bit. +* runtime: add Compiler, + fix windows/amd64 exception handler (thanks Alex Brainman), + inline calls to notok, + move runtime.write back to C, + print error on receipt of signal on non-Go thread, + remove unused runtime·signame and runtime·newError, + try extending arena size in 32-bit allocator (thanks Rémy Oudompheng), + wait for main goroutine before setting GOMAXPROCS (thanks Rémy Oudompheng). +* strconv: add table-based isPrint, remove dependence on bytes, unicode, and strings. +* sync/atomic: disable store and load test on a single processor machine (thanks Mikio Hara). +* syscall: fix mkall.sh, mksyscall_linux.pl, and regen for Linux/ARM (thanks Shenghou Ma). +* test/run: use all available cores on ARM system (thanks Shenghou Ma). +* test: actually run them on windows (thanks Alex Brainman), + add inherited interface test to ddd.go, + enable method expression tests in ddd.go, + invoke go command in run.go, + match gccgo error messages for bug388.go, + skip . files in directory. +* testing: do not print 'no tests' when there are examples. +* time: during short test, do not bother tickers take longer than expected (thanks Shenghou Ma), + mention receiver in Unix, UnixNano docs. +* unicode/utf16: remove dependence on package unicode. +* unicode/utf8: remove dependence on unicode. +* windows: make background of gopher icon transparent (thanks Volker Dobler). +</pre> + <h2 id="2012-03-04">2012-03-04</h2> <pre> diff --git a/doc/docs.html b/doc/docs.html index 52ec28edb..709c08152 100644 --- a/doc/docs.html +++ b/doc/docs.html @@ -31,6 +31,8 @@ libraries. <h2 id="learning">Learning Go</h2> +<img class="gopher" src="/doc/gopher/doc.png"/> + <h3 id="go_tour"><a href="http://tour.golang.org/">A Tour of Go</a></h3> <p> An interactive introduction to Go in three sections. @@ -68,13 +70,26 @@ Answers to common questions about Go. <h3 id="wiki"><a href="http://code.google.com/p/go-wiki/wiki">Go Language Community Wiki</a></h3> <p>A wiki maintained by the Go community.</p> +<h2 id="go1">Go version 1</h2> + +<h3 id="go1notes"><a href="/doc/go1.html">Go 1 Release Notes</a></h3> +<p> +A guide for updating your code to work with Go 1. +</p> + +<h3 id="go1compat"><a href="/doc/go1compat.html">Go 1 and the Future of Go Programs</a></h3> +<p> +What Go 1 defines and the backwards-compatibility guarantees one can expect as +Go 1 matures. +</p> + <h2 id="articles">Go Articles</h2> <h3 id="blog"><a href="http://blog.golang.org/">The Go Blog</a></h3> <p>The official blog of the Go project, featuring news and in-depth articles by the Go team and guests.</p> -<h3>Codewalks</h3> +<h4>Codewalks</h4> <p> Guided tours of Go programs. </p> @@ -85,38 +100,38 @@ Guided tours of Go programs. <li><a href="/doc/articles/wiki/">Writing Web Applications</a> - building a simple web application.</li> </ul> -<h3>Language</h3> - +<h4>Language</h4> <ul> <li><a href="http://blog.golang.org/2010/04/json-rpc-tale-of-interfaces.html">JSON-RPC: a tale of interfaces</a></li> -<li><a href="http://blog.golang.org/2010/07/gos-declaration-syntax.html">Go's Declaration Syntax</a></li> +<li><a href="/doc/articles/gos_declaration_syntax.html">Go's Declaration Syntax</a></li> <li><a href="/doc/articles/defer_panic_recover.html">Defer, Panic, and Recover</a></li> -<li><a href="http://blog.golang.org/2010/09/go-concurrency-patterns-timing-out-and.html">Go Concurrency Patterns: Timing out, moving on</a></li> +<li><a href="/doc/articles/concurrency_patterns.html">Go Concurrency Patterns: Timing out, moving on</a></li> <li><a href="/doc/articles/slices_usage_and_internals.html">Go Slices: usage and internals</a></li> <li><a href="http://blog.golang.org/2011/05/gif-decoder-exercise-in-go-interfaces.html">A GIF decoder: an exercise in Go interfaces</a></li> <li><a href="/doc/articles/error_handling.html">Error Handling and Go</a></li> </ul> -<h3>Packages</h3> - +<h4>Packages</h4> <ul> -<li><a href="http://blog.golang.org/2011/01/json-and-go.html">JSON and Go</a> - using the <a href="/pkg/encoding/json/">json</a> package.</li> -<li><a href="http://blog.golang.org/2011/03/gobs-of-data.html">Gobs of data</a> - the design and use of the <a href="/pkg/encoding/gob/">gob</a> package.</li> +<li><a href="/doc/articles/json_and_go.html">JSON and Go</a> - using the <a href="/pkg/encoding/json/">json</a> package.</li> +<li><a href="/doc/articles/gobs_of_data.html">Gobs of data</a> - the design and use of the <a href="/pkg/encoding/gob/">gob</a> package.</li> <li><a href="/doc/articles/laws_of_reflection.html">The Laws of Reflection</a> - the fundamentals of the <a href="/pkg/reflect/">reflect</a> package.</li> <li><a href="http://blog.golang.org/2011/09/go-image-package.html">The Go image package</a> - the fundamentals of the <a href="/pkg/image/">image</a> package.</li> -<li><a href="http://blog.golang.org/2011/09/go-imagedraw-package.html">The Go image/draw package</a> - the fundamentals of the <a href="/pkg/image/draw/">image/draw</a> package.</li> +<li><a href="/doc/articles/image_draw.html">The Go image/draw package</a> - the fundamentals of the <a href="/pkg/image/draw/">image/draw</a> package.</li> </ul> -<h3>Tools</h3> - +<h4>Tools</h4> <ul> -<li><a href="http://blog.golang.org/2011/03/c-go-cgo.html">C? Go? Cgo!</a> - linking against C code with <a href="/cmd/cgo/">cgo</a>.</li> -<li><a href="http://blog.golang.org/2011/03/godoc-documenting-go-code.html">Godoc: documenting Go code</a> - writing good documentation for <a href="/cmd/godoc/">godoc</a>.</li> +<li><a href="/doc/articles/go_command.html">About the Go command</a> - why we wrote it, what it is, what it's not, and how to use it.</li> +<li><a href="/doc/articles/c_go_cgo.html">C? Go? Cgo!</a> - linking against C code with <a href="/cmd/cgo/">cgo</a>.</li> +<li><a href="/doc/articles/godoc_documenting_go_code.html">Godoc: documenting Go code</a> - writing good documentation for <a href="/cmd/godoc/">godoc</a>.</li> <li><a href="http://blog.golang.org/2011/06/profiling-go-programs.html">Profiling Go Programs</a></li> </ul> <h2 id="talks">Talks</h2> +<img class="gopher" src="/doc/gopher/talks.png"/> + <p> The talks marked with a red asterisk (<font color="red">*</font>) were written before Go 1 and contain some examples that are no longer correct, but they are @@ -162,7 +177,7 @@ the simple example of an URL shortening service. See the <a href="http://wh3rd.net/practical-go/">presentation slides</a>. </p> -<h3 id="talks_more">More</h3> +<h4 id="talks_more">More</h4> <p> See the <a href="http://code.google.com/p/go-wiki/wiki/GoTalks">GoTalks page</a> at the <a href="http://code.google.com/p/go-wiki/wiki">Go Wiki</a> for @@ -179,6 +194,8 @@ documentation. <h2 id="community">The Go Community</h2> +<img class="gopher" src="/doc/gopher/project.png"/> + <h3 id="mailinglist"><a href="http://groups.google.com/group/golang-nuts">Go Nuts Mailing List</a></h3> <p>The <a href="http://groups.google.com/group/golang-nuts">golang-nuts</a> mailing list is for general Go discussion.</p> diff --git a/doc/effective_go.html b/doc/effective_go.html index b9e62b6db..80b285183 100644 --- a/doc/effective_go.html +++ b/doc/effective_go.html @@ -1,11 +1,7 @@ <!--{ - "Title": "Effective Go" + "Title": "Effective Go", + "Template": true }--> -<!-- - DO NOT EDIT: created by - tmpltohtml effective_go.tmpl ---> - <h2 id="introduction">Introduction</h2> @@ -775,7 +771,7 @@ error code secreted away in a volatile location. In Go, <code>Write</code> can return a count <i>and</i> an error: “Yes, you wrote some bytes but not all of them because you filled the device”. -The signature of <code>*File.Write</code> in package <code>os</code> is: +The signature of <code>File.Write</code> in package <code>os</code> is: </p> <pre> @@ -1331,9 +1327,9 @@ values of different types. The key can be of any type for which the equality operator is defined, such as integers, floating point and complex numbers, -strings, pointers, and interfaces (as long as the dynamic type -supports equality). Structs, arrays and slices cannot be used as map keys, -because equality is not defined on those types. +strings, pointers, interfaces (as long as the dynamic type +supports equality), structs and arrays. Slices cannot be used as map keys, +because equality is not defined on them. Like slices, maps are a reference type. If you pass a map to a function that changes the contents of the map, the changes will be visible in the caller. @@ -1456,7 +1452,7 @@ fmt.Println(fmt.Sprint("Hello ", 23)) </pre> <p> As mentioned in -the <a href="http://code.google.com/p/go-tour/">Tour</a>, <code>fmt.Fprint</code> +the <a href="http://tour.golang.org">Tour</a>, <code>fmt.Fprint</code> and friends take as a first argument any object that implements the <code>io.Writer</code> interface; the variables <code>os.Stdout</code> and <code>os.Stderr</code> are familiar instances. @@ -1693,47 +1689,13 @@ enumerator. Since <code>iota</code> can be part of an expression and expressions can be implicitly repeated, it is easy to build intricate sets of values. </p> -<pre><!--{{code "progs/eff_bytesize.go" `/^type ByteSize/` `/^\)/`}} --->type ByteSize float64 - -const ( - _ = iota // ignore first value by assigning to blank identifier - KB ByteSize = 1 << (10 * iota) - MB - GB - TB - PB - EB - ZB - YB -)</pre> +{{code "/doc/progs/eff_bytesize.go" `/^type ByteSize/` `/^\)/`}} <p> The ability to attach a method such as <code>String</code> to a type makes it possible for such values to format themselves automatically for printing, even as part of a general type. </p> -<pre><!--{{code "progs/eff_bytesize.go" `/^func.*ByteSize.*String/` `/^}/`}} --->func (b ByteSize) String() string { - switch { - case b >= YB: - return fmt.Sprintf("%.2fYB", float64(b/YB)) - case b >= ZB: - return fmt.Sprintf("%.2fZB", float64(b/ZB)) - case b >= EB: - return fmt.Sprintf("%.2fEB", float64(b/EB)) - case b >= PB: - return fmt.Sprintf("%.2fPB", float64(b/PB)) - case b >= TB: - return fmt.Sprintf("%.2fTB", float64(b/TB)) - case b >= GB: - return fmt.Sprintf("%.2fGB", float64(b/GB)) - case b >= MB: - return fmt.Sprintf("%.2fMB", float64(b/MB)) - case b >= KB: - return fmt.Sprintf("%.2fKB", float64(b/KB)) - } - return fmt.Sprintf("%.2fB", float64(b)) -}</pre> +{{code "/doc/progs/eff_bytesize.go" `/^func.*ByteSize.*String/` `/^}/`}} <p> (The <code>float64</code> conversions prevent <code>Sprintf</code> from recurring back through the <code>String</code> method for @@ -1761,10 +1723,7 @@ var ( <p> Finally, each source file can define its own niladic <code>init</code> function to set up whatever state is required. (Actually each file can have multiple -<code>init</code> functions.) The only restriction is that, although -goroutines can be launched during initialization, they will not begin -execution until it completes; initialization always runs as a single thread -of execution. +<code>init</code> functions.) And finally means finally: <code>init</code> is called after all the variable declarations in the package have evaluated their initializers, and those are evaluated only after all the imported packages have been @@ -1882,32 +1841,7 @@ by the routines in package <code>sort</code> if it implements and it could also have a custom formatter. In this contrived example <code>Sequence</code> satisfies both. </p> -<pre><!--{{code "progs/eff_sequence.go" `/^type/` "$"}} --->type Sequence []int - -// Methods required by sort.Interface. -func (s Sequence) Len() int { - return len(s) -} -func (s Sequence) Less(i, j int) bool { - return s[i] < s[j] -} -func (s Sequence) Swap(i, j int) { - s[i], s[j] = s[j], s[i] -} - -// Method for printing - sorts the elements before printing. -func (s Sequence) String() string { - sort.Sort(s) - str := "[" - for i, elem := range s { - if i > 0 { - str += " " - } - str += fmt.Sprint(elem) - } - return str + "]" -}</pre> +{{code "/doc/progs/eff_sequence.go" `/^type/` "$"}} <h3 id="conversions">Conversions</h3> @@ -1986,7 +1920,7 @@ A similar approach allows the streaming cipher algorithms in the various <code>crypto</code> packages to be separated from the block ciphers they chain together. The <code>Block</code> interface -in the <code>crypto/cipher</code>package specifies the +in the <code>crypto/cipher</code> package specifies the behavior of a block cipher, which provides encryption of a single block of data. Then, by analogy with the <code>bufio</code> package, @@ -2397,7 +2331,7 @@ it can also be seen as a type-safe generalization of Unix pipes. They're called <em>goroutines</em> because the existing terms—threads, coroutines, processes, and so on—convey inaccurate connotations. A goroutine has a simple model: it is a -function executing in parallel with other goroutines in the same +function executing concurrently with other goroutines in the same address space. It is lightweight, costing little more than the allocation of stack space. And the stacks start small, so they are cheap, and grow @@ -2418,12 +2352,12 @@ exits, silently. (The effect is similar to the Unix shell's background.) </p> <pre> -go list.Sort() // run list.Sort in parallel; don't wait for it. +go list.Sort() // run list.Sort concurrently; don't wait for it. </pre> <p> A function literal can be handy in a goroutine invocation. <pre> -func Announce(message string, delay int64) { +func Announce(message string, delay time.Duration) { go func() { time.Sleep(delay) fmt.Println(message) @@ -2763,8 +2697,8 @@ it is much more informative than the plain <p> When feasible, error strings should identify their origin, such as by having a prefix naming the package that generated the error. For example, in package -image, the string representation for a decoding error due to an unknown format -is "image: unknown format". +<code>image</code>, the string representation for a decoding error due to an +unknown format is "image: unknown format". </p> <p> @@ -2777,11 +2711,11 @@ field for recoverable failures. <pre> for try := 0; try < 2; try++ { - file, err = os.Open(filename) + file, err = os.Create(filename) if err == nil { return } - if e, ok := err.(*os.PathError); ok && e.Err == os.ENOSPC { + if e, ok := err.(*os.PathError); ok && e.Err == syscall.ENOSPC { deleteTempFiles() // Recover some space. continue } @@ -3013,53 +2947,7 @@ for instance, a URL, saving you typing the URL into the phone's tiny keyboard. Here's the complete program. An explanation follows. </p> -<pre><!--{{code "progs/eff_qr.go"}} --->package main - -import ( - "flag" - "log" - "net/http" - "text/template" -) - -var addr = flag.String("addr", ":1718", "http service address") // Q=17, R=18 - -var templ = template.Must(template.New("qr").Parse(templateStr)) - -func main() { - flag.Parse() - http.Handle("/", http.HandlerFunc(QR)) - err := http.ListenAndServe(*addr, nil) - if err != nil { - log.Fatal("ListenAndServe:", err) - } -} - -func QR(w http.ResponseWriter, req *http.Request) { - templ.Execute(w, req.FormValue("s")) -} - -const templateStr = ` -<html> -<head> -<title>QR Link Generator</title> -</head> -<body> -{{if .}} -<img src="http://chart.apis.google.com/chart?chs=300x300&cht=qr&choe=UTF-8&chl={{urlquery .}}" /> -<br> -{{html .}} -<br> -<br> -{{end}} -<form action="/" name=f method="GET"><input maxLength=1024 size=70 -name=s value="" title="Text to QR Encode"><input type=submit -value="Show QR" name=qr> -</form> -</body> -</html> -`</pre> +{{code "/doc/progs/eff_qr.go"}} <p> The pieces up to <code>main</code> should be easy to follow. The one flag sets a default HTTP port for our server. The template @@ -3085,19 +2973,19 @@ from data items passed to <code>templ.Execute</code>, in this case the form value. Within the template text (<code>templateStr</code>), double-brace-delimited pieces denote template actions. -The piece from <code>{{if .}}</code> -to <code>{{end}}</code> executes only if the value of the current data item, called <code>.</code> (dot), +The piece from <code>{{html "{{if .}}"}}</code> +to <code>{{html "{{end}}"}}</code> executes only if the value of the current data item, called <code>.</code> (dot), is non-empty. That is, when the string is empty, this piece of the template is suppressed. </p> <p> -The snippet <code>{{urlquery .}}</code> says to process the data with the function +The snippet <code>{{html "{{urlquery .}}"}}</code> says to process the data with the function <code>urlquery</code>, which sanitizes the query string for safe display on the web page. </p> <p> The rest of the template string is just the HTML to show when the page loads. -If this is too quick an explanation, see the <a href="/pkg/template/">documentation</a> +If this is too quick an explanation, see the <a href="/pkg/text/template/">documentation</a> for the template package for a more thorough discussion. </p> <p> diff --git a/doc/effective_go.tmpl b/doc/effective_go.tmpl deleted file mode 100644 index 9a0333dba..000000000 --- a/doc/effective_go.tmpl +++ /dev/null @@ -1,3011 +0,0 @@ -<!--{ - "Title": "Effective Go" -}--> -{{donotedit}} - -<h2 id="introduction">Introduction</h2> - -<p> -Go is a new language. Although it borrows ideas from -existing languages, -it has unusual properties that make effective Go programs -different in character from programs written in its relatives. -A straightforward translation of a C++ or Java program into Go -is unlikely to produce a satisfactory result—Java programs -are written in Java, not Go. -On the other hand, thinking about the problem from a Go -perspective could produce a successful but quite different -program. -In other words, -to write Go well, it's important to understand its properties -and idioms. -It's also important to know the established conventions for -programming in Go, such as naming, formatting, program -construction, and so on, so that programs you write -will be easy for other Go programmers to understand. -</p> - -<p> -This document gives tips for writing clear, idiomatic Go code. -It augments the <a href="/ref/spec">language specification</a>, -the <a href="http://tour.golang.org/">Tour of Go</a>, -and <a href="/doc/code.html">How to Write Go Code</a>, -all of which you -should read first. -</p> - -<h3 id="examples">Examples</h3> - -<p> -The <a href="/src/pkg/">Go package sources</a> -are intended to serve not -only as the core library but also as examples of how to -use the language. -If you have a question about how to approach a problem or how something -might be implemented, they can provide answers, ideas and -background. -</p> - - -<h2 id="formatting">Formatting</h2> - -<p> -Formatting issues are the most contentious -but the least consequential. -People can adapt to different formatting styles -but it's better if they don't have to, and -less time is devoted to the topic -if everyone adheres to the same style. -The problem is how to approach this Utopia without a long -prescriptive style guide. -</p> - -<p> -With Go we take an unusual -approach and let the machine -take care of most formatting issues. -The <code>gofmt</code> program -(also available as <code>go fmt</code>, which -operates at the package level rather than source file level) -reads a Go program -and emits the source in a standard style of indentation -and vertical alignment, retaining and if necessary -reformatting comments. -If you want to know how to handle some new layout -situation, run <code>gofmt</code>; if the answer doesn't -seem right, rearrange your program (or file a bug about <code>gofmt</code>), -don't work around it. -</p> - -<p> -As an example, there's no need to spend time lining up -the comments on the fields of a structure. -<code>Gofmt</code> will do that for you. Given the -declaration -</p> - -<pre> -type T struct { - name string // name of the object - value int // its value -} -</pre> - -<p> -<code>gofmt</code> will line up the columns: -</p> - -<pre> -type T struct { - name string // name of the object - value int // its value -} -</pre> - -<p> -All Go code in the standard packages has been formatted with <code>gofmt</code>. -</p> - - -<p> -Some formatting details remain. Very briefly, -</p> - -<dl> - <dt>Indentation</dt> - <dd>We use tabs for indentation and <code>gofmt</code> emits them by default. - Use spaces only if you must. - </dd> - <dt>Line length</dt> - <dd> - Go has no line length limit. Don't worry about overflowing a punched card. - If a line feels too long, wrap it and indent with an extra tab. - </dd> - <dt>Parentheses</dt> - <dd> - Go needs fewer parentheses: control structures (<code>if</code>, - <code>for</code>, <code>switch</code>) do not have parentheses in - their syntax. - Also, the operator precedence hierarchy is shorter and clearer, so -<pre> -x<<8 + y<<16 -</pre> - means what the spacing implies. - </dd> -</dl> - -<h2 id="commentary">Commentary</h2> - -<p> -Go provides C-style <code>/* */</code> block comments -and C++-style <code>//</code> line comments. -Line comments are the norm; -block comments appear mostly as package comments and -are also useful to disable large swaths of code. -</p> - -<p> -The program—and web server—<code>godoc</code> processes -Go source files to extract documentation about the contents of the -package. -Comments that appear before top-level declarations, with no intervening newlines, -are extracted along with the declaration to serve as explanatory text for the item. -The nature and style of these comments determines the -quality of the documentation <code>godoc</code> produces. -</p> - -<p> -Every package should have a <i>package comment</i>, a block -comment preceding the package clause. -For multi-file packages, the package comment only needs to be -present in one file, and any one will do. -The package comment should introduce the package and -provide information relevant to the package as a whole. -It will appear first on the <code>godoc</code> page and -should set up the detailed documentation that follows. -</p> - -<pre> -/* - Package regexp implements a simple library for - regular expressions. - - The syntax of the regular expressions accepted is: - - regexp: - concatenation { '|' concatenation } - concatenation: - { closure } - closure: - term [ '*' | '+' | '?' ] - term: - '^' - '$' - '.' - character - '[' [ '^' ] character-ranges ']' - '(' regexp ')' -*/ -package regexp -</pre> - -<p> -If the package is simple, the package comment can be brief. -</p> - -<pre> -// Package path implements utility routines for -// manipulating slash-separated filename paths. -</pre> - -<p> -Comments do not need extra formatting such as banners of stars. -The generated output may not even be presented in a fixed-width font, so don't depend -on spacing for alignment—<code>godoc</code>, like <code>gofmt</code>, -takes care of that. -The comments are uninterpreted plain text, so HTML and other -annotations such as <code>_this_</code> will reproduce <i>verbatim</i> and should -not be used. -Depending on the context, <code>godoc</code> might not even -reformat comments, so make sure they look good straight up: -use correct spelling, punctuation, and sentence structure, -fold long lines, and so on. -</p> - -<p> -Inside a package, any comment immediately preceding a top-level declaration -serves as a <i>doc comment</i> for that declaration. -Every exported (capitalized) name in a program should -have a doc comment. -</p> - -<p> -Doc comments work best as complete sentences, which allow -a wide variety of automated presentations. -The first sentence should be a one-sentence summary that -starts with the name being declared. -</p> - -<pre> -// Compile parses a regular expression and returns, if successful, a Regexp -// object that can be used to match against text. -func Compile(str string) (regexp *Regexp, err error) { -</pre> - -<p> -Go's declaration syntax allows grouping of declarations. -A single doc comment can introduce a group of related constants or variables. -Since the whole declaration is presented, such a comment can often be perfunctory. -</p> - -<pre> -// Error codes returned by failures to parse an expression. -var ( - ErrInternal = errors.New("regexp: internal error") - ErrUnmatchedLpar = errors.New("regexp: unmatched '('") - ErrUnmatchedRpar = errors.New("regexp: unmatched ')'") - ... -) -</pre> - -<p> -Even for private names, grouping can also indicate relationships between items, -such as the fact that a set of variables is protected by a mutex. -</p> - -<pre> -var ( - countLock sync.Mutex - inputCount uint32 - outputCount uint32 - errorCount uint32 -) -</pre> - -<h2 id="names">Names</h2> - -<p> -Names are as important in Go as in any other language. -In some cases they even have semantic effect: for instance, -the visibility of a name outside a package is determined by whether its -first character is upper case. -It's therefore worth spending a little time talking about naming conventions -in Go programs. -</p> - - -<h3 id="package-names">Package names</h3> - -<p> -When a package is imported, the package name becomes an accessor for the -contents. After -</p> - -<pre> -import "bytes" -</pre> - -<p> -the importing package can talk about <code>bytes.Buffer</code>. It's -helpful if everyone using the package can use the same name to refer to -its contents, which implies that the package name should be good: -short, concise, evocative. By convention, packages are given -lower case, single-word names; there should be no need for underscores -or mixedCaps. -Err on the side of brevity, since everyone using your -package will be typing that name. -And don't worry about collisions <i>a priori</i>. -The package name is only the default name for imports; it need not be unique -across all source code, and in the rare case of a collision the -importing package can choose a different name to use locally. -In any case, confusion is rare because the file name in the import -determines just which package is being used. -</p> - -<p> -Another convention is that the package name is the base name of -its source directory; -the package in <code>src/pkg/encoding/base64</code> -is imported as <code>"encoding/base64"</code> but has name <code>base64</code>, -not <code>encoding_base64</code> and not <code>encodingBase64</code>. -</p> - -<p> -The importer of a package will use the name to refer to its contents -(the <code>import .</code> notation is intended mostly for tests and other -unusual situations and should be avoided unless necessary), -so exported names in the package can use that fact -to avoid stutter. -For instance, the buffered reader type in the <code>bufio</code> package is called <code>Reader</code>, -not <code>BufReader</code>, because users see it as <code>bufio.Reader</code>, -which is a clear, concise name. -Moreover, -because imported entities are always addressed with their package name, <code>bufio.Reader</code> -does not conflict with <code>io.Reader</code>. -Similarly, the function to make new instances of <code>ring.Ring</code>—which -is the definition of a <em>constructor</em> in Go—would -normally be called <code>NewRing</code>, but since -<code>Ring</code> is the only type exported by the package, and since the -package is called <code>ring</code>, it's called just <code>New</code>, -which clients of the package see as <code>ring.New</code>. -Use the package structure to help you choose good names. -</p> - -<p> -Another short example is <code>once.Do</code>; -<code>once.Do(setup)</code> reads well and would not be improved by -writing <code>once.DoOrWaitUntilDone(setup)</code>. -Long names don't automatically make things more readable. -If the name represents something intricate or subtle, it's usually better -to write a helpful doc comment than to attempt to put all the information -into the name. -</p> - -<h3 id="Getters">Getters</h3> - -<p> -Go doesn't provide automatic support for getters and setters. -There's nothing wrong with providing getters and setters yourself, -and it's often appropriate to do so, but it's neither idiomatic nor necessary -to put <code>Get</code> into the getter's name. If you have a field called -<code>owner</code> (lower case, unexported), the getter method should be -called <code>Owner</code> (upper case, exported), not <code>GetOwner</code>. -The use of upper-case names for export provides the hook to discriminate -the field from the method. -A setter function, if needed, will likely be called <code>SetOwner</code>. -Both names read well in practice: -</p> -<pre> -owner := obj.Owner() -if owner != user { - obj.SetOwner(user) -} -</pre> - -<h3 id="interface-names">Interface names</h3> - -<p> -By convention, one-method interfaces are named by -the method name plus the -er suffix: <code>Reader</code>, -<code>Writer</code>, <code>Formatter</code> etc. -</p> - -<p> -There are a number of such names and it's productive to honor them and the function -names they capture. -<code>Read</code>, <code>Write</code>, <code>Close</code>, <code>Flush</code>, -<code>String</code> and so on have -canonical signatures and meanings. To avoid confusion, -don't give your method one of those names unless it -has the same signature and meaning. -Conversely, if your type implements a method with the -same meaning as a method on a well-known type, -give it the same name and signature; -call your string-converter method <code>String</code> not <code>ToString</code>. -</p> - -<h3 id="mixed-caps">MixedCaps</h3> - -<p> -Finally, the convention in Go is to use <code>MixedCaps</code> -or <code>mixedCaps</code> rather than underscores to write -multiword names. -</p> - -<h2 id="semicolons">Semicolons</h2> - -<p> -Like C, Go's formal grammar uses semicolons to terminate statements; -unlike C, those semicolons do not appear in the source. -Instead the lexer uses a simple rule to insert semicolons automatically -as it scans, so the input text is mostly free of them. -</p> - -<p> -The rule is this. If the last token before a newline is an identifier -(which includes words like <code>int</code> and <code>float64</code>), -a basic literal such as a number or string constant, or one of the -tokens -</p> -<pre> -break continue fallthrough return ++ -- ) } -</pre> -<p> -the lexer always inserts a semicolon after the token. -This could be summarized as, “if the newline comes -after a token that could end a statement, insert a semicolon”. -</p> - -<p> -A semicolon can also be omitted immediately before a closing brace, -so a statement such as -</p> -<pre> - go func() { for { dst <- <-src } }() -</pre> -<p> -needs no semicolons. -Idiomatic Go programs have semicolons only in places such as -<code>for</code> loop clauses, to separate the initializer, condition, and -continuation elements. They are also necessary to separate multiple -statements on a line, should you write code that way. -</p> - -<p> -One caveat. You should never put the opening brace of a -control structure (<code>if</code>, <code>for</code>, <code>switch</code>, -or <code>select</code>) on the next line. If you do, a semicolon -will be inserted before the brace, which could cause unwanted -effects. Write them like this -</p> - -<pre> -if i < f() { - g() -} -</pre> -<p> -not like this -</p> -<pre> -if i < f() // wrong! -{ // wrong! - g() -} -</pre> - - -<h2 id="control-structures">Control structures</h2> - -<p> -The control structures of Go are related to those of C but differ -in important ways. -There is no <code>do</code> or <code>while</code> loop, only a -slightly generalized -<code>for</code>; -<code>switch</code> is more flexible; -<code>if</code> and <code>switch</code> accept an optional -initialization statement like that of <code>for</code>; -and there are new control structures including a type switch and a -multiway communications multiplexer, <code>select</code>. -The syntax is also slightly different: -there are no parentheses -and the bodies must always be brace-delimited. -</p> - -<h3 id="if">If</h3> - -<p> -In Go a simple <code>if</code> looks like this: -</p> -<pre> -if x > 0 { - return y -} -</pre> - -<p> -Mandatory braces encourage writing simple <code>if</code> statements -on multiple lines. It's good style to do so anyway, -especially when the body contains a control statement such as a -<code>return</code> or <code>break</code>. -</p> - -<p> -Since <code>if</code> and <code>switch</code> accept an initialization -statement, it's common to see one used to set up a local variable. -</p> - -<pre> -if err := file.Chmod(0664); err != nil { - log.Print(err) - return err -} -</pre> - -<p id="else"> -In the Go libraries, you'll find that -when an <code>if</code> statement doesn't flow into the next statement—that is, -the body ends in <code>break</code>, <code>continue</code>, -<code>goto</code>, or <code>return</code>—the unnecessary -<code>else</code> is omitted. -</p> - -<pre> -f, err := os.Open(name) -if err != nil { - return err -} -codeUsing(f) -</pre> - -<p> -This is an example of a common situation where code must guard against a -sequence of error conditions. The code reads well if the -successful flow of control runs down the page, eliminating error cases -as they arise. Since error cases tend to end in <code>return</code> -statements, the resulting code needs no <code>else</code> statements. -</p> - -<pre> -f, err := os.Open(name) -if err != nil { - return err -} -d, err := f.Stat() -if err != nil { - f.Close() - return err -} -codeUsing(f, d) -</pre> - - -<h3 id="redeclaration">Redeclaration</h3> - -<p> -An aside: The last example in the previous section demonstrates a detail of how the -<code>:=</code> short declaration form works. -The declaration that calls <code>os.Open</code> reads, -</p> - -<pre> -f, err := os.Open(name) -</pre> - -<p> -This statement declares two variables, <code>f</code> and <code>err</code>. -A few lines later, the call to <code>f.Stat</code> reads, -</p> - -<pre> -d, err := f.Stat() -</pre> - -<p> -which looks as if it declares <code>d</code> and <code>err</code>. -Notice, though, that <code>err</code> appears in both statements. -This duplication is legal: <code>err</code> is declared by the first statement, -but only <em>re-assigned</em> in the second. -This means that the call to <code>f.Stat</code> uses the existing -<code>err</code> variable declared above, and just gives it a new value. -</p> - -<p> -In a <code>:=</code> declaration a variable <code>v</code> may appear even -if it has already been declared, provided: -</p> - -<ul> -<li>this declaration is in the same scope as the existing declaration of <code>v</code> -(if <code>v</code> is already declared in an outer scope, the declaration will create a new variable),</li> -<li>the corresponding value in the initialization is assignable to <code>v</code>, and</li> -<li>there is at least one other variable in the declaration that is being declared anew.</li> -</ul> - -<p> -This unusual property is pure pragmatism, -making it easy to use a single <code>err</code> value, for example, -in a long <code>if-else</code> chain. -You'll see it used often. -</p> - -<h3 id="for">For</h3> - -<p> -The Go <code>for</code> loop is similar to—but not the same as—C's. -It unifies <code>for</code> -and <code>while</code> and there is no <code>do-while</code>. -There are three forms, only one of which has semicolons. -</p> -<pre> -// Like a C for -for init; condition; post { } - -// Like a C while -for condition { } - -// Like a C for(;;) -for { } -</pre> - -<p> -Short declarations make it easy to declare the index variable right in the loop. -</p> -<pre> -sum := 0 -for i := 0; i < 10; i++ { - sum += i -} -</pre> - -<p> -If you're looping over an array, slice, string, or map, -or reading from a channel, a <code>range</code> clause can -manage the loop. -</p> -<pre> -var m map[string]int -sum := 0 -for _, value := range m { // key is unused - sum += value -} -</pre> - -<p> -For strings, the <code>range</code> does more work for you, breaking out individual -Unicode characters by parsing the UTF-8. -Erroneous encodings consume one byte and produce the -replacement rune U+FFFD. The loop -</p> -<pre> -for pos, char := range "日本語" { - fmt.Printf("character %c starts at byte position %d\n", char, pos) -} -</pre> -<p> -prints -</p> -<pre> -character 日 starts at byte position 0 -character 本 starts at byte position 3 -character 語 starts at byte position 6 -</pre> - -<p> -Finally, Go has no comma operator and <code>++</code> and <code>--</code> -are statements not expressions. -Thus if you want to run multiple variables in a <code>for</code> -you should use parallel assignment. -</p> -<pre> -// Reverse a -for i, j := 0, len(a)-1; i < j; i, j = i+1, j-1 { - a[i], a[j] = a[j], a[i] -} -</pre> - -<h3 id="switch">Switch</h3> - -<p> -Go's <code>switch</code> is more general than C's. -The expressions need not be constants or even integers, -the cases are evaluated top to bottom until a match is found, -and if the <code>switch</code> has no expression it switches on -<code>true</code>. -It's therefore possible—and idiomatic—to write an -<code>if</code>-<code>else</code>-<code>if</code>-<code>else</code> -chain as a <code>switch</code>. -</p> - -<pre> -func unhex(c byte) byte { - switch { - case '0' <= c && c <= '9': - return c - '0' - case 'a' <= c && c <= 'f': - return c - 'a' + 10 - case 'A' <= c && c <= 'F': - return c - 'A' + 10 - } - return 0 -} -</pre> - -<p> -There is no automatic fall through, but cases can be presented -in comma-separated lists. -<pre> -func shouldEscape(c byte) bool { - switch c { - case ' ', '?', '&', '=', '#', '+', '%': - return true - } - return false -} -</pre> - -<p> -Here's a comparison routine for byte arrays that uses two -<code>switch</code> statements: -<pre> -// Compare returns an integer comparing the two byte arrays -// lexicographically. -// The result will be 0 if a == b, -1 if a < b, and +1 if a > b -func Compare(a, b []byte) int { - for i := 0; i < len(a) && i < len(b); i++ { - switch { - case a[i] > b[i]: - return 1 - case a[i] < b[i]: - return -1 - } - } - switch { - case len(a) < len(b): - return -1 - case len(a) > len(b): - return 1 - } - return 0 -} -</pre> - -<p> -A switch can also be used to discover the dynamic type of an interface -variable. Such a <em>type switch</em> uses the syntax of a type -assertion with the keyword <code>type</code> inside the parentheses. -If the switch declares a variable in the expression, the variable will -have the corresponding type in each clause. -</p> -<pre> -switch t := interfaceValue.(type) { -default: - fmt.Printf("unexpected type %T", t) // %T prints type -case bool: - fmt.Printf("boolean %t\n", t) -case int: - fmt.Printf("integer %d\n", t) -case *bool: - fmt.Printf("pointer to boolean %t\n", *t) -case *int: - fmt.Printf("pointer to integer %d\n", *t) -} -</pre> - -<h2 id="functions">Functions</h2> - -<h3 id="multiple-returns">Multiple return values</h3> - -<p> -One of Go's unusual features is that functions and methods -can return multiple values. This form can be used to -improve on a couple of clumsy idioms in C programs: in-band -error returns (such as <code>-1</code> for <code>EOF</code>) -and modifying an argument. -</p> - -<p> -In C, a write error is signaled by a negative count with the -error code secreted away in a volatile location. -In Go, <code>Write</code> -can return a count <i>and</i> an error: “Yes, you wrote some -bytes but not all of them because you filled the device”. -The signature of <code>*File.Write</code> in package <code>os</code> is: -</p> - -<pre> -func (file *File) Write(b []byte) (n int, err error) -</pre> - -<p> -and as the documentation says, it returns the number of bytes -written and a non-nil <code>error</code> when <code>n</code> -<code>!=</code> <code>len(b)</code>. -This is a common style; see the section on error handling for more examples. -</p> - -<p> -A similar approach obviates the need to pass a pointer to a return -value to simulate a reference parameter. -Here's a simple-minded function to -grab a number from a position in a byte array, returning the number -and the next position. -</p> - -<pre> -func nextInt(b []byte, i int) (int, int) { - for ; i < len(b) && !isDigit(b[i]); i++ { - } - x := 0 - for ; i < len(b) && isDigit(b[i]); i++ { - x = x*10 + int(b[i])-'0' - } - return x, i -} -</pre> - -<p> -You could use it to scan the numbers in an input array <code>a</code> like this: -</p> - -<pre> - for i := 0; i < len(a); { - x, i = nextInt(a, i) - fmt.Println(x) - } -</pre> - -<h3 id="named-results">Named result parameters</h3> - -<p> -The return or result "parameters" of a Go function can be given names and -used as regular variables, just like the incoming parameters. -When named, they are initialized to the zero values for their types when -the function begins; if the function executes a <code>return</code> statement -with no arguments, the current values of the result parameters are -used as the returned values. -</p> - -<p> -The names are not mandatory but they can make code shorter and clearer: -they're documentation. -If we name the results of <code>nextInt</code> it becomes -obvious which returned <code>int</code> -is which. -</p> - -<pre> -func nextInt(b []byte, pos int) (value, nextPos int) { -</pre> - -<p> -Because named results are initialized and tied to an unadorned return, they can simplify -as well as clarify. Here's a version -of <code>io.ReadFull</code> that uses them well: -</p> - -<pre> -func ReadFull(r Reader, buf []byte) (n int, err error) { - for len(buf) > 0 && err == nil { - var nr int - nr, err = r.Read(buf) - n += nr - buf = buf[nr:] - } - return -} -</pre> - -<h3 id="defer">Defer</h3> - -<p> -Go's <code>defer</code> statement schedules a function call (the -<i>deferred</i> function) to be run immediately before the function -executing the <code>defer</code> returns. It's an unusual but -effective way to deal with situations such as resources that must be -released regardless of which path a function takes to return. The -canonical examples are unlocking a mutex or closing a file. -</p> - -<pre> -// Contents returns the file's contents as a string. -func Contents(filename string) (string, error) { - f, err := os.Open(filename) - if err != nil { - return "", err - } - defer f.Close() // f.Close will run when we're finished. - - var result []byte - buf := make([]byte, 100) - for { - n, err := f.Read(buf[0:]) - result = append(result, buf[0:n]...) // append is discussed later. - if err != nil { - if err == io.EOF { - break - } - return "", err // f will be closed if we return here. - } - } - return string(result), nil // f will be closed if we return here. -} -</pre> - -<p> -Deferring a call to a function such as <code>Close</code> has two advantages. First, it -guarantees that you will never forget to close the file, a mistake -that's easy to make if you later edit the function to add a new return -path. Second, it means that the close sits near the open, -which is much clearer than placing it at the end of the function. -</p> - -<p> -The arguments to the deferred function (which include the receiver if -the function is a method) are evaluated when the <i>defer</i> -executes, not when the <i>call</i> executes. Besides avoiding worries -about variables changing values as the function executes, this means -that a single deferred call site can defer multiple function -executions. Here's a silly example. -</p> - -<pre> -for i := 0; i < 5; i++ { - defer fmt.Printf("%d ", i) -} -</pre> - -<p> -Deferred functions are executed in LIFO order, so this code will cause -<code>4 3 2 1 0</code> to be printed when the function returns. A -more plausible example is a simple way to trace function execution -through the program. We could write a couple of simple tracing -routines like this: -</p> - -<pre> -func trace(s string) { fmt.Println("entering:", s) } -func untrace(s string) { fmt.Println("leaving:", s) } - -// Use them like this: -func a() { - trace("a") - defer untrace("a") - // do something.... -} -</pre> - -<p> -We can do better by exploiting the fact that arguments to deferred -functions are evaluated when the <code>defer</code> executes. The -tracing routine can set up the argument to the untracing routine. -This example: -</p> - -<pre> -func trace(s string) string { - fmt.Println("entering:", s) - return s -} - -func un(s string) { - fmt.Println("leaving:", s) -} - -func a() { - defer un(trace("a")) - fmt.Println("in a") -} - -func b() { - defer un(trace("b")) - fmt.Println("in b") - a() -} - -func main() { - b() -} -</pre> - -<p> -prints -</p> - -<pre> -entering: b -in b -entering: a -in a -leaving: a -leaving: b -</pre> - -<p> -For programmers accustomed to block-level resource management from -other languages, <code>defer</code> may seem peculiar, but its most -interesting and powerful applications come precisely from the fact -that it's not block-based but function-based. In the section on -<code>panic</code> and <code>recover</code> we'll see another -example of its possibilities. -</p> - -<h2 id="data">Data</h2> - -<h3 id="allocation_new">Allocation with <code>new</code></h3> - -<p> -Go has two allocation primitives, the built-in functions -<code>new</code> and <code>make</code>. -They do different things and apply to different types, which can be confusing, -but the rules are simple. -Let's talk about <code>new</code> first. -It's a built-in function that allocates memory, but unlike its namesakes -in some other languages it does not <em>initialize</em> the memory, -it only <em>zeroes</em> it. -That is, -<code>new(T)</code> allocates zeroed storage for a new item of type -<code>T</code> and returns its address, a value of type <code>*T</code>. -In Go terminology, it returns a pointer to a newly allocated zero value of type -<code>T</code>. -</p> - -<p> -Since the memory returned by <code>new</code> is zeroed, it's helpful to arrange -when designing your data structures that the -zero value of each type can be used without further initialization. This means a user of -the data structure can create one with <code>new</code> and get right to -work. -For example, the documentation for <code>bytes.Buffer</code> states that -"the zero value for <code>Buffer</code> is an empty buffer ready to use." -Similarly, <code>sync.Mutex</code> does not -have an explicit constructor or <code>Init</code> method. -Instead, the zero value for a <code>sync.Mutex</code> -is defined to be an unlocked mutex. -</p> - -<p> -The zero-value-is-useful property works transitively. Consider this type declaration. -</p> - -<pre> -type SyncedBuffer struct { - lock sync.Mutex - buffer bytes.Buffer -} -</pre> - -<p> -Values of type <code>SyncedBuffer</code> are also ready to use immediately upon allocation -or just declaration. In the next snippet, both <code>p</code> and <code>v</code> will work -correctly without further arrangement. -</p> - -<pre> -p := new(SyncedBuffer) // type *SyncedBuffer -var v SyncedBuffer // type SyncedBuffer -</pre> - -<h3 id="composite_literals">Constructors and composite literals</h3> - -<p> -Sometimes the zero value isn't good enough and an initializing -constructor is necessary, as in this example derived from -package <code>os</code>. -</p> - -<pre> -func NewFile(fd int, name string) *File { - if fd < 0 { - return nil - } - f := new(File) - f.fd = fd - f.name = name - f.dirinfo = nil - f.nepipe = 0 - return f -} -</pre> - -<p> -There's a lot of boiler plate in there. We can simplify it -using a <i>composite literal</i>, which is -an expression that creates a -new instance each time it is evaluated. -</p> - -<pre> -func NewFile(fd int, name string) *File { - if fd < 0 { - return nil - } - f := File{fd, name, nil, 0} - return &f -} -</pre> - -<p> -Note that, unlike in C, it's perfectly OK to return the address of a local variable; -the storage associated with the variable survives after the function -returns. -In fact, taking the address of a composite literal -allocates a fresh instance each time it is evaluated, -so we can combine these last two lines. -</p> - -<pre> - return &File{fd, name, nil, 0} -</pre> - -<p> -The fields of a composite literal are laid out in order and must all be present. -However, by labeling the elements explicitly as <i>field</i><code>:</code><i>value</i> -pairs, the initializers can appear in any -order, with the missing ones left as their respective zero values. Thus we could say -</p> - -<pre> - return &File{fd: fd, name: name} -</pre> - -<p> -As a limiting case, if a composite literal contains no fields at all, it creates -a zero value for the type. The expressions <code>new(File)</code> and <code>&File{}</code> are equivalent. -</p> - -<p> -Composite literals can also be created for arrays, slices, and maps, -with the field labels being indices or map keys as appropriate. -In these examples, the initializations work regardless of the values of <code>Enone</code>, -<code>Eio</code>, and <code>Einval</code>, as long as they are distinct. -</p> - -<pre> -a := [...]string {Enone: "no error", Eio: "Eio", Einval: "invalid argument"} -s := []string {Enone: "no error", Eio: "Eio", Einval: "invalid argument"} -m := map[int]string{Enone: "no error", Eio: "Eio", Einval: "invalid argument"} -</pre> - -<h3 id="allocation_make">Allocation with <code>make</code></h3> - -<p> -Back to allocation. -The built-in function <code>make(T, </code><i>args</i><code>)</code> serves -a purpose different from <code>new(T)</code>. -It creates slices, maps, and channels only, and it returns an <em>initialized</em> -(not <em>zeroed</em>) -value of type <code>T</code> (not <code>*T</code>). -The reason for the distinction -is that these three types are, under the covers, references to data structures that -must be initialized before use. -A slice, for example, is a three-item descriptor -containing a pointer to the data (inside an array), the length, and the -capacity, and until those items are initialized, the slice is <code>nil</code>. -For slices, maps, and channels, -<code>make</code> initializes the internal data structure and prepares -the value for use. -For instance, -</p> - -<pre> -make([]int, 10, 100) -</pre> - -<p> -allocates an array of 100 ints and then creates a slice -structure with length 10 and a capacity of 100 pointing at the first -10 elements of the array. -(When making a slice, the capacity can be omitted; see the section on slices -for more information.) -In contrast, <code>new([]int)</code> returns a pointer to a newly allocated, zeroed slice -structure, that is, a pointer to a <code>nil</code> slice value. - -<p> -These examples illustrate the difference between <code>new</code> and -<code>make</code>. -</p> - -<pre> -var p *[]int = new([]int) // allocates slice structure; *p == nil; rarely useful -var v []int = make([]int, 100) // the slice v now refers to a new array of 100 ints - -// Unnecessarily complex: -var p *[]int = new([]int) -*p = make([]int, 100, 100) - -// Idiomatic: -v := make([]int, 100) -</pre> - -<p> -Remember that <code>make</code> applies only to maps, slices and channels -and does not return a pointer. -To obtain an explicit pointer allocate with <code>new</code>. -</p> - -<h3 id="arrays">Arrays</h3> - -<p> -Arrays are useful when planning the detailed layout of memory and sometimes -can help avoid allocation, but primarily -they are a building block for slices, the subject of the next section. -To lay the foundation for that topic, here are a few words about arrays. -</p> - -<p> -There are major differences between the ways arrays work in Go and C. -In Go, -</p> -<ul> -<li> -Arrays are values. Assigning one array to another copies all the elements. -</li> -<li> -In particular, if you pass an array to a function, it -will receive a <i>copy</i> of the array, not a pointer to it. -<li> -The size of an array is part of its type. The types <code>[10]int</code> -and <code>[20]int</code> are distinct. -</li> -</ul> - -<p> -The value property can be useful but also expensive; if you want C-like behavior and efficiency, -you can pass a pointer to the array. -</p> - -<pre> -func Sum(a *[3]float64) (sum float64) { - for _, v := range *a { - sum += v - } - return -} - -array := [...]float64{7.0, 8.5, 9.1} -x := Sum(&array) // Note the explicit address-of operator -</pre> - -<p> -But even this style isn't idiomatic Go. Slices are. -</p> - -<h3 id="slices">Slices</h3> - -<p> -Slices wrap arrays to give a more general, powerful, and convenient -interface to sequences of data. Except for items with explicit -dimension such as transformation matrices, most array programming in -Go is done with slices rather than simple arrays. -</p> -<p> -Slices are <i>reference types</i>, which means that if you assign one -slice to another, both refer to the same underlying array. For -instance, if a function takes a slice argument, changes it makes to -the elements of the slice will be visible to the caller, analogous to -passing a pointer to the underlying array. A <code>Read</code> -function can therefore accept a slice argument rather than a pointer -and a count; the length within the slice sets an upper -limit of how much data to read. Here is the signature of the -<code>Read</code> method of the <code>File</code> type in package -<code>os</code>: -</p> -<pre> -func (file *File) Read(buf []byte) (n int, err error) -</pre> -<p> -The method returns the number of bytes read and an error value, if -any. To read into the first 32 bytes of a larger buffer -<code>b</code>, <i>slice</i> (here used as a verb) the buffer. -</p> -<pre> - n, err := f.Read(buf[0:32]) -</pre> -<p> -Such slicing is common and efficient. In fact, leaving efficiency aside for -the moment, this snippet would also read the first 32 bytes of the buffer. -</p> -<pre> - var n int - var err error - for i := 0; i < 32; i++ { - nbytes, e := f.Read(buf[i:i+1]) // Read one byte. - if nbytes == 0 || e != nil { - err = e - break - } - n += nbytes - } -</pre> -<p> -The length of a slice may be changed as long as it still fits within -the limits of the underlying array; just assign it to a slice of -itself. The <i>capacity</i> of a slice, accessible by the built-in -function <code>cap</code>, reports the maximum length the slice may -assume. Here is a function to append data to a slice. If the data -exceeds the capacity, the slice is reallocated. The -resulting slice is returned. The function uses the fact that -<code>len</code> and <code>cap</code> are legal when applied to the -<code>nil</code> slice, and return 0. -</p> -<pre> -func Append(slice, data[]byte) []byte { - l := len(slice) - if l + len(data) > cap(slice) { // reallocate - // Allocate double what's needed, for future growth. - newSlice := make([]byte, (l+len(data))*2) - // The copy function is predeclared and works for any slice type. - copy(newSlice, slice) - slice = newSlice - } - slice = slice[0:l+len(data)] - for i, c := range data { - slice[l+i] = c - } - return slice -} -</pre> -<p> -We must return the slice afterwards because, although <code>Append</code> -can modify the elements of <code>slice</code>, the slice itself (the run-time data -structure holding the pointer, length, and capacity) is passed by value. -<p> -The idea of appending to a slice is so useful it's captured by the -<code>append</code> built-in function. To understand that function's -design, though, we need a little more information, so we'll return -to it later. -</p> - - -<h3 id="maps">Maps</h3> - -<p> -Maps are a convenient and powerful built-in data structure to associate -values of different types. -The key can be of any type for which the equality operator is defined, -such as integers, -floating point and complex numbers, -strings, pointers, and interfaces (as long as the dynamic type -supports equality). Structs, arrays and slices cannot be used as map keys, -because equality is not defined on those types. -Like slices, maps are a reference type. If you pass a map to a function -that changes the contents of the map, the changes will be visible -in the caller. -</p> -<p> -Maps can be constructed using the usual composite literal syntax -with colon-separated key-value pairs, -so it's easy to build them during initialization. -</p> -<pre> -var timeZone = map[string] int { - "UTC": 0*60*60, - "EST": -5*60*60, - "CST": -6*60*60, - "MST": -7*60*60, - "PST": -8*60*60, -} -</pre> -<p> -Assigning and fetching map values looks syntactically just like -doing the same for arrays except that the index doesn't need to -be an integer. -</p> -<pre> -offset := timeZone["EST"] -</pre> -<p> -An attempt to fetch a map value with a key that -is not present in the map will return the zero value for the type -of the entries -in the map. For instance, if the map contains integers, looking -up a non-existent key will return <code>0</code>. -A set can be implemented as a map with value type <code>bool</code>. -Set the map entry to <code>true</code> to put the value in the set, and then -test it by simple indexing. -</p> -<pre> -attended := map[string] bool { - "Ann": true, - "Joe": true, - ... -} - -if attended[person] { // will be false if person is not in the map - fmt.Println(person, "was at the meeting") -} -</pre> -<p> -Sometimes you need to distinguish a missing entry from -a zero value. Is there an entry for <code>"UTC"</code> -or is that zero value because it's not in the map at all? -You can discriminate with a form of multiple assignment. -</p> -<pre> -var seconds int -var ok bool -seconds, ok = timeZone[tz] -</pre> -<p> -For obvious reasons this is called the “comma ok” idiom. -In this example, if <code>tz</code> is present, <code>seconds</code> -will be set appropriately and <code>ok</code> will be true; if not, -<code>seconds</code> will be set to zero and <code>ok</code> will -be false. -Here's a function that puts it together with a nice error report: -</p> -<pre> -func offset(tz string) int { - if seconds, ok := timeZone[tz]; ok { - return seconds - } - log.Println("unknown time zone:", tz) - return 0 -} -</pre> -<p> -To test for presence in the map without worrying about the actual value, -you can use the <em>blank identifier</em>, a simple underscore (<code>_</code>). -The blank identifier can be assigned or declared with any value of any type, with the -value discarded harmlessly. For testing just presence in a map, use the blank -identifier in place of the usual variable for the value. -</p> -<pre> -_, present := timeZone[tz] -</pre> -<p> -To delete a map entry, use the <code>delete</code> -built-in function, whose arguments are the map and the key to be deleted. -It's safe to do this this even if the key is already absent -from the map. -</p> -<pre> -delete(timeZone, "PDT") // Now on Standard Time -</pre> - -<h3 id="printing">Printing</h3> - -<p> -Formatted printing in Go uses a style similar to C's <code>printf</code> -family but is richer and more general. The functions live in the <code>fmt</code> -package and have capitalized names: <code>fmt.Printf</code>, <code>fmt.Fprintf</code>, -<code>fmt.Sprintf</code> and so on. The string functions (<code>Sprintf</code> etc.) -return a string rather than filling in a provided buffer. -</p> -<p> -You don't need to provide a format string. For each of <code>Printf</code>, -<code>Fprintf</code> and <code>Sprintf</code> there is another pair -of functions, for instance <code>Print</code> and <code>Println</code>. -These functions do not take a format string but instead generate a default -format for each argument. The <code>Println</code> versions also insert a blank -between arguments and append a newline to the output while -the <code>Print</code> versions add blanks only if the operand on neither side is a string. -In this example each line produces the same output. -</p> -<pre> -fmt.Printf("Hello %d\n", 23) -fmt.Fprint(os.Stdout, "Hello ", 23, "\n") -fmt.Println("Hello", 23) -fmt.Println(fmt.Sprint("Hello ", 23)) -</pre> -<p> -As mentioned in -the <a href="http://code.google.com/p/go-tour/">Tour</a>, <code>fmt.Fprint</code> -and friends take as a first argument any object -that implements the <code>io.Writer</code> interface; the variables <code>os.Stdout</code> -and <code>os.Stderr</code> are familiar instances. -</p> -<p> -Here things start to diverge from C. First, the numeric formats such as <code>%d</code> -do not take flags for signedness or size; instead, the printing routines use the -type of the argument to decide these properties. -</p> -<pre> -var x uint64 = 1<<64 - 1 -fmt.Printf("%d %x; %d %x\n", x, x, int64(x), int64(x)) -</pre> -<p> -prints -</p> -<pre> -18446744073709551615 ffffffffffffffff; -1 -1 -</pre> -<p> -If you just want the default conversion, such as decimal for integers, you can use -the catchall format <code>%v</code> (for “value”); the result is exactly -what <code>Print</code> and <code>Println</code> would produce. -Moreover, that format can print <em>any</em> value, even arrays, structs, and -maps. Here is a print statement for the time zone map defined in the previous section. -</p> -<pre> -fmt.Printf("%v\n", timeZone) // or just fmt.Println(timeZone) -</pre> -<p> -which gives output -</p> -<pre> -map[CST:-21600 PST:-28800 EST:-18000 UTC:0 MST:-25200] -</pre> -<p> -For maps the keys may be output in any order, of course. -When printing a struct, the modified format <code>%+v</code> annotates the -fields of the structure with their names, and for any value the alternate -format <code>%#v</code> prints the value in full Go syntax. -</p> -<pre> -type T struct { - a int - b float64 - c string -} -t := &T{ 7, -2.35, "abc\tdef" } -fmt.Printf("%v\n", t) -fmt.Printf("%+v\n", t) -fmt.Printf("%#v\n", t) -fmt.Printf("%#v\n", timeZone) -</pre> -<p> -prints -</p> -<pre> -&{7 -2.35 abc def} -&{a:7 b:-2.35 c:abc def} -&main.T{a:7, b:-2.35, c:"abc\tdef"} -map[string] int{"CST":-21600, "PST":-28800, "EST":-18000, "UTC":0, "MST":-25200} -</pre> -<p> -(Note the ampersands.) -That quoted string format is also available through <code>%q</code> when -applied to a value of type <code>string</code> or <code>[]byte</code>; -the alternate format <code>%#q</code> will use backquotes instead if possible. -Also, <code>%x</code> works on strings and arrays of bytes as well as on integers, -generating a long hexadecimal string, and with -a space in the format (<code>% x</code>) it puts spaces between the bytes. -</p> -<p> -Another handy format is <code>%T</code>, which prints the <em>type</em> of a value. -<pre> -fmt.Printf("%T\n", timeZone) -</pre> -<p> -prints -</p> -<pre> -map[string] int -</pre> -<p> -If you want to control the default format for a custom type, all that's required is to define -a method with the signature <code>String() string</code> on the type. -For our simple type <code>T</code>, that might look like this. -</p> -<pre> -func (t *T) String() string { - return fmt.Sprintf("%d/%g/%q", t.a, t.b, t.c) -} -fmt.Printf("%v\n", t) -</pre> -<p> -to print in the format -</p> -<pre> -7/-2.35/"abc\tdef" -</pre> -<p> -(If you need to print <em>values</em> of type <code>T</code> as well as pointers to <code>T</code>, -the receiver for <code>String</code> must be of value type; this example used a pointer because -that's more efficient and idiomatic for struct types. -See the section below on <a href="#pointers_vs_values">pointers vs. value receivers</a> for more information.) -</p> -<p> -Our <code>String</code> method is able to call <code>Sprintf</code> because the -print routines are fully reentrant and can be used recursively. -We can even go one step further and pass a print routine's arguments directly to another such routine. -The signature of <code>Printf</code> uses the type <code>...interface{}</code> -for its final argument to specify that an arbitrary number of parameters (of arbitrary type) -can appear after the format. -</p> -<pre> -func Printf(format string, v ...interface{}) (n int, err error) { -</pre> -<p> -Within the function <code>Printf</code>, <code>v</code> acts like a variable of type -<code>[]interface{}</code> but if it is passed to another variadic function, it acts like -a regular list of arguments. -Here is the implementation of the -function <code>log.Println</code> we used above. It passes its arguments directly to -<code>fmt.Sprintln</code> for the actual formatting. -</p> -<pre> -// Println prints to the standard logger in the manner of fmt.Println. -func Println(v ...interface{}) { - std.Output(2, fmt.Sprintln(v...)) // Output takes parameters (int, string) -} -</pre> -<p> -We write <code>...</code> after <code>v</code> in the nested call to <code>Sprintln</code> to tell the -compiler to treat <code>v</code> as a list of arguments; otherwise it would just pass -<code>v</code> as a single slice argument. -<p> -There's even more to printing than we've covered here. See the <code>godoc</code> documentation -for package <code>fmt</code> for the details. -</p> -<p> -By the way, a <code>...</code> parameter can be of a specific type, for instance <code>...int</code> -for a min function that chooses the least of a list of integers: -</p> -<pre> -func Min(a ...int) int { - min := int(^uint(0) >> 1) // largest int - for _, i := range a { - if i < min { - min = i - } - } - return min -} -</pre> - -<h3 id="append">Append</h3> -<p> -Now we have the missing piece we needed to explain the design of -the <code>append</code> built-in function. The signature of <code>append</code> -is different from our custom <code>Append</code> function above. -Schematically, it's like this: -</p> -<pre> -func append(slice []<i>T</i>, elements...T) []<i>T</i> -</pre> -<p> -where <i>T</i> is a placeholder for any given type. You can't -actually write a function in Go where the type <code>T</code> -is determined by the caller. -That's why <code>append</code> is built in: it needs support from the -compiler. -</p> -<p> -What <code>append</code> does is append the elements to the end of -the slice and return the result. The result needs to be returned -because, as with our hand-written <code>Append</code>, the underlying -array may change. This simple example -</p> -<pre> -x := []int{1,2,3} -x = append(x, 4, 5, 6) -fmt.Println(x) -</pre> -<p> -prints <code>[1 2 3 4 5 6]</code>. So <code>append</code> works a -little like <code>Printf</code>, collecting an arbitrary number of -arguments. -</p> -<p> -But what if we wanted to do what our <code>Append</code> does and -append a slice to a slice? Easy: use <code>...</code> at the call -site, just as we did in the call to <code>Output</code> above. This -snippet produces identical output to the one above. -</p> -<pre> -x := []int{1,2,3} -y := []int{4,5,6} -x = append(x, y...) -fmt.Println(x) -</pre> -<p> -Without that <code>...</code>, it wouldn't compile because the types -would be wrong; <code>y</code> is not of type <code>int</code>. -</p> - -<h2 id="initialization">Initialization</h2> - -<p> -Although it doesn't look superficially very different from -initialization in C or C++, initialization in Go is more powerful. -Complex structures can be built during initialization and the ordering -issues between initialized objects in different packages are handled -correctly. -</p> - -<h3 id="constants">Constants</h3> - -<p> -Constants in Go are just that—constant. -They are created at compile time, even when defined as -locals in functions, -and can only be numbers, strings or booleans. -Because of the compile-time restriction, the expressions -that define them must be constant expressions, -evaluatable by the compiler. For instance, -<code>1<<3</code> is a constant expression, while -<code>math.Sin(math.Pi/4)</code> is not because -the function call to <code>math.Sin</code> needs -to happen at run time. -</p> - -<p> -In Go, enumerated constants are created using the <code>iota</code> -enumerator. Since <code>iota</code> can be part of an expression and -expressions can be implicitly repeated, it is easy to build intricate -sets of values. -</p> -{{code "progs/eff_bytesize.go" `/^type ByteSize/` `/^\)/`}} -<p> -The ability to attach a method such as <code>String</code> to a -type makes it possible for such values to format themselves -automatically for printing, even as part of a general type. -</p> -{{code "progs/eff_bytesize.go" `/^func.*ByteSize.*String/` `/^}/`}} -<p> -(The <code>float64</code> conversions prevent <code>Sprintf</code> -from recurring back through the <code>String</code> method for -<code>ByteSize</code>.) -The expression <code>YB</code> prints as <code>1.00YB</code>, -while <code>ByteSize(1e13)</code> prints as <code>9.09TB</code>. -</p> - -<h3 id="variables">Variables</h3> - -<p> -Variables can be initialized just like constants but the -initializer can be a general expression computed at run time. -</p> -<pre> -var ( - HOME = os.Getenv("HOME") - USER = os.Getenv("USER") - GOROOT = os.Getenv("GOROOT") -) -</pre> - -<h3 id="init">The init function</h3> - -<p> -Finally, each source file can define its own niladic <code>init</code> function to -set up whatever state is required. (Actually each file can have multiple -<code>init</code> functions.) The only restriction is that, although -goroutines can be launched during initialization, they will not begin -execution until it completes; initialization always runs as a single thread -of execution. -And finally means finally: <code>init</code> is called after all the -variable declarations in the package have evaluated their initializers, -and those are evaluated only after all the imported packages have been -initialized. -</p> -<p> -Besides initializations that cannot be expressed as declarations, -a common use of <code>init</code> functions is to verify or repair -correctness of the program state before real execution begins. -</p> - -<pre> -func init() { - if USER == "" { - log.Fatal("$USER not set") - } - if HOME == "" { - HOME = "/usr/" + USER - } - if GOROOT == "" { - GOROOT = HOME + "/go" - } - // GOROOT may be overridden by --goroot flag on command line. - flag.StringVar(&GOROOT, "goroot", GOROOT, "Go root directory") -} -</pre> - -<h2 id="methods">Methods</h2> - -<h3 id="pointers_vs_values">Pointers vs. Values</h3> -<p> -Methods can be defined for any named type that is not a pointer or an interface; -the receiver does not have to be a struct. -<p> -In the discussion of slices above, we wrote an <code>Append</code> -function. We can define it as a method on slices instead. To do -this, we first declare a named type to which we can bind the method, and -then make the receiver for the method a value of that type. -</p> -<pre> -type ByteSlice []byte - -func (slice ByteSlice) Append(data []byte) []byte { - // Body exactly the same as above -} -</pre> -<p> -This still requires the method to return the updated slice. We can -eliminate that clumsiness by redefining the method to take a -<i>pointer</i> to a <code>ByteSlice</code> as its receiver, so the -method can overwrite the caller's slice. -</p> -<pre> -func (p *ByteSlice) Append(data []byte) { - slice := *p - // Body as above, without the return. - *p = slice -} -</pre> -<p> -In fact, we can do even better. If we modify our function so it looks -like a standard <code>Write</code> method, like this, -</p> -<pre> -func (p *ByteSlice) Write(data []byte) (n int, err error) { - slice := *p - // Again as above. - *p = slice - return len(data), nil -} -</pre> -<p> -then the type <code>*ByteSlice</code> satisfies the standard interface -<code>io.Writer</code>, which is handy. For instance, we can -print into one. -</p> -<pre> - var b ByteSlice - fmt.Fprintf(&b, "This hour has %d days\n", 7) -</pre> -<p> -We pass the address of a <code>ByteSlice</code> -because only <code>*ByteSlice</code> satisfies <code>io.Writer</code>. -The rule about pointers vs. values for receivers is that value methods -can be invoked on pointers and values, but pointer methods can only be -invoked on pointers. This is because pointer methods can modify the -receiver; invoking them on a copy of the value would cause those -modifications to be discarded. -</p> -<p> -By the way, the idea of using <code>Write</code> on a slice of bytes -is implemented by <code>bytes.Buffer</code>. -</p> - -<h2 id="interfaces_and_types">Interfaces and other types</h2> - -<h3 id="interfaces">Interfaces</h3> -<p> -Interfaces in Go provide a way to specify the behavior of an -object: if something can do <em>this</em>, then it can be used -<em>here</em>. We've seen a couple of simple examples already; -custom printers can be implemented by a <code>String</code> method -while <code>Fprintf</code> can generate output to anything -with a <code>Write</code> method. -Interfaces with only one or two methods are common in Go code, and are -usually given a name derived from the method, such as <code>io.Writer</code> -for something that implements <code>Write</code>. -</p> -<p> -A type can implement multiple interfaces. -For instance, a collection can be sorted -by the routines in package <code>sort</code> if it implements -<code>sort.Interface</code>, which contains <code>Len()</code>, -<code>Less(i, j int) bool</code>, and <code>Swap(i, j int)</code>, -and it could also have a custom formatter. -In this contrived example <code>Sequence</code> satisfies both. -</p> -{{code "progs/eff_sequence.go" `/^type/` "$"}} - -<h3 id="conversions">Conversions</h3> - -<p> -The <code>String</code> method of <code>Sequence</code> is recreating the -work that <code>Sprint</code> already does for slices. We can share the -effort if we convert the <code>Sequence</code> to a plain -<code>[]int</code> before calling <code>Sprint</code>. -</p> -<pre> -func (s Sequence) String() string { - sort.Sort(s) - return fmt.Sprint([]int(s)) -} -</pre> -<p> -The conversion causes <code>s</code> to be treated as an ordinary slice -and therefore receive the default formatting. -Without the conversion, <code>Sprint</code> would find the -<code>String</code> method of <code>Sequence</code> and recur indefinitely. -Because the two types (<code>Sequence</code> and <code>[]int</code>) -are the same if we ignore the type name, it's legal to convert between them. -The conversion doesn't create a new value, it just temporarily acts -as though the existing value has a new type. -(There are other legal conversions, such as from integer to floating point, that -do create a new value.) -</p> -<p> -It's an idiom in Go programs to convert the -type of an expression to access a different -set of methods. As an example, we could use the existing -type <code>sort.IntSlice</code> to reduce the entire example -to this: -</p> -<pre> -type Sequence []int - -// Method for printing - sorts the elements before printing -func (s Sequence) String() string { - sort.IntSlice(s).Sort() - return fmt.Sprint([]int(s)) -} -</pre> -<p> -Now, instead of having <code>Sequence</code> implement multiple -interfaces (sorting and printing), we're using the ability of a data item to be -converted to multiple types (<code>Sequence</code>, <code>sort.IntSlice</code> -and <code>[]int</code>), each of which does some part of the job. -That's more unusual in practice but can be effective. -</p> - -<h3 id="generality">Generality</h3> -<p> -If a type exists only to implement an interface -and has no exported methods beyond that interface, -there is no need to export the type itself. -Exporting just the interface makes it clear that -it's the behavior that matters, not the implementation, -and that other implementations with different properties -can mirror the behavior of the original type. -It also avoids the need to repeat the documentation -on every instance of a common method. -</p> -<p> -In such cases, the constructor should return an interface value -rather than the implementing type. -As an example, in the hash libraries -both <code>crc32.NewIEEE</code> and <code>adler32.New</code> -return the interface type <code>hash.Hash32</code>. -Substituting the CRC-32 algorithm for Adler-32 in a Go program -requires only changing the constructor call; -the rest of the code is unaffected by the change of algorithm. -</p> -<p> -A similar approach allows the streaming cipher algorithms -in the various <code>crypto</code> packages to be -separated from the block ciphers they chain together. -The <code>Block</code> interface -in the <code>crypto/cipher</code>package specifies the -behavior of a block cipher, which provides encryption -of a single block of data. -Then, by analogy with the <code>bufio</code> package, -cipher packages that implement this interface -can be used to construct streaming ciphers, represented -by the <code>Stream</code> interface, without -knowing the details of the block encryption. -</p> -<p> -The <code>crypto/cipher</code> interfaces look like this: -</p> -<pre> -type Block interface { - BlockSize() int - Encrypt(src, dst []byte) - Decrypt(src, dst []byte) -} - -type Stream interface { - XORKeyStream(dst, src []byte) -} -</pre> - -<p> -Here's the definition of the counter mode (CTR) stream, -which turns a block cipher into a streaming cipher; notice -that the block cipher's details are abstracted away: -</p> - -<pre> -// NewCTR returns a Stream that encrypts/decrypts using the given Block in -// counter mode. The length of iv must be the same as the Block's block size. -func NewCTR(block Block, iv []byte) Stream -</pre> -<p> -<code>NewCTR</code> applies not -just to one specific encryption algorithm and data source but to any -implementation of the <code>Block</code> interface and any -<code>Stream</code>. Because they return -interface values, replacing CTR -encryption with other encryption modes is a localized change. The constructor -calls must be edited, but because the surrounding code must treat the result only -as a <code>Stream</code>, it won't notice the difference. -</p> - -<h3 id="interface_methods">Interfaces and methods</h3> -<p> -Since almost anything can have methods attached, almost anything can -satisfy an interface. One illustrative example is in the <code>http</code> -package, which defines the <code>Handler</code> interface. Any object -that implements <code>Handler</code> can serve HTTP requests. -</p> -<pre> -type Handler interface { - ServeHTTP(ResponseWriter, *Request) -} -</pre> -<p> -<code>ResponseWriter</code> is itself an interface that provides access -to the methods needed to return the response to the client. -Those methods include the standard <code>Write</code> method, so an -<code>http.ResponseWriter</code> can be used wherever an <code>io.Writer</code> -can be used. -<code>Request</code> is a struct containing a parsed representation -of the request from the client. -<p> -For brevity, let's ignore POSTs and assume HTTP requests are always -GETs; that simplification does not affect the way the handlers are -set up. Here's a trivial but complete implementation of a handler to -count the number of times the -page is visited. -</p> -<pre> -// Simple counter server. -type Counter struct { - n int -} - -func (ctr *Counter) ServeHTTP(w http.ResponseWriter, req *http.Request) { - ctr.n++ - fmt.Fprintf(w, "counter = %d\n", ctr.n) -} -</pre> -<p> -(Keeping with our theme, note how <code>Fprintf</code> can print to an -<code>http.ResponseWriter</code>.) -For reference, here's how to attach such a server to a node on the URL tree. -<pre> -import "net/http" -... -ctr := new(Counter) -http.Handle("/counter", ctr) -</pre> -<p> -But why make <code>Counter</code> a struct? An integer is all that's needed. -(The receiver needs to be a pointer so the increment is visible to the caller.) -</p> -<pre> -// Simpler counter server. -type Counter int - -func (ctr *Counter) ServeHTTP(w http.ResponseWriter, req *http.Request) { - *ctr++ - fmt.Fprintf(w, "counter = %d\n", *ctr) -} -</pre> -<p> -What if your program has some internal state that needs to be notified that a page -has been visited? Tie a channel to the web page. -</p> -<pre> -// A channel that sends a notification on each visit. -// (Probably want the channel to be buffered.) -type Chan chan *http.Request - -func (ch Chan) ServeHTTP(w http.ResponseWriter, req *http.Request) { - ch <- req - fmt.Fprint(w, "notification sent") -} -</pre> -<p> -Finally, let's say we wanted to present on <code>/args</code> the arguments -used when invoking the server binary. -It's easy to write a function to print the arguments. -</p> -<pre> -func ArgServer() { - for _, s := range os.Args { - fmt.Println(s) - } -} -</pre> -<p> -How do we turn that into an HTTP server? We could make <code>ArgServer</code> -a method of some type whose value we ignore, but there's a cleaner way. -Since we can define a method for any type except pointers and interfaces, -we can write a method for a function. -The <code>http</code> package contains this code: -</p> -<pre> -// The HandlerFunc type is an adapter to allow the use of -// ordinary functions as HTTP handlers. If f is a function -// with the appropriate signature, HandlerFunc(f) is a -// Handler object that calls f. -type HandlerFunc func(ResponseWriter, *Request) - -// ServeHTTP calls f(c, req). -func (f HandlerFunc) ServeHTTP(w ResponseWriter, req *Request) { - f(w, req) -} -</pre> -<p> -<code>HandlerFunc</code> is a type with a method, <code>ServeHTTP</code>, -so values of that type can serve HTTP requests. Look at the implementation -of the method: the receiver is a function, <code>f</code>, and the method -calls <code>f</code>. That may seem odd but it's not that different from, say, -the receiver being a channel and the method sending on the channel. -</p> -<p> -To make <code>ArgServer</code> into an HTTP server, we first modify it -to have the right signature. -</p> -<pre> -// Argument server. -func ArgServer(w http.ResponseWriter, req *http.Request) { - for _, s := range os.Args { - fmt.Fprintln(w, s) - } -} -</pre> -<p> -<code>ArgServer</code> now has same signature as <code>HandlerFunc</code>, -so it can be converted to that type to access its methods, -just as we converted <code>Sequence</code> to <code>IntSlice</code> -to access <code>IntSlice.Sort</code>. -The code to set it up is concise: -</p> -<pre> -http.Handle("/args", http.HandlerFunc(ArgServer)) -</pre> -<p> -When someone visits the page <code>/args</code>, -the handler installed at that page has value <code>ArgServer</code> -and type <code>HandlerFunc</code>. -The HTTP server will invoke the method <code>ServeHTTP</code> -of that type, with <code>ArgServer</code> as the receiver, which will in turn call -<code>ArgServer</code> (via the invocation <code>f(c, req)</code> -inside <code>HandlerFunc.ServeHTTP</code>). -The arguments will then be displayed. -</p> -<p> -In this section we have made an HTTP server from a struct, an integer, -a channel, and a function, all because interfaces are just sets of -methods, which can be defined for (almost) any type. -</p> - -<h2 id="embedding">Embedding</h2> - -<p> -Go does not provide the typical, type-driven notion of subclassing, -but it does have the ability to “borrow” pieces of an -implementation by <em>embedding</em> types within a struct or -interface. -</p> -<p> -Interface embedding is very simple. -We've mentioned the <code>io.Reader</code> and <code>io.Writer</code> interfaces before; -here are their definitions. -</p> -<pre> -type Reader interface { - Read(p []byte) (n int, err error) -} - -type Writer interface { - Write(p []byte) (n int, err error) -} -</pre> -<p> -The <code>io</code> package also exports several other interfaces -that specify objects that can implement several such methods. -For instance, there is <code>io.ReadWriter</code>, an interface -containing both <code>Read</code> and <code>Write</code>. -We could specify <code>io.ReadWriter</code> by listing the -two methods explicitly, but it's easier and more evocative -to embed the two interfaces to form the new one, like this: -</p> -<pre> -// ReadWriter is the interface that combines the Reader and Writer interfaces. -type ReadWriter interface { - Reader - Writer -} -</pre> -<p> -This says just what it looks like: A <code>ReadWriter</code> can do -what a <code>Reader</code> does <em>and</em> what a <code>Writer</code> -does; it is a union of the embedded interfaces (which must be disjoint -sets of methods). -Only interfaces can be embedded within interfaces. -<p> -The same basic idea applies to structs, but with more far-reaching -implications. The <code>bufio</code> package has two struct types, -<code>bufio.Reader</code> and <code>bufio.Writer</code>, each of -which of course implements the analogous interfaces from package -<code>io</code>. -And <code>bufio</code> also implements a buffered reader/writer, -which it does by combining a reader and a writer into one struct -using embedding: it lists the types within the struct -but does not give them field names. -</p> -<pre> -// ReadWriter stores pointers to a Reader and a Writer. -// It implements io.ReadWriter. -type ReadWriter struct { - *Reader // *bufio.Reader - *Writer // *bufio.Writer -} -</pre> -<p> -The embedded elements are pointers to structs and of course -must be initialized to point to valid structs before they -can be used. -The <code>ReadWriter</code> struct could be written as -</p> -<pre> -type ReadWriter struct { - reader *Reader - writer *Writer -} -</pre> -<p> -but then to promote the methods of the fields and to -satisfy the <code>io</code> interfaces, we would also need -to provide forwarding methods, like this: -</p> -<pre> -func (rw *ReadWriter) Read(p []byte) (n int, err error) { - return rw.reader.Read(p) -} -</pre> -<p> -By embedding the structs directly, we avoid this bookkeeping. -The methods of embedded types come along for free, which means that <code>bufio.ReadWriter</code> -not only has the methods of <code>bufio.Reader</code> and <code>bufio.Writer</code>, -it also satisfies all three interfaces: -<code>io.Reader</code>, -<code>io.Writer</code>, and -<code>io.ReadWriter</code>. -</p> -<p> -There's an important way in which embedding differs from subclassing. When we embed a type, -the methods of that type become methods of the outer type, -but when they are invoked the receiver of the method is the inner type, not the outer one. -In our example, when the <code>Read</code> method of a <code>bufio.ReadWriter</code> is -invoked, it has exactly the same effect as the forwarding method written out above; -the receiver is the <code>reader</code> field of the <code>ReadWriter</code>, not the -<code>ReadWriter</code> itself. -</p> -<p> -Embedding can also be a simple convenience. -This example shows an embedded field alongside a regular, named field. -</p> -<pre> -type Job struct { - Command string - *log.Logger -} -</pre> -<p> -The <code>Job</code> type now has the <code>Log</code>, <code>Logf</code> -and other -methods of <code>*log.Logger</code>. We could have given the <code>Logger</code> -a field name, of course, but it's not necessary to do so. And now, once -initialized, we can -log to the <code>Job</code>: -</p> -<pre> -job.Log("starting now...") -</pre> -<p> -The <code>Logger</code> is a regular field of the struct and we can initialize -it in the usual way with a constructor, -</p> -<pre> -func NewJob(command string, logger *log.Logger) *Job { - return &Job{command, logger} -} -</pre> -<p> -or with a composite literal, -</p> -<pre> -job := &Job{command, log.New(os.Stderr, "Job: ", log.Ldate)} -</pre> -<p> -If we need to refer to an embedded field directly, the type name of the field, -ignoring the package qualifier, serves as a field name. If we needed to access the -<code>*log.Logger</code> of a <code>Job</code> variable <code>job</code>, -we would write <code>job.Logger</code>. -This would be useful if we wanted to refine the methods of <code>Logger</code>. -</p> -<pre> -func (job *Job) Logf(format string, args ...interface{}) { - job.Logger.Logf("%q: %s", job.Command, fmt.Sprintf(format, args)) -} -</pre> -<p> -Embedding types introduces the problem of name conflicts but the rules to resolve -them are simple. -First, a field or method <code>X</code> hides any other item <code>X</code> in a more deeply -nested part of the type. -If <code>log.Logger</code> contained a field or method called <code>Command</code>, the <code>Command</code> field -of <code>Job</code> would dominate it. -</p> -<p> -Second, if the same name appears at the same nesting level, it is usually an error; -it would be erroneous to embed <code>log.Logger</code> if the <code>Job</code> struct -contained another field or method called <code>Logger</code>. -However, if the duplicate name is never mentioned in the program outside the type definition, it is OK. -This qualification provides some protection against changes made to types embedded from outside; there -is no problem if a field is added that conflicts with another field in another subtype if neither field -is ever used. -</p> - - -<h2 id="concurrency">Concurrency</h2> - -<h3 id="sharing">Share by communicating</h3> - -<p> -Concurrent programming is a large topic and there is space only for some -Go-specific highlights here. -</p> -<p> -Concurrent programming in many environments is made difficult by the -subtleties required to implement correct access to shared variables. Go encourages -a different approach in which shared values are passed around on channels -and, in fact, never actively shared by separate threads of execution. -Only one goroutine has access to the value at any given time. -Data races cannot occur, by design. -To encourage this way of thinking we have reduced it to a slogan: -</p> -<blockquote> -Do not communicate by sharing memory; -instead, share memory by communicating. -</blockquote> -<p> -This approach can be taken too far. Reference counts may be best done -by putting a mutex around an integer variable, for instance. But as a -high-level approach, using channels to control access makes it easier -to write clear, correct programs. -</p> -<p> -One way to think about this model is to consider a typical single-threaded -program running on one CPU. It has no need for synchronization primitives. -Now run another such instance; it too needs no synchronization. Now let those -two communicate; if the communication is the synchronizer, there's still no need -for other synchronization. Unix pipelines, for example, fit this model -perfectly. Although Go's approach to concurrency originates in Hoare's -Communicating Sequential Processes (CSP), -it can also be seen as a type-safe generalization of Unix pipes. -</p> - -<h3 id="goroutines">Goroutines</h3> - -<p> -They're called <em>goroutines</em> because the existing -terms—threads, coroutines, processes, and so on—convey -inaccurate connotations. A goroutine has a simple model: it is a -function executing in parallel with other goroutines in the same -address space. It is lightweight, costing little more than the -allocation of stack space. -And the stacks start small, so they are cheap, and grow -by allocating (and freeing) heap storage as required. -</p> -<p> -Goroutines are multiplexed onto multiple OS threads so if one should -block, such as while waiting for I/O, others continue to run. Their -design hides many of the complexities of thread creation and -management. -</p> -<p> -Prefix a function or method call with the <code>go</code> -keyword to run the call in a new goroutine. -When the call completes, the goroutine -exits, silently. (The effect is similar to the Unix shell's -<code>&</code> notation for running a command in the -background.) -</p> -<pre> -go list.Sort() // run list.Sort in parallel; don't wait for it. -</pre> -<p> -A function literal can be handy in a goroutine invocation. -<pre> -func Announce(message string, delay int64) { - go func() { - time.Sleep(delay) - fmt.Println(message) - }() // Note the parentheses - must call the function. -} -</pre> -<p> -In Go, function literals are closures: the implementation makes -sure the variables referred to by the function survive as long as they are active. -<p> -These examples aren't too practical because the functions have no way of signaling -completion. For that, we need channels. -</p> - -<h3 id="channels">Channels</h3> - -<p> -Like maps, channels are a reference type and are allocated with <code>make</code>. -If an optional integer parameter is provided, it sets the buffer size for the channel. -The default is zero, for an unbuffered or synchronous channel. -</p> -<pre> -ci := make(chan int) // unbuffered channel of integers -cj := make(chan int, 0) // unbuffered channel of integers -cs := make(chan *os.File, 100) // buffered channel of pointers to Files -</pre> -<p> -Channels combine communication—the exchange of a value—with -synchronization—guaranteeing that two calculations (goroutines) are in -a known state. -</p> -<p> -There are lots of nice idioms using channels. Here's one to get us started. -In the previous section we launched a sort in the background. A channel -can allow the launching goroutine to wait for the sort to complete. -</p> -<pre> -c := make(chan int) // Allocate a channel. -// Start the sort in a goroutine; when it completes, signal on the channel. -go func() { - list.Sort() - c <- 1 // Send a signal; value does not matter. -}() -doSomethingForAWhile() -<-c // Wait for sort to finish; discard sent value. -</pre> -<p> -Receivers always block until there is data to receive. -If the channel is unbuffered, the sender blocks until the receiver has -received the value. -If the channel has a buffer, the sender blocks only until the -value has been copied to the buffer; if the buffer is full, this -means waiting until some receiver has retrieved a value. -</p> -<p> -A buffered channel can be used like a semaphore, for instance to -limit throughput. In this example, incoming requests are passed -to <code>handle</code>, which sends a value into the channel, processes -the request, and then receives a value from the channel. -The capacity of the channel buffer limits the number of -simultaneous calls to <code>process</code>. -</p> -<pre> -var sem = make(chan int, MaxOutstanding) - -func handle(r *Request) { - sem <- 1 // Wait for active queue to drain. - process(r) // May take a long time. - <-sem // Done; enable next request to run. -} - -func Serve(queue chan *Request) { - for { - req := <-queue - go handle(req) // Don't wait for handle to finish. - } -} -</pre> -<p> -Here's the same idea implemented by starting a fixed -number of <code>handle</code> goroutines all reading from the request -channel. -The number of goroutines limits the number of simultaneous -calls to <code>process</code>. -This <code>Serve</code> function also accepts a channel on which -it will be told to exit; after launching the goroutines it blocks -receiving from that channel. -</p> -<pre> -func handle(queue chan *Request) { - for r := range queue { - process(r) - } -} - -func Serve(clientRequests chan *clientRequests, quit chan bool) { - // Start handlers - for i := 0; i < MaxOutstanding; i++ { - go handle(clientRequests) - } - <-quit // Wait to be told to exit. -} -</pre> - -<h3 id="chan_of_chan">Channels of channels</h3> -<p> -One of the most important properties of Go is that -a channel is a first-class value that can be allocated and passed -around like any other. A common use of this property is -to implement safe, parallel demultiplexing. -<p> -In the example in the previous section, <code>handle</code> was -an idealized handler for a request but we didn't define the -type it was handling. If that type includes a channel on which -to reply, each client can provide its own path for the answer. -Here's a schematic definition of type <code>Request</code>. -</p> -<pre> -type Request struct { - args []int - f func([]int) int - resultChan chan int -} -</pre> -<p> -The client provides a function and its arguments, as well as -a channel inside the request object on which to receive the answer. -</p> -<pre> -func sum(a []int) (s int) { - for _, v := range a { - s += v - } - return -} - -request := &Request{[]int{3, 4, 5}, sum, make(chan int)} -// Send request -clientRequests <- request -// Wait for response. -fmt.Printf("answer: %d\n", <-request.resultChan) -</pre> -<p> -On the server side, the handler function is the only thing that changes. -</p> -<pre> -func handle(queue chan *Request) { - for req := range queue { - req.resultChan <- req.f(req.args) - } -} -</pre> -<p> -There's clearly a lot more to do to make it realistic, but this -code is a framework for a rate-limited, parallel, non-blocking RPC -system, and there's not a mutex in sight. -</p> - -<h3 id="parallel">Parallelization</h3> -<p> -Another application of these ideas is to parallelize a calculation -across multiple CPU cores. If the calculation can be broken into -separate pieces, it can be parallelized, with a channel to signal -when each piece completes. -</p> -<p> -Let's say we have an expensive operation to perform on a vector of items, -and that the value of the operation on each item is independent, -as in this idealized example. -</p> -<pre> -type Vector []float64 - -// Apply the operation to v[i], v[i+1] ... up to v[n-1]. -func (v Vector) DoSome(i, n int, u Vector, c chan int) { - for ; i < n; i++ { - v[i] += u.Op(v[i]) - } - c <- 1 // signal that this piece is done -} -</pre> -<p> -We launch the pieces independently in a loop, one per CPU. -They can complete in any order but it doesn't matter; we just -count the completion signals by draining the channel after -launching all the goroutines. -</p> -<pre> -const NCPU = 4 // number of CPU cores - -func (v Vector) DoAll(u Vector) { - c := make(chan int, NCPU) // Buffering optional but sensible. - for i := 0; i < NCPU; i++ { - go v.DoSome(i*len(v)/NCPU, (i+1)*len(v)/NCPU, u, c) - } - // Drain the channel. - for i := 0; i < NCPU; i++ { - <-c // wait for one task to complete - } - // All done. -} - -</pre> - -<p> -The current implementation of <code>gc</code> (<code>6g</code>, etc.) -will not parallelize this code by default. -It dedicates only a single core to user-level processing. An -arbitrary number of goroutines can be blocked in system calls, but -by default only one can be executing user-level code at any time. -It should be smarter and one day it will be smarter, but until it -is if you want CPU parallelism you must tell the run-time -how many goroutines you want executing code simultaneously. There -are two related ways to do this. Either run your job with environment -variable <code>GOMAXPROCS</code> set to the number of cores to use -or import the <code>runtime</code> package and call -<code>runtime.GOMAXPROCS(NCPU)</code>. -A helpful value might be <code>runtime.NumCPU()</code>, which reports the number -of logical CPUs on the local machine. -Again, this requirement is expected to be retired as the scheduling and run-time improve. -</p> - -<h3 id="leaky_buffer">A leaky buffer</h3> - -<p> -The tools of concurrent programming can even make non-concurrent -ideas easier to express. Here's an example abstracted from an RPC -package. The client goroutine loops receiving data from some source, -perhaps a network. To avoid allocating and freeing buffers, it keeps -a free list, and uses a buffered channel to represent it. If the -channel is empty, a new buffer gets allocated. -Once the message buffer is ready, it's sent to the server on -<code>serverChan</code>. -</p> -<pre> -var freeList = make(chan *Buffer, 100) -var serverChan = make(chan *Buffer) - -func client() { - for { - var b *Buffer - // Grab a buffer if available; allocate if not. - select { - case b = <-freeList: - // Got one; nothing more to do. - default: - // None free, so allocate a new one. - b = new(Buffer) - } - load(b) // Read next message from the net. - serverChan <- b // Send to server. - } -} -</pre> -<p> -The server loop receives each message from the client, processes it, -and returns the buffer to the free list. -</p> -<pre> -func server() { - for { - b := <-serverChan // Wait for work. - process(b) - // Reuse buffer if there's room. - select { - case freeList <- b: - // Buffer on free list; nothing more to do. - default: - // Free list full, just carry on. - } - } -} -</pre> -<p> -The client attempts to retrieve a buffer from <code>freeList</code>; -if none is available, it allocates a fresh one. -The server's send to <code>freeList</code> puts <code>b</code> back -on the free list unless the list is full, in which case the -buffer is dropped on the floor to be reclaimed by -the garbage collector. -(The <code>default</code> clauses in the <code>select</code> -statements execute when no other case is ready, -meaning that the <code>selects</code> never block.) -This implementation builds a leaky bucket free list -in just a few lines, relying on the buffered channel and -the garbage collector for bookkeeping. -</p> - -<h2 id="errors">Errors</h2> - -<p> -Library routines must often return some sort of error indication to -the caller. As mentioned earlier, Go's multivalue return makes it -easy to return a detailed error description alongside the normal -return value. By convention, errors have type <code>error</code>, -a simple built-in interface. -</p> -<pre> -type error interface { - Error() string -} -</pre> -<p> -A library writer is free to implement this interface with a -richer model under the covers, making it possible not only -to see the error but also to provide some context. -For example, <code>os.Open</code> returns an <code>os.PathError</code>. -</p> -<pre> -// PathError records an error and the operation and -// file path that caused it. -type PathError struct { - Op string // "open", "unlink", etc. - Path string // The associated file. - Err error // Returned by the system call. -} - -func (e *PathError) Error() string { - return e.Op + " " + e.Path + ": " + e.Err.Error() -} -</pre> -<p> -<code>PathError</code>'s <code>Error</code> generates -a string like this: -</p> -<pre> -open /etc/passwx: no such file or directory -</pre> -<p> -Such an error, which includes the problematic file name, the -operation, and the operating system error it triggered, is useful even -if printed far from the call that caused it; -it is much more informative than the plain -"no such file or directory". -</p> - -<p> -When feasible, error strings should identify their origin, such as by having -a prefix naming the package that generated the error. For example, in package -image, the string representation for a decoding error due to an unknown format -is "image: unknown format". -</p> - -<p> -Callers that care about the precise error details can -use a type switch or a type assertion to look for specific -errors and extract details. For <code>PathErrors</code> -this might include examining the internal <code>Err</code> -field for recoverable failures. -</p> - -<pre> -for try := 0; try < 2; try++ { - file, err = os.Open(filename) - if err == nil { - return - } - if e, ok := err.(*os.PathError); ok && e.Err == os.ENOSPC { - deleteTempFiles() // Recover some space. - continue - } - return -} -</pre> - -<p> -The second <code>if</code> statement here is idiomatic Go. -The type assertion <code>err.(*os.PathError)</code> is -checked with the "comma ok" idiom (mentioned <a href="#maps">earlier</a> -in the context of examining maps). -If the type assertion fails, <code>ok</code> will be false, and <code>e</code> -will be <code>nil</code>. -If it succeeds, <code>ok</code> will be true, which means the -error was of type <code>*os.PathError</code>, and then so is <code>e</code>, -which we can examine for more information about the error. -</p> - -<h3 id="panic">Panic</h3> - -<p> -The usual way to report an error to a caller is to return an -<code>error</code> as an extra return value. The canonical -<code>Read</code> method is a well-known instance; it returns a byte -count and an <code>error</code>. But what if the error is -unrecoverable? Sometimes the program simply cannot continue. -</p> - -<p> -For this purpose, there is a built-in function <code>panic</code> -that in effect creates a run-time error that will stop the program -(but see the next section). The function takes a single argument -of arbitrary type—often a string—to be printed as the -program dies. It's also a way to indicate that something impossible has -happened, such as exiting an infinite loop. In fact, the compiler -recognizes a <code>panic</code> at the end of a function and -suppresses the usual check for a <code>return</code> statement. -</p> - - -<pre> -// A toy implementation of cube root using Newton's method. -func CubeRoot(x float64) float64 { - z := x/3 // Arbitrary initial value - for i := 0; i < 1e6; i++ { - prevz := z - z -= (z*z*z-x) / (3*z*z) - if veryClose(z, prevz) { - return z - } - } - // A million iterations has not converged; something is wrong. - panic(fmt.Sprintf("CubeRoot(%g) did not converge", x)) -} -</pre> - -<p> -This is only an example but real library functions should -avoid <code>panic</code>. If the problem can be masked or worked -around, it's always better to let things continue to run rather -than taking down the whole program. One possible counterexample -is during initialization: if the library truly cannot set itself up, -it might be reasonable to panic, so to speak. -</p> - -<pre> -var user = os.Getenv("USER") - -func init() { - if user == "" { - panic("no value for $USER") - } -} -</pre> - -<h3 id="recover">Recover</h3> - -<p> -When <code>panic</code> is called, including implicitly for run-time -errors such as indexing an array out of bounds or failing a type -assertion, it immediately stops execution of the current function -and begins unwinding the stack of the goroutine, running any deferred -functions along the way. If that unwinding reaches the top of the -goroutine's stack, the program dies. However, it is possible to -use the built-in function <code>recover</code> to regain control -of the goroutine and resume normal execution. -</p> - -<p> -A call to <code>recover</code> stops the unwinding and returns the -argument passed to <code>panic</code>. Because the only code that -runs while unwinding is inside deferred functions, <code>recover</code> -is only useful inside deferred functions. -</p> - -<p> -One application of <code>recover</code> is to shut down a failing goroutine -inside a server without killing the other executing goroutines. -</p> - -<pre> -func server(workChan <-chan *Work) { - for work := range workChan { - go safelyDo(work) - } -} - -func safelyDo(work *Work) { - defer func() { - if err := recover(); err != nil { - log.Println("work failed:", err) - } - }() - do(work) -} -</pre> - -<p> -In this example, if <code>do(work)</code> panics, the result will be -logged and the goroutine will exit cleanly without disturbing the -others. There's no need to do anything else in the deferred closure; -calling <code>recover</code> handles the condition completely. -</p> - -<p> -Because <code>recover</code> always returns <code>nil</code> unless called directly -from a deferred function, deferred code can call library routines that themselves -use <code>panic</code> and <code>recover</code> without failing. As an example, -the deferred function in <code>safelyDo</code> might call a logging function before -calling <code>recover</code>, and that logging code would run unaffected -by the panicking state. -</p> - -<p> -With our recovery pattern in place, the <code>do</code> -function (and anything it calls) can get out of any bad situation -cleanly by calling <code>panic</code>. We can use that idea to -simplify error handling in complex software. Let's look at an -idealized excerpt from the <code>regexp</code> package, which reports -parsing errors by calling <code>panic</code> with a local -error type. Here's the definition of <code>Error</code>, -an <code>error</code> method, and the <code>Compile</code> function. -</p> - -<pre> -// Error is the type of a parse error; it satisfies the error interface. -type Error string -func (e Error) Error() string { - return string(e) -} - -// error is a method of *Regexp that reports parsing errors by -// panicking with an Error. -func (regexp *Regexp) error(err string) { - panic(Error(err)) -} - -// Compile returns a parsed representation of the regular expression. -func Compile(str string) (regexp *Regexp, err error) { - regexp = new(Regexp) - // doParse will panic if there is a parse error. - defer func() { - if e := recover(); e != nil { - regexp = nil // Clear return value. - err = e.(Error) // Will re-panic if not a parse error. - } - }() - return regexp.doParse(str), nil -} -</pre> - -<p> -If <code>doParse</code> panics, the recovery block will set the -return value to <code>nil</code>—deferred functions can modify -named return values. It then will then check, in the assignment -to <code>err</code>, that the problem was a parse error by asserting -that it has the local type <code>Error</code>. -If it does not, the type assertion will fail, causing a run-time error -that continues the stack unwinding as though nothing had interrupted -it. This check means that if something unexpected happens, such -as an array index out of bounds, the code will fail even though we -are using <code>panic</code> and <code>recover</code> to handle -user-triggered errors. -</p> - -<p> -With error handling in place, the <code>error</code> method -makes it easy to report parse errors without worrying about unwinding -the parse stack by hand. -</p> - -<p> -Useful though this pattern is, it should be used only within a package. -<code>Parse</code> turns its internal <code>panic</code> calls into -<code>error</code> values; it does not expose <code>panics</code> -to its client. That is a good rule to follow. -</p> - -<p> -By the way, this re-panic idiom changes the panic value if an actual -error occurs. However, both the original and new failures will be -presented in the crash report, so the root cause of the problem will -still be visible. Thus this simple re-panic approach is usually -sufficient—it's a crash after all—but if you want to -display only the original value, you can write a little more code to -filter unexpected problems and re-panic with the original error. -That's left as an exercise for the reader. -</p> - - -<h2 id="web_server">A web server</h2> - -<p> -Let's finish with a complete Go program, a web server. -This one is actually a kind of web re-server. -Google provides a service at -<a href="http://chart.apis.google.com">http://chart.apis.google.com</a> -that does automatic formatting of data into charts and graphs. -It's hard to use interactively, though, -because you need to put the data into the URL as a query. -The program here provides a nicer interface to one form of data: given a short piece of text, -it calls on the chart server to produce a QR code, a matrix of boxes that encode the -text. -That image can be grabbed with your cell phone's camera and interpreted as, -for instance, a URL, saving you typing the URL into the phone's tiny keyboard. -</p> -<p> -Here's the complete program. -An explanation follows. -</p> -{{code "progs/eff_qr.go"}} -<p> -The pieces up to <code>main</code> should be easy to follow. -The one flag sets a default HTTP port for our server. The template -variable <code>templ</code> is where the fun happens. It builds an HTML template -that will be executed by the server to display the page; more about -that in a moment. -</p> -<p> -The <code>main</code> function parses the flags and, using the mechanism -we talked about above, binds the function <code>QR</code> to the root path -for the server. Then <code>http.ListenAndServe</code> is called to start the -server; it blocks while the server runs. -</p> -<p> -<code>QR</code> just receives the request, which contains form data, and -executes the template on the data in the form value named <code>s</code>. -</p> -<p> -The template package is powerful; -this program just touches on its capabilities. -In essence, it rewrites a piece of text on the fly by substituting elements derived -from data items passed to <code>templ.Execute</code>, in this case the -form value. -Within the template text (<code>templateStr</code>), -double-brace-delimited pieces denote template actions. -The piece from <code>{{html "{{if .}}"}}</code> -to <code>{{html "{{end}}"}}</code> executes only if the value of the current data item, called <code>.</code> (dot), -is non-empty. -That is, when the string is empty, this piece of the template is suppressed. -</p> -<p> -The snippet <code>{{html "{{urlquery .}}"}}</code> says to process the data with the function -<code>urlquery</code>, which sanitizes the query string -for safe display on the web page. -</p> -<p> -The rest of the template string is just the HTML to show when the page loads. -If this is too quick an explanation, see the <a href="/pkg/template/">documentation</a> -for the template package for a more thorough discussion. -</p> -<p> -And there you have it: a useful webserver in a few lines of code plus some -data-driven HTML text. -Go is powerful enough to make a lot happen in a few lines. -</p> - -<!-- -TODO -<pre> -verifying implementation -type Color uint32 - -// Check that Color implements image.Color and image.Image -var _ image.Color = Black -var _ image.Image = Black -</pre> ---> - diff --git a/doc/gccgo_install.html b/doc/gccgo_install.html index ae359437a..a8d7396e5 100644 --- a/doc/gccgo_install.html +++ b/doc/gccgo_install.html @@ -4,36 +4,59 @@ }--> <p> -This document explains how to use <code>gccgo</code>, a compiler for -the Go language. The <code>gccgo</code> compiler is a new frontend -for <code>gcc</code>, the widely used GNU compiler. Although the -frontend itself is under a BSD-style license, <code>gccgo</code> is -normally used as part of <code>gcc</code> and is then covered by +This document explains how to use gccgo, a compiler for +the Go language. The gccgo compiler is a new frontend +for GCC, the widely used GNU compiler. Although the +frontend itself is under a BSD-style license, gccgo is +normally used as part of GCC and is then covered by the <a href="http://www.gnu.org/licenses/gpl.html">GNU General Public -License</a>. +License</a> (the license covers gccgo itself as part of GCC; it +does not cover code generated by gccgo). </p> <p> -Note that <code>gccgo</code> is not the <code>6g</code> compiler; see -the <a href="/doc/install">Installing Go</a> instructions for that +Note that gccgo is not the <code>gc</code> compiler; see +the <a href="/doc/install.html">Installing Go</a> instructions for that compiler. </p> +<h2 id="Releases">Releases</h2> + +<p> +The simplest way to install gccgo is to install a GCC binary release +built to include Go support. GCC binary releases are available from +<a href="http://gcc.gnu.org/install/binaries.html">various +websites</a> and are typically included as part of GNU/Linux +distributions. We expect that most people who build these binaries +will include Go support. +</p> + +<p> +The GCC 4.7.0 release includes Go support that is very close to +<a href="/doc/go1.html">Go 1</a>. Due to release timing it will not +include the last few changes to the Go 1 libraries. The GCC 4.7.1 +release should include a complete Go 1 compiler and libraries. +</p> + <h2 id="Source_code">Source code</h2> <p> -The <code>gccgo</code> source code is accessible via Subversion. The -<code>gcc</code> web site +If you cannot use a release, or prefer to build gccgo for +yourself, +the gccgo source code is accessible via Subversion. The +GCC web site has <a href="http://gcc.gnu.org/svn.html">instructions for getting the -<code>gcc</code> source code</a>. The <code>gccgo</code> source code -is a branch of the main <code>gcc</code> code +GCC source code</a>. The gccgo source code is included. As a +convenience, a stable version of the Go support is available in +a branch of the main GCC code repository: <code>svn://gcc.gnu.org/svn/gcc/branches/gccgo</code>. +This branch is periodically updated with stable Go compiler sources. </p> <p> Note that although <code>gcc.gnu.org</code> is the most convenient way -to get the source code for the compiler, that is not where the master -sources live. If you want to contribute changes to the gccgo +to get the source code for the Go frontend, it is not where the master +sources live. If you want to contribute changes to the Go frontend compiler, see <a href="/doc/gccgo_contribute.html">Contributing to gccgo</a>. </p> @@ -42,29 +65,37 @@ gccgo</a>. <h2 id="Building">Building</h2> <p> -Building <code>gccgo</code> is just like building <code>gcc</code> +Building gccgo is just like building GCC with one or two additional options. See the <a href="http://gcc.gnu.org/install/">instructions on the gcc web site</a>. When you run <code>configure</code>, add the option <code>--enable-languages=c,c++,go</code> (along with other languages you may want to build). If you are targeting a 32-bit x86, -then you will want to build <code>gccgo</code> to default to +then you will want to build gccgo to default to supporting locked compare and exchange instructions; do this by also using the <code>configure</code> option <code>--with-arch=i586</code> (or a newer architecture, depending on where you need your programs to -run). +run). If you are targeting a 64-bit x86, but sometimes want to use +the <code>-m32</code> option, then use the <code>configure</code> +option <code>--with-arch-32=i586</code>. </p> +<h3 id="Gold">Gold</h3> + <p> -On x86 GNU/Linux systems the <code>gccgo</code> compiler is able to +On x86 GNU/Linux systems the gccgo compiler is able to use a small discontiguous stack for goroutines. This permits programs to run many more goroutines, since each goroutine can use a relatively -small stack. Doing this requires using a development version of -the <code>gold</code> linker. The easiest way to do this is to build -the GNU binutils, using <code>--enable-gold=default</code> when you run -the <code>configure</code> script, and to -use <code>--with-ld=GOLD_BINARY</code> when you -configure <code>gccgo</code>. A typical sequence would look like +small stack. Doing this requires using the gold linker version 2.22 +or later. You can either install GNU binutils 2.22 or later, or you +can build gold yourself. +</p> + +<p> +To build gold yourself, build the GNU binutils, +using <code>--enable-gold=default</code> when you run +the <code>configure</code> script. Before building, you must install +the flex and bison packages. A typical sequence would look like this (you can replace <code>/opt/gold</code> with any directory to which you have write access): </p> @@ -72,6 +103,7 @@ which you have write access): <pre> cvs -z 9 -d :pserver:anoncvs@sourceware.org:/cvs/src login [password is "anoncvs"] +[The next command will create a directory named src, not binutils] cvs -z 9 -d :pserver:anoncvs@sourceware.org:/cvs/src co binutils mkdir binutils-objdir cd binutils-objdir @@ -81,29 +113,69 @@ make install </pre> <p> -A number of prerequisites are required to build <code>gcc</code>, as -described on the <a href="http://gcc.gnu.org/">gcc web site</a>. If -those are all available, then a typical build and install sequence -would look like this (only use the <code>--with-ld</code> option if -you built and installed the gold linker as described above): +However you install gold, when you configure gccgo, use the +option <code>--with-ld=<var>GOLD_BINARY</var></code>. +</p> + +<h3 id="Prerequisites">Prerequisites</h3> + +<p> +A number of prerequisites are required to build GCC, as +described on +the <a href="http://gcc.gnu.org/install/prerequisites.html">gcc web +site</a>. It is important to install all the prerequisites before +running the gcc <code>configure</code> script. + +<h3 id="Build_commands">Build commands</h3> + +<p> +Once all the prerequisites are installed, then a typical build and +install sequence would look like this (only use +the <code>--with-ld</code> option if you are using the gold linker as +described above): </p> <pre> svn checkout svn://gcc.gnu.org/svn/gcc/branches/gccgo gccgo mkdir objdir cd objdir -../gccgo/configure --enable-languages=c,c++,go --with-ld=/opt/gold/bin/ld +../gccgo/configure --prefix=/opt/gccgo --enable-languages=c,c++,go --with-ld=/opt/gold/bin/ld make make install </pre> +<h3 id="Ubuntu">A note on Ubuntu</h3> + +<p> +Current versions of Ubuntu and current versions of gcc disagree on +where system libraries and header files are found. This is not a +gccgo issue, and we hope this will be resolved soon. Until it is, +setting these environment variables while configuring and building +gccgo may fix the problem. +</p> + +<pre> +LIBRARY_PATH=/usr/lib/x86_64-linux-gnu +C_INCLUDE_PATH=/usr/include/x86_64-linux-gnu +CPLUS_INCLUDE_PATH=/usr/include/x86_64-linux-gnu +export LIBRARY_PATH C_INCLUDE_PATH CPLUS_INCLUDE_PATH +</pre> + <h2 id="Using_gccgo">Using gccgo</h2> <p> -The <code>gccgo</code> compiler works like other gcc frontends. +The gccgo compiler works like other gcc frontends. The gccgo +installation does not currently include a version of +the <code>go</code> command. However if you have the <code>go</code> +command from an installation of the <code>gc</code> compiler, you can +use it with gccgo by passing the option <code>-compiler gccgo</code> +to <code>go build</code> or <code>go install</code> or <code>go +test</code>. +</p> <p> -To compile a file: +To compile a file without using the <code>go</code> command: +</p> <pre> gccgo -c file.go @@ -112,6 +184,7 @@ gccgo -c file.go <p> That produces <code>file.o</code>. To link files together to form an executable: +</p> <pre> gccgo -o file file.o @@ -119,44 +192,68 @@ gccgo -o file file.o <p> To run the resulting file, you will need to tell the program where to -find the compiled Go packages. This can be done either by setting -<code>LD_LIBRARY_PATH</code> in your environment: +find the compiled Go packages. There are a few ways to do this: +</p> + +<ul> +<li> +<p> +Set the <code>LD_LIBRARY_PATH</code> environment variable: +</p> <pre> -LD_LIBRARY_PATH=/usr/lib/gcc/MACHINE/VERSION +LD_LIBRARY_PATH=${prefix}/lib/gcc/MACHINE/VERSION +[or] +LD_LIBRARY_PATH=${prefix}/lib64/gcc/MACHINE/VERSION +export LD_LIBRARY_PATH </pre> <p> -or by passing a <code>-Wl,-R</code> option when you link: +Here <code>${prefix}</code> is the <code>--prefix</code> option used +when building gccgo. For a binary install this is +normally <code>/usr</code>. Whether to use <code>lib</code> +or <code>lib64</code> depends on the target. +Typically <code>lib64</code> is correct for x86_64 systems, +and <code>lib</code> is correct for other systems. The idea is to +name the directory where <code>libgo.so</code> is found. +</p> -<pre> -gccgo -o file file.o -Wl,-R,/usr/lib/gcc/MACHINE/VERSION -</pre> +</li> +<li> <p> -or you can use the <code>-static-libgo</code> link-time option to link -statically against libgo, or you can do a fully static link (static -linking is the default for the <code>6l</code> Go linker). On most -systems, a static link will look something like: +Passing a <code>-Wl,-R</code> option when you link: +</p> <pre> -gccgo -o file file.o -static -L /usr/lib/nptl -lgobegin -lgo -lpthread +gccgo -o file file.o -Wl,-R,${prefix}/lib/gcc/MACHINE/VERSION +[or] +gccgo -o file file.o -Wl,-R,${prefix}/lib64/gcc/MACHINE/VERSION </pre> +</li> +<li> <p> -You may get a warning about not creating an <code>.eh_frame_hdr</code> -section; this has nothing to do with Go, and may be ignored. In the -future the requirement of explicitly specifying -<code>-L /usr/lib/nptl -lgobegin -lgo -lpthread</code> -may be removed. +Use the <code>-static-libgo</code> option to link statically against +the compiled packages. +</p> +</li> +<li> +<p> +Use the <code>-static</code> option to do a fully static link (the +default for the <code>gc</code> compiler). +</p> +</li> +</ul> <h2 id="Options">Options</h2> <p> -The <code>gccgo</code> compiler supports all <code>gcc</code> options +The gccgo compiler supports all GCC options that are language independent, notably the <code>-O</code> and <code>-g</code> options. +</p> <p> The <code>-fgo-prefix=PREFIX</code> option may be used to set a unique @@ -165,28 +262,24 @@ use with large programs that contain many packages, in order to allow multiple packages to use the same identifier as the package name. The <code>PREFIX</code> may be any string; a good choice for the string is the directory where the package will be installed. - -<p> -The <code>-fno-require-return-statement</code> option may be used to -disable the compiler error about functions missing return statements. -Note that there is no way to disable this error in <code>6g</code>. +</p> <p> The <code>-I</code> and <code>-L</code> options, which are synonyms for the compiler, may be used to set the search path for finding imports. - +</p> <h2 id="Imports">Imports</h2> <p> -When you compile a file which exports something, the export -information will be stored directly in the object file. When -you import a package, you must tell <code>gccgo</code> how to +When you compile a file that exports something, the export +information will be stored directly in the object file. When +you import a package, you must tell gccgo how to find the file. <p> -When you import the package <var>FILE</var> with <code>gccgo</code>, +When you import the package <var>FILE</var> with gccgo, it will look for the import data in the following files, and use the first one that it finds. @@ -201,21 +294,25 @@ first one that it finds. <code><var>FILE</var>.gox</code>, when used, will typically contain nothing but export data. This can be generated from <code><var>FILE</var>.o</code> via +</p> <pre> objcopy -j .go_export FILE.o FILE.gox </pre> <p> -The <code>gccgo</code> compiler will look in the current -directory for import files. In more complex scenarios you +The gccgo compiler will look in the current +directory for import files. In more complex scenarios you may pass the <code>-I</code> or <code>-L</code> option to -<code>gccgo</code>. Both options take directories to search. The +gccgo. Both options take directories to search. The <code>-L</code> option is also passed to the linker. +</p> -The <code>gccgo</code> compiler does not currently (2009-11-06) record +<p> +The gccgo compiler does not currently (2012-03-20) record the file name of imported packages in the object file. You must arrange for the imported data to be linked into the program. +</p> <pre> gccgo -c mypackage.go # Exports mypackage @@ -223,48 +320,41 @@ gccgo -c main.go # Imports mypackage gccgo -o main main.o mypackage.o # Explicitly links with mypackage.o </pre> -<h2 id="Unimplemented">Unimplemented</h2> - -<p> -Some Go features are not yet implemented in <code>gccgo</code>. As of -2010-08-23, the following are not implemented: - -<ul> -<li>goroutines are implemented as NPTL threads. If you can not use - the gold linker as described above, they are created with a fixed - stack size, and the number of goroutines that may be created at - one time is limited. -</ul> - <h2 id="Debugging">Debugging</h2> <p> If you use the <code>-g</code> option when you compile, you can run -<code>gdb</code> on your executable. The debugger doesn't (yet) -know anything about Go. However, you can set breakpoints, single-step, +<code>gdb</code> on your executable. The debugger has only limited +knowledge about Go. You can set breakpoints, single-step, etc. You can print variables, but they will be printed as though they -had C/C++ types. For numeric types this doesn't matter. Go strings -will show up as pointers to structures; to see the value -<code>print *stringvar</code>. In general Go strings, maps, channels -and interfaces are always represented as C pointers. +had C/C++ types. For numeric types this doesn't matter. Go strings +and interfaces will show up as two-element structures. Go +maps and channels are always represented as C pointers to run-time +structures. +</p> <h2 id="C_Interoperability">C Interoperability</h2> <p> -When using <code>gccgo</code> there is limited interoperability with C, +When using gccgo there is limited interoperability with C, or with C++ code compiled using <code>extern "C"</code>. +</p> <h3 id="Types">Types</h3> <p> Basic types map directly: an <code>int</code> in Go is an <code>int</code> -in C, etc. Go <code>byte</code> is equivalent to C <code>unsigned char</code>. +in C, an <code>int32</code> is an <code>int32_t</code>, +etc. Go <code>byte</code> is equivalent to C <code>unsigned +char</code>. Pointers in Go are pointers in C. A Go <code>struct</code> is the same as C <code>struct</code> with the same fields and types. +</p> <p> The Go <code>string</code> type is currently defined as a two-element structure (this is <b style="color: red;">subject to change</b>): +</p> <pre> struct __go_string { @@ -279,10 +369,12 @@ array in Go is equivalent to a C pointer to the equivalent of the element type. For example, Go <code>*[10]int</code> is equivalent to C <code>int*</code>, assuming that the C pointer does point to 10 elements. +</p> <p> A slice in Go is a structure. The current definition is (this is <b style="color: red;">subject to change</b>): +</p> <pre> struct __go_slice { @@ -294,9 +386,10 @@ struct __go_slice { <p> The type of a Go function with no receiver is equivalent to a C function -whose parameter types are equivalent. When a Go function returns more -than one value, the C function returns a struct. For example, these +whose parameter types are equivalent. When a Go function returns more +than one value, the C function returns a struct. For example, these functions have equivalent types: +</p> <pre> func GoFunction(int) (int, float64) @@ -305,7 +398,9 @@ struct { int i; float64 f; } CFunction(int) <p> A pointer to a Go function is equivalent to a pointer to a C function -when the functions have equivalent types. +when the functions have equivalent types (this is +<b style="color: red;">subject to change</b>). +</p> <p> Go <code>interface</code>, <code>channel</code>, and <code>map</code> @@ -317,6 +412,7 @@ which one is difficult to predict in general; use a cast. C <code>union</code> types have no corresponding Go type. C <code>struct</code> types containing bitfields have no corresponding Go type. C++ <code>class</code> types have no corresponding Go type. +</p> <p> Memory allocation is completely different between C and Go, as Go uses @@ -328,33 +424,38 @@ while the Go side still has a copy the program will fail. When passing a pointer from Go to C, the Go function must retain a visible copy of it in some Go variable. Otherwise the Go garbage collector may delete the pointer while the C function is still using it. +</p> <h3 id="Function_names">Function names</h3> <p> Go code can call C functions directly using a Go extension implemented -in <code>gccgo</code>: a function declaration may be followed by -<code>__asm__("NAME")</code>. For example, here is how the C function +in gccgo: a function declaration may be preceded by +<code>//extern NAME</code>. For example, here is how the C function <code>open</code> can be declared in Go: +</p> <pre> -func c_open(name *byte, mode int, perm int) int __asm__ ("open"); +//extern open +func c_open(name *byte, mode int, perm int) int </pre> <p> -The C function naturally expects a nul terminated string, which in +The C function naturally expects a NUL-terminated string, which in Go is equivalent to a pointer to an array (not a slice!) of <code>byte</code> with a terminating zero byte. So a sample call -from Go would look like (after importing the <code>os</code> package): +from Go would look like (after importing the <code>syscall</code> package): +</p> <pre> var name = [4]byte{'f', 'o', 'o', 0}; -i := c_open(&name[0], os.O_RDONLY, 0); +i := c_open(&name[0], syscall.O_RDONLY, 0); </pre> <p> (this serves as an example only, to open a file in Go please use Go's <code>os.Open</code> function instead). +</p> <p> The name of Go functions accessed from C is subject to change. At present @@ -363,8 +464,8 @@ the name of a Go function that does not have a receiver is the <code>-fgo-prefix</code> option used when the package is compiled; if the option is not used, the default is <code>go</code>. To call the function from C you must set the name using -a <code>gcc</code> extension similar to the <code>gccgo</code> -extension. +a GCC extension. +</p> <pre> extern int go_function(int) __asm__ ("myprefix.mypackage.Function"); @@ -374,37 +475,35 @@ extern int go_function(int) __asm__ ("myprefix.mypackage.Function"); Automatic generation of Go declarations from C source code</h3> <p> -The Go version of <code>gcc</code> supports automatically generating -Go declarations from C code. The facility is rather awkward at present, -and a better mechanism is under development. +The Go version of GCC supports automatically generating +Go declarations from C code. The facility is rather awkward, and most +users should use the <a href="/cmd/cgo">cgo</a> program with +the <code>-gccgo</code> option instead. +</p> <p> -Compile your C code as usual, but replace <code>-c</code> with -<code>-S -ggo</code>. The result will be an assembler file -with a <code>.s</code> extension. This assembler file will contain -comments beginning with #GO. Those comments are declarations in the Go -language for the C types, variables and functions declared in the C code. -C types which can not be represented in Go will contain the string INVALID. -Unsupported macro definitions will be recorded as <code>unknowndefine</code>, -and uses of <code>#undef</code> will be recorded as <code>undef</code>. -So it is very approximately possible to get Go code by running - -<pre> -gcc -S -ggo foo.c -grep '#GO' foo.s | grep -v INVALID | grep -v unknowndefine | grep -v undef > foo.go -</pre> +Compile your C code as usual, and add the option +<code>-fdump-go-spec=<var>FILENAME</var></code>. This will create the +file <code><var>FILENAME</var></code> as a side effect of the +compilation. This file will contain Go declarations for the types, +variables and functions declared in the C code. C types that can not +be represented in Go will be recorded as comments in the Go code. The +generated file will not have a <code>package</code> declaration, but +can otherwise be compiled directly by gccgo. +</p> <p> This procedure is full of unstated caveats and restrictions and we make no guarantee that it will not change in the future. It is more useful as a starting point for real Go code than as a regular procedure. +</p> <h2 id="RTEMS_Port">RTEMS Port</h2> <p> -The <code>gccgo</code> compiler has been ported to <a href="http://www.rtems.com/"> +The gccgo compiler has been ported to <a href="http://www.rtems.com/"> <code>RTEMS</code></a>. <code>RTEMS</code> is a real-time executive that provides a high performance environment for embedded applications -on a range of processors and embedded hardware. The current <code>gccgo</code> +on a range of processors and embedded hardware. The current gccgo port is for x86. The goal is to extend the port to most of the <a href="http://www.rtems.org/wiki/index.php/SupportedCPUs"> architectures supported by <code>RTEMS</code></a>. For more information on the port, diff --git a/doc/go-logo-black.png b/doc/go-logo-black.png Binary files differindex 29be31943..3077ebdad 100644 --- a/doc/go-logo-black.png +++ b/doc/go-logo-black.png diff --git a/doc/go-logo-blue.png b/doc/go-logo-blue.png Binary files differindex b9eac2727..8d43a5677 100644 --- a/doc/go-logo-blue.png +++ b/doc/go-logo-blue.png diff --git a/doc/go-logo-white.png b/doc/go-logo-white.png Binary files differindex 4011069eb..fa29169fa 100644 --- a/doc/go-logo-white.png +++ b/doc/go-logo-white.png diff --git a/doc/go1.html b/doc/go1.html index 8b67cd3aa..dcc3300d3 100644 --- a/doc/go1.html +++ b/doc/go1.html @@ -1,11 +1,7 @@ <!--{ - "Title": "Go 1 Release Notes" + "Title": "Go 1 Release Notes", + "Template": true }--> -<!-- - DO NOT EDIT: created by - tmpltohtml go1.tmpl ---> - <h2 id="introduction">Introduction to Go 1</h2> @@ -64,9 +60,7 @@ However, <code>append</code> did not provide a way to append a string to a <code which is another common case. </p> -<pre><!--{{code "progs/go1.go" `/greeting := ..byte/` `/append.*hello/`}} ---> greeting := []byte{} - greeting = append(greeting, []byte("hello ")...)</pre> +{{code "/doc/progs/go1.go" `/greeting := ..byte/` `/append.*hello/`}} <p> By analogy with the similar property of <code>copy</code>, Go 1 @@ -75,8 +69,7 @@ slice, reducing the friction between strings and byte slices. The conversion is no longer necessary: </p> -<pre><!--{{code "progs/go1.go" `/append.*world/`}} ---> greeting = append(greeting, "world"...)</pre> +{{code "/doc/progs/go1.go" `/append.*world/`}} <p> <em>Updating</em>: @@ -126,35 +119,7 @@ type specification for the elements' initializers if they are of pointer type. All four of the initializations in this example are legal; the last one was illegal before Go 1. </p> -<pre><!--{{code "progs/go1.go" `/type Date struct/` `/STOP/`}} ---> type Date struct { - month string - day int - } - // Struct values, fully qualified; always legal. - holiday1 := []Date{ - Date{"Feb", 14}, - Date{"Nov", 11}, - Date{"Dec", 25}, - } - // Struct values, type name elided; always legal. - holiday2 := []Date{ - {"Feb", 14}, - {"Nov", 11}, - {"Dec", 25}, - } - // Pointers, fully qualified, always legal. - holiday3 := []*Date{ - &Date{"Feb", 14}, - &Date{"Nov", 11}, - &Date{"Dec", 25}, - } - // Pointers, type name elided; legal in Go 1. - holiday4 := []*Date{ - {"Feb", 14}, - {"Nov", 11}, - {"Dec", 25}, - }</pre> +{{code "/doc/progs/go1.go" `/type Date struct/` `/STOP/`}} <p> <em>Updating</em>: @@ -183,14 +148,7 @@ In Go 1, code that uses goroutines can be called from without introducing a deadlock. </p> -<pre><!--{{code "progs/go1.go" `/PackageGlobal/` `/^}/`}} --->var PackageGlobal int - -func init() { - c := make(chan int) - go initializationFunction(c) - PackageGlobal = <-c -}</pre> +{{code "/doc/progs/go1.go" `/PackageGlobal/` `/^}/`}} <p> <em>Updating</em>: @@ -231,14 +189,7 @@ when appropriate. For instance, the functions <code>unicode.ToLower</code> and relatives now take and return a <code>rune</code>. </p> -<pre><!--{{code "progs/go1.go" `/STARTRUNE/` `/ENDRUNE/`}} ---> delta := 'δ' // delta has type rune. - var DELTA rune - DELTA = unicode.ToUpper(delta) - epsilon := unicode.ToLower(DELTA + 1) - if epsilon != 'δ'+1 { - log.Fatal("inconsistent casing for Greek") - }</pre> +{{code "/doc/progs/go1.go" `/STARTRUNE/` `/ENDRUNE/`}} <p> <em>Updating</em>: @@ -287,8 +238,7 @@ In Go 1, that syntax has gone; instead there is a new built-in function, <code>delete</code>. The call </p> -<pre><!--{{code "progs/go1.go" `/delete\(m, k\)/`}} ---> delete(m, k)</pre> +{{code "/doc/progs/go1.go" `/delete\(m, k\)/`}} <p> will delete the map entry retrieved by the expression <code>m[k]</code>. @@ -327,12 +277,7 @@ This change means that code that depends on iteration order is very likely to br Just as important, it allows the map implementation to ensure better map balancing even when programs are using range loops to select an element from a map. </p> -<pre><!--{{code "progs/go1.go" `/Sunday/` `/^ }/`}} ---> m := map[string]int{"Sunday": 0, "Monday": 1} - for name, value := range m { - // This loop should not assume Sunday will be visited first. - f(name, value) - }</pre> +{{code "/doc/progs/go1.go" `/Sunday/` `/^ }/`}} <p> <em>Updating</em>: @@ -367,17 +312,7 @@ proceed in left-to-right order. These examples illustrate the behavior. </p> -<pre><!--{{code "progs/go1.go" `/sa :=/` `/then sc.0. = 2/`}} ---> sa := []int{1, 2, 3} - i := 0 - i, sa[i] = 1, 2 // sets i = 1, sa[0] = 2 - - sb := []int{1, 2, 3} - j := 0 - sb[j], j = 2, 1 // sets sb[0] = 2, j = 1 - - sc := []int{1, 2, 3} - sc[0], sc[0] = 1, 2 // sets sc[0] = 1, then sc[0] = 2 (so sc[0] = 2 at end)</pre> +{{code "/doc/progs/go1.go" `/sa :=/` `/then sc.0. = 2/`}} <p> <em>Updating</em>: @@ -504,18 +439,7 @@ provided they are composed from elements for which equality is also defined, using element-wise comparison. </p> -<pre><!--{{code "progs/go1.go" `/type Day struct/` `/Printf/`}} ---> type Day struct { - long string - short string - } - Christmas := Day{"Christmas", "XMas"} - Thanksgiving := Day{"Thanksgiving", "Turkey"} - holiday := map[Day]bool{ - Christmas: true, - Thanksgiving: true, - } - fmt.Printf("Christmas is a holiday: %t\n", holiday[Christmas])</pre> +{{code "/doc/progs/go1.go" `/type Day struct/` `/Printf/`}} <p> Second, Go 1 removes the definition of equality for function values, @@ -734,7 +658,7 @@ Code that uses the other packages (there should be almost zero) will need to be <h3 id="subrepo">Packages moving to subrepositories</h3> <p> -Go 1 has moved a number of packages into sub-repositories of +Go 1 has moved a number of packages into other repositories, usually sub-repositories of <a href="http://code.google.com/p/go/">the main Go repository</a>. This table lists the old and new import paths: @@ -779,6 +703,10 @@ This table lists the old and new import paths: </tr> <tr><td>encoding/git85</td> <td>code.google.com/p/go.codereview/git85</tr> <tr><td>patch</td> <td>code.google.com/p/go.codereview/patch</tr> +<tr> +<td colspan="2"><hr></td> +</tr> +<tr><td>exp/wingui</td> <td>code.google.com/p/gowingui</tr> </table> <p> @@ -827,16 +755,7 @@ The <code>fmt</code> library automatically invokes <code>Error</code>, as it alr does for <code>String</code>, for easy printing of error values. </p> -<pre><!--{{code "progs/go1.go" `/START ERROR EXAMPLE/` `/END ERROR EXAMPLE/`}} --->type SyntaxError struct { - File string - Line int - Message string -} - -func (se *SyntaxError) Error() string { - return fmt.Sprintf("%s:%d: %s", se.File, se.Line, se.Message) -}</pre> +{{code "/doc/progs/go1.go" `/START ERROR EXAMPLE/` `/END ERROR EXAMPLE/`}} <p> All standard packages have been updated to use the new interface; the old <code>os.Error</code> is gone. @@ -854,8 +773,7 @@ func New(text string) error to turn a string into an error. It replaces the old <code>os.NewError</code>. </p> -<pre><!--{{code "progs/go1.go" `/ErrSyntax/`}} ---> var ErrSyntax = errors.New("syntax error")</pre> +{{code "/doc/progs/go1.go" `/ErrSyntax/`}} <p> <em>Updating</em>: @@ -879,7 +797,7 @@ This behavior was unpleasant and unportable. In Go 1, the <a href="/pkg/syscall/"><code>syscall</code></a> package instead returns an <code>error</code> for system call errors. -On Unix, the implementation is done by a +On Unix, the implementation is done by a <a href="/pkg/syscall/#Errno"><code>syscall.Errno</code></a> type that satisfies <code>error</code> and replaces the old <code>os.Errno</code>. </p> @@ -906,7 +824,7 @@ and no distinction between absolute times and durations. <p> One of the most sweeping changes in the Go 1 library is therefore a -complete redesign of the +complete redesign of the <a href="/pkg/time/"><code>time</code></a> package. Instead of an integer number of nanoseconds as an <code>int64</code>, and a separate <code>*time.Time</code> type to deal with human @@ -945,17 +863,7 @@ returns a <code>time.Time</code> value rather than, in the old API, an integer nanosecond count since the Unix epoch. </p> -<pre><!--{{code "progs/go1.go" `/sleepUntil/` `/^}/`}} --->// sleepUntil sleeps until the specified time. It returns immediately if it's too late. -func sleepUntil(wakeup time.Time) { - now := time.Now() // A Time. - if !wakeup.After(now) { - return - } - delta := wakeup.Sub(now) // A Duration. - fmt.Printf("Sleeping for %.3fs\n", delta.Seconds()) - time.Sleep(delta) -}</pre> +{{code "/doc/progs/go1.go" `/sleepUntil/` `/^}/`}} <p> The new types, methods, and constants have been propagated through @@ -1103,7 +1011,7 @@ to be implemented in the future. No changes will be needed. </p> -<h3 id="encoding_binary">The encoding/binary package</h3> +<h3 id="encoding_binary">The encoding/binary package</h3> <p> In Go 1, the <code>binary.TotalSize</code> function has been replaced by @@ -1192,8 +1100,7 @@ Values for such flags must be given units, just as <code>time.Duration</code> formats them: <code>10s</code>, <code>1h30m</code>, etc. </p> -<pre><!--{{code "progs/go1.go" `/timeout/`}} --->var timeout = flag.Duration("timeout", 30*time.Second, "how long to wait for completion")</pre> +{{code "/doc/progs/go1.go" `/timeout/`}} <p> <em>Updating</em>: @@ -1249,7 +1156,7 @@ The <a href="/pkg/go/printer/"><code>go/printer</code></a> package supports an a configuration mode <a href="/pkg/go/printer/#Mode"><code>SourcePos</code></a>; if set, the printer will emit <code>//line</code> comments such that the generated output contains the original source code position information. The new type -<a href="/pkg/go/printer/#CommentedNode"><code>CommentedNode</code></a> can be +<a href="/pkg/go/printer/#CommentedNode"><code>CommentedNode</code></a> can be used to provide comments associated with an arbitrary <a href="/pkg/go/ast/#Node"><code>ast.Node</code></a> (until now only <a href="/pkg/go/ast/#File"><code>ast.File</code></a> carried comment information). @@ -1316,7 +1223,7 @@ to run-time errors. <p> In Go 1, the definition of <a href="/pkg/hash/#Hash"><code>hash.Hash</code></a> includes -a new method, <code>BlockSize</code>. This new method is used primarily in the +a new method, <code>BlockSize</code>. This new method is used primarily in the cryptographic libraries. </p> @@ -1502,7 +1409,7 @@ Running <code>go</code> <code>fix</code> will update almost all code affected by <h3 id="log_syslog">The log/syslog package</h3> <p> -In Go 1, the <a href="/pkg/log/syslog/#NewLogger"><code>syslog.NewLogger</code></a> +In Go 1, the <a href="/pkg/log/syslog/#NewLogger"><code>syslog.NewLogger</code></a> function returns an error as well as a <code>log.Logger</code>. </p> @@ -1517,7 +1424,7 @@ What little code is affected will be caught by the compiler and must be updated In Go 1, the <a href="/pkg/mime/#FormatMediaType"><code>FormatMediaType</code></a> function of the <code>mime</code> package has been simplified to make it consistent with -<a href="/pkg/mime/#ParseMediaType"><code>ParseMediaType</code></a>. +<a href="/pkg/mime/#ParseMediaType"><code>ParseMediaType</code></a>. It now takes <code>"text/html"</code> rather than <code>"text"</code> and <code>"html"</code>. </p> @@ -1531,9 +1438,9 @@ What little code is affected will be caught by the compiler and must be updated <p> In Go 1, the various <code>SetTimeout</code>, <code>SetReadTimeout</code>, and <code>SetWriteTimeout</code> methods -have been replaced with +have been replaced with <a href="/pkg/net/#IPConn.SetDeadline"><code>SetDeadline</code></a>, -<a href="/pkg/net/#IPConn.SetReadDeadline"><code>SetReadDeadline</code></a>, and +<a href="/pkg/net/#IPConn.SetReadDeadline"><code>SetReadDeadline</code></a>, and <a href="/pkg/net/#IPConn.SetWriteDeadline"><code>SetWriteDeadline</code></a>, respectively. Rather than taking a timeout value in nanoseconds that apply to any activity on the connection, the new methods set an @@ -1707,11 +1614,7 @@ and <a href="/pkg/os/#IsPermission"><code>IsPermission</code></a>. </p> -<pre><!--{{code "progs/go1.go" `/os\.Open/` `/}/`}} ---> f, err := os.OpenFile(name, os.O_RDWR|os.O_CREATE|os.O_EXCL, 0600) - if os.IsExist(err) { - log.Printf("%s already exists", name) - }</pre> +{{code "/doc/progs/go1.go" `/os\.Open/` `/}/`}} <p> <em>Updating</em>: @@ -1777,21 +1680,7 @@ If a directory's contents are to be skipped, the function should return the value <a href="/pkg/path/filepath/#variables"><code>filepath.SkipDir</code></a> </p> -<pre><!--{{code "progs/go1.go" `/STARTWALK/` `/ENDWALK/`}} ---> markFn := func(path string, info os.FileInfo, err error) error { - if path == "pictures" { // Will skip walking of directory pictures and its contents. - return filepath.SkipDir - } - if err != nil { - return err - } - log.Println(path) - return nil - } - err := filepath.Walk(".", markFn) - if err != nil { - log.Fatal(err) - }</pre> +{{code "/doc/progs/go1.go" `/STARTWALK/` `/ENDWALK/`}} <p> <em>Updating</em>: @@ -1804,7 +1693,7 @@ The compiler will catch code using the old interface. <p> The <a href="/pkg/regexp/"><code>regexp</code></a> package has been rewritten. -It has the same interface but the specification of the regular expressions +It has the same interface but the specification of the regular expressions it supports has changed from the old "egrep" form to that of <a href="http://code.google.com/p/re2/">RE2</a>. </p> @@ -1949,6 +1838,38 @@ a cast that must be added by hand; the <code>go</code> <code>fix</code> tool wil </p> +<h3 id="templates">The template packages</h3> + +<p> +The <code>template</code> and <code>exp/template/html</code> packages have moved to +<a href="/pkg/text/template/"><code>text/template</code></a> and +<a href="/pkg/html/template/"><code>html/template</code></a>. +More significant, the interface to these packages has been simplified. +The template language is the same, but the concept of "template set" is gone +and the functions and methods of the packages have changed accordingly, +often by elimination. +</p> + +<p> +Instead of sets, a <code>Template</code> object +may contain multiple named template definitions, +in effect constructing +name spaces for template invocation. +A template can invoke any other template associated with it, but only those +templates associated with it. +The simplest way to associate templates is to parse them together, something +made easier with the new structure of the packages. +</p> + +<p> +<em>Updating</em>: +The imports will be updated by fix tool. +Single-template uses will be otherwise be largely unaffected. +Code that uses multiple templates in concert will need to be updated by hand. +The <a href="/pkg/text/template/#examples">examples</a> in +the documentation for <code>text/template</code> can provide guidance. +</p> + <h3 id="testing">The testing package</h3> <p> @@ -1957,20 +1878,7 @@ In Go 1, <code>B</code> has new methods, analogous to those of <code>T</code>, e logging and failure reporting. </p> -<pre><!--{{code "progs/go1.go" `/func.*Benchmark/` `/^}/`}} --->func BenchmarkSprintf(b *testing.B) { - // Verify correctness before running benchmark. - b.StopTimer() - got := fmt.Sprintf("%x", 23) - const expect = "17" - if expect != got { - b.Fatalf("expected %q; got %q", expect, got) - } - b.StartTimer() - for i := 0; i < b.N; i++ { - fmt.Sprintf("%x", 23) - } -}</pre> +{{code "/doc/progs/go1.go" `/func.*Benchmark/` `/^}/`}} <p> <em>Updating</em>: @@ -2083,7 +1991,25 @@ The semantic changes make it difficult for the fix tool to update automatically. <h2 id="cmd_go">The go command</h2> <p> -TODO: Write this. +Go 1 introduces the <a href="/cmd/go/">go command</a>, a tool for fetching, +building, and installing Go packages and commands. The <code>go</code> command +does away with makefiles, instead using Go source code to find dependencies and +determine build conditions. Most existing Go programs will no longer require +makefiles to be built. +</p> + +<p> +See <a href="/doc/code.html">How to Write Go Code</a> for a primer on the +<code>go</code> command and the <a href="/cmd/go/">go command documentation</a> +for the full details. +</p> + +<p> +<em>Updating</em>: +Projects that depend on the Go project's old makefile-based build +infrastructure (<code>Make.pkg</code>, <code>Make.cmd</code>, and so on) should +switch to using the <code>go</code> command for building Go code and, if +necessary, rewrite their makefiles to perform any auxiliary build tasks. </p> <h2 id="cmd_cgo">The cgo command</h2> diff --git a/doc/go1.tmpl b/doc/go1.tmpl deleted file mode 100644 index e5f161e82..000000000 --- a/doc/go1.tmpl +++ /dev/null @@ -1,1975 +0,0 @@ -<!--{ - "Title": "Go 1 Release Notes" -}--> -{{donotedit}} - -<h2 id="introduction">Introduction to Go 1</h2> - -<p> -Go version 1, Go 1 for short, defines a language and a set of core libraries -that provide a stable foundation for creating reliable products, projects, and -publications. -</p> - -<p> -The driving motivation for Go 1 is stability for its users. People should be able to -write Go programs and expect that they will continue to compile and run without -change, on a time scale of years, including in production environments such as -Google App Engine. Similarly, people should be able to write books about Go, be -able to say which version of Go the book is describing, and have that version -number still be meaningful much later. -</p> - -<p> -Code that compiles in Go 1 should, with few exceptions, continue to compile and -run throughout the lifetime of that version, even as we issue updates and bug -fixes such as Go version 1.1, 1.2, and so on. Other than critical fixes, changes -made to the language and library for subsequent releases of Go 1 may -add functionality but will not break existing Go 1 programs. -<a href="go1compat.html">The Go 1 compatibility document</a> -explains the compatibility guidelines in more detail. -</p> - -<p> -Go 1 is a representation of Go as it used today, not a wholesale rethinking of -the language. We avoided designing new features and instead focused on cleaning -up problems and inconsistencies and improving portability. There are a number -changes to the Go language and packages that we had considered for some time and -prototyped but not released primarily because they are significant and -backwards-incompatible. Go 1 was an opportunity to get them out, which is -helpful for the long term, but also means that Go 1 introduces incompatibilities -for old programs. Fortunately, the <code>go</code> <code>fix</code> tool can -automate much of the work needed to bring programs up to the Go 1 standard. -</p> - -<p> -This document outlines the major changes in Go 1 that will affect programmers -updating existing code; its reference point is the prior release, r60 (tagged as -r60.3). It also explains how to update code from r60 to run under Go 1. -</p> - -<h2 id="language">Changes to the language</h2> - -<h3 id="append">Append</h3> - -<p> -The <code>append</code> predeclared variadic function makes it easy to grow a slice -by adding elements to the end. -A common use is to add bytes to the end of a byte slice when generating output. -However, <code>append</code> did not provide a way to append a string to a <code>[]byte</code>, -which is another common case. -</p> - -{{code "progs/go1.go" `/greeting := ..byte/` `/append.*hello/`}} - -<p> -By analogy with the similar property of <code>copy</code>, Go 1 -permits a string to be appended (byte-wise) directly to a byte -slice, reducing the friction between strings and byte slices. -The conversion is no longer necessary: -</p> - -{{code "progs/go1.go" `/append.*world/`}} - -<p> -<em>Updating</em>: -This is a new feature, so existing code needs no changes. -</p> - -<h3 id="close">Close</h3> - -<p> -The <code>close</code> predeclared function provides a mechanism -for a sender to signal that no more values will be sent. -It is important to the implementation of <code>for</code> <code>range</code> -loops over channels and is helpful in other situations. -Partly by design and partly because of race conditions that can occur otherwise, -it is intended for use only by the goroutine sending on the channel, -not by the goroutine receiving data. -However, before Go 1 there was no compile-time checking that <code>close</code> -was being used correctly. -</p> - -<p> -To close this gap, at least in part, Go 1 disallows <code>close</code> on receive-only channels. -Attempting to close such a channel is a compile-time error. -</p> - -<pre> - var c chan int - var csend chan<- int = c - var crecv <-chan int = c - close(c) // legal - close(csend) // legal - close(crecv) // illegal -</pre> - -<p> -<em>Updating</em>: -Existing code that attempts to close a receive-only channel was -erroneous even before Go 1 and should be fixed. The compiler will -now reject such code. -</p> - -<h3 id="literals">Composite literals</h3> - -<p> -In Go 1, a composite literal of array, slice, or map type can elide the -type specification for the elements' initializers if they are of pointer type. -All four of the initializations in this example are legal; the last one was illegal before Go 1. -</p> - -{{code "progs/go1.go" `/type Date struct/` `/STOP/`}} - -<p> -<em>Updating</em>: -This change has no effect on existing code, but the command -<code>gofmt</code> <code>-s</code> applied to existing source -will, among other things, elide explicit element types wherever permitted. -</p> - - -<h3 id="init">Goroutines during init</h3> - -<p> -The old language defined that <code>go</code> statements executed during initialization created goroutines but that they did not begin to run until initialization of the entire program was complete. -This introduced clumsiness in many places and, in effect, limited the utility -of the <code>init</code> construct: -if it was possible for another package to use the library during initialization, the library -was forced to avoid goroutines. -This design was done for reasons of simplicity and safety but, -as our confidence in the language grew, it seemed unnecessary. -Running goroutines during initialization is no more complex or unsafe than running them during normal execution. -</p> - -<p> -In Go 1, code that uses goroutines can be called from -<code>init</code> routines and global initialization expressions -without introducing a deadlock. -</p> - -{{code "progs/go1.go" `/PackageGlobal/` `/^}/`}} - -<p> -<em>Updating</em>: -This is a new feature, so existing code needs no changes, -although it's possible that code that depends on goroutines not starting before <code>main</code> will break. -There was no such code in the standard repository. -</p> - -<h3 id="rune">The rune type</h3> - -<p> -The language spec allows the <code>int</code> type to be 32 or 64 bits wide, but current implementations set <code>int</code> to 32 bits even on 64-bit platforms. -It would be preferable to have <code>int</code> be 64 bits on 64-bit platforms. -(There are important consequences for indexing large slices.) -However, this change would waste space when processing Unicode characters with -the old language because the <code>int</code> type was also used to hold Unicode code points: each code point would waste an extra 32 bits of storage if <code>int</code> grew from 32 bits to 64. -</p> - -<p> -To make changing to 64-bit <code>int</code> feasible, -Go 1 introduces a new basic type, <code>rune</code>, to represent -individual Unicode code points. -It is an alias for <code>int32</code>, analogous to <code>byte</code> -as an alias for <code>uint8</code>. -</p> - -<p> -Character literals such as <code>'a'</code>, <code>'語'</code>, and <code>'\u0345'</code> -now have default type <code>rune</code>, -analogous to <code>1.0</code> having default type <code>float64</code>. -A variable initialized to a character constant will therefore -have type <code>rune</code> unless otherwise specified. -</p> - -<p> -Libraries have been updated to use <code>rune</code> rather than <code>int</code> -when appropriate. For instance, the functions <code>unicode.ToLower</code> and -relatives now take and return a <code>rune</code>. -</p> - -{{code "progs/go1.go" `/STARTRUNE/` `/ENDRUNE/`}} - -<p> -<em>Updating</em>: -Most source code will be unaffected by this because the type inference from -<code>:=</code> initializers introduces the new type silently, and it propagates -from there. -Some code may get type errors that a trivial conversion will resolve. -</p> - -<h3 id="error">The error type</h3> - -<p> -Go 1 introduces a new built-in type, <code>error</code>, which has the following definition: -</p> - -<pre> - type error interface { - Error() string - } -</pre> - -<p> -Since the consequences of this type are all in the package library, -it is discussed <a href="#errors">below</a>. -</p> - -<h3 id="delete">Deleting from maps</h3> - -<p> -In the old language, to delete the entry with key <code>k</code> from map <code>m</code>, one wrote the statement, -</p> - -<pre> - m[k] = value, false -</pre> - -<p> -This syntax was a peculiar special case, the only two-to-one assignment. -It required passing a value (usually ignored) that is evaluated but discarded, -plus a boolean that was nearly always the constant <code>false</code>. -It did the job but was odd and a point of contention. -</p> - -<p> -In Go 1, that syntax has gone; instead there is a new built-in -function, <code>delete</code>. The call -</p> - -{{code "progs/go1.go" `/delete\(m, k\)/`}} - -<p> -will delete the map entry retrieved by the expression <code>m[k]</code>. -There is no return value. Deleting a non-existent entry is a no-op. -</p> - -<p> -<em>Updating</em>: -Running <code>go</code> <code>fix</code> will convert expressions of the form <code>m[k] = value, -false</code> into <code>delete(m, k)</code> when it is clear that -the ignored value can be safely discarded from the program and -<code>false</code> refers to the predefined boolean constant. -The fix tool -will flag other uses of the syntax for inspection by the programmer. -</p> - -<h3 id="iteration">Iterating in maps</h3> - -<p> -The old language specification did not define the order of iteration for maps, -and in practice it differed across hardware platforms. -This caused tests that iterated over maps to be fragile and non-portable, with the -unpleasant property that a test might always pass on one machine but break on another. -</p> - -<p> -In Go 1, the order in which elements are visited when iterating -over a map using a <code>for</code> <code>range</code> statement -is defined to be unpredictable, even if the same loop is run multiple -times with the same map. -Code should not assume that the elements are visited in any particular order. -</p> - -<p> -This change means that code that depends on iteration order is very likely to break early and be fixed long before it becomes a problem. -Just as important, it allows the map implementation to ensure better map balancing even when programs are using range loops to select an element from a map. -</p> - -{{code "progs/go1.go" `/Sunday/` `/^ }/`}} - -<p> -<em>Updating</em>: -This is one change where tools cannot help. Most existing code -will be unaffected, but some programs may break or misbehave; we -recommend manual checking of all range statements over maps to -verify they do not depend on iteration order. There were a few such -examples in the standard repository; they have been fixed. -Note that it was already incorrect to depend on the iteration order, which -was unspecified. This change codifies the unpredictability. -</p> - -<h3 id="multiple_assignment">Multiple assignment</h3> - -<p> -The language specification has long guaranteed that in assignments -the right-hand-side expressions are all evaluated before any left-hand-side expressions are assigned. -To guarantee predictable behavior, -Go 1 refines the specification further. -</p> - -<p> -If the left-hand side of the assignment -statement contains expressions that require evaluation, such as -function calls or array indexing operations, these will all be done -using the usual left-to-right rule before any variables are assigned -their value. Once everything is evaluated, the actual assignments -proceed in left-to-right order. -</p> - -<p> -These examples illustrate the behavior. -</p> - -{{code "progs/go1.go" `/sa :=/` `/then sc.0. = 2/`}} - -<p> -<em>Updating</em>: -This is one change where tools cannot help, but breakage is unlikely. -No code in the standard repository was broken by this change, and code -that depended on the previous unspecified behavior was already incorrect. -</p> - -<h3 id="shadowing">Returns and shadowed variables</h3> - -<p> -A common mistake is to use <code>return</code> (without arguments) after an assignment to a variable that has the same name as a result variable but is not the same variable. -This situation is called <em>shadowing</em>: the result variable has been shadowed by another variable with the same name declared in an inner scope. -</p> - -<p> -In functions with named return values, -the Go 1 compilers disallow return statements without arguments if any of the named return values is shadowed at the point of the return statement. -(It isn't part of the specification, because this is one area we are still exploring; -the situation is analogous to the compilers rejecting functions that do not end with an explicit return statement.) -</p> - -<p> -This function implicitly returns a shadowed return value and will be rejected by the compiler: -</p> - -<pre> - func Bug() (i, j, k int) { - for i = 0; i < 5; i++ { - for j := 0; j < 5; j++ { // Redeclares j. - k += i*j - if k > 100 { - return // Rejected: j is shadowed here. - } - } - } - return // OK: j is not shadowed here. - } -</pre> - -<p> -<em>Updating</em>: -Code that shadows return values in this way will be rejected by the compiler and will need to be fixed by hand. -The few cases that arose in the standard repository were mostly bugs. -</p> - -<h3 id="unexported">Copying structs with unexported fields</h3> - -<p> -The old language did not allow a package to make a copy of a struct value containing unexported fields belonging to a different package. -There was, however, a required exception for a method receiver; -also, the implementations of <code>copy</code> and <code>append</code> have never honored the restriction. -</p> - -<p> -Go 1 will allow packages to copy struct values containing unexported fields from other packages. -Besides resolving the inconsistency, -this change admits a new kind of API: a package can return an opaque value without resorting to a pointer or interface. -The new implementations of <code>time.Time</code> and -<code>reflect.Value</code> are examples of types taking advantage of this new property. -</p> - -<p> -As an example, if package <code>p</code> includes the definitions, -</p> - -<pre> - type Struct struct { - Public int - secret int - } - func NewStruct(a int) Struct { // Note: not a pointer. - return Struct{a, f(a)} - } - func (s Struct) String() string { - return fmt.Sprintf("{%d (secret %d)}", s.Public, s.secret) - } -</pre> - -<p> -a package that imports <code>p</code> can assign and copy values of type -<code>p.Struct</code> at will. -Behind the scenes the unexported fields will be assigned and copied just -as if they were exported, -but the client code will never be aware of them. The code -</p> - -<pre> - import "p" - - myStruct := p.NewStruct(23) - copyOfMyStruct := myStruct - fmt.Println(myStruct, copyOfMyStruct) -</pre> - -<p> -will show that the secret field of the struct has been copied to the new value. -</p> - -<p> -<em>Updating</em>: -This is a new feature, so existing code needs no changes. -</p> - -<h3 id="equality">Equality</h3> - -<p> -Before Go 1, the language did not define equality on struct and array values. -This meant, -among other things, that structs and arrays could not be used as map keys. -On the other hand, Go did define equality on function and map values. -Function equality was problematic in the presence of closures -(when are two closures equal?) -while map equality compared pointers, not the maps' content, which was usually -not what the user would want. -</p> - -<p> -Go 1 addressed these issues. -First, structs and arrays can be compared for equality and inequality -(<code>==</code> and <code>!=</code>), -and therefore be used as map keys, -provided they are composed from elements for which equality is also defined, -using element-wise comparison. -</p> - -{{code "progs/go1.go" `/type Day struct/` `/Printf/`}} - -<p> -Second, Go 1 removes the definition of equality for function values, -except for comparison with <code>nil</code>. -Finally, map equality is gone too, also except for comparison with <code>nil</code>. -</p> - -<p> -Note that equality is still undefined for slices, for which the -calculation is in general infeasible. Also note that the ordered -comparison operators (<code><</code> <code><=</code> -<code>></code> <code>>=</code>) are still undefined for -structs and arrays. - -<p> -<em>Updating</em>: -Struct and array equality is a new feature, so existing code needs no changes. -Existing code that depends on function or map equality will be -rejected by the compiler and will need to be fixed by hand. -Few programs will be affected, but the fix may require some -redesign. -</p> - -<h2 id="packages">The package hierarchy</h2> - -<p> -Go 1 addresses many deficiencies in the old standard library and -cleans up a number of packages, making them more internally consistent -and portable. -</p> - -<p> -This section describes how the packages have been rearranged in Go 1. -Some have moved, some have been renamed, some have been deleted. -New packages are described in later sections. -</p> - -<h3 id="hierarchy">The package hierarchy</h3> - -<p> -Go 1 has a rearranged package hierarchy that groups related items -into subdirectories. For instance, <code>utf8</code> and -<code>utf16</code> now occupy subdirectories of <code>unicode</code>. -Also, <a href="#subrepo">some packages</a> have moved into -subrepositories of -<a href="http://code.google.com/p/go"><code>code.google.com/p/go</code></a> -while <a href="#deleted">others</a> have been deleted outright. -</p> - -<table class="codetable" frame="border" summary="Moved packages"> -<colgroup align="left" width="60%"></colgroup> -<colgroup align="left" width="40%"></colgroup> -<tr> -<th align="left">Old path</th> -<th align="left">New path</th> -</tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>asn1</td> <td>encoding/asn1</td></tr> -<tr><td>csv</td> <td>encoding/csv</td></tr> -<tr><td>gob</td> <td>encoding/gob</td></tr> -<tr><td>json</td> <td>encoding/json</td></tr> -<tr><td>xml</td> <td>encoding/xml</td></tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>exp/template/html</td> <td>html/template</td></tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>big</td> <td>math/big</td></tr> -<tr><td>cmath</td> <td>math/cmplx</td></tr> -<tr><td>rand</td> <td>math/rand</td></tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>http</td> <td>net/http</td></tr> -<tr><td>http/cgi</td> <td>net/http/cgi</td></tr> -<tr><td>http/fcgi</td> <td>net/http/fcgi</td></tr> -<tr><td>http/httptest</td> <td>net/http/httptest</td></tr> -<tr><td>http/pprof</td> <td>net/http/pprof</td></tr> -<tr><td>mail</td> <td>net/mail</td></tr> -<tr><td>rpc</td> <td>net/rpc</td></tr> -<tr><td>rpc/jsonrpc</td> <td>net/rpc/jsonrpc</td></tr> -<tr><td>smtp</td> <td>net/smtp</td></tr> -<tr><td>url</td> <td>net/url</td></tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>exec</td> <td>os/exec</td></tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>scanner</td> <td>text/scanner</td></tr> -<tr><td>tabwriter</td> <td>text/tabwriter</td></tr> -<tr><td>template</td> <td>text/template</td></tr> -<tr><td>template/parse</td> <td>text/template/parse</td></tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>utf8</td> <td>unicode/utf8</td></tr> -<tr><td>utf16</td> <td>unicode/utf16</td></tr> -</table> - -<p> -Note that the package names for the old <code>cmath</code> and -<code>exp/template/html</code> packages have changed to <code>cmplx</code> -and <code>template</code>. -</p> - -<p> -<em>Updating</em>: -Running <code>go</code> <code>fix</code> will update all imports and package renames for packages that -remain inside the standard repository. Programs that import packages -that are no longer in the standard repository will need to be edited -by hand. -</p> - -<h3 id="exp">The package tree exp</h3> - -<p> -Because they are not standardized, the packages under the <code>exp</code> directory will not be available in the -standard Go 1 release distributions, although they will be available in source code form -in <a href="http://code.google.com/p/go/">the repository</a> for -developers who wish to use them. -</p> - -<p> -Several packages have moved under <code>exp</code> at the time of Go 1's release: -</p> - -<ul> -<li><code>ebnf</code></li> -<li><code>html</code><sup>†</sup></li> -<li><code>go/types</code></li> -</ul> - -<p> -(<sup>†</sup>The <code>EscapeString</code> and <code>UnescapeString</code> types remain -in package <code>html</code>.) -</p> - -<p> -All these packages are available under the same names, with the prefix <code>exp/</code>: <code>exp/ebnf</code> etc. -</p> - -<p> -Also, the <code>utf8.String</code> type has been moved to its own package, <code>exp/utf8string</code>. -</p> - -<p> -Finally, the <code>gotype</code> command now resides in <code>exp/gotype</code>, while -<code>ebnflint</code> is now in <code>exp/ebnflint</code>. -If they are installed, they now reside in <code>$GOROOT/bin/tool</code>. -</p> - -<p> -<em>Updating</em>: -Code that uses packages in <code>exp</code> will need to be updated by hand, -or else compiled from an installation that has <code>exp</code> available. -The <code>go</code> <code>fix</code> tool or the compiler will complain about such uses. -</p> - -<h3 id="old">The package tree old</h3> - -<p> -Because they are deprecated, the packages under the <code>old</code> directory will not be available in the -standard Go 1 release distributions, although they will be available in source code form for -developers who wish to use them. -</p> - -<p> -The packages in their new locations are: -</p> - -<ul> -<li><code>old/netchan</code></li> -<li><code>old/regexp</code></li> -<li><code>old/template</code></li> -</ul> - -<p> -<em>Updating</em>: -Code that uses packages now in <code>old</code> will need to be updated by hand, -or else compiled from an installation that has <code>old</code> available. -The <code>go</code> <code>fix</code> tool will warn about such uses. -</p> - -<h3 id="deleted">Deleted packages</h3> - -<p> -Go 1 deletes several packages outright: -</p> - -<ul> -<li><code>container/vector</code></li> -<li><code>exp/datafmt</code></li> -<li><code>go/typechecker</code></li> -<li><code>try</code></li> -</ul> - -<p> -and also the command <code>gotry</code>. -</p> - -<p> -<em>Updating</em>: -Code that uses <code>container/vector</code> should be updated to use -slices directly. See -<a href="http://code.google.com/p/go-wiki/wiki/SliceTricks">the Go -Language Community Wiki</a> for some suggestions. -Code that uses the other packages (there should be almost zero) will need to be rethought. -</p> - -<h3 id="subrepo">Packages moving to subrepositories</h3> - -<p> -Go 1 has moved a number of packages into sub-repositories of -<a href="http://code.google.com/p/go/">the main Go repository</a>. -This table lists the old and new import paths: - -<table class="codetable" frame="border" summary="Sub-repositories"> -<colgroup align="left" width="40%"></colgroup> -<colgroup align="left" width="60%"></colgroup> -<tr> -<th align="left">Old</th> -<th align="left">New</th> -</tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>crypto/bcrypt</td> <td>code.google.com/p/go.crypto/bcrypt</tr> -<tr><td>crypto/blowfish</td> <td>code.google.com/p/go.crypto/blowfish</tr> -<tr><td>crypto/cast5</td> <td>code.google.com/p/go.crypto/cast5</tr> -<tr><td>crypto/md4</td> <td>code.google.com/p/go.crypto/md4</tr> -<tr><td>crypto/ocsp</td> <td>code.google.com/p/go.crypto/ocsp</tr> -<tr><td>crypto/openpgp</td> <td>code.google.com/p/go.crypto/openpgp</tr> -<tr><td>crypto/openpgp/armor</td> <td>code.google.com/p/go.crypto/openpgp/armor</tr> -<tr><td>crypto/openpgp/elgamal</td> <td>code.google.com/p/go.crypto/openpgp/elgamal</tr> -<tr><td>crypto/openpgp/errors</td> <td>code.google.com/p/go.crypto/openpgp/errors</tr> -<tr><td>crypto/openpgp/packet</td> <td>code.google.com/p/go.crypto/openpgp/packet</tr> -<tr><td>crypto/openpgp/s2k</td> <td>code.google.com/p/go.crypto/openpgp/s2k</tr> -<tr><td>crypto/ripemd160</td> <td>code.google.com/p/go.crypto/ripemd160</tr> -<tr><td>crypto/twofish</td> <td>code.google.com/p/go.crypto/twofish</tr> -<tr><td>crypto/xtea</td> <td>code.google.com/p/go.crypto/xtea</tr> -<tr><td>exp/ssh</td> <td>code.google.com/p/go.crypto/ssh</tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>image/bmp</td> <td>code.google.com/p/go.image/bmp</tr> -<tr><td>image/tiff</td> <td>code.google.com/p/go.image/tiff</tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>net/dict</td> <td>code.google.com/p/go.net/dict</tr> -<tr><td>net/websocket</td> <td>code.google.com/p/go.net/websocket</tr> -<tr><td>exp/spdy</td> <td>code.google.com/p/go.net/spdy</tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>encoding/git85</td> <td>code.google.com/p/go.codereview/git85</tr> -<tr><td>patch</td> <td>code.google.com/p/go.codereview/patch</tr> -</table> - -<p> -<em>Updating</em>: -Running <code>go</code> <code>fix</code> will update imports of these packages to use the new import paths. -Installations that depend on these packages will need to install them using -a <code>go install</code> command. -</p> - -<h2 id="major">Major changes to the library</h2> - -<p> -This section describes significant changes to the core libraries, the ones that -affect the most programs. -</p> - -<h3 id="errors">The error type and errors package</h3> - -<p> -The placement of <code>os.Error</code> in package <code>os</code> is mostly historical: errors first came up when implementing package <code>os</code>, and they seemed system-related at the time. -Since then it has become clear that errors are more fundamental than the operating system. For example, it would be nice to use <code>Errors</code> in packages that <code>os</code> depends on, like <code>syscall</code>. -Also, having <code>Error</code> in <code>os</code> introduces many dependencies on <code>os</code> that would otherwise not exist. -</p> - -<p> -Go 1 solves these problems by introducing a built-in <code>error</code> interface type and a separate <code>errors</code> package (analogous to <code>bytes</code> and <code>strings</code>) that contains utility functions. -It replaces <code>os.NewError</code> with -<a href="/pkg/errors/#New"><code>errors.New</code></a>, -giving errors a more central place in the environment. -</p> - -<p> -So the widely-used <code>String</code> method does not cause accidental satisfaction -of the <code>error</code> interface, the <code>error</code> interface uses instead -the name <code>Error</code> for that method: -</p> - -<pre> - type error interface { - Error() string - } -</pre> - -<p> -The <code>fmt</code> library automatically invokes <code>Error</code>, as it already -does for <code>String</code>, for easy printing of error values. -</p> - -{{code "progs/go1.go" `/START ERROR EXAMPLE/` `/END ERROR EXAMPLE/`}} - -<p> -All standard packages have been updated to use the new interface; the old <code>os.Error</code> is gone. -</p> - -<p> -A new package, <a href="/pkg/errors/"><code>errors</code></a>, contains the function -</p> - -<pre> -func New(text string) error -</pre> - -<p> -to turn a string into an error. It replaces the old <code>os.NewError</code>. -</p> - -{{code "progs/go1.go" `/ErrSyntax/`}} - -<p> -<em>Updating</em>: -Running <code>go</code> <code>fix</code> will update almost all code affected by the change. -Code that defines error types with a <code>String</code> method will need to be updated -by hand to rename the methods to <code>Error</code>. -</p> - -<h3 id="errno">System call errors</h3> - -<p> -The old <code>syscall</code> package, which predated <code>os.Error</code> -(and just about everything else), -returned errors as <code>int</code> values. -In turn, the <code>os</code> package forwarded many of these errors, such -as <code>EINVAL</code>, but using a different set of errors on each platform. -This behavior was unpleasant and unportable. -</p> - -<p> -In Go 1, the -<a href="/pkg/syscall/"><code>syscall</code></a> -package instead returns an <code>error</code> for system call errors. -On Unix, the implementation is done by a -<a href="/pkg/syscall/#Errno"><code>syscall.Errno</code></a> type -that satisfies <code>error</code> and replaces the old <code>os.Errno</code>. -</p> - -<p> -The changes affecting <code>os.EINVAL</code> and relatives are -described <a href="#os">elsewhere</a>. - -<p> -<em>Updating</em>: -Running <code>go</code> <code>fix</code> will update almost all code affected by the change. -Regardless, most code should use the <code>os</code> package -rather than <code>syscall</code> and so will be unaffected. -</p> - -<h3 id="time">Time</h3> - -<p> -Time is always a challenge to support well in a programming language. -The old Go <code>time</code> package had <code>int64</code> units, no -real type safety, -and no distinction between absolute times and durations. -</p> - -<p> -One of the most sweeping changes in the Go 1 library is therefore a -complete redesign of the -<a href="/pkg/time/"><code>time</code></a> package. -Instead of an integer number of nanoseconds as an <code>int64</code>, -and a separate <code>*time.Time</code> type to deal with human -units such as hours and years, -there are now two fundamental types: -<a href="/pkg/time/#Time"><code>time.Time</code></a> -(a value, so the <code>*</code> is gone), which represents a moment in time; -and <a href="/pkg/time/#Duration"><code>time.Duration</code></a>, -which represents an interval. -Both have nanosecond resolution. -A <code>Time</code> can represent any time into the ancient -past and remote future, while a <code>Duration</code> can -span plus or minus only about 290 years. -There are methods on these types, plus a number of helpful -predefined constant durations such as <code>time.Second</code>. -</p> - -<p> -Among the new methods are things like -<a href="/pkg/time/#Time.Add"><code>Time.Add</code></a>, -which adds a <code>Duration</code> to a <code>Time</code>, and -<a href="/pkg/time/#Time.Sub"><code>Time.Sub</code></a>, -which subtracts two <code>Times</code> to yield a <code>Duration</code>. -</p> - -<p> -The most important semantic change is that the Unix epoch (Jan 1, 1970) is now -relevant only for those functions and methods that mention Unix: -<a href="/pkg/time/#Unix"><code>time.Unix</code></a> -and the <a href="/pkg/time/#Time.Unix"><code>Unix</code></a> -and <a href="/pkg/time/#Time.UnixNano"><code>UnixNano</code></a> methods -of the <code>Time</code> type. -In particular, -<a href="/pkg/time/#Now"><code>time.Now</code></a> -returns a <code>time.Time</code> value rather than, in the old -API, an integer nanosecond count since the Unix epoch. -</p> - -{{code "progs/go1.go" `/sleepUntil/` `/^}/`}} - -<p> -The new types, methods, and constants have been propagated through -all the standard packages that use time, such as <code>os</code> and -its representation of file time stamps. -</p> - -<p> -<em>Updating</em>: -The <code>go</code> <code>fix</code> tool will update many uses of the old <code>time</code> package to use the new -types and methods, although it does not replace values such as <code>1e9</code> -representing nanoseconds per second. -Also, because of type changes in some of the values that arise, -some of the expressions rewritten by the fix tool may require -further hand editing; in such cases the rewrite will include -the correct function or method for the old functionality, but -may have the wrong type or require further analysis. -</p> - -<h2 id="minor">Minor changes to the library</h2> - -<p> -This section describes smaller changes, such as those to less commonly -used packages or that affect -few programs beyond the need to run <code>go</code> <code>fix</code>. -This category includes packages that are new in Go 1. -Collectively they improve portability, regularize behavior, and -make the interfaces more modern and Go-like. -</p> - -<h3 id="archive_zip">The archive/zip package</h3> - -<p> -In Go 1, <a href="/pkg/archive/zip/#Writer"><code>*zip.Writer</code></a> no -longer has a <code>Write</code> method. Its presence was a mistake. -</p> - -<p> -<em>Updating</em>: -What little code is affected will be caught by the compiler and must be updated by hand. -</p> - -<h3 id="bufio">The bufio package</h3> - -<p> -In Go 1, <a href="/pkg/bufio/#NewReaderSize"><code>bufio.NewReaderSize</code></a> -and -<a href="/pkg/bufio/#NewWriterSize"><code>bufio.NewWriterSize</code></a> -functions no longer return an error for invalid sizes. -If the argument size is too small or invalid, it is adjusted. -</p> - -<p> -<em>Updating</em>: -Running <code>go</code> <code>fix</code> will update calls that assign the error to _. -Calls that aren't fixed will be caught by the compiler and must be updated by hand. -</p> - -<h3 id="compress">The compress/flate, compress/gzip and compress/zlib packages</h3> - -<p> -In Go 1, the <code>NewWriterXxx</code> functions in -<a href="/pkg/compress/flate"><code>compress/flate</code></a>, -<a href="/pkg/compress/gzip"><code>compress/gzip</code></a> and -<a href="/pkg/compress/zlib"><code>compress/zlib</code></a> -all return <code>(*Writer, error)</code> if they take a compression level, -and <code>*Writer</code> otherwise. Package <code>gzip</code>'s -<code>Compressor</code> and <code>Decompressor</code> types have been renamed -to <code>Writer</code> and <code>Reader</code>. Package <code>flate</code>'s -<code>WrongValueError</code> type has been removed. -</p> - -<p> -<em>Updating</em> -Running <code>go</code> <code>fix</code> will update old names and calls that assign the error to _. -Calls that aren't fixed will be caught by the compiler and must be updated by hand. -</p> - -<h3 id="crypto_aes_des">The crypto/aes and crypto/des packages</h3> - -<p> -In Go 1, the <code>Reset</code> method has been removed. Go does not guarantee -that memory is not copied and therefore this method was misleading. -</p> - -<p> -The cipher-specific types <code>*aes.Cipher</code>, <code>*des.Cipher</code>, -and <code>*des.TripleDESCipher</code> have been removed in favor of -<code>cipher.Block</code>. -</p> - -<p> -<em>Updating</em>: -Remove the calls to Reset. Replace uses of the specific cipher types with -cipher.Block. -</p> - -<h3 id="crypto_elliptic">The crypto/elliptic package</h3> - -<p> -In Go 1, <a href="/pkg/crypto/elliptic/#Curve"><code>elliptic.Curve</code></a> -has been made an interface to permit alternative implementations. The curve -parameters have been moved to the -<a href="/pkg/crypto/elliptic/#CurveParams"><code>elliptic.CurveParams</code></a> -structure. -</p> - -<p> -<em>Updating</em>: -Existing users of <code>*elliptic.Curve</code> will need to change to -simply <code>elliptic.Curve</code>. Calls to <code>Marshal</code>, -<code>Unmarshal</code> and <code>GenerateKey</code> are now functions -in <code>crypto/elliptic</code> that take an <code>elliptic.Curve</code> -as their first argument. -</p> - -<h3 id="crypto_hmac">The crypto/hmac package</h3> - -<p> -In Go 1, the hash-specific functions, such as <code>hmac.NewMD5</code>, have -been removed from <code>crypto/hmac</code>. Instead, <code>hmac.New</code> takes -a function that returns a <code>hash.Hash</code>, such as <code>md5.New</code>. -</p> - -<p> -<em>Updating</em>: -Running <code>go</code> <code>fix</code> will perform the needed changes. -</p> - -<h3 id="crypto_x509">The crypto/x509 package</h3> - -<p> -In Go 1, the -<a href="/pkg/crypto/x509/#CreateCertificate"><code>CreateCertificate</code></a> -and -<a href="/pkg/crypto/x509/#CreateCRL"><code>CreateCRL</code></a> -functions in <code>crypto/x509</code> have been altered to take an -<code>interface{}</code> where they previously took a <code>*rsa.PublicKey</code> -or <code>*rsa.PrivateKey</code>. This will allow other public key algorithms -to be implemented in the future. -</p> - -<p> -<em>Updating</em>: -No changes will be needed. -</p> - -<h3 id="encoding_binary">The encoding/binary package</h3> - -<p> -In Go 1, the <code>binary.TotalSize</code> function has been replaced by -<a href="/pkg/encoding/binary/#Size"><code>Size</code></a>, -which takes an <code>interface{}</code> argument rather than -a <code>reflect.Value</code>. -</p> - -<p> -<em>Updating</em>: -What little code is affected will be caught by the compiler and must be updated by hand. -</p> - -<h3 id="encoding_xml">The encoding/xml package</h3> - -<p> -In Go 1, the <a href="/pkg/encoding/xml/"><code>xml</code></a> package -has been brought closer in design to the other marshaling packages such -as <a href="/pkg/encoding/gob/"><code>encoding/gob</code></a>. -</p> - -<p> -The old <code>Parser</code> type is renamed -<a href="/pkg/encoding/xml/#Decoder"><code>Decoder</code></a> and has a new -<a href="/pkg/encoding/xml/#Decoder.Decode"><code>Decode</code></a> method. An -<a href="/pkg/encoding/xml/#Encoder"><code>Encoder</code></a> type was also introduced. -</p> - -<p> -The functions <a href="/pkg/encoding/xml/#Marshal"><code>Marshal</code></a> -and <a href="/pkg/encoding/xml/#Unmarshal"><code>Unmarshal</code></a> -work with <code>[]byte</code> values now. To work with streams, -use the new <a href="/pkg/encoding/xml/#Encoder"><code>Encoder</code></a> -and <a href="/pkg/encoding/xml/#Decoder"><code>Decoder</code></a> types. -</p> - -<p> -When marshaling or unmarshaling values, the format of supported flags in -field tags has changed to be closer to the -<a href="/pkg/encoding/json"><code>json</code></a> package -(<code>`xml:"name,flag"`</code>). The matching done between field tags, field -names, and the XML attribute and element names is now case-sensitive. -The <code>XMLName</code> field tag, if present, must also match the name -of the XML element being marshaled. -</p> - -<p> -<em>Updating</em>: -Running <code>go</code> <code>fix</code> will update most uses of the package except for some calls to -<code>Unmarshal</code>. Special care must be taken with field tags, -since the fix tool will not update them and if not fixed by hand they will -misbehave silently in some cases. For example, the old -<code>"attr"</code> is now written <code>",attr"</code> while plain -<code>"attr"</code> remains valid but with a different meaning. -</p> - -<h3 id="expvar">The expvar package</h3> - -<p> -In Go 1, the <code>RemoveAll</code> function has been removed. -The <code>Iter</code> function and Iter method on <code>*Map</code> have -been replaced by -<a href="/pkg/expvar/#Do"><code>Do</code></a> -and -<a href="/pkg/expvar/#Map.Do"><code>(*Map).Do</code></a>. -</p> - -<p> -<em>Updating</em>: -Most code using <code>expvar</code> will not need changing. The rare code that used -<code>Iter</code> can be updated to pass a closure to <code>Do</code> to achieve the same effect. -</p> - -<h3 id="flag">The flag package</h3> - -<p> -In Go 1, the interface <a href="/pkg/flag/#Value"><code>flag.Value</code></a> has changed slightly. -The <code>Set</code> method now returns an <code>error</code> instead of -a <code>bool</code> to indicate success or failure. -</p> - -<p> -There is also a new kind of flag, <code>Duration</code>, to support argument -values specifying time intervals. -Values for such flags must be given units, just as <code>time.Duration</code> -formats them: <code>10s</code>, <code>1h30m</code>, etc. -</p> - -{{code "progs/go1.go" `/timeout/`}} - -<p> -<em>Updating</em>: -Programs that implement their own flags will need minor manual fixes to update their -<code>Set</code> methods. -The <code>Duration</code> flag is new and affects no existing code. -</p> - - -<h3 id="go">The go/* packages</h3> - -<p> -Several packages under <code>go</code> have slightly revised APIs. -</p> - -<p> -A concrete <code>Mode</code> type was introduced for configuration mode flags -in the packages -<a href="/pkg/go/scanner/"><code>go/scanner</code></a>, -<a href="/pkg/go/parser/"><code>go/parser</code></a>, -<a href="/pkg/go/printer/"><code>go/printer</code></a>, and -<a href="/pkg/go/doc/"><code>go/doc</code></a>. -</p> - -<p> -The modes <code>AllowIllegalChars</code> and <code>InsertSemis</code> have been removed -from the <a href="/pkg/go/scanner/"><code>go/scanner</code></a> package. They were mostly -useful for scanning text other then Go source files. Instead, the -<a href="/pkg/text/scanner/"><code>text/scanner</code></a> package should be used -for that purpose. -</p> - -<p> -The <a href="/pkg/go/scanner/#ErrorHandler"><code>ErrorHandler</code></a> provided -to the scanner's <a href="/pkg/go/scanner/#Scanner.Init"><code>Init</code></a> method is -now simply a function rather than an interface. The <code>ErrorVector</code> type has -been removed in favor of the (existing) <a href="/pkg/go/scanner/#ErrorList"><code>ErrorList</code></a> -type, and the <code>ErrorVector</code> methods have been migrated. Instead of embedding -an <code>ErrorVector</code> in a client of the scanner, now a client should maintain -an <code>ErrorList</code>. -</p> - -<p> -The set of parse functions provided by the <a href="/pkg/go/parser/"><code>go/parser</code></a> -package has been reduced to the primary parse function -<a href="/pkg/go/parser/#ParseFile"><code>ParseFile</code></a>, and a couple of -convenience functions <a href="/pkg/go/parser/#ParseDir"><code>ParseDir</code></a> -and <a href="/pkg/go/parser/#ParseExpr"><code>ParseExpr</code></a>. -</p> - -<p> -The <a href="/pkg/go/printer/"><code>go/printer</code></a> package supports an additional -configuration mode <a href="/pkg/go/printer/#Mode"><code>SourcePos</code></a>; -if set, the printer will emit <code>//line</code> comments such that the generated -output contains the original source code position information. The new type -<a href="/pkg/go/printer/#CommentedNode"><code>CommentedNode</code></a> can be -used to provide comments associated with an arbitrary -<a href="/pkg/go/ast/#Node"><code>ast.Node</code></a> (until now only -<a href="/pkg/go/ast/#File"><code>ast.File</code></a> carried comment information). -</p> - -<p> -The type names of the <a href="/pkg/go/doc/"><code>go/doc</code></a> package have been -streamlined by removing the <code>Doc</code> suffix: <code>PackageDoc</code> -is now <code>Package</code>, <code>ValueDoc</code> is <code>Value</code>, etc. -Also, all types now consistently have a <code>Name</code> field (or <code>Names</code>, -in the case of type <code>Value</code>) and <code>Type.Factories</code> has become -<code>Type.Funcs</code>. -Instead of calling <code>doc.NewPackageDoc(pkg, importpath)</code>, -documentation for a package is created with: -</p> - -<pre> - doc.New(pkg, importpath, mode) -</pre> - -<p> -where the new <code>mode</code> parameter specifies the operation mode: -if set to <a href="/pkg/go/doc/#AllDecls"><code>AllDecls</code></a>, all declarations -(not just exported ones) are considered. -The function <code>NewFileDoc</code> was removed, and the function -<code>CommentText</code> has become the method -<a href="/pkg/go/ast/#Text"><code>Text</code></a> of -<a href="/pkg/go/ast/#CommentGroup"><code>ast.CommentGroup</code></a>. -</p> - -<p> -In package <a href="/pkg/go/token/"><code>go/token</code></a>, the -<a href="/pkg/go/token/#FileSet"><code>token.FileSet</code></a> method <code>Files</code> -(which originally returned a channel of <code>*token.File</code>s) has been replaced -with the iterator <a href="/pkg/go/token/#FileSet.Iterate"><code>Iterate</code></a> that -accepts a function argument instead. -</p> - -<p> -In package <a href="/pkg/go/build/"><code>go/build</code></a>, the API -has been nearly completely replaced. -The package still computes Go package information -but it does not run the build: the <code>Cmd</code> and <code>Script</code> -types are gone. -(To build code, use the new -<a href="/cmd/go/"><code>go</code></a> command instead.) -The <code>DirInfo</code> type is now named -<a href="/pkg/go/build/#Package"><code>Package</code></a>. -<code>FindTree</code> and <code>ScanDir</code> are replaced by -<a href="/pkg/go/build/#Import"><code>Import</code></a> -and -<a href="/pkg/go/build/#ImportDir"><code>ImportDir</code></a>. -</p> - -<p> -<em>Updating</em>: -Code that uses packages in <code>go</code> will have to be updated by hand; the -compiler will reject incorrect uses. Templates used in conjunction with any of the -<code>go/doc</code> types may need manual fixes; the renamed fields will lead -to run-time errors. -</p> - -<h3 id="hash">The hash package</h3> - -<p> -In Go 1, the definition of <a href="/pkg/hash/#Hash"><code>hash.Hash</code></a> includes -a new method, <code>BlockSize</code>. This new method is used primarily in the -cryptographic libraries. -</p> - -<p> -The <code>Sum</code> method of the -<a href="/pkg/hash/#Hash"><code>hash.Hash</code></a> interface now takes a -<code>[]byte</code> argument, to which the hash value will be appended. -The previous behavior can be recreated by adding a <code>nil</code> argument to the call. -</p> - -<p> -<em>Updating</em>: -Existing implementations of <code>hash.Hash</code> will need to add a -<code>BlockSize</code> method. Hashes that process the input one byte at -a time can implement <code>BlockSize</code> to return 1. -Running <code>go</code> <code>fix</code> will update calls to the <code>Sum</code> methods of the various -implementations of <code>hash.Hash</code>. -</p> - -<p> -<em>Updating</em>: -Since the package's functionality is new, no updating is necessary. -</p> - -<h3 id="http">The http package</h3> - -<p> -In Go 1 the <a href="/pkg/net/http/"><code>http</code></a> package is refactored, -putting some of the utilities into a -<a href="/pkg/net/httputil/"><code>httputil</code></a> subdirectory. -These pieces are only rarely needed by HTTP clients. -The affected items are: -</p> - -<ul> -<li>ClientConn</li> -<li>DumpRequest</li> -<li>DumpRequest</li> -<li>DumpRequestOut</li> -<li>DumpResponse</li> -<li>NewChunkedReader</li> -<li>NewChunkedWriter</li> -<li>NewClientConn</li> -<li>NewProxyClientConn</li> -<li>NewServerConn</li> -<li>NewSingleHostReverseProxy</li> -<li>ReverseProxy</li> -<li>ServerConn</li> -</ul> - -<p> -The <code>Request.RawURL</code> field has been removed; it was a -historical artifact. -</p> - -<p> -The <code>Handle</code> and <code>HandleFunc</code> -functions, and the similarly-named methods of <code>ServeMux</code>, -now panic if an attempt is made to register the same pattern twice. -</p> - -<p> -<em>Updating</em>: -Running <code>go</code> <code>fix</code> will update the few programs that are affected except for -uses of <code>RawURL</code>, which must be fixed by hand. -</p> - -<h3 id="image">The image package</h3> - -<p> -The <a href="/pkg/image/"><code>image</code></a> package has had a number of -minor changes, rearrangements and renamings. -</p> - -<p> -Most of the color handling code has been moved into its own package, -<a href="/pkg/image/color/"><code>image/color</code></a>. -For the elements that moved, a symmetry arises; for instance, -each pixel of an -<a href="/pkg/image/#RGBA"><code>image.RGBA</code></a> -is a -<a href="/pkg/image/color/#RGBA"><code>color.RGBA</code></a>. -</p> - -<p> -The old <code>image/ycbcr</code> package has been folded, with some -renamings, into the -<a href="/pkg/image/"><code>image</code></a> -and -<a href="/pkg/image/color/"><code>image/color</code></a> -packages. -</p> - -<p> -The old <code>image.ColorImage</code> type is still in the <code>image</code> -package but has been renamed -<a href="/pkg/image/#Uniform"><code>image.Uniform</code></a>, -while <code>image.Tiled</code> has been removed. -</p> - -<p> -This table lists the renamings. -</p> - -<table class="codetable" frame="border" summary="image renames"> -<colgroup align="left" width="50%"></colgroup> -<colgroup align="left" width="50%"></colgroup> -<tr> -<th align="left">Old</th> -<th align="left">New</th> -</tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>image.Color</td> <td>color.Color</td></tr> -<tr><td>image.ColorModel</td> <td>color.Model</td></tr> -<tr><td>image.ColorModelFunc</td> <td>color.ModelFunc</td></tr> -<tr><td>image.PalettedColorModel</td> <td>color.Palette</td></tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>image.RGBAColor</td> <td>color.RGBA</td></tr> -<tr><td>image.RGBA64Color</td> <td>color.RGBA64</td></tr> -<tr><td>image.NRGBAColor</td> <td>color.NRGBA</td></tr> -<tr><td>image.NRGBA64Color</td> <td>color.NRGBA64</td></tr> -<tr><td>image.AlphaColor</td> <td>color.Alpha</td></tr> -<tr><td>image.Alpha16Color</td> <td>color.Alpha16</td></tr> -<tr><td>image.GrayColor</td> <td>color.Gray</td></tr> -<tr><td>image.Gray16Color</td> <td>color.Gray16</td></tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>image.RGBAColorModel</td> <td>color.RGBAModel</td></tr> -<tr><td>image.RGBA64ColorModel</td> <td>color.RGBA64Model</td></tr> -<tr><td>image.NRGBAColorModel</td> <td>color.NRGBAModel</td></tr> -<tr><td>image.NRGBA64ColorModel</td> <td>color.NRGBA64Model</td></tr> -<tr><td>image.AlphaColorModel</td> <td>color.AlphaModel</td></tr> -<tr><td>image.Alpha16ColorModel</td> <td>color.Alpha16Model</td></tr> -<tr><td>image.GrayColorModel</td> <td>color.GrayModel</td></tr> -<tr><td>image.Gray16ColorModel</td> <td>color.Gray16Model</td></tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>ycbcr.RGBToYCbCr</td> <td>color.RGBToYCbCr</td></tr> -<tr><td>ycbcr.YCbCrToRGB</td> <td>color.YCbCrToRGB</td></tr> -<tr><td>ycbcr.YCbCrColorModel</td> <td>color.YCbCrModel</td></tr> -<tr><td>ycbcr.YCbCrColor</td> <td>color.YCbCr</td></tr> -<tr><td>ycbcr.YCbCr</td> <td>image.YCbCr</td></tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>ycbcr.SubsampleRatio444</td> <td>image.YCbCrSubsampleRatio444</td></tr> -<tr><td>ycbcr.SubsampleRatio422</td> <td>image.YCbCrSubsampleRatio422</td></tr> -<tr><td>ycbcr.SubsampleRatio420</td> <td>image.YCbCrSubsampleRatio420</td></tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>image.ColorImage</td> <td>image.Uniform</td></tr> -</table> - -<p> -The image package's <code>New</code> functions -(<a href="/pkg/image/#NewRGBA"><code>NewRGBA</code></a>, -<a href="/pkg/image/#NewRGBA64"><code>NewRGBA64</code></a>, etc.) -take an <a href="/pkg/image/#Rectangle"><code>image.Rectangle</code></a> as an argument -instead of four integers. -</p> - -<p> -Finally, there are new predefined <code>color.Color</code> variables -<a href="/pkg/image/color/#Black"><code>color.Black</code></a>, -<a href="/pkg/image/color/#White"><code>color.White</code></a>, -<a href="/pkg/image/color/#Opaque"><code>color.Opaque</code></a> -and -<a href="/pkg/image/color/#Transparent"><code>color.Transparent</code></a>. -</p> - -<p> -<em>Updating</em>: -Running <code>go</code> <code>fix</code> will update almost all code affected by the change. -</p> - -<h3 id="log_syslog">The log/syslog package</h3> - -<p> -In Go 1, the <a href="/pkg/log/syslog/#NewLogger"><code>syslog.NewLogger</code></a> -function returns an error as well as a <code>log.Logger</code>. -</p> - -<p> -<em>Updating</em>: -What little code is affected will be caught by the compiler and must be updated by hand. -</p> - -<h3 id="mime">The mime package</h3> - -<p> -In Go 1, the <a href="/pkg/mime/#FormatMediaType"><code>FormatMediaType</code></a> function -of the <code>mime</code> package has been simplified to make it -consistent with -<a href="/pkg/mime/#ParseMediaType"><code>ParseMediaType</code></a>. -It now takes <code>"text/html"</code> rather than <code>"text"</code> and <code>"html"</code>. -</p> - -<p> -<em>Updating</em>: -What little code is affected will be caught by the compiler and must be updated by hand. -</p> - -<h3 id="net">The net package</h3> - -<p> -In Go 1, the various <code>SetTimeout</code>, -<code>SetReadTimeout</code>, and <code>SetWriteTimeout</code> methods -have been replaced with -<a href="/pkg/net/#IPConn.SetDeadline"><code>SetDeadline</code></a>, -<a href="/pkg/net/#IPConn.SetReadDeadline"><code>SetReadDeadline</code></a>, and -<a href="/pkg/net/#IPConn.SetWriteDeadline"><code>SetWriteDeadline</code></a>, -respectively. Rather than taking a timeout value in nanoseconds that -apply to any activity on the connection, the new methods set an -absolute deadline (as a <code>time.Time</code> value) after which -reads and writes will time out and no longer block. -</p> - -<p> -There are also new functions -<a href="/pkg/net/#DialTimeout"><code>net.DialTimeout</code></a> -to simplify timing out dialing a network address and -<a href="/pkg/net/#ListenMulticastUDP"><code>net.ListenMulticastUDP</code></a> -to allow multicast UDP to listen concurrently across multiple listeners. -The <code>net.ListenMulticastUDP</code> function replaces the old -<code>JoinGroup</code> and <code>LeaveGroup</code> methods. -</p> - -<p> -<em>Updating</em>: -Code that uses the old methods will fail to compile and must be updated by hand. -The semantic change makes it difficult for the fix tool to update automatically. -</p> - -<h3 id="os">The os package</h3> - -<p> -The <code>Time</code> function has been removed; callers should use -the <a href="/pkg/time/#Time"><code>Time</code></a> type from the -<code>time</code> package. -</p> - -<p> -The <code>Exec</code> function has been removed; callers should use -<code>Exec</code> from the <code>syscall</code> package, where available. -</p> - -<p> -The <code>ShellExpand</code> function has been renamed to <a -href="/pkg/os/#ExpandEnv"><code>ExpandEnv</code></a>. -</p> - -<p> -The <a href="/pkg/os/#NewFile"><code>NewFile</code></a> function -now takes a <code>uintptr</code> fd, instead of an <code>int</code>. -The <a href="/pkg/os/#File.Fd"><code>Fd</code></a> method on files now -also returns a <code>uintptr</code>. -</p> - -<p> -There are no longer error constants such as <code>EINVAL</code> -in the <code>os</code> package, since the set of values varied with -the underlying operating system. There are new portable functions like -<a href="/pkg/os/#IsPermission"><code>IsPermission</code></a> -to test common error properties, plus a few new error values -with more Go-like names, such as -<a href="/pkg/os/#ErrPermission"><code>ErrPermission</code></a> -and -<a href="/pkg/os/#ErrNoEnv"><code>ErrNoEnv</code></a>. -</p> - -<p> -The <code>Getenverror</code> function has been removed. To distinguish -between a non-existent environment variable and an empty string, -use <a href="/pkg/os/#Environ"><code>os.Environ</code></a> or -<a href="/pkg/syscall/#Getenv"><code>syscall.Getenv</code></a>. -</p> - - -<p> -The <a href="/pkg/os/#Process.Wait"><code>Process.Wait</code></a> method has -dropped its option argument and the associated constants are gone -from the package. -Also, the function <code>Wait</code> is gone; only the method of -the <code>Process</code> type persists. -</p> - -<p> -The <code>Waitmsg</code> type returned by -<a href="/pkg/os/#Process.Wait"><code>Process.Wait</code></a> -has been replaced with a more portable -<a href="/pkg/os/#ProcessState"><code>ProcessState</code></a> -type with accessor methods to recover information about the -process. -Because of changes to <code>Wait</code>, the <code>ProcessState</code> -value always describes an exited process. -Portability concerns simplified the interface in other ways, but the values returned by the -<a href="/pkg/os/#ProcessState.Sys"><code>ProcessState.Sys</code></a> and -<a href="/pkg/os/#ProcessState.SysUsage"><code>ProcessState.SysUsage</code></a> -methods can be type-asserted to underlying system-specific data structures such as -<a href="/pkg/syscall/#WaitStatus"><code>syscall.WaitStatus</code></a> and -<a href="/pkg/syscall/#Rusage"><code>syscall.Rusage</code></a> on Unix. -</p> - -<p> -<em>Updating</em>: -Running <code>go</code> <code>fix</code> will drop a zero argument to <code>Process.Wait</code>. -All other changes will be caught by the compiler and must be updated by hand. -</p> - -<h4 id="os_fileinfo">The os.FileInfo type</h4> - -<p> -Go 1 redefines the <a href="/pkg/os/#FileInfo"><code>os.FileInfo</code></a> type, -changing it from a struct to an interface: -</p> - -<pre> - type FileInfo interface { - Name() string // base name of the file - Size() int64 // length in bytes - Mode() FileMode // file mode bits - ModTime() time.Time // modification time - IsDir() bool // abbreviation for Mode().IsDir() - Sys() interface{} // underlying data source (can return nil) - } -</pre> - -<p> -The file mode information has been moved into a subtype called -<a href="/pkg/os/#FileMode"><code>os.FileMode</code></a>, -a simple integer type with <code>IsDir</code>, <code>Perm</code>, and <code>String</code> -methods. -</p> - -<p> -The system-specific details of file modes and properties such as (on Unix) -i-number have been removed from <code>FileInfo</code> altogether. -Instead, each operating system's <code>os</code> package provides an -implementation of the <code>FileInfo</code> interface, which -has a <code>Sys</code> method that returns the -system-specific representation of file metadata. -For instance, to discover the i-number of a file on a Unix system, unpack -the <code>FileInfo</code> like this: -</p> - -<pre> - fi, err := os.Stat("hello.go") - if err != nil { - log.Fatal(err) - } - // Check that it's a Unix file. - unixStat, ok := fi.Sys().(*syscall.Stat_t) - if !ok { - log.Fatal("hello.go: not a Unix file") - } - fmt.Printf("file i-number: %d\n", unixStat.Ino) -</pre> - -<p> -Assuming (which is unwise) that <code>"hello.go"</code> is a Unix file, -the i-number expression could be contracted to -</p> - -<pre> - fi.Sys().(*syscall.Stat_t).Ino -</pre> - -<p> -The vast majority of uses of <code>FileInfo</code> need only the methods -of the standard interface. -</p> - -<p> -The <code>os</code> package no longer contains wrappers for the POSIX errors -such as <code>ENOENT</code>. -For the few programs that need to verify particular error conditions, there are -now the boolean functions -<a href="/pkg/os/#IsExist"><code>IsExist</code></a>, -<a href="/pkg/os/#IsNotExist"><code>IsNotExist</code></a> -and -<a href="/pkg/os/#IsPermission"><code>IsPermission</code></a>. -</p> - -{{code "progs/go1.go" `/os\.Open/` `/}/`}} - -<p> -<em>Updating</em>: -Running <code>go</code> <code>fix</code> will update code that uses the old equivalent of the current <code>os.FileInfo</code> -and <code>os.FileMode</code> API. -Code that needs system-specific file details will need to be updated by hand. -Code that uses the old POSIX error values from the <code>os</code> package -will fail to compile and will also need to be updated by hand. -</p> - -<h3 id="os_signal">The os/signal package</h3> - -<p> -The <code>os/signal</code> package in Go 1 replaces the -<code>Incoming</code> function, which returned a channel -that received all incoming signals, -with the selective <code>Notify</code> function, which asks -for delivery of specific signals on an existing channel. -</p> - -<p> -<em>Updating</em>: -Code must be updated by hand. -A literal translation of -</p> -<pre> -c := signal.Incoming() -</pre> -<p> -is -</p> -<pre> -c := make(chan os.Signal) -signal.Notify(c) // ask for all signals -</pre> -<p> -but most code should list the specific signals it wants to handle instead: -</p> -<pre> -c := make(chan os.Signal) -signal.Notify(c, syscall.SIGHUP, syscall.SIGQUIT) -</pre> - -<h3 id="path_filepath">The path/filepath package</h3> - -<p> -In Go 1, the <a href="/pkg/path/filepath/#Walk"><code>Walk</code></a> function of the -<code>path/filepath</code> package -has been changed to take a function value of type -<a href="/pkg/path/filepath/#WalkFunc"><code>WalkFunc</code></a> -instead of a <code>Visitor</code> interface value. -<code>WalkFunc</code> unifies the handling of both files and directories. -</p> - -<pre> - type WalkFunc func(path string, info os.FileInfo, err error) error -</pre> - -<p> -The <code>WalkFunc</code> function will be called even for files or directories that could not be opened; -in such cases the error argument will describe the failure. -If a directory's contents are to be skipped, -the function should return the value <a href="/pkg/path/filepath/#variables"><code>filepath.SkipDir</code></a> -</p> - -{{code "progs/go1.go" `/STARTWALK/` `/ENDWALK/`}} - -<p> -<em>Updating</em>: -The change simplifies most code but has subtle consequences, so affected programs -will need to be updated by hand. -The compiler will catch code using the old interface. -</p> - -<h3 id="regexp">The regexp package</h3> - -<p> -The <a href="/pkg/regexp/"><code>regexp</code></a> package has been rewritten. -It has the same interface but the specification of the regular expressions -it supports has changed from the old "egrep" form to that of -<a href="http://code.google.com/p/re2/">RE2</a>. -</p> - -<p> -<em>Updating</em>: -Code that uses the package should have its regular expressions checked by hand. -</p> - -<h3 id="runtime">The runtime package</h3> - -<p> -In Go 1, much of the API exported by package -<code>runtime</code> has been removed in favor of -functionality provided by other packages. -Code using the <code>runtime.Type</code> interface -or its specific concrete type implementations should -now use package <a href="/pkg/reflect/"><code>reflect</code></a>. -Code using <code>runtime.Semacquire</code> or <code>runtime.Semrelease</code> -should use channels or the abstractions in package <a href="/pkg/sync/"><code>sync</code></a>. -The <code>runtime.Alloc</code>, <code>runtime.Free</code>, -and <code>runtime.Lookup</code> functions, an unsafe API created for -debugging the memory allocator, have no replacement. -</p> - -<p> -Before, <code>runtime.MemStats</code> was a global variable holding -statistics about memory allocation, and calls to <code>runtime.UpdateMemStats</code> -ensured that it was up to date. -In Go 1, <code>runtime.MemStats</code> is a struct type, and code should use -<a href="/pkg/runtime/#ReadMemStats"><code>runtime.ReadMemStats</code></a> -to obtain the current statistics. -</p> - -<p> -The package adds a new function, -<a href="/pkg/runtime/#NumCPU"><code>runtime.NumCPU</code></a>, that returns the number of CPUs available -for parallel execution, as reported by the operating system kernel. -Its value can inform the setting of <code>GOMAXPROCS</code>. -The <code>runtime.Cgocalls</code> and <code>runtime.Goroutines</code> functions -have been renamed to <code>runtime.NumCgoCall</code> and <code>runtime.NumGoroutine</code>. -</p> - -<p> -<em>Updating</em>: -Running <code>go</code> <code>fix</code> will update code for the function renamings. -Other code will need to be updated by hand. -</p> - -<h3 id="strconv">The strconv package</h3> - -<p> -In Go 1, the -<a href="/pkg/strconv/"><code>strconv</code></a> -package has been significantly reworked to make it more Go-like and less C-like, -although <code>Atoi</code> lives on (it's similar to -<code>int(ParseInt(x, 10, 0))</code>, as does -<code>Itoa(x)</code> (<code>FormatInt(int64(x), 10)</code>). -There are also new variants of some of the functions that append to byte slices rather than -return strings, to allow control over allocation. -</p> - -<p> -This table summarizes the renamings; see the -<a href="/pkg/strconv/">package documentation</a> -for full details. -</p> - -<table class="codetable" frame="border" summary="strconv renames"> -<colgroup align="left" width="50%"></colgroup> -<colgroup align="left" width="50%"></colgroup> -<tr> -<th align="left">Old call</th> -<th align="left">New call</th> -</tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>Atob(x)</td> <td>ParseBool(x)</td></tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>Atof32(x)</td> <td>ParseFloat(x, 32)§</td></tr> -<tr><td>Atof64(x)</td> <td>ParseFloat(x, 64)</td></tr> -<tr><td>AtofN(x, n)</td> <td>ParseFloat(x, n)</td></tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>Atoi(x)</td> <td>Atoi(x)</td></tr> -<tr><td>Atoi(x)</td> <td>ParseInt(x, 10, 0)§</td></tr> -<tr><td>Atoi64(x)</td> <td>ParseInt(x, 10, 64)</td></tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>Atoui(x)</td> <td>ParseUint(x, 10, 0)§</td></tr> -<tr><td>Atoi64(x)</td> <td>ParseInt(x, 10, 64)</td></tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>Btoi64(x, b)</td> <td>ParseInt(x, b, 64)</td></tr> -<tr><td>Btoui64(x, b)</td> <td>ParseUint(x, b, 64)</td></tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>Btoa(x)</td> <td>FormatBool(x)</td></tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>Ftoa32(x, f, p)</td> <td>FormatFloat(float64(x), f, p, 32)</td></tr> -<tr><td>Ftoa64(x, f, p)</td> <td>FormatFloat(x, f, p, 64)</td></tr> -<tr><td>FtoaN(x, f, p, n)</td> <td>FormatFloat(x, f, p, n)</td></tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>Itoa(x)</td> <td>Itoa(x)</td></tr> -<tr><td>Itoa(x)</td> <td>FormatInt(int64(x), 10)</td></tr> -<tr><td>Itoa64(x)</td> <td>FormatInt(x, 10)</td></tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>Itob(x, b)</td> <td>FormatInt(int64(x), b)</td></tr> -<tr><td>Itob64(x, b)</td> <td>FormatInt(x, b)</td></tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>Uitoa(x)</td> <td>FormatUint(uint64(x), 10)</td></tr> -<tr><td>Uitoa64(x)</td> <td>FormatUint(x, 10)</td></tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>Uitob(x, b)</td> <td>FormatUint(uint64(x), b)</td></tr> -<tr><td>Uitob64(x, b)</td> <td>FormatUint(x, b)</td></tr> -</table> - -<p> -<em>Updating</em>: -Running <code>go</code> <code>fix</code> will update almost all code affected by the change. -<br> -§ <code>Atoi</code> persists but <code>Atoui</code> and <code>Atof32</code> do not, so -they may require -a cast that must be added by hand; the <code>go</code> <code>fix</code> tool will warn about it. -</p> - - -<h3 id="testing">The testing package</h3> - -<p> -The testing package has a type, <code>B</code>, passed as an argument to benchmark functions. -In Go 1, <code>B</code> has new methods, analogous to those of <code>T</code>, enabling -logging and failure reporting. -</p> - -{{code "progs/go1.go" `/func.*Benchmark/` `/^}/`}} - -<p> -<em>Updating</em>: -Existing code is unaffected, although benchmarks that use <code>println</code> -or <code>panic</code> should be updated to use the new methods. -</p> - -<h3 id="testing_script">The testing/script package</h3> - -<p> -The testing/script package has been deleted. It was a dreg. -</p> - -<p> -<em>Updating</em>: -No code is likely to be affected. -</p> - -<h3 id="unsafe">The unsafe package</h3> - -<p> -In Go 1, the functions -<code>unsafe.Typeof</code>, <code>unsafe.Reflect</code>, -<code>unsafe.Unreflect</code>, <code>unsafe.New</code>, and -<code>unsafe.NewArray</code> have been removed; -they duplicated safer functionality provided by -package <a href="/pkg/reflect/"><code>reflect</code></a>. -</p> - -<p> -<em>Updating</em>: -Code using these functions must be rewritten to use -package <a href="/pkg/reflect/"><code>reflect</code></a>. -The changes to <a href="http://code.google.com/p/go/source/detail?r=2646dc956207">encoding/gob</a> and the <a href="http://code.google.com/p/goprotobuf/source/detail?r=5340ad310031">protocol buffer library</a> -may be helpful as examples. -</p> - -<h3 id="url">The url package</h3> - -<p> -In Go 1 several fields from the <a href="/pkg/net/url/#URL"><code>url.URL</code></a> type -were removed or replaced. -</p> - -<p> -The <a href="/pkg/net/url/#URL.String"><code>String</code></a> method now -predictably rebuilds an encoded URL string using all of <code>URL</code>'s -fields as necessary. The resulting string will also no longer have -passwords escaped. -</p> - -<p> -The <code>Raw</code> field has been removed. In most cases the <code>String</code> -method may be used in its place. -</p> - -<p> -The old <code>RawUserinfo</code> field is replaced by the <code>User</code> -field, of type <a href="/pkg/net/url/#Userinfo"><code>*net.Userinfo</code></a>. -Values of this type may be created using the new <a href="/pkg/net/url/#User"><code>net.User</code></a> -and <a href="/pkg/net/url/#UserPassword"><code>net.UserPassword</code></a> -functions. The <code>EscapeUserinfo</code> and <code>UnescapeUserinfo</code> -functions are also gone. -</p> - -<p> -The <code>RawAuthority</code> field has been removed. The same information is -available in the <code>Host</code> and <code>User</code> fields. -</p> - -<p> -The <code>RawPath</code> field and the <code>EncodedPath</code> method have -been removed. The path information in rooted URLs (with a slash following the -schema) is now available only in decoded form in the <code>Path</code> field. -Occasionally, the encoded data may be required to obtain information that -was lost in the decoding process. These cases must be handled by accessing -the data the URL was built from. -</p> - -<p> -URLs with non-rooted paths, such as <code>"mailto:dev@golang.org?subject=Hi"</code>, -are also handled differently. The <code>OpaquePath</code> boolean field has been -removed and a new <code>Opaque</code> string field introduced to hold the encoded -path for such URLs. In Go 1, the cited URL parses as: -</p> - -<pre> - URL{ - Scheme: "mailto", - Opaque: "dev@golang.org", - RawQuery: "subject=Hi", - } -</pre> - -<p> -A new <a href="/pkg/net/url/#URL.RequestURI"><code>RequestURI</code></a> method was -added to <code>URL</code>. -</p> - -<p> -The <code>ParseWithReference</code> function has been renamed to <code>ParseWithFragment</code>. -</p> - -<p> -<em>Updating</em>: -Code that uses the old fields will fail to compile and must be updated by hand. -The semantic changes make it difficult for the fix tool to update automatically. -</p> - -<h2 id="cmd_go">The go command</h2> - -<p> -TODO: Write this. -</p> - -<h2 id="cmd_cgo">The cgo command</h2> - -<p> -In Go 1, the <a href="/cmd/cgo">cgo command</a> -uses a different <code>_cgo_export.h</code> -file, which is generated for packages containing <code>//export</code> lines. -The <code>_cgo_export.h</code> file now begins with the C preamble comment, -so that exported function definitions can use types defined there. -This has the effect of compiling the preamble multiple times, so a -package using <code>//export</code> must not put function definitions -or variable initializations in the C preamble. -</p> - -<h2 id="releases">Packaged releases</h2> - diff --git a/doc/go1compat.html b/doc/go1compat.html index 3804634f5..1dfd382c2 100644 --- a/doc/go1compat.html +++ b/doc/go1compat.html @@ -94,6 +94,15 @@ We therefore recommend that composite literals whose type is defined in a separate package should use the tagged notation. </li> +<li> +Dot imports. If a program imports a standard package +using <code>import . "path"</code>, additional names defined in the +imported package in future releases may conflict with other names +defined in the program. We do not recommend the use of <code>import .</code> +outside of tests, and using it may cause a program to fail +to compile in future releases. +</li> + </ul> <p> diff --git a/doc/go_faq.html b/doc/go_faq.html index d95da0f6f..b5b7cc656 100644 --- a/doc/go_faq.html +++ b/doc/go_faq.html @@ -76,20 +76,6 @@ The logo and mascot are covered by the license. </p> -<h3 id="What_kind_of_a_name_is_6g"> -What kind of a name is 6g?</h3> - -<p> -The <code>6g</code> (and <code>8g</code> and <code>5g</code>) compiler is named in the -tradition of the Plan 9 C compilers, described in -<a href="http://plan9.bell-labs.com/sys/doc/compiler.html"> -http://plan9.bell-labs.com/sys/doc/compiler.html</a> -(see the table in section 2). - -<code>6</code> is the architecture letter for amd64 (or x86-64, if you prefer), while -<code>g</code> stands for Go. -</p> - <h3 id="history"> What is the history of the project?</h3> <p> @@ -201,8 +187,8 @@ document server running in a production configuration on Do Go programs link with C/C++ programs?</h3> <p> -There are two Go compiler implementations, <code>6g</code> and friends, -generically called <code>gc</code>, and <code>gccgo</code>. +There are two Go compiler implementations, <code>gc</code> +(the <code>6g</code> program and friends) and <code>gccgo</code>. <code>Gc</code> uses a different calling convention and linker and can therefore only be linked with C programs using the same convention. There is such a C compiler but no C++ compiler. @@ -320,10 +306,9 @@ exceptional. <p> Go takes a different approach. For plain error handling, Go's multi-value returns make it easy to report an error without overloading the return value. -<a href="http://blog.golang.org/2011/07/error-handling-and-go.html">A -canonical error type, coupled -with Go's other features</a>, makes error -handling pleasant but quite different from that in other languages. +<a href="/doc/articles/error_handling.html">A canonical error type, coupled +with Go's other features</a>, makes error handling pleasant but quite different +from that in other languages. </p> <p> @@ -336,7 +321,7 @@ when used well, can result in clean error-handling code. </p> <p> -See the <a href="http://blog.golang.org/2010/08/defer-panic-and-recover.html">Defer, Panic, and Recover</a> article for details. +See the <a href="/doc/articles/defer_panic_recover.html">Defer, Panic, and Recover</a> article for details. </p> <h3 id="assertions"> @@ -1009,7 +994,7 @@ Why is <code>int</code> 32 bits on 64 bit machines?</h3> <p> The sizes of <code>int</code> and <code>uint</code> are implementation-specific but the same as each other on a given platform. -The 64 bit Go compilers (both 6g and gccgo) use a 32 bit representation for +The 64 bit Go compilers (both gc and gccgo) use a 32 bit representation for <code>int</code>. Code that relies on a particular size of value should use an explicitly sized type, like <code>int64</code>. On the other hand, floating-point scalars and complex @@ -1317,8 +1302,7 @@ table-driven, iterating over a list of inputs and outputs defined in a data structure (Go has excellent support for data structure literals). The work to write a good test and good error messages will then be amortized over many test cases. The standard Go library is full of illustrative examples, such as in -<a href="http://golang.org/src/pkg/fmt/fmt_test.go">the formatting -tests for the <code>fmt</code> package</a>. +<a href="/src/pkg/fmt/fmt_test.go">the formatting tests for the <code>fmt</code> package</a>. </p> @@ -1333,21 +1317,21 @@ standard GCC back end. <code>Gc</code> is written in C using <code>yacc</code>/<code>bison</code> for the parser. Although it's a new program, it fits in the Plan 9 C compiler suite (<a href="http://plan9.bell-labs.com/sys/doc/compiler.html">http://plan9.bell-labs.com/sys/doc/compiler.html</a>) -and uses a variant of the Plan 9 loader to generate ELF binaries. +and uses a variant of the Plan 9 loader to generate ELF/Mach-O/PE binaries. </p> <p> -We considered writing <code>6g</code>, the original Go compiler, in Go itself but +We considered writing <code>gc</code>, the original Go compiler, in Go itself but elected not to do so because of the difficulties of bootstrapping and especially of open source distribution—you'd need a Go compiler to set up a Go environment. <code>Gccgo</code>, which came later, makes it possible to consider writing a compiler in Go, which might well happen. (Go would be a fine language in which to implement a compiler; a native lexer and -parser are already available in <a href="/pkg/go/"><code>/pkg/go</code></a>.) +parser are already available in the <a href="/pkg/go/"><code>go</code></a> package.) </p> <p> -We also considered using LLVM for <code>6g</code> but we felt it was too large and +We also considered using LLVM for <code>gc</code> but we felt it was too large and slow to meet our performance goals. </p> @@ -1377,9 +1361,11 @@ type checks, reflection, and even panic-time stack traces. </p> <p> -A trivial C "hello, world" program compiled and linked statically using gcc -on Linux is around 750 kB. An equivalent Go program using <code>fmt.Printf</code> -is around 1.3 MB, but +A simple C "hello, world" program compiled and linked statically using gcc +on Linux is around 750 kB, +including an implementation of <code>printf</code>. +An equivalent Go program using <code>fmt.Printf</code> +is around 1.2 MB, but that includes more powerful run-time support. </p> @@ -1538,7 +1524,7 @@ and <code>chan</code> keep things clear. <p> See the article about -<a href="http://blog.golang.org/2010/07/gos-declaration-syntax.html">Go's Declaration Syntax</a> +<a href="/doc/articles/gos_declaration_syntax.html">Go's Declaration Syntax</a> for more details. </p> @@ -1588,7 +1574,7 @@ appear on a line by itself. Some have argued that the lexer should do lookahead to permit the brace to live on the next line. We disagree. Since Go code is meant to be formatted automatically by -<a href="http://golang.org/cmd/gofmt/"><code>gofmt</code></a>, +<a href="/cmd/gofmt/"><code>gofmt</code></a>, <i>some</i> style must be chosen. That style may differ from what you've used in C or Java, but Go is a new language and <code>gofmt</code>'s style is as good as any other. More diff --git a/doc/go_mem.html b/doc/go_mem.html index a00324158..ece230638 100644 --- a/doc/go_mem.html +++ b/doc/go_mem.html @@ -1,6 +1,6 @@ <!--{ "Title": "The Go Memory Model", - "Subtitle": "Version of June 10, 2011", + "Subtitle": "Version of March 6, 2012", "Path": "/ref/mem" }--> @@ -107,9 +107,9 @@ unspecified order. <h3>Initialization</h3> <p> -Program initialization runs in a single goroutine and -new goroutines created during initialization do not -start running until initialization ends. +Program initialization runs in a single goroutine, +but that goroutine may create other goroutines, +which run concurrently. </p> <p class="rule"> @@ -122,11 +122,6 @@ The start of the function <code>main.main</code> happens after all <code>init</code> functions have finished. </p> -<p class="rule"> -The execution of any goroutines created during <code>init</code> -functions happens after all <code>init</code> functions have finished. -</p> - <h3>Goroutine creation</h3> <p class="rule"> @@ -288,7 +283,7 @@ The <code>sync</code> package implements two lock data types, <p class="rule"> For any <code>sync.Mutex</code> or <code>sync.RWMutex</code> variable <code>l</code> and <i>n</i> < <i>m</i>, -the <i>n</i>'th call to <code>l.Unlock()</code> happens before the <i>m</i>'th call to <code>l.Lock()</code> returns. +call <i>n</i> of <code>l.Unlock()</code> happens before call <i>m</i> of <code>l.Lock()</code> returns. </p> <p> @@ -321,9 +316,9 @@ which happens before the <code>print</code>. <p class="rule"> For any call to <code>l.RLock</code> on a <code>sync.RWMutex</code> variable <code>l</code>, -there is an <i>n</i> such that the <code>l.RLock</code> happens (returns) after the <i>n</i>'th call to +there is an <i>n</i> such that the <code>l.RLock</code> happens (returns) after call <i>n</i> to <code>l.Unlock</code> and the matching <code>l.RUnlock</code> happens -before the <i>n</i>+1'th call to <code>l.Lock</code>. +before call <i>n</i>+1 to <code>l.Lock</code>. </p> <h3>Once</h3> diff --git a/doc/go_spec.html b/doc/go_spec.html index ebd79bb80..2c905c723 100644 --- a/doc/go_spec.html +++ b/doc/go_spec.html @@ -1,6 +1,6 @@ <!--{ "Title": "The Go Programming Language Specification", - "Subtitle": "Version of March 1, 2012", + "Subtitle": "Version of March 17, 2012", "Path": "/ref/spec" }--> @@ -75,7 +75,7 @@ double quotes <code>""</code> or back quotes <code>``</code>. <p> The form <code>a … b</code> represents the set of characters from <code>a</code> through <code>b</code> as alternatives. The horizontal -ellipis <code>…</code> is also used elsewhere in the spec to informally denote various +ellipsis <code>…</code> is also used elsewhere in the spec to informally denote various enumerations or code snippets that are not further specified. The character <code>…</code> (as opposed to the three characters <code>...</code>) is not a token of the Go language. @@ -1321,7 +1321,7 @@ Two types are either <i>identical</i> or <i>different</i>. <p> Two named types are identical if their type names originate in the same -type <a href="#Declarations_and_scope">declaration</a>. +<a href="#Type_declarations">TypeSpec</a>. A named and an unnamed type are always different. Two unnamed types are identical if the corresponding type literals are identical, that is, if they have the same literal structure and corresponding components have identical types. In detail: @@ -5403,10 +5403,6 @@ type Pointer *ArbitraryType func Alignof(variable ArbitraryType) uintptr func Offsetof(selector ArbitraryType) uinptr func Sizeof(variable ArbitraryType) uintptr - -func Reflect(val interface{}) (typ runtime.Type, addr uintptr) -func Typeof(val interface{}) (typ interface{}) -func Unreflect(typ runtime.Type, addr uintptr) interface{} </pre> <p> @@ -5446,23 +5442,6 @@ Calls to <code>Alignof</code>, <code>Offsetof</code>, and <code>Sizeof</code> are compile-time constant expressions of type <code>uintptr</code>. </p> <p> -The functions <code>unsafe.Typeof</code>, -<code>unsafe.Reflect</code>, -and <code>unsafe.Unreflect</code> allow access at run time to the dynamic -types and values stored in interfaces. -<code>Typeof</code> returns a representation of -<code>val</code>'s -dynamic type as a <code>runtime.Type</code>. -<code>Reflect</code> allocates a copy of -<code>val</code>'s dynamic -value and returns both the type and the address of the copy. -<code>Unreflect</code> inverts <code>Reflect</code>, -creating an -interface value from a type and address. -The <a href="/pkg/reflect/"><code>reflect</code> package</a> built on these primitives -provides a safe, more convenient way to inspect interface values. -</p> - <h3 id="Size_and_alignment_guarantees">Size and alignment guarantees</h3> @@ -5499,9 +5478,3 @@ The following minimal alignment properties are guaranteed: <p> A struct or array type has size zero if it contains no fields (or elements, respectively) that have a size greater than zero. Two distinct zero-size variables may have the same address in memory. </p> - - -<h2 id="Implementation_differences">Implementation differences - TODO</h2> -<ul> - <li><span class="alert"><code>len(x)</code> is only a constant if <code>x</code> is a (qualified) identifier denoting an array or pointer to an array.</span></li> -</ul> diff --git a/doc/godocs.js b/doc/godocs.js index cc96cf674..37573136a 100644 --- a/doc/godocs.js +++ b/doc/godocs.js @@ -18,13 +18,6 @@ function bindEvent(el, e, fn) { el.attachEvent('on'+e, fn); } } -bindEvent(window, 'load', godocs_onload); - -function godocs_onload() { - godocs_bindSearchEvents(); - godocs_generateTOC(); - godocs_bindExamples(); -} function godocs_bindSearchEvents() { var search = document.getElementById('search'); @@ -39,7 +32,7 @@ function godocs_bindSearchEvents() { } } function restoreInactive() { - if (search.value != "") { + if (search.value !== "") { return; } if (search.type != "search") { @@ -52,6 +45,26 @@ function godocs_bindSearchEvents() { bindEvent(search, 'blur', restoreInactive); } +/* Returns the "This sweet header" from <h2>This <i>sweet</i> header</h2>. + * Takes a node, returns a string. + */ +function godocs_nodeToText(node) { + var TEXT_NODE = 3; // Defined in Mozilla but not MSIE :( + + var text = ''; + for (var j = 0; j != node.childNodes.length; j++) { + var child = node.childNodes[j]; + if (child.nodeType == TEXT_NODE) { + if (child.nodeValue != '[Top]') { //ok, that's a hack, but it works. + text = text + child.nodeValue; + } + } else { + text = text + godocs_nodeToText(child); + } + } + return text; +} + /* Generates a table of contents: looks for h2 and h3 elements and generates * links. "Decorates" the element with id=="nav" with this table of contents. */ @@ -138,56 +151,59 @@ function godocs_generateTOC() { tocCell.appendChild(dl2); } -/* Returns the "This sweet header" from <h2>This <i>sweet</i> header</h2>. - * Takes a node, returns a string. - */ -function godocs_nodeToText(node) { - var TEXT_NODE = 3; // Defined in Mozilla but not MSIE :( - - var text = ''; - for (var j = 0; j != node.childNodes.length; j++) { - var child = node.childNodes[j]; - if (child.nodeType == TEXT_NODE) { - if (child.nodeValue != '[Top]') { //ok, that's a hack, but it works. - text = text + child.nodeValue; - } - } else { - text = text + godocs_nodeToText(child); +function getElementsByClassName(base, clazz) { + if (base.getElementsByClassName) { + return base.getElementsByClassName(clazz); + } + var elements = base.getElementsByTagName('*'), foundElements = []; + for (var n in elements) { + if (clazz == elements[n].className) { + foundElements.push(elements[n]); } } - return text; + return foundElements; } -function godocs_bindExamples() { - var examples = document.getElementsByClassName("example"); - for (var i = 0; i < examples.length; i++) { - godocs_bindExampleToggle(examples[i]); - } - var links = document.getElementsByClassName("exampleLink"); - for (var i = 0; i < links.length; i++) { - godocs_bindExampleLink(links[i]); - } -} function godocs_bindExampleToggle(eg) { - var heading = eg.getElementsByClassName("exampleHeading"); + var heading = getElementsByClassName(eg, "exampleHeading"); + var callback = function() { + if (eg.className == "example") { + eg.className = "exampleVisible"; + } else { + eg.className = "example"; + } + }; for (var i = 0; i < heading.length; i++) { - bindEvent(heading[i], "click", function() { - if (eg.className == "example") { - eg.className = "exampleVisible"; - } else { - eg.className = "example"; - } - }); + bindEvent(heading[i], "click", callback); } } function godocs_bindExampleLink(l) { var prefix = "example_"; bindEvent(l, "click", function() { var i = l.href.indexOf("#"+prefix); - if (i < 0) + if (i < 0) { return; + } var id = prefix + l.href.slice(i+1+prefix.length); var eg = document.getElementById(id); eg.className = "exampleVisible"; }); } +function godocs_bindExamples() { + var examples = getElementsByClassName(document, "example"); + for (var i = 0; i < examples.length; i++) { + godocs_bindExampleToggle(examples[i]); + } + var links = getElementsByClassName(document, "exampleLink"); + for (i = 0; i < links.length; i++) { + godocs_bindExampleLink(links[i]); + } +} + +function godocs_onload() { + godocs_bindSearchEvents(); + godocs_generateTOC(); + godocs_bindExamples(); +} + +bindEvent(window, 'load', godocs_onload); diff --git a/doc/gopher/bumper.png b/doc/gopher/bumper.png Binary files differindex 6b41c1fd0..b357cdf47 100644 --- a/doc/gopher/bumper.png +++ b/doc/gopher/bumper.png diff --git a/doc/gopher/bumper192x108.png b/doc/gopher/bumper192x108.png Binary files differindex 470a74df5..925474e76 100644 --- a/doc/gopher/bumper192x108.png +++ b/doc/gopher/bumper192x108.png diff --git a/doc/gopher/bumper320x180.png b/doc/gopher/bumper320x180.png Binary files differindex 5b31b5d31..611c417c4 100644 --- a/doc/gopher/bumper320x180.png +++ b/doc/gopher/bumper320x180.png diff --git a/doc/gopher/bumper480x270.png b/doc/gopher/bumper480x270.png Binary files differindex 621f51b65..cf187151f 100644 --- a/doc/gopher/bumper480x270.png +++ b/doc/gopher/bumper480x270.png diff --git a/doc/gopher/bumper640x360.png b/doc/gopher/bumper640x360.png Binary files differindex 9c898d0c7..a5073e0d1 100644 --- a/doc/gopher/bumper640x360.png +++ b/doc/gopher/bumper640x360.png diff --git a/doc/gopher/doc.png b/doc/gopher/doc.png Binary files differnew file mode 100644 index 000000000..e15a3234d --- /dev/null +++ b/doc/gopher/doc.png diff --git a/doc/gopher/frontpage.png b/doc/gopher/frontpage.png Binary files differindex ed1f49b05..1eb81f0be 100644 --- a/doc/gopher/frontpage.png +++ b/doc/gopher/frontpage.png diff --git a/doc/gopher/gopherbw.png b/doc/gopher/gopherbw.png Binary files differindex 48a08cc61..3bfe85dc1 100644 --- a/doc/gopher/gopherbw.png +++ b/doc/gopher/gopherbw.png diff --git a/doc/gopher/gophercolor.png b/doc/gopher/gophercolor.png Binary files differindex b48ffba37..b5f8d01ff 100644 --- a/doc/gopher/gophercolor.png +++ b/doc/gopher/gophercolor.png diff --git a/doc/gopher/gophercolor16x16.png b/doc/gopher/gophercolor16x16.png Binary files differindex 48854ff3b..ec7028cc1 100644 --- a/doc/gopher/gophercolor16x16.png +++ b/doc/gopher/gophercolor16x16.png diff --git a/doc/gopher/help.png b/doc/gopher/help.png Binary files differnew file mode 100644 index 000000000..6ee523898 --- /dev/null +++ b/doc/gopher/help.png diff --git a/doc/gopher/pkg.png b/doc/gopher/pkg.png Binary files differnew file mode 100644 index 000000000..ac96551b5 --- /dev/null +++ b/doc/gopher/pkg.png diff --git a/doc/gopher/project.png b/doc/gopher/project.png Binary files differnew file mode 100644 index 000000000..24603f306 --- /dev/null +++ b/doc/gopher/project.png diff --git a/doc/gopher/ref.png b/doc/gopher/ref.png Binary files differindex 26530a3a0..0508f6ec6 100644 --- a/doc/gopher/ref.png +++ b/doc/gopher/ref.png diff --git a/doc/gopher/run.png b/doc/gopher/run.png Binary files differnew file mode 100644 index 000000000..eb690e3f2 --- /dev/null +++ b/doc/gopher/run.png diff --git a/doc/gopher/talks.png b/doc/gopher/talks.png Binary files differnew file mode 100644 index 000000000..589db470a --- /dev/null +++ b/doc/gopher/talks.png diff --git a/doc/help.html b/doc/help.html index 2efda4e30..fadf80a03 100644 --- a/doc/help.html +++ b/doc/help.html @@ -3,6 +3,8 @@ "Path": "/help/" }--> +<img class="gopher" src="/doc/gopher/help.png"/> + <p> Need help with Go? Try these resources. </p> diff --git a/doc/install-source.html b/doc/install-source.html index 5a17844b2..82ff8e740 100644 --- a/doc/install-source.html +++ b/doc/install-source.html @@ -97,7 +97,9 @@ If you want to build 32-bit binaries on a 64-bit system you'll also need the </p> <p> -<font color="red">TODO: add Windows compiler info</font> +On Windows, install <code>gcc</code> with +<a href="http://www.mingw.org/">MinGW</a>. +(Make sure you add its <code>bin</code> subdirectory to your <code>PATH</code>.) </p> <h2 id="mercurial">Install Mercurial, if needed</h2> @@ -105,7 +107,7 @@ If you want to build 32-bit binaries on a 64-bit system you'll also need the <p> To perform the next step you must have Mercurial installed. (Check that you have an <code>hg</code> command.) This suffices to install Mercurial on most -systems: +Unix systems: </p> <pre> @@ -113,8 +115,7 @@ sudo easy_install mercurial==2.0 </pre> <p> -On Ubuntu/Debian, -the Mercurial in your distribution's +On Ubuntu/Debian, the Mercurial in your distribution's package repository is most likely old and broken. You might try this first: </p> @@ -122,7 +123,7 @@ You might try this first: <pre>apt-get install python-setuptools python-dev build-essential</pre> <p> -If that fails, try installing manually from the +If that fails, or if you use Windows, install manually from the <a href="http://mercurial.selenic.com/wiki/Download">Mercurial Download</a> page. </p> @@ -254,22 +255,13 @@ Bugs can be reported using the <a href="http://code.google.com/p/go/issues/list" <h2 id="releases">Keeping up with releases</h2> <p> -XXX TODO XXX -</p> - -<p> The Go project maintains two stable tags in its Mercurial repository: <code>release</code> and <code>weekly</code>. -The <code>weekly</code> tag is updated about once a week, and should be used by -those who want to track the project's development. -The <code>release</code> tag is given, less often, to those weekly releases -that have proven themselves to be robust. </p> <p> -Most Go users will want to keep their Go installation at the latest -<code>release</code> tag. -New releases are announced on the +The <code>release</code> tag refers to the current stable release of Go. +Most Go users should use this version. New releases are announced on the <a href="http://groups.google.com/group/golang-announce">golang-announce</a> mailing list. </p> @@ -286,6 +278,8 @@ $ ./all.bash </pre> <p> +The <code>weekly</code> tag is updated about once a week, and should be used +only by those who are actively working on the Go core. To use the <code>weekly</code> tag run <code>hg update weekly</code> instead. </p> @@ -298,143 +292,123 @@ The Go compilation environment can be customized by environment variables. to override the defaults. </p> -<dl> -<dt> - <code>$GOROOT</code> -</dt> -<dd> - <p> - XXX FONT IS WRONG IN THESE ENTRIES XXX - XXX I NEED SOME SPAN THING XXX - The root of the Go tree, often <code>$HOME/go</code>. - Its value is built into the tree when it is compiled, and - defaults to the parent of the directory where <code>all.bash</code> was run. - There is no need to set this unless you want to switch between multiple - local copies of the repository. - </p> -</dd> - -<dt> - <code>$GOROOT_FINAL</code> -</dt> -<dd> - <p> - The value assumed by installed binaries and scripts when - <code>$GOROOT</code> is not set explicitly. - It defaults to the value of <code>$GOROOT</code>. - If you want to build the Go tree in one location - but move it elsewhere after the build, set - <code>$GOROOT_FINAL</code> to the eventual location. - </p> -</dd> - -<dt> -<code>$GOOS</code> and <code>$GOARCH</code> -</dt> -<dd> - <p> - The name of the target operating system and compilation architecture. - These default to the values of <code>$GOHOSTOS</code> and - <code>$GOHOSTARCH</code> respectively (described below). - - <p> - Choices for <code>$GOOS</code> are - <code>darwin</code> (Mac OS X 10.5 and above), <code>freebsd</code>, - <code>linux</code>, <code>netbsd</code>, <code>openbsd</code>, - <code>plan9</code>, and <code>windows</code>. - Choices for <code>$GOARCH</code> are - <code>amd64</code> (64-bit x86, the most mature port), - <code>386</code> (32-bit x86), and <code>arm</code> (32-bit ARM). - The valid combinations of <code>$GOOS</code> and <code>$GOARCH</code> are: - <table cellpadding="0"> - <tr> - <th width="50"><th align="left" width="100"><code>$GOOS</code></th> <th align="left" width="100"><code>$GOARCH</code></th> <th align="left"></th> - </tr> - <tr> - <td></td><td><code>darwin</code></td> <td><code>386</code></td> - </tr> - <tr> - <td></td><td><code>darwin</code></td> <td><code>amd64</code></td> - </tr> - <tr> - <td></td><td><code>freebsd</code></td> <td><code>386</code></td> - </tr> - <tr> - <td></td><td><code>freebsd</code></td> <td><code>amd64</code></td> - </tr> - <tr> - <td></td><td><code>linux</code></td> <td><code>386</code></td> - </tr> - <tr> - <td></td><td><code>linux</code></td> <td><code>amd64</code></td> - </tr> - <tr> - <td></td><td><code>linux</code></td> <td><code>arm</code></td> - </tr> - <tr> - <td></td><td><code>netbsd</code></td> <td><code>386</code></td> - </tr> - <tr> - <td></td><td><code>netbsd</code></td> <td><code>amd64</code></td> - </tr> - <tr> - <td></td><td><code>openbsd</code></td> <td><code>386</code></td> - </tr> - <tr> - <td></td><td><code>openbsd</code></td> <td><code>amd64</code></td> - </tr> - <tr> - <td></td><td><code>plan9</code></td> <td><code>386</code></td> - </tr> - <tr> - <td></td><td><code>windows</code></td> <td><code>386</code></td> - </tr> - <tr> - <td></td><td><code>windows</code></td> <td><code>amd64</code></td> - </tr> - </table> -</dd> - -<dt> -<code>$GOHOSTOS</code> and <code>$GOHOSTARCH</code> -</dt> -<dd> - <p> - The name of the host operating system and compilation architecture. - These default to the local system's operating system and - architecture. - - <p> - Valid choices are the same as for <code>$GOOS</code> and - <code>$GOARCH</code>, listed above. - The specified values must be compatible with the local system. - For example, you should not set <code>$GOHOSTARCH</code> to - <code>arm</code> on an x86 system. -</dd> - -<dt> -<code>$GOBIN</code> -</dt> -<dd> - <p> - The location where binaries from the main repository will be installed. - XXX THIS MAY CHANGE TO BE AN OVERRIDE EVEN FOR GOPATH ENTRIES XXX - The default is <code>$GOROOT/bin</code>. - After installing, you will want to arrange to add this - directory to your <code>$PATH</code>, so you can use the tools. -</dd> - -<dt> -<code>$GOARM</code> (arm, default=6) -</dt> -<dd> - <p> - The ARM architecture version the run-time libraries should target. - Setting <code>$GOARM</code> to 5 causes the linker to emit calls - to a software floating point implementation instead of using - hardware floating point support. -</dd> -</dl> +<blockquote> + +<p><code>$GOROOT</code></p> +<p> +The root of the Go tree, often <code>$HOME/go</code>. +Its value is built into the tree when it is compiled, and +defaults to the parent of the directory where <code>all.bash</code> was run. +There is no need to set this unless you want to switch between multiple +local copies of the repository. +</p> + +<p><code>$GOROOT_FINAL</code></p> +<p> +The value assumed by installed binaries and scripts when +<code>$GOROOT</code> is not set explicitly. +It defaults to the value of <code>$GOROOT</code>. +If you want to build the Go tree in one location +but move it elsewhere after the build, set +<code>$GOROOT_FINAL</code> to the eventual location. +</p> + +<p><code>$GOOS</code> and <code>$GOARCH</code></p> +<p> +The name of the target operating system and compilation architecture. +These default to the values of <code>$GOHOSTOS</code> and +<code>$GOHOSTARCH</code> respectively (described below). + +<p> +Choices for <code>$GOOS</code> are +<code>darwin</code> (Mac OS X 10.6 and above), <code>freebsd</code>, +<code>linux</code>, <code>netbsd</code>, <code>openbsd</code>, +<code>plan9</code>, and <code>windows</code>. +Choices for <code>$GOARCH</code> are +<code>amd64</code> (64-bit x86, the most mature port), +<code>386</code> (32-bit x86), and <code>arm</code> (32-bit ARM). +The valid combinations of <code>$GOOS</code> and <code>$GOARCH</code> are: +<table cellpadding="0"> +<tr> +<th width="50"><th align="left" width="100"><code>$GOOS</code></th> <th align="left" width="100"><code>$GOARCH</code></th> <th align="left"></th> +</tr> +<tr> +<td></td><td><code>darwin</code></td> <td><code>386</code></td> +</tr> +<tr> +<td></td><td><code>darwin</code></td> <td><code>amd64</code></td> +</tr> +<tr> +<td></td><td><code>freebsd</code></td> <td><code>386</code></td> +</tr> +<tr> +<td></td><td><code>freebsd</code></td> <td><code>amd64</code></td> +</tr> +<tr> +<td></td><td><code>linux</code></td> <td><code>386</code></td> +</tr> +<tr> +<td></td><td><code>linux</code></td> <td><code>amd64</code></td> +</tr> +<tr> +<td></td><td><code>linux</code></td> <td><code>arm</code></td> +</tr> +<tr> +<td></td><td><code>netbsd</code></td> <td><code>386</code></td> +</tr> +<tr> +<td></td><td><code>netbsd</code></td> <td><code>amd64</code></td> +</tr> +<tr> +<td></td><td><code>openbsd</code></td> <td><code>386</code></td> +</tr> +<tr> +<td></td><td><code>openbsd</code></td> <td><code>amd64</code></td> +</tr> +<tr> +<td></td><td><code>plan9</code></td> <td><code>386</code></td> +</tr> +<tr> +<td></td><td><code>windows</code></td> <td><code>386</code></td> +</tr> +<tr> +<td></td><td><code>windows</code></td> <td><code>amd64</code></td> +</tr> +</table> + +<p><code>$GOHOSTOS</code> and <code>$GOHOSTARCH</code></p> +<p> +The name of the host operating system and compilation architecture. +These default to the local system's operating system and +architecture. +</p> + +<p> +Valid choices are the same as for <code>$GOOS</code> and +<code>$GOARCH</code>, listed above. +The specified values must be compatible with the local system. +For example, you should not set <code>$GOHOSTARCH</code> to +<code>arm</code> on an x86 system. +</p> + +<p><code>$GOBIN</code> +<p> +The location where binaries from the main repository will be installed. +XXX THIS MAY CHANGE TO BE AN OVERRIDE EVEN FOR GOPATH ENTRIES XXX +The default is <code>$GOROOT/bin</code>. +After installing, you will want to arrange to add this +directory to your <code>$PATH</code>, so you can use the tools. +</p> + +<p><code>$GOARM</code> (arm, default=6)</p> +<p> +The ARM architecture version the run-time libraries should target. +Setting <code>$GOARM</code> to 5 causes the linker to emit calls +to a software floating point implementation instead of using +hardware floating point support. +</p> + +</blockquote> <p> Note that <code>$GOARCH</code> and <code>$GOOS</code> identify the diff --git a/doc/install.html b/doc/install.html index 4f2bb1c99..c8b1cf4cf 100644 --- a/doc/install.html +++ b/doc/install.html @@ -35,7 +35,7 @@ your operating system and processor architecture. <p> Official binary distributions are available -for the FreeBSD, Linux, Mac OS X, and Windows operating systems +for the FreeBSD, Linux, Mac OS X (Snow Leopard/Lion), and Windows operating systems and the 32-bit (<code>386</code>) and 64-bit (<code>amd64</code>) x86 processor architectures. </p> @@ -51,7 +51,8 @@ OS/arch combination you may want to try <p> The Go binary distributions assume they will be installed in -<code>/usr/local/go</code>, but it is possible to install them in a different +<code>/usr/local/go</code> (or <code>c:\Go</code> under Windows), +but it is possible to install them in a different location. If you do this, you will need to set the <code>GOROOT</code> environment variable to that directory when using the Go tools. </p> @@ -66,6 +67,11 @@ export GOROOT=$HOME/go export PATH=$PATH:$GOROOT/bin </pre> +<p> +Windows users should read the section about <a href="#windows_env">setting +environment variables under Windows</a>. +</p> + <h3 id="freebsd_linux">FreeBSD and Linux</h3> <p> @@ -114,7 +120,48 @@ Terminal sessions for the change to take effect. <h3 id="windows">Windows</h3> <p> -<font color="red">TODO: windows installation instructions.</font> +The Go project provides two installation options for Windows users +(besides <a href="/doc/install/source">installing from source</a>): +an MSI installer that configures your installation automatically, +and a zip archive that requires you to set some environment variables. +</p> + +<h4 id="windows_msi">MSI installer</h3> + +<p> +Open the <code>.msi</code> file and follow the prompts to install the Go tools. +By default, the installer puts the Go distribution in <code>c:\Go</code>. +</p> + +<p> +The installer should put the <code>c:\Go\bin</code> directory in your +<code>PATH</code> environment variable. You may need to restart any open +command prompts for the change to take effect. +</p> + +<h4 id="windows_zip">Zip archive</h3> + +<p> +Extract the <code>.zip</code> file to the directory of your choice (we +suggest <code>c:\Go</code>). +</p> + +<p> +If you chose a directory other than <code>c:\Go</code>, you must set +the <code>GOROOT</code> environment variable to your chosen path. +</p> + +<p> +Add the <code>bin</code> subdirectory of your Go root (for example, <code>c:\Go\bin</code>) to to your <code>PATH</code> environment variable. +</p> + +<h4 id="windows_env">Setting environment variables under Windows</h4> + +<p> +Under Windows, you may set environment variables through the "Environment +Variables" button on the "Advanced" tab of the "System" control panel. Some +versions of Windows provide this control panel through the "Advanced System +Settings" option inside the "System" control panel. </p> <h2 id="testing">Testing your installation</h2> @@ -153,8 +200,7 @@ If you see the "hello, world" message then your Go installation is working. <h2 id="next">What's next</h2> <p> -Start by taking <a href="http://code.google.com/p/go-tour/">A Tour of Go</a> -or reading the <a href="/doc/go_tutorial.html">Go Tutorial</a>. +Start by taking <a href="http://code.google.com/p/go-tour/">A Tour of Go</a>. </p> <p> @@ -173,8 +219,13 @@ idiomatic Go code. </p> <p> -For the full story, consult Go's extensive -<a href="/doc/">documentation</a>. +For the full story, consult Go's extensive <a href="/doc/">documentation</a>. +</p> + +<p> +Subscribe to the +<a href="http://groups.google.com/group/golang-announce">golang-announce</a> +mailing list to be notified when a new stable version of Go is released. </p> diff --git a/doc/logo-153x55.png b/doc/logo-153x55.png Binary files differindex 4a2446ce7..8ec22aa6d 100644 --- a/doc/logo-153x55.png +++ b/doc/logo-153x55.png diff --git a/doc/logo.png b/doc/logo.png Binary files differdeleted file mode 100644 index 076ce398e..000000000 --- a/doc/logo.png +++ /dev/null diff --git a/doc/makehtml b/doc/makehtml deleted file mode 100755 index f6f601e3b..000000000 --- a/doc/makehtml +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh -# Copyright 2009 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. - -set -e - -TMPL=${1:-effective_go.tmpl} # input file -HTML=$(dirname $TMPL)/$(basename $TMPL .tmpl).html # output file - -if ! test -w $HTML -then - echo 1>&2 makehtml: cannot open $HTML for write - exit 1 -fi - -make tmpltohtml && ./tmpltohtml $TMPL > $HTML diff --git a/doc/play/fib.go b/doc/play/fib.go new file mode 100644 index 000000000..42da9ce82 --- /dev/null +++ b/doc/play/fib.go @@ -0,0 +1,17 @@ +package main + +// fib returns a function that returns +// successive Fibonacci numbers. +func fib() func() int { + a, b := 0, 1 + return func() int { + a, b = b, a+b + return a + } +} + +func main() { + f := fib() + // Function calls are evaluated left-to-right. + println(f(), f(), f(), f(), f()) +} diff --git a/doc/play/hello.go b/doc/play/hello.go new file mode 100644 index 000000000..078ddff8f --- /dev/null +++ b/doc/play/hello.go @@ -0,0 +1,7 @@ +package main + +import "fmt" + +func main() { + fmt.Println("Hello, 世界") +} diff --git a/doc/play/peano.go b/doc/play/peano.go new file mode 100644 index 000000000..c1ee5ad45 --- /dev/null +++ b/doc/play/peano.go @@ -0,0 +1,88 @@ +// Peano integers are represented by a linked +// list whose nodes contain no data +// (the nodes are the data). +// http://en.wikipedia.org/wiki/Peano_axioms + +// This program demonstrates the power of Go's +// segmented stacks when doing massively +// recursive computations. + +package main + +import "fmt" + +// Number is a pointer to a Number +type Number *Number + +// The arithmetic value of a Number is the +// count of the nodes comprising the list. +// (See the count function below.) + +// ------------------------------------- +// Peano primitives + +func zero() *Number { + return nil +} + +func isZero(x *Number) bool { + return x == nil +} + +func add1(x *Number) *Number { + e := new(Number) + *e = x + return e +} + +func sub1(x *Number) *Number { + return *x +} + +func add(x, y *Number) *Number { + if isZero(y) { + return x + } + return add(add1(x), sub1(y)) +} + +func mul(x, y *Number) *Number { + if isZero(x) || isZero(y) { + return zero() + } + return add(mul(x, sub1(y)), x) +} + +func fact(n *Number) *Number { + if isZero(n) { + return add1(zero()) + } + return mul(fact(sub1(n)), n) +} + +// ------------------------------------- +// Helpers to generate/count Peano integers + +func gen(n int) *Number { + if n > 0 { + return add1(gen(n - 1)) + } + return zero() +} + +func count(x *Number) int { + if isZero(x) { + return 0 + } + return count(sub1(x)) + 1 +} + +// ------------------------------------- +// Print i! for i in [0,9] + +func main() { + for i := 0; i <= 9; i++ { + f := count(fact(gen(i))) + fmt.Println(i, "! =", f) + } +} diff --git a/doc/play/pi.go b/doc/play/pi.go new file mode 100644 index 000000000..f2f5dca74 --- /dev/null +++ b/doc/play/pi.go @@ -0,0 +1,34 @@ +// Concurrent computation of pi. +// See http://goo.gl/ZuTZM. +// +// This demonstrates Go's ability to handle +// large numbers of concurrent processes. +// It is an unreasonable way to calculate pi. +package main + +import ( + "fmt" + "math" +) + +func main() { + fmt.Println(pi(5000)) +} + +// pi launches n goroutines to compute an +// approximation of pi. +func pi(n int) float64 { + ch := make(chan float64) + for k := 0; k <= n; k++ { + go term(ch, float64(k)) + } + f := 0.0 + for k := 0; k <= n; k++ { + f += <-ch + } + return f +} + +func term(ch chan float64, k float64) { + ch <- 4 * math.Pow(-1, k) / (2*k + 1) +} diff --git a/doc/play/playground.js b/doc/play/playground.js index e060e203c..947f8a4ec 100644 --- a/doc/play/playground.js +++ b/doc/play/playground.js @@ -12,6 +12,7 @@ // preCompile - callback to mutate request data before compiling // postCompile - callback to read response data after compiling // simple - use plain textarea instead of CodeMirror. +// toysEl - select element with a list of toys. function playground(opts) { var simple = opts['simple']; var code = $(opts['codeEl']); @@ -109,6 +110,16 @@ function playground(opts) { } return $(opts['codeEl']).val(); } + function setBody(text) { + if (editor) { + editor.setValue(text); + return; + } + $(opts['codeEl']).val(text); + } + function origin(href) { + return (""+href).split("/").slice(0, 3).join("/"); + } var seq = 0; function run() { @@ -155,52 +166,69 @@ function playground(opts) { } pre.text(out); }, - error: function() { - output.addClass("error").text( - "Error communicating with remote server." - ); + error: function(xhr) { + var text = "Error communicating with remote server."; + console.log(xhr.status); + if (xhr.status == 501) { + text = xhr.responseText; + } + output.addClass("error").text(text); } }); } $(opts['runEl']).click(run); - if (opts['shareEl'] == null || (opts['shareURLEl'] == null && opts['shareRedirect'] == null)) { - return editor; - } - - function origin(href) { - return (""+href).split("/").slice(0, 3).join("/"); + if (opts['shareEl'] != null && (opts['shareURLEl'] != null || opts['shareRedirect'] != null)) { + var shareURL; + if (opts['shareURLEl']) { + shareURL = $(opts['shareURLEl']).hide(); + } + var sharing = false; + $(opts['shareEl']).click(function() { + if (sharing) return; + sharing = true; + $.ajax("/share", { + processData: false, + data: body(), + type: "POST", + complete: function(xhr) { + sharing = false; + if (xhr.status == 501) { + alert(xhr.responseText); + return; + } + if (xhr.status != 200) { + alert("Server error; try again."); + return; + } + if (opts['shareRedirect']) { + window.location = opts['shareRedirect'] + xhr.responseText; + } + if (shareURL) { + var url = origin(window.location) + "/p/" + xhr.responseText; + shareURL.show().val(url).focus().select(); + } + } + }); + }); } - var shareURL; - if (opts['shareURLEl']) { - shareURL = $(opts['shareURLEl']).hide(); - } - var sharing = false; - $(opts['shareEl']).click(function() { - if (sharing) return; - sharing = true; - $.ajax("/share", { - processData: false, - data: body(), - type: "POST", - complete: function(xhr) { - sharing = false; - if (xhr.status != 200) { - alert("Server error; try again."); - return; - } - if (opts['shareRedirect']) { - window.location = opts['shareRedirect'] + xhr.responseText; - } - if (shareURL) { - var url = origin(window.location) + "/p/" + - xhr.responseText; - shareURL.show().val(url).focus().select(); + if (opts['toysEl'] != null) { + $(opts['toysEl']).bind('change', function() { + var toy = $(this).val(); + $.ajax("/doc/play/"+toy, { + processData: false, + type: "GET", + complete: function(xhr) { + if (xhr.status != 200) { + alert("Server error; try again.") + return; + } + setBody(xhr.responseText); } - } + }); }); - }); + } return editor; } diff --git a/doc/play/sieve.go b/doc/play/sieve.go new file mode 100644 index 000000000..585507ac4 --- /dev/null +++ b/doc/play/sieve.go @@ -0,0 +1,34 @@ +// A concurrent prime sieve + +package main + +// Send the sequence 2, 3, 4, ... to channel 'ch'. +func Generate(ch chan<- int) { + for i := 2; ; i++ { + ch <- i // Send 'i' to channel 'ch'. + } +} + +// Copy the values from channel 'in' to channel 'out', +// removing those divisible by 'prime'. +func Filter(in <-chan int, out chan<- int, prime int) { + for { + i := <-in // Receive value from 'in'. + if i%prime != 0 { + out <- i // Send 'i' to 'out'. + } + } +} + +// The prime sieve: Daisy-chain Filter processes. +func main() { + ch := make(chan int) // Create a new channel. + go Generate(ch) // Launch Generate goroutine. + for i := 0; i < 10; i++ { + prime := <-ch + print(prime, "\n") + ch1 := make(chan int) + go Filter(ch, ch1, prime) + ch = ch1 + } +} diff --git a/doc/play/solitaire.go b/doc/play/solitaire.go new file mode 100644 index 000000000..759d54281 --- /dev/null +++ b/doc/play/solitaire.go @@ -0,0 +1,117 @@ +// This program solves the (English) peg +// solitaire board game. +// http://en.wikipedia.org/wiki/Peg_solitaire + +package main + +import "fmt" + +const N = 11 + 1 // length of a row (+1 for \n) + +// The board must be surrounded by 2 illegal +// fields in each direction so that move() +// doesn't need to check the board boundaries. +// Periods represent illegal fields, +// ● are pegs, and ○ are holes. + +var board = []rune( + `........... +........... +....●●●.... +....●●●.... +..●●●●●●●.. +..●●●○●●●.. +..●●●●●●●.. +....●●●.... +....●●●.... +........... +........... +`) + +// center is the position of the center hole if +// there is a single one; otherwise it is -1. +var center int + +func init() { + n := 0 + for pos, field := range board { + if field == '○' { + center = pos + n++ + } + } + if n != 1 { + center = -1 // no single hole + } +} + +var moves int // number of times move is called + +// move tests if there is a peg at position pos that +// can jump over another peg in direction dir. If the +// move is valid, it is executed and move returns true. +// Otherwise, move returns false. +func move(pos, dir int) bool { + moves++ + if board[pos] == '●' && board[pos+dir] == '●' && board[pos+2*dir] == '○' { + board[pos] = '○' + board[pos+dir] = '○' + board[pos+2*dir] = '●' + return true + } + return false +} + +// unmove reverts a previously executed valid move. +func unmove(pos, dir int) { + board[pos] = '●' + board[pos+dir] = '●' + board[pos+2*dir] = '○' +} + +// solve tries to find a sequence of moves such that +// there is only one peg left at the end; if center is +// >= 0, that last peg must be in the center position. +// If a solution is found, solve prints the board after +// each move in a backward fashion (i.e., the last +// board position is printed first, all the way back to +// the starting board position). +func solve() bool { + var last, n int + for pos, field := range board { + // try each board position + if field == '●' { + // found a peg + for _, dir := range [...]int{-1, -N, +1, +N} { + // try each direction + if move(pos, dir) { + // a valid move was found and executed, + // see if this new board has a solution + if solve() { + unmove(pos, dir) + println(string(board)) + return true + } + unmove(pos, dir) + } + } + last = pos + n++ + } + } + // tried each possible move + if n == 1 && (center < 0 || last == center) { + // there's only one peg left + println(string(board)) + return true + } + // no solution found for this board + return false +} + +func main() { + if !solve() { + fmt.Println("no solution found") + } + fmt.Println(moves, "moves tried") +} diff --git a/doc/play/tree.go b/doc/play/tree.go new file mode 100644 index 000000000..5bcbf05a8 --- /dev/null +++ b/doc/play/tree.go @@ -0,0 +1,100 @@ +// Go's concurrency primitives make it easy to +// express concurrent concepts, such as +// this binary tree comparison. +// +// Trees may be of different shapes, +// but have the same contents. For example: +// +// 4 6 +// 2 6 4 7 +// 1 3 5 7 2 5 +// 1 3 +// +// This program compares a pair of trees by +// walking each in its own goroutine, +// sending their contents through a channel +// to a third goroutine that compares them. + +package main + +import ( + "fmt" + "math/rand" +) + +// A Tree is a binary tree with integer values. +type Tree struct { + Left *Tree + Value int + Right *Tree +} + +// Walk traverses a tree depth-first, +// sending each Value on a channel. +func Walk(t *Tree, ch chan int) { + if t == nil { + return + } + Walk(t.Left, ch) + ch <- t.Value + Walk(t.Right, ch) +} + +// Walker launches Walk in a new goroutine, +// and returns a read-only channel of values. +func Walker(t *Tree) <-chan int { + ch := make(chan int) + go func() { + Walk(t, ch) + close(ch) + }() + return ch +} + +// Compare reads values from two Walkers +// that run simultaneously, and returns true +// if t1 and t2 have the same contents. +func Compare(t1, t2 *Tree) bool { + c1, c2 := Walker(t1), Walker(t2) + for { + v1, ok1 := <-c1 + v2, ok2 := <-c2 + if !ok1 || !ok2 { + return ok1 == ok2 + } + if v1 != v2 { + break + } + } + return false +} + +// New returns a new, random binary tree +// holding the values 1k, 2k, ..., nk. +func New(n, k int) *Tree { + var t *Tree + for _, v := range rand.Perm(n) { + t = insert(t, (1+v)*k) + } + return t +} + +func insert(t *Tree, v int) *Tree { + if t == nil { + return &Tree{nil, v, nil} + } + if v < t.Value { + t.Left = insert(t.Left, v) + return t + } + t.Right = insert(t.Right, v) + return t +} + +func main() { + t1 := New(100, 1) + fmt.Println(Compare(t1, New(100, 1)), "Same Contents") + fmt.Println(Compare(t1, New(99, 1)), "Differing Sizes") + fmt.Println(Compare(t1, New(100, 2)), "Differing Values") + fmt.Println(Compare(t1, New(101, 2)), "Dissimilar") +} diff --git a/doc/play_overlay.png b/doc/play_overlay.png Binary files differdeleted file mode 100644 index 20ef7f399..000000000 --- a/doc/play_overlay.png +++ /dev/null diff --git a/doc/playground.html b/doc/playground.html deleted file mode 100644 index 746b29c86..000000000 --- a/doc/playground.html +++ /dev/null @@ -1,29 +0,0 @@ -<!--{ - "Title": "About the Go Playground" -}--> - -<div class="left-column"> -<p> -The Go Playground is a web service that runs on -<a href="http://golang.org/">golang.org</a>'s servers. -The service receives a Go program, compiles, links, and runs the program inside -a sandbox, then returns the output. -</p> - -<p> -There are limitations to the programs that can be run in the Playground. -They must be single-threaded (but they may use many goroutines). -There are also limits on execution time, and CPU and memory usage. -The Playground can access only a subset of the standard library -(notably absent are network and file system access). -Therefore, the only communication a Playground program has to the outside world -is via standard output. -</div> - -<div class="right-column"> -<script src="http://www.google.com/jsapi" type="text/javascript"></script> -<div id="playground" class="small"></div> -<script src="/doc/play/playground.js"></script> -</div> - -<div class="end-columns"></div> diff --git a/doc/progs/cgo1.go b/doc/progs/cgo1.go new file mode 100644 index 000000000..b79ee368a --- /dev/null +++ b/doc/progs/cgo1.go @@ -0,0 +1,21 @@ +// Copyright 2012 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. +package rand + +/* +#include <stdlib.h> +*/ +import "C" + +// STOP OMIT +func Random() int { + return int(C.random()) +} + +// STOP OMIT +func Seed(i int) { + C.srandom(C.uint(i)) +} + +// END OMIT diff --git a/doc/progs/cgo2.go b/doc/progs/cgo2.go new file mode 100644 index 000000000..f38473b13 --- /dev/null +++ b/doc/progs/cgo2.go @@ -0,0 +1,21 @@ +// Copyright 2012 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. +package rand2 + +/* +#include <stdlib.h> +*/ +import "C" + +func Random() int { + var r C.long = C.random() + return int(r) +} + +// STOP OMIT +func Seed(i int) { + C.srandom(C.uint(i)) +} + +// END OMIT diff --git a/doc/progs/cgo3.go b/doc/progs/cgo3.go new file mode 100644 index 000000000..435fd0402 --- /dev/null +++ b/doc/progs/cgo3.go @@ -0,0 +1,17 @@ +// Copyright 2012 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. +package print + +// #include <stdio.h> +// #include <stdlib.h> +import "C" +import "unsafe" + +func Print(s string) { + cs := C.CString(s) + C.fputs(cs, (*C.FILE)(C.stdout)) + C.free(unsafe.Pointer(cs)) +} + +// END OMIT diff --git a/doc/progs/cgo4.go b/doc/progs/cgo4.go new file mode 100644 index 000000000..3808d6217 --- /dev/null +++ b/doc/progs/cgo4.go @@ -0,0 +1,17 @@ +// Copyright 2012 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. +package print + +// #include <stdio.h> +// #include <stdlib.h> +import "C" +import "unsafe" + +func Print(s string) { + cs := C.CString(s) + defer C.free(unsafe.Pointer(cs)) + C.fputs(cs, (*C.FILE)(C.stdout)) +} + +// END OMIT diff --git a/doc/progs/gobs1.go b/doc/progs/gobs1.go new file mode 100644 index 000000000..7077ca159 --- /dev/null +++ b/doc/progs/gobs1.go @@ -0,0 +1,22 @@ +// Copyright 2011 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. + +package gobs1 + +type T struct{ X, Y, Z int } // Only exported fields are encoded and decoded. +var t = T{X: 7, Y: 0, Z: 8} + +// STOP OMIT + +type U struct{ X, Y *int8 } // Note: pointers to int8s +var u U + +// STOP OMIT + +type Node struct { + Value int + Left, Right *Node +} + +// STOP OMIT diff --git a/doc/progs/gobs2.go b/doc/progs/gobs2.go new file mode 100644 index 000000000..85bb41cdc --- /dev/null +++ b/doc/progs/gobs2.go @@ -0,0 +1,43 @@ +// Copyright 2011 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. + +package main + +import ( + "bytes" + "encoding/gob" + "fmt" + "log" +) + +type P struct { + X, Y, Z int + Name string +} + +type Q struct { + X, Y *int32 + Name string +} + +func main() { + // Initialize the encoder and decoder. Normally enc and dec would be + // bound to network connections and the encoder and decoder would + // run in different processes. + var network bytes.Buffer // Stand-in for a network connection + enc := gob.NewEncoder(&network) // Will write to network. + dec := gob.NewDecoder(&network) // Will read from network. + // Encode (send) the value. + err := enc.Encode(P{3, 4, 5, "Pythagoras"}) + if err != nil { + log.Fatal("encode error:", err) + } + // Decode (receive) the value. + var q Q + err = dec.Decode(&q) + if err != nil { + log.Fatal("decode error:", err) + } + fmt.Printf("%q: {%d,%d}\n", q.Name, *q.X, *q.Y) +} diff --git a/doc/progs/helloworld.go b/doc/progs/helloworld.go deleted file mode 100644 index 8185038d9..000000000 --- a/doc/progs/helloworld.go +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2009 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. - -package main - -import fmt "fmt" // Package implementing formatted I/O. - -func main() { - fmt.Printf("Hello, world; or Καλημέρα κόσμε; or こんにちは 世界\n") -} diff --git a/doc/progs/helloworld3.go b/doc/progs/helloworld3.go deleted file mode 100644 index 05d26df1c..000000000 --- a/doc/progs/helloworld3.go +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2009 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. - -package main - -import ( - "./file" - "fmt" - "os" -) - -func main() { - hello := []byte("hello, world\n") - file.Stdout.Write(hello) - f, err := file.Open("/does/not/exist") - if f == nil { - fmt.Printf("can't open file; err=%s\n", err.Error()) - os.Exit(1) - } -} diff --git a/doc/progs/image_draw.go b/doc/progs/image_draw.go new file mode 100644 index 000000000..f3400b601 --- /dev/null +++ b/doc/progs/image_draw.go @@ -0,0 +1,142 @@ +// Copyright 2012 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. + +// This file contains the code snippets included in "The Go image/draw package." + +package main + +import ( + "image" + "image/color" + "image/draw" +) + +func main() { + Color() + Rect() + RectAndScroll() + ConvAndCircle() + Glyph() +} + +func Color() { + c := color.RGBA{255, 0, 255, 255} + r := image.Rect(0, 0, 640, 480) + dst := image.NewRGBA(r) + + // ZERO OMIT + // image.ZP is the zero point -- the origin. + draw.Draw(dst, r, &image.Uniform{c}, image.ZP, draw.Src) + // STOP OMIT + + // BLUE OMIT + m := image.NewRGBA(image.Rect(0, 0, 640, 480)) + blue := color.RGBA{0, 0, 255, 255} + draw.Draw(m, m.Bounds(), &image.Uniform{blue}, image.ZP, draw.Src) + // STOP OMIT + + // RESET OMIT + draw.Draw(m, m.Bounds(), image.Transparent, image.ZP, draw.Src) + // STOP OMIT +} + +func Rect() { + dst := image.NewRGBA(image.Rect(0, 0, 640, 480)) + sr := image.Rect(0, 0, 200, 200) + src := image.Black + dp := image.Point{100, 100} + + // RECT OMIT + r := image.Rectangle{dp, dp.Add(sr.Size())} + draw.Draw(dst, r, src, sr.Min, draw.Src) + // STOP OMIT +} + +func RectAndScroll() { + dst := image.NewRGBA(image.Rect(0, 0, 640, 480)) + sr := image.Rect(0, 0, 200, 200) + src := image.Black + dp := image.Point{100, 100} + + // RECT2 OMIT + r := sr.Sub(sr.Min).Add(dp) + draw.Draw(dst, r, src, sr.Min, draw.Src) + // STOP OMIT + + m := dst + + // SCROLL OMIT + b := m.Bounds() + p := image.Pt(0, 20) + // Note that even though the second argument is b, + // the effective rectangle is smaller due to clipping. + draw.Draw(m, b, m, b.Min.Add(p), draw.Src) + dirtyRect := b.Intersect(image.Rect(b.Min.X, b.Max.Y-20, b.Max.X, b.Max.Y)) + // STOP OMIT + + _ = dirtyRect // noop +} + +func ConvAndCircle() { + src := image.NewRGBA(image.Rect(0, 0, 640, 480)) + dst := image.NewRGBA(image.Rect(0, 0, 640, 480)) + + // CONV OMIT + b := src.Bounds() + m := image.NewRGBA(image.Rect(0, 0, b.Dx(), b.Dy())) + draw.Draw(m, m.Bounds(), src, b.Min, draw.Src) + // STOP OMIT + + p := image.Point{100, 100} + r := 50 + + // CIRCLE2 OMIT + draw.DrawMask(dst, dst.Bounds(), src, image.ZP, &circle{p, r}, image.ZP, draw.Over) + // STOP OMIT +} + +func theGlyphImageForAFont() image.Image { + return image.NewRGBA(image.Rect(0, 0, 640, 480)) +} + +func theBoundsFor(index int) image.Rectangle { + return image.Rect(0, 0, 32, 32) +} + +func Glyph() { + p := image.Point{100, 100} + dst := image.NewRGBA(image.Rect(0, 0, 640, 480)) + glyphIndex := 42 + + // GLYPH OMIT + src := &image.Uniform{color.RGBA{0, 0, 255, 255}} + mask := theGlyphImageForAFont() + mr := theBoundsFor(glyphIndex) + draw.DrawMask(dst, mr.Sub(mr.Min).Add(p), src, image.ZP, mask, mr.Min, draw.Over) + // STOP OMIT +} + +//CIRCLE OMIT +type circle struct { + p image.Point + r int +} + +func (c *circle) ColorModel() color.Model { + return color.AlphaModel +} + +func (c *circle) Bounds() image.Rectangle { + return image.Rect(c.p.X-c.r, c.p.Y-c.r, c.p.X+c.r, c.p.Y+c.r) +} + +func (c *circle) At(x, y int) color.Color { + xx, yy, rr := float64(x-c.p.X)+0.5, float64(y-c.p.Y)+0.5, float64(c.r) + if xx*xx+yy*yy < rr*rr { + return color.Alpha{255} + } + return color.Alpha{0} +} + +//STOP diff --git a/doc/progs/interface.go b/doc/progs/interface.go index 91145401e..c2925d590 100644 --- a/doc/progs/interface.go +++ b/doc/progs/interface.go @@ -1,3 +1,9 @@ +// Copyright 2012 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. + +// This file contains the code snippets included in "The Laws of Reflection." + package main import ( diff --git a/doc/progs/interface2.go b/doc/progs/interface2.go index e2716cf16..a541d94e4 100644 --- a/doc/progs/interface2.go +++ b/doc/progs/interface2.go @@ -1,3 +1,9 @@ +// Copyright 2012 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. + +// This file contains the code snippets included in "The Laws of Reflection." + package main import ( @@ -39,11 +45,14 @@ func f3() { type MyInt int var x MyInt = 7 v := reflect.ValueOf(x) + // STOP OMIT // START f3b OMIT y := v.Interface().(float64) // y will have type float64. fmt.Println(y) + // STOP OMIT // START f3c OMIT fmt.Println(v.Interface()) + // STOP OMIT // START f3d OMIT fmt.Printf("value is %7.1e\n", v.Interface()) // STOP OMIT @@ -69,6 +78,7 @@ func f6() { // START f6 OMIT var x float64 = 3.4 v := reflect.ValueOf(x) + // STOP OMIT // START f6b OMIT v.SetFloat(7.1) // STOP OMIT @@ -80,9 +90,11 @@ func f7() { p := reflect.ValueOf(&x) // Note: take the address of x. fmt.Println("type of p:", p.Type()) fmt.Println("settability of p:", p.CanSet()) + // STOP OMIT // START f7b OMIT v := p.Elem() fmt.Println("settability of v:", v.CanSet()) + // STOP OMIT // START f7c OMIT v.SetFloat(7.1) fmt.Println(v.Interface()) @@ -104,9 +116,17 @@ func f8() { fmt.Printf("%d: %s %s = %v\n", i, typeOfT.Field(i).Name, f.Type(), f.Interface()) } + // STOP OMIT // START f8b OMIT s.Field(0).SetInt(77) s.Field(1).SetString("Sunset Strip") fmt.Println("t is now", t) // STOP OMIT } + +func f9() { + // START f9 OMIT + var x float64 = 3.4 + fmt.Println("value:", reflect.ValueOf(x)) + // STOP OMIT +} diff --git a/doc/progs/json1.go b/doc/progs/json1.go new file mode 100644 index 000000000..9e10f4743 --- /dev/null +++ b/doc/progs/json1.go @@ -0,0 +1,88 @@ +// Copyright 2012 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. + +package main + +import ( + "encoding/json" + "log" + "reflect" +) + +type Message struct { + Name string + Body string + Time int64 +} + +// STOP OMIT + +func Encode() { + m := Message{"Alice", "Hello", 1294706395881547000} + b, err := json.Marshal(m) + + if err != nil { + panic(err) + } + + expected := []byte(`{"Name":"Alice","Body":"Hello","Time":1294706395881547000}`) + if !reflect.DeepEqual(b, expected) { + log.Panicf("Error marshalling %q, expected %q, got %q.", m, expected, b) + } + +} + +func Decode() { + b := []byte(`{"Name":"Alice","Body":"Hello","Time":1294706395881547000}`) + var m Message + err := json.Unmarshal(b, &m) + + if err != nil { + panic(err) + } + + expected := Message{ + Name: "Alice", + Body: "Hello", + Time: 1294706395881547000, + } + + if !reflect.DeepEqual(m, expected) { + log.Panicf("Error unmarshalling %q, expected %q, got %q.", b, expected, m) + } + + m = Message{ + Name: "Alice", + Body: "Hello", + Time: 1294706395881547000, + } + + // STOP OMIT +} + +func PartialDecode() { + b := []byte(`{"Name":"Bob","Food":"Pickle"}`) + var m Message + err := json.Unmarshal(b, &m) + + // STOP OMIT + + if err != nil { + panic(err) + } + + expected := Message{ + Name: "Bob", + } + + if !reflect.DeepEqual(expected, m) { + log.Panicf("Error unmarshalling %q, expected %q, got %q.", b, expected, m) + } +} + +func main() { + Encode() + Decode() + PartialDecode() +} diff --git a/doc/progs/json2.go b/doc/progs/json2.go new file mode 100644 index 000000000..6089ae671 --- /dev/null +++ b/doc/progs/json2.go @@ -0,0 +1,42 @@ +// Copyright 2012 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. + +package main + +import ( + "fmt" + "math" +) + +func InterfaceExample() { + var i interface{} + i = "a string" + i = 2011 + i = 2.777 + + // STOP OMIT + + r := i.(float64) + fmt.Println("the circle's area", math.Pi*r*r) + + // STOP OMIT + + switch v := i.(type) { + case int: + fmt.Println("twice i is", v*2) + case float64: + fmt.Println("the reciprocal of i is", 1/v) + case string: + h := len(v) / 2 + fmt.Println("i swapped by halves is", v[h:]+v[:h]) + default: + // i isn't one of the types above + } + + // STOP OMIT +} + +func main() { + InterfaceExample() +} diff --git a/doc/progs/json3.go b/doc/progs/json3.go new file mode 100644 index 000000000..a04fdfa50 --- /dev/null +++ b/doc/progs/json3.go @@ -0,0 +1,73 @@ +// Copyright 2012 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. + +package main + +import ( + "encoding/json" + "fmt" + "log" + "reflect" +) + +func Decode() { + b := []byte(`{"Name":"Wednesday","Age":6,"Parents":["Gomez","Morticia"]}`) + + var f interface{} + err := json.Unmarshal(b, &f) + + // STOP OMIT + + if err != nil { + panic(err) + } + + expected := map[string]interface{}{ + "Name": "Wednesday", + "Age": float64(6), + "Parents": []interface{}{ + "Gomez", + "Morticia", + }, + } + + if !reflect.DeepEqual(f, expected) { + log.Panicf("Error unmarshalling %q, expected %q, got %q", b, expected, f) + } + + f = map[string]interface{}{ + "Name": "Wednesday", + "Age": 6, + "Parents": []interface{}{ + "Gomez", + "Morticia", + }, + } + + // STOP OMIT + + m := f.(map[string]interface{}) + + for k, v := range m { + switch vv := v.(type) { + case string: + fmt.Println(k, "is string", vv) + case int: + fmt.Println(k, "is int", vv) + case []interface{}: + fmt.Println(k, "is an array:") + for i, u := range vv { + fmt.Println(i, u) + } + default: + fmt.Println(k, "is of a type I don't know how to handle") + } + } + + // STOP OMIT +} + +func main() { + Decode() +} diff --git a/doc/progs/json4.go b/doc/progs/json4.go new file mode 100644 index 000000000..492630220 --- /dev/null +++ b/doc/progs/json4.go @@ -0,0 +1,45 @@ +// Copyright 2012 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. + +package main + +import ( + "encoding/json" + "log" + "reflect" +) + +type FamilyMember struct { + Name string + Age int + Parents []string +} + +// STOP OMIT + +func Decode() { + b := []byte(`{"Name":"Bob","Age":20,"Parents":["Morticia", "Gomez"]}`) + var m FamilyMember + err := json.Unmarshal(b, &m) + + // STOP OMIT + + if err != nil { + panic(err) + } + + expected := FamilyMember{ + Name: "Bob", + Age: 20, + Parents: []string{"Morticia", "Gomez"}, + } + + if !reflect.DeepEqual(expected, m) { + log.Panicf("Error unmarshalling %q, expected %q, got %q", b, expected, m) + } +} + +func main() { + Decode() +} diff --git a/doc/progs/json5.go b/doc/progs/json5.go new file mode 100644 index 000000000..6d7a4ca8c --- /dev/null +++ b/doc/progs/json5.go @@ -0,0 +1,31 @@ +// Copyright 2012 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. + +package main + +import ( + "encoding/json" + "log" + "os" +) + +func main() { + dec := json.NewDecoder(os.Stdin) + enc := json.NewEncoder(os.Stdout) + for { + var v map[string]interface{} + if err := dec.Decode(&v); err != nil { + log.Println(err) + return + } + for k := range v { + if k != "Name" { + delete(v, k) + } + } + if err := enc.Encode(&v); err != nil { + log.Println(err) + } + } +} diff --git a/doc/progs/print.go b/doc/progs/print.go deleted file mode 100644 index 8f44ba8c6..000000000 --- a/doc/progs/print.go +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2009 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. - -package main - -import "fmt" - -func main() { - var u64 uint64 = 1<<64 - 1 - fmt.Printf("%d %d\n", u64, int64(u64)) - - // harder stuff - type T struct { - a int - b string - } - t := T{77, "Sunset Strip"} - a := []int{1, 2, 3, 4} - fmt.Printf("%v %v %v\n", u64, t, a) - fmt.Print(u64, " ", t, " ", a, "\n") - fmt.Println(u64, t, a) -} diff --git a/doc/progs/print_string.go b/doc/progs/print_string.go deleted file mode 100644 index 46ab1d91a..000000000 --- a/doc/progs/print_string.go +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2009 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. - -package main - -import "fmt" - -type testType struct { - a int - b string -} - -func (t *testType) String() string { - return fmt.Sprint(t.a) + " " + t.b -} - -func main() { - t := &testType{77, "Sunset Strip"} - fmt.Println(t) -} diff --git a/doc/progs/run b/doc/progs/run index e3d5c128c..8348a33e5 100755 --- a/doc/progs/run +++ b/doc/progs/run @@ -5,6 +5,8 @@ set -e +goos=$(go env GOOS) + defer_panic_recover=" defer defer2 @@ -23,14 +25,48 @@ error_handling=" error4 " -all=$(echo $defer_panic_recover $effective_go $error_handling slices go1) +law_of_reflection=" + interface + interface2 +" + +c_go_cgo=" + cgo1 + cgo2 + cgo3 + cgo4 +" +# cgo1 and cgo2 don't run on freebsd, srandom has a different signature +if [ "$goos" == "freebsd" ]; then + c_go_cgo="cgo3 cgo4" +fi + +timeout=" + timeout1 + timeout2 +" + +gobs=" + gobs1 + gobs2 +" + +json=" + json1 + json2 + json3 + json4 + json5 +" + +all=$(echo $defer_panic_recover $effective_go $error_handling $law_of_reflection $c_go_cgo $timeout $gobs $json slices go1) for i in $all; do go build $i.go done # Write to temporary file to avoid mingw bash bug. -TMPFILE="/tmp/gotest3.$USER" +TMPFILE="${TMPDIR:-/tmp}/gotest3.$USER" function testit { ./$1 >"$TMPFILE" 2>&1 || true @@ -50,4 +86,10 @@ testit eff_sequence '^\[-1 2 6 16 44\]$' testit go1 '^Christmas is a holiday: true Sleeping for 0.123s.*go1.go already exists$' +testit interface2 "^type: float64$" +testit json1 "^$" +testit json2 "the reciprocal of i is" +testit json3 "Age is int 6" +testit json4 "^$" + rm -f $all "$TMPFILE" diff --git a/doc/progs/server.go b/doc/progs/server.go deleted file mode 100644 index 4d8409b80..000000000 --- a/doc/progs/server.go +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2009 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. - -package main - -import "fmt" - -type request struct { - a, b int - replyc chan int -} - -type binOp func(a, b int) int - -func run(op binOp, req *request) { - reply := op(req.a, req.b) - req.replyc <- reply -} - -func server(op binOp, service <-chan *request) { - for { - req := <-service - go run(op, req) // don't wait for it - } -} - -func startServer(op binOp) chan<- *request { - req := make(chan *request) - go server(op, req) - return req -} - -func main() { - adder := startServer(func(a, b int) int { return a + b }) - const N = 100 - var reqs [N]request - for i := 0; i < N; i++ { - req := &reqs[i] - req.a = i - req.b = i + N - req.replyc = make(chan int) - adder <- req - } - for i := N - 1; i >= 0; i-- { // doesn't matter what order - if <-reqs[i].replyc != N+2*i { - fmt.Println("fail at", i) - } - } - fmt.Println("done") -} diff --git a/doc/progs/server1.go b/doc/progs/server1.go deleted file mode 100644 index 39e3dde5d..000000000 --- a/doc/progs/server1.go +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2009 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. - -package main - -import "fmt" - -type request struct { - a, b int - replyc chan int -} - -type binOp func(a, b int) int - -func run(op binOp, req *request) { - reply := op(req.a, req.b) - req.replyc <- reply -} - -func server(op binOp, service <-chan *request, quit <-chan bool) { - for { - select { - case req := <-service: - go run(op, req) // don't wait for it - case <-quit: - return - } - } -} - -func startServer(op binOp) (service chan *request, quit chan bool) { - service = make(chan *request) - quit = make(chan bool) - go server(op, service, quit) - return service, quit -} - -func main() { - adder, quit := startServer(func(a, b int) int { return a + b }) - const N = 100 - var reqs [N]request - for i := 0; i < N; i++ { - req := &reqs[i] - req.a = i - req.b = i + N - req.replyc = make(chan int) - adder <- req - } - for i := N - 1; i >= 0; i-- { // doesn't matter what order - if <-reqs[i].replyc != N+2*i { - fmt.Println("fail at", i) - } - } - quit <- true -} diff --git a/doc/progs/sort.go b/doc/progs/sort.go deleted file mode 100644 index 894693f0d..000000000 --- a/doc/progs/sort.go +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright 2009 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. - -package sort - -type Interface interface { - Len() int - Less(i, j int) bool - Swap(i, j int) -} - -func Sort(data Interface) { - for i := 1; i < data.Len(); i++ { - for j := i; j > 0 && data.Less(j, j-1); j-- { - data.Swap(j, j-1) - } - } -} - -func IsSorted(data Interface) bool { - n := data.Len() - for i := n - 1; i > 0; i-- { - if data.Less(i, i-1) { - return false - } - } - return true -} - -// Convenience types for common cases - -type IntSlice []int - -func (p IntSlice) Len() int { return len(p) } -func (p IntSlice) Less(i, j int) bool { return p[i] < p[j] } -func (p IntSlice) Swap(i, j int) { p[i], p[j] = p[j], p[i] } - -type Float64Slice []float64 - -func (p Float64Slice) Len() int { return len(p) } -func (p Float64Slice) Less(i, j int) bool { return p[i] < p[j] } -func (p Float64Slice) Swap(i, j int) { p[i], p[j] = p[j], p[i] } - -type StringSlice []string - -func (p StringSlice) Len() int { return len(p) } -func (p StringSlice) Less(i, j int) bool { return p[i] < p[j] } -func (p StringSlice) Swap(i, j int) { p[i], p[j] = p[j], p[i] } - -// Convenience wrappers for common cases - -func SortInts(a []int) { Sort(IntSlice(a)) } -func SortFloat64s(a []float64) { Sort(Float64Slice(a)) } -func SortStrings(a []string) { Sort(StringSlice(a)) } - -func IntsAreSorted(a []int) bool { return IsSorted(IntSlice(a)) } -func Float64sAreSorted(a []float64) bool { return IsSorted(Float64Slice(a)) } -func StringsAreSorted(a []string) bool { return IsSorted(StringSlice(a)) } diff --git a/doc/progs/strings.go b/doc/progs/strings.go deleted file mode 100644 index e6739b385..000000000 --- a/doc/progs/strings.go +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2009 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. - -package main - -import "os" - -func main() { - s := "hello" - if s[1] != 'e' { - os.Exit(1) - } - s = "good bye" - var p *string = &s - *p = "ciao" -} diff --git a/doc/progs/sum.go b/doc/progs/sum.go deleted file mode 100644 index 0f316bc01..000000000 --- a/doc/progs/sum.go +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2009 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. - -package main - -import "fmt" - -func sum(a []int) int { // returns an int - s := 0 - for i := 0; i < len(a); i++ { - s += a[i] - } - return s -} - -func main() { - x := [3]int{1, 2, 3} - s := sum(x[:]) // a slice of the array is passed to sum - fmt.Print(s, "\n") -} diff --git a/doc/progs/timeout1.go b/doc/progs/timeout1.go new file mode 100644 index 000000000..5221770ec --- /dev/null +++ b/doc/progs/timeout1.go @@ -0,0 +1,28 @@ +// Copyright 2012 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. +package timeout + +import ( + "time" +) + +func Timeout() { + ch := make(chan bool, 1) + timeout := make(chan bool, 1) + go func() { + time.Sleep(1 * time.Second) + timeout <- true + }() + + // STOP OMIT + + select { + case <-ch: + // a read from ch has occurred + case <-timeout: + // the read from ch has timed out + } + + // STOP OMIT +} diff --git a/doc/progs/timeout2.go b/doc/progs/timeout2.go new file mode 100644 index 000000000..7145bc93e --- /dev/null +++ b/doc/progs/timeout2.go @@ -0,0 +1,27 @@ +// Copyright 2012 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. +package query + +type Conn string + +func (c Conn) DoQuery(query string) Result { + return Result("result") +} + +type Result string + +func Query(conns []Conn, query string) Result { + ch := make(chan Result, 1) + for _, conn := range conns { + go func(c Conn) { + select { + case ch <- c.DoQuery(query): + default: + } + }(conn) + } + return <-ch +} + +// STOP OMIT diff --git a/doc/reference.html b/doc/reference.html index 12a6ef96d..0eddc2352 100644 --- a/doc/reference.html +++ b/doc/reference.html @@ -1,9 +1,9 @@ <!--{ "Title": "References", - "Path": "/ref/" + "Path": "/ref/" }--> -<img src="/doc/gopher/ref.png" align="right"/> +<img class="gopher" src="/doc/gopher/ref.png" /> <p>Good bedtime reading.</p> @@ -42,18 +42,34 @@ same variable in a different goroutine. Using GDB to debug Go programs. </p> -<h3 id="articles">Articles</h2> +<h4 id="subrepos">Sub-repositories</h4> + +<p> +These packages are part of the Go Project but outside the main Go tree. +They are developed under looser <a href="/doc/go1compat.html">compatibility +requirements</a> than the Go core. +Install them with "<code><a href="/cmd/go/#Download_and_install_packages_and_dependencies">go get</a></code>". +</p> + +<ul> +<li><a href="http://code.google.com/p/go/source/browse?repo=codereview"><code>code.google.com/p/go.codereview</code></a> [<a href="http://gopkgdoc.appspot.com/pkg/code.google.com/p/go.codereview">docs</a>] +<li><a href="http://code.google.com/p/go/source/browse?repo=crypto"><code>code.google.com/p/go.crypto</code></a> [<a href="http://gopkgdoc.appspot.com/pkg/code.google.com/p/go.crypto">docs</a>] +<li><a href="http://code.google.com/p/go/source/browse?repo=image"><code>code.google.com/p/go.image</code></a> [<a href="http://gopkgdoc.appspot.com/pkg/code.google.com/p/go.image">docs</a>] +<li><a href="http://code.google.com/p/go/source/browse?repo=net"><code>code.google.com/p/go.net</code></a> [<a href="http://gopkgdoc.appspot.com/pkg/code.google.com/p/go.net">docs</a>] +</ul> + +<h4 id="articles">Articles</h4> <ul> -<li><a href="http://blog.golang.org/2011/03/c-go-cgo.html">C? Go? Cgo!</a> - linking against C code with <a href="/cmd/cgo/">cgo</a>.</li> +<li><a href="/doc/articles/c_go_cgo.html">C? Go? Cgo!</a> - linking against C code with <a href="/cmd/cgo/">cgo</a>.</li> <li><a href="/doc/articles/defer_panic_recover.html">Defer, Panic, and Recover</a></li> <li><a href="/doc/articles/slices_usage_and_internals.html">Go Slices: usage and internals</a></li> -<li><a href="http://blog.golang.org/2011/03/godoc-documenting-go-code.html">Godoc: documenting Go code</a> - writing good documentation for <a href="/cmd/godoc/">godoc</a>.</li> +<li><a href="/doc/articles/godoc_documenting_go_code.html">Godoc: documenting Go code</a> - writing good documentation for <a href="/cmd/godoc/">godoc</a>.</li> <li><a href="http://blog.golang.org/2011/06/profiling-go-programs.html">Profiling Go Programs</a></li> </ul> <p> -See the <a href=/doc/#articles">documentation page</a> for more articles. +See the <a href="/doc/#articles">documentation page</a> for more articles. </p> </div> diff --git a/doc/root.html b/doc/root.html index 2029d4c6d..3b92229cb 100644 --- a/doc/root.html +++ b/doc/root.html @@ -5,9 +5,10 @@ <div class="left"> <div id="learn"> +<img class="icon share" src="/doc/share.png" alt="View full screen" title="View full screen"> <div class="rootHeading">Try Go</div> <div class="input"> -<textarea spellcheck="false" id="code">// You can edit this code! +<textarea spellcheck="false" class="code">// You can edit this code! // Click here and start typing. package main @@ -17,14 +18,26 @@ func main() { fmt.Println("Hello, 世界") }</textarea> </div> -<div class="output" id="output"> +<div class="output"> <pre> Hello, 世界 </pre> </div> <div class="buttons"> -<a id="run" href="#">Run</a> -<a id="share" href="#">Share</a> +<a class="run" href="#" title="Run this code [shift-enter]">Run</a> +<a class="share" href="#" title="Share this code">Share</a> +<a class="tour" href="http://tour.golang.org/" title="Learn Go from your browser">Tour</a> +</div> +<div class="toys"> +<select> + <option value="hello.go">Hello, World!</option> + <option value="fib.go">Fibonacci Closure</option> + <option value="peano.go">Peano Integers</option> + <option value="pi.go">Concurrent pi</option> + <option value="sieve.go">Concurrent Prime Sieve</option> + <option value="solitaire.go">Peg Solitaire Solver</option> + <option value="tree.go">Tree Comparison</option> +</select> </div> </div> @@ -39,7 +52,7 @@ simple, reliable, and efficient software. <div id="gopher"></div> -<a href="/install/" id="start"> +<a href="/doc/install" id="start"> <div class="big">Download Go</div> <div class="desc"> Binary distributions available for<br> @@ -72,8 +85,6 @@ Linux, Mac OS X, Windows, and more. <div style="clear: both;"></div> -<div id="plusoneRoot"><g:plusone annotation="none"></g:plusone></div> - <script type="text/javascript" src="https://www.google.com/jsapi"></script> <script type="text/javascript" src="/doc/play/playground.js"></script> <script type="text/javascript"> @@ -114,11 +125,12 @@ function init() { // Set up playground. playground({ "simple": true, - "codeEl": "#code", - "outputEl": "#output", - "runEl": "#run", - "shareEl": "#share", - "shareRedirect": "http://play.golang.org/p/" + "codeEl": "#learn .code", + "outputEl": "#learn .output", + "runEl": "#learn .run", + "shareEl": "#learn .share", + "shareRedirect": "http://play.golang.org/p/", + "toysEl": "#learn .toys select" }); } diff --git a/doc/share.png b/doc/share.png Binary files differnew file mode 100644 index 000000000..c04f0c71a --- /dev/null +++ b/doc/share.png diff --git a/doc/style.css b/doc/style.css index b180a615d..53f5e18cd 100644 --- a/doc/style.css +++ b/doc/style.css @@ -18,11 +18,11 @@ pre .highlight, pre .highlight-comment, pre .selection-highlight, pre .selection-highlight-comment { - background: #FFFF00; + background: #FFFF00; } pre .selection, pre .selection-comment { - background: #FF9632; + background: #FF9632; } pre .ln { color: #999; @@ -30,10 +30,15 @@ pre .ln { body { color: #222; } -a { +a, +.exampleHeading .text { color: #375EAB; text-decoration: none; } +a:hover, +.exampleHeading .text:hover { + text-decoration: underline; +} p, pre, ul, @@ -68,7 +73,7 @@ h2 { padding: 2px 5px; } h3 { - font-size: 18px; + font-size: 20px; } h3, h4 { @@ -82,13 +87,6 @@ h4 { margin: 0; } -h1 a, -h2 a, -h3 a, -h4 a { - text-decoration: underline; -} - dl { margin: 20px; } @@ -129,23 +127,26 @@ div#heading a { div#topbar { background: #E0EBF5; + height: 64px; } body { text-align: center; } div#page, -div#topbar .container { +div#topbar > .container { clear: both; text-align: left; margin-left: auto; margin-right: auto; + padding: 0 20px; width: 900px; } -div#plusone { - float: right; +div#page.wide, +div#topbar > .wide { + width: auto; } -div#plusoneRoot { +div#plusone { float: right; } @@ -185,6 +186,8 @@ div#blog .read a { } div#menu { + float: right; + min-width: 590px; padding: 10px 0; text-align: right; } @@ -257,6 +260,10 @@ a#start .desc { margin-top: 5px; } +div#learn .icon { + float: right; + cursor: pointer; +} div#learn pre, div#learn textarea { padding: 0; @@ -315,21 +322,21 @@ div#learn .output { border: 1px solid #375EAB; } div#learn .buttons { + float: right; padding: 20px 0 10px 0; text-align: right; } div#learn .buttons a { height: 16px; margin-left: 5px; - padding: 10px; } -div#learn .buttons .tour { - float: right; +div#learn .toys { + margin-top: 8px; } -div#learn .buttons .tour a { - margin-right: 0; - font-weight: bold; +div#learn .toys select { + border: 1px solid #375EAB; + margin: 0; } div#blog, @@ -346,8 +353,6 @@ div#video > h2 { } div#blog .title, div#video .title { - color: #222; - text-decoration: none; display: block; font-size: 20px; } @@ -367,3 +372,20 @@ div#blog .read { table.codetable { margin-left: auto; margin-right: auto; border-style: none; } hr { border-style: none; border-top: 1px solid black; } + +img.gopher { + float: right; + margin-left: 10px; + margin-bottom: 10px; +} +.pkgGopher { + text-align: right; +} +.pkgGopher .gopher { + float: none; + position: relative; + top: -40px; + margin-bottom: -120px; +} +h2 { clear: right; } + diff --git a/doc/video-001.png b/doc/video-001.png Binary files differdeleted file mode 100644 index d3468bbe8..000000000 --- a/doc/video-001.png +++ /dev/null diff --git a/doc/video-002.png b/doc/video-002.png Binary files differdeleted file mode 100644 index 4f7c5d184..000000000 --- a/doc/video-002.png +++ /dev/null diff --git a/doc/video-003.png b/doc/video-003.png Binary files differdeleted file mode 100644 index 3dff68602..000000000 --- a/doc/video-003.png +++ /dev/null diff --git a/doc/video-004.png b/doc/video-004.png Binary files differdeleted file mode 100644 index 92144549a..000000000 --- a/doc/video-004.png +++ /dev/null diff --git a/doc/video-005.jpg b/doc/video-005.jpg Binary files differdeleted file mode 100644 index 32371581f..000000000 --- a/doc/video-005.jpg +++ /dev/null diff --git a/lib/codereview/codereview.py b/lib/codereview/codereview.py index 1f4952f17..61e2fd772 100644 --- a/lib/codereview/codereview.py +++ b/lib/codereview/codereview.py @@ -1247,9 +1247,28 @@ def MatchAt(ctx, pats=None, opts=None, globbed=False, default='relpath'): ####################################################################### # Commands added by code review extension. +# As of Mercurial 2.1 the commands are all required to return integer +# exit codes, whereas earlier versions allowed returning arbitrary strings +# to be printed as errors. We wrap the old functions to make sure we +# always return integer exit codes now. Otherwise Mercurial dies +# with a TypeError traceback (unsupported operand type(s) for &: 'str' and 'int'). +# Introduce a Python decorator to convert old functions to the new +# stricter convention. + +def hgcommand(f): + def wrapped(ui, repo, *pats, **opts): + err = f(ui, repo, *pats, **opts) + if type(err) is int: + return err + if not err: + return 0 + raise hg_util.Abort(err) + return wrapped + ####################################################################### # hg change +@hgcommand def change(ui, repo, *pats, **opts): """create, edit or delete a change list @@ -1363,6 +1382,7 @@ def change(ui, repo, *pats, **opts): ####################################################################### # hg code-login (broken?) +@hgcommand def code_login(ui, repo, **opts): """log in to code review server @@ -1378,6 +1398,7 @@ def code_login(ui, repo, **opts): # hg clpatch / undo / release-apply / download # All concerned with applying or unapplying patches to the repository. +@hgcommand def clpatch(ui, repo, clname, **opts): """import a patch from the code review server @@ -1392,6 +1413,7 @@ def clpatch(ui, repo, clname, **opts): return "cannot run hg clpatch outside default branch" return clpatch_or_undo(ui, repo, clname, opts, mode="clpatch") +@hgcommand def undo(ui, repo, clname, **opts): """undo the effect of a CL @@ -1403,6 +1425,7 @@ def undo(ui, repo, clname, **opts): return "cannot run hg undo outside default branch" return clpatch_or_undo(ui, repo, clname, opts, mode="undo") +@hgcommand def release_apply(ui, repo, clname, **opts): """apply a CL to the release branch @@ -1655,6 +1678,7 @@ def lineDelta(deltas, n, len): d = newdelta return d, "" +@hgcommand def download(ui, repo, clname, **opts): """download a change from the code review server @@ -1674,6 +1698,7 @@ def download(ui, repo, clname, **opts): ####################################################################### # hg file +@hgcommand def file(ui, repo, clname, pat, *pats, **opts): """assign files to or remove files from a change list @@ -1739,6 +1764,7 @@ def file(ui, repo, clname, pat, *pats, **opts): ####################################################################### # hg gofmt +@hgcommand def gofmt(ui, repo, *pats, **opts): """apply gofmt to modified files @@ -1772,6 +1798,7 @@ def gofmt_required(files): ####################################################################### # hg mail +@hgcommand def mail(ui, repo, *pats, **opts): """mail a change for review @@ -1804,18 +1831,21 @@ def mail(ui, repo, *pats, **opts): ####################################################################### # hg p / hg pq / hg ps / hg pending +@hgcommand def ps(ui, repo, *pats, **opts): """alias for hg p --short """ opts['short'] = True return pending(ui, repo, *pats, **opts) +@hgcommand def pq(ui, repo, *pats, **opts): """alias for hg p --quick """ opts['quick'] = True return pending(ui, repo, *pats, **opts) +@hgcommand def pending(ui, repo, *pats, **opts): """show pending changes @@ -1851,6 +1881,7 @@ def pending(ui, repo, *pats, **opts): def need_sync(): raise hg_util.Abort("local repository out of date; must sync before submit") +@hgcommand def submit(ui, repo, *pats, **opts): """submit change to remote repository @@ -1983,6 +2014,7 @@ def submit(ui, repo, *pats, **opts): ####################################################################### # hg sync +@hgcommand def sync(ui, repo, **opts): """synchronize with remote repository @@ -2036,6 +2068,7 @@ def sync_changes(ui, repo): ####################################################################### # hg upload +@hgcommand def upload(ui, repo, name, **opts): """upload diffs to the code review server diff --git a/lib/godoc/example.html b/lib/godoc/example.html index d7b219371..43ee4bddc 100644 --- a/lib/godoc/example.html +++ b/lib/godoc/example.html @@ -1,9 +1,9 @@ <div id="example_{{.Name}}" class="example"> <div class="collapsed"> - <p class="exampleHeading">▹ Example{{example_suffix .Name}}</p> + <p class="exampleHeading">▹ <span class="text">Example{{example_suffix .Name}}</span></p> </div> <div class="expanded"> - <p class="exampleHeading">▾ Example{{example_suffix .Name}}</p> + <p class="exampleHeading">▾ <span class="text">Example{{example_suffix .Name}}</span></p> {{with .Doc}}<p>{{html .}}</p>{{end}} <p>Code:</p> <pre class="code">{{.Code}}</pre> diff --git a/lib/godoc/godoc.html b/lib/godoc/godoc.html index 09a2cc4c2..feb96e50f 100644 --- a/lib/godoc/godoc.html +++ b/lib/godoc/godoc.html @@ -2,7 +2,7 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -{{with .Title}} +{{with .Tabtitle}} <title>{{html .}} - The Go Programming Language</title> {{else}} <title>The Go Programming Language</title> @@ -15,10 +15,9 @@ </head> <body> -<div id="topbar"><div class="container"> +<div id="topbar"><div class="container{{if .Title}} wide{{end}}"> <form method="GET" action="/search"> -<div id="heading"><a href="/">The Go Programming Language</a></div> <div id="menu"> <a href="/doc/">Documents</a> <a href="/ref/">References</a> @@ -27,13 +26,12 @@ <a href="/help/">Help</a> <input type="text" id="search" name="q" class="inactive" value="Search"> </div> +<div id="heading"><a href="/">The Go Programming Language</a></div> </form> </div></div> -<div id="page"> - -<div id="content"> +<div id="page"{{if .Title}} class="wide"{{end}}> {{with .Title}} <div id="plusone"><g:plusone size="small" annotation="none"></g:plusone></div> @@ -52,8 +50,6 @@ </div> -</div> - <div id="copyright"> Build version {{html .Version}}. Except as noted, this content is licensed under a @@ -61,7 +57,6 @@ Creative Commons Attribution 3.0 License. </div> </body> -<!-- <script type="text/javascript"> (function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; @@ -69,6 +64,5 @@ Creative Commons Attribution 3.0 License. var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })(); </script> ---> </html> diff --git a/lib/godoc/package.html b/lib/godoc/package.html index fdebbf5d9..848e68df7 100644 --- a/lib/godoc/package.html +++ b/lib/godoc/package.html @@ -70,7 +70,7 @@ <p> <span style="font-size:90%"> {{range .}} - <a href="/{{.|srcLink}}">{{.|filename|html}}</a> + <a href="{{.|srcLink|html}}">{{.|filename|html}}</a> {{end}} </span> </p> @@ -93,7 +93,7 @@ {{range .Funcs}} {{/* Name is a string - no need for FSet */}} {{$name_html := html .Name}} - <h2 id="{{$name_html}}">func <a href="/{{posLink_url .Decl $.FSet}}">{{$name_html}}</a></h2> + <h2 id="{{$name_html}}">func <a href="{{posLink_url .Decl $.FSet}}">{{$name_html}}</a></h2> <pre>{{node_html .Decl $.FSet}}</pre> {{comment_html .Doc}} {{example_html .Name $.Examples $.FSet}} @@ -101,7 +101,7 @@ {{range .Types}} {{$tname := .Name}} {{$tname_html := html .Name}} - <h2 id="{{$tname_html}}">type <a href="/{{posLink_url .Decl $.FSet}}">{{$tname_html}}</a></h2> + <h2 id="{{$tname_html}}">type <a href="{{posLink_url .Decl $.FSet}}">{{$tname_html}}</a></h2> <pre>{{node_html .Decl $.FSet}}</pre> {{comment_html .Doc}} @@ -119,7 +119,7 @@ {{range .Funcs}} {{$name_html := html .Name}} - <h3 id="{{$name_html}}">func <a href="/{{posLink_url .Decl $.FSet}}">{{$name_html}}</a></h3> + <h3 id="{{$name_html}}">func <a href="{{posLink_url .Decl $.FSet}}">{{$name_html}}</a></h3> <pre>{{node_html .Decl $.FSet}}</pre> {{comment_html .Doc}} {{example_html .Name $.Examples $.FSet}} @@ -127,7 +127,7 @@ {{range .Methods}} {{$name_html := html .Name}} - <h3 id="{{$tname_html}}.{{$name_html}}">func ({{html .Recv}}) <a href="/{{posLink_url .Decl $.FSet}}">{{$name_html}}</a></h3> + <h3 id="{{$tname_html}}.{{$name_html}}">func ({{html .Recv}}) <a href="{{posLink_url .Decl $.FSet}}">{{$name_html}}</a></h3> <pre>{{node_html .Decl $.FSet}}</pre> {{comment_html .Doc}} {{$name := printf "%s_%s" $tname .Name}} @@ -163,7 +163,13 @@ {{with .Dirs}} {{/* DirList entries are numbers and strings - no need for FSet */}} - {{if $.PDoc}}<h2 id="subdirectories">Subdirectories</h2>{{end}} + {{if $.PDoc}} + <h2 id="subdirectories">Subdirectories</h2> + {{else}} + <div class="pkgGopher"> + <img class="gopher" src="/doc/gopher/pkg.png"/> + </div> + {{end}} <table class="dir"> <tr> <th>Name</th> diff --git a/lib/godoc/search.html b/lib/godoc/search.html index db90935d8..5b54d7126 100644 --- a/lib/godoc/search.html +++ b/lib/godoc/search.html @@ -38,7 +38,7 @@ {{$src_html := srcLink .File.Path | html}} {{range .Groups}} {{range .}} - <a href="/{{$src_html}}?h={{$query_url}}#L{{infoLine .}}">{{$src_html}}:{{infoLine .}}</a> + <a href="{{$src_html}}?h={{$query_url}}#L{{infoLine .}}">{{$src_html}}:{{infoLine .}}</a> {{infoSnippet_html .}} {{end}} {{end}} @@ -52,7 +52,7 @@ <h3 id="Local_{{$pkg_html}}">package <a href="/{{$pkg_html}}">{{html .Pak.Name}}</a></h3> {{range .Files}} {{$src_html := srcLink .File.Path | html}} - <a href="/{{$src_html}}?h={{$query_url}}">{{$src_html}}</a> + <a href="{{$src_html}}?h={{$query_url}}">{{$src_html}}</a> <table class="layout"> {{range .Groups}} <tr> @@ -61,7 +61,7 @@ <td align="left" width="4"></td> <td> {{range .}} - <a href="/{{$src_html}}?h={{$query_url}}#L{{infoLine .}}">{{infoLine .}}</a> + <a href="{{$src_html}}?h={{$query_url}}#L{{infoLine .}}">{{infoLine .}}</a> {{end}} </td> </tr> @@ -86,14 +86,14 @@ {{$src_html := srcLink .Filename | html}} <tr> <td align="left" valign="top"> - <a href="/{{$src_html}}?h={{$query_url}}">{{$src_html}}</a>: + <a href="{{$src_html}}?h={{$query_url}}">{{$src_html}}</a>: </td> <td align="left" width="4"></td> <th align="left" valign="top">{{len .Lines}}</th> <td align="left" width="4"></td> <td align="left"> {{range .Lines}} - <a href="/{{$src_html}}?h={{$query_url}}#L{{html .}}">{{html .}}</a> + <a href="{{$src_html}}?h={{$query_url}}#L{{html .}}">{{html .}}</a> {{end}} {{if not $.Complete}} ... diff --git a/misc/cgo/gmp/Makefile b/misc/cgo/gmp/Makefile deleted file mode 100644 index d9390c146..000000000 --- a/misc/cgo/gmp/Makefile +++ /dev/null @@ -1,38 +0,0 @@ -# Copyright 2009 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. - -include ../../../src/Make.inc - -TARG=gmp - -# Can have plain GOFILES too, but this example doesn't. - -CGOFILES=\ - gmp.go - -CGO_LDFLAGS=-lgmp - -# To add flags necessary for locating the library or its include files, -# set CGO_CFLAGS or CGO_LDFLAGS. For example, to use an -# alternate installation of the library: -# CGO_CFLAGS=-I/home/rsc/gmp32/include -# CGO_LDFLAGS+=-L/home/rsc/gmp32/lib -# Note the += on the second line. - -CLEANFILES+=pi fib - -include ../../../src/Make.pkg - -# Simple test programs - -# Computes 1000 digits of pi; single-threaded. -pi: install pi.go - $(GC) $(GCFLAGS) $(GCIMPORTS) pi.go - $(LD) -o $@ pi.$O - -# Computes 200 Fibonacci numbers; multi-threaded. -fib: install fib.go - $(GC) $(GCFLAGS) $(GCIMPORTS) fib.go - $(LD) -o $@ fib.$O - diff --git a/misc/cgo/gmp/fib.go b/misc/cgo/gmp/fib.go index 3eda39e17..18434beaf 100644 --- a/misc/cgo/gmp/fib.go +++ b/misc/cgo/gmp/fib.go @@ -2,6 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +// +build ignore + // Compute Fibonacci numbers with two goroutines // that pass integers back and forth. No actual // concurrency, just threads and synchronization @@ -10,7 +12,7 @@ package main import ( - big "gmp" + big "." "runtime" ) diff --git a/misc/cgo/gmp/gmp.go b/misc/cgo/gmp/gmp.go index 9325d8bfd..3bcf99151 100644 --- a/misc/cgo/gmp/gmp.go +++ b/misc/cgo/gmp/gmp.go @@ -98,8 +98,20 @@ Go to hang on to a reference to the pointer until C is done with it. */ package gmp -// #include <gmp.h> -// #include <stdlib.h> +/* +#cgo LDFLAGS: -lgmp +#include <gmp.h> +#include <stdlib.h> + +// gmp 5.0.0+ changed the type of the 3rd argument to mp_bitcnt_t, +// so, to support older versions, we wrap these two functions. +void _mpz_mul_2exp(mpz_ptr a, mpz_ptr b, unsigned long n) { + mpz_mul_2exp(a, b, n); +} +void _mpz_div_2exp(mpz_ptr a, mpz_ptr b, unsigned long n) { + mpz_div_2exp(a, b, n); +} +*/ import "C" import ( @@ -182,12 +194,12 @@ func (z *Int) SetInt64(x int64) *Int { func (z *Int) SetString(s string, base int) error { z.doinit() if base < 2 || base > 36 { - return os.EINVAL + return os.ErrInvalid } p := C.CString(s) defer C.free(unsafe.Pointer(p)) if C.mpz_set_str(&z.i[0], p, C.int(base)) < 0 { - return os.EINVAL + return os.ErrInvalid } return nil } @@ -265,7 +277,7 @@ func (z *Int) Mod(x, y *Int) *Int { func (z *Int) Lsh(x *Int, s uint) *Int { x.doinit() z.doinit() - C.mpz_mul_2exp(&z.i[0], &x.i[0], C.mp_bitcnt_t(s)) + C._mpz_mul_2exp(&z.i[0], &x.i[0], C.ulong(s)) return z } @@ -273,7 +285,7 @@ func (z *Int) Lsh(x *Int, s uint) *Int { func (z *Int) Rsh(x *Int, s uint) *Int { x.doinit() z.doinit() - C.mpz_div_2exp(&z.i[0], &x.i[0], C.mp_bitcnt_t(s)) + C._mpz_div_2exp(&z.i[0], &x.i[0], C.ulong(s)) return z } diff --git a/misc/cgo/gmp/pi.go b/misc/cgo/gmp/pi.go index 3e40624cf..1914cf214 100644 --- a/misc/cgo/gmp/pi.go +++ b/misc/cgo/gmp/pi.go @@ -1,3 +1,5 @@ +// +build ignore + /* Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: @@ -38,8 +40,8 @@ POSSIBILITY OF SUCH DAMAGE. package main import ( + big "." "fmt" - big "gmp" "runtime" ) @@ -100,5 +102,5 @@ func main() { } } - fmt.Printf("\n%d calls; bit sizes: %d %d %d\n", runtime.Cgocalls(), numer.Len(), accum.Len(), denom.Len()) + fmt.Printf("\n%d calls; bit sizes: %d %d %d\n", runtime.NumCgoCall(), numer.Len(), accum.Len(), denom.Len()) } diff --git a/misc/cgo/life/Makefile b/misc/cgo/life/Makefile deleted file mode 100644 index 1568a67f6..000000000 --- a/misc/cgo/life/Makefile +++ /dev/null @@ -1,35 +0,0 @@ -# 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. - -include ../../../src/Make.inc - -TARG=life - -CGOFILES=\ - life.go\ - -CGO_OFILES=\ - c-life.o\ - -ifeq ($(GOOS),windows) -ifeq ($(GOARCH),amd64) -CGO_OFILES+=\ - lib64_libmingwex_a-wassert.o\ - lib64_libmingw32_a-mingw_helpers.o\ - -lib64_libmingwex_a-wassert.o: - ar -x /mingw/x86_64-w64-mingw32/lib/libmingwex.a lib64_libmingwex_a-wassert.o - -lib64_libmingw32_a-mingw_helpers.o: - ar -x /mingw/x86_64-w64-mingw32/lib/libmingw32.a lib64_libmingw32_a-mingw_helpers.o -endif -endif - -CLEANFILES+=life - -include ../../../src/Make.pkg - -life: install main.go - $(GC) $(GCFLAGS) $(GCIMPORTS) main.go - $(LD) -o $@ main.$O diff --git a/misc/cgo/life/main.go b/misc/cgo/life/main.go index 9cfed434b..47ae0e18c 100644 --- a/misc/cgo/life/main.go +++ b/misc/cgo/life/main.go @@ -2,14 +2,16 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +// +build ignore + // Run the game of life in C using Go for parallelization. package main import ( + "." "flag" "fmt" - "life" ) const MAXDIM = 100 diff --git a/misc/cgo/life/test.bash b/misc/cgo/life/test.bash index 5c5fba1a9..bb483522c 100755 --- a/misc/cgo/life/test.bash +++ b/misc/cgo/life/test.bash @@ -4,8 +4,11 @@ # license that can be found in the LICENSE file. set -e -gomake life +go build -o life main.go + echo '*' life >run.out ./life >>run.out diff run.out golden.out -gomake clean + +rm -f life + diff --git a/misc/cgo/stdio/Makefile b/misc/cgo/stdio/Makefile deleted file mode 100644 index 586132b3c..000000000 --- a/misc/cgo/stdio/Makefile +++ /dev/null @@ -1,17 +0,0 @@ -# Copyright 2009 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. - -include ../../../src/Make.inc - -TARG=stdio -CGOFILES=\ - file.go\ - -CLEANFILES+=hello fib chain run.out - -include ../../../src/Make.pkg - -%: install %.go - $(GC) $(GCFLAGS) $(GCIMPORTS) $*.go - $(LD) -o $@ $*.$O diff --git a/misc/cgo/stdio/chain.go b/misc/cgo/stdio/chain.go index c188b2dd9..1cf0b1fe5 100644 --- a/misc/cgo/stdio/chain.go +++ b/misc/cgo/stdio/chain.go @@ -2,13 +2,15 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +// +build ignore + // Pass numbers along a chain of threads. package main import ( + "../stdio" "runtime" - "stdio" "strconv" ) diff --git a/misc/cgo/stdio/fib.go b/misc/cgo/stdio/fib.go index 431d9cefe..6d3ccfd52 100644 --- a/misc/cgo/stdio/fib.go +++ b/misc/cgo/stdio/fib.go @@ -2,6 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +// +build ignore + // Compute Fibonacci numbers with two goroutines // that pass integers back and forth. No actual // concurrency, just threads and synchronization @@ -10,8 +12,8 @@ package main import ( + "../stdio" "runtime" - "stdio" "strconv" ) diff --git a/misc/cgo/stdio/file.go b/misc/cgo/stdio/file.go index ab1e88436..6e7d479ad 100644 --- a/misc/cgo/stdio/file.go +++ b/misc/cgo/stdio/file.go @@ -28,7 +28,7 @@ var Stderr = (*File)(C.stderr) // Test reference to library symbol. // Stdout and stderr are too special to be a reliable test. -var myerr = C.sys_errlist +//var = C.environ func (f *File) WriteString(s string) { p := C.CString(s) diff --git a/misc/cgo/stdio/hello.go b/misc/cgo/stdio/hello.go index 58fc6d574..4ab3c7447 100644 --- a/misc/cgo/stdio/hello.go +++ b/misc/cgo/stdio/hello.go @@ -2,9 +2,11 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +// +build ignore + package main -import "stdio" +import "../stdio" func main() { stdio.Stdout.WriteString(stdio.Greeting + "\n") diff --git a/misc/cgo/stdio/test.bash b/misc/cgo/stdio/test.bash index 82e3f7b45..21829fa31 100755 --- a/misc/cgo/stdio/test.bash +++ b/misc/cgo/stdio/test.bash @@ -4,7 +4,10 @@ # license that can be found in the LICENSE file. set -e -gomake hello fib chain +go build hello.go +go build fib.go +go build chain.go + echo '*' hello >run.out ./hello >>run.out echo '*' fib >>run.out @@ -12,4 +15,6 @@ echo '*' fib >>run.out echo '*' chain >>run.out ./chain >>run.out diff run.out golden.out -gomake clean + +rm -f hello fib chain + diff --git a/misc/cgo/test/backdoor/backdoor.go b/misc/cgo/test/backdoor/backdoor.go new file mode 100644 index 000000000..efe4f01f4 --- /dev/null +++ b/misc/cgo/test/backdoor/backdoor.go @@ -0,0 +1,7 @@ +// Copyright 2012 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. + +package backdoor + +func LockedOSThread() bool // in runtime.c diff --git a/misc/cgo/test/runtime.c b/misc/cgo/test/backdoor/runtime.c index e087c7622..54e6a1ef8 100644 --- a/misc/cgo/test/runtime.c +++ b/misc/cgo/test/backdoor/runtime.c @@ -3,6 +3,8 @@ // license that can be found in the LICENSE file. // Expose some runtime functions for testing. +// Must be in a non-cgo-using package so that +// the go command compiles this file with 6c, not gcc. typedef char bool; @@ -14,7 +16,7 @@ FLUSH(void*) } void -·lockedOSThread(bool b) +·LockedOSThread(bool b) { b = runtime·lockedOSThread(); FLUSH(&b); diff --git a/misc/cgo/test/basic.go b/misc/cgo/test/basic.go index cd6d88168..70ec5e43a 100644 --- a/misc/cgo/test/basic.go +++ b/misc/cgo/test/basic.go @@ -55,7 +55,7 @@ int add(int x, int y) { */ import "C" import ( - "os" + "syscall" "testing" "unsafe" ) @@ -110,7 +110,7 @@ func testErrno(t *testing.T) { C.fclose(f) t.Fatalf("C.fopen: should fail") } - if err != os.ENOENT { + if err != syscall.ENOENT { t.Fatalf("C.fopen: unexpected error: %v", err) } } diff --git a/misc/cgo/test/callback.go b/misc/cgo/test/callback.go index ef852561b..e6a1462b3 100644 --- a/misc/cgo/test/callback.go +++ b/misc/cgo/test/callback.go @@ -6,14 +6,12 @@ package cgotest /* void callback(void *f); -void callGoFoo(void) { - extern void goFoo(void); - goFoo(); -} +void callGoFoo(void); */ import "C" import ( + "./backdoor" "runtime" "testing" "unsafe" @@ -43,7 +41,7 @@ func testCallbackGC(t *testing.T) { nestedCall(runtime.GC) } -func lockedOSThread() bool // in runtime.c +var lockedOSThread = backdoor.LockedOSThread func testCallbackPanic(t *testing.T) { // Make sure panic during callback unwinds properly. diff --git a/misc/cgo/test/callback_c.c b/misc/cgo/test/callback_c.c index c296d70e0..47f07301b 100644 --- a/misc/cgo/test/callback_c.c +++ b/misc/cgo/test/callback_c.c @@ -15,3 +15,23 @@ callback(void *f) goCallback(f); data[sizeof(data)-1] = 0; } + +void +callGoFoo(void) +{ + extern void goFoo(void); + goFoo(); +} + +void +IntoC(void) +{ + BackIntoGo(); +} + +void +twoSleep(int n) +{ + BackgroundSleep(n); + sleep(n); +} diff --git a/misc/cgo/test/issue1328.go b/misc/cgo/test/issue1328.go index e01207dd9..e1796d6f7 100644 --- a/misc/cgo/test/issue1328.go +++ b/misc/cgo/test/issue1328.go @@ -7,7 +7,7 @@ package cgotest import "testing" // extern void BackIntoGo(void); -// void IntoC() { BackIntoGo(); } +// void IntoC(void); import "C" //export BackIntoGo diff --git a/misc/cgo/test/issue1560.go b/misc/cgo/test/issue1560.go index 833b14ae6..3faa966e7 100644 --- a/misc/cgo/test/issue1560.go +++ b/misc/cgo/test/issue1560.go @@ -10,10 +10,7 @@ package cgotest unsigned int sleep(unsigned int seconds); extern void BackgroundSleep(int); -void twoSleep(int n) { - BackgroundSleep(n); - sleep(n); -} +void twoSleep(int); */ import "C" diff --git a/misc/cgo/testso/Makefile b/misc/cgo/testso/Makefile deleted file mode 100644 index e472cf212..000000000 --- a/misc/cgo/testso/Makefile +++ /dev/null @@ -1,22 +0,0 @@ -# Copyright 2011 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. - -include ../../../src/Make.inc - -TARG=cgosotest - -CGO_DEPS+=libcgoso.so -CGO_LDFLAGS+=-lcgoso -L. -CLEANFILES+=out libcgoso.so -CGOFILES=\ - cgoso.go\ - -include ../../../src/Make.pkg - -libcgoso.so: cgoso_c.c - gcc cgoso_c.c -fPIC -o $@ $(_CGO_CFLAGS_$(GOARCH)) $(_CGO_LDFLAGS_$(GOOS)) - -out: install main.go - $(GC) $(GCFLAGS) $(GCIMPORTS) main.go - $(LD) -o $@ main.$O diff --git a/misc/cgo/testso/cgoso.go b/misc/cgo/testso/cgoso.go index 6eb9f40e3..44fb616c1 100644 --- a/misc/cgo/testso/cgoso.go +++ b/misc/cgo/testso/cgoso.go @@ -4,7 +4,10 @@ package cgosotest -//void sofunc(void); +/* +#cgo LDFLAGS: -L. -lcgosotest +void sofunc(void); +*/ import "C" func Test() { diff --git a/misc/cgo/testso/cgoso_c.c b/misc/cgo/testso/cgoso_c.c index e29f7e807..8c15a6b9f 100644 --- a/misc/cgo/testso/cgoso_c.c +++ b/misc/cgo/testso/cgoso_c.c @@ -2,6 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +// +build ignore + void sofunc(void) { extern void goCallback(void); diff --git a/misc/cgo/testso/main.go b/misc/cgo/testso/main.go index 672ab262b..88aa4322d 100644 --- a/misc/cgo/testso/main.go +++ b/misc/cgo/testso/main.go @@ -2,9 +2,11 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +// +build ignore + package main -import "cgosotest" +import "." func main() { cgosotest.Test() diff --git a/misc/cgo/testso/test.bash b/misc/cgo/testso/test.bash index f275eb572..ecef873c8 100755 --- a/misc/cgo/testso/test.bash +++ b/misc/cgo/testso/test.bash @@ -4,6 +4,7 @@ # license that can be found in the LICENSE file. set -e -gomake out -LD_LIBRARY_PATH=. ./out -gomake clean +gcc $(go env GOGCCFLAGS) -shared -o libcgosotest.so cgoso_c.c +go build main.go +LD_LIBRARY_PATH=. ./main +rm -f libcgosotest.so main diff --git a/misc/dashboard/app/app.yaml b/misc/dashboard/app/app.yaml index 47b7d822a..6e19db09c 100644 --- a/misc/dashboard/app/app.yaml +++ b/misc/dashboard/app/app.yaml @@ -13,8 +13,8 @@ handlers: static_dir: static - url: /log/.+ script: _go_app -- url: /(|commit|install|packages|result|tag|todo) +- url: /(|commit|packages|result|tag|todo) script: _go_app -- url: /(init|buildtest|key|_ah/queue/go/delay|install/cron) +- url: /(init|buildtest|key|_ah/queue/go/delay) script: _go_app login: admin diff --git a/misc/dashboard/app/build/build.go b/misc/dashboard/app/build/build.go index a7b08321b..c49fa8bb2 100644 --- a/misc/dashboard/app/build/build.go +++ b/misc/dashboard/app/build/build.go @@ -12,7 +12,6 @@ import ( "fmt" "io" "io/ioutil" - "strconv" "strings" "time" @@ -28,10 +27,6 @@ type Package struct { Name string Path string // (empty for the main Go tree) NextNum int // Num of the next head Commit - - Installs int // All-time total install count - InstallsByDay []string `datastore:",noindex"` // "yyyy-mm-dd,n" - InstallsThisWeek int // Rolling weekly count } func (p *Package) String() string { @@ -46,53 +41,6 @@ func (p *Package) Key(c appengine.Context) *datastore.Key { return datastore.NewKey(c, "Package", key, 0, nil) } -const day = time.Hour * 24 - -// IncrementInstalls increments the total install count and today's install count. -// Daily install counts for dates older than 30 days are discarded. -func (p *Package) IncrementInstalls() { - c := p.dayCounts() - s := []string{} - now := time.Now() - for i := 0; i < 30; i++ { - d := now.Add(-day * time.Duration(i)).Format("2006-01-02") - n := c[d] - if i == 0 { - n++ // increment today's count - } - if n > 0 { // no need to store zeroes in the datastore - s = append(s, fmt.Sprintf("%s,%d", d, n)) - } - } - p.InstallsByDay = s - p.Installs++ - p.UpdateInstallsThisWeek() -} - -// UpdateInstallsThisWeek updates the package's InstallsThisWeek field using data -// from the InstallsByDay list. -func (p *Package) UpdateInstallsThisWeek() { - c := p.dayCounts() - n := 0 - now := time.Now() - for i := 0; i < 7; i++ { - d := now.Add(-day * time.Duration(i)).Format("2006-01-02") - n += c[d] - } - p.InstallsThisWeek = n -} - -// dayCounts explodes InstallsByDay into a map of dates to install counts. -func (p *Package) dayCounts() map[string]int { - c := make(map[string]int) - for _, d := range p.InstallsByDay { - p := strings.SplitN(d, ",", 2) - n, _ := strconv.Atoi(p[1]) - c[p[0]] = n - } - return c -} - // LastCommit returns the most recent Commit for this Package. func (p *Package) LastCommit(c appengine.Context) (*Commit, error) { var commits []*Commit diff --git a/misc/dashboard/app/build/init.go b/misc/dashboard/app/build/init.go index 494585b0e..5311688b7 100644 --- a/misc/dashboard/app/build/init.go +++ b/misc/dashboard/app/build/init.go @@ -15,7 +15,7 @@ import ( // defaultPackages specifies the Package records to be created by initHandler. var defaultPackages = []*Package{ - &Package{Name: "Go", Kind: "go"}, + {Name: "Go", Kind: "go"}, } // subRepos specifies the Go project sub-repositories. diff --git a/misc/dashboard/app/build/pkg.go b/misc/dashboard/app/build/pkg.go deleted file mode 100644 index 076fafe4f..000000000 --- a/misc/dashboard/app/build/pkg.go +++ /dev/null @@ -1,201 +0,0 @@ -// Copyright 2012 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. - -package build - -import ( - "net/http" - "regexp" - "strings" - - "appengine" - "appengine/datastore" - "appengine/delay" - "appengine/urlfetch" -) - -func init() { - http.HandleFunc("/install", installHandler) - http.HandleFunc("/install/cron", installCronHandler) -} - -// installHandler serves requests from the go tool to increment the install -// count for a given package. -func installHandler(w http.ResponseWriter, r *http.Request) { - installLater.Call(appengine.NewContext(r), r.FormValue("packagePath")) -} - -// installCronHandler starts a task to update the weekly install counts for -// every external package. -func installCronHandler(w http.ResponseWriter, r *http.Request) { - c := appengine.NewContext(r) - q := datastore.NewQuery("Package").Filter("Kind=", "external").KeysOnly() - for t := q.Run(c); ; { - key, err := t.Next(nil) - if err == datastore.Done { - break - } else if err != nil { - c.Errorf("%v", err) - return - } - updateWeeklyLater.Call(c, key) - } -} - -var ( - installLater = delay.Func("install", install) - updateWeeklyLater = delay.Func("updateWeekly", updateWeekly) -) - -// install validates the provided package path, increments its install count, -// and creates the Package record if it doesn't exist. -func install(c appengine.Context, path string) { - if !validPath(c, path) { - return - } - tx := func(c appengine.Context) error { - p := &Package{Path: path, Kind: "external"} - err := datastore.Get(c, p.Key(c), p) - if err != nil && err != datastore.ErrNoSuchEntity { - return err - } - p.IncrementInstalls() - _, err = datastore.Put(c, p.Key(c), p) - return err - } - if err := datastore.RunInTransaction(c, tx, nil); err != nil { - c.Errorf("install(%q): %v", path, err) - } -} - -// updateWeekly updates the weekly count for the specified Package. -func updateWeekly(c appengine.Context, key *datastore.Key) { - tx := func(c appengine.Context) error { - p := new(Package) - if err := datastore.Get(c, key, p); err != nil { - return err - } - p.UpdateInstallsThisWeek() - _, err := datastore.Put(c, key, p) - return err - } - if err := datastore.RunInTransaction(c, tx, nil); err != nil { - c.Errorf("updateWeekly: %v", err) - } -} - -// validPath validates the specified import path by matching it against the -// vcsPath regexen and validating its existence by making an HTTP GET request -// to the remote repository. -func validPath(c appengine.Context, path string) bool { - for _, p := range vcsPaths { - if !strings.HasPrefix(path, p.prefix) { - continue - } - m := p.regexp.FindStringSubmatch(path) - if m == nil { - continue - } - if p.check == nil { - // no check function, so just say OK - return true - } - match := make(map[string]string) - for i, name := range p.regexp.SubexpNames() { - if name != "" { - match[name] = m[i] - } - } - return p.check(c, match) - } - c.Debugf("validPath(%q): matching vcsPath not found", path) - return false -} - -// A vcsPath describes how to convert an import path into a version control -// system and repository name. -// -// This is a cut down and modified version of the data structure from -// $GOROOT/src/cmd/go/vcs.go. -type vcsPath struct { - prefix string // prefix this description applies to - re string // pattern for import path - - // check should perform an HTTP request to validate the import path - check func(c appengine.Context, match map[string]string) bool - - regexp *regexp.Regexp // cached compiled form of re -} - -// vcsPaths lists the known vcs paths. -// -// This is a cut down version of the data from $GOROOT/src/cmd/go/vcs.go. -var vcsPaths = []*vcsPath{ - // Google Code - new syntax - { - prefix: "code.google.com/", - re: `^(?P<root>code\.google\.com/p/(?P<project>[a-z0-9\-]+)(\.(?P<subrepo>[a-z0-9\-]+))?)(/[A-Za-z0-9_.\-]+)*$`, - check: googleCodeVCS, - }, - - // Github - { - prefix: "github.com/", - re: `^(?P<root>github\.com/[A-Za-z0-9_.\-]+/[A-Za-z0-9_.\-]+)(/[A-Za-z0-9_.\-]+)*$`, - check: checkRoot, - }, - - // Bitbucket - { - prefix: "bitbucket.org/", - re: `^(?P<root>bitbucket\.org/(?P<bitname>[A-Za-z0-9_.\-]+/[A-Za-z0-9_.\-]+))(/[A-Za-z0-9_.\-]+)*$`, - check: checkRoot, - }, - - // Launchpad - { - prefix: "launchpad.net/", - re: `^(?P<root>launchpad\.net/((?P<project>[A-Za-z0-9_.\-]+)(?P<series>/[A-Za-z0-9_.\-]+)?|~[A-Za-z0-9_.\-]+/(\+junk|[A-Za-z0-9_.\-]+)/[A-Za-z0-9_.\-]+))(/[A-Za-z0-9_.\-]+)*$`, - // TODO(adg): write check function for Launchpad - }, -} - -func init() { - // Compile the regular expressions. - for i := range vcsPaths { - vcsPaths[i].regexp = regexp.MustCompile(vcsPaths[i].re) - } -} - -// googleCodeVCS performs an HTTP GET to verify that a Google Code project -// (and, optionally, a sub-repository) exists. -func googleCodeVCS(c appengine.Context, match map[string]string) bool { - u := "https://code.google.com/p/" + match["project"] - if match["subrepo"] != "" { - u += "/source/checkout?repo=" + match["subrepo"] - } - return checkURL(c, u) -} - -// checkRoot performs an HTTP GET to verify that a specific repository root -// exists (for github and bitbucket both). -func checkRoot(c appengine.Context, match map[string]string) bool { - return checkURL(c, "https://"+match["root"]) -} - -// checkURL performs an HTTP GET to the specified URL and returns whether the -// remote server returned a 2xx response. -func checkURL(c appengine.Context, u string) bool { - client := urlfetch.Client(c) - resp, err := client.Get(u) - if err != nil { - c.Errorf("checkURL(%q): %v", u, err) - return false - } - if resp.StatusCode/100 != 2 { - c.Debugf("checkURL(%q): HTTP status: %s", u, resp.Status) - return false - } - return true -} diff --git a/misc/dashboard/app/build/test.go b/misc/dashboard/app/build/test.go index 4114c25c5..d8470fec1 100644 --- a/misc/dashboard/app/build/test.go +++ b/misc/dashboard/app/build/test.go @@ -37,7 +37,7 @@ const testPkg = "code.google.com/p/go.test" var testPackage = &Package{Name: "Test", Kind: "subrepo", Path: testPkg} var testPackages = []*Package{ - &Package{Name: "Go", Path: ""}, + {Name: "Go", Path: ""}, testPackage, } diff --git a/misc/dashboard/app/cron.yaml b/misc/dashboard/app/cron.yaml deleted file mode 100644 index b54c24cef..000000000 --- a/misc/dashboard/app/cron.yaml +++ /dev/null @@ -1,4 +0,0 @@ -cron: -- description: update rolling package install counts - url: /install/cron - schedule: every 24 hours diff --git a/misc/dashboard/builder/http.go b/misc/dashboard/builder/http.go index f5a1fcf9b..e50ae5724 100644 --- a/misc/dashboard/builder/http.go +++ b/misc/dashboard/builder/http.go @@ -125,41 +125,6 @@ func (b *Builder) recordResult(ok bool, pkg, hash, goHash, buildLog string, runT return dash("POST", "result", args, req, nil) } -// packages fetches a list of package paths from the dashboard -func packages() (pkgs []string, err error) { - return nil, nil - /* TODO(adg): un-stub this once the new package builder design is done - var resp struct { - Packages []struct { - Path string - } - } - err = dash("GET", "package", &resp, param{"fmt": "json"}) - if err != nil { - return - } - for _, p := range resp.Packages { - pkgs = append(pkgs, p.Path) - } - return - */ -} - -// updatePackage sends package build results and info to the dashboard -func (b *Builder) updatePackage(pkg string, ok bool, buildLog, info string) error { - return nil - /* TODO(adg): un-stub this once the new package builder design is done - return dash("POST", "package", nil, param{ - "builder": b.name, - "key": b.key, - "path": pkg, - "ok": strconv.FormatBool(ok), - "log": buildLog, - "info": info, - }) - */ -} - func postCommit(key, pkg string, l *HgLog) error { t, err := time.Parse(time.RFC3339, l.Date) if err != nil { diff --git a/misc/dashboard/builder/main.go b/misc/dashboard/builder/main.go index 4fe65b7a5..85bb7ad4b 100644 --- a/misc/dashboard/builder/main.go +++ b/misc/dashboard/builder/main.go @@ -5,8 +5,8 @@ package main import ( + "bytes" "encoding/xml" - "errors" "flag" "fmt" "io/ioutil" @@ -23,7 +23,7 @@ import ( const ( codeProject = "go" codePyScript = "misc/dashboard/googlecode_upload.py" - hgUrl = "https://go.googlecode.com/hg/" + hgUrl = "https://code.google.com/p/go/" mkdirPerm = 0750 waitInterval = 30 * time.Second // time to wait before checking for new revs pkgBuildInterval = 24 * time.Hour // rebuild packages every 24 hours @@ -43,8 +43,6 @@ type Builder struct { name string goos, goarch string key string - codeUsername string - codePassword string } var ( @@ -55,7 +53,6 @@ var ( buildRevision = flag.String("rev", "", "Build specified revision and exit") buildCmd = flag.String("cmd", filepath.Join(".", allCmd), "Build command (specify relative to go/src/)") failAll = flag.Bool("fail", false, "fail all builds") - external = flag.Bool("external", false, "Build external packages") parallel = flag.Bool("parallel", false, "Build multiple targets in parallel") verbose = flag.Bool("v", false, "verbose") ) @@ -131,14 +128,6 @@ func main() { return } - // external package build mode - if *external { - if len(builders) != 1 { - log.Fatal("only one goos-goarch should be specified with -external") - } - builders[0].buildExternal() - } - // go continuous build mode (default) // check for new commits and build them for { @@ -212,53 +201,10 @@ func NewBuilder(builder string) (*Builder, error) { if err != nil { return nil, fmt.Errorf("readKeys %s (%s): %s", b.name, fn, err) } - v := strings.Split(string(c), "\n") - b.key = v[0] - if len(v) >= 3 { - b.codeUsername, b.codePassword = v[1], v[2] - } - + b.key = string(bytes.TrimSpace(bytes.SplitN(c, []byte("\n"), 2)[0])) return b, nil } -// buildExternal downloads and builds external packages, and -// reports their build status to the dashboard. -// It will re-build all packages after pkgBuildInterval nanoseconds or -// a new release tag is found. -func (b *Builder) buildExternal() { - var prevTag string - var nextBuild time.Time - for { - time.Sleep(waitInterval) - err := run(nil, goroot, "hg", "pull", "-u") - if err != nil { - log.Println("hg pull failed:", err) - continue - } - hash, tag, err := firstTag(releaseRe) - if err != nil { - log.Println(err) - continue - } - if *verbose { - log.Println("latest release:", tag) - } - // don't rebuild if there's no new release - // and it's been less than pkgBuildInterval - // nanoseconds since the last build. - if tag == prevTag && time.Now().Before(nextBuild) { - continue - } - // build will also build the packages - if err := b.buildHash(hash); err != nil { - log.Println(err) - continue - } - prevTag = tag - nextBuild = time.Now().Add(pkgBuildInterval) - } -} - // build checks for a new commit for this builder // and builds it if one is found. // It returns true if a build was attempted. @@ -321,14 +267,6 @@ func (b *Builder) buildHash(hash string) error { return fmt.Errorf("%s: %s", *buildCmd, err) } - // if we're in external mode, build all packages and return - if *external { - if status != 0 { - return errors.New("go build failed") - } - return b.buildExternalPackages(workpath, hash) - } - if status != 0 { // record failure return b.recordResult(false, "", hash, "", buildLog, runTime) @@ -342,36 +280,6 @@ func (b *Builder) buildHash(hash string) error { // build Go sub-repositories b.buildSubrepos(filepath.Join(workpath, "go"), hash) - // finish here if codeUsername and codePassword aren't set - if b.codeUsername == "" || b.codePassword == "" || !*buildRelease { - return nil - } - - // if this is a release, create tgz and upload to google code - releaseHash, release, err := firstTag(binaryTagRe) - if hash == releaseHash { - // clean out build state - cmd := filepath.Join(srcDir, cleanCmd) - if err := run(b.envv(), srcDir, cmd, "--nopkg"); err != nil { - return fmt.Errorf("%s: %s", cleanCmd, err) - } - // upload binary release - fn := fmt.Sprintf("go.%s.%s-%s.tar.gz", release, b.goos, b.goarch) - if err := run(nil, workpath, "tar", "czf", fn, "go"); err != nil { - return fmt.Errorf("tar: %s", err) - } - err := run(nil, workpath, filepath.Join(goroot, codePyScript), - "-s", release, - "-p", codeProject, - "-u", b.codeUsername, - "-w", b.codePassword, - "-l", fmt.Sprintf("%s,%s", b.goos, b.goarch), - fn) - if err != nil { - return fmt.Errorf("%s: %s", codePyScript, err) - } - } - return nil } @@ -429,7 +337,7 @@ func (b *Builder) buildSubrepos(goRoot, goHash string) { } // buildSubrepo fetches the given package, updates it to the specified hash, -// and runs 'go test pkg/...'. It returns the build log and any error. +// and runs 'go test -short pkg/...'. It returns the build log and any error. func (b *Builder) buildSubrepo(goRoot, pkg, hash string) (string, error) { goBin := filepath.Join(goRoot, "bin") goTool := filepath.Join(goBin, "go") @@ -466,7 +374,7 @@ func (b *Builder) buildSubrepo(goRoot, pkg, hash string) (string, error) { } // test the package - log, status, err = runLog(env, "", goRoot, goTool, "test", pkg+"/...") + log, status, err = runLog(env, "", goRoot, goTool, "test", "-short", pkg+"/...") if err == nil && status != 0 { err = fmt.Errorf("go exited with status %d", status) } @@ -739,31 +647,6 @@ func fullHash(root, rev string) (string, error) { return s, nil } -var revisionRe = regexp.MustCompile(`^([^ ]+) +[0-9]+:([0-9a-f]+)$`) - -// firstTag returns the hash and tag of the most recent tag matching re. -func firstTag(re *regexp.Regexp) (hash string, tag string, err error) { - o, _, err := runLog(nil, "", goroot, "hg", "tags") - for _, l := range strings.Split(o, "\n") { - if l == "" { - continue - } - s := revisionRe.FindStringSubmatch(l) - if s == nil { - err = errors.New("couldn't find revision number") - return - } - if !re.MatchString(s[1]) { - continue - } - tag = s[1] - hash, err = fullHash(goroot, s[2]) - return - } - err = errors.New("no matching tag found") - return -} - var repoRe = regexp.MustCompile(`^code\.google\.com/p/([a-z0-9\-]+(\.[a-z0-9\-]+)?)(/[a-z0-9A-Z_.\-/]+)?$`) // repoURL returns the repository URL for the supplied import path. diff --git a/misc/dashboard/builder/package.go b/misc/dashboard/builder/package.go deleted file mode 100644 index dcd449ab8..000000000 --- a/misc/dashboard/builder/package.go +++ /dev/null @@ -1,121 +0,0 @@ -// Copyright 2011 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. - -package main - -import ( - "errors" - "fmt" - "go/doc" - "go/parser" - "go/token" - "log" - "os" - "path/filepath" - "strings" -) - -const MaxCommentLength = 500 // App Engine won't store more in a StringProperty. - -func (b *Builder) buildExternalPackages(workpath string, hash string) error { - logdir := filepath.Join(*buildroot, "log") - if err := os.Mkdir(logdir, 0755); err != nil { - return err - } - pkgs, err := packages() - if err != nil { - return err - } - for _, p := range pkgs { - goroot := filepath.Join(workpath, "go") - gobin := filepath.Join(goroot, "bin") - goinstall := filepath.Join(gobin, "goinstall") - envv := append(b.envv(), "GOROOT="+goroot) - - // add GOBIN to path - for i, v := range envv { - if strings.HasPrefix(v, "PATH=") { - p := filepath.SplitList(v[5:]) - p = append([]string{gobin}, p...) - s := strings.Join(p, string(filepath.ListSeparator)) - envv[i] = "PATH=" + s - } - } - - // goinstall - buildLog, code, err := runLog(envv, "", goroot, goinstall, "-dashboard=false", p) - if err != nil { - log.Printf("goinstall %v: %v", p, err) - } - - // get doc comment from package source - var info string - pkgPath := filepath.Join(goroot, "src", "pkg", p) - if _, err := os.Stat(pkgPath); err == nil { - info, err = packageComment(p, pkgPath) - if err != nil { - log.Printf("packageComment %v: %v", p, err) - } - } - - // update dashboard with build state + info - err = b.updatePackage(p, code == 0, buildLog, info) - if err != nil { - log.Printf("updatePackage %v: %v", p, err) - } - - if code == 0 { - log.Println("Build succeeded:", p) - } else { - log.Println("Build failed:", p) - fn := filepath.Join(logdir, strings.Replace(p, "/", "_", -1)) - if f, err := os.Create(fn); err != nil { - log.Printf("creating %s: %v", fn, err) - } else { - fmt.Fprint(f, buildLog) - f.Close() - } - } - } - return nil -} - -func isGoFile(fi os.FileInfo) bool { - return !fi.IsDir() && // exclude directories - !strings.HasPrefix(fi.Name(), ".") && // ignore .files - !strings.HasSuffix(fi.Name(), "_test.go") && // ignore tests - filepath.Ext(fi.Name()) == ".go" -} - -func packageComment(pkg, pkgpath string) (info string, err error) { - fset := token.NewFileSet() - pkgs, err := parser.ParseDir(fset, pkgpath, isGoFile, parser.PackageClauseOnly|parser.ParseComments) - if err != nil { - return - } - for name := range pkgs { - if name == "main" { - continue - } - pdoc := doc.New(pkgs[name], pkg, doc.AllDecls) - if pdoc.Doc == "" { - continue - } - if info != "" { - return "", errors.New("multiple packages with docs") - } - info = pdoc.Doc - } - // grab only first paragraph - if parts := strings.SplitN(info, "\n\n", 2); len(parts) > 1 { - info = parts[0] - } - // replace newlines with spaces - info = strings.Replace(info, "\n", " ", -1) - // truncate - if len(info) > MaxCommentLength { - info = info[:MaxCommentLength] - } - return -} diff --git a/misc/dashboard/godashboard/_multiprocessing.py b/misc/dashboard/godashboard/_multiprocessing.py deleted file mode 100644 index 8c66c0659..000000000 --- a/misc/dashboard/godashboard/_multiprocessing.py +++ /dev/null @@ -1,5 +0,0 @@ -# Copyright 2009 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. - -import multiprocessing diff --git a/misc/dashboard/godashboard/app.yaml b/misc/dashboard/godashboard/app.yaml index 8c7670437..ae2892497 100644 --- a/misc/dashboard/godashboard/app.yaml +++ b/misc/dashboard/godashboard/app.yaml @@ -11,16 +11,5 @@ handlers: - url: /static static_dir: static -- url: /package - script: package.py - -- url: /package/daily - script: package.py - login: admin - -- url: /project.* - script: package.py - -- url: / - static_files: main.html - upload: main.html +- url: /(|project(|/login|/edit)) + script: project.py diff --git a/misc/dashboard/godashboard/auth.py b/misc/dashboard/godashboard/auth.py deleted file mode 100644 index 73a54c0d4..000000000 --- a/misc/dashboard/godashboard/auth.py +++ /dev/null @@ -1,13 +0,0 @@ -# Copyright 2011 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. - -import hmac - -# local imports -import key - -def auth(req): - k = req.get('key') - return k == hmac.new(key.accessKey, req.get('builder')).hexdigest() or k == key.accessKey - diff --git a/misc/dashboard/godashboard/const.py b/misc/dashboard/godashboard/const.py index b0110c635..d92d32aa9 100644 --- a/misc/dashboard/godashboard/const.py +++ b/misc/dashboard/godashboard/const.py @@ -3,11 +3,5 @@ # license that can be found in the LICENSE file. mail_from = "Go Dashboard <builder@golang.org>" - mail_submit_to = "adg@golang.org" mail_submit_subject = "New Project Submitted" - -mail_fail_to = "golang-dev@googlegroups.com" -mail_fail_reply_to = "golang-dev@googlegroups.com" -mail_fail_subject = "%s broken by %s" - diff --git a/misc/dashboard/godashboard/cron.yaml b/misc/dashboard/godashboard/cron.yaml deleted file mode 100644 index 953b6a1cd..000000000 --- a/misc/dashboard/godashboard/cron.yaml +++ /dev/null @@ -1,4 +0,0 @@ -cron: -- description: daily package maintenance - url: /package/daily - schedule: every 24 hours diff --git a/misc/dashboard/godashboard/fail-notify.txt b/misc/dashboard/godashboard/fail-notify.txt deleted file mode 100644 index f75d09aa2..000000000 --- a/misc/dashboard/godashboard/fail-notify.txt +++ /dev/null @@ -1,9 +0,0 @@ -Change {{node}} broke the {{builder}} build: -http://godashboard.appspot.com/log/{{loghash}} - -{{desc}} - -http://code.google.com/p/go/source/detail?r={{node}} - -$ tail -n 100 < log -{{log}} diff --git a/misc/dashboard/godashboard/key.py.dummy b/misc/dashboard/godashboard/key.py.dummy deleted file mode 100644 index 5b8bab186..000000000 --- a/misc/dashboard/godashboard/key.py.dummy +++ /dev/null @@ -1,10 +0,0 @@ -# Copyright 2009 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. - -# Copy this file to key.py after substituting the real key. - -# accessKey controls private access to the build server (i.e. to record new -# builds). It's tranmitted in the clear but, given the low value of the target, -# this should be sufficient. -accessKey = "this is not the real key" diff --git a/misc/dashboard/godashboard/main.html b/misc/dashboard/godashboard/main.html deleted file mode 100644 index 4cd98d851..000000000 --- a/misc/dashboard/godashboard/main.html +++ /dev/null @@ -1,23 +0,0 @@ -<!DOCTYPE HTML> -<html> - <head> - <title>Build Status - Go Dashboard</title> - <link rel="stylesheet" type="text/css" href="static/style.css"> - </head> - - <body> - <ul class="menu"> - <li>Build Status</li> - <li><a href="/package">Packages</a></li> - <li><a href="/project">Projects</a></li> - <li><a href="http://golang.org/">golang.org</a></li> - </ul> - - <h1>Go Dashboard</h1> - - <h2>Build Status</h2> - - <p class="notice">The build status dashboard has moved to <a href="http://build.golang.org">build.golang.org</a>.</p> - - </body> -</html> diff --git a/misc/dashboard/godashboard/package.html b/misc/dashboard/godashboard/package.html deleted file mode 100644 index b688af9e2..000000000 --- a/misc/dashboard/godashboard/package.html +++ /dev/null @@ -1,79 +0,0 @@ -<!DOCTYPE HTML> -<html> - <head> - <title>Packages - Go Dashboard</title> - <link rel="stylesheet" type="text/css" href="static/style.css"> - </head> - - <body> - <ul class="menu"> - <li><a href="/">Build Status</a></li> - <li>Packages</li> - <li><a href="/project">Projects</a></li> - <li><a href="http://golang.org/">golang.org</a></li> - </ul> - - <h1>Go Dashboard</h1> - - <p> - Packages listed on this page are written by third parties and - may or may not build or be safe to use. - </p> - -<!-- - <p> - An "ok" in the <b>build</b> column indicates that the package is - <a href="http://golang.org/cmd/goinstall/">goinstallable</a> - with the latest - <a href="http://golang.org/doc/devel/release.html">release</a> of Go. - </p> ---> - - <p> - The <b>info</b> column shows the first paragraph from the - <a href="http://blog.golang.org/2011/03/godoc-documenting-go-code.html">package doc comment</a>. - </p> - - <h2>Most Installed Packages (this week)</h2> - <table class="alternate" cellpadding="0" cellspacing="0"> - <tr><th>last install</th><th>count</th><th>build</th><th>path</th><th>info</th></tr> - {% for r in by_week_count %} - <tr> - <td class="time">{{r.last_install|date:"Y-M-d H:i"}}</td> - <td class="count">{{r.week_count}}</td> -<!-- <td class="ok">{% if r.ok %}<a title="{{r.last_ok|date:"Y-M-d H:i"}}">ok</a>{% else %} {% endif %}</td> --> - <td class="path"><a href="{{r.web_url}}">{{r.path}}</a></td> - <td class="info">{% if r.info %}{{r.info|escape}}{% endif %}</td> - </tr> - {% endfor %} - </table> - - <h2>Recently Installed Packages</h2> - <table class="alternate" cellpadding="0" cellspacing="0"> - <tr><th>last install</th><th>count</th><th>build</th><th>path</th><th>info</th></tr> - {% for r in by_time %} - <tr> - <td class="time">{{r.last_install|date:"Y-M-d H:i"}}</td> - <td class="count">{{r.count}}</td> -<!-- <td class="ok">{% if r.ok %}<a title="{{r.last_ok|date:"Y-M-d H:i"}}">ok</a>{% else %} {% endif %}</td> --> - <td class="path"><a href="{{r.web_url}}">{{r.path}}</a></td> - <td class="info">{% if r.info %}{{r.info|escape}}{% endif %}</td> - </tr> - {% endfor %} - </table> - - <h2>Most Installed Packages (all time)</h2> - <table class="alternate" cellpadding="0" cellspacing="0"> - <tr><th>last install</th><th>count</th><th>build</th><th>path</th><th>info</th></tr> - {% for r in by_count %} - <tr> - <td class="time">{{r.last_install|date:"Y-M-d H:i"}}</td> - <td class="count">{{r.count}}</td> -<!-- <td class="ok">{% if r.ok %}<a title="{{r.last_ok|date:"Y-M-d H:i"}}">ok</a>{% else %} {% endif %}</td> --> - <td class="path"><a href="{{r.web_url}}">{{r.path}}</a></td> - <td class="info">{% if r.info %}{{r.info|escape}}{% endif %}</td> - </tr> - {% endfor %} - </table> - </body> -</html> diff --git a/misc/dashboard/godashboard/package.py b/misc/dashboard/godashboard/package.py deleted file mode 100644 index 7feac8286..000000000 --- a/misc/dashboard/godashboard/package.py +++ /dev/null @@ -1,429 +0,0 @@ -# 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. - -# This is the server part of the package dashboard. -# It must be run by App Engine. - -from google.appengine.api import mail -from google.appengine.api import memcache -from google.appengine.api import taskqueue -from google.appengine.api import urlfetch -from google.appengine.api import users -from google.appengine.ext import db -from google.appengine.ext import webapp -from google.appengine.ext.webapp import template -from google.appengine.ext.webapp.util import run_wsgi_app -import datetime -import logging -import os -import re -import sets -import urllib2 - -# local imports -from auth import auth -import toutf8 -import const - -template.register_template_library('toutf8') - -# Storage model for package info recorded on server. -class Package(db.Model): - path = db.StringProperty() - web_url = db.StringProperty() # derived from path - count = db.IntegerProperty() # grand total - week_count = db.IntegerProperty() # rolling weekly count - day_count = db.TextProperty(default='') # daily count - last_install = db.DateTimeProperty() - - # data contributed by gobuilder - info = db.StringProperty() - ok = db.BooleanProperty() - last_ok = db.DateTimeProperty() - - def get_day_count(self): - counts = {} - if not self.day_count: - return counts - for d in str(self.day_count).split('\n'): - date, count = d.split(' ') - counts[date] = int(count) - return counts - - def set_day_count(self, count): - days = [] - for day, count in count.items(): - days.append('%s %d' % (day, count)) - days.sort(reverse=True) - days = days[:28] - self.day_count = '\n'.join(days) - - def inc(self): - count = self.get_day_count() - today = str(datetime.date.today()) - count[today] = count.get(today, 0) + 1 - self.set_day_count(count) - self.update_week_count(count) - self.count += 1 - - def update_week_count(self, count=None): - if count is None: - count = self.get_day_count() - total = 0 - today = datetime.date.today() - for i in range(7): - day = str(today - datetime.timedelta(days=i)) - if day in count: - total += count[day] - self.week_count = total - - -# PackageDaily kicks off the daily package maintenance cron job -# and serves the associated task queue. -class PackageDaily(webapp.RequestHandler): - - def get(self): - # queue a task to update each package with a week_count > 0 - keys = Package.all(keys_only=True).filter('week_count >', 0) - for key in keys: - taskqueue.add(url='/package/daily', params={'key': key.name()}) - - def post(self): - # update a single package (in a task queue) - def update(key): - p = Package.get_by_key_name(key) - if not p: - return - p.update_week_count() - p.put() - key = self.request.get('key') - if not key: - return - db.run_in_transaction(update, key) - - -class Project(db.Model): - name = db.StringProperty(indexed=True) - descr = db.StringProperty() - web_url = db.StringProperty() - package = db.ReferenceProperty(Package) - category = db.StringProperty(indexed=True) - tags = db.ListProperty(str) - approved = db.BooleanProperty(indexed=True) - - -re_bitbucket = re.compile(r'^(bitbucket\.org/[a-z0-9A-Z_.\-]+/[a-zA-Z0-9_.\-]+)(/[a-z0-9A-Z_.\-/]+)?$') -re_googlecode = re.compile(r'^[a-z0-9\-]+\.googlecode\.com/(svn|hg|git)(/[a-z0-9A-Z_.\-/]+)?$') -re_github = re.compile(r'^github\.com/[a-z0-9A-Z_.\-]+(/[a-z0-9A-Z_.\-]+)+$') -re_launchpad = re.compile(r'^launchpad\.net/([a-z0-9A-Z_.\-]+(/[a-z0-9A-Z_.\-]+)?|~[a-z0-9A-Z_.\-]+/(\+junk|[a-z0-9A-Z_.\-]+)/[a-z0-9A-Z_.\-]+)(/[a-z0-9A-Z_.\-/]+)?$') - -def vc_to_web(path): - if re_bitbucket.match(path): - m = re_bitbucket.match(path) - check_url = 'http://' + m.group(1) + '/?cmd=heads' - web = 'http://' + m.group(1) + '/' - elif re_github.match(path): - m = re_github_web.match(path) - check_url = 'https://raw.github.com/' + m.group(1) + '/' + m.group(2) + '/master/' - web = 'http://github.com/' + m.group(1) + '/' + m.group(2) + '/' - elif re_googlecode.match(path): - m = re_googlecode.match(path) - check_url = 'http://'+path - if not m.group(2): # append / after bare '/hg' or '/git' - check_url += '/' - web = 'http://code.google.com/p/' + path[:path.index('.')] - elif re_launchpad.match(path): - check_url = web = 'https://'+path - else: - return False, False - return web, check_url - -re_bitbucket_web = re.compile(r'bitbucket\.org/([a-z0-9A-Z_.\-]+)/([a-z0-9A-Z_.\-]+)') -re_googlecode_web = re.compile(r'code.google.com/p/([a-z0-9\-]+)') -re_github_web = re.compile(r'github\.com/([a-z0-9A-Z_.\-]+)/([a-z0-9A-Z_.\-]+)') -re_launchpad_web = re.compile(r'launchpad\.net/([a-z0-9A-Z_.\-]+(/[a-z0-9A-Z_.\-]+)?|~[a-z0-9A-Z_.\-]+/(\+junk|[a-z0-9A-Z_.\-]+)/[a-z0-9A-Z_.\-]+)(/[a-z0-9A-Z_.\-/]+)?') -re_striphttp = re.compile(r'https?://(www\.)?') - -def find_googlecode_vcs(path): - # Perform http request to path/hg or path/git to check if they're - # using mercurial or git. Otherwise, assume svn. - for vcs in ['git', 'hg']: - try: - response = urlfetch.fetch('http://'+path+vcs, deadline=1) - if response.status_code == 200: - return vcs - except: pass - return 'svn' - -def web_to_vc(url): - url = re_striphttp.sub('', url) - m = re_bitbucket_web.match(url) - if m: - return 'bitbucket.org/'+m.group(1)+'/'+m.group(2) - m = re_github_web.match(url) - if m: - return 'github.com/'+m.group(1)+'/'+m.group(2) - m = re_googlecode_web.match(url) - if m: - path = m.group(1)+'.googlecode.com/' - vcs = find_googlecode_vcs(path) - return path + vcs - m = re_launchpad_web.match(url) - if m: - return m.group(0) - return False - -MaxPathLength = 100 -CacheTimeout = 3600 - -class PackagePage(webapp.RequestHandler): - def get(self): - if self.request.get('fmt') == 'json': - return self.json() - - html = memcache.get('view-package') - if not html: - tdata = {} - - q = Package.all().filter('week_count >', 0) - q.order('-week_count') - tdata['by_week_count'] = q.fetch(50) - - q = Package.all() - q.order('-last_install') - tdata['by_time'] = q.fetch(20) - - q = Package.all() - q.order('-count') - tdata['by_count'] = q.fetch(100) - - path = os.path.join(os.path.dirname(__file__), 'package.html') - html = template.render(path, tdata) - memcache.set('view-package', html, time=CacheTimeout) - - self.response.headers['Content-Type'] = 'text/html; charset=utf-8' - self.response.out.write(html) - - def json(self): - json = memcache.get('view-package-json') - if not json: - q = Package.all() - s = '{"packages": [' - sep = '' - for r in q: - s += '%s\n\t{"path": "%s", "last_install": "%s", "count": "%s"}' % (sep, r.path, r.last_install, r.count) - sep = ',' - s += '\n]}\n' - json = s - memcache.set('view-package-json', json, time=CacheTimeout) - self.response.set_status(200) - self.response.headers['Content-Type'] = 'text/plain; charset=utf-8' - self.response.out.write(json) - - def can_get_url(self, url): - try: - urllib2.urlopen(urllib2.Request(url)) - return True - except: - return False - - def is_valid_package_path(self, path): - return (re_bitbucket.match(path) or - re_googlecode.match(path) or - re_github.match(path) or - re_launchpad.match(path)) - - def record_pkg(self, path): - # sanity check string - if not path or len(path) > MaxPathLength or not self.is_valid_package_path(path): - return False - - # look in datastore - key = 'pkg-' + path - p = Package.get_by_key_name(key) - if p is None: - # not in datastore - verify URL before creating - web, check_url = vc_to_web(path) - if not web: - logging.error('unrecognized path: %s', path) - return False - if not self.can_get_url(check_url): - logging.error('cannot get %s', check_url) - return False - p = Package(key_name = key, path = path, count = 0, web_url = web) - - if auth(self.request): - # builder updating package metadata - p.info = self.request.get('info') - p.ok = self.request.get('ok') == "true" - if p.ok: - p.last_ok = datetime.datetime.utcnow() - else: - # goinstall reporting an install - p.inc() - p.last_install = datetime.datetime.utcnow() - - # update package object - p.put() - return True - - def post(self): - path = self.request.get('path') - ok = db.run_in_transaction(self.record_pkg, path) - if ok: - self.response.set_status(200) - self.response.out.write('ok') - else: - logging.error('invalid path in post: %s', path) - self.response.set_status(500) - self.response.out.write('not ok') - -class ProjectPage(webapp.RequestHandler): - - def get(self): - admin = users.is_current_user_admin() - if self.request.path == "/project/login": - self.redirect(users.create_login_url("/project")) - elif self.request.path == "/project/logout": - self.redirect(users.create_logout_url("/project")) - elif self.request.path == "/project/edit" and admin: - self.edit() - elif self.request.path == "/project/assoc" and admin: - self.assoc() - else: - self.list() - - def assoc(self): - projects = Project.all() - for p in projects: - if p.package: - continue - path = web_to_vc(p.web_url) - if not path: - continue - pkg = Package.get_by_key_name("pkg-"+path) - if not pkg: - self.response.out.write('no: %s %s<br>' % (p.web_url, path)) - continue - p.package = pkg - p.put() - self.response.out.write('yes: %s %s<br>' % (p.web_url, path)) - - def post(self): - if self.request.path == "/project/edit": - self.edit(True) - else: - data = dict(map(lambda x: (x, self.request.get(x)), ["name","descr","web_url"])) - if reduce(lambda x, y: x or not y, data.values(), False): - data["submitMsg"] = "You must complete all the fields." - self.list(data) - return - p = Project.get_by_key_name("proj-"+data["name"]) - if p is not None: - data["submitMsg"] = "A project by this name already exists." - self.list(data) - return - p = Project(key_name="proj-"+data["name"], **data) - p.put() - - path = os.path.join(os.path.dirname(__file__), 'project-notify.txt') - mail.send_mail( - sender=const.mail_from, - to=const.mail_submit_to, - subject=const.mail_submit_subject, - body=template.render(path, {'project': p})) - - self.list({"submitMsg": "Your project has been submitted."}) - - def list(self, additional_data={}): - cache_key = 'view-project-data' - tag = self.request.get('tag', None) - if tag: - cache_key += '-'+tag - data = memcache.get(cache_key) - admin = users.is_current_user_admin() - if admin or not data: - projects = Project.all().order('category').order('name') - if not admin: - projects = projects.filter('approved =', True) - projects = list(projects) - - tags = sets.Set() - for p in projects: - for t in p.tags: - tags.add(t) - - if tag: - projects = filter(lambda x: tag in x.tags, projects) - - data = {} - data['tag'] = tag - data['tags'] = tags - data['projects'] = projects - data['admin']= admin - if not admin: - memcache.set(cache_key, data, time=CacheTimeout) - - for k, v in additional_data.items(): - data[k] = v - - self.response.headers['Content-Type'] = 'text/html; charset=utf-8' - path = os.path.join(os.path.dirname(__file__), 'project.html') - self.response.out.write(template.render(path, data)) - - def edit(self, save=False): - if save: - name = self.request.get("orig_name") - else: - name = self.request.get("name") - - p = Project.get_by_key_name("proj-"+name) - if not p: - self.response.out.write("Couldn't find that Project.") - return - - if save: - if self.request.get("do") == "Delete": - p.delete() - else: - pkg_name = self.request.get("package", None) - if pkg_name: - pkg = Package.get_by_key_name("pkg-"+pkg_name) - if pkg: - p.package = pkg.key() - for f in ['name', 'descr', 'web_url', 'category']: - setattr(p, f, self.request.get(f, None)) - p.approved = self.request.get("approved") == "1" - p.tags = filter(lambda x: x, self.request.get("tags", "").split(",")) - p.put() - memcache.delete('view-project-data') - self.redirect('/project') - return - - # get all project categories and tags - cats, tags = sets.Set(), sets.Set() - for r in Project.all(): - cats.add(r.category) - for t in r.tags: - tags.add(t) - - self.response.headers['Content-Type'] = 'text/html; charset=utf-8' - path = os.path.join(os.path.dirname(__file__), 'project-edit.html') - self.response.out.write(template.render(path, { - "taglist": tags, "catlist": cats, "p": p, "tags": ",".join(p.tags) })) - - def redirect(self, url): - self.response.set_status(302) - self.response.headers.add_header("Location", url) - -def main(): - app = webapp.WSGIApplication([ - ('/package', PackagePage), - ('/package/daily', PackageDaily), - ('/project.*', ProjectPage), - ], debug=True) - run_wsgi_app(app) - -if __name__ == '__main__': - main() diff --git a/misc/dashboard/godashboard/project-edit.html b/misc/dashboard/godashboard/project-edit.html index ce18fb3fb..8ca5b22a3 100644 --- a/misc/dashboard/godashboard/project-edit.html +++ b/misc/dashboard/godashboard/project-edit.html @@ -19,8 +19,6 @@ Tags: (comma-separated)<br/> <input type="text" id="tags" name="tags" value="{{tags}}"><br/> Web URL:<br/> <input type="text" name="web_url" value="{{p.web_url|escape}}"><br/> -Package URL: (to link to a goinstall'd package)<br/> -<input type="text" name="package" value="{{p.package.path|escape}}"><br/> Approved: <input type="checkbox" name="approved" value="1" {% if p.approved %}checked{% endif %}><br/> <br/> <input type="submit" name="do" value="Save"> diff --git a/misc/dashboard/godashboard/project.html b/misc/dashboard/godashboard/project.html index 4fe1741c6..2d2429461 100644 --- a/misc/dashboard/godashboard/project.html +++ b/misc/dashboard/godashboard/project.html @@ -1,23 +1,13 @@ <!DOCTYPE HTML> <html> <head> - <title>Projects - Go Dashboard</title> + <title>Go Projects</title> <link rel="stylesheet" type="text/css" href="static/style.css"> - <style> - .unapproved a.name { color: red } - .tag { font-size: 0.8em; color: #666 } - </style> </head> <body> - <ul class="menu"> - <li><a href="/">Build Status</a></li> - <li><a href="/package">Packages</a></li> - <li>Projects</li> - <li><a href="http://golang.org/">golang.org</a></li> - </ul> - - <h1>Go Dashboard</h1> + <ul class="menu"><li><a href="http://golang.org/">golang.org</a></li></ul> + <h1>Go Projects</h1> <p> These are external projects and not endorsed or supported by the Go project. @@ -80,6 +70,5 @@ {% endfor %} </ul> - </body> </html> diff --git a/misc/dashboard/godashboard/project.py b/misc/dashboard/godashboard/project.py new file mode 100644 index 000000000..b13599d5e --- /dev/null +++ b/misc/dashboard/godashboard/project.py @@ -0,0 +1,151 @@ +# 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. + +from google.appengine.api import mail +from google.appengine.api import memcache +from google.appengine.api import users +from google.appengine.ext import db +from google.appengine.ext import webapp +from google.appengine.ext.webapp import template +from google.appengine.ext.webapp.util import run_wsgi_app +import os +import sets + +# local imports +import toutf8 +import const + +template.register_template_library('toutf8') + +class Project(db.Model): + name = db.StringProperty(indexed=True) + descr = db.StringProperty() + web_url = db.StringProperty() + category = db.StringProperty(indexed=True) + tags = db.ListProperty(str) + approved = db.BooleanProperty(indexed=True) + +CacheTimeout = 3600 + +class ProjectPage(webapp.RequestHandler): + + def get(self): + admin = users.is_current_user_admin() + if self.request.path == "/project/login": + self.redirect(users.create_login_url("/project")) + elif self.request.path == "/project/edit" and admin: + self.edit() + else: + self.list() + + def post(self): + if self.request.path == "/project/edit": + self.edit(True) + else: + data = dict(map(lambda x: (x, self.request.get(x)), ["name","descr","web_url"])) + if reduce(lambda x, y: x or not y, data.values(), False): + data["submitMsg"] = "You must complete all the fields." + self.list(data) + return + p = Project.get_by_key_name("proj-"+data["name"]) + if p is not None: + data["submitMsg"] = "A project by this name already exists." + self.list(data) + return + p = Project(key_name="proj-"+data["name"], **data) + p.put() + + path = os.path.join(os.path.dirname(__file__), 'project-notify.txt') + mail.send_mail( + sender=const.mail_from, + to=const.mail_submit_to, + subject=const.mail_submit_subject, + body=template.render(path, {'project': p})) + + self.list({"submitMsg": "Your project has been submitted."}) + + def list(self, additional_data={}): + cache_key = 'view-project-data' + tag = self.request.get('tag', None) + if tag: + cache_key += '-'+tag + data = memcache.get(cache_key) + admin = users.is_current_user_admin() + if admin or not data: + projects = Project.all().order('category').order('name') + if not admin: + projects = projects.filter('approved =', True) + projects = list(projects) + + tags = sets.Set() + for p in projects: + for t in p.tags: + tags.add(t) + + if tag: + projects = filter(lambda x: tag in x.tags, projects) + + data = {} + data['tag'] = tag + data['tags'] = tags + data['projects'] = projects + data['admin']= admin + if not admin: + memcache.set(cache_key, data, time=CacheTimeout) + + for k, v in additional_data.items(): + data[k] = v + + self.response.headers['Content-Type'] = 'text/html; charset=utf-8' + path = os.path.join(os.path.dirname(__file__), 'project.html') + self.response.out.write(template.render(path, data)) + + def edit(self, save=False): + if save: + name = self.request.get("orig_name") + else: + name = self.request.get("name") + + p = Project.get_by_key_name("proj-"+name) + if not p: + self.response.out.write("Couldn't find that Project.") + return + + if save: + if self.request.get("do") == "Delete": + p.delete() + else: + for f in ['name', 'descr', 'web_url', 'category']: + setattr(p, f, self.request.get(f, None)) + p.approved = self.request.get("approved") == "1" + p.tags = filter(lambda x: x, self.request.get("tags", "").split(",")) + p.put() + memcache.delete('view-project-data') + self.redirect('/project') + return + + # get all project categories and tags + cats, tags = sets.Set(), sets.Set() + for r in Project.all(): + cats.add(r.category) + for t in r.tags: + tags.add(t) + + self.response.headers['Content-Type'] = 'text/html; charset=utf-8' + path = os.path.join(os.path.dirname(__file__), 'project-edit.html') + self.response.out.write(template.render(path, { + "taglist": tags, "catlist": cats, "p": p, "tags": ",".join(p.tags) })) + + def redirect(self, url): + self.response.set_status(302) + self.response.headers.add_header("Location", url) + +def main(): + app = webapp.WSGIApplication([ + ('/.*', ProjectPage), + ], debug=True) + run_wsgi_app(app) + +if __name__ == '__main__': + main() diff --git a/misc/dashboard/godashboard/static/style.css b/misc/dashboard/godashboard/static/style.css index 0ce583a54..ad7038c3d 100644 --- a/misc/dashboard/godashboard/static/style.css +++ b/misc/dashboard/godashboard/static/style.css @@ -127,3 +127,10 @@ td.time { .notice a { color: #FF6; } +.unapproved a.name { + color: red; +} +.tag { + font-size: 0.8em; + color: #666; +} diff --git a/misc/dashboard/googlecode_upload.py b/misc/dashboard/googlecode_upload.py deleted file mode 100755 index e87db884a..000000000 --- a/misc/dashboard/googlecode_upload.py +++ /dev/null @@ -1,248 +0,0 @@ -#!/usr/bin/env python2 -# -# Copyright 2006, 2007 Google Inc. All Rights Reserved. -# Author: danderson@google.com (David Anderson) -# -# Script for uploading files to a Google Code project. -# -# This is intended to be both a useful script for people who want to -# streamline project uploads and a reference implementation for -# uploading files to Google Code projects. -# -# To upload a file to Google Code, you need to provide a path to the -# file on your local machine, a small summary of what the file is, a -# project name, and a valid account that is a member or owner of that -# project. You can optionally provide a list of labels that apply to -# the file. The file will be uploaded under the same name that it has -# in your local filesystem (that is, the "basename" or last path -# component). Run the script with '--help' to get the exact syntax -# and available options. -# -# Note that the upload script requests that you enter your -# googlecode.com password. This is NOT your Gmail account password! -# This is the password you use on googlecode.com for committing to -# Subversion and uploading files. You can find your password by going -# to http://code.google.com/hosting/settings when logged in with your -# Gmail account. If you have already committed to your project's -# Subversion repository, the script will automatically retrieve your -# credentials from there (unless disabled, see the output of '--help' -# for details). -# -# If you are looking at this script as a reference for implementing -# your own Google Code file uploader, then you should take a look at -# the upload() function, which is the meat of the uploader. You -# basically need to build a multipart/form-data POST request with the -# right fields and send it to https://PROJECT.googlecode.com/files . -# Authenticate the request using HTTP Basic authentication, as is -# shown below. -# -# Licensed under the terms of the Apache Software License 2.0: -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Questions, comments, feature requests and patches are most welcome. -# Please direct all of these to the Google Code users group: -# http://groups.google.com/group/google-code-hosting - -"""Google Code file uploader script. -""" - -__author__ = 'danderson@google.com (David Anderson)' - -import httplib -import os.path -import optparse -import getpass -import base64 -import sys - - -def upload(file, project_name, user_name, password, summary, labels=None): - """Upload a file to a Google Code project's file server. - - Args: - file: The local path to the file. - project_name: The name of your project on Google Code. - user_name: Your Google account name. - password: The googlecode.com password for your account. - Note that this is NOT your global Google Account password! - summary: A small description for the file. - labels: an optional list of label strings with which to tag the file. - - Returns: a tuple: - http_status: 201 if the upload succeeded, something else if an - error occurred. - http_reason: The human-readable string associated with http_status - file_url: If the upload succeeded, the URL of the file on Google - Code, None otherwise. - """ - # The login is the user part of user@gmail.com. If the login provided - # is in the full user@domain form, strip it down. - if user_name.endswith('@gmail.com'): - user_name = user_name[:user_name.index('@gmail.com')] - - form_fields = [('summary', summary)] - if labels is not None: - form_fields.extend([('label', l.strip()) for l in labels]) - - content_type, body = encode_upload_request(form_fields, file) - - upload_host = '%s.googlecode.com' % project_name - upload_uri = '/files' - auth_token = base64.b64encode('%s:%s'% (user_name, password)) - headers = { - 'Authorization': 'Basic %s' % auth_token, - 'User-Agent': 'Googlecode.com uploader v0.9.4', - 'Content-Type': content_type, - } - - server = httplib.HTTPSConnection(upload_host) - server.request('POST', upload_uri, body, headers) - resp = server.getresponse() - server.close() - - if resp.status == 201: - location = resp.getheader('Location', None) - else: - location = None - return resp.status, resp.reason, location - - -def encode_upload_request(fields, file_path): - """Encode the given fields and file into a multipart form body. - - fields is a sequence of (name, value) pairs. file is the path of - the file to upload. The file will be uploaded to Google Code with - the same file name. - - Returns: (content_type, body) ready for httplib.HTTP instance - """ - BOUNDARY = '----------Googlecode_boundary_reindeer_flotilla' - CRLF = '\r\n' - - body = [] - - # Add the metadata about the upload first - for key, value in fields: - body.extend( - ['--' + BOUNDARY, - 'Content-Disposition: form-data; name="%s"' % key, - '', - value, - ]) - - # Now add the file itself - file_name = os.path.basename(file_path) - f = open(file_path, 'rb') - file_content = f.read() - f.close() - - body.extend( - ['--' + BOUNDARY, - 'Content-Disposition: form-data; name="filename"; filename="%s"' - % file_name, - # The upload server determines the mime-type, no need to set it. - 'Content-Type: application/octet-stream', - '', - file_content, - ]) - - # Finalize the form body - body.extend(['--' + BOUNDARY + '--', '']) - - return 'multipart/form-data; boundary=%s' % BOUNDARY, CRLF.join(body) - - -def upload_find_auth(file_path, project_name, summary, labels=None, - user_name=None, password=None, tries=3): - """Find credentials and upload a file to a Google Code project's file server. - - file_path, project_name, summary, and labels are passed as-is to upload. - - Args: - file_path: The local path to the file. - project_name: The name of your project on Google Code. - summary: A small description for the file. - labels: an optional list of label strings with which to tag the file. - config_dir: Path to Subversion configuration directory, 'none', or None. - user_name: Your Google account name. - tries: How many attempts to make. - """ - - while tries > 0: - if user_name is None: - # Read username if not specified or loaded from svn config, or on - # subsequent tries. - sys.stdout.write('Please enter your googlecode.com username: ') - sys.stdout.flush() - user_name = sys.stdin.readline().rstrip() - if password is None: - # Read password if not loaded from svn config, or on subsequent tries. - print 'Please enter your googlecode.com password.' - print '** Note that this is NOT your Gmail account password! **' - print 'It is the password you use to access Subversion repositories,' - print 'and can be found here: http://code.google.com/hosting/settings' - password = getpass.getpass() - - status, reason, url = upload(file_path, project_name, user_name, password, - summary, labels) - # Returns 403 Forbidden instead of 401 Unauthorized for bad - # credentials as of 2007-07-17. - if status in [httplib.FORBIDDEN, httplib.UNAUTHORIZED]: - # Rest for another try. - user_name = password = None - tries = tries - 1 - else: - # We're done. - break - - return status, reason, url - - -def main(): - parser = optparse.OptionParser(usage='googlecode-upload.py -s SUMMARY ' - '-p PROJECT [options] FILE') - parser.add_option('-s', '--summary', dest='summary', - help='Short description of the file') - parser.add_option('-p', '--project', dest='project', - help='Google Code project name') - parser.add_option('-u', '--user', dest='user', - help='Your Google Code username') - parser.add_option('-w', '--password', dest='password', - help='Your Google Code password') - parser.add_option('-l', '--labels', dest='labels', - help='An optional list of comma-separated labels to attach ' - 'to the file') - - options, args = parser.parse_args() - - if not options.summary: - parser.error('File summary is missing.') - elif not options.project: - parser.error('Project name is missing.') - elif len(args) < 1: - parser.error('File to upload not provided.') - elif len(args) > 1: - parser.error('Only one file may be specified.') - - file_path = args[0] - - if options.labels: - labels = options.labels.split(',') - else: - labels = None - - status, reason, url = upload_find_auth(file_path, options.project, - options.summary, labels, - options.user, options.password) - if url: - print 'The file was uploaded successfully.' - print 'URL: %s' % url - return 0 - else: - print 'An error occurred. Your file was not uploaded.' - print 'Google Code upload server said: %s (%s)' % (reason, status) - return 1 - - -if __name__ == '__main__': - sys.exit(main()) diff --git a/misc/dist/bindist.go b/misc/dist/bindist.go index f307d9b76..b03fd706d 100644 --- a/misc/dist/bindist.go +++ b/misc/dist/bindist.go @@ -7,7 +7,11 @@ package main import ( + "archive/tar" + "archive/zip" + "bufio" "bytes" + "compress/gzip" "encoding/base64" "errors" "flag" @@ -20,12 +24,15 @@ import ( "os" "os/exec" "path/filepath" + "runtime" "strings" ) var ( - tag = flag.String("tag", "weekly", "mercurial tag to check out") - repo = flag.String("repo", "https://code.google.com/p/go", "repo URL") + tag = flag.String("tag", "weekly", "mercurial tag to check out") + repo = flag.String("repo", "https://code.google.com/p/go", "repo URL") + verbose = flag.Bool("v", false, "verbose output") + upload = flag.Bool("upload", true, "upload resulting files to Google Code") username, password string // for Google Code upload ) @@ -35,6 +42,13 @@ const ( uploadURL = "https://go.googlecode.com/files" ) +var preBuildCleanFiles = []string{ + "src/cmd/cov", + "src/cmd/prof", + "src/pkg/exp", + "src/pkg/old", +} + var cleanFiles = []string{ ".hg", ".hgtags", @@ -42,6 +56,11 @@ var cleanFiles = []string{ "VERSION.cache", } +var sourceCleanFiles = []string{ + "bin", + "pkg", +} + func main() { flag.Usage = func() { fmt.Fprintf(os.Stderr, "usage: %s [flags] targets...\n", os.Args[0]) @@ -52,14 +71,28 @@ func main() { if flag.NArg() == 0 { flag.Usage() } - readCredentials() + if runtime.GOOS == "windows" { + checkWindowsDeps() + } + + if *upload { + if err := readCredentials(); err != nil { + log.Println("readCredentials:", err) + } + } for _, targ := range flag.Args() { - p := strings.SplitN(targ, "-", 2) - if len(p) != 2 { - log.Println("Ignoring unrecognized target:", targ) - continue + var b Build + if targ == "source" { + b.Source = true + } else { + p := strings.SplitN(targ, "-", 2) + if len(p) != 2 { + log.Println("Ignoring unrecognized target:", targ) + continue + } + b.OS = p[0] + b.Arch = p[1] } - b := Build{OS: p[0], Arch: p[1]} if err := b.Do(); err != nil { log.Printf("%s: %v", targ, err) } @@ -67,9 +100,10 @@ func main() { } type Build struct { - OS string - Arch string - root string + Source bool // if true, OS and Arch must be empty + OS string + Arch string + root string } func (b *Build) Do() error { @@ -90,41 +124,80 @@ func (b *Build) Do() error { return err } - // Build. - _, err = b.run(filepath.Join(work, "go/src"), "bash", "make.bash") + // Remove exp and old packages. + if err := b.clean(preBuildCleanFiles); err != nil { + return err + } + + src := filepath.Join(b.root, "src") + if b.Source { + if runtime.GOOS == "windows" { + log.Print("Warning: running make.bash on Windows; source builds are intended to be run on a Unix machine") + } + // Build dist tool only. + _, err = b.run(src, "bash", "make.bash", "--dist-tool") + } else { + // Build. + if b.OS == "windows" { + _, err = b.run(src, "cmd", "/C", "make.bat") + } else { + _, err = b.run(src, "bash", "make.bash") + } + } if err != nil { return err } - // Get version string. - version, err := b.run("", filepath.Join(b.root, "bin/go"), "version") + // Get version strings. + var ( + version string // "weekly.2012-03-04" + fullVersion []byte // "weekly.2012-03-04 9353aa1efdf3" + ) + pat := filepath.Join(b.root, "pkg/tool/*/dist*") // trailing * for .exe + m, err := filepath.Glob(pat) if err != nil { return err } - v := bytes.SplitN(version, []byte(" "), 4) - version = bytes.Join(v[2:], []byte(" ")) + if len(m) == 0 { + return fmt.Errorf("couldn't find dist in %q", pat) + } + fullVersion, err = b.run("", m[0], "version") + if err != nil { + return err + } + fullVersion = bytes.TrimSpace(fullVersion) + v := bytes.SplitN(fullVersion, []byte(" "), 2) + version = string(v[0]) // Write VERSION file. - err = ioutil.WriteFile(filepath.Join(b.root, "VERSION"), version, 0644) + err = ioutil.WriteFile(filepath.Join(b.root, "VERSION"), fullVersion, 0644) if err != nil { return err } // Clean goroot. - for _, name := range cleanFiles { - err = os.RemoveAll(filepath.Join(b.root, name)) - if err != nil { + if err := b.clean(cleanFiles); err != nil { + return err + } + if b.Source { + if err := b.clean(sourceCleanFiles); err != nil { return err } } // Create packages. - targ := fmt.Sprintf("go.%s.%s-%s", v[2], b.OS, b.Arch) + base := fmt.Sprintf("go.%s.%s-%s", version, b.OS, b.Arch) + var targs []string switch b.OS { - case "linux", "freebsd": + case "linux", "freebsd", "": // build tarball + targ := base + if b.Source { + targ = fmt.Sprintf("go.%s.src", version) + } targ += ".tar.gz" - _, err = b.run("", "tar", "czf", targ, "-C", work, "go") + err = makeTar(targ, work) + targs = append(targs, targ) case "darwin": // arrange work so it's laid out as the dest filesystem etc := filepath.Join(b.root, "misc/dist/darwin/etc") @@ -149,7 +222,7 @@ func (b *Build) Do() error { return errors.New("couldn't find PackageMaker") } } - targ += ".pkg" + targ := base + ".pkg" scripts := filepath.Join(work, "usr/local/go/misc/dist/darwin/scripts") _, err = b.run("", pm, "-v", "-r", work, @@ -158,19 +231,88 @@ func (b *Build) Do() error { "--id", "com.googlecode.go", "--title", "Go", "--version", "1.0", - "--target", "10.5") + "--target", "10.6") + targs = append(targs, targ) + case "windows": + // Create ZIP file. + zip := filepath.Join(work, base+".zip") + err = makeZip(zip, work) + // Copy zip to target file. + targ := base + ".zip" + err = cp(targ, zip) + if err != nil { + return err + } + targs = append(targs, targ) + + // Create MSI installer. + win := filepath.Join(b.root, "misc/dist/windows") + installer := filepath.Join(win, "installer.wxs") + appfiles := filepath.Join(work, "AppFiles.wxs") + msi := filepath.Join(work, "installer.msi") + // Gather files. + _, err = b.run(work, "heat", "dir", "go", + "-nologo", + "-gg", "-g1", "-srd", "-sfrag", + "-cg", "AppFiles", + "-template", "fragment", + "-dr", "INSTALLDIR", + "-var", "var.SourceDir", + "-out", appfiles) + if err != nil { + return err + } + // Build package. + _, err = b.run(work, "candle", + "-nologo", + "-dVersion="+version, + "-dArch="+b.Arch, + "-dSourceDir=go", + installer, appfiles) + if err != nil { + return err + } + appfiles = filepath.Join(work, "AppFiles.wixobj") + installer = filepath.Join(work, "installer.wixobj") + _, err = b.run(win, "light", + "-nologo", + "-ext", "WixUIExtension", + "-ext", "WixUtilExtension", + installer, appfiles, + "-o", msi) + if err != nil { + return err + } + // Copy installer to target file. + targ = base + ".msi" + err = cp(targ, msi) + targs = append(targs, targ) } - if err == nil && password != "" { - err = b.upload(string(v[2]), targ) + if err == nil && *upload { + for _, targ := range targs { + err = b.upload(version, targ) + if err != nil { + return err + } + } } return err } func (b *Build) run(dir, name string, args ...string) ([]byte, error) { buf := new(bytes.Buffer) - cmd := exec.Command(name, args...) - cmd.Stdout = buf - cmd.Stderr = buf + absName, err := lookPath(name) + if err != nil { + return nil, err + } + cmd := exec.Command(absName, args...) + var output io.Writer = buf + if *verbose { + log.Printf("Running %q %q", absName, args) + output = io.MultiWriter(buf, os.Stdout) + } + cmd.Stdout = output + cmd.Stderr = output cmd.Dir = dir cmd.Env = b.env() if err := cmd.Run(); err != nil { @@ -199,20 +341,24 @@ func (b *Build) env() []string { } } } + final := "/usr/local/go" + if b.OS == "windows" { + final = `c:\go` + } env = append(env, "GOARCH="+b.Arch, "GOHOSTARCH="+b.Arch, "GOHOSTOS="+b.OS, "GOOS="+b.OS, "GOROOT="+b.root, - "GOROOT_FINAL=/usr/local/go", + "GOROOT_FINAL="+final, ) return env } func (b *Build) upload(version string, filename string) error { // Prepare upload metadata. - labels := []string{"Arch-" + b.Arch} + var labels []string os_, arch := b.OS, b.Arch switch b.Arch { case "386": @@ -220,6 +366,9 @@ func (b *Build) upload(version string, filename string) error { case "amd64": arch = "64-bit" } + if arch != "" { + labels = append(labels, "Arch-"+b.Arch) + } switch b.OS { case "linux": os_ = "Linux" @@ -230,8 +379,25 @@ func (b *Build) upload(version string, filename string) error { case "darwin": os_ = "Mac OS X" labels = append(labels, "Type-Installer", "OpSys-OSX") + case "windows": + os_ = "Windows" + labels = append(labels, "OpSys-Windows") } summary := fmt.Sprintf("Go %s %s (%s)", version, os_, arch) + if b.OS == "windows" { + switch { + case strings.HasSuffix(filename, ".msi"): + labels = append(labels, "Type-Installer") + summary += " MSI installer" + case strings.HasSuffix(filename, ".zip"): + labels = append(labels, "Type-Archive") + summary += " ZIP archive" + } + } + if b.Source { + labels = append(labels, "Type-Source") + summary = fmt.Sprintf("Go %s (source only)", version) + } // Open file to upload. f, err := os.Open(filename) @@ -285,20 +451,311 @@ func (b *Build) upload(version string, filename string) error { return nil } +func (b *Build) clean(files []string) error { + for _, name := range files { + err := os.RemoveAll(filepath.Join(b.root, name)) + if err != nil { + return err + } + } + return nil +} + func exists(path string) bool { _, err := os.Stat(path) return err == nil } -func readCredentials() { - name := filepath.Join(os.Getenv("HOME"), ".gobuildkey") - c, err := ioutil.ReadFile(name) +func readCredentials() error { + name := os.Getenv("HOME") + if runtime.GOOS == "windows" { + name = os.Getenv("HOMEDRIVE") + os.Getenv("HOMEPATH") + } + name = filepath.Join(name, ".gobuildkey") + f, err := os.Open(name) + if err != nil { + return err + } + defer f.Close() + r := bufio.NewReader(f) + for i := 0; i < 3; i++ { + b, _, err := r.ReadLine() + if err != nil { + return err + } + b = bytes.TrimSpace(b) + switch i { + case 1: + username = string(b) + case 2: + password = string(b) + } + } + return nil +} + +func cp(dst, src string) error { + sf, err := os.Open(src) + if err != nil { + return err + } + defer sf.Close() + df, err := os.Create(dst) + if err != nil { + return err + } + defer df.Close() + _, err = io.Copy(df, sf) + return err +} + +func makeTar(targ, workdir string) error { + f, err := os.Create(targ) + if err != nil { + return err + } + zout := gzip.NewWriter(f) + tw := tar.NewWriter(zout) + + filepath.Walk(workdir, filepath.WalkFunc(func(path string, fi os.FileInfo, err error) error { + if !strings.HasPrefix(path, workdir) { + log.Panicf("walked filename %q doesn't begin with workdir %q", path, workdir) + } + name := path[len(workdir):] + + // Chop of any leading / from filename, leftover from removing workdir. + if strings.HasPrefix(name, "/") { + name = name[1:] + } + // Don't include things outside of the go subdirectory (for instance, + // the zip file that we're currently writing here.) + if !strings.HasPrefix(name, "go/") { + return nil + } + if *verbose { + log.Printf("adding to tar: %s", name) + } + if fi.IsDir() { + return nil + } + hdr, err := tarFileInfoHeader(fi, path) + if err != nil { + return err + } + hdr.Name = name + hdr.Uname = "root" + hdr.Gname = "root" + hdr.Uid = 0 + hdr.Gid = 0 + + // Force permissions to 0755 for executables, 0644 for everything else. + if fi.Mode().Perm()&0111 != 0 { + hdr.Mode = hdr.Mode&^0777 | 0755 + } else { + hdr.Mode = hdr.Mode&^0777 | 0644 + } + + err = tw.WriteHeader(hdr) + if err != nil { + return fmt.Errorf("Error writing file %q: %v", name, err) + } + r, err := os.Open(path) + if err != nil { + return err + } + defer r.Close() + _, err = io.Copy(tw, r) + return err + })) + + if err := tw.Close(); err != nil { + return err + } + if err := zout.Close(); err != nil { + return err + } + return f.Close() +} + +func makeZip(targ, workdir string) error { + f, err := os.Create(targ) if err != nil { - log.Println("readCredentials:", err) + return err + } + zw := zip.NewWriter(f) + + filepath.Walk(workdir, filepath.WalkFunc(func(path string, fi os.FileInfo, err error) error { + if fi.IsDir() { + return nil + } + if !strings.HasPrefix(path, workdir) { + log.Panicf("walked filename %q doesn't begin with workdir %q", path, workdir) + } + name := path[len(workdir):] + + // Convert to Unix-style named paths, as that's the + // type of zip file that archive/zip creates. + name = strings.Replace(name, "\\", "/", -1) + // Chop of any leading / from filename, leftover from removing workdir. + if strings.HasPrefix(name, "/") { + name = name[1:] + } + // Don't include things outside of the go subdirectory (for instance, + // the zip file that we're currently writing here.) + if !strings.HasPrefix(name, "go/") { + return nil + } + if *verbose { + log.Printf("adding to zip: %s", name) + } + fh, err := zip.FileInfoHeader(fi) + if err != nil { + return err + } + fh.Name = name + fh.Method = zip.Deflate + w, err := zw.CreateHeader(fh) + if err != nil { + return err + } + r, err := os.Open(path) + if err != nil { + return err + } + defer r.Close() + _, err = io.Copy(w, r) + return err + })) + + if err := zw.Close(); err != nil { + return err + } + return f.Close() +} + +type tool struct { + name string + commonDirs []string +} + +var wixTool = tool{ + "http://wix.sourceforge.net/, version 3.5", + []string{`C:\Program Files\Windows Installer XML v3.5\bin`, + `C:\Program Files (x86)\Windows Installer XML v3.5\bin`}, +} + +var hgTool = tool{ + "http://mercurial.selenic.com/wiki/WindowsInstall", + []string{`C:\Program Files\Mercurial`, + `C:\Program Files (x86)\Mercurial`, + }, +} + +var gccTool = tool{ + "Mingw gcc; http://sourceforge.net/projects/mingw/files/Installer/mingw-get-inst/", + []string{`C:\Mingw\bin`}, +} + +var windowsDeps = map[string]tool{ + "gcc": gccTool, + "heat": wixTool, + "candle": wixTool, + "light": wixTool, + "cmd": {"Windows cmd.exe", nil}, + "hg": hgTool, +} + +func checkWindowsDeps() { + for prog, help := range windowsDeps { + absPath, err := lookPath(prog) + if err != nil { + log.Fatalf("Failed to find necessary binary %q in path or common locations; %s", prog, help) + } + if *verbose { + log.Printf("found windows dep %s at %s", prog, absPath) + } + } +} + +func lookPath(prog string) (absPath string, err error) { + absPath, err = exec.LookPath(prog) + if err == nil { + return + } + t, ok := windowsDeps[prog] + if !ok { return } - v := bytes.Split(c, []byte("\n")) - if len(v) >= 3 { - username, password = string(v[1]), string(v[2]) + for _, dir := range t.commonDirs { + for _, ext := range []string{"exe", "bat"} { + absPath = filepath.Join(dir, prog+"."+ext) + if _, err1 := os.Stat(absPath); err1 == nil { + err = nil + os.Setenv("PATH", os.Getenv("PATH")+";"+dir) + return + } + } + } + return +} + +// sysStat, if non-nil, populates h from system-dependent fields of fi. +var sysStat func(fi os.FileInfo, h *tar.Header) error + +// Mode constants from the tar spec. +const ( + c_ISDIR = 040000 + c_ISFIFO = 010000 + c_ISREG = 0100000 + c_ISLNK = 0120000 + c_ISBLK = 060000 + c_ISCHR = 020000 + c_ISSOCK = 0140000 +) + +// tarFileInfoHeader creates a partially-populated Header from an os.FileInfo. +// The filename parameter is used only in the case of symlinks, to call os.Readlink. +// If fi is a symlink but filename is empty, an error is returned. +func tarFileInfoHeader(fi os.FileInfo, filename string) (*tar.Header, error) { + h := &tar.Header{ + Name: fi.Name(), + ModTime: fi.ModTime(), + Mode: int64(fi.Mode().Perm()), // or'd with c_IS* constants later + } + switch { + case fi.Mode()&os.ModeType == 0: + h.Mode |= c_ISREG + h.Typeflag = tar.TypeReg + h.Size = fi.Size() + case fi.IsDir(): + h.Typeflag = tar.TypeDir + h.Mode |= c_ISDIR + case fi.Mode()&os.ModeSymlink != 0: + h.Typeflag = tar.TypeSymlink + h.Mode |= c_ISLNK + if filename == "" { + return h, fmt.Errorf("archive/tar: unable to populate Header.Linkname of symlinks") + } + targ, err := os.Readlink(filename) + if err != nil { + return h, err + } + h.Linkname = targ + case fi.Mode()&os.ModeDevice != 0: + if fi.Mode()&os.ModeCharDevice != 0 { + h.Mode |= c_ISCHR + h.Typeflag = tar.TypeChar + } else { + h.Mode |= c_ISBLK + h.Typeflag = tar.TypeBlock + } + case fi.Mode()&os.ModeSocket != 0: + h.Mode |= c_ISSOCK + default: + return nil, fmt.Errorf("archive/tar: unknown file mode %v", fi.Mode()) + } + if sysStat != nil { + return h, sysStat(fi, h) } + return h, nil } diff --git a/misc/dist/stat_darwin.go b/misc/dist/stat_darwin.go new file mode 100644 index 000000000..eb3f76a27 --- /dev/null +++ b/misc/dist/stat_darwin.go @@ -0,0 +1,32 @@ +// Copyright 2012 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. + +// +build darwin + +package main + +import ( + "archive/tar" + "os" + "syscall" + "time" +) + +func init() { + sysStat = func(fi os.FileInfo, h *tar.Header) error { + sys, ok := fi.Sys().(*syscall.Stat_t) + if !ok { + return nil + } + h.Uid = int(sys.Uid) + h.Gid = int(sys.Gid) + // TODO(bradfitz): populate username & group. os/user + // doesn't cache LookupId lookups, and lacks group + // lookup functions. + h.AccessTime = time.Unix(sys.Atimespec.Unix()) + h.ChangeTime = time.Unix(sys.Ctimespec.Unix()) + // TODO(bradfitz): major/minor device numbers? + return nil + } +} diff --git a/misc/dist/stat_linux.go b/misc/dist/stat_linux.go new file mode 100644 index 000000000..0ddb8a3bf --- /dev/null +++ b/misc/dist/stat_linux.go @@ -0,0 +1,32 @@ +// Copyright 2012 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. + +// +build linux + +package main + +import ( + "archive/tar" + "os" + "syscall" + "time" +) + +func init() { + sysStat = func(fi os.FileInfo, h *tar.Header) error { + sys, ok := fi.Sys().(*syscall.Stat_t) + if !ok { + return nil + } + h.Uid = int(sys.Uid) + h.Gid = int(sys.Gid) + // TODO(bradfitz): populate username & group. os/user + // doesn't cache LookupId lookups, and lacks group + // lookup functions. + h.AccessTime = time.Unix(sys.Atim.Unix()) + h.ChangeTime = time.Unix(sys.Ctim.Unix()) + // TODO(bradfitz): major/minor device numbers? + return nil + } +} diff --git a/misc/dist/windows/README.txt b/misc/dist/windows/README.txt index b2f00d427..0cf828b24 100644 --- a/misc/dist/windows/README.txt +++ b/misc/dist/windows/README.txt @@ -1,34 +1,25 @@ -dist.bat packages the Go toolchain for Windows in both zip
-and installer (msi) format.
-
-Dependencies
-============
-- Windows Installer XML (WiX) toolset: http://wix.sourceforge.net/
-- 7Zip (command line version): http://www.7-zip.org/download.html
-- Mercurial (hg): http://mercurial.selenic.com/
-
-
-Packaging
-=========
-The dependencies must be callable from dist.bat, therefore,
-they'll need to be in/added to the system's search PATH.
-
-The packaging needs to be done from within a tracked Go folder.
-Packages are built by cloning the same version of the source tree
-that the Go tools were built from.
-
-Run dist.bat from a command prompt or click on the batch file.
-
-TODO
----- -- Write a Go program for dist.bat functionality
-- Documentation server shortcut checkbox option
-
-Misc
-----
-WiX box sizes:
- - banner size: 493x58
- - left side of dialog: 164x312
- - full dialog size: 493x312
-
-
+ +Windows build dependencies + +- Mercurial (hg): http://mercurial.selenic.com/ +- MinGW: http://www.mingw.org/ +- Windows Installer XML (WiX) toolset: http://wix.sourceforge.net/ + +Packaging + +The dependencies must be in/added to the system's search PATH. + +Run bindist as normal, eg: + bindist windows-386 + +TODO + +- Documentation server shortcut checkbox option + +Misc + +WiX box sizes: + - banner size: 493x58 + - left side of dialog: 164x312 + - full dialog size: 493x312 + diff --git a/misc/dist/windows/dist.bat b/misc/dist/windows/dist.bat deleted file mode 100644 index 4ae2df58a..000000000 --- a/misc/dist/windows/dist.bat +++ /dev/null @@ -1,61 +0,0 @@ -:: Copyright 2012 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.
-@echo off
-
-setlocal
-
-:: Requires Windows Installer XML (WiX), 7zip, and Mercurial (hg)
-
-echo # Cleaning previous WiX output files
-del /F /Q /S *.wixobj AppFiles.wxs *.wixpdb>NUL
-
-echo # Setting some variables
-for /f %%i in ('hg.exe root') do set ROOT=%%i
-for /f "tokens=3" %%i in ('%ROOT%\bin\go.exe version') do set VER=%%i
-for /f "tokens=4" %%i in ('%ROOT%\bin\go.exe version') do set ID=%%i
-set ID=%ID:+=%
-if errorlevel 1 goto end
-
-echo # Getting GOARCH
-%ROOT%\bin\go tool dist env -w>env.bat
-call env.bat
-del /F /Q /S env.bat>NUL
-if errorlevel 1 goto end
-
-
-rmdir /S /Q go>NUL
-mkdir go
-
-echo # Cloning the Go tree
-hg clone -r %ID% %ROOT% go
-if errorlevel 1 goto end
-
-rmdir /S /Q go\.hg>NUL
-del /F /Q /S go\.hgignore go\.hgtags>NUL
-
-echo # Copying pkg, bin, and src/pkg/runtime/z*
-xcopy %ROOT%\pkg go\pkg /V /E /Y /I
-xcopy %ROOT%\bin go\bin /V /E /Y /I
-xcopy %ROOT%\src\pkg\runtime\z*.c go\src\pkg\runtime /V /E /Y
-xcopy %ROOT%\src\pkg\runtime\z*.go go\src\pkg\runtime /V /E /Y
-xcopy %ROOT%\src\pkg\runtime\z*.h go\src\pkg\runtime /V /E /Y
-
-echo # Starting zip packaging
-7za a -tzip -mx=9 go.%VER%.windows-%GOARCH%.zip "go/"
-if errorlevel 1 goto end
-
-
-echo # Starting Go directory file harvesting
-heat dir go -nologo -cg AppFiles -gg -g1 -srd -sfrag -template fragment -dr INSTALLDIR -var var.SourceDir -out AppFiles.wxs
-if errorlevel 1 goto end
-
-echo # Starting installer packaging
-candle -nologo -dVersion=%VER% -dArch=%GOARCH% -dSourceDir=go installer.wxs AppFiles.wxs
-light -nologo -ext WixUIExtension -ext WixUtilExtension installer.wixobj AppFiles.wixobj -o go.%VER%.windows-%GOARCH%.msi
-if errorlevel 1 goto end
-
-del /F /Q /S *.wixobj AppFiles.wxs *.wixpdb>NUL
-
-:end
-endlocal
diff --git a/misc/dist/windows/images/gopher.ico b/misc/dist/windows/images/gopher.ico Binary files differindex 39a6c47c4..2e861ebe0 100644 --- a/misc/dist/windows/images/gopher.ico +++ b/misc/dist/windows/images/gopher.ico diff --git a/misc/dist/windows/installer.wxs b/misc/dist/windows/installer.wxs index faece29b0..20f261f9d 100644 --- a/misc/dist/windows/installer.wxs +++ b/misc/dist/windows/installer.wxs @@ -7,11 +7,15 @@ -->
<?if $(var.Arch) = 386 ?>
- <?define SYSFOLDER=SystemFolder ?>
- <?define Win64=no ?>
+ <?define ProdId = {FF5B30B2-08C2-11E1-85A2-6ACA4824019B} ?>
+ <?define UpgradeCode = {1C3114EA-08C3-11E1-9095-7FCA4824019B} ?>
+ <?define SysFolder=SystemFolder ?>
+ <?define IsX64Target = no ?>
<?else?>
- <?define SYSFOLDER=System64Folder ?>
- <?define Win64=yes ?>
+ <?define ProdId = {716c3eaa-9302-48d2-8e5e-5cfec5da2fab} ?>
+ <?define UpgradeCode = {22ea7650-4ac6-4001-bf29-f4b8775db1c0} ?>
+ <?define SysFolder=System64Folder ?>
+ <?define IsX64Target = yes ?>
<?endif?>
<Product
@@ -21,7 +25,7 @@ Codepage="1252"
Version="0.0.0.0"
Manufacturer="http://golang.org"
- UpgradeCode="1C3114EA-08C3-11E1-9095-7FCA4824019B" >
+ UpgradeCode="$(var.UpgradeCode)" >
<!-- Version="$(var.Version)" TODO: Version requires X.X.X.X format -->
<Package
@@ -41,12 +45,12 @@ <Property Id="ARPHELPLINK" Value="golang.org/doc/community.html" />
<Property Id="ARPREADME" Value="golang.org" />
<Property Id="ARPURLINFOABOUT" Value="golang.org" />
+<Property Id="LicenseAccepted">1</Property>
<Icon Id="gopher.ico" SourceFile="images\gopher.ico"/>
<Property Id="ARPPRODUCTICON" Value="gopher.ico" />
<Media Id='1' Cabinet="go.cab" EmbedCab="yes" CompressionLevel="high" />
<Condition Message="Windows 2000 or greater required."> VersionNT >= 500</Condition>
<MajorUpgrade AllowDowngrades="yes" />
-<SetDirectory Id="INSTALLDIRROOT" Value="C:\"/>
<CustomAction
Id="SetApplicationRootDirectory"
@@ -64,34 +68,24 @@ <Directory Id="EnvironmentEntries">
<Directory Id="GoEnvironmentEntries" Name="Go Programming Language"/>
</Directory>
- <Directory Id="DesktopFolder" Name="Desktop"/>
</Directory>
-<!-- Programs Menu & Desktop Shortcuts -->
+<!-- Programs Menu Shortcuts -->
<DirectoryRef Id="GoProgramShortcutsDir">
- <Component Id="Component_GoShortCuts" Guid="f5fbfb5e-6c5c-423b-9298-21b0e3c98f4b">
+ <Component Id="Component_GoProgramShortCuts" Guid="{f5fbfb5e-6c5c-423b-9298-21b0e3c98f4b}" Win64="$(var.IsX64Target)">
<Shortcut
Id="GoDocServerStartMenuShortcut"
Name="GoDocServer"
Description="Starts the Go documentation server (http://localhost:6060)"
Show="minimized"
- Arguments='/c "start /d[INSTALLDIR]bin godoc.exe -http=:6060 && start http://localhost:6060"'
+ Arguments='/c start "Godoc Server http://localhost:6060" "[INSTALLDIR]bin\godoc.exe" -http=localhost:6060 -goroot="[INSTALLDIR]." && start http://localhost:6060'
Icon="gopher.ico"
Target="[%ComSpec]" />
<Shortcut
- Id="GoDocServerDesktopShortcut"
- Directory="DesktopFolder"
- Name="GoDocServer"
- Description="Starts the godoc server (http://localhost:6060)"
- Show="minimized"
- Icon="gopher.ico"
- Arguments='/c "start /d[INSTALLDIR]bin godoc.exe -http=:6060 && start http://localhost:6060"'
- Target="[%ComSpec]" />
- <Shortcut
Id="UninstallShortcut"
Name="Uninstall Go"
Description="Uninstalls Go and all of its components"
- Target="[$(var.SYSFOLDER)]msiexec.exe"
+ Target="[$(var.SysFolder)]msiexec.exe"
Arguments="/x [ProductCode]" />
<RemoveFolder
Id="GoProgramShortcutsDir"
@@ -108,7 +102,7 @@ <!-- Registry & Environment Settings -->
<DirectoryRef Id="GoEnvironmentEntries">
- <Component Id="Component_GoEnvironment" Guid="3ec7a4d5-eb08-4de7-9312-2df392c45993">
+ <Component Id="Component_GoEnvironment" Guid="{3ec7a4d5-eb08-4de7-9312-2df392c45993}" Win64="$(var.IsX64Target)">
<RegistryKey
Root="HKCU"
Key="Software\GoProgrammingLanguage"
@@ -124,21 +118,27 @@ Value="[INSTALLDIR]" />
</RegistryKey>
<Environment
- Id="Environment"
+ Id="GoPathEntry"
Action="set"
Part="last"
Name="PATH"
Permanent="no"
System="yes"
Value="[INSTALLDIR]bin" />
+ <Environment
+ Id="GoRoot"
+ Action="set"
+ Part="all"
+ Name="GOROOT"
+ Permanent="no"
+ System="yes"
+ Value="[INSTALLDIR]" />
<RemoveFolder
Id="GoEnvironmentEntries"
On="uninstall" />
</Component>
</DirectoryRef>
-<!-- Components -->
-
<!-- Install the files -->
<Feature
Id="GoTools"
@@ -146,7 +146,7 @@ Level="1">
<ComponentRef Id="Component_GoEnvironment" />
<ComponentGroupRef Id="AppFiles" />
- <ComponentRef Id="Component_GoShortCuts" />
+ <ComponentRef Id="Component_GoProgramShortCuts" />
</Feature>
<!-- Update the environment -->
diff --git a/misc/emacs/go-mode.el b/misc/emacs/go-mode.el index 7fe0934ff..1af38e3d0 100644 --- a/misc/emacs/go-mode.el +++ b/misc/emacs/go-mode.el @@ -406,6 +406,22 @@ token on the line." (when (/= (skip-chars-backward "[:word:]_") 0) (not (looking-at go-mode-non-terminating-keywords-regexp))))))) +(defun go-mode-backward-skip-comments () + "Skip backward over comments and whitespace." + (when (not (bobp)) + (backward-char)) + (while (and (not (bobp)) + (or (eq 32 (char-syntax (char-after (point)))) + (go-mode-cs))) + (skip-syntax-backward "-") + (when (and (not (bobp)) (eq 32 (char-syntax (char-after (point))))) + (backward-char)) + (when (go-mode-cs) + (let ((pos (previous-single-property-change (point) 'go-mode-cs))) + (if pos (goto-char pos) (goto-char (point-min)))))) + (when (and (not (go-mode-cs)) (eq 32 (char-syntax (char-after (1+ (point)))))) + (forward-char 1))) + (defun go-mode-indentation () "Compute the ideal indentation level of the current line. @@ -451,7 +467,8 @@ indented one level." (incf indent tab-width)) ((?\() (goto-char (car nest)) - (forward-comment (- (buffer-size))) + (beginning-of-line) + (go-mode-backward-skip-comments) ;; Really just want the token before (when (looking-back "\\<import\\|const\\|var\\|type" (max (- (point) 7) (point-min))) @@ -465,7 +482,8 @@ indented one level." (decf indent tab-width)) ;; Continuation lines are indented 1 level - (forward-comment (- (buffer-size))) + (beginning-of-line) + (go-mode-backward-skip-comments) (when (case (char-before) ((nil ?\{ ?:) ;; At the beginning of a block or the statement diff --git a/misc/vim/ftdetect/gofiletype.vim b/misc/vim/ftdetect/gofiletype.vim index 096d05244..b658f6b0e 100644 --- a/misc/vim/ftdetect/gofiletype.vim +++ b/misc/vim/ftdetect/gofiletype.vim @@ -1 +1,23 @@ -au BufRead,BufNewFile *.go set filetype=go fileencoding=utf-8 fileencodings=utf-8 +" We take care to preserve the user's fileencodings and fileformats, +" because those settings are global (not buffer local), yet we want +" to override them for loading Go files, which are defined to be UTF-8. +let s:current_fileformats = '' +let s:current_fileencodings = '' + +" define fileencodings to open as utf-8 encoding even if it's ascii. +function! s:gofiletype_pre() + let s:current_fileformats = &g:fileformats + let s:current_fileencodings = &g:fileencodings + set fileencodings=utf-8 fileformats=unix + setlocal filetype=go +endfunction + +" restore fileencodings as others +function! s:gofiletype_post() + let &g:fileformats = s:current_fileformats + let &g:fileencodings = s:current_fileencodings +endfunction + +au BufNewFile *.go setlocal filetype=go fileencoding=utf-8 fileformat=unix +au BufRead *.go call s:gofiletype_pre() +au BufReadPost *.go call s:gofiletype_post() diff --git a/misc/xcode/3/README b/misc/xcode/3/README index c4cb915dc..69f371c2c 100644 --- a/misc/xcode/3/README +++ b/misc/xcode/3/README @@ -1,3 +1,3 @@ This directory contains files for Go syntax highlighting in Xcode 3.x. -See the comments go.pbfilespec and go.xclangspec for installation +See the comments in go.pbfilespec and go.xclangspec for installation instructions. diff --git a/misc/xcode/4/README b/misc/xcode/4/README new file mode 100644 index 000000000..09576d6d5 --- /dev/null +++ b/misc/xcode/4/README @@ -0,0 +1,2 @@ +This directory contains files for Go syntax highlighting in Xcode 4.x. +For installation, read, edit, and run go4xcode.sh .
\ No newline at end of file diff --git a/misc/xcode/4/go.xclangspec b/misc/xcode/4/go.xclangspec new file mode 100644 index 000000000..96edc8000 --- /dev/null +++ b/misc/xcode/4/go.xclangspec @@ -0,0 +1,290 @@ +/* + Copyright 2012 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.xclangspec + Go language specification for Xcode 4.x. + + This is a preliminary version that supports basic syntax coloring + (such as keywords, literals, and comments) and an attempt to provide + some structure information (incomplete). + + There is not much documentation available regarding the format + of .xclangspec files. As a starting point, see for instance the + outdated documentation at: + + http://maxao.free.fr/xcode-plugin-interface/specifications.html + +*/ + +( + +// ---------------------------------------------------------------------------- +// Keywords + +// TODO How do we get general Unicode identifiers? + + { + Identifier = "xcode.lang.go.identifier"; + Syntax = { + StartChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_"; + Chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_"; + Words = ( + "break", + "case", + "chan", + "const", + "continue", + + "default", + "defer", + "else", + "fallthrough", + "for", + + "func", + "go", + "goto", + "if", + "import", + + "interface", + "map", + "package", + "range", + "return", + + "select", + "struct", + "switch", + "type", + "var", + ); + Type = "xcode.syntax.keyword"; + AltType = "xcode.syntax.identifier"; // non-keywords are identifiers + }; + }, + +// TODO decide what should go here, if anything + { + Identifier = "xcode.lang.go.interestingOperators"; + Syntax = { + Words = ( + "...", + ".", + "*", + ",", + ":", + ); + Type = "xcode.syntax.plain"; + }; + }, + + { + Identifier = "xcode.lang.go.rawstring"; + Syntax = { + Start = "`"; + End = "`"; + Type = "xcode.syntax.string"; + }; + }, + +// ---------------------------------------------------------------------------- +// Syntax Coloring + + { + Identifier = "xcode.lang.go"; + Description = "Go Coloring"; + BasedOn = "xcode.lang.simpleColoring"; + IncludeInMenu = YES; + Name = "Go"; + Syntax = { + Tokenizer = "xcode.lang.go.lexer.toplevel"; + IncludeRules = ( + "xcode.lang.go.block", + "xcode.lang.go.bracketexpr", + "xcode.lang.go.parenexpr", + ); + Type = "xcode.syntax.plain"; + }; + }, + + // The following rule returns tokens to the other rules + { + Identifier = "xcode.lang.go.lexer"; + Syntax = { + IncludeRules = ( + "xcode.lang.go.comment", + "xcode.lang.go.comment.singleline", + "xcode.lang.string", + "xcode.lang.character", + "xcode.lang.go.rawstring", + "xcode.lang.go.identifier", + "xcode.lang.number", + "xcode.lang.go.interestingOperators", + ); + }; + }, + + { + Identifier = "xcode.lang.go.lexer.toplevel"; + Syntax = { + IncludeRules = ( + "xcode.lang.go.comment", + "xcode.lang.go.comment.singleline", + "xcode.lang.string", + "xcode.lang.character", + "xcode.lang.go.rawstring", + "xcode.lang.go.type.declaration", + "xcode.lang.go.method.declaration", + "xcode.lang.go.function.declaration", + "xcode.lang.go.identifier", + "xcode.lang.number", + ); + }; + }, + + { + Identifier = "xcode.lang.go.method.declaration"; + Syntax = { + Tokenizer = "xcode.lang.go.lexer"; + Rules = ( + "func", + "xcode.lang.go.parenexpr", + "xcode.lang.go.identifier", + "xcode.lang.go.parenexpr", + ); + Type = "xcode.syntax.declaration.method"; + }; + }, + + { + Identifier = "xcode.lang.go.type.declaration"; + Syntax = { + Tokenizer = "xcode.lang.go.lexer"; + Rules = ( + "type", + "xcode.lang.go.identifier", + ); + Type = "xcode.syntax.typedef"; + }; + }, + + { + Identifier = "xcode.lang.go.function.declaration"; + Syntax = { + Tokenizer = "xcode.lang.go.lexer"; + Rules = ( + "func", + "xcode.lang.go.identifier", + "xcode.lang.go.parenexpr", + ); + Type = "xcode.syntax.declaration.function"; + }; + }, + +// ---------------------------------------------------------------------------- +// Blocks + + { + Identifier = "xcode.lang.go.block"; + Syntax = { + Tokenizer = "xcode.lang.go.lexer"; + Start = "{"; + End = "}"; + Foldable = YES; + Recursive = YES; + IncludeRules = ( + "xcode.lang.go.bracketexpr", + "xcode.lang.go.parenexpr", + ); + }; + }, + + { + Identifier = "xcode.lang.go.parenexpr"; + Syntax = { + Tokenizer = "xcode.lang.go.lexer"; + Start = "("; + End = ")"; + Recursive = YES; + IncludeRules = ( + "xcode.lang.go.bracketexpr", + "xcode.lang.go.block", + ); + }; + }, + + { + Identifier = "xcode.lang.go.bracketexpr"; + Syntax = { + Tokenizer = "xcode.lang.go.lexer"; + Start = "["; + End = "]"; + Recursive = YES; + IncludeRules = ( + "xcode.lang.go.parenexpr", + ); + }; + }, + + { + Identifier = "xcode.lang.go.comment"; + Syntax = { + Start = "/*"; + End = "*/"; + Foldable = YES; + IncludeRules = ( + "xcode.lang.url", + "xcode.lang.url.mail", + "xcode.lang.comment.mark", + ); + Type = "xcode.syntax.comment"; + }; + }, + + { + Identifier = "xcode.lang.go.comment.singleline"; + Syntax = { + Start = "//"; + End = "\n"; + IncludeRules = ( + "xcode.lang.url", + "xcode.lang.url.mail", + "xcode.lang.comment.mark", + ); + Type = "xcode.syntax.comment"; + }; + }, + + // This rule recognizes special comments markers and adds them + // to the list of file markers at the top of the editor window. + // This overrides the markers specified in + // /Developer/Library/PrivateFrameworks/XcodeEdit.framework/Versions/A/Resources/BaseSupport.xclangspec + // and appears to apply them to all languages. Thus, for now + // "inherit" the existing markers here for backward-compatibility. + { + Identifier = "xcode.lang.comment.mark"; + Syntax = { + StartChars = "BMTF!?"; + Match = ( + // Go-specific markers + "^\(BUG.*$\)$", // include "BUG" in the markers list + "^\(TODO.*$\)$", // include "TODO" in the markers list + // inherited markers + "^MARK:[ \t]+\(.*\)$", + "^\(TODO:[ \t]+.*\)$", // include "TODO: " in the markers list + "^\(FIXME:[ \t]+.*\)$", // include "FIXME: " in the markers list + "^\(!!!:.*\)$", // include "!!!:" in the markers list + "^\(\\?\\?\\?:.*\)$" // include "???:" in the markers list + ); + // This is the order of captures. All of the match strings above need the same order. + CaptureTypes = ( + "xcode.syntax.mark" + ); + Type = "xcode.syntax.comment"; + }; + }, + +) diff --git a/misc/xcode/4/go4xcode.sh b/misc/xcode/4/go4xcode.sh new file mode 100755 index 000000000..fbdd0cfed --- /dev/null +++ b/misc/xcode/4/go4xcode.sh @@ -0,0 +1,100 @@ +#!/usr/bin/env bash +# Copyright 2012 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. + +# Illustrates how a Go language specification can be installed for Xcode 4.x., +# to enable syntax coloring, by adding an entry to a plugindata file. +# +# FIXME: Write a decent Xcode plugin to handle the file type association and +# language specification properly instead of altering Xcode library files. + +set -e + +# Assumes Xcode 4+. +XCODE_MAJOR_VERSION=`xcodebuild -version | awk 'NR == 1 {print substr($2,1,1)}'` +if [ "$XCODE_MAJOR_VERSION" -lt "4" ]; then + echo "Xcode 4.x not found." + exit 1 +fi + +# DVTFOUNDATION_DIR may vary depending on Xcode setup. Change it to reflect +# your current Xcode setup. Find suitable path with e.g.: +# +# find / -type f -name 'DVTFoundation.xcplugindata' 2> /dev/null +# +# Example of DVTFOUNDATION_DIR's from "default" Xcode 4.x setups; +# +# Xcode 4.1: /Developer/Library/PrivateFrameworks/DVTFoundation.framework/Versions/A/Resources/ +# Xcode 4.3: /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/ +# +DVTFOUNDATION_DIR="/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/" +PLUGINDATA_FILE="DVTFoundation.xcplugindata" + +PLISTBUDDY=/usr/libexec/PlistBuddy +PLIST_FILE=tmp.plist + +# Provide means of deleting the Go entry from the plugindata file. +if [ "$1" = "--delete-entry" ]; then + echo "Removing Go language specification entry." + $PLISTBUDDY -c "Delete :plug-in:extensions:Xcode.SourceCodeLanguage.Go" $DVTFOUNDATION_DIR/$PLUGINDATA_FILE + echo "Run 'sudo rm -rf /var/folders/*' and restart Xcode to update change immediately." + exit 0 +fi + +GO_VERSION="`go version`" + +GO_LANG_ENTRY=" + <?xml version=\"1.0\" encoding=\"UTF-8\"?> + <!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\"> + <plist version=\"1.0\"> + <dict> + <key>Xcode.SourceCodeLanguage.Go</key> + <dict> + <key>conformsTo</key> + <array> + <dict> + <key>identifier</key> + <string>Xcode.SourceCodeLanguage.Generic</string> + </dict> + </array> + <key>documentationAbbreviation</key> + <string>go</string> + <key>fileDataType</key> + <array> + <dict> + <key>identifier</key> + <string>com.apple.xcode.go-source</string> + </dict> + </array> + <key>id</key> + <string>Xcode.SourceCodeLanguage.Go</string> + <key>languageName</key> + <string>Go</string> + <key>languageSpecification</key> + <string>xcode.lang.go</string> + <key>name</key> + <string>The Go Programming Language</string> + <key>point</key> + <string>Xcode.SourceCodeLanguage</string> + <key>version</key> + <string>$GO_VERSION</string> + </dict> + </dict> + </plist> +" + +echo "Backing up plugindata file." +cp $DVTFOUNDATION_DIR/$PLUGINDATA_FILE $DVTFOUNDATION_DIR/$PLUGINDATA_FILE.bak + +echo "Adding Go language specification entry." +echo $GO_LANG_ENTRY > $PLIST_FILE +$PLISTBUDDY -c "Merge $PLIST_FILE plug-in:extensions" $DVTFOUNDATION_DIR/$PLUGINDATA_FILE + +rm -f $PLIST_FILE + +echo "Installing Go language specification file for Xcode." +cp $GOROOT/misc/xcode/4/go.xclangspec $DVTFOUNDATION_DIR + +echo "Run 'sudo rm -rf /var/folders/*' and restart Xcode to update change immediately." +echo "Syntax coloring must be manually selected from the Editor - Syntax Coloring menu in Xcode." diff --git a/src/cmd/5l/noop.c b/src/cmd/5l/noop.c index eb44344f4..004f9f2fa 100644 --- a/src/cmd/5l/noop.c +++ b/src/cmd/5l/noop.c @@ -226,8 +226,7 @@ noops(void) p->as = AMOVW; p->scond = C_SCOND_LO; p->from.type = D_CONST; - /* 160 comes from 3 calls (3*8) 4 safes (4*8) and 104 guard */ - p->from.offset = autosize+160; + p->from.offset = autosize; p->to.type = D_REG; p->to.reg = 1; diff --git a/src/cmd/6l/pass.c b/src/cmd/6l/pass.c index 2357a7f77..c9b477627 100644 --- a/src/cmd/6l/pass.c +++ b/src/cmd/6l/pass.c @@ -501,10 +501,17 @@ dostkoff(void) q = p; } - /* 160 comes from 3 calls (3*8) 4 safes (4*8) and 104 guard */ + // If we ask for more stack, we'll get a minimum of StackMin bytes. + // We need a stack frame large enough to hold the top-of-stack data, + // the function arguments+results, our caller's PC, our frame, + // a word for the return PC of the next call, and then the StackLimit bytes + // that must be available on entry to any function called from a function + // that did a stack check. If StackMin is enough, don't ask for a specific + // amount: then we can use the custom functions and save a few + // instructions. moreconst1 = 0; - if(autoffset+160+textarg > 4096) - moreconst1 = (autoffset+160) & ~7LL; + if(StackTop + textarg + PtrSize + autoffset + PtrSize + StackLimit >= StackMin) + moreconst1 = autoffset; moreconst2 = textarg; // 4 varieties varieties (const1==0 cross const2==0) diff --git a/src/cmd/8l/pass.c b/src/cmd/8l/pass.c index b900a5f79..9034fdf3a 100644 --- a/src/cmd/8l/pass.c +++ b/src/cmd/8l/pass.c @@ -527,10 +527,18 @@ dostkoff(void) p = appendp(p); // save frame size in DX p->as = AMOVL; p->to.type = D_DX; - /* 160 comes from 3 calls (3*8) 4 safes (4*8) and 104 guard */ p->from.type = D_CONST; - if(autoffset+160+cursym->text->to.offset2 > 4096) - p->from.offset = (autoffset+160) & ~7LL; + + // If we ask for more stack, we'll get a minimum of StackMin bytes. + // We need a stack frame large enough to hold the top-of-stack data, + // the function arguments+results, our caller's PC, our frame, + // a word for the return PC of the next call, and then the StackLimit bytes + // that must be available on entry to any function called from a function + // that did a stack check. If StackMin is enough, don't ask for a specific + // amount: then we can use the custom functions and save a few + // instructions. + if(StackTop + cursym->text->to.offset2 + PtrSize + autoffset + PtrSize + StackLimit >= StackMin) + p->from.offset = (autoffset+7) & ~7LL; p = appendp(p); // save arg size in AX p->as = AMOVL; diff --git a/src/cmd/api/goapi.go b/src/cmd/api/goapi.go index fe9c862f4..7363f6d82 100644 --- a/src/cmd/api/goapi.go +++ b/src/cmd/api/goapi.go @@ -52,6 +52,12 @@ var contexts = []*build.Context{ {GOOS: "windows", GOARCH: "386"}, } +func init() { + for _, c := range contexts { + c.Compiler = build.Default.Compiler + } +} + func contextName(c *build.Context) string { s := c.GOOS + "-" + c.GOARCH if c.CgoEnabled { @@ -125,7 +131,7 @@ func main() { if err != nil { log.Fatalf("Error reading file %s: %v", *checkFile, err) } - v1 := strings.Split(string(bs), "\n") + v1 := strings.Split(strings.TrimSpace(string(bs)), "\n") sort.Strings(v1) v2 := features take := func(sl *[]string) string { @@ -133,17 +139,24 @@ func main() { *sl = (*sl)[1:] return s } + changes := false for len(v1) > 0 || len(v2) > 0 { switch { case len(v2) == 0 || v1[0] < v2[0]: fmt.Fprintf(bw, "-%s\n", take(&v1)) + changes = true case len(v1) == 0 || v1[0] > v2[0]: fmt.Fprintf(bw, "+%s\n", take(&v2)) + changes = true default: take(&v1) take(&v2) } } + if changes { + bw.Flush() + os.Exit(1) + } } else { for _, f := range features { fmt.Fprintf(bw, "%s\n", f) @@ -278,7 +291,9 @@ func (w *Walker) WalkPackage(name string) { } } - log.Printf("package %s", name) + if *verbose { + log.Printf("package %s", name) + } pop := w.pushScope("pkg " + name) defer pop() @@ -573,7 +588,14 @@ func (w *Walker) varValueType(vi interface{}) (string, error) { } } // maybe a function call; maybe a conversion. Need to lookup type. - return "", fmt.Errorf("not a known function %q", w.nodeString(v.Fun)) + // TODO(bradfitz): this is a hack, but arguably most of this tool is, + // until the Go AST has type information. + nodeStr := w.nodeString(v.Fun) + switch nodeStr { + case "string", "[]byte": + return nodeStr, nil + } + return "", fmt.Errorf("not a known function %q", nodeStr) default: return "", fmt.Errorf("unknown const value type %T", vi) } diff --git a/src/cmd/api/testdata/src/pkg/p1/golden.txt b/src/cmd/api/testdata/src/pkg/p1/golden.txt index 3a1b3f535..e334e5776 100644 --- a/src/cmd/api/testdata/src/pkg/p1/golden.txt +++ b/src/cmd/api/testdata/src/pkg/p1/golden.txt @@ -58,14 +58,16 @@ pkg p1, type T struct pkg p1, type TPtrExported struct pkg p1, type TPtrExported struct, embedded *Embedded pkg p1, type TPtrUnexported struct +pkg p1, var ByteConv []byte pkg p1, var ChecksumError error pkg p1, var SIPtr *SI pkg p1, var SIPtr2 *SI pkg p1, var SIVal SI +pkg p1, var StrConv string pkg p1, var V string -pkg p1, var VError Error pkg p1, var V1 uint64 pkg p1, var V2 p2.Twoer +pkg p1, var VError Error pkg p1, var X I pkg p1, var X int64 pkg p1, var Y int diff --git a/src/cmd/api/testdata/src/pkg/p1/p1.go b/src/cmd/api/testdata/src/pkg/p1/p1.go index 9d2afa913..d965bb75e 100644 --- a/src/cmd/api/testdata/src/pkg/p1/p1.go +++ b/src/cmd/api/testdata/src/pkg/p1/p1.go @@ -27,6 +27,12 @@ var ( V2 = ptwo.G() ) +// Variables with conversions: +var ( + StrConv = string("foo") + ByteConv = []byte("foo") +) + var ChecksumError = ptwo.NewError("gzip checksum error") const B = 2 diff --git a/src/cmd/cgo/doc.go b/src/cmd/cgo/doc.go index f6a14ae08..1bb48f44e 100644 --- a/src/cmd/cgo/doc.go +++ b/src/cmd/cgo/doc.go @@ -44,6 +44,11 @@ For example: // #include <png.h> import "C" +The CGO_CFLAGS and CGO_LDFLAGS environment variables are added +to the flags derived from these directives. Package-specific flags should +be set using the directives, not the environment variables, so that builds +work in unmodified environments. + Within the Go file, C identifiers or field names that are keywords in Go can be accessed by prefixing them with an underscore: if x points at a C struct with a field named "type", x._type accesses the field. @@ -111,13 +116,13 @@ Not all Go types can be mapped to C types in a useful way. Cgo transforms the input file into four output files: two Go source files, a C file for 6c (or 8c or 5c), and a C file for gcc. -The standard package makefile rules in Make.pkg automate the -process of using cgo. See $GOROOT/misc/cgo/stdio and -$GOROOT/misc/cgo/gmp for examples. +The standard package construction rules of the go command +automate the process of using cgo. See $GOROOT/misc/cgo/stdio +and $GOROOT/misc/cgo/gmp for examples. Cgo does not yet work with gccgo. See "C? Go? Cgo!" for an introduction to using cgo: -http://blog.golang.org/2011/03/c-go-cgo.html +http://golang.org/doc/articles/c_go_cgo.html */ package documentation diff --git a/src/cmd/cgo/main.go b/src/cmd/cgo/main.go index a8be7be7d..7449f04c4 100644 --- a/src/cmd/cgo/main.go +++ b/src/cmd/cgo/main.go @@ -136,6 +136,7 @@ var cdefs = flag.Bool("cdefs", false, "for bootstrap: write C definitions for C var objDir = flag.String("objdir", "", "object directory") var gccgo = flag.Bool("gccgo", false, "generate files for use with gccgo") +var gccgoprefix = flag.String("gccgoprefix", "go", "prefix of symbols generated by gccgo") var importRuntimeCgo = flag.Bool("import_runtime_cgo", true, "import runtime/cgo in generated code") var goarch, goos string @@ -147,7 +148,7 @@ func main() { // cgo -dynimport is essentially a separate helper command // built into the cgo binary. It scans a gcc-produced executable // and dumps information about the imported symbols and the - // imported libraries. The Make.pkg rules for cgo prepare an + // imported libraries. The 'go build' rules for cgo prepare an // appropriate executable and then use its import information // instead of needing to make the linkers duplicate all the // specialized knowledge gcc has about where to look for imported diff --git a/src/cmd/cgo/out.go b/src/cmd/cgo/out.go index 4dc0f8454..814250c2e 100644 --- a/src/cmd/cgo/out.go +++ b/src/cmd/cgo/out.go @@ -107,7 +107,11 @@ func (p *Package) writeDefs() { } } - p.writeExports(fgo2, fc, fm) + if *gccgo { + p.writeGccgoExports(fgo2, fc, fm) + } else { + p.writeExports(fgo2, fc, fm) + } fgo2.Close() fc.Close() @@ -280,8 +284,13 @@ func (p *Package) writeDefsFunc(fc, fgo2 *os.File, n *Name) { } conf.Fprint(fgo2, fset, d) fmt.Fprintf(fgo2, "{\n") + fmt.Fprintf(fgo2, "\tsyscall.SetErrno(0)\n") fmt.Fprintf(fgo2, "\tr := %s(%s)\n", cname, strings.Join(paramnames, ", ")) - fmt.Fprintf(fgo2, "\treturn r, syscall.GetErrno()\n") + fmt.Fprintf(fgo2, "\te := syscall.GetErrno()\n") + fmt.Fprintf(fgo2, "\tif e != 0 {\n") + fmt.Fprintf(fgo2, "\t\treturn r, e\n") + fmt.Fprintf(fgo2, "\t}\n") + fmt.Fprintf(fgo2, "\treturn r, nil\n") fmt.Fprintf(fgo2, "}\n") // declare the C function. fmt.Fprintf(fgo2, "//extern %s\n", n.C) @@ -411,10 +420,20 @@ func (p *Package) writeOutputFunc(fgcc *os.File, n *Name) { } } fmt.Fprintf(fgcc, "%s(", n.C) - for i := range n.FuncType.Params { + for i, t := range n.FuncType.Params { if i > 0 { fmt.Fprintf(fgcc, ", ") } + // We know the type params are correct, because + // the Go equivalents had good type params. + // However, our version of the type omits the magic + // words const and volatile, which can provoke + // C compiler warnings. Silence them by casting + // all pointers to void*. (Eventually that will produce + // other warnings.) + if c := t.C.String(); c[len(c)-1] == '*' { + fmt.Fprintf(fgcc, "(void*)") + } fmt.Fprintf(fgcc, "a->p%d", i) } fmt.Fprintf(fgcc, ");\n") @@ -563,8 +582,9 @@ func (p *Package) writeExports(fgo2, fc, fm *os.File) { goname = "_cgoexpwrap" + cPrefix + "_" + fn.Recv.List[0].Names[0].Name + "_" + goname } fmt.Fprintf(fc, "#pragma dynexport %s %s\n", goname, goname) - fmt.Fprintf(fc, "extern void ·%s();\n", goname) - fmt.Fprintf(fc, "\nvoid\n") + fmt.Fprintf(fc, "extern void ·%s();\n\n", goname) + fmt.Fprintf(fc, "#pragma textflag 7\n") // no split stack, so no use of m or g + fmt.Fprintf(fc, "void\n") fmt.Fprintf(fc, "_cgoexp%s_%s(void *a, int32 n)\n", cPrefix, exp.ExpName) fmt.Fprintf(fc, "{\n") fmt.Fprintf(fc, "\truntime·cgocallback(·%s, a, n);\n", goname) @@ -613,6 +633,83 @@ func (p *Package) writeExports(fgo2, fc, fm *os.File) { } } +// Write out the C header allowing C code to call exported gccgo functions. +func (p *Package) writeGccgoExports(fgo2, fc, fm *os.File) { + fgcc := creat(*objDir + "_cgo_export.c") + fgcch := creat(*objDir + "_cgo_export.h") + _ = fgcc + + fmt.Fprintf(fgcch, "/* Created by cgo - DO NOT EDIT. */\n") + fmt.Fprintf(fgcch, "%s\n", p.Preamble) + fmt.Fprintf(fgcch, "%s\n", gccExportHeaderProlog) + fmt.Fprintf(fm, "#include \"_cgo_export.h\"\n") + + clean := func(r rune) rune { + switch { + case 'A' <= r && r <= 'Z', 'a' <= r && r <= 'z', + '0' <= r && r <= '9': + return r + } + return '_' + } + gccgoSymbolPrefix := strings.Map(clean, *gccgoprefix) + + for _, exp := range p.ExpFunc { + // TODO: support functions with receivers. + fn := exp.Func + fntype := fn.Type + + if !ast.IsExported(fn.Name.Name) { + fatalf("cannot export unexported function %s with gccgo", fn.Name) + } + + cdeclBuf := new(bytes.Buffer) + resultCount := 0 + forFieldList(fntype.Results, + func(i int, atype ast.Expr) { resultCount++ }) + switch resultCount { + case 0: + fmt.Fprintf(cdeclBuf, "void") + case 1: + forFieldList(fntype.Results, + func(i int, atype ast.Expr) { + t := p.cgoType(atype) + fmt.Fprintf(cdeclBuf, "%s", t.C) + }) + default: + // Declare a result struct. + fmt.Fprintf(fgcch, "struct %s_result {\n", exp.ExpName) + forFieldList(fntype.Results, + func(i int, atype ast.Expr) { + t := p.cgoType(atype) + fmt.Fprintf(fgcch, "\t%s r%d;\n", t.C, i) + }) + fmt.Fprintf(fgcch, "};\n") + fmt.Fprintf(cdeclBuf, "struct %s_result", exp.ExpName) + } + + // The function name. + fmt.Fprintf(cdeclBuf, " "+exp.ExpName) + gccgoSymbol := fmt.Sprintf("%s.%s.%s", gccgoSymbolPrefix, p.PackageName, exp.Func.Name) + fmt.Fprintf(cdeclBuf, " (") + // Function parameters. + forFieldList(fntype.Params, + func(i int, atype ast.Expr) { + if i > 0 { + fmt.Fprintf(cdeclBuf, ", ") + } + t := p.cgoType(atype) + fmt.Fprintf(cdeclBuf, "%s p%d", t.C, i) + }) + fmt.Fprintf(cdeclBuf, ")") + cdecl := cdeclBuf.String() + + fmt.Fprintf(fgcch, "extern %s __asm__(\"%s\");\n", cdecl, gccgoSymbol) + // Dummy declaration for _cgo_main.c + fmt.Fprintf(fm, "%s {}\n", cdecl) + } +} + // Call a function for each entry in an ast.FieldList, passing the // index into the list and the type. func forFieldList(fl *ast.FieldList, fn func(int, ast.Expr)) { diff --git a/src/cmd/dist/build.c b/src/cmd/dist/build.c index a40853fad..3936f7621 100644 --- a/src/cmd/dist/build.c +++ b/src/cmd/dist/build.c @@ -209,7 +209,7 @@ findgoversion(void) // What are the tags along the current branch? tag = ""; rev = "."; - run(&b, goroot, CheckExit, "hg", "log", "-b", bstr(&branch), "--template", "{tags} + ", nil); + run(&b, goroot, CheckExit, "hg", "log", "-b", bstr(&branch), "-r", ".:0", "--template", "{tags} + ", nil); splitfields(&tags, bstr(&b)); nrev = 0; for(i=0; i<tags.len; i++) { @@ -1214,6 +1214,8 @@ clean(void) vinit(&dir); for(i=0; i<nelem(cleantab); i++) { + if((streq(cleantab[i], "cmd/cov") || streq(cleantab[i], "cmd/prof")) && !isdir(cleantab[i])) + continue; bpathf(&path, "%s/src/%s", goroot, cleantab[i]); xreaddir(&dir, bstr(&path)); // Remove generated files. @@ -1351,6 +1353,9 @@ cmdbootstrap(int argc, char **argv) goversion = findgoversion(); setup(); + xsetenv("GOROOT", goroot); + xsetenv("GOROOT_FINAL", goroot_final); + // For the main bootstrap, building for host os/arch. oldgoos = goos; oldgoarch = goarch; diff --git a/src/cmd/fix/go1rename.go b/src/cmd/fix/go1rename.go index 4b666720b..9266c749c 100644 --- a/src/cmd/fix/go1rename.go +++ b/src/cmd/fix/go1rename.go @@ -74,4 +74,94 @@ var go1renameReplace = []rename{ Old: "runtime.Goroutines", New: "runtime.NumGoroutine", }, + { + OldImport: "net/http", + NewImport: "net/http/httputil", + Old: "http.ErrPersistEOF", + New: "httputil.ErrPersistEOF", + }, + { + OldImport: "net/http", + NewImport: "net/http/httputil", + Old: "http.ErrPipeline", + New: "httputil.ErrPipeline", + }, + { + OldImport: "net/http", + NewImport: "net/http/httputil", + Old: "http.ErrClosed", + New: "httputil.ErrClosed", + }, + { + OldImport: "net/http", + NewImport: "net/http/httputil", + Old: "http.ServerConn", + New: "httputil.ServerConn", + }, + { + OldImport: "net/http", + NewImport: "net/http/httputil", + Old: "http.ClientConn", + New: "httputil.ClientConn", + }, + { + OldImport: "net/http", + NewImport: "net/http/httputil", + Old: "http.NewChunkedReader", + New: "httputil.NewChunkedReader", + }, + { + OldImport: "net/http", + NewImport: "net/http/httputil", + Old: "http.NewChunkedWriter", + New: "httputil.NewChunkedWriter", + }, + { + OldImport: "net/http", + NewImport: "net/http/httputil", + Old: "http.ReverseProxy", + New: "httputil.ReverseProxy", + }, + { + OldImport: "net/http", + NewImport: "net/http/httputil", + Old: "http.NewSingleHostReverseProxy", + New: "httputil.NewSingleHostReverseProxy", + }, + { + OldImport: "net/http", + NewImport: "net/http/httputil", + Old: "http.DumpRequest", + New: "httputil.DumpRequest", + }, + { + OldImport: "net/http", + NewImport: "net/http/httputil", + Old: "http.DumpRequestOut", + New: "httputil.DumpRequestOut", + }, + { + OldImport: "net/http", + NewImport: "net/http/httputil", + Old: "http.DumpResponse", + New: "httputil.DumpResponse", + }, + { + OldImport: "net/http", + NewImport: "net/http/httputil", + Old: "http.NewClientConn", + New: "httputil.NewClientConn", + }, + { + OldImport: "net/http", + NewImport: "net/http/httputil", + Old: "http.NewServerConn", + New: "httputil.NewServerConn", + }, + { + OldImport: "net/http", + NewImport: "net/http/httputil", + Old: "http.NewProxyClientConn", + New: "httputil.NewProxyClientConn", + }, } diff --git a/src/cmd/fix/go1rename_test.go b/src/cmd/fix/go1rename_test.go index 481ebea8e..90219ba71 100644 --- a/src/cmd/fix/go1rename_test.go +++ b/src/cmd/fix/go1rename_test.go @@ -17,6 +17,7 @@ import ( "crypto/aes" "crypto/des" "encoding/json" + "net/http" "net/url" "os" "runtime" @@ -34,6 +35,15 @@ var ( _ = os.Exec _ = runtime.Cgocalls _ = runtime.Goroutines + _ = http.ErrPersistEOF + _ = http.ErrPipeline + _ = http.ErrClosed + _ = http.NewSingleHostReverseProxy + _ = http.NewChunkedReader + _ = http.NewChunkedWriter + _ *http.ReverseProxy + _ *http.ClientConn + _ *http.ServerConn ) `, Out: `package main @@ -42,6 +52,7 @@ import ( "crypto/aes" "crypto/cipher" "encoding/json" + "net/http/httputil" "net/url" "runtime" "syscall" @@ -59,7 +70,126 @@ var ( _ = syscall.Exec _ = runtime.NumCgoCall _ = runtime.NumGoroutine + _ = httputil.ErrPersistEOF + _ = httputil.ErrPipeline + _ = httputil.ErrClosed + _ = httputil.NewSingleHostReverseProxy + _ = httputil.NewChunkedReader + _ = httputil.NewChunkedWriter + _ *httputil.ReverseProxy + _ *httputil.ClientConn + _ *httputil.ServerConn ) `, }, + { + Name: "httputil.0", + In: `package main + +import "net/http" + +func f() { + http.DumpRequest(nil, false) + http.DumpRequestOut(nil, false) + http.DumpResponse(nil, false) + http.NewChunkedReader(nil) + http.NewChunkedWriter(nil) + http.NewClientConn(nil, nil) + http.NewProxyClientConn(nil, nil) + http.NewServerConn(nil, nil) + http.NewSingleHostReverseProxy(nil) +} +`, + Out: `package main + +import "net/http/httputil" + +func f() { + httputil.DumpRequest(nil, false) + httputil.DumpRequestOut(nil, false) + httputil.DumpResponse(nil, false) + httputil.NewChunkedReader(nil) + httputil.NewChunkedWriter(nil) + httputil.NewClientConn(nil, nil) + httputil.NewProxyClientConn(nil, nil) + httputil.NewServerConn(nil, nil) + httputil.NewSingleHostReverseProxy(nil) +} +`, + }, + { + Name: "httputil.1", + In: `package main + +import "net/http" + +func f() { + http.DumpRequest(nil, false) + http.DumpRequestOut(nil, false) + http.DumpResponse(nil, false) + http.NewChunkedReader(nil) + http.NewChunkedWriter(nil) + http.NewClientConn(nil, nil) + http.NewProxyClientConn(nil, nil) + http.NewServerConn(nil, nil) + http.NewSingleHostReverseProxy(nil) +} +`, + Out: `package main + +import "net/http/httputil" + +func f() { + httputil.DumpRequest(nil, false) + httputil.DumpRequestOut(nil, false) + httputil.DumpResponse(nil, false) + httputil.NewChunkedReader(nil) + httputil.NewChunkedWriter(nil) + httputil.NewClientConn(nil, nil) + httputil.NewProxyClientConn(nil, nil) + httputil.NewServerConn(nil, nil) + httputil.NewSingleHostReverseProxy(nil) +} +`, + }, + { + Name: "httputil.2", + In: `package main + +import "net/http" + +func f() { + http.DumpRequest(nil, false) + http.DumpRequestOut(nil, false) + http.DumpResponse(nil, false) + http.NewChunkedReader(nil) + http.NewChunkedWriter(nil) + http.NewClientConn(nil, nil) + http.NewProxyClientConn(nil, nil) + http.NewServerConn(nil, nil) + http.NewSingleHostReverseProxy(nil) + http.Get("") +} +`, + Out: `package main + +import ( + "net/http" + "net/http/httputil" +) + +func f() { + httputil.DumpRequest(nil, false) + httputil.DumpRequestOut(nil, false) + httputil.DumpResponse(nil, false) + httputil.NewChunkedReader(nil) + httputil.NewChunkedWriter(nil) + httputil.NewClientConn(nil, nil) + httputil.NewProxyClientConn(nil, nil) + httputil.NewServerConn(nil, nil) + httputil.NewSingleHostReverseProxy(nil) + http.Get("") +} +`, + }, } diff --git a/src/cmd/fix/httputil.go b/src/cmd/fix/httputil.go deleted file mode 100644 index 86c42e160..000000000 --- a/src/cmd/fix/httputil.go +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright 2011 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. - -package main - -import "go/ast" - -func init() { - register(httputilFix) -} - -var httputilFix = fix{ - "httputil", - "2011-11-18", - httputil, - `Move some functions in http package into httputil package. - -http://codereview.appspot.com/5336049 -`, -} - -var httputilFuncs = []string{ - "DumpRequest", - "DumpRequestOut", - "DumpResponse", - "NewChunkedReader", - "NewChunkedWriter", - "NewClientConn", - "NewProxyClientConn", - "NewServerConn", - "NewSingleHostReverseProxy", -} - -func httputil(f *ast.File) bool { - if imports(f, "net/http/httputil") { - return false - } - - fixed := false - - walk(f, func(n interface{}) { - // Rename package name. - if expr, ok := n.(ast.Expr); ok { - for _, s := range httputilFuncs { - if isPkgDot(expr, "http", s) { - if !fixed { - addImport(f, "net/http/httputil") - fixed = true - } - expr.(*ast.SelectorExpr).X.(*ast.Ident).Name = "httputil" - } - } - } - }) - - // Remove the net/http import if no longer needed. - if fixed && !usesImport(f, "net/http") { - deleteImport(f, "net/http") - } - - return fixed -} diff --git a/src/cmd/fix/httputil_test.go b/src/cmd/fix/httputil_test.go deleted file mode 100644 index 83e9f6dfb..000000000 --- a/src/cmd/fix/httputil_test.go +++ /dev/null @@ -1,122 +0,0 @@ -// Copyright 2011 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. - -package main - -func init() { - addTestCases(httputilTests, httputil) -} - -var httputilTests = []testCase{ - { - Name: "httputil.0", - In: `package main - -import "net/http" - -func f() { - http.DumpRequest(nil, false) - http.DumpRequestOut(nil, false) - http.DumpResponse(nil, false) - http.NewChunkedReader(nil) - http.NewChunkedWriter(nil) - http.NewClientConn(nil, nil) - http.NewProxyClientConn(nil, nil) - http.NewServerConn(nil, nil) - http.NewSingleHostReverseProxy(nil) -} -`, - Out: `package main - -import "net/http/httputil" - -func f() { - httputil.DumpRequest(nil, false) - httputil.DumpRequestOut(nil, false) - httputil.DumpResponse(nil, false) - httputil.NewChunkedReader(nil) - httputil.NewChunkedWriter(nil) - httputil.NewClientConn(nil, nil) - httputil.NewProxyClientConn(nil, nil) - httputil.NewServerConn(nil, nil) - httputil.NewSingleHostReverseProxy(nil) -} -`, - }, - { - Name: "httputil.1", - In: `package main - -import "net/http" - -func f() { - http.DumpRequest(nil, false) - http.DumpRequestOut(nil, false) - http.DumpResponse(nil, false) - http.NewChunkedReader(nil) - http.NewChunkedWriter(nil) - http.NewClientConn(nil, nil) - http.NewProxyClientConn(nil, nil) - http.NewServerConn(nil, nil) - http.NewSingleHostReverseProxy(nil) -} -`, - Out: `package main - -import "net/http/httputil" - -func f() { - httputil.DumpRequest(nil, false) - httputil.DumpRequestOut(nil, false) - httputil.DumpResponse(nil, false) - httputil.NewChunkedReader(nil) - httputil.NewChunkedWriter(nil) - httputil.NewClientConn(nil, nil) - httputil.NewProxyClientConn(nil, nil) - httputil.NewServerConn(nil, nil) - httputil.NewSingleHostReverseProxy(nil) -} -`, - }, - { - Name: "httputil.2", - In: `package main - -import "net/http" - -func f() { - http.DumpRequest(nil, false) - http.DumpRequestOut(nil, false) - http.DumpResponse(nil, false) - http.NewChunkedReader(nil) - http.NewChunkedWriter(nil) - http.NewClientConn(nil, nil) - http.NewProxyClientConn(nil, nil) - http.NewServerConn(nil, nil) - http.NewSingleHostReverseProxy(nil) - http.Get("") -} -`, - Out: `package main - -import ( - "net/http" - "net/http/httputil" -) - -func f() { - httputil.DumpRequest(nil, false) - httputil.DumpRequestOut(nil, false) - httputil.DumpResponse(nil, false) - httputil.NewChunkedReader(nil) - httputil.NewChunkedWriter(nil) - httputil.NewClientConn(nil, nil) - httputil.NewProxyClientConn(nil, nil) - httputil.NewServerConn(nil, nil) - httputil.NewSingleHostReverseProxy(nil) - http.Get("") -} -`, - }, -} diff --git a/src/cmd/gc/Makefile b/src/cmd/gc/Makefile index df34c05b2..58e25faaf 100644 --- a/src/cmd/gc/Makefile +++ b/src/cmd/gc/Makefile @@ -6,7 +6,7 @@ include ../../Make.dist install: y.tab.h builtin.c -y.tab.h: go.y +y.tab.h: go.y go.errors bisonerrors bison -v -y -d go.y # make yystate global, yytname mutable cat y.tab.c | sed '/ int yystate;/d; s/int yychar;/int yychar, yystate;/; s/static const char \*const yytname/const char *yytname/; s/char const \*yymsgp/char *yymsgp/' >y1.tab.c diff --git a/src/cmd/gc/dcl.c b/src/cmd/gc/dcl.c index 4a0e7430a..4121a45ab 100644 --- a/src/cmd/gc/dcl.c +++ b/src/cmd/gc/dcl.c @@ -1168,21 +1168,22 @@ methodsym(Sym *nsym, Type *t0, int iface) char *p; Type *t; char *suffix; + Pkg *spkg; + static Pkg *toppkg; t = t0; if(t == T) goto bad; s = t->sym; - if(s == S) { - if(!isptr[t->etype]) - goto bad; + if(s == S && isptr[t->etype]) { t = t->type; if(t == T) goto bad; s = t->sym; - if(s == S) - goto bad; } + spkg = nil; + if(s != S) + spkg = s->pkg; // if t0 == *t and t0 has a sym, // we want to see *t, not t0, in the method name. @@ -1195,11 +1196,23 @@ methodsym(Sym *nsym, Type *t0, int iface) if(t0->width < types[tptr]->width) suffix = "·i"; } - if(t0->sym == S && isptr[t0->etype]) - p = smprint("(%-hT).%s%s", t0, nsym->name, suffix); - else - p = smprint("%-hT.%s%s", t0, nsym->name, suffix); - s = pkglookup(p, s->pkg); + if((spkg == nil || nsym->pkg != spkg) && !exportname(nsym->name)) { + if(t0->sym == S && isptr[t0->etype]) + p = smprint("(%-hT).%s.%s%s", t0, nsym->pkg->prefix, nsym->name, suffix); + else + p = smprint("%-hT.%s.%s%s", t0, nsym->pkg->prefix, nsym->name, suffix); + } else { + if(t0->sym == S && isptr[t0->etype]) + p = smprint("(%-hT).%s%s", t0, nsym->name, suffix); + else + p = smprint("%-hT.%s%s", t0, nsym->name, suffix); + } + if(spkg == nil) { + if(toppkg == nil) + toppkg = mkpkg(strlit("go")); + spkg = toppkg; + } + s = pkglookup(p, spkg); free(p); return s; @@ -1268,7 +1281,7 @@ addmethod(Sym *sf, Type *t, int local) } pa = pa->type; - f = methtype(pa); + f = methtype(pa, 1); if(f == T) { t = pa; if(t != T) { diff --git a/src/cmd/gc/doc.go b/src/cmd/gc/doc.go index 5a2977eab..163d3862c 100644 --- a/src/cmd/gc/doc.go +++ b/src/cmd/gc/doc.go @@ -26,7 +26,7 @@ package P to read the files of P's dependencies, only the compiled output of P. Usage: - 6g [flags] file... + go tool 6g [flags] file... The specified files must be Go source files and all part of the same package. Substitute 6g with 8g or 5g where appropriate. diff --git a/src/cmd/gc/go.h b/src/cmd/gc/go.h index 753360e46..8c4fff15a 100644 --- a/src/cmd/gc/go.h +++ b/src/cmd/gc/go.h @@ -1154,7 +1154,7 @@ int cplxsubtype(int et); int eqtype(Type *t1, Type *t2); int eqtypenoname(Type *t1, Type *t2); void errorexit(void); -void expandmeth(Sym *s, Type *t); +void expandmeth(Type *t); void fatal(char *fmt, ...); void flusherrors(void); void frame(int context); @@ -1192,7 +1192,7 @@ NodeList* listtreecopy(NodeList *l); Sym* lookup(char *name); void* mal(int32 n); Type* maptype(Type *key, Type *val); -Type* methtype(Type *t); +Type* methtype(Type *t, int mustname); Pkg* mkpkg(Strlit *path); Sym* ngotype(Node *n); int noconv(Type *t1, Type *t2); diff --git a/src/cmd/gc/inl.c b/src/cmd/gc/inl.c index 96080cbfa..efce56057 100644 --- a/src/cmd/gc/inl.c +++ b/src/cmd/gc/inl.c @@ -182,6 +182,8 @@ ishairy(Node *n, int *budget) case OCALLFUNC: case OCALLINTER: case OCALLMETH: + case OPANIC: + case ORECOVER: if(debug['l'] < 4) return 1; break; diff --git a/src/cmd/gc/lex.c b/src/cmd/gc/lex.c index 96786b5e6..e71fd3848 100644 --- a/src/cmd/gc/lex.c +++ b/src/cmd/gc/lex.c @@ -514,7 +514,7 @@ addidir(char* dir) static int islocalname(Strlit *name) { - if(!windows && name->len >= 1 && name->s[0] == '/') + if(name->len >= 1 && name->s[0] == '/') return 1; if(windows && name->len >= 3 && yy_isalpha(name->s[0]) && name->s[1] == ':' && name->s[2] == '/') diff --git a/src/cmd/gc/obj.c b/src/cmd/gc/obj.c index aae566dbb..e45b4e0d4 100644 --- a/src/cmd/gc/obj.c +++ b/src/cmd/gc/obj.c @@ -126,10 +126,37 @@ outhist(Biobuf *b) { Hist *h; char *p, ds[] = {'c', ':', '/', 0}; + char *tofree; + int n; + static int first = 1; + static char *goroot, *goroot_final; + if(first) { + // Decide whether we need to rewrite paths from $GOROOT to $GOROOT_FINAL. + first = 0; + goroot = getenv("GOROOT"); + goroot_final = getenv("GOROOT_FINAL"); + if(goroot == nil) + goroot = ""; + if(goroot_final == nil) + goroot_final = goroot; + if(strcmp(goroot, goroot_final) == 0) { + goroot = nil; + goroot_final = nil; + } + } + + tofree = nil; for(h = hist; h != H; h = h->link) { p = h->name; if(p) { + if(goroot != nil) { + n = strlen(goroot); + if(strncmp(p, goroot, strlen(goroot)) == 0 && p[n] == '/') { + tofree = smprint("%s%s", goroot_final, p+n); + p = tofree; + } + } if(windows) { // if windows variable is set, then, we know already, // pathname is started with windows drive specifier @@ -161,9 +188,12 @@ outhist(Biobuf *b) outzfile(b, p); } } - } zhist(b, h->line, h->offset); + if(tofree) { + free(tofree); + tofree = nil; + } } } diff --git a/src/cmd/gc/reflect.c b/src/cmd/gc/reflect.c index 0847e9a3f..07b426508 100644 --- a/src/cmd/gc/reflect.c +++ b/src/cmd/gc/reflect.c @@ -144,11 +144,11 @@ methods(Type *t) Sig *a, *b; Sym *method; - // named method type - mt = methtype(t); + // method type + mt = methtype(t, 0); if(mt == T) return nil; - expandmeth(mt->sym, mt); + expandmeth(mt); // type stored in interface word it = t; diff --git a/src/cmd/gc/runtime.go b/src/cmd/gc/runtime.go index 000b2328f..15a61d9ef 100644 --- a/src/cmd/gc/runtime.go +++ b/src/cmd/gc/runtime.go @@ -3,7 +3,7 @@ // license that can be found in the LICENSE file. // NOTE: If you change this file you must run "./mkbuiltin" -// to update builtin.c.boot. This is not done automatically +// to update builtin.c. This is not done automatically // to avoid depending on having a working compiler binary. // +build ignore diff --git a/src/cmd/gc/subr.c b/src/cmd/gc/subr.c index 6eb7734f0..681c023a0 100644 --- a/src/cmd/gc/subr.c +++ b/src/cmd/gc/subr.c @@ -944,7 +944,7 @@ isideal(Type *t) * return type to hang methods off (r). */ Type* -methtype(Type *t) +methtype(Type *t, int mustname) { if(t == T) return T; @@ -959,7 +959,7 @@ methtype(Type *t) } // need a type name - if(t->sym == S) + if(t->sym == S && (mustname || t->etype != TSTRUCT)) return T; // check types @@ -2101,7 +2101,7 @@ lookdot0(Sym *s, Type *t, Type **save, int ignorecase) c++; } } - u = methtype(t); + u = methtype(t, 0); if(u != T) { for(f=u->method; f!=T; f=f->down) if(f->embedded == 0 && (f->sym == s || (ignorecase && ucistrcmp(f->sym->name, s->name) == 0))) { @@ -2251,7 +2251,7 @@ expand0(Type *t, int followptr) return; } - u = methtype(t); + u = methtype(t, 0); if(u != T) { for(f=u->method; f!=T; f=f->down) { if(f->sym->flags & SymUniq) @@ -2301,14 +2301,12 @@ out: } void -expandmeth(Sym *s, Type *t) +expandmeth(Type *t) { Symlink *sl; Type *f; int c, d; - if(s == S) - return; if(t == T || t->xmethod != nil) return; @@ -3021,9 +3019,9 @@ implements(Type *t, Type *iface, Type **m, Type **samename, int *ptr) return 1; } - t = methtype(t); + t = methtype(t, 0); if(t != T) - expandmeth(t->sym, t); + expandmeth(t); for(im=iface->type; im; im=im->down) { imtype = methodfunc(im->type, 0); tm = ifacelookdot(im->sym, t, &followptr, 0); @@ -3626,23 +3624,23 @@ isbadimport(Strlit *path) while(*s) { s += chartorune(&r, s); if(r == Runeerror) { - yyerror("import path contains invalid UTF-8 sequence"); + yyerror("import path contains invalid UTF-8 sequence: \"%Z\"", path); return 1; } if(r < 0x20 || r == 0x7f) { - yyerror("import path contains control character"); + yyerror("import path contains control character: \"%Z\"", path); return 1; } if(r == '\\') { - yyerror("import path contains backslash; use slash"); + yyerror("import path contains backslash; use slash: \"%Z\"", path); return 1; } if(isspacerune(r)) { - yyerror("import path contains space character"); + yyerror("import path contains space character: \"%Z\"", path); return 1; } - if(utfrune("!\"#$%&'()*,:;<=>?[]^`{|}~", r)) { - yyerror("import path contains invalid character '%C'", r); + if(utfrune("!\"#$%&'()*,:;<=>?[]^`{|}", r)) { + yyerror("import path contains invalid character '%C': \"%Z\"", r, path); return 1; } } diff --git a/src/cmd/gc/typecheck.c b/src/cmd/gc/typecheck.c index 90bd24964..e98d53857 100644 --- a/src/cmd/gc/typecheck.c +++ b/src/cmd/gc/typecheck.c @@ -190,6 +190,46 @@ typecheck(Node **np, int top) return n; } +/* + * does n contain a call or receive operation? + */ +static int callrecvlist(NodeList*); + +static int +callrecv(Node *n) +{ + if(n == nil) + return 0; + + switch(n->op) { + case OCALL: + case OCALLMETH: + case OCALLINTER: + case OCALLFUNC: + case ORECV: + return 1; + } + + return callrecv(n->left) || + callrecv(n->right) || + callrecv(n->ntest) || + callrecv(n->nincr) || + callrecvlist(n->ninit) || + callrecvlist(n->nbody) || + callrecvlist(n->nelse) || + callrecvlist(n->list) || + callrecvlist(n->rlist); +} + +static int +callrecvlist(NodeList *l) +{ + for(; l; l=l->next) + if(callrecv(l->n)) + return 1; + return 0; +} + static void typecheck1(Node **np, int top) { @@ -995,12 +1035,14 @@ reswitch: } break; case TARRAY: - if(t->bound >= 0 && l->op == ONAME) { - r = nod(OXXX, N, N); - nodconst(r, types[TINT], t->bound); - r->orig = n; - n = r; - } + if(t->bound < 0) // slice + break; + if(callrecv(l)) // has call or receive + break; + r = nod(OXXX, N, N); + nodconst(r, types[TINT], t->bound); + r->orig = n; + n = r; break; } n->type = types[TINT]; @@ -1664,11 +1706,11 @@ looktypedot(Node *n, Type *t, int dostrcmp) if(t->sym == S && isptr[t->etype]) tt = t->type; - f2 = methtype(tt); + f2 = methtype(tt, 0); if(f2 == T) return 0; - expandmeth(f2->sym, f2); + expandmeth(f2); f2 = lookdot1(n, s, f2, f2->xmethod, dostrcmp); if(f2 == T) return 0; @@ -1712,7 +1754,7 @@ lookdot(Node *n, Type *t, int dostrcmp) f2 = T; if(n->left->type == t || n->left->type->sym == S) { - f2 = methtype(t); + f2 = methtype(t, 0); if(f2 != T) { // Use f2->method, not f2->xmethod: adddot has // already inserted all the necessary embedded dots. @@ -1964,7 +2006,7 @@ keydup(Node *n, Node *hash[], ulong nhash) b = cmp.val.u.bval; if(b) { // too lazy to print the literal - yyerror("duplicate key in map literal"); + yyerror("duplicate key %N in map literal", n); return; } } diff --git a/src/cmd/gc/walk.c b/src/cmd/gc/walk.c index 74298e126..7dfd34a7a 100644 --- a/src/cmd/gc/walk.c +++ b/src/cmd/gc/walk.c @@ -646,12 +646,6 @@ walkexpr(Node **np, NodeList **init) n->ninit = nil; l = n->list->n; r = n->list->next->n; - if(n->right != N) { - // TODO: Remove once two-element map assigment is gone. - l = safeexpr(l, init); - r = safeexpr(r, init); - safeexpr(n->right, init); // cause side effects from n->right - } t = l->type; n = mkcall1(mapfndel("mapdelete", t), t->down, init, typename(t), l, r); goto ret; @@ -2364,6 +2358,12 @@ append(Node *n, NodeList **init) walkexprlistsafe(n->list, init); + // walkexprlistsafe will leave OINDEX (s[n]) alone if both s + // and n are name or literal, but those may index the slice we're + // modifying here. Fix explicitly. + for(l=n->list; l; l=l->next) + l->n = cheapexpr(l->n, init); + nsrc = n->list->n; argc = count(n->list) - 1; if (argc < 1) { @@ -2520,6 +2520,7 @@ walkcompare(Node **np, NodeList **init) expr = nodbool(n->op == OEQ); typecheck(&expr, Erv); walkexpr(&expr, init); + expr->type = n->type; *np = expr; return; } @@ -2540,6 +2541,7 @@ walkcompare(Node **np, NodeList **init) expr = nodbool(n->op == OEQ); typecheck(&expr, Erv); walkexpr(&expr, init); + expr->type = n->type; *np = expr; return; } diff --git a/src/cmd/go/bootstrap.go b/src/cmd/go/bootstrap.go index bc9a3dbbc..32941404c 100644 --- a/src/cmd/go/bootstrap.go +++ b/src/cmd/go/bootstrap.go @@ -10,8 +10,21 @@ package main -import "errors" +import ( + "errors" + "io" +) + +var errHTTP = errors.New("no http in bootstrap go command") func httpGET(url string) ([]byte, error) { - return nil, errors.New("no http in bootstrap go command") + return nil, errHTTP +} + +func httpsOrHTTP(importPath string) (string, io.ReadCloser, error) { + return "", nil, errHTTP +} + +func parseMetaGoImports(r io.Reader) (imports []metaImport) { + panic("unreachable") } diff --git a/src/cmd/go/build.go b/src/cmd/go/build.go index c330bd5de..16177c127 100644 --- a/src/cmd/go/build.go +++ b/src/cmd/go/build.go @@ -12,6 +12,7 @@ import ( "go/build" "io" "io/ioutil" + "log" "os" "os/exec" "path" @@ -20,6 +21,7 @@ import ( "runtime" "strings" "sync" + "time" ) var cmdBuild = &Command{ @@ -58,6 +60,8 @@ The build flags are shared by the build, install, run, and test commands: -x print the commands. + -compiler name + name of compiler to use, as in runtime.Compiler (gccgo or gc) -gccgoflags 'arg list' arguments to pass on each gccgo compiler/linker invocation -gcflags 'arg list' @@ -97,9 +101,42 @@ var buildLdflags []string // -ldflags flag var buildGccgoflags []string // -gccgoflags flag var buildContext = build.Default +var buildToolchain toolchain = noToolchain{} + +// buildCompiler implements flag.Var. +// It implements Set by updating both +// buildToolchain and buildContext.Compiler. +type buildCompiler struct{} + +func (c buildCompiler) Set(value string) error { + switch value { + case "gc": + buildToolchain = gcToolchain{} + case "gccgo": + buildToolchain = gccgcToolchain{} + default: + return fmt.Errorf("unknown compiler %q", value) + } + buildContext.Compiler = value + return nil +} + +func (c buildCompiler) String() string { + return buildContext.Compiler +} + +func init() { + switch build.Default.Compiler { + case "gc": + buildToolchain = gcToolchain{} + case "gccgo": + buildToolchain = gccgcToolchain{} + } +} // addBuildFlags adds the flags common to the build and install commands. func addBuildFlags(cmd *Command) { + // NOTE: If you add flags here, also add them to testflag.go. cmd.Flag.BoolVar(&buildA, "a", false, "") cmd.Flag.BoolVar(&buildN, "n", false, "") cmd.Flag.IntVar(&buildP, "p", buildP, "") @@ -110,6 +147,7 @@ func addBuildFlags(cmd *Command) { cmd.Flag.Var((*stringsFlag)(&buildLdflags), "ldflags", "") cmd.Flag.Var((*stringsFlag)(&buildGccgoflags), "gccgoflags", "") cmd.Flag.Var((*stringsFlag)(&buildContext.BuildTags), "tags", "") + cmd.Flag.Var(buildCompiler{}, "compiler", "") } type stringsFlag []string @@ -131,9 +169,7 @@ func runBuild(cmd *Command, args []string) { if len(pkgs) == 1 && pkgs[0].Name == "main" && *buildO == "" { _, *buildO = path.Split(pkgs[0].ImportPath) - if goos == "windows" { - *buildO += ".exe" - } + *buildO += exeSuffix } if *buildO != "" { @@ -348,6 +384,7 @@ func goFilesPackage(gofiles []string) *Package { bp, err := ctxt.ImportDir(dir, 0) pkg := new(Package) + pkg.local = true pkg.load(&stk, bp, err) pkg.localPrefix = dirToImportPath(dir) pkg.ImportPath = "command-line-arguments" @@ -355,7 +392,7 @@ func goFilesPackage(gofiles []string) *Package { if *buildO == "" { if pkg.Name == "main" { _, elem := filepath.Split(gofiles[0]) - *buildO = elem[:len(elem)-len(".go")] + *buildO = elem[:len(elem)-len(".go")] + exeSuffix } else { *buildO = pkg.Name + ".a" } @@ -412,7 +449,7 @@ func (b *builder) action(mode buildMode, depMode buildMode, p *Package) *action return a } // gccgo standard library is "fake" too. - if _, ok := buildToolchain.(gccgoToolchain); ok { + if _, ok := buildToolchain.(gccgcToolchain); ok { // the target name is needed for cgo. a.target = p.target return a @@ -568,7 +605,12 @@ func (b *builder) do(root *action) { } // build is the action for building a single package or command. -func (b *builder) build(a *action) error { +func (b *builder) build(a *action) (err error) { + defer func() { + if err != nil && err != errPrintedOutput { + err = fmt.Errorf("go build %s: %v", a.p.ImportPath, err) + } + }() if buildN { // In -n mode, print a banner between packages. // The banner is five lines so that when changes to @@ -620,7 +662,7 @@ func (b *builder) build(a *action) error { } cgoExe := tool("cgo") - if a.cgo != nil { + if a.cgo != nil && a.cgo.target != "" { cgoExe = a.cgo.target } outGo, outObj, err := b.cgo(a.p, cgoExe, obj, gccfiles) @@ -692,6 +734,11 @@ func (b *builder) build(a *action) error { // http://golang.org/issue/2601 objects = append(objects, cgoObjects...) + // Add system object files. + for _, syso := range a.p.SysoFiles { + objects = append(objects, filepath.Join(a.p.Dir, syso)) + } + // Pack into archive in obj directory if err := buildToolchain.pack(b, a.p, obj, a.objpkg, objects); err != nil { return err @@ -712,7 +759,12 @@ func (b *builder) build(a *action) error { } // install is the action for installing a single package or executable. -func (b *builder) install(a *action) error { +func (b *builder) install(a *action) (err error) { + defer func() { + if err != nil && err != errPrintedOutput { + err = fmt.Errorf("go install %s: %v", a.p.ImportPath, err) + } + }() a1 := a.deps[0] perm := os.FileMode(0666) if a1.link { @@ -767,7 +819,7 @@ func (b *builder) includeArgs(flag string, all []*action) []string { for _, a1 := range all { if dir := a1.pkgdir; dir == a1.p.build.PkgRoot && !incMap[dir] { incMap[dir] = true - if _, ok := buildToolchain.(gccgoToolchain); ok { + if _, ok := buildToolchain.(gccgcToolchain); ok { dir = filepath.Join(dir, "gccgo") } else { dir = filepath.Join(dir, goos+"_"+goarch) @@ -833,7 +885,7 @@ func (b *builder) copyFile(a *action, dst, src string, perm os.FileMode) error { df.Close() if err != nil { os.Remove(dst) - return err + return fmt.Errorf("copying %s to %s: %v", src, dst, err) } return nil } @@ -888,8 +940,6 @@ func (b *builder) fmtcmd(dir string, format string, args ...interface{}) string if b.work != "" { cmd = strings.Replace(cmd, b.work, "$WORK", -1) } - cmd = strings.Replace(cmd, gobin, "$GOBIN", -1) - cmd = strings.Replace(cmd, goroot, "$GOROOT", -1) return cmd } @@ -998,14 +1048,66 @@ func (b *builder) runOut(dir string, desc string, cmdargs ...interface{}) ([]byt } } - var buf bytes.Buffer - cmd := exec.Command(cmdline[0], cmdline[1:]...) - cmd.Stdout = &buf - cmd.Stderr = &buf - cmd.Dir = dir - // TODO: cmd.Env - err := cmd.Run() - return buf.Bytes(), err + nbusy := 0 + for { + var buf bytes.Buffer + cmd := exec.Command(cmdline[0], cmdline[1:]...) + cmd.Stdout = &buf + cmd.Stderr = &buf + cmd.Dir = dir + // TODO: cmd.Env + err := cmd.Run() + + // cmd.Run will fail on Unix if some other process has the binary + // we want to run open for writing. This can happen here because + // we build and install the cgo command and then run it. + // If another command was kicked off while we were writing the + // cgo binary, the child process for that command may be holding + // a reference to the fd, keeping us from running exec. + // + // But, you might reasonably wonder, how can this happen? + // The cgo fd, like all our fds, is close-on-exec, so that we need + // not worry about other processes inheriting the fd accidentally. + // The answer is that running a command is fork and exec. + // A child forked while the cgo fd is open inherits that fd. + // Until the child has called exec, it holds the fd open and the + // kernel will not let us run cgo. Even if the child were to close + // the fd explicitly, it would still be open from the time of the fork + // until the time of the explicit close, and the race would remain. + // + // On Unix systems, this results in ETXTBSY, which formats + // as "text file busy". Rather than hard-code specific error cases, + // we just look for that string. If this happens, sleep a little + // and try again. We let this happen three times, with increasing + // sleep lengths: 100+200+400 ms = 0.7 seconds. + // + // An alternate solution might be to split the cmd.Run into + // separate cmd.Start and cmd.Wait, and then use an RWLock + // to make sure that copyFile only executes when no cmd.Start + // call is in progress. However, cmd.Start (really syscall.forkExec) + // only guarantees that when it returns, the exec is committed to + // happen and succeed. It uses a close-on-exec file descriptor + // itself to determine this, so we know that when cmd.Start returns, + // at least one close-on-exec file descriptor has been closed. + // However, we cannot be sure that all of them have been closed, + // so the program might still encounter ETXTBSY even with such + // an RWLock. The race window would be smaller, perhaps, but not + // guaranteed to be gone. + // + // Sleeping when we observe the race seems to be the most reliable + // option we have. + // + // http://golang.org/issue/3001 + // + if err != nil && nbusy < 3 && strings.Contains(err.Error(), "text file busy") { + time.Sleep(100 * time.Millisecond << uint(nbusy)) + nbusy++ + continue + } + + return buf.Bytes(), err + } + panic("unreachable") } // mkdir makes the named directory. @@ -1072,32 +1174,60 @@ type toolchain interface { linker() string } -type goToolchain struct{} -type gccgoToolchain struct{} +type noToolchain struct{} + +func noCompiler() error { + log.Fatalf("unknown compiler %q", buildContext.Compiler) + return nil +} -var buildToolchain toolchain +func (noToolchain) compiler() string { + noCompiler() + return "" +} -func init() { - // TODO(rsc): Decide how to trigger gccgo. Issue 3157. - if os.Getenv("GC") == "gccgo" { - buildContext.Gccgo = true - buildToolchain = gccgoToolchain{} - } else { - buildToolchain = goToolchain{} - } +func (noToolchain) linker() string { + noCompiler() + return "" +} + +func (noToolchain) gc(b *builder, p *Package, obj string, importArgs []string, gofiles []string) (ofile string, err error) { + return "", noCompiler() +} + +func (noToolchain) asm(b *builder, p *Package, obj, ofile, sfile string) error { + return noCompiler() +} + +func (noToolchain) pkgpath(basedir string, p *Package) string { + noCompiler() + return "" +} + +func (noToolchain) pack(b *builder, p *Package, objDir, afile string, ofiles []string) error { + return noCompiler() +} + +func (noToolchain) ld(b *builder, p *Package, out string, allactions []*action, mainpkg string, ofiles []string) error { + return noCompiler() +} + +func (noToolchain) cc(b *builder, p *Package, objdir, ofile, cfile string) error { + return noCompiler() } // The Go toolchain. +type gcToolchain struct{} -func (goToolchain) compiler() string { +func (gcToolchain) compiler() string { return tool(archChar + "g") } -func (goToolchain) linker() string { +func (gcToolchain) linker() string { return tool(archChar + "l") } -func (goToolchain) gc(b *builder, p *Package, obj string, importArgs []string, gofiles []string) (ofile string, err error) { +func (gcToolchain) gc(b *builder, p *Package, obj string, importArgs []string, gofiles []string) (ofile string, err error) { out := "_go_." + archChar ofile = obj + out gcargs := []string{"-p", p.ImportPath} @@ -1114,17 +1244,17 @@ func (goToolchain) gc(b *builder, p *Package, obj string, importArgs []string, g return ofile, b.run(p.Dir, p.ImportPath, args) } -func (goToolchain) asm(b *builder, p *Package, obj, ofile, sfile string) error { +func (gcToolchain) asm(b *builder, p *Package, obj, ofile, sfile string) error { sfile = mkAbs(p.Dir, sfile) return b.run(p.Dir, p.ImportPath, tool(archChar+"a"), "-I", obj, "-o", ofile, "-DGOOS_"+goos, "-DGOARCH_"+goarch, sfile) } -func (goToolchain) pkgpath(basedir string, p *Package) string { +func (gcToolchain) pkgpath(basedir string, p *Package) string { end := filepath.FromSlash(p.ImportPath + ".a") return filepath.Join(basedir, end) } -func (goToolchain) pack(b *builder, p *Package, objDir, afile string, ofiles []string) error { +func (gcToolchain) pack(b *builder, p *Package, objDir, afile string, ofiles []string) error { var absOfiles []string for _, f := range ofiles { absOfiles = append(absOfiles, mkAbs(objDir, f)) @@ -1132,12 +1262,12 @@ func (goToolchain) pack(b *builder, p *Package, objDir, afile string, ofiles []s return b.run(p.Dir, p.ImportPath, tool("pack"), "grc", mkAbs(objDir, afile), absOfiles) } -func (goToolchain) ld(b *builder, p *Package, out string, allactions []*action, mainpkg string, ofiles []string) error { +func (gcToolchain) ld(b *builder, p *Package, out string, allactions []*action, mainpkg string, ofiles []string) error { importArgs := b.includeArgs("-L", allactions) - return b.run(p.Dir, p.ImportPath, tool(archChar+"l"), "-o", out, importArgs, buildLdflags, mainpkg) + return b.run(".", p.ImportPath, tool(archChar+"l"), "-o", out, importArgs, buildLdflags, mainpkg) } -func (goToolchain) cc(b *builder, p *Package, objdir, ofile, cfile string) error { +func (gcToolchain) cc(b *builder, p *Package, objdir, ofile, cfile string) error { inc := filepath.Join(goroot, "pkg", fmt.Sprintf("%s_%s", goos, goarch)) cfile = mkAbs(p.Dir, cfile) return b.run(p.Dir, p.ImportPath, tool(archChar+"c"), "-FVw", @@ -1146,27 +1276,24 @@ func (goToolchain) cc(b *builder, p *Package, objdir, ofile, cfile string) error } // The Gccgo toolchain. +type gccgcToolchain struct{} var gccgoBin, _ = exec.LookPath("gccgo") -func (gccgoToolchain) compiler() string { +func (gccgcToolchain) compiler() string { return gccgoBin } -func (gccgoToolchain) linker() string { +func (gccgcToolchain) linker() string { return gccgoBin } -func (gccgoToolchain) gc(b *builder, p *Package, obj string, importArgs []string, gofiles []string) (ofile string, err error) { +func (gccgcToolchain) gc(b *builder, p *Package, obj string, importArgs []string, gofiles []string) (ofile string, err error) { out := p.Name + ".o" ofile = obj + out gcargs := []string{"-g"} - if p.Name != "main" { - if p.fake { - gcargs = append(gcargs, "-fgo-prefix=fake_"+p.ImportPath) - } else { - gcargs = append(gcargs, "-fgo-prefix=go_"+p.ImportPath) - } + if prefix := gccgoPrefix(p); prefix != "" { + gcargs = append(gcargs, "-fgo-prefix="+gccgoPrefix(p)) } args := stringList("gccgo", importArgs, "-c", gcargs, "-o", ofile, buildGccgoflags) for _, f := range gofiles { @@ -1175,19 +1302,19 @@ func (gccgoToolchain) gc(b *builder, p *Package, obj string, importArgs []string return ofile, b.run(p.Dir, p.ImportPath, args) } -func (gccgoToolchain) asm(b *builder, p *Package, obj, ofile, sfile string) error { +func (gccgcToolchain) asm(b *builder, p *Package, obj, ofile, sfile string) error { sfile = mkAbs(p.Dir, sfile) return b.run(p.Dir, p.ImportPath, "gccgo", "-I", obj, "-o", ofile, "-DGOOS_"+goos, "-DGOARCH_"+goarch, sfile) } -func (gccgoToolchain) pkgpath(basedir string, p *Package) string { +func (gccgcToolchain) pkgpath(basedir string, p *Package) string { end := filepath.FromSlash(p.ImportPath + ".a") afile := filepath.Join(basedir, end) // add "lib" to the final element return filepath.Join(filepath.Dir(afile), "lib"+filepath.Base(afile)) } -func (gccgoToolchain) pack(b *builder, p *Package, objDir, afile string, ofiles []string) error { +func (gccgcToolchain) pack(b *builder, p *Package, objDir, afile string, ofiles []string) error { var absOfiles []string for _, f := range ofiles { absOfiles = append(absOfiles, mkAbs(objDir, f)) @@ -1195,7 +1322,7 @@ func (gccgoToolchain) pack(b *builder, p *Package, objDir, afile string, ofiles return b.run(p.Dir, p.ImportPath, "ar", "cru", mkAbs(objDir, afile), absOfiles) } -func (tools gccgoToolchain) ld(b *builder, p *Package, out string, allactions []*action, mainpkg string, ofiles []string) error { +func (tools gccgcToolchain) ld(b *builder, p *Package, out string, allactions []*action, mainpkg string, ofiles []string) error { // gccgo needs explicit linking with all package dependencies, // and all LDFLAGS from cgo dependencies. afiles := make(map[*Package]string) @@ -1215,10 +1342,10 @@ func (tools gccgoToolchain) ld(b *builder, p *Package, out string, allactions [] ldflags = append(ldflags, afile) } ldflags = append(ldflags, cgoldflags...) - return b.run(p.Dir, p.ImportPath, "gccgo", "-o", out, buildGccgoflags, ofiles, "-Wl,-(", ldflags, "-Wl,-)") + return b.run(".", p.ImportPath, "gccgo", "-o", out, buildGccgoflags, ofiles, "-Wl,-(", ldflags, "-Wl,-)") } -func (gccgoToolchain) cc(b *builder, p *Package, objdir, ofile, cfile string) error { +func (gccgcToolchain) cc(b *builder, p *Package, objdir, ofile, cfile string) error { inc := filepath.Join(goroot, "pkg", fmt.Sprintf("%s_%s", goos, goarch)) cfile = mkAbs(p.Dir, cfile) return b.run(p.Dir, p.ImportPath, "gcc", "-Wall", "-g", @@ -1226,6 +1353,16 @@ func (gccgoToolchain) cc(b *builder, p *Package, objdir, ofile, cfile string) er "-DGOOS_"+goos, "-DGOARCH_"+goarch, "-c", cfile) } +func gccgoPrefix(p *Package) string { + switch { + case p.build.IsCommand() && !p.forceLibrary: + return "" + case p.fake: + return "fake_" + p.ImportPath + } + return "go_" + p.ImportPath +} + // gcc runs the gcc C compiler to create an object from a single C file. func (b *builder) gcc(p *Package, out string, flags []string, cfile string) error { cfile = mkAbs(p.Dir, cfile) @@ -1239,6 +1376,9 @@ func (b *builder) gccld(p *Package, out string, flags []string, obj []string) er // gccCmd returns a gcc command line prefix func (b *builder) gccCmd(objdir string) []string { + // NOTE: env.go's mkEnv knows that the first three + // strings returned are "gcc", "-I", objdir (and cuts them off). + // TODO: HOST_CC? a := []string{"gcc", "-I", objdir, "-g", "-O2"} @@ -1263,6 +1403,14 @@ func (b *builder) gccCmd(objdir string) []string { a = append(a, "-pthread") } } + + // On OS X, some of the compilers behave as if -fno-common + // is always set, and the Mach-O linker in 6l/8l assumes this. + // See http://golang.org/issue/3253. + if goos == "darwin" { + a = append(a, "-fno-common") + } + return a } @@ -1318,11 +1466,17 @@ func (b *builder) cgo(p *Package, cgoExe, obj string, gccfiles []string) (outGo, cgoflags := []string{} // TODO: make cgo not depend on $GOARCH? + objExt := archChar + if p.Standard && p.ImportPath == "runtime/cgo" { cgoflags = append(cgoflags, "-import_runtime_cgo=false") } - if _, ok := buildToolchain.(gccgoToolchain); ok { + if _, ok := buildToolchain.(gccgcToolchain); ok { cgoflags = append(cgoflags, "-gccgo") + if prefix := gccgoPrefix(p); prefix != "" { + cgoflags = append(cgoflags, "-gccgoprefix="+gccgoPrefix(p)) + } + objExt = "o" } if err := b.run(p.Dir, p.ImportPath, cgoExe, "-objdir", obj, cgoflags, "--", cgoCFLAGS, p.CgoFiles); err != nil { return nil, nil, err @@ -1330,7 +1484,7 @@ func (b *builder) cgo(p *Package, cgoExe, obj string, gccfiles []string) (outGo, outGo = append(outGo, gofiles...) // cc _cgo_defun.c - defunObj := obj + "_cgo_defun." + archChar + defunObj := obj + "_cgo_defun." + objExt if err := buildToolchain.cc(b, p, obj, defunObj, defunC); err != nil { return nil, nil, err } @@ -1361,7 +1515,7 @@ func (b *builder) cgo(p *Package, cgoExe, obj string, gccfiles []string) (outGo, return nil, nil, err } - if _, ok := buildToolchain.(gccgoToolchain); ok { + if _, ok := buildToolchain.(gccgcToolchain); ok { // we don't use dynimport when using gccgo. return outGo, outObj, nil } @@ -1373,7 +1527,7 @@ func (b *builder) cgo(p *Package, cgoExe, obj string, gccfiles []string) (outGo, } // cc _cgo_import.ARCH - importObj := obj + "_cgo_import." + archChar + importObj := obj + "_cgo_import." + objExt if err := buildToolchain.cc(b, p, obj, importObj, importC); err != nil { return nil, nil, err } diff --git a/src/cmd/go/clean.go b/src/cmd/go/clean.go index 809e0f0e4..773951826 100644 --- a/src/cmd/go/clean.go +++ b/src/cmd/go/clean.go @@ -110,7 +110,7 @@ func clean(p *Package) { } dirs, err := ioutil.ReadDir(p.Dir) if err != nil { - errorf("%v", err) + errorf("go clean %s: %v", p.Dir, err) return } diff --git a/src/cmd/go/discovery.go b/src/cmd/go/discovery.go new file mode 100644 index 000000000..d9f930867 --- /dev/null +++ b/src/cmd/go/discovery.go @@ -0,0 +1,63 @@ +// Copyright 2012 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. + +// +build !cmd_go_bootstrap + +// This code is compiled into the real 'go' binary, but it is not +// compiled into the binary that is built during all.bash, so as +// to avoid needing to build net (and thus use cgo) during the +// bootstrap process. + +package main + +import ( + "encoding/xml" + "io" + "strings" +) + +// parseMetaGoImports returns meta imports from the HTML in r. +// Parsing ends at the end of the <head> section or the beginning of the <body>. +func parseMetaGoImports(r io.Reader) (imports []metaImport) { + d := xml.NewDecoder(r) + d.Strict = false + for { + t, err := d.Token() + if err != nil { + return + } + if e, ok := t.(xml.StartElement); ok && strings.EqualFold(e.Name.Local, "body") { + return + } + if e, ok := t.(xml.EndElement); ok && strings.EqualFold(e.Name.Local, "head") { + return + } + e, ok := t.(xml.StartElement) + if !ok || !strings.EqualFold(e.Name.Local, "meta") { + continue + } + if attrValue(e.Attr, "name") != "go-import" { + continue + } + if f := strings.Fields(attrValue(e.Attr, "content")); len(f) == 3 { + imports = append(imports, metaImport{ + Prefix: f[0], + VCS: f[1], + RepoRoot: f[2], + }) + } + } + return +} + +// attrValue returns the attribute value for the case-insensitive key +// `name', or the empty string if nothing is found. +func attrValue(attrs []xml.Attr, name string) string { + for _, a := range attrs { + if strings.EqualFold(a.Name.Local, name) { + return a.Value + } + } + return "" +} diff --git a/src/cmd/go/doc.go b/src/cmd/go/doc.go index 8df57ff38..775f305d2 100644 --- a/src/cmd/go/doc.go +++ b/src/cmd/go/doc.go @@ -14,6 +14,7 @@ The commands are: build compile packages and dependencies clean remove object files doc run godoc on package sources + env print Go environment information fix run go tool fix on packages fmt run gofmt on package sources get download and install packages and dependencies @@ -76,6 +77,8 @@ The build flags are shared by the build, install, run, and test commands: -x print the commands. + -compiler name + name of compiler to use, as in runtime.Compiler (gccgo or gc) -gccgoflags 'arg list' arguments to pass on each gccgo compiler/linker invocation -gcflags 'arg list' @@ -153,6 +156,20 @@ To run godoc with specific options, run godoc itself. See also: go fix, go fmt, go vet. +Print Go environment information + +Usage: + + go env [var ...] + +Env prints Go environment information. + +By default env prints information as a shell script +(on Windows, a batch file). If one or more variable +names is given as arguments, env prints the value of +each named variable on its own line. + + Run go tool fix on packages Usage: @@ -196,7 +213,7 @@ Get downloads and installs the packages named by the import paths, along with their dependencies. The -a, -n, -v, -x, and -p flags have the same meaning as in 'go build' -and 'go install'. See 'go help install'. +and 'go install'. See 'go help build'. The -d flag instructs get to stop after downloading the packages; that is, it instructs get not to install the packages. @@ -253,21 +270,28 @@ is equivalent to -f '{{.ImportPath}}'. The struct being passed to the template is: type Package struct { + Dir string // directory containing package sources + ImportPath string // import path of package in dir Name string // package name Doc string // package documentation string - ImportPath string // import path of package in dir - Dir string // directory containing package sources - Version string // version of installed package (TODO) + Target string // install path + Goroot bool // is this package in the Go root? + Standard bool // is this package part of the standard Go library? Stale bool // would 'go install' do anything for this package? + Root string // Go root or Go path dir containing this package // Source files - GoFiles []string // .go source files (excluding CgoFiles, TestGoFiles, and XTestGoFiles) - TestGoFiles []string // _test.go source files internal to the package they are testing - XTestGoFiles []string // _test.go source files external to the package they are testing - CFiles []string // .c source files - HFiles []string // .h source files - SFiles []string // .s source files - CgoFiles []string // .go sources files that import "C" + GoFiles []string // .go source files (excluding CgoFiles, TestGoFiles, XTestGoFiles) + CgoFiles []string // .go sources files that import "C" + CFiles []string // .c source files + HFiles []string // .h source files + SFiles []string // .s source files + SysoFiles []string // .syso object files to add to archive + + // Cgo directives + CgoCFLAGS []string // cgo: flags for C compiler + CgoLDFLAGS []string // cgo: flags for linker + CgoPkgConfig []string // cgo: pkg-config names // Dependency information Imports []string // import paths used by this package @@ -275,8 +299,13 @@ being passed to the template is: // Error information Incomplete bool // this package or a dependency has an error - Error *PackageError // error loading package + Error *PackageError // error loading package DepsErrors []*PackageError // errors loading dependencies + + TestGoFiles []string // _test.go files in package + TestImports []string // imports from TestGoFiles + XTestGoFiles []string // _test.go files outside package + XTestImports []string // imports from XTestGoFiles } The -json flag causes the package data to be printed in JSON format @@ -479,9 +508,8 @@ An import path is a pattern if it includes one or more "..." wildcards, each of which can match any string, including the empty string and strings containing slashes. Such a pattern expands to all package directories found in the GOPATH trees with names matching the -patterns. For example, encoding/... expands to all packages -in subdirectories of the encoding tree, while net... expands to -net and all its subdirectories. +patterns. As a special case, x/... matches x as well as x's subdirectories. +For example, net/... expands to net and packages in its subdirectories. An import path can also name a package to be downloaded from a remote repository. Run 'go help remote' for details. @@ -535,7 +563,12 @@ A few common code hosting sites have special syntax: import "launchpad.net/~user/project/branch" import "launchpad.net/~user/project/branch/sub/directory" -For code hosted on other servers, an import path of the form +For code hosted on other servers, import paths may either be qualified +with the version control type, or the go tool can dynamically fetch +the import path over https/http and discover where the code resides +from a <meta> tag in the HTML. + +To declare the code location, an import path of the form repository.vcs/path @@ -564,6 +597,42 @@ When a version control system supports multiple protocols, each is tried in turn when downloading. For example, a Git download tries git://, then https://, then http://. +If the import path is not a known code hosting site and also lacks a +version control qualifier, the go tool attempts to fetch the import +over https/http and looks for a <meta> tag in the document's HTML +<head>. + +The meta tag has the form: + + <meta name="go-import" content="import-prefix vcs repo-root"> + +The import-prefix is the import path correponding to the repository +root. It must be a prefix or an exact match of the package being +fetched with "go get". If it's not an exact match, another http +request is made at the prefix to verify the <meta> tags match. + +The vcs is one of "git", "hg", "svn", etc, + +The repo-root is the root of the version control system +containing a scheme and not containing a .vcs qualifier. + +For example, + + import "example.org/pkg/foo" + +will result in the following request(s): + + https://example.org/pkg/foo?go-get=1 (preferred) + http://example.org/pkg/foo?go-get=1 (fallback) + +If that page contains the meta tag + + <meta name="go-import" content="example.org git https://code.org/r/p/exproj"> + +the go tool will verify that https://example.org/?go-get=1 contains the +same meta tag and then git clone https://code.org/r/p/exproj into +GOPATH/src/example.org. + New downloaded packages are written to the first directory listed in the GOPATH environment variable (see 'go help gopath'). diff --git a/src/cmd/go/env.go b/src/cmd/go/env.go new file mode 100644 index 000000000..d5b034809 --- /dev/null +++ b/src/cmd/go/env.go @@ -0,0 +1,89 @@ +// Copyright 2012 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. + +package main + +import ( + "fmt" + "runtime" + "strings" +) + +var cmdEnv = &Command{ + Run: runEnv, + UsageLine: "env [var ...]", + Short: "print Go environment information", + Long: ` +Env prints Go environment information. + +By default env prints information as a shell script +(on Windows, a batch file). If one or more variable +names is given as arguments, env prints the value of +each named variable on its own line. + `, +} + +type envVar struct { + name, value string +} + +func mkEnv() []envVar { + var b builder + b.init() + + env := []envVar{ + {"GOROOT", goroot}, + {"GOBIN", gobin}, + {"GOARCH", goarch}, + {"GOCHAR", archChar}, + {"GOOS", goos}, + {"GOEXE", exeSuffix}, + {"GOHOSTARCH", runtime.GOARCH}, + {"GOHOSTOS", runtime.GOOS}, + {"GOTOOLDIR", toolDir}, + {"GOGCCFLAGS", strings.Join(b.gccCmd(".")[3:], " ")}, + } + + if buildContext.CgoEnabled { + env = append(env, envVar{"CGO_ENABLED", "1"}) + } else { + env = append(env, envVar{"CGO_ENABLED", "0"}) + } + + return env +} + +func findEnv(env []envVar, name string) string { + for _, e := range env { + if e.name == name { + return e.value + } + } + return "" +} + +func runEnv(cmd *Command, args []string) { + env := mkEnv() + if len(args) > 0 { + for _, name := range args { + fmt.Printf("%s\n", findEnv(env, name)) + } + return + } + + switch runtime.GOOS { + default: + for _, e := range env { + fmt.Printf("%s=\"%s\"\n", e.name, e.value) + } + case "plan9": + for _, e := range env { + fmt.Printf("%s='%s'\n", e.name, strings.Replace(e.value, "'", "''", -1)) + } + case "windows": + for _, e := range env { + fmt.Printf("set %s=%s\n", e.name, e.value) + } + } +} diff --git a/src/cmd/go/get.go b/src/cmd/go/get.go index 0ad22adb0..abaf5ffa0 100644 --- a/src/cmd/go/get.go +++ b/src/cmd/go/get.go @@ -8,6 +8,7 @@ package main import ( "fmt" + "go/build" "os" "path/filepath" "runtime" @@ -23,7 +24,7 @@ Get downloads and installs the packages named by the import paths, along with their dependencies. The -a, -n, -v, -x, and -p flags have the same meaning as in 'go build' -and 'go install'. See 'go help install'. +and 'go install'. See 'go help build'. The -d flag instructs get to stop after downloading the packages; that is, it instructs get not to install the packages. @@ -57,19 +58,13 @@ func init() { func runGet(cmd *Command, args []string) { // Phase 1. Download/update. - args = importPaths(args) var stk importStack - for _, arg := range args { + for _, arg := range downloadPaths(args) { download(arg, &stk) } exitIfErrors() - if *getD { - // download only - return - } - - // Phase 2. Install. + // Phase 2. Rescan packages and reevaluate args list. // Code we downloaded and all code that depends on it // needs to be evicted from the package cache so that @@ -80,9 +75,48 @@ func runGet(cmd *Command, args []string) { delete(packageCache, name) } + args = importPaths(args) + + // Phase 3. Install. + if *getD { + // Download only. + // Check delayed until now so that importPaths + // has a chance to print errors. + return + } + runInstall(cmd, args) } +// downloadPath prepares the list of paths to pass to download. +// It expands ... patterns that can be expanded. If there is no match +// for a particular pattern, downloadPaths leaves it in the result list, +// in the hope that we can figure out the repository from the +// initial ...-free prefix. +func downloadPaths(args []string) []string { + args = importPathsNoDotExpansion(args) + var out []string + for _, a := range args { + if strings.Contains(a, "...") { + var expand []string + // Use matchPackagesInFS to avoid printing + // warnings. They will be printed by the + // eventual call to importPaths instead. + if build.IsLocalImport(a) { + expand = matchPackagesInFS(a) + } else { + expand = matchPackages(a) + } + if len(expand) > 0 { + out = append(out, expand...) + continue + } + } + out = append(out, a) + } + return out +} + // downloadCache records the import paths we have already // considered during the download, to avoid duplicate work when // there is more than one dependency sequence leading to @@ -112,38 +146,73 @@ func download(arg string, stk *importStack) { } downloadCache[arg] = true + pkgs := []*Package{p} + wildcardOkay := len(*stk) == 0 + // Download if the package is missing, or update if we're using -u. if p.Dir == "" || *getU { // The actual download. stk.push(p.ImportPath) - defer stk.pop() - if err := downloadPackage(p); err != nil { + err := downloadPackage(p) + if err != nil { errorf("%s", &PackageError{ImportStack: stk.copy(), Err: err.Error()}) + stk.pop() return } - // Reread the package information from the updated files. - p = reloadPackage(arg, stk) - if p.Error != nil { - errorf("%s", p.Error) - return + args := []string{arg} + // If the argument has a wildcard in it, re-evaluate the wildcard. + // We delay this until after reloadPackage so that the old entry + // for p has been replaced in the package cache. + if wildcardOkay && strings.Contains(arg, "...") { + if build.IsLocalImport(arg) { + args = matchPackagesInFS(arg) + } else { + args = matchPackages(arg) + } } - } - if *getFix { - run(stringList(tool("fix"), relPaths(p.gofiles))) + // Clear all relevant package cache entries before + // doing any new loads. + for _, arg := range args { + p := packageCache[arg] + if p != nil { + delete(packageCache, p.Dir) + delete(packageCache, p.ImportPath) + } + } - // The imports might have changed, so reload again. - p = reloadPackage(arg, stk) - if p.Error != nil { - errorf("%s", p.Error) - return + pkgs = pkgs[:0] + for _, arg := range args { + stk.push(arg) + p := loadPackage(arg, stk) + stk.pop() + if p.Error != nil { + errorf("%s", p.Error) + continue + } + pkgs = append(pkgs, p) } } - // Process dependencies, now that we know what they are. - for _, dep := range p.deps { - download(dep.ImportPath, stk) + // Process package, which might now be multiple packages + // due to wildcard expansion. + for _, p := range pkgs { + if *getFix { + run(stringList(tool("fix"), relPaths(p.gofiles))) + + // The imports might have changed, so reload again. + p = reloadPackage(arg, stk) + if p.Error != nil { + errorf("%s", p.Error) + return + } + } + + // Process dependencies, now that we know what they are. + for _, dep := range p.deps { + download(dep.ImportPath, stk) + } } } @@ -162,10 +231,11 @@ func downloadPackage(p *Package) error { } else { // Analyze the import path to determine the version control system, // repository, and the import path for the root of the repository. - vcs, repo, rootPath, err = vcsForImportPath(p.ImportPath) - } - if err != nil { - return err + rr, err := repoRootForImportPath(p.ImportPath) + if err != nil { + return err + } + vcs, repo, rootPath = rr.vcs, rr.repo, rr.root } if p.build.SrcRoot == "" { diff --git a/src/cmd/go/help.go b/src/cmd/go/help.go index 60654a272..26640d833 100644 --- a/src/cmd/go/help.go +++ b/src/cmd/go/help.go @@ -36,9 +36,8 @@ An import path is a pattern if it includes one or more "..." wildcards, each of which can match any string, including the empty string and strings containing slashes. Such a pattern expands to all package directories found in the GOPATH trees with names matching the -patterns. For example, encoding/... expands to all packages -in subdirectories of the encoding tree, while net... expands to -net and all its subdirectories. +patterns. As a special case, x/... matches x as well as x's subdirectories. +For example, net/... expands to net and packages in its subdirectories. An import path can also name a package to be downloaded from a remote repository. Run 'go help remote' for details. @@ -96,7 +95,12 @@ A few common code hosting sites have special syntax: import "launchpad.net/~user/project/branch" import "launchpad.net/~user/project/branch/sub/directory" -For code hosted on other servers, an import path of the form +For code hosted on other servers, import paths may either be qualified +with the version control type, or the go tool can dynamically fetch +the import path over https/http and discover where the code resides +from a <meta> tag in the HTML. + +To declare the code location, an import path of the form repository.vcs/path @@ -125,6 +129,42 @@ When a version control system supports multiple protocols, each is tried in turn when downloading. For example, a Git download tries git://, then https://, then http://. +If the import path is not a known code hosting site and also lacks a +version control qualifier, the go tool attempts to fetch the import +over https/http and looks for a <meta> tag in the document's HTML +<head>. + +The meta tag has the form: + + <meta name="go-import" content="import-prefix vcs repo-root"> + +The import-prefix is the import path correponding to the repository +root. It must be a prefix or an exact match of the package being +fetched with "go get". If it's not an exact match, another http +request is made at the prefix to verify the <meta> tags match. + +The vcs is one of "git", "hg", "svn", etc, + +The repo-root is the root of the version control system +containing a scheme and not containing a .vcs qualifier. + +For example, + + import "example.org/pkg/foo" + +will result in the following request(s): + + https://example.org/pkg/foo?go-get=1 (preferred) + http://example.org/pkg/foo?go-get=1 (fallback) + +If that page contains the meta tag + + <meta name="go-import" content="example.org git https://code.org/r/p/exproj"> + +the go tool will verify that https://example.org/?go-get=1 contains the +same meta tag and then git clone https://code.org/r/p/exproj into +GOPATH/src/example.org. + New downloaded packages are written to the first directory listed in the GOPATH environment variable (see 'go help gopath'). diff --git a/src/cmd/go/http.go b/src/cmd/go/http.go index 8d9b2a165..6de9a3e1e 100644 --- a/src/cmd/go/http.go +++ b/src/cmd/go/http.go @@ -13,8 +13,11 @@ package main import ( "fmt" + "io" "io/ioutil" + "log" "net/http" + "net/url" ) // httpGET returns the data from an HTTP GET request for the given URL. @@ -33,3 +36,52 @@ func httpGET(url string) ([]byte, error) { } return b, nil } + +// httpClient is the default HTTP client, but a variable so it can be +// changed by tests, without modifying http.DefaultClient. +var httpClient = http.DefaultClient + +// httpsOrHTTP returns the body of either the importPath's +// https resource or, if unavailable, the http resource. +func httpsOrHTTP(importPath string) (urlStr string, body io.ReadCloser, err error) { + fetch := func(scheme string) (urlStr string, res *http.Response, err error) { + u, err := url.Parse(scheme + "://" + importPath) + if err != nil { + return "", nil, err + } + u.RawQuery = "go-get=1" + urlStr = u.String() + if buildV { + log.Printf("Fetching %s", urlStr) + } + res, err = httpClient.Get(urlStr) + return + } + closeBody := func(res *http.Response) { + if res != nil { + res.Body.Close() + } + } + urlStr, res, err := fetch("https") + if err != nil || res.StatusCode != 200 { + if buildV { + if err != nil { + log.Printf("https fetch failed.") + } else { + log.Printf("ignoring https fetch with status code %d", res.StatusCode) + } + } + closeBody(res) + urlStr, res, err = fetch("http") + } + if err != nil { + closeBody(res) + return "", nil, err + } + // Note: accepting a non-200 OK here, so people can serve a + // meta import in their http 404 page. + if buildV { + log.Printf("Parsing meta tags from %s (status code %d)", urlStr, res.StatusCode) + } + return urlStr, res.Body, nil +} diff --git a/src/cmd/go/list.go b/src/cmd/go/list.go index fa3f5d330..edb59aa79 100644 --- a/src/cmd/go/list.go +++ b/src/cmd/go/list.go @@ -30,30 +30,42 @@ is equivalent to -f '{{.ImportPath}}'. The struct being passed to the template is: type Package struct { + Dir string // directory containing package sources + ImportPath string // import path of package in dir Name string // package name Doc string // package documentation string - ImportPath string // import path of package in dir - Dir string // directory containing package sources - Version string // version of installed package (TODO) + Target string // install path + Goroot bool // is this package in the Go root? + Standard bool // is this package part of the standard Go library? Stale bool // would 'go install' do anything for this package? + Root string // Go root or Go path dir containing this package // Source files - GoFiles []string // .go source files (excluding CgoFiles, TestGoFiles, and XTestGoFiles) - TestGoFiles []string // _test.go source files internal to the package they are testing - XTestGoFiles []string // _test.go source files external to the package they are testing - CFiles []string // .c source files - HFiles []string // .h source files - SFiles []string // .s source files - CgoFiles []string // .go sources files that import "C" + GoFiles []string // .go source files (excluding CgoFiles, TestGoFiles, XTestGoFiles) + CgoFiles []string // .go sources files that import "C" + CFiles []string // .c source files + HFiles []string // .h source files + SFiles []string // .s source files + SysoFiles []string // .syso object files to add to archive + + // Cgo directives + CgoCFLAGS []string // cgo: flags for C compiler + CgoLDFLAGS []string // cgo: flags for linker + CgoPkgConfig []string // cgo: pkg-config names // Dependency information Imports []string // import paths used by this package Deps []string // all (recursively) imported dependencies - + // Error information Incomplete bool // this package or a dependency has an error - Error *PackageError // error loading package + Error *PackageError // error loading package DepsErrors []*PackageError // errors loading dependencies + + TestGoFiles []string // _test.go files in package + TestImports []string // imports from TestGoFiles + XTestGoFiles []string // _test.go files outside package + XTestImports []string // imports from XTestGoFiles } The -json flag causes the package data to be printed in JSON format @@ -75,6 +87,7 @@ For more about specifying packages, see 'go help packages'. func init() { cmdList.Run = runList // break init cycle + cmdList.Flag.Var(buildCompiler{}, "compiler", "") } var listE = cmdList.Flag.Bool("e", false, "") diff --git a/src/cmd/go/main.go b/src/cmd/go/main.go index 3a0f7a089..2f8209c86 100644 --- a/src/cmd/go/main.go +++ b/src/cmd/go/main.go @@ -76,6 +76,7 @@ var commands = []*Command{ cmdBuild, cmdClean, cmdDoc, + cmdEnv, cmdFix, cmdFmt, cmdGet, @@ -246,8 +247,9 @@ func help(args []string) { os.Exit(2) // failed at 'go help cmd' } -// importPaths returns the import paths to use for the given command line. -func importPaths(args []string) []string { +// importPathsNoDotExpansion returns the import paths to use for the given +// command line, but it does no ... expansion. +func importPathsNoDotExpansion(args []string) []string { if len(args) == 0 { return []string{"."} } @@ -269,13 +271,26 @@ func importPaths(args []string) []string { } else { a = path.Clean(a) } - - if build.IsLocalImport(a) && strings.Contains(a, "...") { - out = append(out, allPackagesInFS(a)...) + if a == "all" || a == "std" { + out = append(out, allPackages(a)...) continue } - if a == "all" || a == "std" || strings.Contains(a, "...") { - out = append(out, allPackages(a)...) + out = append(out, a) + } + return out +} + +// importPaths returns the import paths to use for the given command line. +func importPaths(args []string) []string { + args = importPathsNoDotExpansion(args) + var out []string + for _, a := range args { + if strings.Contains(a, "...") { + if build.IsLocalImport(a) { + out = append(out, allPackagesInFS(a)...) + } else { + out = append(out, allPackages(a)...) + } continue } out = append(out, a) @@ -344,6 +359,10 @@ func runOut(dir string, cmdargs ...interface{}) []byte { func matchPattern(pattern string) func(name string) bool { re := regexp.QuoteMeta(pattern) re = strings.Replace(re, `\.\.\.`, `.*`, -1) + // Special case: foo/... matches foo too. + if strings.HasSuffix(re, `/.*`) { + re = re[:len(re)-len(`/.*`)] + `(/.*)?` + } reg := regexp.MustCompile(`^` + re + `$`) return func(name string) bool { return reg.MatchString(name) @@ -355,6 +374,14 @@ func matchPattern(pattern string) func(name string) bool { // The pattern is either "all" (all packages), "std" (standard packages) // or a path including "...". func allPackages(pattern string) []string { + pkgs := matchPackages(pattern) + if len(pkgs) == 0 { + fmt.Fprintf(os.Stderr, "warning: %q matched no packages\n", pattern) + } + return pkgs +} + +func matchPackages(pattern string) []string { match := func(string) bool { return true } if pattern != "all" && pattern != "std" { match = matchPattern(pattern) @@ -431,10 +458,6 @@ func allPackages(pattern string) []string { return nil }) } - - if len(pkgs) == 0 { - fmt.Fprintf(os.Stderr, "warning: %q matched no packages\n", pattern) - } return pkgs } @@ -442,6 +465,14 @@ func allPackages(pattern string) []string { // beginning ./ or ../, meaning it should scan the tree rooted // at the given directory. There are ... in the pattern too. func allPackagesInFS(pattern string) []string { + pkgs := matchPackagesInFS(pattern) + if len(pkgs) == 0 { + fmt.Fprintf(os.Stderr, "warning: %q matched no packages\n", pattern) + } + return pkgs +} + +func matchPackagesInFS(pattern string) []string { // Find directory to begin the scan. // Could be smarter but this one optimization // is enough for now, since ... is usually at the @@ -481,10 +512,6 @@ func allPackagesInFS(pattern string) []string { pkgs = append(pkgs, name) return nil }) - - if len(pkgs) == 0 { - fmt.Fprintf(os.Stderr, "warning: %q matched no packages\n", pattern) - } return pkgs } diff --git a/src/cmd/go/match_test.go b/src/cmd/go/match_test.go new file mode 100644 index 000000000..f058f235a --- /dev/null +++ b/src/cmd/go/match_test.go @@ -0,0 +1,36 @@ +// Copyright 2012 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. + +package main + +import "testing" + +var matchTests = []struct { + pattern string + path string + match bool +}{ + {"...", "foo", true}, + {"net", "net", true}, + {"net", "net/http", false}, + {"net/http", "net", false}, + {"net/http", "net/http", true}, + {"net...", "netchan", true}, + {"net...", "net", true}, + {"net...", "net/http", true}, + {"net...", "not/http", false}, + {"net/...", "netchan", false}, + {"net/...", "net", true}, + {"net/...", "net/http", true}, + {"net/...", "not/http", false}, +} + +func TestMatchPattern(t *testing.T) { + for _, tt := range matchTests { + match := matchPattern(tt.pattern)(tt.path) + if match != tt.match { + t.Errorf("matchPattern(%q)(%q) = %v, want %v", tt.pattern, tt.path, match, tt.match) + } + } +} diff --git a/src/cmd/go/pkg.go b/src/cmd/go/pkg.go index 3763000c6..44dbd6798 100644 --- a/src/cmd/go/pkg.go +++ b/src/cmd/go/pkg.go @@ -17,6 +17,7 @@ import ( "sort" "strings" "time" + "unicode" ) // A Package describes a single package found in a directory. @@ -24,25 +25,23 @@ type Package struct { // Note: These fields are part of the go command's public API. // See list.go. It is okay to add fields, but not to change or // remove existing ones. Keep in sync with list.go - Dir string `json:",omitempty"` // directory containing package sources - ImportPath string `json:",omitempty"` // import path of package in dir - Name string `json:",omitempty"` // package name - Doc string `json:",omitempty"` // package documentation string - Target string `json:",omitempty"` // install path - Goroot bool `json:",omitempty"` // is this package found in the Go root? - Standard bool `json:",omitempty"` // is this package part of the standard Go library? - Stale bool `json:",omitempty"` // would 'go install' do anything for this package? - Incomplete bool `json:",omitempty"` // was there an error loading this package or dependencies? - Error *PackageError `json:",omitempty"` // error loading this package (not dependencies) - - Root string `json:",omitempty"` // root dir of tree this package belongs to + Dir string `json:",omitempty"` // directory containing package sources + ImportPath string `json:",omitempty"` // import path of package in dir + Name string `json:",omitempty"` // package name + Doc string `json:",omitempty"` // package documentation string + Target string `json:",omitempty"` // install path + Goroot bool `json:",omitempty"` // is this package found in the Go root? + Standard bool `json:",omitempty"` // is this package part of the standard Go library? + Stale bool `json:",omitempty"` // would 'go install' do anything for this package? + Root string `json:",omitempty"` // Go root or Go path dir containing this package // Source files - GoFiles []string `json:",omitempty"` // .go source files (excluding CgoFiles, TestGoFiles XTestGoFiles) - CgoFiles []string `json:",omitempty"` // .go sources files that import "C" - CFiles []string `json:",omitempty"` // .c source files - HFiles []string `json:",omitempty"` // .h source files - SFiles []string `json:",omitempty"` // .s source files + GoFiles []string `json:",omitempty"` // .go source files (excluding CgoFiles, TestGoFiles, XTestGoFiles) + CgoFiles []string `json:",omitempty"` // .go sources files that import "C" + CFiles []string `json:",omitempty"` // .c source files + HFiles []string `json:",omitempty"` // .h source files + SFiles []string `json:",omitempty"` // .s source files + SysoFiles []string `json:",omitempty"` // .syso system object files added to package // Cgo directives CgoCFLAGS []string `json:",omitempty"` // cgo: flags for C compiler @@ -50,8 +49,12 @@ type Package struct { CgoPkgConfig []string `json:",omitempty"` // cgo: pkg-config names // Dependency information - Imports []string `json:",omitempty"` // import paths used by this package - Deps []string `json:",omitempty"` // all (recursively) imported dependencies + Imports []string `json:",omitempty"` // import paths used by this package + Deps []string `json:",omitempty"` // all (recursively) imported dependencies + + // Error information + Incomplete bool `json:",omitempty"` // was there an error loading this package or dependencies? + Error *PackageError `json:",omitempty"` // error loading this package (not dependencies) DepsErrors []*PackageError `json:",omitempty"` // errors loading dependencies // Test information @@ -61,16 +64,17 @@ type Package struct { XTestImports []string `json:",omitempty"` // imports from XTestGoFiles // Unexported fields are not part of the public API. - build *build.Package - pkgdir string // overrides build.PkgDir - imports []*Package - deps []*Package - gofiles []string // GoFiles+CgoFiles+TestGoFiles+XTestGoFiles files, absolute paths - target string // installed file for this package (may be executable) - fake bool // synthesized package - forceBuild bool // this package must be rebuilt - local bool // imported via local path (./ or ../) - localPrefix string // interpret ./ and ../ imports relative to this prefix + build *build.Package + pkgdir string // overrides build.PkgDir + imports []*Package + deps []*Package + gofiles []string // GoFiles+CgoFiles+TestGoFiles+XTestGoFiles files, absolute paths + target string // installed file for this package (may be executable) + fake bool // synthesized package + forceBuild bool // this package must be rebuilt + forceLibrary bool // this package is a library (even if named "main") + local bool // imported via local path (./ or ../) + localPrefix string // interpret ./ and ../ imports relative to this prefix } func (p *Package) copyBuild(pp *build.Package) { @@ -89,6 +93,7 @@ func (p *Package) copyBuild(pp *build.Package) { p.CFiles = pp.CFiles p.HFiles = pp.HFiles p.SFiles = pp.SFiles + p.SysoFiles = pp.SysoFiles p.CgoCFLAGS = pp.CgoCFLAGS p.CgoLDFLAGS = pp.CgoLDFLAGS p.CgoPkgConfig = pp.CgoPkgConfig @@ -171,7 +176,16 @@ func reloadPackage(arg string, stk *importStack) *Package { // a special case, so that all the code to deal with ordinary imports works // automatically. func dirToImportPath(dir string) string { - return pathpkg.Join("_", strings.Replace(filepath.ToSlash(dir), ":", "_", -1)) + return pathpkg.Join("_", strings.Map(makeImportValid, filepath.ToSlash(dir))) +} + +func makeImportValid(r rune) rune { + // Should match Go spec, compilers, and ../../pkg/go/parser/parser.go:/isValidImport. + const illegalChars = `!"#$%&'()*,:;<=>?[\]^{|}` + "`\uFFFD" + if !unicode.IsGraphic(r) || unicode.IsSpace(r) || strings.ContainsRune(illegalChars, r) { + return '_' + } + return r } // loadImport scans the directory named by path, which must be an import path, @@ -276,9 +290,8 @@ func (p *Package) load(stk *importStack, bp *build.Package, err error) *Package p.copyBuild(bp) // The localPrefix is the path we interpret ./ imports relative to. - // Now that we've fixed the import path, it's just the import path. // Synthesized main packages sometimes override this. - p.localPrefix = p.ImportPath + p.localPrefix = dirToImportPath(p.Dir) if err != nil { p.Incomplete = true @@ -340,6 +353,16 @@ func (p *Package) load(stk *importStack, bp *build.Package, err error) *Package } p1 := loadImport(path, p.Dir, stk, p.build.ImportPos[path]) if p1.local { + if !p.local && p.Error == nil { + p.Error = &PackageError{ + ImportStack: stk.copy(), + Err: fmt.Sprintf("local import %q in non-local package", path), + } + pos := p.build.ImportPos[path] + if len(pos) > 0 { + p.Error.Pos = pos[0].String() + } + } path = p1.ImportPath importPaths[i] = path } @@ -371,7 +394,7 @@ func (p *Package) load(stk *importStack, bp *build.Package, err error) *Package } // unsafe is a fake package. - if p.Standard && p.ImportPath == "unsafe" { + if p.Standard && (p.ImportPath == "unsafe" || buildContext.Compiler == "gccgo") { p.target = "" } @@ -416,7 +439,7 @@ func computeStale(pkgs ...*Package) { // isStale reports whether package p needs to be rebuilt. func isStale(p *Package, topRoot map[string]bool) bool { - if p.Standard && p.ImportPath == "unsafe" { + if p.Standard && (p.ImportPath == "unsafe" || buildContext.Compiler == "gccgo") { // fake, builtin package return false } @@ -486,7 +509,7 @@ func isStale(p *Package, topRoot map[string]bool) bool { return false } - srcs := stringList(p.GoFiles, p.CFiles, p.HFiles, p.SFiles, p.CgoFiles) + srcs := stringList(p.GoFiles, p.CFiles, p.HFiles, p.SFiles, p.CgoFiles, p.SysoFiles) for _, src := range srcs { if olderThan(filepath.Join(p.Dir, src)) { return true diff --git a/src/cmd/go/run.go b/src/cmd/go/run.go index 2976d5c8d..94cd59296 100644 --- a/src/cmd/go/run.go +++ b/src/cmd/go/run.go @@ -26,9 +26,7 @@ See also: go build. func init() { cmdRun.Run = runRun // break init loop - cmdRun.Flag.BoolVar(&buildA, "a", false, "") - cmdRun.Flag.BoolVar(&buildN, "n", false, "") - cmdRun.Flag.BoolVar(&buildX, "x", false, "") + addBuildFlags(cmdRun) } func printStderr(args ...interface{}) (int, error) { @@ -44,12 +42,15 @@ func runRun(cmd *Command, args []string) { i++ } files, cmdArgs := args[:i], args[i:] + if len(files) == 0 { + fatalf("go run: no go files listed") + } p := goFilesPackage(files) if p.Error != nil { fatalf("%s", p.Error) } if p.Name != "main" { - fatalf("cannot run non-main package") + fatalf("go run: cannot run non-main package") } p.target = "" // must build - not up to date a1 := b.action(modeBuild, modeBuild, p) diff --git a/src/cmd/go/test.bash b/src/cmd/go/test.bash index daca144ee..541535101 100755 --- a/src/cmd/go/test.bash +++ b/src/cmd/go/test.bash @@ -22,37 +22,50 @@ do done # Test local (./) imports. -./testgo build -o hello testdata/local/easy.go -./hello >hello.out -if ! grep -q '^easysub\.Hello' hello.out; then - echo "testdata/local/easy.go did not generate expected output" - cat hello.out - ok=false -fi - -./testgo build -o hello testdata/local/easysub/main.go -./hello >hello.out -if ! grep -q '^easysub\.Hello' hello.out; then - echo "testdata/local/easysub/main.go did not generate expected output" - cat hello.out - ok=false -fi - -./testgo build -o hello testdata/local/hard.go -./hello >hello.out -if ! grep -q '^sub\.Hello' hello.out || ! grep -q '^subsub\.Hello' hello.out ; then - echo "testdata/local/hard.go did not generate expected output" - cat hello.out - ok=false -fi +testlocal() { + local="$1" + ./testgo build -o hello "testdata/$local/easy.go" + ./hello >hello.out + if ! grep -q '^easysub\.Hello' hello.out; then + echo "testdata/$local/easy.go did not generate expected output" + cat hello.out + ok=false + fi + + ./testgo build -o hello "testdata/$local/easysub/main.go" + ./hello >hello.out + if ! grep -q '^easysub\.Hello' hello.out; then + echo "testdata/$local/easysub/main.go did not generate expected output" + cat hello.out + ok=false + fi + + ./testgo build -o hello "testdata/$local/hard.go" + ./hello >hello.out + if ! grep -q '^sub\.Hello' hello.out || ! grep -q '^subsub\.Hello' hello.out ; then + echo "testdata/$local/hard.go did not generate expected output" + cat hello.out + ok=false + fi + + rm -f err.out hello.out hello + + # Test that go install x.go fails. + if ./testgo install "testdata/$local/easy.go" >/dev/null 2>&1; then + echo "go install testdata/$local/easy.go succeeded" + ok=false + fi +} -rm -f err.out hello.out hello +# Test local imports +testlocal local -# Test that go install x.go fails. -if ./testgo install testdata/local/easy.go >/dev/null 2>&1; then - echo "go install testdata/local/easy.go succeeded" - ok=false -fi +# Test local imports again, with bad characters in the directory name. +bad='#$%:, &()*;<=>?\^{}' +rm -rf "testdata/$bad" +cp -R testdata/local "testdata/$bad" +testlocal "$bad" +rm -rf "testdata/$bad" # Test tests with relative imports. if ! ./testgo test ./testdata/testimport; then diff --git a/src/cmd/go/test.go b/src/cmd/go/test.go index 6ca49d10f..870ab190f 100644 --- a/src/cmd/go/test.go +++ b/src/cmd/go/test.go @@ -192,8 +192,6 @@ See the documentation of the testing package for more information. var ( testC bool // -c flag testI bool // -i flag - testP int // -p flag - testX bool // -x flag testV bool // -v flag testFiles []string // -file flag(s) TODO: not respected testTimeout string // -timeout flag @@ -241,11 +239,6 @@ func runTest(cmd *Command, args []string) { testStreamOutput = len(pkgArgs) == 0 || testBench || (len(pkgs) <= 1 && testShowPass) - buildX = testX - if testP > 0 { - buildP = testP - } - var b builder b.init() @@ -265,6 +258,9 @@ func runTest(cmd *Command, args []string) { for _, path := range p.TestImports { deps[path] = true } + for _, path := range p.XTestImports { + deps[path] = true + } } // translate C to runtime/cgo @@ -450,6 +446,7 @@ func (b *builder) test(p *Package) (buildAction, runAction, printAction *action, ptest.imports = append(append([]*Package{}, p.imports...), imports...) ptest.pkgdir = testDir ptest.fake = true + ptest.forceLibrary = true ptest.Stale = true ptest.build = new(build.Package) *ptest.build = *p.build @@ -461,12 +458,6 @@ func (b *builder) test(p *Package) (buildAction, runAction, printAction *action, m[k] = append(m[k], v...) } ptest.build.ImportPos = m - computeStale(ptest) - a := b.action(modeBuild, modeBuild, ptest) - a.objdir = testDir + string(filepath.Separator) - a.objpkg = ptestObj - a.target = ptestObj - a.link = false } else { ptest = p } @@ -477,6 +468,7 @@ func (b *builder) test(p *Package) (buildAction, runAction, printAction *action, Name: p.Name + "_test", ImportPath: p.ImportPath + "_test", localPrefix: p.localPrefix, + Root: p.Root, Dir: p.Dir, GoFiles: p.XTestGoFiles, Imports: p.XTestImports, @@ -488,11 +480,6 @@ func (b *builder) test(p *Package) (buildAction, runAction, printAction *action, fake: true, Stale: true, } - computeStale(pxtest) - a := b.action(modeBuild, modeBuild, pxtest) - a.objdir = testDir + string(filepath.Separator) - a.objpkg = buildToolchain.pkgpath(testDir, pxtest) - a.target = a.objpkg } // Action for building pkg.test. @@ -501,8 +488,9 @@ func (b *builder) test(p *Package) (buildAction, runAction, printAction *action, Dir: testDir, GoFiles: []string{"_testmain.go"}, ImportPath: "testmain", + Root: p.Root, imports: []*Package{ptest}, - build: &build.Package{}, + build: &build.Package{Name: "main"}, fake: true, Stale: true, } @@ -523,6 +511,21 @@ func (b *builder) test(p *Package) (buildAction, runAction, printAction *action, pmain.imports = append(pmain.imports, ptesting, pregexp) computeStale(pmain) + if ptest != p { + a := b.action(modeBuild, modeBuild, ptest) + a.objdir = testDir + string(filepath.Separator) + a.objpkg = ptestObj + a.target = ptestObj + a.link = false + } + + if pxtest != nil { + a := b.action(modeBuild, modeBuild, pxtest) + a.objdir = testDir + string(filepath.Separator) + a.objpkg = buildToolchain.pkgpath(testDir, pxtest) + a.target = a.objpkg + } + a := b.action(modeBuild, modeBuild, pmain) a.objdir = testDir + string(filepath.Separator) a.objpkg = filepath.Join(testDir, "main.a") @@ -639,6 +642,9 @@ func (b *builder) runTest(a *action) error { // cleanTest is the action for cleaning up after a test. func (b *builder) cleanTest(a *action) error { + if buildWork { + return nil + } run := a.deps[0] testDir := filepath.Join(b.work, filepath.FromSlash(run.p.ImportPath+"/_test")) os.RemoveAll(testDir) diff --git a/src/cmd/go/testflag.go b/src/cmd/go/testflag.go index 7c9b7f16d..ecf5bf456 100644 --- a/src/cmd/go/testflag.go +++ b/src/cmd/go/testflag.go @@ -47,7 +47,7 @@ func testUsage() { // testFlagSpec defines a flag we know about. type testFlagSpec struct { name string - isBool bool + boolVar *bool passToTest bool // pass to Test multiOK bool // OK to have multiple instances present bool // flag has been seen @@ -56,11 +56,21 @@ type testFlagSpec struct { // testFlagDefn is the set of flags we process. var testFlagDefn = []*testFlagSpec{ // local. - {name: "c", isBool: true}, + {name: "c", boolVar: &testC}, {name: "file", multiOK: true}, - {name: "i", isBool: true}, + {name: "i", boolVar: &testI}, + + // build flags. + {name: "a", boolVar: &buildA}, + {name: "n", boolVar: &buildN}, {name: "p"}, - {name: "x", isBool: true}, + {name: "x", boolVar: &buildX}, + {name: "work", boolVar: &buildWork}, + {name: "gcflags"}, + {name: "ldflags"}, + {name: "gccgoflags"}, + {name: "tags"}, + {name: "compiler"}, // passed to 6.out, adding a "test." prefix to the name if necessary: -v becomes -test.v. {name: "bench", passToTest: true}, @@ -71,9 +81,9 @@ var testFlagDefn = []*testFlagSpec{ {name: "memprofilerate", passToTest: true}, {name: "parallel", passToTest: true}, {name: "run", passToTest: true}, - {name: "short", isBool: true, passToTest: true}, + {name: "short", boolVar: new(bool), passToTest: true}, {name: "timeout", passToTest: true}, - {name: "v", isBool: true, passToTest: true}, + {name: "v", boolVar: &testV, passToTest: true}, } // testFlags processes the command line, grabbing -x and -c, rewriting known flags @@ -118,16 +128,21 @@ func testFlags(args []string) (packageNames, passToTest []string) { continue } switch f.name { - case "c": - setBoolFlag(&testC, value) - case "i": - setBoolFlag(&testI, value) + // bool flags. + case "a", "c", "i", "n", "x", "v", "work": + setBoolFlag(f.boolVar, value) case "p": - setIntFlag(&testP, value) - case "x": - setBoolFlag(&testX, value) - case "v": - setBoolFlag(&testV, value) + setIntFlag(&buildP, value) + case "gcflags": + buildGcflags = strings.Fields(value) + case "ldflags": + buildLdflags = strings.Fields(value) + case "gccgoflags": + buildGccgoflags = strings.Fields(value) + case "tags": + buildContext.BuildTags = strings.Fields(value) + case "compiler": + buildCompiler{}.Set(value) case "file": testFiles = append(testFiles, value) case "bench": @@ -172,7 +187,7 @@ func testFlag(args []string, i int) (f *testFlagSpec, value string, extra bool) for _, f = range testFlagDefn { if name == f.name { // Booleans are special because they have modes -x, -x=true, -x=false. - if f.isBool { + if f.boolVar != nil { if equals < 0 { // otherwise, it's been set and will be verified in setBoolFlag value = "true" } else { diff --git a/src/cmd/go/vcs.go b/src/cmd/go/vcs.go index cf3410242..3634b606c 100644 --- a/src/cmd/go/vcs.go +++ b/src/cmd/go/vcs.go @@ -7,7 +7,9 @@ package main import ( "bytes" "encoding/json" + "errors" "fmt" + "log" "os" "os/exec" "path/filepath" @@ -102,7 +104,7 @@ var vcsGit = &vcsCmd{ tagSyncCmd: "checkout {tag}", tagSyncDefault: "checkout origin/master", - scheme: []string{"git", "https", "http"}, + scheme: []string{"git", "https", "http", "git+ssh"}, pingCmd: "ls-remote {scheme}://{repo}", } @@ -121,7 +123,7 @@ var vcsBzr = &vcsCmd{ tagSyncCmd: "update -r {tag}", tagSyncDefault: "update -r revno:-1", - scheme: []string{"https", "http", "bzr"}, + scheme: []string{"https", "http", "bzr", "bzr+ssh"}, pingCmd: "info {scheme}://{repo}", } @@ -136,7 +138,7 @@ var vcsSvn = &vcsCmd{ // There is no tag command in subversion. // The branch information is all in the path names. - scheme: []string{"https", "http", "svn"}, + scheme: []string{"https", "http", "svn", "svn+ssh"}, pingCmd: "info {scheme}://{repo}", } @@ -302,12 +304,58 @@ func vcsForDir(p *Package) (vcs *vcsCmd, root string, err error) { return nil, "", fmt.Errorf("directory %q is not using a known version control system", dir) } -// vcsForImportPath analyzes importPath to determine the +// repoRoot represents a version control system, a repo, and a root of +// where to put it on disk. +type repoRoot struct { + vcs *vcsCmd + + // repo is the repository URL, including scheme + repo string + + // root is the import path corresponding to the root of the + // repository + root string +} + +// repoRootForImportPath analyzes importPath to determine the // version control system, and code repository to use. -// On return, repo is the repository URL and root is the -// import path corresponding to the root of the repository -// (thus root is a prefix of importPath). -func vcsForImportPath(importPath string) (vcs *vcsCmd, repo, root string, err error) { +func repoRootForImportPath(importPath string) (*repoRoot, error) { + rr, err := repoRootForImportPathStatic(importPath, "") + if err == errUnknownSite { + rr, err = repoRootForImportDynamic(importPath) + + // repoRootForImportDynamic returns error detail + // that is irrelevant if the user didn't intend to use a + // dynamic import in the first place. + // Squelch it. + if err != nil { + if buildV { + log.Printf("import %q: %v", importPath, err) + } + err = fmt.Errorf("unrecognized import path %q", importPath) + } + } + + if err == nil && strings.Contains(importPath, "...") && strings.Contains(rr.root, "...") { + // Do not allow wildcards in the repo root. + rr = nil + err = fmt.Errorf("cannot expand ... in %q", importPath) + } + return rr, err +} + +var errUnknownSite = errors.New("dynamic lookup required to find mapping") + +// repoRootForImportPathStatic attempts to map importPath to a +// repoRoot using the commonly-used VCS hosting sites in vcsPaths +// (github.com/user/dir), or from a fully-qualified importPath already +// containing its VCS type (foo.com/repo.git/dir) +// +// If scheme is non-empty, that scheme is forced. +func repoRootForImportPathStatic(importPath, scheme string) (*repoRoot, error) { + if strings.Contains(importPath, "://") { + return nil, fmt.Errorf("invalid import path %q", importPath) + } for _, srv := range vcsPaths { if !strings.HasPrefix(importPath, srv.prefix) { continue @@ -315,7 +363,7 @@ func vcsForImportPath(importPath string) (vcs *vcsCmd, repo, root string, err er m := srv.regexp.FindStringSubmatch(importPath) if m == nil { if srv.prefix != "" { - return nil, "", "", fmt.Errorf("invalid %s import path %q", srv.prefix, importPath) + return nil, fmt.Errorf("invalid %s import path %q", srv.prefix, importPath) } continue } @@ -338,24 +386,127 @@ func vcsForImportPath(importPath string) (vcs *vcsCmd, repo, root string, err er } if srv.check != nil { if err := srv.check(match); err != nil { - return nil, "", "", err + return nil, err } } vcs := vcsByCmd(match["vcs"]) if vcs == nil { - return nil, "", "", fmt.Errorf("unknown version control system %q", match["vcs"]) + return nil, fmt.Errorf("unknown version control system %q", match["vcs"]) } if srv.ping { - for _, scheme := range vcs.scheme { - if vcs.ping(scheme, match["repo"]) == nil { - match["repo"] = scheme + "://" + match["repo"] - break + if scheme != "" { + match["repo"] = scheme + "://" + match["repo"] + } else { + for _, scheme := range vcs.scheme { + if vcs.ping(scheme, match["repo"]) == nil { + match["repo"] = scheme + "://" + match["repo"] + break + } } } } - return vcs, match["repo"], match["root"], nil + rr := &repoRoot{ + vcs: vcs, + repo: match["repo"], + root: match["root"], + } + return rr, nil + } + return nil, errUnknownSite +} + +// repoRootForImportDynamic finds a *repoRoot for a custom domain that's not +// statically known by repoRootForImportPathStatic. +// +// This handles "vanity import paths" like "name.tld/pkg/foo". +func repoRootForImportDynamic(importPath string) (*repoRoot, error) { + slash := strings.Index(importPath, "/") + if slash < 0 { + return nil, fmt.Errorf("missing / in import %q", importPath) + } + urlStr, body, err := httpsOrHTTP(importPath) + if err != nil { + return nil, fmt.Errorf("http/https fetch for import %q: %v", importPath, err) + } + defer body.Close() + metaImport, err := matchGoImport(parseMetaGoImports(body), importPath) + if err != nil { + if err != errNoMatch { + return nil, fmt.Errorf("parse %s: %v", urlStr, err) + } + return nil, fmt.Errorf("parse %s: no go-import meta tags", urlStr) + } + if buildV { + log.Printf("get %q: found meta tag %#v at %s", importPath, metaImport, urlStr) + } + // If the import was "uni.edu/bob/project", which said the + // prefix was "uni.edu" and the RepoRoot was "evilroot.com", + // make sure we don't trust Bob and check out evilroot.com to + // "uni.edu" yet (possibly overwriting/preempting another + // non-evil student). Instead, first verify the root and see + // if it matches Bob's claim. + if metaImport.Prefix != importPath { + if buildV { + log.Printf("get %q: verifying non-authoritative meta tag", importPath) + } + urlStr0 := urlStr + urlStr, body, err = httpsOrHTTP(metaImport.Prefix) + if err != nil { + return nil, fmt.Errorf("fetch %s: %v", urlStr, err) + } + imports := parseMetaGoImports(body) + if len(imports) == 0 { + return nil, fmt.Errorf("fetch %s: no go-import meta tag", urlStr) + } + metaImport2, err := matchGoImport(imports, importPath) + if err != nil || metaImport != metaImport2 { + return nil, fmt.Errorf("%s and %s disagree about go-import for %s", urlStr0, urlStr, metaImport.Prefix) + } + } + + if !strings.Contains(metaImport.RepoRoot, "://") { + return nil, fmt.Errorf("%s: invalid repo root %q; no scheme", urlStr, metaImport.RepoRoot) + } + rr := &repoRoot{ + vcs: vcsByCmd(metaImport.VCS), + repo: metaImport.RepoRoot, + root: metaImport.Prefix, + } + if rr.vcs == nil { + return nil, fmt.Errorf("%s: unknown vcs %q", urlStr, metaImport.VCS) + } + return rr, nil +} + +// metaImport represents the parsed <meta name="go-import" +// content="prefix vcs reporoot" /> tags from HTML files. +type metaImport struct { + Prefix, VCS, RepoRoot string +} + +// errNoMatch is returned from matchGoImport when there's no applicable match. +var errNoMatch = errors.New("no import match") + +// matchGoImport returns the metaImport from imports matching importPath. +// An error is returned if there are multiple matches. +// errNoMatch is returned if none match. +func matchGoImport(imports []metaImport, importPath string) (_ metaImport, err error) { + match := -1 + for i, im := range imports { + if !strings.HasPrefix(importPath, im.Prefix) { + continue + } + if match != -1 { + err = fmt.Errorf("multiple meta tags match import path %q", importPath) + return + } + match = i + } + if match == -1 { + err = errNoMatch + return } - return nil, "", "", fmt.Errorf("unrecognized import path %q", importPath) + return imports[match], nil } // expand rewrites s to replace {k} with match[k] for each key k in match. diff --git a/src/cmd/godoc/appinit.go b/src/cmd/godoc/appinit.go index e65be4094..4096a4f22 100644 --- a/src/cmd/godoc/appinit.go +++ b/src/cmd/godoc/appinit.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build ignore +// +build appengine package main @@ -42,8 +42,7 @@ func init() { log.Fatalf("%s: %s\n", zipfile, err) } // rc is never closed (app running forever) - fs = NewZipFS(rc) - fsHttp = NewHttpZipFS(rc, *goroot) + fs.Bind("/", NewZipFS(rc, zipFilename), *goroot, bindReplace) // initialize http handlers readTemplates() @@ -53,9 +52,6 @@ func init() { // initialize default directory tree with corresponding timestamp. initFSTree() - // initialize directory trees for user-defined file systems (-path flag). - initDirTrees() - // Immediately update metadata. updateMetadata() diff --git a/src/cmd/godoc/codewalk.go b/src/cmd/godoc/codewalk.go index 018259f7d..f7f51d0a0 100644 --- a/src/cmd/godoc/codewalk.go +++ b/src/cmd/godoc/codewalk.go @@ -31,7 +31,7 @@ import ( // Handler for /doc/codewalk/ and below. func codewalk(w http.ResponseWriter, r *http.Request) { relpath := r.URL.Path[len("/doc/codewalk/"):] - abspath := absolutePath(r.URL.Path[1:], *goroot) + abspath := r.URL.Path r.ParseForm() if f := r.FormValue("fileprint"); f != "" { @@ -53,7 +53,9 @@ func codewalk(w http.ResponseWriter, r *http.Request) { } // Otherwise append .xml and hope to find - // a codewalk description. + // a codewalk description, but before trim + // the trailing /. + abspath = strings.TrimRight(abspath, "/") cw, err := loadCodewalk(abspath + ".xml") if err != nil { log.Print(err) @@ -67,7 +69,7 @@ func codewalk(w http.ResponseWriter, r *http.Request) { } b := applyTemplate(codewalkHTML, "codewalk", cw) - servePage(w, "Codewalk: "+cw.Title, "", "", b) + servePage(w, cw.Title, "Codewalk: "+cw.Title, "", "", b) } // A Codewalk represents a single codewalk read from an XML file. @@ -130,7 +132,7 @@ func loadCodewalk(filename string) (*Codewalk, error) { i = len(st.Src) } filename := st.Src[0:i] - data, err := ReadFile(fs, absolutePath(filename, *goroot)) + data, err := ReadFile(fs, filename) if err != nil { st.Err = err continue @@ -198,7 +200,7 @@ func codewalkDir(w http.ResponseWriter, r *http.Request, relpath, abspath string } b := applyTemplate(codewalkdirHTML, "codewalkdir", v) - servePage(w, "Codewalks", "", "", b) + servePage(w, "", "Codewalks", "", "", b) } // codewalkFileprint serves requests with ?fileprint=f&lo=lo&hi=hi. @@ -208,7 +210,7 @@ func codewalkDir(w http.ResponseWriter, r *http.Request, relpath, abspath string // of the codewalk pages. It is a separate iframe and does not get // the usual godoc HTML wrapper. func codewalkFileprint(w http.ResponseWriter, r *http.Request, f string) { - abspath := absolutePath(f, *goroot) + abspath := f data, err := ReadFile(fs, abspath) if err != nil { log.Print(err) diff --git a/src/cmd/godoc/dirtrees.go b/src/cmd/godoc/dirtrees.go index 1acde99bd..b9b529f87 100644 --- a/src/cmd/godoc/dirtrees.go +++ b/src/cmd/godoc/dirtrees.go @@ -13,7 +13,7 @@ import ( "go/token" "log" "os" - "path/filepath" + pathpkg "path" "strings" ) @@ -35,7 +35,7 @@ func isGoFile(fi os.FileInfo) bool { name := fi.Name() return !fi.IsDir() && len(name) > 0 && name[0] != '.' && // ignore .files - filepath.Ext(name) == ".go" + pathpkg.Ext(name) == ".go" } func isPkgFile(fi os.FileInfo) bool { @@ -50,12 +50,11 @@ func isPkgDir(fi os.FileInfo) bool { } type treeBuilder struct { - pathFilter func(string) bool - maxDepth int + maxDepth int } func (b *treeBuilder) newDirTree(fset *token.FileSet, path, name string, depth int) *Directory { - if b.pathFilter != nil && !b.pathFilter(path) || name == testdataDirName { + if name == testdataDirName { return nil } @@ -70,13 +69,7 @@ func (b *treeBuilder) newDirTree(fset *token.FileSet, path, name string, depth i } } - list, err := fs.ReadDir(path) - if err != nil { - // newDirTree is called with a path that should be a package - // directory; errors here should not happen, but if they do, - // we want to know about them - log.Printf("ReadDir(%s): %s", path, err) - } + list, _ := fs.ReadDir(path) // determine number of subdirectories and if there are package files ndirs := 0 @@ -92,7 +85,7 @@ func (b *treeBuilder) newDirTree(fset *token.FileSet, path, name string, depth i // though the directory doesn't contain any real package files - was bug) if synopses[0] == "" { // no "optimal" package synopsis yet; continue to collect synopses - file, err := parseFile(fset, filepath.Join(path, d.Name()), + file, err := parseFile(fset, pathpkg.Join(path, d.Name()), parser.ParseComments|parser.PackageClauseOnly) if err == nil { hasPkgFiles = true @@ -126,7 +119,7 @@ func (b *treeBuilder) newDirTree(fset *token.FileSet, path, name string, depth i for _, d := range list { if isPkgDir(d) { name := d.Name() - dd := b.newDirTree(fset, filepath.Join(path, name), name, depth+1) + dd := b.newDirTree(fset, pathpkg.Join(path, name), name, depth+1) if dd != nil { dirs[i] = dd i++ @@ -170,7 +163,7 @@ func (b *treeBuilder) newDirTree(fset *token.FileSet, path, name string, depth i // are assumed to contain package files even if their contents are not known // (i.e., in this case the tree may contain directories w/o any package files). // -func newDirectory(root string, pathFilter func(string) bool, maxDepth int) *Directory { +func newDirectory(root string, maxDepth int) *Directory { // The root could be a symbolic link so use Stat not Lstat. d, err := fs.Stat(root) // If we fail here, report detailed error messages; otherwise @@ -186,7 +179,7 @@ func newDirectory(root string, pathFilter func(string) bool, maxDepth int) *Dire if maxDepth < 0 { maxDepth = 1e6 // "infinity" } - b := treeBuilder{pathFilter, maxDepth} + b := treeBuilder{maxDepth} // the file set provided is only for local parsing, no position // information escapes and thus we don't need to save the set return b.newDirTree(token.NewFileSet(), root, d.Name(), 0) @@ -235,10 +228,20 @@ func (dir *Directory) lookupLocal(name string) *Directory { return nil } +func splitPath(p string) []string { + if strings.HasPrefix(p, "/") { + p = p[1:] + } + if p == "" { + return nil + } + return strings.Split(p, "/") +} + // lookup looks for the *Directory for a given path, relative to dir. func (dir *Directory) lookup(path string) *Directory { - d := strings.Split(dir.Path, string(filepath.Separator)) - p := strings.Split(path, string(filepath.Separator)) + d := splitPath(dir.Path) + p := splitPath(path) i := 0 for i < len(d) { if i >= len(p) || d[i] != p[i] { @@ -311,8 +314,8 @@ func (root *Directory) listing(skipRoot bool) *DirList { if strings.HasPrefix(d.Path, root.Path) { path = d.Path[len(root.Path):] } - // remove trailing separator if any - path must be relative - if len(path) > 0 && path[0] == filepath.Separator { + // remove leading separator if any - path must be relative + if len(path) > 0 && path[0] == '/' { path = path[1:] } p.Path = path diff --git a/src/cmd/godoc/doc.go b/src/cmd/godoc/doc.go index 15c393cd7..39ecc6e63 100644 --- a/src/cmd/godoc/doc.go +++ b/src/cmd/godoc/doc.go @@ -25,7 +25,7 @@ In command-line mode, the -q flag enables search queries against a godoc running as a webserver. If no explicit server address is specified with the -server flag, godoc first tries localhost:6060 and then http://golang.org. - godoc -q Reader Writer + godoc -q Reader godoc -q math.Sin godoc -server=:6060 -q sin @@ -77,27 +77,22 @@ The flags are: HTTP service address (e.g., '127.0.0.1:6060' or just ':6060') -server=addr webserver address for command line searches - -sync="command" - if this and -sync_minutes are set, run the argument as a - command every sync_minutes; it is intended to update the - repository holding the source files. - -sync_minutes=0 - sync interval in minutes; sync is disabled if <= 0 -templates="" directory containing alternate template files; if set, the directory may provide alternative template files for the files in $GOROOT/lib/godoc - -filter="" - filter file containing permitted package directory paths - -filter_minutes=0 - filter file update interval in minutes; update is disabled if <= 0 + -url=path + print to standard output the data that would be served by + an HTTP request for path -zip="" zip file providing the file system to serve; disabled if empty -The -path flag accepts a list of colon-separated paths; unrooted paths are relative -to the current working directory. Each path is considered as an additional root for -packages in order of appearance. The last (absolute) path element is the prefix for -the package path. For instance, given the flag value: +By default, godoc looks at the packages it finds via $GOROOT and $GOPATH (if set). +Additional directories may be specified via the -path flag which accepts a list +of colon-separated paths; unrooted paths are relative to the current working +directory. Each path is considered as an additional root for packages in order +of appearance. The last (absolute) path element is the prefix for the package +path. For instance, given the flag value: path=".:/home/bar:/public" @@ -108,23 +103,8 @@ as follows: /home/bar/x -> bar/x /public/x -> public/x -Paths provided via -path may point to very large file systems that contain -non-Go files. Creating the subtree of directories with Go packages may take -a long amount of time. A file containing newline-separated directory paths -may be provided with the -filter flag; if it exists, only directories -on those paths are considered. If -filter_minutes is set, the filter_file is -updated regularly by walking the entire directory tree. - When godoc runs as a web server and -index is set, a search index is maintained. -The index is created at startup and is automatically updated every time the --sync command terminates with exit status 0, indicating that files have changed. - -If the sync exit status is 1, godoc assumes that it succeeded without errors -but that no files changed; the index is not updated in this case. - -In all other cases, sync is assumed to have failed and godoc backs off running -sync exponentially (up to 1 day). As soon as sync succeeds again (exit status 0 -or 1), the normal sync rhythm is re-established. +The index is created at startup. The index contains both identifier and full text search information (searchable via regular expressions). The maximum number of full text search results shown @@ -158,6 +138,7 @@ one may run godoc as follows: godoc -http=:6060 -zip=go.zip -goroot=$HOME/go See "Godoc: documenting Go code" for how to write good comments for godoc: -http://blog.golang.org/2011/03/godoc-documenting-go-code.html +http://golang.org/doc/articles/godoc_documenting_go_code.html + */ package documentation diff --git a/src/cmd/godoc/filesystem.go b/src/cmd/godoc/filesystem.go index 4e48c9e68..09d7b2463 100644 --- a/src/cmd/godoc/filesystem.go +++ b/src/cmd/godoc/filesystem.go @@ -12,16 +12,56 @@ import ( "fmt" "io" "io/ioutil" + "net/http" "os" + pathpkg "path" + "path/filepath" + "sort" + "strings" + "time" ) +// fs is the file system that godoc reads from and serves. +// It is a virtual file system that operates on slash-separated paths, +// and its root corresponds to the Go distribution root: /src/pkg +// holds the source tree, and so on. This means that the URLs served by +// the godoc server are the same as the paths in the virtual file +// system, which helps keep things simple. +// +// New file trees - implementations of FileSystem - can be added to +// the virtual file system using nameSpace's Bind method. +// The usual setup is to bind OS(runtime.GOROOT) to the root +// of the name space and then bind any GOPATH/src directories +// on top of /src/pkg, so that all sources are in /src/pkg. +// +// For more about name spaces, see the nameSpace type's +// documentation below. +// +// The use of this virtual file system means that most code processing +// paths can assume they are slash-separated and should be using +// package path (often imported as pathpkg) to manipulate them, +// even on Windows. +// +var fs = nameSpace{} // the underlying file system for godoc + +// Setting debugNS = true will enable debugging prints about +// name space translations. +const debugNS = false + // The FileSystem interface specifies the methods godoc is using // to access the file system for which it serves documentation. type FileSystem interface { - Open(path string) (io.ReadCloser, error) + Open(path string) (readSeekCloser, error) Lstat(path string) (os.FileInfo, error) Stat(path string) (os.FileInfo, error) ReadDir(path string) ([]os.FileInfo, error) + String() string +} + +type readSeekCloser interface { + io.Reader + io.Seeker + io.Closer } // ReadFile reads the file named by path from fs and returns the contents. @@ -34,16 +74,31 @@ func ReadFile(fs FileSystem, path string) ([]byte, error) { return ioutil.ReadAll(rc) } -// ---------------------------------------------------------------------------- -// OS-specific FileSystem implementation +// OS returns an implementation of FileSystem reading from the +// tree rooted at root. Recording a root is convenient everywhere +// but necessary on Windows, because the slash-separated path +// passed to Open has no way to specify a drive letter. Using a root +// lets code refer to OS(`c:\`), OS(`d:\`) and so on. +func OS(root string) FileSystem { + return osFS(root) +} + +type osFS string -var OS FileSystem = osFS{} +func (root osFS) String() string { return "os(" + string(root) + ")" } -// osFS is the OS-specific implementation of FileSystem -type osFS struct{} +func (root osFS) resolve(path string) string { + // Clean the path so that it cannot possibly begin with ../. + // If it did, the result of filepath.Join would be outside the + // tree rooted at root. We probably won't ever see a path + // with .. in it, but be safe anyway. + path = pathpkg.Clean("/" + path) -func (osFS) Open(path string) (io.ReadCloser, error) { - f, err := os.Open(path) + return filepath.Join(string(root), path) +} + +func (root osFS) Open(path string) (readSeekCloser, error) { + f, err := os.Open(root.resolve(path)) if err != nil { return nil, err } @@ -57,14 +112,453 @@ func (osFS) Open(path string) (io.ReadCloser, error) { return f, nil } -func (osFS) Lstat(path string) (os.FileInfo, error) { - return os.Lstat(path) +func (root osFS) Lstat(path string) (os.FileInfo, error) { + return os.Lstat(root.resolve(path)) +} + +func (root osFS) Stat(path string) (os.FileInfo, error) { + return os.Stat(root.resolve(path)) +} + +func (root osFS) ReadDir(path string) ([]os.FileInfo, error) { + return ioutil.ReadDir(root.resolve(path)) // is sorted +} + +// hasPathPrefix returns true if x == y or x == y + "/" + more +func hasPathPrefix(x, y string) bool { + return x == y || strings.HasPrefix(x, y) && (strings.HasSuffix(y, "/") || strings.HasPrefix(x[len(y):], "/")) +} + +// A nameSpace is a file system made up of other file systems +// mounted at specific locations in the name space. +// +// The representation is a map from mount point locations +// to the list of file systems mounted at that location. A traditional +// Unix mount table would use a single file system per mount point, +// but we want to be able to mount multiple file systems on a single +// mount point and have the system behave as if the union of those +// file systems were present at the mount point. +// For example, if the OS file system has a Go installation in +// c:\Go and additional Go path trees in d:\Work1 and d:\Work2, then +// this name space creates the view we want for the godoc server: +// +// nameSpace{ +// "/": { +// {old: "/", fs: OS(`c:\Go`), new: "/"}, +// }, +// "/src/pkg": { +// {old: "/src/pkg", fs: OS(`c:\Go`), new: "/src/pkg"}, +// {old: "/src/pkg", fs: OS(`d:\Work1`), new: "/src"}, +// {old: "/src/pkg", fs: OS(`d:\Work2`), new: "/src"}, +// }, +// } +// +// This is created by executing: +// +// ns := nameSpace{} +// ns.Bind("/", OS(`c:\Go`), "/", bindReplace) +// ns.Bind("/src/pkg", OS(`d:\Work1`), "/src", bindAfter) +// ns.Bind("/src/pkg", OS(`d:\Work2`), "/src", bindAfter) +// +// A particular mount point entry is a triple (old, fs, new), meaning that to +// operate on a path beginning with old, replace that prefix (old) with new +// and then pass that path to the FileSystem implementation fs. +// +// Given this name space, a ReadDir of /src/pkg/code will check each prefix +// of the path for a mount point (first /src/pkg/code, then /src/pkg, then /src, +// then /), stopping when it finds one. For the above example, /src/pkg/code +// will find the mount point at /src/pkg: +// +// {old: "/src/pkg", fs: OS(`c:\Go`), new: "/src/pkg"}, +// {old: "/src/pkg", fs: OS(`d:\Work1`), new: "/src"}, +// {old: "/src/pkg", fs: OS(`d:\Work2`), new: "/src"}, +// +// ReadDir will when execute these three calls and merge the results: +// +// OS(`c:\Go`).ReadDir("/src/pkg/code") +// OS(`d:\Work1').ReadDir("/src/code") +// OS(`d:\Work2').ReadDir("/src/code") +// +// Note that the "/src/pkg" in "/src/pkg/code" has been replaced by +// just "/src" in the final two calls. +// +// OS is itself an implementation of a file system: it implements +// OS(`c:\Go`).ReadDir("/src/pkg/code") as ioutil.ReadDir(`c:\Go\src\pkg\code`). +// +// Because the new path is evaluated by fs (here OS(root)), another way +// to read the mount table is to mentally combine fs+new, so that this table: +// +// {old: "/src/pkg", fs: OS(`c:\Go`), new: "/src/pkg"}, +// {old: "/src/pkg", fs: OS(`d:\Work1`), new: "/src"}, +// {old: "/src/pkg", fs: OS(`d:\Work2`), new: "/src"}, +// +// reads as: +// +// "/src/pkg" -> c:\Go\src\pkg +// "/src/pkg" -> d:\Work1\src +// "/src/pkg" -> d:\Work2\src +// +// An invariant (a redundancy) of the name space representation is that +// ns[mtpt][i].old is always equal to mtpt (in the example, ns["/src/pkg"]'s +// mount table entries always have old == "/src/pkg"). The 'old' field is +// useful to callers, because they receive just a []mountedFS and not any +// other indication of which mount point was found. +// +type nameSpace map[string][]mountedFS + +// A mountedFS handles requests for path by replacing +// a prefix 'old' with 'new' and then calling the fs methods. +type mountedFS struct { + old string + fs FileSystem + new string +} + +// translate translates path for use in m, replacing old with new. +// +// mountedFS{"/src/pkg", fs, "/src"}.translate("/src/pkg/code") == "/src/code". +func (m mountedFS) translate(path string) string { + path = pathpkg.Clean("/" + path) + if !hasPathPrefix(path, m.old) { + panic("translate " + path + " but old=" + m.old) + } + return pathpkg.Join(m.new, path[len(m.old):]) +} + +func (nameSpace) String() string { + return "ns" +} + +// Fprint writes a text representation of the name space to w. +func (ns nameSpace) Fprint(w io.Writer) { + fmt.Fprint(w, "name space {\n") + var all []string + for mtpt := range ns { + all = append(all, mtpt) + } + sort.Strings(all) + for _, mtpt := range all { + fmt.Fprintf(w, "\t%s:\n", mtpt) + for _, m := range ns[mtpt] { + fmt.Fprintf(w, "\t\t%s %s\n", m.fs, m.new) + } + } + fmt.Fprint(w, "}\n") +} + +// clean returns a cleaned, rooted path for evaluation. +// It canonicalizes the path so that we can use string operations +// to analyze it. +func (nameSpace) clean(path string) string { + return pathpkg.Clean("/" + path) +} + +// Bind causes references to old to redirect to the path new in newfs. +// If mode is bindReplace, old redirections are discarded. +// If mode is bindBefore, this redirection takes priority over existing ones, +// but earlier ones are still consulted for paths that do not exist in newfs. +// If mode is bindAfter, this redirection happens only after existing ones +// have been tried and failed. + +const ( + bindReplace = iota + bindBefore + bindAfter +) + +func (ns nameSpace) Bind(old string, newfs FileSystem, new string, mode int) { + old = ns.clean(old) + new = ns.clean(new) + m := mountedFS{old, newfs, new} + var mtpt []mountedFS + switch mode { + case bindReplace: + mtpt = append(mtpt, m) + case bindAfter: + mtpt = append(mtpt, ns.resolve(old)...) + mtpt = append(mtpt, m) + case bindBefore: + mtpt = append(mtpt, m) + mtpt = append(mtpt, ns.resolve(old)...) + } + + // Extend m.old, m.new in inherited mount point entries. + for i := range mtpt { + m := &mtpt[i] + if m.old != old { + if !hasPathPrefix(old, m.old) { + // This should not happen. If it does, panic so + // that we can see the call trace that led to it. + panic(fmt.Sprintf("invalid Bind: old=%q m={%q, %s, %q}", old, m.old, m.fs.String(), m.new)) + } + suffix := old[len(m.old):] + m.old = pathpkg.Join(m.old, suffix) + m.new = pathpkg.Join(m.new, suffix) + } + } + + ns[old] = mtpt +} + +// resolve resolves a path to the list of mountedFS to use for path. +func (ns nameSpace) resolve(path string) []mountedFS { + path = ns.clean(path) + for { + if m := ns[path]; m != nil { + if debugNS { + fmt.Printf("resolve %s: %v\n", path, m) + } + return m + } + if path == "/" { + break + } + path = pathpkg.Dir(path) + } + return nil +} + +// Open implements the FileSystem Open method. +func (ns nameSpace) Open(path string) (readSeekCloser, error) { + var err error + for _, m := range ns.resolve(path) { + if debugNS { + fmt.Printf("tx %s: %v\n", path, m.translate(path)) + } + r, err1 := m.fs.Open(m.translate(path)) + if err1 == nil { + return r, nil + } + if err == nil { + err = err1 + } + } + if err == nil { + err = &os.PathError{Op: "open", Path: path, Err: os.ErrNotExist} + } + return nil, err +} + +// stat implements the FileSystem Stat and Lstat methods. +func (ns nameSpace) stat(path string, f func(FileSystem, string) (os.FileInfo, error)) (os.FileInfo, error) { + var err error + for _, m := range ns.resolve(path) { + fi, err1 := f(m.fs, m.translate(path)) + if err1 == nil { + return fi, nil + } + if err == nil { + err = err1 + } + } + if err == nil { + err = &os.PathError{Op: "stat", Path: path, Err: os.ErrNotExist} + } + return nil, err +} + +func (ns nameSpace) Stat(path string) (os.FileInfo, error) { + return ns.stat(path, FileSystem.Stat) +} + +func (ns nameSpace) Lstat(path string) (os.FileInfo, error) { + return ns.stat(path, FileSystem.Lstat) +} + +// dirInfo is a trivial implementation of os.FileInfo for a directory. +type dirInfo string + +func (d dirInfo) Name() string { return string(d) } +func (d dirInfo) Size() int64 { return 0 } +func (d dirInfo) Mode() os.FileMode { return os.ModeDir | 0555 } +func (d dirInfo) ModTime() time.Time { return startTime } +func (d dirInfo) IsDir() bool { return true } +func (d dirInfo) Sys() interface{} { return nil } + +var startTime = time.Now() + +// ReadDir implements the FileSystem ReadDir method. It's where most of the magic is. +// (The rest is in resolve.) +// +// Logically, ReadDir must return the union of all the directories that are named +// by path. In order to avoid misinterpreting Go packages, of all the directories +// that contain Go source code, we only include the files from the first, +// but we include subdirectories from all. +// +// ReadDir must also return directory entries needed to reach mount points. +// If the name space looks like the example in the type nameSpace comment, +// but c:\Go does not have a src/pkg subdirectory, we still want to be able +// to find that subdirectory, because we've mounted d:\Work1 and d:\Work2 +// there. So if we don't see "src" in the directory listing for c:\Go, we add an +// entry for it before returning. +// +func (ns nameSpace) ReadDir(path string) ([]os.FileInfo, error) { + path = ns.clean(path) + + var ( + haveGo = false + haveName = map[string]bool{} + all []os.FileInfo + err error + first []os.FileInfo + ) + + for _, m := range ns.resolve(path) { + dir, err1 := m.fs.ReadDir(m.translate(path)) + if err1 != nil { + if err == nil { + err = err1 + } + continue + } + + if dir == nil { + dir = []os.FileInfo{} + } + + if first == nil { + first = dir + } + + // If we don't yet have Go files in 'all' and this directory + // has some, add all the files from this directory. + // Otherwise, only add subdirectories. + useFiles := false + if !haveGo { + for _, d := range dir { + if strings.HasSuffix(d.Name(), ".go") { + useFiles = true + haveGo = true + break + } + } + } + + for _, d := range dir { + name := d.Name() + if (d.IsDir() || useFiles) && !haveName[name] { + haveName[name] = true + all = append(all, d) + } + } + } + + // We didn't find any directories containing Go files. + // If some directory returned successfully, use that. + if !haveGo { + for _, d := range first { + if !haveName[d.Name()] { + haveName[d.Name()] = true + all = append(all, d) + } + } + } + + // Built union. Add any missing directories needed to reach mount points. + for old := range ns { + if hasPathPrefix(old, path) && old != path { + // Find next element after path in old. + elem := old[len(path):] + if strings.HasPrefix(elem, "/") { + elem = elem[1:] + } + if i := strings.Index(elem, "/"); i >= 0 { + elem = elem[:i] + } + if !haveName[elem] { + haveName[elem] = true + all = append(all, dirInfo(elem)) + } + } + } + + if len(all) == 0 { + return nil, err + } + + sort.Sort(byName(all)) + return all, nil +} + +// byName implements sort.Interface. +type byName []os.FileInfo + +func (f byName) Len() int { return len(f) } +func (f byName) Less(i, j int) bool { return f[i].Name() < f[j].Name() } +func (f byName) Swap(i, j int) { f[i], f[j] = f[j], f[i] } + +// An httpFS implements http.FileSystem using a FileSystem. +type httpFS struct { + fs FileSystem +} + +func (h *httpFS) Open(name string) (http.File, error) { + fi, err := h.fs.Stat(name) + if err != nil { + return nil, err + } + if fi.IsDir() { + return &httpDir{h.fs, name, nil}, nil + } + f, err := h.fs.Open(name) + if err != nil { + return nil, err + } + return &httpFile{h.fs, f, name}, nil +} + +// httpDir implements http.File for a directory in a FileSystem. +type httpDir struct { + fs FileSystem + name string + pending []os.FileInfo +} + +func (h *httpDir) Close() error { return nil } +func (h *httpDir) Stat() (os.FileInfo, error) { return h.fs.Stat(h.name) } +func (h *httpDir) Read([]byte) (int, error) { + return 0, fmt.Errorf("cannot Read from directory %s", h.name) +} + +func (h *httpDir) Seek(offset int64, whence int) (int64, error) { + if offset == 0 && whence == 0 { + h.pending = nil + return 0, nil + } + return 0, fmt.Errorf("unsupported Seek in directory %s", h.name) +} + +func (h *httpDir) Readdir(count int) ([]os.FileInfo, error) { + if h.pending == nil { + d, err := h.fs.ReadDir(h.name) + if err != nil { + return nil, err + } + if d == nil { + d = []os.FileInfo{} // not nil + } + h.pending = d + } + + if len(h.pending) == 0 && count > 0 { + return nil, io.EOF + } + if count <= 0 || count > len(h.pending) { + count = len(h.pending) + } + d := h.pending[:count] + h.pending = h.pending[count:] + return d, nil } -func (osFS) Stat(path string) (os.FileInfo, error) { - return os.Stat(path) +// httpFile implements http.File for a file (not directory) in a FileSystem. +type httpFile struct { + fs FileSystem + readSeekCloser + name string } -func (osFS) ReadDir(path string) ([]os.FileInfo, error) { - return ioutil.ReadDir(path) // is sorted +func (h *httpFile) Stat() (os.FileInfo, error) { return h.fs.Stat(h.name) } +func (h *httpFile) Readdir(int) ([]os.FileInfo, error) { + return nil, fmt.Errorf("cannot Readdir from file %s", h.name) } diff --git a/src/cmd/godoc/godoc.go b/src/cmd/godoc/godoc.go index e5f7a73d4..26814d2fa 100644 --- a/src/cmd/godoc/godoc.go +++ b/src/cmd/godoc/godoc.go @@ -20,7 +20,7 @@ import ( "net/http" "net/url" "os" - "path" + pathpkg "path" "path/filepath" "regexp" "runtime" @@ -55,12 +55,9 @@ var ( // file system roots // TODO(gri) consider the invariant that goroot always end in '/' - goroot = flag.String("goroot", runtime.GOROOT(), "Go root directory") - testDir = flag.String("testdir", "", "Go root subdirectory - for testing only (faster startups)") - pkgPath = flag.String("path", "", "additional package directories (colon-separated)") - filter = flag.String("filter", "", "filter file containing permitted package directory paths") - filterMin = flag.Int("filter_minutes", 0, "filter file update interval in minutes; disabled if <= 0") - filterDelay delayTime // actual filter update interval in minutes; usually filterDelay == filterMin, but filterDelay may back off exponentially + goroot = flag.String("goroot", runtime.GOROOT(), "Go root directory") + testDir = flag.String("testdir", "", "Go root subdirectory - for testing only (faster startups)") + pkgPath = flag.String("path", "", "additional package directories (colon-separated)") // layout control tabwidth = flag.Int("tabwidth", 4, "tab width") @@ -70,44 +67,42 @@ var ( // search index indexEnabled = flag.Bool("index", false, "enable search index") indexFiles = flag.String("index_files", "", "glob pattern specifying index files;"+ - "if not empty, the index is read from these files in sorted order") + "if not empty, the index is read from these files in sorted order") maxResults = flag.Int("maxresults", 10000, "maximum number of full text search results shown") indexThrottle = flag.Float64("index_throttle", 0.75, "index throttle value; 0.0 = no time allocated, 1.0 = full throttle") - // file system mapping - fs FileSystem // the underlying file system for godoc - fsHttp http.FileSystem // the underlying file system for http - fsMap Mapping // user-defined mapping - fsTree RWValue // *Directory tree of packages, updated with each sync - pathFilter RWValue // filter used when building fsMap directory trees - fsModified RWValue // timestamp of last call to invalidateIndex - docMetadata RWValue // mapping from paths to *Metadata + // file system information + fsTree RWValue // *Directory tree of packages, updated with each sync (but sync code is removed now) + fsModified RWValue // timestamp of last call to invalidateIndex + docMetadata RWValue // mapping from paths to *Metadata // http handlers fileServer http.Handler // default file server - cmdHandler httpHandler - pkgHandler httpHandler + cmdHandler docServer + pkgHandler docServer ) func initHandlers() { - paths := filepath.SplitList(*pkgPath) - gorootSrc := filepath.Join(build.Default.GOROOT, "src", "pkg") - for _, p := range build.Default.SrcDirs() { - if p != gorootSrc { - paths = append(paths, p) + // Add named directories in -path argument as + // subdirectories of src/pkg. + for _, p := range filepath.SplitList(*pkgPath) { + _, elem := filepath.Split(p) + if elem == "" { + log.Fatalf("invalid -path argument: %q has no final element", p) } + fs.Bind("/src/pkg/"+elem, OS(p), "/", bindReplace) } - fsMap.Init(paths) - fileServer = http.FileServer(fsHttp) - cmdHandler = httpHandler{"/cmd/", filepath.Join(*goroot, "src", "cmd"), false} - pkgHandler = httpHandler{"/pkg/", filepath.Join(*goroot, "src", "pkg"), true} + fileServer = http.FileServer(&httpFS{fs}) + cmdHandler = docServer{"/cmd/", "/src/cmd", false} + pkgHandler = docServer{"/pkg/", "/src/pkg", true} } func registerPublicHandlers(mux *http.ServeMux) { mux.Handle(cmdHandler.pattern, &cmdHandler) mux.Handle(pkgHandler.pattern, &pkgHandler) mux.HandleFunc("/doc/codewalk/", codewalk) + mux.Handle("/doc/play/", fileServer) mux.HandleFunc("/search", search) mux.Handle("/robots.txt", fileServer) mux.HandleFunc("/opensearch.xml", serveSearchDesc) @@ -115,7 +110,7 @@ func registerPublicHandlers(mux *http.ServeMux) { } func initFSTree() { - dir := newDirectory(filepath.Join(*goroot, *testDir), nil, -1) + dir := newDirectory(pathpkg.Join("/", *testDir), -1) if dir == nil { log.Println("Warning: FSTree is nil") return @@ -125,177 +120,6 @@ func initFSTree() { } // ---------------------------------------------------------------------------- -// Directory filters - -// isParentOf returns true if p is a parent of (or the same as) q -// where p and q are directory paths. -func isParentOf(p, q string) bool { - n := len(p) - return strings.HasPrefix(q, p) && (len(q) <= n || q[n] == '/') -} - -func setPathFilter(list []string) { - if len(list) == 0 { - pathFilter.set(nil) - return - } - - // len(list) > 0 - pathFilter.set(func(path string) bool { - // list is sorted in increasing order and for each path all its children are removed - i := sort.Search(len(list), func(i int) bool { return list[i] > path }) - // Now we have list[i-1] <= path < list[i]. - // Path may be a child of list[i-1] or a parent of list[i]. - return i > 0 && isParentOf(list[i-1], path) || i < len(list) && isParentOf(path, list[i]) - }) -} - -func getPathFilter() func(string) bool { - f, _ := pathFilter.get() - if f != nil { - return f.(func(string) bool) - } - return nil -} - -// readDirList reads a file containing a newline-separated list -// of directory paths and returns the list of paths. -func readDirList(filename string) ([]string, error) { - contents, err := ReadFile(fs, filename) - if err != nil { - return nil, err - } - // create a sorted list of valid directory names - filter := func(path string) bool { - d, e := fs.Lstat(path) - if e != nil && err == nil { - // remember first error and return it from readDirList - // so we have at least some information if things go bad - err = e - } - return e == nil && isPkgDir(d) - } - list := canonicalizePaths(strings.Split(string(contents), "\n"), filter) - // for each parent path, remove all its children q - // (requirement for binary search to work when filtering) - i := 0 - for _, q := range list { - if i == 0 || !isParentOf(list[i-1], q) { - list[i] = q - i++ - } - } - return list[0:i], err -} - -// updateMappedDirs computes the directory tree for -// each user-defined file system mapping. If a filter -// is provided, it is used to filter directories. -// -func updateMappedDirs(filter func(string) bool) { - if !fsMap.IsEmpty() { - fsMap.Iterate(func(path string, value *RWValue) bool { - value.set(newDirectory(path, filter, -1)) - return true - }) - invalidateIndex() - } -} - -func updateFilterFile() { - updateMappedDirs(nil) // no filter for accuracy - - // collect directory tree leaf node paths - var buf bytes.Buffer - fsMap.Iterate(func(_ string, value *RWValue) bool { - v, _ := value.get() - if v != nil && v.(*Directory) != nil { - v.(*Directory).writeLeafs(&buf) - } - return true - }) - - // update filter file - if err := writeFileAtomically(*filter, buf.Bytes()); err != nil { - log.Printf("writeFileAtomically(%s): %s", *filter, err) - filterDelay.backoff(24 * time.Hour) // back off exponentially, but try at least once a day - } else { - filterDelay.set(*filterMin) // revert to regular filter update schedule - } -} - -func initDirTrees() { - // setup initial path filter - if *filter != "" { - list, err := readDirList(*filter) - if err != nil { - log.Printf("readDirList(%s): %s", *filter, err) - } - if *verbose || len(list) == 0 { - log.Printf("found %d directory paths in file %s", len(list), *filter) - } - setPathFilter(list) - } - - go updateMappedDirs(getPathFilter()) // use filter for speed - - // start filter update goroutine, if enabled. - if *filter != "" && *filterMin > 0 { - filterDelay.set(time.Duration(*filterMin) * time.Minute) // initial filter update delay - go func() { - for { - if *verbose { - log.Printf("start update of %s", *filter) - } - updateFilterFile() - delay, _ := filterDelay.get() - dt := delay.(time.Duration) - if *verbose { - log.Printf("next filter update in %s", dt) - } - time.Sleep(dt) - } - }() - } -} - -// ---------------------------------------------------------------------------- -// Path mapping - -// Absolute paths are file system paths (backslash-separated on Windows), -// but relative paths are always slash-separated. - -func absolutePath(relpath, defaultRoot string) string { - abspath := fsMap.ToAbsolute(relpath) - if abspath == "" { - // no user-defined mapping found; use default mapping - abspath = filepath.Join(defaultRoot, filepath.FromSlash(relpath)) - } - return abspath -} - -func relativeURL(abspath string) string { - relpath := fsMap.ToRelative(abspath) - if relpath == "" { - // prefix must end in a path separator - prefix := *goroot - if len(prefix) > 0 && prefix[len(prefix)-1] != filepath.Separator { - prefix += string(filepath.Separator) - } - if strings.HasPrefix(abspath, prefix) { - // no user-defined mapping found; use default mapping - relpath = filepath.ToSlash(abspath[len(prefix):]) - } - } - // Only if path is an invalid absolute path is relpath == "" - // at this point. This should never happen since absolute paths - // are only created via godoc for files that do exist. However, - // it is ok to return ""; it will simply provide a link to the - // top of the pkg or src directories. - return relpath -} - -// ---------------------------------------------------------------------------- // Tab conversion var spaces = []byte(" ") // 32 spaces seems like a good number @@ -391,7 +215,7 @@ func writeNode(w io.Writer, fset *token.FileSet, x interface{}) { } func filenameFunc(path string) string { - _, localname := filepath.Split(path) + _, localname := pathpkg.Split(path) return localname } @@ -581,7 +405,7 @@ func splitExampleName(s string) (name, suffix string) { } func pkgLinkFunc(path string) string { - relpath := relativeURL(path) + relpath := path[1:] // because of the irregular mapping under goroot // we need to correct certain relative paths if strings.HasPrefix(relpath, "src/pkg/") { @@ -597,7 +421,7 @@ func posLink_urlFunc(node ast.Node, fset *token.FileSet) string { if p := node.Pos(); p.IsValid() { pos := fset.Position(p) - relpath = relativeURL(pos.Filename) + relpath = pos.Filename line = pos.Line low = pos.Offset } @@ -626,6 +450,10 @@ func posLink_urlFunc(node ast.Node, fset *token.FileSet) string { return buf.String() } +func srcLinkFunc(s string) string { + return pathpkg.Clean("/" + s) +} + // fmap describes the template functions installed with all godoc templates. // Convention: template function names ending in "_html" or "_url" produce // HTML- or URL-escaped strings; all other function results may @@ -652,7 +480,7 @@ var fmap = template.FuncMap{ // support for URL attributes "pkgLink": pkgLinkFunc, - "srcLink": relativeURL, + "srcLink": srcLinkFunc, "posLink_url": posLink_urlFunc, // formatting of Examples @@ -662,10 +490,10 @@ var fmap = template.FuncMap{ } func readTemplate(name string) *template.Template { - path := filepath.Join(*goroot, "lib", "godoc", name) + path := "lib/godoc/" + name if *templateDir != "" { defaultpath := path - path = filepath.Join(*templateDir, name) + path = pathpkg.Join(*templateDir, name) if _, err := fs.Stat(path); err != nil { log.Print("readTemplate:", err) path = defaultpath @@ -718,20 +546,23 @@ func readTemplates() { // ---------------------------------------------------------------------------- // Generic HTML wrapper -func servePage(w http.ResponseWriter, title, subtitle, query string, content []byte) { +func servePage(w http.ResponseWriter, tabtitle, title, subtitle, query string, content []byte) { + if tabtitle == "" { + tabtitle = title + } d := struct { + Tabtitle string Title string Subtitle string - PkgRoots []string SearchBox bool Query string Version string Menu []byte Content []byte }{ + tabtitle, title, subtitle, - fsMap.PrefixList(), *indexEnabled, query, runtime.Version(), @@ -780,6 +611,23 @@ func serveHTMLDoc(w http.ResponseWriter, r *http.Request, abspath, relpath strin log.Printf("decoding metadata %s: %v", relpath, err) } + // evaluate as template if indicated + if meta.Template { + tmpl, err := template.New("main").Funcs(templateFuncs).Parse(string(src)) + if err != nil { + log.Printf("parsing template %s: %v", relpath, err) + serveError(w, r, relpath, err) + return + } + var buf bytes.Buffer + if err := tmpl.Execute(&buf, nil); err != nil { + log.Printf("executing template %s: %v", relpath, err) + serveError(w, r, relpath, err) + return + } + src = buf.Bytes() + } + // if it's the language spec, add tags to EBNF productions if strings.HasSuffix(abspath, "go_spec.html") { var buf bytes.Buffer @@ -787,7 +635,7 @@ func serveHTMLDoc(w http.ResponseWriter, r *http.Request, abspath, relpath strin src = buf.Bytes() } - servePage(w, meta.Title, meta.Subtitle, "", src) + servePage(w, "", meta.Title, meta.Subtitle, "", src) } func applyTemplate(t *template.Template, name string, data interface{}) []byte { @@ -799,7 +647,7 @@ func applyTemplate(t *template.Template, name string, data interface{}) []byte { } func redirect(w http.ResponseWriter, r *http.Request) (redirected bool) { - canonical := path.Clean(r.URL.Path) + canonical := pathpkg.Clean(r.URL.Path) if !strings.HasSuffix("/", canonical) { canonical += "/" } @@ -820,10 +668,10 @@ func serveTextFile(w http.ResponseWriter, r *http.Request, abspath, relpath, tit var buf bytes.Buffer buf.WriteString("<pre>") - FormatText(&buf, src, 1, filepath.Ext(abspath) == ".go", r.FormValue("h"), rangeSelection(r.FormValue("s"))) + FormatText(&buf, src, 1, pathpkg.Ext(abspath) == ".go", r.FormValue("h"), rangeSelection(r.FormValue("s"))) buf.WriteString("</pre>") - servePage(w, title+" "+relpath, "", "", buf.Bytes()) + servePage(w, relpath, title+" "+relpath, "", "", buf.Bytes()) } func serveDirectory(w http.ResponseWriter, r *http.Request, abspath, relpath string) { @@ -833,13 +681,12 @@ func serveDirectory(w http.ResponseWriter, r *http.Request, abspath, relpath str list, err := fs.ReadDir(abspath) if err != nil { - log.Printf("ReadDir: %s", err) serveError(w, r, relpath, err) return } contents := applyTemplate(dirlistHTML, "dirlistHTML", list) - servePage(w, "Directory "+relpath, "", "", contents) + servePage(w, relpath, "Directory "+relpath, "", "", contents) } func serveFile(w http.ResponseWriter, r *http.Request) { @@ -856,10 +703,10 @@ func serveFile(w http.ResponseWriter, r *http.Request) { relpath = m.filePath } + abspath := relpath relpath = relpath[1:] // strip leading slash - abspath := absolutePath(relpath, *goroot) - switch path.Ext(relpath) { + switch pathpkg.Ext(relpath) { case ".html": if strings.HasSuffix(relpath, "/index.html") { // We'll show index.html for the directory. @@ -886,8 +733,8 @@ func serveFile(w http.ResponseWriter, r *http.Request) { if redirect(w, r) { return } - if index := filepath.Join(abspath, "index.html"); isTextFile(index) { - serveHTMLDoc(w, r, index, relativeURL(index)) + if index := pathpkg.Join(abspath, "index.html"); isTextFile(index) { + serveHTMLDoc(w, r, index, index) return } serveDirectory(w, r, abspath, relpath) @@ -992,7 +839,7 @@ func (info *PageInfo) IsEmpty() bool { return info.Err != nil || info.PAst == nil && info.PDoc == nil && info.Dirs == nil } -type httpHandler struct { +type docServer struct { pattern string // url pattern; e.g. "/pkg/" fsRoot string // file system root to which the pattern is mapped isPkg bool // true if this handler serves real package documentation (as opposed to command documentation) @@ -1029,7 +876,7 @@ func inList(name string, list []string) bool { // directories, PageInfo.Dirs is nil. If a directory read error occurred, // PageInfo.Err is set to the respective error but the error is not logged. // -func (h *httpHandler) getPageInfo(abspath, relpath, pkgname string, mode PageInfoMode) PageInfo { +func (h *docServer) getPageInfo(abspath, relpath, pkgname string, mode PageInfoMode) PageInfo { var pkgFiles []string // If we're showing the default package, restrict to the ones @@ -1043,7 +890,7 @@ func (h *httpHandler) getPageInfo(abspath, relpath, pkgname string, mode PageInf // to choose, set ctxt.GOOS and ctxt.GOARCH before // calling ctxt.ScanDir. ctxt := build.Default - ctxt.IsAbsPath = path.IsAbs + ctxt.IsAbsPath = pathpkg.IsAbs ctxt.ReadDir = fsReadDir ctxt.OpenFile = fsOpenFile dir, err := ctxt.ImportDir(abspath, 0) @@ -1091,13 +938,13 @@ func (h *httpHandler) getPageInfo(abspath, relpath, pkgname string, mode PageInf // the package with dirname, and the 3rd choice is a package // that is not called "main" if there is exactly one such // package. Otherwise, don't select a package. - dirpath, dirname := filepath.Split(abspath) + dirpath, dirname := pathpkg.Split(abspath) // If the dirname is "go" we might be in a sub-directory for // .go files - use the outer directory name instead for better // results. if dirname == "go" { - _, dirname = filepath.Split(filepath.Clean(dirpath)) + _, dirname = pathpkg.Split(pathpkg.Clean(dirpath)) } var choice3 *ast.Package @@ -1161,7 +1008,7 @@ func (h *httpHandler) getPageInfo(abspath, relpath, pkgname string, mode PageInf if mode&allMethods != 0 { m |= doc.AllMethods } - pdoc = doc.New(pkg, path.Clean(relpath), m) // no trailing '/' in importpath + pdoc = doc.New(pkg, pathpkg.Clean(relpath), m) // no trailing '/' in importpath } else { // show source code // TODO(gri) Consider eliminating export filtering in this mode, @@ -1184,34 +1031,11 @@ func (h *httpHandler) getPageInfo(abspath, relpath, pkgname string, mode PageInf timestamp = ts } if dir == nil { - // the path may refer to a user-specified file system mapped - // via fsMap; lookup that mapping and corresponding RWValue - // if any - var v *RWValue - fsMap.Iterate(func(path string, value *RWValue) bool { - if isParentOf(path, abspath) { - // mapping found - v = value - return false - } - return true - }) - if v != nil { - // found a RWValue associated with a user-specified file - // system; a non-nil RWValue stores a (possibly out-of-date) - // directory tree for that file system - if tree, ts := v.get(); tree != nil && tree.(*Directory) != nil { - dir = tree.(*Directory).lookup(abspath) - timestamp = ts - } - } - } - if dir == nil { // no directory tree present (too early after startup or // command-line mode); compute one level for this page // note: cannot use path filter here because in general // it doesn't contain the fsTree path - dir = newDirectory(abspath, nil, 1) + dir = newDirectory(abspath, 1) timestamp = time.Now() } @@ -1230,13 +1054,13 @@ func (h *httpHandler) getPageInfo(abspath, relpath, pkgname string, mode PageInf } } -func (h *httpHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { +func (h *docServer) ServeHTTP(w http.ResponseWriter, r *http.Request) { if redirect(w, r) { return } - relpath := path.Clean(r.URL.Path[len(h.pattern):]) - abspath := absolutePath(relpath, h.fsRoot) + relpath := pathpkg.Clean(r.URL.Path[len(h.pattern):]) + abspath := pathpkg.Join(h.fsRoot, relpath) mode := getPageInfoMode(r) if relpath == builtinPkgPath { mode = noFiltering @@ -1254,30 +1078,41 @@ func (h *httpHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { return } - var title, subtitle string + var tabtitle, title, subtitle string switch { case info.PAst != nil: - title = "Package " + info.PAst.Name.Name + tabtitle = info.PAst.Name.Name + title = "Package " + tabtitle case info.PDoc != nil: - switch { - case info.IsPkg: - title = "Package " + info.PDoc.Name - case info.PDoc.Name == fakePkgName: + if info.PDoc.Name == fakePkgName { // assume that the directory name is the command name - _, pkgname := path.Split(relpath) - title = "Command " + pkgname - default: - title = "Command " + info.PDoc.Name + _, tabtitle = pathpkg.Split(relpath) + } else { + tabtitle = info.PDoc.Name + } + if info.IsPkg { + title = "Package " + tabtitle + } else { + title = "Command " + tabtitle } default: - title = "Directory " + relativeURL(info.Dirname) + tabtitle = info.Dirname + title = "Directory " + tabtitle if *showTimestamps { subtitle = "Last update: " + info.DirTime.String() } } + // special cases for top-level package/command directories + switch tabtitle { + case "/src/pkg": + tabtitle = "Packages" + case "/src/cmd": + tabtitle = "Commands" + } + contents := applyTemplate(packageHTML, "packageHTML", info) - servePage(w, title, subtitle, "", contents) + servePage(w, tabtitle, title, subtitle, "", contents) } // ---------------------------------------------------------------------------- @@ -1367,7 +1202,7 @@ func search(w http.ResponseWriter, r *http.Request) { } contents := applyTemplate(searchHTML, "searchHTML", result) - servePage(w, title, "", query, contents) + servePage(w, query, title, "", query, contents) } // ---------------------------------------------------------------------------- @@ -1376,6 +1211,7 @@ func search(w http.ResponseWriter, r *http.Request) { type Metadata struct { Title string Subtitle string + Template bool // execute as template Path string // canonical path for this page filePath string // filesystem path relative to goroot } @@ -1414,7 +1250,7 @@ func updateMetadata() { return } for _, fi := range fis { - name := filepath.Join(dir, fi.Name()) + name := pathpkg.Join(dir, fi.Name()) if fi.IsDir() { scan(name) // recurse continue @@ -1434,7 +1270,7 @@ func updateMetadata() { continue } // Store relative filesystem path in Metadata. - meta.filePath = filepath.Join("/", name[len(*goroot):]) + meta.filePath = name if meta.Path == "" { // If no Path, canonical path is actual path. meta.Path = meta.filePath @@ -1444,7 +1280,7 @@ func updateMetadata() { metadata[meta.filePath] = &meta } } - scan(filepath.Join(*goroot, "doc")) + scan("/doc") docMetadata.set(metadata) } @@ -1519,13 +1355,9 @@ func feedDirnames(root *RWValue, c chan<- string) { // of all the file systems under godoc's observation. // func fsDirnames() <-chan string { - c := make(chan string, 256) // asynchronous for fewer context switches + c := make(chan string, 256) // buffered for fewer context switches go func() { feedDirnames(&fsTree, c) - fsMap.Iterate(func(_ string, root *RWValue) bool { - feedDirnames(root, c) - return true - }) close(c) }() return c diff --git a/src/cmd/godoc/httpzip.go b/src/cmd/godoc/httpzip.go deleted file mode 100644 index 12e99646d..000000000 --- a/src/cmd/godoc/httpzip.go +++ /dev/null @@ -1,190 +0,0 @@ -// Copyright 2011 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. - -// This file provides an implementation of the http.FileSystem -// interface based on the contents of a .zip file. -// -// Assumptions: -// -// - The file paths stored in the zip file must use a slash ('/') as path -// separator; and they must be relative (i.e., they must not start with -// a '/' - this is usually the case if the file was created w/o special -// options). -// - The zip file system treats the file paths found in the zip internally -// like absolute paths w/o a leading '/'; i.e., the paths are considered -// relative to the root of the file system. -// - All path arguments to file system methods are considered relative to -// the root specified with NewHttpZipFS (even if the paths start with a '/'). - -// TODO(gri) Should define a commonly used FileSystem API that is the same -// for http and godoc. Then we only need one zip-file based file -// system implementation. - -package main - -import ( - "archive/zip" - "fmt" - "io" - "net/http" - "os" - "path" - "sort" - "strings" - "time" -) - -type fileInfo struct { - name string - mode os.FileMode - size int64 - mtime time.Time -} - -func (fi *fileInfo) Name() string { return fi.name } -func (fi *fileInfo) Mode() os.FileMode { return fi.mode } -func (fi *fileInfo) Size() int64 { return fi.size } -func (fi *fileInfo) ModTime() time.Time { return fi.mtime } -func (fi *fileInfo) IsDir() bool { return fi.mode.IsDir() } -func (fi *fileInfo) Sys() interface{} { return nil } - -// httpZipFile is the zip-file based implementation of http.File -type httpZipFile struct { - path string // absolute path within zip FS without leading '/' - info os.FileInfo - io.ReadCloser // nil for directory - list zipList -} - -func (f *httpZipFile) Close() error { - if !f.info.IsDir() { - return f.ReadCloser.Close() - } - f.list = nil - return nil -} - -func (f *httpZipFile) Stat() (os.FileInfo, error) { - return f.info, nil -} - -func (f *httpZipFile) Readdir(count int) ([]os.FileInfo, error) { - var list []os.FileInfo - dirname := f.path + "/" - prevname := "" - for i, e := range f.list { - if count == 0 { - f.list = f.list[i:] - break - } - if !strings.HasPrefix(e.Name, dirname) { - f.list = nil - break // not in the same directory anymore - } - name := e.Name[len(dirname):] // local name - var mode os.FileMode - var size int64 - var mtime time.Time - if i := strings.IndexRune(name, '/'); i >= 0 { - // We infer directories from files in subdirectories. - // If we have x/y, return a directory entry for x. - name = name[0:i] // keep local directory name only - mode = os.ModeDir - // no size or mtime for directories - } else { - mode = 0 - size = int64(e.UncompressedSize) - mtime = e.ModTime() - } - // If we have x/y and x/z, don't return two directory entries for x. - // TODO(gri): It should be possible to do this more efficiently - // by determining the (fs.list) range of local directory entries - // (via two binary searches). - if name != prevname { - list = append(list, &fileInfo{ - name, - mode, - size, - mtime, - }) - prevname = name - count-- - } - } - - if count >= 0 && len(list) == 0 { - return nil, io.EOF - } - - return list, nil -} - -func (f *httpZipFile) Seek(offset int64, whence int) (int64, error) { - return 0, fmt.Errorf("Seek not implemented for zip file entry: %s", f.info.Name()) -} - -// httpZipFS is the zip-file based implementation of http.FileSystem -type httpZipFS struct { - *zip.ReadCloser - list zipList - root string -} - -func (fs *httpZipFS) Open(name string) (http.File, error) { - // fs.root does not start with '/'. - path := path.Join(fs.root, name) // path is clean - index, exact := fs.list.lookup(path) - if index < 0 || !strings.HasPrefix(path, fs.root) { - // file not found or not under root - return nil, fmt.Errorf("file not found: %s", name) - } - - if exact { - // exact match found - must be a file - f := fs.list[index] - rc, err := f.Open() - if err != nil { - return nil, err - } - return &httpZipFile{ - path, - &fileInfo{ - name, - 0, - int64(f.UncompressedSize), - f.ModTime(), - }, - rc, - nil, - }, nil - } - - // not an exact match - must be a directory - return &httpZipFile{ - path, - &fileInfo{ - name, - os.ModeDir, - 0, // no size for directory - time.Time{}, // no mtime for directory - }, - nil, - fs.list[index:], - }, nil -} - -func (fs *httpZipFS) Close() error { - fs.list = nil - return fs.ReadCloser.Close() -} - -// NewHttpZipFS creates a new http.FileSystem based on the contents of -// the zip file rc restricted to the directory tree specified by root; -// root must be an absolute path. -func NewHttpZipFS(rc *zip.ReadCloser, root string) http.FileSystem { - list := make(zipList, len(rc.File)) - copy(list, rc.File) // sort a copy of rc.File - sort.Sort(list) - return &httpZipFS{rc, list, zipPath(root)} -} diff --git a/src/cmd/godoc/index.go b/src/cmd/godoc/index.go index 6c36e6f4f..1bef79693 100644 --- a/src/cmd/godoc/index.go +++ b/src/cmd/godoc/index.go @@ -48,7 +48,7 @@ import ( "index/suffixarray" "io" "os" - "path/filepath" + pathpkg "path" "regexp" "sort" "strings" @@ -248,7 +248,7 @@ type File struct { // Path returns the file path of f. func (f *File) Path() string { - return filepath.Join(f.Pak.Path, f.Name) + return pathpkg.Join(f.Pak.Path, f.Name) } // A Spot describes a single occurrence of a word. @@ -695,7 +695,7 @@ var whitelisted = map[string]bool{ // of "permitted" files for indexing. The filename must // be the directory-local name of the file. func isWhitelisted(filename string) bool { - key := filepath.Ext(filename) + key := pathpkg.Ext(filename) if key == "" { // file has no extension - use entire filename key = filename @@ -708,7 +708,7 @@ func (x *Indexer) visitFile(dirname string, f os.FileInfo, fulltextIndex bool) { return } - filename := filepath.Join(dirname, f.Name()) + filename := pathpkg.Join(dirname, f.Name()) goFile := false switch { diff --git a/src/cmd/godoc/main.go b/src/cmd/godoc/main.go index 5f4210539..23f712ab3 100644 --- a/src/cmd/godoc/main.go +++ b/src/cmd/godoc/main.go @@ -38,13 +38,13 @@ import ( "log" "net/http" _ "net/http/pprof" // to serve /debug/pprof/* + "net/url" "os" - "path" + pathpkg "path" "path/filepath" "regexp" "runtime" "strings" - "time" ) const defaultAddr = ":6060" // default webserver address @@ -57,11 +57,6 @@ var ( // file-based index writeIndex = flag.Bool("write_index", false, "write index to a file; the file name must be specified with -index_files") - // periodic sync - syncCmd = flag.String("sync", "", "sync command; disabled if empty") - syncMin = flag.Int("sync_minutes", 0, "sync interval in minutes; disabled if <= 0") - syncDelay delayTime // actual sync interval in minutes; usually syncDelay == syncMin, but syncDelay may back off exponentially - // network httpAddr = flag.String("http", "", "HTTP service address (e.g., '"+defaultAddr+"')") serverAddr = flag.String("server", "", "webserver address for command line searches") @@ -69,6 +64,7 @@ var ( // layout control html = flag.Bool("html", false, "print HTML in command-line mode") srcMode = flag.Bool("src", false, "print (exported) source in command-line mode") + urlFlag = flag.String("url", "", "print HTML for named URL") // command-line searches query = flag.Bool("q", false, "arguments are considered search queries") @@ -77,76 +73,7 @@ var ( func serveError(w http.ResponseWriter, r *http.Request, relpath string, err error) { contents := applyTemplate(errorHTML, "errorHTML", err) // err may contain an absolute path! w.WriteHeader(http.StatusNotFound) - servePage(w, "File "+relpath, "", "", contents) -} - -func exec(rw http.ResponseWriter, args []string) (status int) { - r, w, err := os.Pipe() - if err != nil { - log.Printf("os.Pipe(): %v", err) - return 2 - } - - bin := args[0] - fds := []*os.File{nil, w, w} - if *verbose { - log.Printf("executing %v", args) - } - p, err := os.StartProcess(bin, args, &os.ProcAttr{Files: fds, Dir: *goroot}) - defer r.Close() - w.Close() - if err != nil { - log.Printf("os.StartProcess(%q): %v", bin, err) - return 2 - } - - var buf bytes.Buffer - io.Copy(&buf, r) - wait, err := p.Wait() - if err != nil { - os.Stderr.Write(buf.Bytes()) - log.Printf("os.Wait(%d, 0): %v", p.Pid, err) - return 2 - } - if !wait.Success() { - os.Stderr.Write(buf.Bytes()) - log.Printf("executing %v failed", args) - status = 1 // See comment in default case in dosync. - return - } - - if *verbose { - os.Stderr.Write(buf.Bytes()) - } - if rw != nil { - rw.Header().Set("Content-Type", "text/plain; charset=utf-8") - rw.Write(buf.Bytes()) - } - - return -} - -func dosync(w http.ResponseWriter, r *http.Request) { - args := []string{"/bin/sh", "-c", *syncCmd} - switch exec(w, args) { - case 0: - // sync succeeded and some files have changed; - // update package tree. - // TODO(gri): The directory tree may be temporarily out-of-sync. - // Consider keeping separate time stamps so the web- - // page can indicate this discrepancy. - initFSTree() - fallthrough - case 1: - // sync failed because no files changed; - // don't change the package tree - syncDelay.set(time.Duration(*syncMin) * time.Minute) // revert to regular sync schedule - default: - // TODO(r): this cannot happen now, since Wait has a boolean exit condition, - // not an integer. - // sync failed because of an error - back off exponentially, but try at least once a day - syncDelay.backoff(24 * time.Hour) - } + servePage(w, relpath, "File "+relpath, "", "", contents) } func usage() { @@ -225,7 +152,7 @@ func main() { flag.Parse() // Check usage: either server and no args, command line and args, or index creation mode - if (*httpAddr != "") != (flag.NArg() == 0) && !*writeIndex { + if (*httpAddr != "" || *urlFlag != "") != (flag.NArg() == 0) && !*writeIndex { usage() } @@ -239,19 +166,20 @@ func main() { // same is true for the http handlers in initHandlers. if *zipfile == "" { // use file system of underlying OS - *goroot = filepath.Clean(*goroot) // normalize path separator - fs = OS - fsHttp = http.Dir(*goroot) + fs.Bind("/", OS(*goroot), "/", bindReplace) } else { // use file system specified via .zip file (path separator must be '/') rc, err := zip.OpenReader(*zipfile) if err != nil { log.Fatalf("%s: %s\n", *zipfile, err) } - defer rc.Close() // be nice (e.g., -writeIndex mode) - *goroot = path.Join("/", *goroot) // fsHttp paths are relative to '/' - fs = NewZipFS(rc) - fsHttp = NewHttpZipFS(rc, *goroot) + defer rc.Close() // be nice (e.g., -writeIndex mode) + fs.Bind("/", NewZipFS(rc, *zipfile), *goroot, bindReplace) + } + + // Bind $GOPATH trees into Go root. + for _, p := range filepath.SplitList(build.Default.GOPATH) { + fs.Bind("/src/pkg", OS(p), "/src", bindAfter) } readTemplates() @@ -266,7 +194,6 @@ func main() { log.Println("initialize file systems") *verbose = true // want to see what happens initFSTree() - initDirTrees() *indexThrottle = 1 updateIndex() @@ -286,6 +213,44 @@ func main() { return } + // Print content that would be served at the URL *urlFlag. + if *urlFlag != "" { + registerPublicHandlers(http.DefaultServeMux) + // Try up to 10 fetches, following redirects. + urlstr := *urlFlag + for i := 0; i < 10; i++ { + // Prepare request. + u, err := url.Parse(urlstr) + if err != nil { + log.Fatal(err) + } + req := &http.Request{ + URL: u, + } + + // Invoke default HTTP handler to serve request + // to our buffering httpWriter. + w := &httpWriter{h: http.Header{}, code: 200} + http.DefaultServeMux.ServeHTTP(w, req) + + // Return data, error, or follow redirect. + switch w.code { + case 200: // ok + os.Stdout.Write(w.Bytes()) + return + case 301, 302, 303, 307: // redirect + redirect := w.h.Get("Location") + if redirect == "" { + log.Fatalf("HTTP %d without Location header", w.code) + } + urlstr = redirect + default: + log.Fatalf("HTTP error %d", w.code) + } + } + log.Fatalf("too many redirects") + } + if *httpAddr != "" { // HTTP server mode. var handler http.Handler = http.DefaultServeMux @@ -303,41 +268,20 @@ func main() { default: log.Print("identifier search index enabled") } - if !fsMap.IsEmpty() { - log.Print("user-defined mapping:") - fsMap.Fprint(os.Stderr) - } + fs.Fprint(os.Stderr) handler = loggingHandler(handler) } registerPublicHandlers(http.DefaultServeMux) - if *syncCmd != "" { - http.Handle("/debug/sync", http.HandlerFunc(dosync)) - } + + // Playground handlers are not available in local godoc. + http.HandleFunc("/compile", disabledHandler) + http.HandleFunc("/share", disabledHandler) // Initialize default directory tree with corresponding timestamp. // (Do it in a goroutine so that launch is quick.) go initFSTree() - // Initialize directory trees for user-defined file systems (-path flag). - initDirTrees() - - // Start sync goroutine, if enabled. - if *syncCmd != "" && *syncMin > 0 { - syncDelay.set(*syncMin) // initial sync delay - go func() { - for { - dosync(nil, nil) - delay, _ := syncDelay.get() - dt := delay.(time.Duration) - if *verbose { - log.Printf("next sync in %s", dt) - } - time.Sleep(dt) - } - }() - } - // Immediately update metadata. updateMetadata() // Periodically refresh metadata. @@ -374,27 +318,38 @@ func main() { return } - // determine paths + // Determine paths. + // + // If we are passed an operating system path like . or ./foo or /foo/bar or c:\mysrc, + // we need to map that path somewhere in the fs name space so that routines + // like getPageInfo will see it. We use the arbitrarily-chosen virtual path "/target" + // for this. That is, if we get passed a directory like the above, we map that + // directory so that getPageInfo sees it as /target. + const target = "/target" const cmdPrefix = "cmd/" path := flag.Arg(0) var forceCmd bool - if strings.HasPrefix(path, ".") { - // assume cwd; don't assume -goroot + var abspath, relpath string + if filepath.IsAbs(path) { + fs.Bind(target, OS(path), "/", bindReplace) + abspath = target + } else if build.IsLocalImport(path) { cwd, _ := os.Getwd() // ignore errors path = filepath.Join(cwd, path) + fs.Bind(target, OS(path), "/", bindReplace) + abspath = target } else if strings.HasPrefix(path, cmdPrefix) { path = path[len(cmdPrefix):] forceCmd = true - } - relpath := path - abspath := path - if bp, _ := build.Import(path, "", build.FindOnly); bp.Dir != "" && bp.ImportPath != "" { + } else if bp, _ := build.Import(path, "", build.FindOnly); bp.Dir != "" && bp.ImportPath != "" { + fs.Bind(target, OS(bp.Dir), "/", bindReplace) + abspath = target relpath = bp.ImportPath - abspath = bp.Dir - } else if !filepath.IsAbs(path) { - abspath = absolutePath(path, pkgHandler.fsRoot) } else { - relpath = relativeURL(path) + abspath = pathpkg.Join(pkgHandler.fsRoot, path) + } + if relpath == "" { + relpath = abspath } var mode PageInfoMode @@ -422,7 +377,7 @@ func main() { // (the go command invokes godoc w/ absolute paths; don't override) var cinfo PageInfo if !filepath.IsAbs(path) { - abspath = absolutePath(path, cmdHandler.fsRoot) + abspath = pathpkg.Join(cmdHandler.fsRoot, path) cinfo = cmdHandler.getPageInfo(abspath, relpath, "", mode) } @@ -445,6 +400,10 @@ func main() { if info.Err != nil { log.Fatalf("%v", info.Err) } + if info.PDoc != nil && info.PDoc.ImportPath == target { + // Replace virtual /target with actual argument from command line. + info.PDoc.ImportPath = flag.Arg(0) + } // If we have more than one argument, use the remaining arguments for filtering if flag.NArg() > 1 { @@ -485,3 +444,19 @@ func main() { log.Printf("packageText.Execute: %s", err) } } + +// An httpWriter is an http.ResponseWriter writing to a bytes.Buffer. +type httpWriter struct { + bytes.Buffer + h http.Header + code int +} + +func (w *httpWriter) Header() http.Header { return w.h } +func (w *httpWriter) WriteHeader(code int) { w.code = code } + +// disabledHandler serves a 501 "Not Implemented" response. +func disabledHandler(w http.ResponseWriter, r *http.Request) { + w.WriteHeader(http.StatusNotImplemented) + fmt.Fprint(w, "This functionality is not available via local godoc.") +} diff --git a/src/cmd/godoc/mapping.go b/src/cmd/godoc/mapping.go deleted file mode 100644 index 544dd6f66..000000000 --- a/src/cmd/godoc/mapping.go +++ /dev/null @@ -1,202 +0,0 @@ -// Copyright 2009 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. - -// This file implements the Mapping data structure. - -package main - -import ( - "fmt" - "io" - "path" - "path/filepath" - "sort" - "strings" -) - -// A Mapping object maps relative paths (e.g. from URLs) -// to absolute paths (of the file system) and vice versa. -// -// A Mapping object consists of a list of individual mappings -// of the form: prefix -> path which are interpreted as follows: -// A relative path of the form prefix/tail is to be mapped to -// the absolute path/tail, if that absolute path exists in the file -// system. Given a Mapping object, a relative path is mapped to an -// absolute path by trying each of the individual mappings in order, -// until a valid mapping is found. For instance, for the mapping: -// -// user -> /home/user -// public -> /home/user/public -// public -> /home/build/public -// -// the relative paths below are mapped to absolute paths as follows: -// -// user/foo -> /home/user/foo -// public/net/rpc/file1.go -> /home/user/public/net/rpc/file1.go -// -// If there is no /home/user/public/net/rpc/file2.go, the next public -// mapping entry is used to map the relative path to: -// -// public/net/rpc/file2.go -> /home/build/public/net/rpc/file2.go -// -// (assuming that file exists). -// -// Each individual mapping also has a RWValue associated with it that -// may be used to store mapping-specific information. See the Iterate -// method. -// -type Mapping struct { - list []mapping - prefixes []string // lazily computed from list -} - -type mapping struct { - prefix, path string - value *RWValue -} - -// Init initializes the Mapping from a list of paths. -// Empty paths are ignored; relative paths are assumed to be relative to -// the current working directory and converted to absolute paths. -// For each path of the form: -// -// dirname/localname -// -// a mapping -// -// localname -> path -// -// is added to the Mapping object, in the order of occurrence. -// For instance, under Unix, the argument: -// -// /home/user:/home/build/public -// -// leads to the following mapping: -// -// user -> /home/user -// public -> /home/build/public -// -func (m *Mapping) Init(paths []string) { - pathlist := canonicalizePaths(paths, nil) - list := make([]mapping, len(pathlist)) - - // create mapping list - for i, path := range pathlist { - _, prefix := filepath.Split(path) - list[i] = mapping{prefix, path, new(RWValue)} - } - - m.list = list -} - -// IsEmpty returns true if there are no mappings specified. -func (m *Mapping) IsEmpty() bool { return len(m.list) == 0 } - -// PrefixList returns a list of all prefixes, with duplicates removed. -// For instance, for the mapping: -// -// user -> /home/user -// public -> /home/user/public -// public -> /home/build/public -// -// the prefix list is: -// -// user, public -// -func (m *Mapping) PrefixList() []string { - // compute the list lazily - if m.prefixes == nil { - list := make([]string, len(m.list)) - - // populate list - for i, e := range m.list { - list[i] = e.prefix - } - - // sort the list and remove duplicate entries - sort.Strings(list) - i := 0 - prev := "" - for _, path := range list { - if path != prev { - list[i] = path - i++ - prev = path - } - } - - m.prefixes = list[0:i] - } - - return m.prefixes -} - -// Fprint prints the mapping. -func (m *Mapping) Fprint(w io.Writer) { - for _, e := range m.list { - fmt.Fprintf(w, "\t%s -> %s\n", e.prefix, e.path) - } -} - -const sep = string(filepath.Separator) - -// splitFirst splits a path at the first path separator and returns -// the path's head (the top-most directory specified by the path) and -// its tail (the rest of the path). If there is no path separator, -// splitFirst returns path as head, and the empty string as tail. -// Specifically, splitFirst("foo") == splitFirst("foo/"). -// -func splitFirst(path string) (head, tail string) { - if i := strings.Index(path, sep); i > 0 { - // 0 < i < len(path) - return path[0:i], path[i+1:] - } - return path, "" -} - -// ToAbsolute maps a slash-separated relative path to an absolute filesystem -// path using the Mapping specified by the receiver. If the path cannot -// be mapped, the empty string is returned. -// -func (m *Mapping) ToAbsolute(spath string) string { - fpath := filepath.FromSlash(spath) - prefix, tail := splitFirst(fpath) - for _, e := range m.list { - if e.prefix == prefix { - // found potential mapping - abspath := filepath.Join(e.path, tail) - if _, err := fs.Stat(abspath); err == nil { - return abspath - } - } - } - return "" // no match -} - -// ToRelative maps an absolute filesystem path to a relative slash-separated -// path using the Mapping specified by the receiver. If the path cannot -// be mapped, the empty string is returned. -// -func (m *Mapping) ToRelative(fpath string) string { - for _, e := range m.list { - // if fpath has prefix e.path, the next character must be a separator (was issue 3096) - if strings.HasPrefix(fpath, e.path+sep) { - spath := filepath.ToSlash(fpath) - // /absolute/prefix/foo -> prefix/foo - return path.Join(e.prefix, spath[len(e.path):]) // Join will remove a trailing '/' - } - } - return "" // no match -} - -// Iterate calls f for each path and RWValue in the mapping (in uspecified order) -// until f returns false. -// -func (m *Mapping) Iterate(f func(path string, value *RWValue) bool) { - for _, e := range m.list { - if !f(e.path, e.value) { - return - } - } -} diff --git a/src/cmd/godoc/parser.go b/src/cmd/godoc/parser.go index d6cc67cb5..c6b7c2dc8 100644 --- a/src/cmd/godoc/parser.go +++ b/src/cmd/godoc/parser.go @@ -14,7 +14,7 @@ import ( "go/parser" "go/token" "os" - "path/filepath" + pathpkg "path" ) func parseFile(fset *token.FileSet, filename string, mode parser.Mode) (*ast.File, error) { @@ -58,7 +58,7 @@ func parseDir(fset *token.FileSet, path string, filter func(os.FileInfo) bool) ( i := 0 for _, d := range list { if filter == nil || filter(d) { - filenames[i] = filepath.Join(path, d.Name()) + filenames[i] = pathpkg.Join(path, d.Name()) i++ } } diff --git a/doc/tmpltohtml.go b/src/cmd/godoc/template.go index 70745f4dd..d709baef4 100644 --- a/doc/tmpltohtml.go +++ b/src/cmd/godoc/template.go @@ -2,6 +2,12 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +// Template support for writing HTML documents. +// Documents that include Template: true in their +// metadata are executed as input to text/template. +// +// This file defines functions for those templates to invoke. + // The template uses the function "code" to inject program // source into the output by extracting code from files and // injecting them as HTML-escaped <pre> blocks. @@ -26,52 +32,27 @@ package main import ( - "flag" + "bytes" "fmt" - "io/ioutil" "log" - "os" - "path/filepath" "regexp" "strings" "text/template" ) -func Usage() { - fmt.Fprintf(os.Stderr, "usage: tmpltohtml file\n") - os.Exit(2) -} +// Functions in this file panic on error, but the panic is recovered +// to an error by 'code'. var templateFuncs = template.FuncMap{ - "code": code, - "donotedit": donotedit, -} - -func main() { - flag.Usage = Usage - flag.Parse() - if len(flag.Args()) != 1 { - Usage() - } - - // Read and parse the input. - name := flag.Arg(0) - tmpl := template.New(filepath.Base(name)).Funcs(templateFuncs) - if _, err := tmpl.ParseFiles(name); err != nil { - log.Fatal(err) - } - - // Execute the template. - if err := tmpl.Execute(os.Stdout, 0); err != nil { - log.Fatal(err) - } + "code": code, } -// contents reads a file by name and returns its contents as a string. +// contents reads and returns the content of the named file +// (from the virtual file system, so for example /doc refers to $GOROOT/doc). func contents(name string) string { - file, err := ioutil.ReadFile(name) + file, err := ReadFile(fs, name) if err != nil { - log.Fatal(err) + log.Panic(err) } return string(file) } @@ -87,17 +68,18 @@ func format(arg interface{}) string { } return fmt.Sprintf("%q", arg) default: - log.Fatalf("unrecognized argument: %v type %T", arg, arg) + log.Panicf("unrecognized argument: %v type %T", arg, arg) } return "" } -func donotedit() string { - // No editing please. - return fmt.Sprintf("<!--\n DO NOT EDIT: created by\n tmpltohtml %s\n-->\n", flag.Args()[0]) -} +func code(file string, arg ...interface{}) (s string, err error) { + defer func() { + if r := recover(); r != nil { + err = fmt.Errorf("%v", r) + } + }() -func code(file string, arg ...interface{}) (string, error) { text := contents(file) var command string switch len(arg) { @@ -117,10 +99,11 @@ func code(file string, arg ...interface{}) (string, error) { text = strings.Trim(text, "\n") // Replace tabs by spaces, which work better in HTML. text = strings.Replace(text, "\t", " ", -1) - // Escape the program text for HTML. - text = template.HTMLEscapeString(text) + var buf bytes.Buffer + // HTML-escape text and syntax-color comments like elsewhere. + FormatText(&buf, []byte(text), -1, true, "", nil) // Include the command as a comment. - text = fmt.Sprintf("<pre><!--{{%s}}\n-->%s</pre>", command, text) + text = fmt.Sprintf("<pre><!--{{%s}}\n-->%s</pre>", command, buf.Bytes()) return text, nil } @@ -129,13 +112,13 @@ func parseArg(arg interface{}, file string, max int) (ival int, sval string, isI switch n := arg.(type) { case int: if n <= 0 || n > max { - log.Fatalf("%q:%d is out of range", file, n) + log.Panicf("%q:%d is out of range", file, n) } return n, "", true case string: return 0, n, false } - log.Fatalf("unrecognized argument %v type %T", arg, arg) + log.Panicf("unrecognized argument %v type %T", arg, arg) return } @@ -160,7 +143,7 @@ func multipleLines(file, text string, arg1, arg2 interface{}) string { if !isInt2 { line2 = match(file, line1, lines, pattern2) } else if line2 < line1 { - log.Fatalf("lines out of order for %q: %d %d", text, line1, line2) + log.Panicf("lines out of order for %q: %d %d", text, line1, line2) } for k := line1 - 1; k < line2; k++ { if strings.HasSuffix(lines[k], "OMIT\n") { @@ -177,7 +160,7 @@ func match(file string, start int, lines []string, pattern string) int { // $ matches the end of the file. if pattern == "$" { if len(lines) == 0 { - log.Fatalf("%q: empty file", file) + log.Panicf("%q: empty file", file) } return len(lines) } @@ -185,15 +168,15 @@ func match(file string, start int, lines []string, pattern string) int { if len(pattern) > 2 && pattern[0] == '/' && pattern[len(pattern)-1] == '/' { re, err := regexp.Compile(pattern[1 : len(pattern)-1]) if err != nil { - log.Fatal(err) + log.Panic(err) } for i := start; i < len(lines); i++ { if re.MatchString(lines[i]) { return i + 1 } } - log.Fatalf("%s: no match for %#q", file, pattern) + log.Panicf("%s: no match for %#q", file, pattern) } - log.Fatalf("unrecognized pattern: %q", pattern) + log.Panicf("unrecognized pattern: %q", pattern) return 0 } diff --git a/src/cmd/godoc/utils.go b/src/cmd/godoc/utils.go index be0bdc306..7def015c8 100644 --- a/src/cmd/godoc/utils.go +++ b/src/cmd/godoc/utils.go @@ -7,12 +7,7 @@ package main import ( - "io" - "io/ioutil" - "os" - "path/filepath" - "sort" - "strings" + pathpkg "path" "sync" "time" "unicode/utf8" @@ -40,76 +35,6 @@ func (v *RWValue) get() (interface{}, time.Time) { return v.value, v.timestamp } -// TODO(gri) For now, using os.Getwd() is ok here since the functionality -// based on this code is not invoked for the appengine version, -// but this is fragile. Determine what the right thing to do is, -// here (possibly have some Getwd-equivalent in FileSystem). -var cwd, _ = os.Getwd() // ignore errors - -// canonicalizePaths takes a list of (directory/file) paths and returns -// the list of corresponding absolute paths in sorted (increasing) order. -// Relative paths are assumed to be relative to the current directory, -// empty and duplicate paths as well as paths for which filter(path) is -// false are discarded. filter may be nil in which case it is not used. -// -func canonicalizePaths(list []string, filter func(path string) bool) []string { - i := 0 - for _, path := range list { - path = strings.TrimSpace(path) - if len(path) == 0 { - continue // ignore empty paths (don't assume ".") - } - // len(path) > 0: normalize path - if filepath.IsAbs(path) { - path = filepath.Clean(path) - } else { - path = filepath.Join(cwd, path) - } - // we have a non-empty absolute path - if filter != nil && !filter(path) { - continue - } - // keep the path - list[i] = path - i++ - } - list = list[0:i] - - // sort the list and remove duplicate entries - sort.Strings(list) - i = 0 - prev := "" - for _, path := range list { - if path != prev { - list[i] = path - i++ - prev = path - } - } - - return list[0:i] -} - -// writeFileAtomically writes data to a temporary file and then -// atomically renames that file to the file named by filename. -// -func writeFileAtomically(filename string, data []byte) error { - // TODO(gri) this won't work on appengine - f, err := ioutil.TempFile(filepath.Split(filename)) - if err != nil { - return err - } - n, err := f.Write(data) - f.Close() - if err != nil { - return err - } - if n < len(data) { - return io.ErrShortWrite - } - return os.Rename(f.Name(), filename) -} - // isText returns true if a significant prefix of s looks like correct UTF-8; // that is, if it is likely that s is human-readable text. // @@ -146,7 +71,7 @@ var textExt = map[string]bool{ // func isTextFile(filename string) bool { // if the extension is known, use it for decision making - if isText, found := textExt[filepath.Ext(filename)]; found { + if isText, found := textExt[pathpkg.Ext(filename)]; found { return isText } diff --git a/src/cmd/godoc/zip.go b/src/cmd/godoc/zip.go index 8c4b1101b..620eb4f3c 100644 --- a/src/cmd/godoc/zip.go +++ b/src/cmd/godoc/zip.go @@ -73,6 +73,11 @@ func (fi zipFI) Sys() interface{} { type zipFS struct { *zip.ReadCloser list zipList + name string +} + +func (fs *zipFS) String() string { + return "zip(" + fs.name + ")" } func (fs *zipFS) Close() error { @@ -102,7 +107,7 @@ func (fs *zipFS) stat(abspath string) (int, zipFI, error) { return i, zipFI{name, file}, nil } -func (fs *zipFS) Open(abspath string) (io.ReadCloser, error) { +func (fs *zipFS) Open(abspath string) (readSeekCloser, error) { _, fi, err := fs.stat(zipPath(abspath)) if err != nil { return nil, err @@ -110,7 +115,29 @@ func (fs *zipFS) Open(abspath string) (io.ReadCloser, error) { if fi.IsDir() { return nil, fmt.Errorf("Open: %s is a directory", abspath) } - return fi.file.Open() + r, err := fi.file.Open() + if err != nil { + return nil, err + } + return &zipSeek{fi.file, r}, nil +} + +type zipSeek struct { + file *zip.File + io.ReadCloser +} + +func (f *zipSeek) Seek(offset int64, whence int) (int64, error) { + if whence == 0 && offset == 0 { + r, err := f.file.Open() + if err != nil { + return 0, err + } + f.Close() + f.ReadCloser = r + return 0, nil + } + return 0, fmt.Errorf("unsupported Seek in %s", f.file.Name) } func (fs *zipFS) Lstat(abspath string) (os.FileInfo, error) { @@ -161,11 +188,11 @@ func (fs *zipFS) ReadDir(abspath string) ([]os.FileInfo, error) { return list, nil } -func NewZipFS(rc *zip.ReadCloser) FileSystem { +func NewZipFS(rc *zip.ReadCloser, name string) FileSystem { list := make(zipList, len(rc.File)) copy(list, rc.File) // sort a copy of rc.File sort.Sort(list) - return &zipFS{rc, list} + return &zipFS{rc, list, name} } type zipList []*zip.File diff --git a/src/cmd/gofmt/gofmt.go b/src/cmd/gofmt/gofmt.go index 8e565563e..0bc385b5b 100644 --- a/src/cmd/gofmt/gofmt.go +++ b/src/cmd/gofmt/gofmt.go @@ -26,7 +26,7 @@ var ( // main operation modes list = flag.Bool("l", false, "list files whose formatting differs from gofmt's") write = flag.Bool("w", false, "write result to (source) file instead of stdout") - rewriteRule = flag.String("r", "", "rewrite rule (e.g., 'α[β:len(α)] -> α[β:]')") + rewriteRule = flag.String("r", "", "rewrite rule (e.g., 'a[b:len(a)] -> a[b:]')") simplifyAST = flag.Bool("s", false, "simplify code") doDiff = flag.Bool("d", false, "display diffs instead of rewriting files") allErrors = flag.Bool("e", false, "print all (including spurious) errors") @@ -41,7 +41,7 @@ var ( ) var ( - fset = token.NewFileSet() + fileSet = token.NewFileSet() // per process FileSet exitCode = 0 rewrite func(*ast.File) *ast.File parserMode parser.Mode @@ -98,7 +98,7 @@ func processFile(filename string, in io.Reader, out io.Writer, stdin bool) error return err } - file, adjust, err := parse(filename, src, stdin) + file, adjust, err := parse(fileSet, filename, src, stdin) if err != nil { return err } @@ -111,14 +111,14 @@ func processFile(filename string, in io.Reader, out io.Writer, stdin bool) error } } - ast.SortImports(fset, file) + ast.SortImports(fileSet, file) if *simplifyAST { simplify(file) } var buf bytes.Buffer - err = (&printer.Config{Mode: printerMode, Tabwidth: *tabWidth}).Fprint(&buf, fset, file) + err = (&printer.Config{Mode: printerMode, Tabwidth: *tabWidth}).Fprint(&buf, fileSet, file) if err != nil { return err } @@ -254,7 +254,7 @@ func diff(b1, b2 []byte) (data []byte, err error) { // parse parses src, which was read from filename, // as a Go source file or statement list. -func parse(filename string, src []byte, stdin bool) (*ast.File, func(orig, src []byte) []byte, error) { +func parse(fset *token.FileSet, filename string, src []byte, stdin bool) (*ast.File, func(orig, src []byte) []byte, error) { // Try as whole source file. file, err := parser.ParseFile(fset, filename, src, parserMode) if err == nil { diff --git a/src/cmd/gofmt/long_test.go b/src/cmd/gofmt/long_test.go index 9a589b1ba..edbce606a 100644 --- a/src/cmd/gofmt/long_test.go +++ b/src/cmd/gofmt/long_test.go @@ -14,6 +14,7 @@ import ( "fmt" "go/ast" "go/printer" + "go/token" "io" "os" "path/filepath" @@ -30,8 +31,8 @@ var ( nfiles int // number of files processed ) -func gofmt(filename string, src *bytes.Buffer) error { - f, _, err := parse(filename, src.Bytes(), false) +func gofmt(fset *token.FileSet, filename string, src *bytes.Buffer) error { + f, _, err := parse(fset, filename, src.Bytes(), false) if err != nil { return err } @@ -58,7 +59,8 @@ func testFile(t *testing.T, b1, b2 *bytes.Buffer, filename string) { } // exclude files w/ syntax errors (typically test cases) - if _, _, err = parse(filename, b1.Bytes(), false); err != nil { + fset := token.NewFileSet() + if _, _, err = parse(fset, filename, b1.Bytes(), false); err != nil { if *verbose { fmt.Fprintf(os.Stderr, "ignoring %s\n", err) } @@ -66,7 +68,7 @@ func testFile(t *testing.T, b1, b2 *bytes.Buffer, filename string) { } // gofmt file - if err = gofmt(filename, b1); err != nil { + if err = gofmt(fset, filename, b1); err != nil { t.Errorf("1st gofmt failed: %v", err) return } @@ -76,7 +78,7 @@ func testFile(t *testing.T, b1, b2 *bytes.Buffer, filename string) { b2.Write(b1.Bytes()) // gofmt result again - if err = gofmt(filename, b2); err != nil { + if err = gofmt(fset, filename, b2); err != nil { t.Errorf("2nd gofmt failed: %v", err) return } diff --git a/src/cmd/ld/doc.go b/src/cmd/ld/doc.go index 4728fccb8..e99e50466 100644 --- a/src/cmd/ld/doc.go +++ b/src/cmd/ld/doc.go @@ -9,45 +9,52 @@ Ld is the portable code for a modified version of the Plan 9 linker. The origin http://plan9.bell-labs.com/magic/man2html/1/2l It reads object files (.5, .6, or .8 files) and writes a binary named for the -architecture (5.out, 6.out, 8.out) by default. +architecture (5.out, 6.out, 8.out) by default (if $GOOS is windows, a .exe suffix +will be appended). Major changes include: - - support for ELF and Mach-O binary files + - support for ELF, Mach-O and PE binary files - support for segmented stacks (this feature is implemented here, not in the compilers). Original options are listed on the manual page linked above. -Options new in this version: +Usage: + go tool 6l [flags] mainObj +Substitute 6l with 8l or 5l as appropriate. --d - Elide the dynamic linking header. With this option, the binary - is statically linked and does not refer to dynld. Without this option - (the default), the binary's contents are identical but it is loaded with dynld. --Hdarwin - Write Apple Mach-O binaries (default when $GOOS is darwin) --Hlinux - Write Linux ELF binaries (default when $GOOS is linux) --Hfreebsd - Write FreeBSD ELF binaries (default when $GOOS is freebsd) --Hnetbsd - Write NetBSD ELF binaries (default when $GOOS is netbsd) --Hopenbsd - Write OpenBSD ELF binaries (default when $GOOS is openbsd) --Hwindows - Write Windows PE32+ binaries (default when $GOOS is windows) --I interpreter - Set the ELF dynamic linker to use. --L dir1 -L dir2 - Search for libraries (package files) in dir1, dir2, etc. - The default is the single location $GOROOT/pkg/$GOOS_amd64. --r dir1:dir2:... - Set the dynamic linker search path when using ELF. --V - Print the linker version. --X symbol value - Set the value of an otherwise uninitialized string variable. - The symbol name should be of the form importpath.name, - as displayed in the symbol table printed by "go tool nm". +Options new in this version: + -d + Elide the dynamic linking header. With this option, the binary + is statically linked and does not refer to a dynamic linker. Without this option + (the default), the binary's contents are identical but it is loaded with a dynamic + linker. This flag cannot be used when $GOOS is windows. + -Hdarwin (only in 6l/8l) + Write Apple Mach-O binaries (default when $GOOS is darwin) + -Hlinux + Write Linux ELF binaries (default when $GOOS is linux) + -Hfreebsd (only in 6l/8l) + Write FreeBSD ELF binaries (default when $GOOS is freebsd) + -Hnetbsd (only in 6l/8l) + Write NetBSD ELF binaries (default when $GOOS is netbsd) + -Hopenbsd (only in 6l/8l) + Write OpenBSD ELF binaries (default when $GOOS is openbsd) + -Hwindows (only in 6l/8l) + Write Windows PE32+ Console binaries (default when $GOOS is windows) + -Hwindowsgui (only in 6l/8l) + Write Windows PE32+ GUI binaries + -I interpreter + Set the ELF dynamic linker to use. + -L dir1 -L dir2 + Search for libraries (package files) in dir1, dir2, etc. + The default is the single location $GOROOT/pkg/$GOOS_$GOARCH. + -r dir1:dir2:... + Set the dynamic linker search path when using ELF. + -V + Print the linker version. + -X symbol value + Set the value of an otherwise uninitialized string variable. + The symbol name should be of the form importpath.name, + as displayed in the symbol table printed by "go tool nm". */ package documentation diff --git a/src/cmd/nm/doc.go b/src/cmd/nm/doc.go index 5e216b922..c84369a5f 100644 --- a/src/cmd/nm/doc.go +++ b/src/cmd/nm/doc.go @@ -14,7 +14,8 @@ Plan 9 C compiler. This implementation adds the flag -S, which prints each symbol's size in decimal after its address. -It is installed as go tool nm and is architecture-independent. +Usage: + go tool nm [-aghnsTu] file */ package documentation diff --git a/src/cmd/pack/ar.c b/src/cmd/pack/ar.c index 8d881f876..7e07fbc89 100644 --- a/src/cmd/pack/ar.c +++ b/src/cmd/pack/ar.c @@ -1382,11 +1382,14 @@ mesg(int c, char *file) void trim(char *s, char *buf, int n) { - char *p; + char *p, *q; for(;;) { p = strrchr(s, '/'); - if (!p) { /* no slash in name */ + q = strrchr(s, '\\'); + if (q > p) + p = q; + if (!p) { /* no (back)slash in name */ strncpy(buf, s, n); return; } @@ -1394,7 +1397,7 @@ trim(char *s, char *buf, int n) strncpy(buf, p+1, n); return; } - *p = 0; /* strip trailing slash */ + *p = 0; /* strip trailing (back)slash */ } } diff --git a/src/cmd/vet/doc.go b/src/cmd/vet/doc.go index e51fe3768..620964aaf 100644 --- a/src/cmd/vet/doc.go +++ b/src/cmd/vet/doc.go @@ -13,7 +13,7 @@ Available checks: 1. Printf family -Suspicious calls to functions in the Printf familiy, including any functions +Suspicious calls to functions in the Printf family, including any functions with these names: Print Printf Println Fprint Fprintf Fprintln diff --git a/src/cmd/vet/taglit.go b/src/cmd/vet/taglit.go index 864e7bc60..c3c4f3234 100644 --- a/src/cmd/vet/taglit.go +++ b/src/cmd/vet/taglit.go @@ -81,7 +81,8 @@ var untaggedLiteralWhitelist = map[string]bool{ find $GOROOT/src/pkg -type f | grep -v _test.go | xargs grep '^type.*\[\]' | \ grep -v ' map\[' | sed 's,/[^/]*go.type,,' | sed 's,.*src/pkg/,,' | \ - sed 's, ,.,' | sed 's, .*,,' | grep -v '\.[a-z]' | sort + sed 's, ,.,' | sed 's, .*,,' | grep -v '\.[a-z]' | \ + sort | awk '{ print "\"" $0 "\": true," }' */ "crypto/x509/pkix.RDNSequence": true, "crypto/x509/pkix.RelativeDistinguishedNameSET": true, diff --git a/src/lib9/utf/Makefile b/src/lib9/utf/Makefile index c3b9ec5d0..bbb2da6a9 100644 --- a/src/lib9/utf/Makefile +++ b/src/lib9/utf/Makefile @@ -4,21 +4,17 @@ # The library is built by the Makefile in the parent directory. # This Makefile only builds mkrunetype. - -include ../../Make.inc -O:=$(HOST_O) +# GOROOT, GOOS, and GOARCH must be set explicitly. TARG=mkrunetype -OFILES=\ - mkrunetype.$O\ - -include ../../Make.ccmd - UnicodeData-%.txt: curl http://www.unicode.org/Public/$*/ucd/UnicodeData.txt >_$@ mv _$@ $@ +mkrunetype: mkrunetype.c + cc -I../../../include -o mkrunetype -L$(GOROOT)/pkg/obj/$(GOOS)_$(GOARCH)/ mkrunetype.c -l9 + runetypebody-%.c: mkrunetype UnicodeData-%.txt mkrunetype -p UnicodeData-$*.txt >_$@ mv _$@ $@ @@ -30,3 +26,5 @@ UNICODE_VERSION=6.0.0 test: mkrunetype UnicodeData-$(UNICODE_VERSION).txt mkrunetype -c UnicodeData-$(UNICODE_VERSION).txt +clean: + rm -f UnicodeData.txt mkrunetype
\ No newline at end of file diff --git a/src/make.bash b/src/make.bash index aaee75e46..b2de37b72 100755 --- a/src/make.bash +++ b/src/make.bash @@ -21,10 +21,11 @@ # building the packages and commands. # # GO_LDFLAGS: Additional 5l/6l/8l arguments to use when -# building the packages and commands. +# building the commands. # -# CGO_ENABLED: Setting this to 0 disables the use of cgo -# in the built and installed packages and tools. +# CGO_ENABLED: Controls cgo usage during the build. Set it to 1 +# to include all cgo related files, .c and .go file with "cgo" +# build directive, in the build. Set it to 0 to ignore them. set -e if [ ! -f run.bash ]; then @@ -76,6 +77,9 @@ do fi done +# Clean old generated file that will cause problems in the build. +rm -f ./pkg/runtime/runtime_defs.go + # Finally! Run the build. echo '# Building C bootstrap tool.' @@ -83,7 +87,14 @@ echo cmd/dist export GOROOT="$(cd .. && pwd)" GOROOT_FINAL="${GOROOT_FINAL:-$GOROOT}" DEFGOROOT='-DGOROOT_FINAL="'"$GOROOT_FINAL"'"' -gcc -O2 -Wall -Werror -ggdb -o cmd/dist/dist -Icmd/dist "$DEFGOROOT" cmd/dist/*.c + +mflag="" +case "$GOHOSTARCH" in +386) mflag=-m32;; +amd64) mflag=-m64;; +esac +gcc $mflag -O2 -Wall -Werror -ggdb -o cmd/dist/dist -Icmd/dist "$DEFGOROOT" cmd/dist/*.c + eval $(./cmd/dist/dist env -p) echo diff --git a/src/make.bat b/src/make.bat index 8bb9262c5..ec39392dd 100644 --- a/src/make.bat +++ b/src/make.bat @@ -1,6 +1,31 @@ :: Copyright 2012 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. + +:: Environment variables that control make.bat: +:: +:: GOROOT_FINAL: The expected final Go root, baked into binaries. +:: The default is the location of the Go tree during the build. +:: +:: GOHOSTARCH: The architecture for host tools (compilers and +:: binaries). Binaries of this type must be executable on the current +:: system, so the only common reason to set this is to set +:: GOHOSTARCH=386 on an amd64 machine. +:: +:: GOARCH: The target architecture for installed packages and tools. +:: +:: GOOS: The target operating system for installed packages and tools. +:: +:: GO_GCFLAGS: Additional 5g/6g/8g arguments to use when +:: building the packages and commands. +:: +:: GO_LDFLAGS: Additional 5l/6l/8l arguments to use when +:: building the commands. +:: +:: CGO_ENABLED: Controls cgo usage during the build. Set it to 1 +:: to include all cgo related files, .c and .go file with "cgo" +:: build directive, in the build. Set it to 0 to ignore them. + @echo off :: Keep environment variables within this script @@ -17,6 +42,9 @@ echo Must run make.bat from Go src directory. goto fail :ok +:: Clean old generated file that will cause problems in the build. +del /F ".\pkg\runtime\runtime_defs.go" 2>NUL + :: Grab default GOROOT_FINAL and set GOROOT for build. :: The expression %VAR:\=\\% means to take %VAR% :: and apply the substitution \ = \\, escaping the @@ -46,8 +74,8 @@ if x%1==x--no-clean set buildall= .\cmd\dist\dist bootstrap %buildall% -v if errorlevel 1 goto fail :: Delay move of dist tool to now, because bootstrap cleared tool directory. -move .\cmd\dist\dist.exe %GOTOOLDIR%\dist.exe -%GOTOOLDIR%\go_bootstrap clean -i std +move .\cmd\dist\dist.exe "%GOTOOLDIR%\dist.exe" +"%GOTOOLDIR%\go_bootstrap" clean -i std echo. if not %GOHOSTARCH% == %GOARCH% goto localbuild @@ -59,20 +87,20 @@ echo # Building tools for local system. %GOHOSTOS%/%GOHOSTARCH% setlocal set GOOS=%GOHOSTOS% set GOARCH=%GOHOSTARCH% -%GOTOOLDIR%\go_bootstrap install -v std +"%GOTOOLDIR%\go_bootstrap" install -gcflags "%GO_GCFLAGS%" -ldflags "%GO_LDFLAGS%" -v std endlocal if errorlevel 1 goto fail echo. :mainbuild echo # Building packages and commands. -%GOTOOLDIR%\go_bootstrap install -a -v std +"%GOTOOLDIR%\go_bootstrap" install -gcflags "%GO_GCFLAGS%" -ldflags "%GO_LDFLAGS%" -a -v std if errorlevel 1 goto fail -del %GOTOOLDIR%\go_bootstrap.exe +del "%GOTOOLDIR%\go_bootstrap.exe" echo. if x%1==x--no-banner goto nobanner -%GOTOOLDIR%\dist banner +"%GOTOOLDIR%\dist" banner :nobanner goto end diff --git a/src/pkg/archive/tar/reader.go b/src/pkg/archive/tar/reader.go index 755a730c8..1b40af812 100644 --- a/src/pkg/archive/tar/reader.go +++ b/src/pkg/archive/tar/reader.go @@ -18,7 +18,7 @@ import ( ) var ( - ErrHeader = errors.New("invalid tar header") + ErrHeader = errors.New("archive/tar: invalid tar header") ) // A Reader provides sequential access to the contents of a tar archive. diff --git a/src/pkg/archive/tar/writer.go b/src/pkg/archive/tar/writer.go index d35726bf9..b2b7a58a1 100644 --- a/src/pkg/archive/tar/writer.go +++ b/src/pkg/archive/tar/writer.go @@ -5,18 +5,19 @@ package tar // TODO(dsymonds): -// - catch more errors (no first header, write after close, etc.) +// - catch more errors (no first header, etc.) import ( "errors" + "fmt" "io" "strconv" ) var ( - ErrWriteTooLong = errors.New("write too long") - ErrFieldTooLong = errors.New("header field too long") - ErrWriteAfterClose = errors.New("write after close") + ErrWriteTooLong = errors.New("archive/tar: write too long") + ErrFieldTooLong = errors.New("archive/tar: header field too long") + ErrWriteAfterClose = errors.New("archive/tar: write after close") ) // A Writer provides sequential writing of a tar archive in POSIX.1 format. @@ -48,6 +49,11 @@ func NewWriter(w io.Writer) *Writer { return &Writer{w: w} } // Flush finishes writing the current file (optional). func (tw *Writer) Flush() error { + if tw.nb > 0 { + tw.err = fmt.Errorf("archive/tar: missed writing %d bytes", tw.nb) + return tw.err + } + n := tw.nb + tw.pad for n > 0 && tw.err == nil { nr := n @@ -193,6 +199,9 @@ func (tw *Writer) Close() error { } tw.Flush() tw.closed = true + if tw.err != nil { + return tw.err + } // trailer: two zero blocks for i := 0; i < 2; i++ { diff --git a/src/pkg/archive/tar/writer_test.go b/src/pkg/archive/tar/writer_test.go index 0b413722d..a214e57b9 100644 --- a/src/pkg/archive/tar/writer_test.go +++ b/src/pkg/archive/tar/writer_test.go @@ -9,6 +9,7 @@ import ( "fmt" "io" "io/ioutil" + "strings" "testing" "testing/iotest" "time" @@ -95,7 +96,8 @@ var writerTests = []*writerTest{ Uname: "dsymonds", Gname: "eng", }, - // no contents + // fake contents + contents: strings.Repeat("\x00", 4<<10), }, }, }, @@ -150,7 +152,9 @@ testLoop: buf := new(bytes.Buffer) tw := NewWriter(iotest.TruncateWriter(buf, 4<<10)) // only catch the first 4 KB + big := false for j, entry := range test.entries { + big = big || entry.header.Size > 1<<10 if err := tw.WriteHeader(entry.header); err != nil { t.Errorf("test %d, entry %d: Failed writing header: %v", i, j, err) continue testLoop @@ -160,7 +164,8 @@ testLoop: continue testLoop } } - if err := tw.Close(); err != nil { + // Only interested in Close failures for the small tests. + if err := tw.Close(); err != nil && !big { t.Errorf("test %d: Failed closing archive: %v", i, err) continue testLoop } diff --git a/src/pkg/archive/zip/reader.go b/src/pkg/archive/zip/reader.go index f3826dcc4..ddd507538 100644 --- a/src/pkg/archive/zip/reader.go +++ b/src/pkg/archive/zip/reader.go @@ -124,10 +124,6 @@ func (f *File) Open() (rc io.ReadCloser, err error) { return } size := int64(f.CompressedSize) - if size == 0 && f.hasDataDescriptor() { - // permit SectionReader to see the rest of the file - size = f.zipsize - (f.headerOffset + bodyOffset) - } r := io.NewSectionReader(f.zipr, f.headerOffset+bodyOffset, size) switch f.Method { case Store: // (no compression) @@ -136,10 +132,13 @@ func (f *File) Open() (rc io.ReadCloser, err error) { rc = flate.NewReader(r) default: err = ErrAlgorithm + return } - if rc != nil { - rc = &checksumReader{rc, crc32.NewIEEE(), f, r} + var desr io.Reader + if f.hasDataDescriptor() { + desr = io.NewSectionReader(f.zipr, f.headerOffset+bodyOffset+size, dataDescriptorLen) } + rc = &checksumReader{rc, crc32.NewIEEE(), f, desr, nil} return } @@ -147,23 +146,36 @@ type checksumReader struct { rc io.ReadCloser hash hash.Hash32 f *File - zipr io.Reader // for reading the data descriptor + desr io.Reader // if non-nil, where to read the data descriptor + err error // sticky error } func (r *checksumReader) Read(b []byte) (n int, err error) { + if r.err != nil { + return 0, r.err + } n, err = r.rc.Read(b) r.hash.Write(b[:n]) - if err != io.EOF { + if err == nil { return } - if r.f.hasDataDescriptor() { - if err = readDataDescriptor(r.zipr, r.f); err != nil { - return + if err == io.EOF { + if r.desr != nil { + if err1 := readDataDescriptor(r.desr, r.f); err1 != nil { + err = err1 + } else if r.hash.Sum32() != r.f.CRC32 { + err = ErrChecksum + } + } else { + // If there's not a data descriptor, we still compare + // the CRC32 of what we've read against the file header + // or TOC's CRC32, if it seems like it was set. + if r.f.CRC32 != 0 && r.hash.Sum32() != r.f.CRC32 { + err = ErrChecksum + } } } - if r.hash.Sum32() != r.f.CRC32 { - err = ErrChecksum - } + r.err = err return } @@ -226,10 +238,31 @@ func readDirectoryHeader(f *File, r io.Reader) error { func readDataDescriptor(r io.Reader, f *File) error { var buf [dataDescriptorLen]byte - if _, err := io.ReadFull(r, buf[:]); err != nil { + + // The spec says: "Although not originally assigned a + // signature, the value 0x08074b50 has commonly been adopted + // as a signature value for the data descriptor record. + // Implementers should be aware that ZIP files may be + // encountered with or without this signature marking data + // descriptors and should account for either case when reading + // ZIP files to ensure compatibility." + // + // dataDescriptorLen includes the size of the signature but + // first read just those 4 bytes to see if it exists. + if _, err := io.ReadFull(r, buf[:4]); err != nil { return err } - b := readBuf(buf[:]) + off := 0 + maybeSig := readBuf(buf[:4]) + if maybeSig.uint32() != dataDescriptorSignature { + // No data descriptor signature. Keep these four + // bytes. + off += 4 + } + if _, err := io.ReadFull(r, buf[off:12]); err != nil { + return err + } + b := readBuf(buf[:12]) f.CRC32 = b.uint32() f.CompressedSize = b.uint32() f.UncompressedSize = b.uint32() diff --git a/src/pkg/archive/zip/reader_test.go b/src/pkg/archive/zip/reader_test.go index 066a61580..5f1d1b28a 100644 --- a/src/pkg/archive/zip/reader_test.go +++ b/src/pkg/archive/zip/reader_test.go @@ -7,26 +7,31 @@ package zip import ( "bytes" "encoding/binary" + "encoding/hex" "io" "io/ioutil" "os" + "path/filepath" + "regexp" "testing" "time" ) type ZipTest struct { Name string + Source func() (r io.ReaderAt, size int64) // if non-nil, used instead of testdata/<Name> file Comment string File []ZipTestFile Error error // the error that Opening this file should return } type ZipTestFile struct { - Name string - Content []byte // if blank, will attempt to compare against File - File string // name of file to compare to (relative to testdata/) - Mtime string // modified time in format "mm-dd-yy hh:mm:ss" - Mode os.FileMode + Name string + Content []byte // if blank, will attempt to compare against File + ContentErr error + File string // name of file to compare to (relative to testdata/) + Mtime string // modified time in format "mm-dd-yy hh:mm:ss" + Mode os.FileMode } // Caution: The Mtime values found for the test files should correspond to @@ -59,13 +64,14 @@ var tests = []ZipTest{ }, }, { - Name: "r.zip", + Name: "r.zip", + Source: returnRecursiveZip, File: []ZipTestFile{ { - Name: "r/r.zip", - File: "r.zip", - Mtime: "03-04-10 00:24:16", - Mode: 0666, + Name: "r/r.zip", + Content: rZipBytes(), + Mtime: "03-04-10 00:24:16", + Mode: 0666, }, }, }, @@ -107,6 +113,99 @@ var tests = []ZipTest{ Name: "unix.zip", File: crossPlatform, }, + { + // created by Go, before we wrote the "optional" data + // descriptor signatures (which are required by OS X) + Name: "go-no-datadesc-sig.zip", + File: []ZipTestFile{ + { + Name: "foo.txt", + Content: []byte("foo\n"), + Mtime: "03-08-12 16:59:10", + Mode: 0644, + }, + { + Name: "bar.txt", + Content: []byte("bar\n"), + Mtime: "03-08-12 16:59:12", + Mode: 0644, + }, + }, + }, + { + // created by Go, after we wrote the "optional" data + // descriptor signatures (which are required by OS X) + Name: "go-with-datadesc-sig.zip", + File: []ZipTestFile{ + { + Name: "foo.txt", + Content: []byte("foo\n"), + Mode: 0666, + }, + { + Name: "bar.txt", + Content: []byte("bar\n"), + Mode: 0666, + }, + }, + }, + { + Name: "Bad-CRC32-in-data-descriptor", + Source: returnCorruptCRC32Zip, + File: []ZipTestFile{ + { + Name: "foo.txt", + Content: []byte("foo\n"), + Mode: 0666, + ContentErr: ErrChecksum, + }, + { + Name: "bar.txt", + Content: []byte("bar\n"), + Mode: 0666, + }, + }, + }, + // Tests that we verify (and accept valid) crc32s on files + // with crc32s in their file header (not in data descriptors) + { + Name: "crc32-not-streamed.zip", + File: []ZipTestFile{ + { + Name: "foo.txt", + Content: []byte("foo\n"), + Mtime: "03-08-12 16:59:10", + Mode: 0644, + }, + { + Name: "bar.txt", + Content: []byte("bar\n"), + Mtime: "03-08-12 16:59:12", + Mode: 0644, + }, + }, + }, + // Tests that we verify (and reject invalid) crc32s on files + // with crc32s in their file header (not in data descriptors) + { + Name: "crc32-not-streamed.zip", + Source: returnCorruptNotStreamedZip, + File: []ZipTestFile{ + { + Name: "foo.txt", + Content: []byte("foo\n"), + Mtime: "03-08-12 16:59:10", + Mode: 0644, + ContentErr: ErrChecksum, + }, + { + Name: "bar.txt", + Content: []byte("bar\n"), + Mtime: "03-08-12 16:59:12", + Mode: 0644, + }, + }, + }, } var crossPlatform = []ZipTestFile{ @@ -139,7 +238,18 @@ func TestReader(t *testing.T) { } func readTestZip(t *testing.T, zt ZipTest) { - z, err := OpenReader("testdata/" + zt.Name) + var z *Reader + var err error + if zt.Source != nil { + rat, size := zt.Source() + z, err = NewReader(rat, size) + } else { + var rc *ReadCloser + rc, err = OpenReader(filepath.Join("testdata", zt.Name)) + if err == nil { + z = &rc.Reader + } + } if err != zt.Error { t.Errorf("error=%v, want %v", err, zt.Error) return @@ -149,11 +259,6 @@ func readTestZip(t *testing.T, zt ZipTest) { if err == ErrFormat { return } - defer func() { - if err := z.Close(); err != nil { - t.Errorf("error %q when closing zip file", err) - } - }() // bail here if no Files expected to be tested // (there may actually be files in the zip, but we don't care) @@ -170,7 +275,7 @@ func readTestZip(t *testing.T, zt ZipTest) { // test read of each file for i, ft := range zt.File { - readTestFile(t, ft, z.File[i]) + readTestFile(t, zt, ft, z.File[i]) } // test simultaneous reads @@ -179,7 +284,7 @@ func readTestZip(t *testing.T, zt ZipTest) { for i := 0; i < 5; i++ { for j, ft := range zt.File { go func(j int, ft ZipTestFile) { - readTestFile(t, ft, z.File[j]) + readTestFile(t, zt, ft, z.File[j]) done <- true }(j, ft) n++ @@ -188,26 +293,11 @@ func readTestZip(t *testing.T, zt ZipTest) { for ; n > 0; n-- { <-done } - - // test invalid checksum - if !z.File[0].hasDataDescriptor() { // skip test when crc32 in dd - z.File[0].CRC32++ // invalidate - r, err := z.File[0].Open() - if err != nil { - t.Error(err) - return - } - var b bytes.Buffer - _, err = io.Copy(&b, r) - if err != ErrChecksum { - t.Errorf("%s: copy error=%v, want %v", z.File[0].Name, err, ErrChecksum) - } - } } -func readTestFile(t *testing.T, ft ZipTestFile, f *File) { +func readTestFile(t *testing.T, zt ZipTest, ft ZipTestFile, f *File) { if f.Name != ft.Name { - t.Errorf("name=%q, want %q", f.Name, ft.Name) + t.Errorf("%s: name=%q, want %q", zt.Name, f.Name, ft.Name) } if ft.Mtime != "" { @@ -217,11 +307,11 @@ func readTestFile(t *testing.T, ft ZipTestFile, f *File) { return } if ft := f.ModTime(); !ft.Equal(mtime) { - t.Errorf("%s: mtime=%s, want %s", f.Name, ft, mtime) + t.Errorf("%s: %s: mtime=%s, want %s", zt.Name, f.Name, ft, mtime) } } - testFileMode(t, f, ft.Mode) + testFileMode(t, zt.Name, f, ft.Mode) size0 := f.UncompressedSize @@ -237,8 +327,10 @@ func readTestFile(t *testing.T, ft ZipTestFile, f *File) { } _, err = io.Copy(&b, r) + if err != ft.ContentErr { + t.Errorf("%s: copying contents: %v (want %v)", zt.Name, err, ft.ContentErr) + } if err != nil { - t.Error(err) return } r.Close() @@ -264,12 +356,12 @@ func readTestFile(t *testing.T, ft ZipTestFile, f *File) { } } -func testFileMode(t *testing.T, f *File, want os.FileMode) { +func testFileMode(t *testing.T, zipName string, f *File, want os.FileMode) { mode := f.Mode() if want == 0 { - t.Errorf("%s mode: got %v, want none", f.Name, mode) + t.Errorf("%s: %s mode: got %v, want none", zipName, f.Name, mode) } else if mode != want { - t.Errorf("%s mode: want %v, got %v", f.Name, want, mode) + t.Errorf("%s: %s mode: want %v, got %v", zipName, f.Name, want, mode) } } @@ -294,3 +386,81 @@ func TestInvalidFiles(t *testing.T) { t.Errorf("sigs: error=%v, want %v", err, ErrFormat) } } + +func messWith(fileName string, corrupter func(b []byte)) (r io.ReaderAt, size int64) { + data, err := ioutil.ReadFile(filepath.Join("testdata", fileName)) + if err != nil { + panic("Error reading " + fileName + ": " + err.Error()) + } + corrupter(data) + return bytes.NewReader(data), int64(len(data)) +} + +func returnCorruptCRC32Zip() (r io.ReaderAt, size int64) { + return messWith("go-with-datadesc-sig.zip", func(b []byte) { + // Corrupt one of the CRC32s in the data descriptor: + b[0x2d]++ + }) +} + +func returnCorruptNotStreamedZip() (r io.ReaderAt, size int64) { + return messWith("crc32-not-streamed.zip", func(b []byte) { + // Corrupt foo.txt's final crc32 byte, in both + // the file header and TOC. (0x7e -> 0x7f) + b[0x11]++ + b[0x9d]++ + + // TODO(bradfitz): add a new test that only corrupts + // one of these values, and verify that that's also an + // error. Currently, the reader code doesn't verify the + // fileheader and TOC's crc32 match if they're both + // non-zero and only the second line above, the TOC, + // is what matters. + }) +} + +// rZipBytes returns the bytes of a recursive zip file, without +// putting it on disk and triggering certain virus scanners. +func rZipBytes() []byte { + s := ` +0000000 50 4b 03 04 14 00 00 00 08 00 08 03 64 3c f9 f4 +0000010 89 64 48 01 00 00 b8 01 00 00 07 00 00 00 72 2f +0000020 72 2e 7a 69 70 00 25 00 da ff 50 4b 03 04 14 00 +0000030 00 00 08 00 08 03 64 3c f9 f4 89 64 48 01 00 00 +0000040 b8 01 00 00 07 00 00 00 72 2f 72 2e 7a 69 70 00 +0000050 2f 00 d0 ff 00 25 00 da ff 50 4b 03 04 14 00 00 +0000060 00 08 00 08 03 64 3c f9 f4 89 64 48 01 00 00 b8 +0000070 01 00 00 07 00 00 00 72 2f 72 2e 7a 69 70 00 2f +0000080 00 d0 ff c2 54 8e 57 39 00 05 00 fa ff c2 54 8e +0000090 57 39 00 05 00 fa ff 00 05 00 fa ff 00 14 00 eb +00000a0 ff c2 54 8e 57 39 00 05 00 fa ff 00 05 00 fa ff +00000b0 00 14 00 eb ff 42 88 21 c4 00 00 14 00 eb ff 42 +00000c0 88 21 c4 00 00 14 00 eb ff 42 88 21 c4 00 00 14 +00000d0 00 eb ff 42 88 21 c4 00 00 14 00 eb ff 42 88 21 +00000e0 c4 00 00 00 00 ff ff 00 00 00 ff ff 00 34 00 cb +00000f0 ff 42 88 21 c4 00 00 00 00 ff ff 00 00 00 ff ff +0000100 00 34 00 cb ff 42 e8 21 5e 0f 00 00 00 ff ff 0a +0000110 f0 66 64 12 61 c0 15 dc e8 a0 48 bf 48 af 2a b3 +0000120 20 c0 9b 95 0d c4 67 04 42 53 06 06 06 40 00 06 +0000130 00 f9 ff 6d 01 00 00 00 00 42 e8 21 5e 0f 00 00 +0000140 00 ff ff 0a f0 66 64 12 61 c0 15 dc e8 a0 48 bf +0000150 48 af 2a b3 20 c0 9b 95 0d c4 67 04 42 53 06 06 +0000160 06 40 00 06 00 f9 ff 6d 01 00 00 00 00 50 4b 01 +0000170 02 14 00 14 00 00 00 08 00 08 03 64 3c f9 f4 89 +0000180 64 48 01 00 00 b8 01 00 00 07 00 00 00 00 00 00 +0000190 00 00 00 00 00 00 00 00 00 00 00 72 2f 72 2e 7a +00001a0 69 70 50 4b 05 06 00 00 00 00 01 00 01 00 35 00 +00001b0 00 00 6d 01 00 00 00 00` + s = regexp.MustCompile(`[0-9a-f]{7}`).ReplaceAllString(s, "") + s = regexp.MustCompile(`\s+`).ReplaceAllString(s, "") + b, err := hex.DecodeString(s) + if err != nil { + panic(err) + } + return b +} + +func returnRecursiveZip() (r io.ReaderAt, size int64) { + b := rZipBytes() + return bytes.NewReader(b), int64(len(b)) +} diff --git a/src/pkg/archive/zip/struct.go b/src/pkg/archive/zip/struct.go index fdbd16da0..55f3dcfb8 100644 --- a/src/pkg/archive/zip/struct.go +++ b/src/pkg/archive/zip/struct.go @@ -27,10 +27,11 @@ const ( fileHeaderSignature = 0x04034b50 directoryHeaderSignature = 0x02014b50 directoryEndSignature = 0x06054b50 - fileHeaderLen = 30 // + filename + extra - directoryHeaderLen = 46 // + filename + extra + comment - directoryEndLen = 22 // + comment - dataDescriptorLen = 12 + dataDescriptorSignature = 0x08074b50 // de-facto standard; required by OS X Finder + fileHeaderLen = 30 // + filename + extra + directoryHeaderLen = 46 // + filename + extra + comment + directoryEndLen = 22 // + comment + dataDescriptorLen = 16 // four uint32: descriptor signature, crc32, compressed size, size // Constants for the first byte in CreatorVersion creatorFAT = 0 diff --git a/src/pkg/archive/zip/testdata/crc32-not-streamed.zip b/src/pkg/archive/zip/testdata/crc32-not-streamed.zip Binary files differnew file mode 100644 index 000000000..f268d8873 --- /dev/null +++ b/src/pkg/archive/zip/testdata/crc32-not-streamed.zip diff --git a/src/pkg/archive/zip/testdata/go-no-datadesc-sig.zip b/src/pkg/archive/zip/testdata/go-no-datadesc-sig.zip Binary files differnew file mode 100644 index 000000000..c3d593f44 --- /dev/null +++ b/src/pkg/archive/zip/testdata/go-no-datadesc-sig.zip diff --git a/src/pkg/archive/zip/testdata/go-with-datadesc-sig.zip b/src/pkg/archive/zip/testdata/go-with-datadesc-sig.zip Binary files differnew file mode 100644 index 000000000..bcfe121bb --- /dev/null +++ b/src/pkg/archive/zip/testdata/go-with-datadesc-sig.zip diff --git a/src/pkg/archive/zip/testdata/r.zip b/src/pkg/archive/zip/testdata/r.zip Binary files differdeleted file mode 100644 index ea0fa2ffc..000000000 --- a/src/pkg/archive/zip/testdata/r.zip +++ /dev/null diff --git a/src/pkg/archive/zip/writer.go b/src/pkg/archive/zip/writer.go index b2cc55bc9..45eb6bd73 100644 --- a/src/pkg/archive/zip/writer.go +++ b/src/pkg/archive/zip/writer.go @@ -224,6 +224,7 @@ func (w *fileWriter) close() error { // write data descriptor var buf [dataDescriptorLen]byte b := writeBuf(buf[:]) + b.uint32(dataDescriptorSignature) // de-facto standard, required by OS X b.uint32(fh.CRC32) b.uint32(fh.CompressedSize) b.uint32(fh.UncompressedSize) diff --git a/src/pkg/archive/zip/writer_test.go b/src/pkg/archive/zip/writer_test.go index 88e5211ff..8b1c4dfd2 100644 --- a/src/pkg/archive/zip/writer_test.go +++ b/src/pkg/archive/zip/writer_test.go @@ -108,7 +108,7 @@ func testReadFile(t *testing.T, f *File, wt *WriteTest) { if f.Name != wt.Name { t.Fatalf("File name: got %q, want %q", f.Name, wt.Name) } - testFileMode(t, f, wt.Mode) + testFileMode(t, wt.Name, f, wt.Mode) rc, err := f.Open() if err != nil { t.Fatal("opening:", err) diff --git a/src/pkg/crypto/tls/common.go b/src/pkg/crypto/tls/common.go index 25f7a920c..4ba0bf874 100644 --- a/src/pkg/crypto/tls/common.go +++ b/src/pkg/crypto/tls/common.go @@ -198,14 +198,6 @@ func (c *Config) time() time.Time { return t() } -func (c *Config) rootCAs() *x509.CertPool { - s := c.RootCAs - if s == nil { - s = defaultRoots() - } - return s -} - func (c *Config) cipherSuites() []uint16 { s := c.CipherSuites if s == nil { @@ -311,28 +303,16 @@ func defaultConfig() *Config { return &emptyConfig } -var once sync.Once - -func defaultRoots() *x509.CertPool { - once.Do(initDefaults) - return varDefaultRoots -} +var ( + once sync.Once + varDefaultCipherSuites []uint16 +) func defaultCipherSuites() []uint16 { - once.Do(initDefaults) + once.Do(initDefaultCipherSuites) return varDefaultCipherSuites } -func initDefaults() { - initDefaultRoots() - initDefaultCipherSuites() -} - -var ( - varDefaultRoots *x509.CertPool - varDefaultCipherSuites []uint16 -) - func initDefaultCipherSuites() { varDefaultCipherSuites = make([]uint16, len(cipherSuites)) for i, suite := range cipherSuites { diff --git a/src/pkg/crypto/tls/handshake_client.go b/src/pkg/crypto/tls/handshake_client.go index 0d7b806ff..2877f1738 100644 --- a/src/pkg/crypto/tls/handshake_client.go +++ b/src/pkg/crypto/tls/handshake_client.go @@ -102,7 +102,7 @@ func (c *Conn) clientHandshake() error { if !c.config.InsecureSkipVerify { opts := x509.VerifyOptions{ - Roots: c.config.rootCAs(), + Roots: c.config.RootCAs, CurrentTime: c.config.time(), DNSName: c.config.ServerName, Intermediates: x509.NewCertPool(), @@ -166,8 +166,11 @@ func (c *Conn) clientHandshake() error { } var certToSend *Certificate + var certRequested bool certReq, ok := msg.(*certificateRequestMsg) if ok { + certRequested = true + // RFC 4346 on the certificateAuthorities field: // A list of the distinguished names of acceptable certificate // authorities. These distinguished names may specify a desired @@ -238,9 +241,14 @@ func (c *Conn) clientHandshake() error { } finishedHash.Write(shd.marshal()) - if certToSend != nil { + // If the server requested a certificate then we have to send a + // Certificate message, even if it's empty because we don't have a + // certificate to send. + if certRequested { certMsg = new(certificateMsg) - certMsg.certificates = certToSend.Certificate + if certToSend != nil { + certMsg.certificates = certToSend.Certificate + } finishedHash.Write(certMsg.marshal()) c.writeRecord(recordTypeHandshake, certMsg.marshal()) } diff --git a/src/pkg/crypto/tls/handshake_server_test.go b/src/pkg/crypto/tls/handshake_server_test.go index bd31d31ae..08a0ccb09 100644 --- a/src/pkg/crypto/tls/handshake_server_test.go +++ b/src/pkg/crypto/tls/handshake_server_test.go @@ -143,7 +143,7 @@ func testServerScript(t *testing.T, name string, serverScript [][]byte, config * if peers != nil { gotpeers := <-pchan if len(peers) == len(gotpeers) { - for i, _ := range peers { + for i := range peers { if !peers[i].Equal(gotpeers[i]) { t.Fatalf("%s: mismatch on peer cert %d", name, i) } diff --git a/src/pkg/crypto/tls/root_test.go b/src/pkg/crypto/tls/root_test.go index 95a89d843..e61c21851 100644 --- a/src/pkg/crypto/tls/root_test.go +++ b/src/pkg/crypto/tls/root_test.go @@ -5,25 +5,25 @@ package tls import ( + "crypto/x509" + "runtime" "testing" ) var tlsServers = []string{ - "google.com:443", - "github.com:443", - "twitter.com:443", + "google.com", + "github.com", + "twitter.com", } func TestOSCertBundles(t *testing.T) { - defaultRoots() - if testing.Short() { t.Logf("skipping certificate tests in short mode") return } for _, addr := range tlsServers { - conn, err := Dial("tcp", addr, nil) + conn, err := Dial("tcp", addr+":443", &Config{ServerName: addr}) if err != nil { t.Errorf("unable to verify %v: %v", addr, err) continue @@ -34,3 +34,28 @@ func TestOSCertBundles(t *testing.T) { } } } + +func TestCertHostnameVerifyWindows(t *testing.T) { + if runtime.GOOS != "windows" { + return + } + + if testing.Short() { + t.Logf("skipping certificate tests in short mode") + return + } + + for _, addr := range tlsServers { + cfg := &Config{ServerName: "example.com"} + conn, err := Dial("tcp", addr+":443", cfg) + if err == nil { + conn.Close() + t.Errorf("should fail to verify for example.com: %v", addr) + continue + } + _, ok := err.(x509.HostnameError) + if !ok { + t.Errorf("error type mismatch, got: %v", err) + } + } +} diff --git a/src/pkg/crypto/tls/root_windows.go b/src/pkg/crypto/tls/root_windows.go deleted file mode 100644 index 319309ae6..000000000 --- a/src/pkg/crypto/tls/root_windows.go +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2011 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. - -package tls - -import ( - "crypto/x509" - "syscall" - "unsafe" -) - -func loadStore(roots *x509.CertPool, name string) { - store, err := syscall.CertOpenSystemStore(syscall.InvalidHandle, syscall.StringToUTF16Ptr(name)) - if err != nil { - return - } - defer syscall.CertCloseStore(store, 0) - - var cert *syscall.CertContext - for { - cert, err = syscall.CertEnumCertificatesInStore(store, cert) - if err != nil { - return - } - - buf := (*[1 << 20]byte)(unsafe.Pointer(cert.EncodedCert))[:] - // ParseCertificate requires its own copy of certificate data to keep. - buf2 := make([]byte, cert.Length) - copy(buf2, buf) - if c, err := x509.ParseCertificate(buf2); err == nil { - roots.AddCert(c) - } - } -} - -func initDefaultRoots() { - roots := x509.NewCertPool() - - // Roots - loadStore(roots, "ROOT") - - // Intermediates - loadStore(roots, "CA") - - varDefaultRoots = roots -} diff --git a/src/pkg/crypto/tls/tls.go b/src/pkg/crypto/tls/tls.go index 9184e8e81..09df5ad44 100644 --- a/src/pkg/crypto/tls/tls.go +++ b/src/pkg/crypto/tls/tls.go @@ -2,8 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// Package tls partially implements the TLS 1.1 protocol, as specified in RFC -// 4346. +// Package tls partially implements TLS 1.0, as specified in RFC 2246. package tls import ( @@ -98,7 +97,9 @@ func Dial(network, addr string, config *Config) (*Conn, error) { if config == nil { config = defaultConfig() } - if config.ServerName != "" { + // If no ServerName is set, infer the ServerName + // from the hostname we're connecting to. + if config.ServerName == "" { // Make a copy to avoid polluting argument or default. c := *config c.ServerName = hostname diff --git a/src/pkg/crypto/x509/pkcs1.go b/src/pkg/crypto/x509/pkcs1.go index 3aaa8c583..873d3966e 100644 --- a/src/pkg/crypto/x509/pkcs1.go +++ b/src/pkg/crypto/x509/pkcs1.go @@ -24,7 +24,7 @@ type pkcs1PrivateKey struct { Dq *big.Int `asn1:"optional"` Qinv *big.Int `asn1:"optional"` - AdditionalPrimes []pkcs1AdditionalRSAPrime `asn1:"optional"` + AdditionalPrimes []pkcs1AdditionalRSAPrime `asn1:"optional,omitempty"` } type pkcs1AdditionalRSAPrime struct { diff --git a/src/pkg/crypto/x509/root.go b/src/pkg/crypto/x509/root.go new file mode 100644 index 000000000..8aae14e09 --- /dev/null +++ b/src/pkg/crypto/x509/root.go @@ -0,0 +1,17 @@ +// Copyright 2012 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. + +package x509 + +import "sync" + +var ( + once sync.Once + systemRoots *CertPool +) + +func systemRootsPool() *CertPool { + once.Do(initSystemRoots) + return systemRoots +} diff --git a/src/pkg/crypto/tls/root_darwin.go b/src/pkg/crypto/x509/root_darwin.go index 911a9a62e..0f99581e8 100644 --- a/src/pkg/crypto/tls/root_darwin.go +++ b/src/pkg/crypto/x509/root_darwin.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -package tls +package x509 /* #cgo CFLAGS: -mmacosx-version-min=10.6 -D__MAC_OS_X_VERSION_MAX_ALLOWED=1060 @@ -59,13 +59,14 @@ int FetchPEMRoots(CFDataRef *pemRoots) { } */ import "C" -import ( - "crypto/x509" - "unsafe" -) +import "unsafe" -func initDefaultRoots() { - roots := x509.NewCertPool() +func (c *Certificate) systemVerify(opts *VerifyOptions) (chains [][]*Certificate, err error) { + return nil, nil +} + +func initSystemRoots() { + roots := NewCertPool() var data C.CFDataRef = nil err := C.FetchPEMRoots(&data) @@ -75,5 +76,5 @@ func initDefaultRoots() { roots.AppendCertsFromPEM(buf) } - varDefaultRoots = roots + systemRoots = roots } diff --git a/src/pkg/crypto/tls/root_stub.go b/src/pkg/crypto/x509/root_stub.go index ee2c3e017..568004108 100644 --- a/src/pkg/crypto/tls/root_stub.go +++ b/src/pkg/crypto/x509/root_stub.go @@ -4,7 +4,12 @@ // +build plan9 darwin,!cgo -package tls +package x509 -func initDefaultRoots() { +func (c *Certificate) systemVerify(opts *VerifyOptions) (chains [][]*Certificate, err error) { + return nil, nil +} + +func initSystemRoots() { + systemRoots = NewCertPool() } diff --git a/src/pkg/crypto/tls/root_unix.go b/src/pkg/crypto/x509/root_unix.go index acaf3dd9d..76e79f494 100644 --- a/src/pkg/crypto/tls/root_unix.go +++ b/src/pkg/crypto/x509/root_unix.go @@ -4,12 +4,9 @@ // +build freebsd linux openbsd netbsd -package tls +package x509 -import ( - "crypto/x509" - "io/ioutil" -) +import "io/ioutil" // Possible certificate files; stop after finding one. var certFiles = []string{ @@ -20,8 +17,12 @@ var certFiles = []string{ "/usr/local/share/certs/ca-root-nss.crt", // FreeBSD } -func initDefaultRoots() { - roots := x509.NewCertPool() +func (c *Certificate) systemVerify(opts *VerifyOptions) (chains [][]*Certificate, err error) { + return nil, nil +} + +func initSystemRoots() { + roots := NewCertPool() for _, file := range certFiles { data, err := ioutil.ReadFile(file) if err == nil { @@ -29,5 +30,6 @@ func initDefaultRoots() { break } } - varDefaultRoots = roots + + systemRoots = roots } diff --git a/src/pkg/crypto/x509/root_windows.go b/src/pkg/crypto/x509/root_windows.go new file mode 100644 index 000000000..7e8f2af4b --- /dev/null +++ b/src/pkg/crypto/x509/root_windows.go @@ -0,0 +1,226 @@ +// Copyright 2012 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. + +package x509 + +import ( + "errors" + "syscall" + "unsafe" +) + +// Creates a new *syscall.CertContext representing the leaf certificate in an in-memory +// certificate store containing itself and all of the intermediate certificates specified +// in the opts.Intermediates CertPool. +// +// A pointer to the in-memory store is available in the returned CertContext's Store field. +// The store is automatically freed when the CertContext is freed using +// syscall.CertFreeCertificateContext. +func createStoreContext(leaf *Certificate, opts *VerifyOptions) (*syscall.CertContext, error) { + var storeCtx *syscall.CertContext + + leafCtx, err := syscall.CertCreateCertificateContext(syscall.X509_ASN_ENCODING|syscall.PKCS_7_ASN_ENCODING, &leaf.Raw[0], uint32(len(leaf.Raw))) + if err != nil { + return nil, err + } + defer syscall.CertFreeCertificateContext(leafCtx) + + handle, err := syscall.CertOpenStore(syscall.CERT_STORE_PROV_MEMORY, 0, 0, syscall.CERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG, 0) + if err != nil { + return nil, err + } + defer syscall.CertCloseStore(handle, 0) + + err = syscall.CertAddCertificateContextToStore(handle, leafCtx, syscall.CERT_STORE_ADD_ALWAYS, &storeCtx) + if err != nil { + return nil, err + } + + if opts.Intermediates != nil { + for _, intermediate := range opts.Intermediates.certs { + ctx, err := syscall.CertCreateCertificateContext(syscall.X509_ASN_ENCODING|syscall.PKCS_7_ASN_ENCODING, &intermediate.Raw[0], uint32(len(intermediate.Raw))) + if err != nil { + return nil, err + } + + err = syscall.CertAddCertificateContextToStore(handle, ctx, syscall.CERT_STORE_ADD_ALWAYS, nil) + syscall.CertFreeCertificateContext(ctx) + if err != nil { + return nil, err + } + } + } + + return storeCtx, nil +} + +// extractSimpleChain extracts the final certificate chain from a CertSimpleChain. +func extractSimpleChain(simpleChain **syscall.CertSimpleChain, count int) (chain []*Certificate, err error) { + if simpleChain == nil || count == 0 { + return nil, errors.New("x509: invalid simple chain") + } + + simpleChains := (*[1 << 20]*syscall.CertSimpleChain)(unsafe.Pointer(simpleChain))[:] + lastChain := simpleChains[count-1] + elements := (*[1 << 20]*syscall.CertChainElement)(unsafe.Pointer(lastChain.Elements))[:] + for i := 0; i < int(lastChain.NumElements); i++ { + // Copy the buf, since ParseCertificate does not create its own copy. + cert := elements[i].CertContext + encodedCert := (*[1 << 20]byte)(unsafe.Pointer(cert.EncodedCert))[:] + buf := make([]byte, cert.Length) + copy(buf, encodedCert[:]) + parsedCert, err := ParseCertificate(buf) + if err != nil { + return nil, err + } + chain = append(chain, parsedCert) + } + + return chain, nil +} + +// checkChainTrustStatus checks the trust status of the certificate chain, translating +// any errors it finds into Go errors in the process. +func checkChainTrustStatus(c *Certificate, chainCtx *syscall.CertChainContext) error { + if chainCtx.TrustStatus.ErrorStatus != syscall.CERT_TRUST_NO_ERROR { + status := chainCtx.TrustStatus.ErrorStatus + switch status { + case syscall.CERT_TRUST_IS_NOT_TIME_VALID: + return CertificateInvalidError{c, Expired} + default: + return UnknownAuthorityError{c} + } + } + return nil +} + +// checkChainSSLServerPolicy checks that the certificate chain in chainCtx is valid for +// use as a certificate chain for a SSL/TLS server. +func checkChainSSLServerPolicy(c *Certificate, chainCtx *syscall.CertChainContext, opts *VerifyOptions) error { + sslPara := &syscall.SSLExtraCertChainPolicyPara{ + AuthType: syscall.AUTHTYPE_SERVER, + ServerName: syscall.StringToUTF16Ptr(opts.DNSName), + } + sslPara.Size = uint32(unsafe.Sizeof(*sslPara)) + + para := &syscall.CertChainPolicyPara{ + ExtraPolicyPara: uintptr(unsafe.Pointer(sslPara)), + } + para.Size = uint32(unsafe.Sizeof(*para)) + + status := syscall.CertChainPolicyStatus{} + err := syscall.CertVerifyCertificateChainPolicy(syscall.CERT_CHAIN_POLICY_SSL, chainCtx, para, &status) + if err != nil { + return err + } + + // TODO(mkrautz): use the lChainIndex and lElementIndex fields + // of the CertChainPolicyStatus to provide proper context, instead + // using c. + if status.Error != 0 { + switch status.Error { + case syscall.CERT_E_EXPIRED: + return CertificateInvalidError{c, Expired} + case syscall.CERT_E_CN_NO_MATCH: + return HostnameError{c, opts.DNSName} + case syscall.CERT_E_UNTRUSTEDROOT: + return UnknownAuthorityError{c} + default: + return UnknownAuthorityError{c} + } + } + + return nil +} + +// systemVerify is like Verify, except that it uses CryptoAPI calls +// to build certificate chains and verify them. +func (c *Certificate) systemVerify(opts *VerifyOptions) (chains [][]*Certificate, err error) { + hasDNSName := opts != nil && len(opts.DNSName) > 0 + + storeCtx, err := createStoreContext(c, opts) + if err != nil { + return nil, err + } + defer syscall.CertFreeCertificateContext(storeCtx) + + para := new(syscall.CertChainPara) + para.Size = uint32(unsafe.Sizeof(*para)) + + // If there's a DNSName set in opts, assume we're verifying + // a certificate from a TLS server. + if hasDNSName { + oids := []*byte{ + &syscall.OID_PKIX_KP_SERVER_AUTH[0], + // Both IE and Chrome allow certificates with + // Server Gated Crypto as well. Some certificates + // in the wild require them. + &syscall.OID_SERVER_GATED_CRYPTO[0], + &syscall.OID_SGC_NETSCAPE[0], + } + para.RequestedUsage.Type = syscall.USAGE_MATCH_TYPE_OR + para.RequestedUsage.Usage.Length = uint32(len(oids)) + para.RequestedUsage.Usage.UsageIdentifiers = &oids[0] + } else { + para.RequestedUsage.Type = syscall.USAGE_MATCH_TYPE_AND + para.RequestedUsage.Usage.Length = 0 + para.RequestedUsage.Usage.UsageIdentifiers = nil + } + + var verifyTime *syscall.Filetime + if opts != nil && !opts.CurrentTime.IsZero() { + ft := syscall.NsecToFiletime(opts.CurrentTime.UnixNano()) + verifyTime = &ft + } + + // CertGetCertificateChain will traverse Windows's root stores + // in an attempt to build a verified certificate chain. Once + // it has found a verified chain, it stops. MSDN docs on + // CERT_CHAIN_CONTEXT: + // + // When a CERT_CHAIN_CONTEXT is built, the first simple chain + // begins with an end certificate and ends with a self-signed + // certificate. If that self-signed certificate is not a root + // or otherwise trusted certificate, an attempt is made to + // build a new chain. CTLs are used to create the new chain + // beginning with the self-signed certificate from the original + // chain as the end certificate of the new chain. This process + // continues building additional simple chains until the first + // self-signed certificate is a trusted certificate or until + // an additional simple chain cannot be built. + // + // The result is that we'll only get a single trusted chain to + // return to our caller. + var chainCtx *syscall.CertChainContext + err = syscall.CertGetCertificateChain(syscall.Handle(0), storeCtx, verifyTime, storeCtx.Store, para, 0, 0, &chainCtx) + if err != nil { + return nil, err + } + defer syscall.CertFreeCertificateChain(chainCtx) + + err = checkChainTrustStatus(c, chainCtx) + if err != nil { + return nil, err + } + + if hasDNSName { + err = checkChainSSLServerPolicy(c, chainCtx, opts) + if err != nil { + return nil, err + } + } + + chain, err := extractSimpleChain(chainCtx.Chains, int(chainCtx.ChainCount)) + if err != nil { + return nil, err + } + + chains = append(chains, chain) + + return chains, nil +} + +func initSystemRoots() { + systemRoots = NewCertPool() +} diff --git a/src/pkg/crypto/x509/verify.go b/src/pkg/crypto/x509/verify.go index 3859dd8d4..307c5ef03 100644 --- a/src/pkg/crypto/x509/verify.go +++ b/src/pkg/crypto/x509/verify.go @@ -5,6 +5,7 @@ package x509 import ( + "runtime" "strings" "time" "unicode/utf8" @@ -23,6 +24,9 @@ const ( // certificate has a name constraint which doesn't include the name // being checked. CANotAuthorizedForThisName + // TooManyIntermediates results when a path length constraint is + // violated. + TooManyIntermediates ) // CertificateInvalidError results when an odd error occurs. Users of this @@ -40,6 +44,8 @@ func (e CertificateInvalidError) Error() string { return "x509: certificate has expired or is not yet valid" case CANotAuthorizedForThisName: return "x509: a root or intermediate certificate is not authorized to sign in this domain" + case TooManyIntermediates: + return "x509: too many intermediates for path length constraint" } return "x509: unknown error" } @@ -76,7 +82,7 @@ func (e UnknownAuthorityError) Error() string { type VerifyOptions struct { DNSName string Intermediates *CertPool - Roots *CertPool + Roots *CertPool // if nil, the system roots are used CurrentTime time.Time // if zero, the current time is used } @@ -87,7 +93,7 @@ const ( ) // isValid performs validity checks on the c. -func (c *Certificate) isValid(certType int, opts *VerifyOptions) error { +func (c *Certificate) isValid(certType int, currentChain []*Certificate, opts *VerifyOptions) error { now := opts.CurrentTime if now.IsZero() { now = time.Now() @@ -130,26 +136,44 @@ func (c *Certificate) isValid(certType int, opts *VerifyOptions) error { return CertificateInvalidError{c, NotAuthorizedToSign} } + if c.BasicConstraintsValid && c.MaxPathLen >= 0 { + numIntermediates := len(currentChain) - 1 + if numIntermediates > c.MaxPathLen { + return CertificateInvalidError{c, TooManyIntermediates} + } + } + return nil } // Verify attempts to verify c by building one or more chains from c to a -// certificate in opts.roots, using certificates in opts.Intermediates if +// certificate in opts.Roots, using certificates in opts.Intermediates if // needed. If successful, it returns one or more chains where the first // element of the chain is c and the last element is from opts.Roots. // // WARNING: this doesn't do any revocation checking. func (c *Certificate) Verify(opts VerifyOptions) (chains [][]*Certificate, err error) { - err = c.isValid(leafCertificate, &opts) + // Use Windows's own verification and chain building. + if opts.Roots == nil && runtime.GOOS == "windows" { + return c.systemVerify(&opts) + } + + if opts.Roots == nil { + opts.Roots = systemRootsPool() + } + + err = c.isValid(leafCertificate, nil, &opts) if err != nil { return } + if len(opts.DNSName) > 0 { err = c.VerifyHostname(opts.DNSName) if err != nil { return } } + return c.buildChains(make(map[int][][]*Certificate), []*Certificate{c}, &opts) } @@ -163,7 +187,7 @@ func appendToFreshChain(chain []*Certificate, cert *Certificate) []*Certificate func (c *Certificate) buildChains(cache map[int][][]*Certificate, currentChain []*Certificate, opts *VerifyOptions) (chains [][]*Certificate, err error) { for _, rootNum := range opts.Roots.findVerifiedParents(c) { root := opts.Roots.certs[rootNum] - err = root.isValid(rootCertificate, opts) + err = root.isValid(rootCertificate, currentChain, opts) if err != nil { continue } @@ -178,7 +202,7 @@ nextIntermediate: continue nextIntermediate } } - err = intermediate.isValid(intermediateCertificate, opts) + err = intermediate.isValid(intermediateCertificate, currentChain, opts) if err != nil { continue } diff --git a/src/pkg/crypto/x509/verify_test.go b/src/pkg/crypto/x509/verify_test.go index 2cdd66a55..7b171b291 100644 --- a/src/pkg/crypto/x509/verify_test.go +++ b/src/pkg/crypto/x509/verify_test.go @@ -8,6 +8,7 @@ import ( "crypto/x509/pkix" "encoding/pem" "errors" + "runtime" "strings" "testing" "time" @@ -19,7 +20,7 @@ type verifyTest struct { roots []string currentTime int64 dnsName string - nilRoots bool + systemSkip bool errorCallback func(*testing.T, int, error) bool expectedChains [][]string @@ -60,14 +61,6 @@ var verifyTests = []verifyTest{ { leaf: googleLeaf, intermediates: []string{thawteIntermediate}, - nilRoots: true, // verifies that we don't crash - currentTime: 1302726541, - dnsName: "www.google.com", - errorCallback: expectAuthorityUnknown, - }, - { - leaf: googleLeaf, - intermediates: []string{thawteIntermediate}, roots: []string{verisignRoot}, currentTime: 1, dnsName: "www.example.com", @@ -80,6 +73,9 @@ var verifyTests = []verifyTest{ currentTime: 1302726541, dnsName: "www.google.com", + // Skip when using systemVerify, since Windows + // *will* find the missing intermediate cert. + systemSkip: true, errorCallback: expectAuthorityUnknown, }, { @@ -109,6 +105,9 @@ var verifyTests = []verifyTest{ roots: []string{startComRoot}, currentTime: 1302726541, + // Skip when using systemVerify, since Windows + // can only return a single chain to us (for now). + systemSkip: true, expectedChains: [][]string{ {"dnssec-exp", "StartCom Class 1", "StartCom Certification Authority"}, {"dnssec-exp", "StartCom Class 1", "StartCom Certification Authority", "StartCom Certification Authority"}, @@ -148,23 +147,26 @@ func certificateFromPEM(pemBytes string) (*Certificate, error) { return ParseCertificate(block.Bytes) } -func TestVerify(t *testing.T) { +func testVerify(t *testing.T, useSystemRoots bool) { for i, test := range verifyTests { + if useSystemRoots && test.systemSkip { + continue + } + opts := VerifyOptions{ - Roots: NewCertPool(), Intermediates: NewCertPool(), DNSName: test.dnsName, CurrentTime: time.Unix(test.currentTime, 0), } - if test.nilRoots { - opts.Roots = nil - } - for j, root := range test.roots { - ok := opts.Roots.AppendCertsFromPEM([]byte(root)) - if !ok { - t.Errorf("#%d: failed to parse root #%d", i, j) - return + if !useSystemRoots { + opts.Roots = NewCertPool() + for j, root := range test.roots { + ok := opts.Roots.AppendCertsFromPEM([]byte(root)) + if !ok { + t.Errorf("#%d: failed to parse root #%d", i, j) + return + } } } @@ -225,6 +227,19 @@ func TestVerify(t *testing.T) { } } +func TestGoVerify(t *testing.T) { + testVerify(t, false) +} + +func TestSystemVerify(t *testing.T) { + if runtime.GOOS != "windows" { + t.Logf("skipping verify test using system APIs on %q", runtime.GOOS) + return + } + + testVerify(t, true) +} + func chainToDebugString(chain []*Certificate) string { var chainStr string for _, cert := range chain { diff --git a/src/pkg/crypto/x509/x509.go b/src/pkg/crypto/x509/x509.go index f5da86b54..8dae7e7fc 100644 --- a/src/pkg/crypto/x509/x509.go +++ b/src/pkg/crypto/x509/x509.go @@ -429,7 +429,7 @@ func (h UnhandledCriticalExtension) Error() string { type basicConstraints struct { IsCA bool `asn1:"optional"` - MaxPathLen int `asn1:"optional"` + MaxPathLen int `asn1:"optional,default:-1"` } // RFC 5280 4.2.1.4 diff --git a/src/pkg/database/sql/driver/driver.go b/src/pkg/database/sql/driver/driver.go index 7f986b80f..2f5280db8 100644 --- a/src/pkg/database/sql/driver/driver.go +++ b/src/pkg/database/sql/driver/driver.go @@ -43,6 +43,17 @@ type Driver interface { // documented. var ErrSkip = errors.New("driver: skip fast-path; continue as if unimplemented") +// ErrBadConn should be returned by a driver to signal to the sql +// package that a driver.Conn is in a bad state (such as the server +// having earlier closed the connection) and the sql package should +// retry on a new connection. +// +// To prevent duplicate operations, ErrBadConn should NOT be returned +// if there's a possibility that the database server might have +// performed the operation. Even if the server sends back an error, +// you shouldn't return ErrBadConn. +var ErrBadConn = errors.New("driver: bad connection") + // Execer is an optional interface that may be implemented by a Conn. // // If a Conn does not implement Execer, the db package's DB.Exec will diff --git a/src/pkg/database/sql/fakedb_test.go b/src/pkg/database/sql/fakedb_test.go index fc63f0374..184e7756c 100644 --- a/src/pkg/database/sql/fakedb_test.go +++ b/src/pkg/database/sql/fakedb_test.go @@ -82,6 +82,7 @@ type fakeConn struct { mu sync.Mutex stmtsMade int stmtsClosed int + numPrepare int } func (c *fakeConn) incrStat(v *int) { @@ -208,10 +209,13 @@ func (c *fakeConn) Begin() (driver.Tx, error) { func (c *fakeConn) Close() error { if c.currTx != nil { - return errors.New("can't close; in a Transaction") + return errors.New("can't close fakeConn; in a Transaction") } if c.db == nil { - return errors.New("can't close; already closed") + return errors.New("can't close fakeConn; already closed") + } + if c.stmtsMade > c.stmtsClosed { + return errors.New("can't close; dangling statement(s)") } c.db = nil return nil @@ -249,6 +253,7 @@ func errf(msg string, args ...interface{}) error { // just a limitation for fakedb) func (c *fakeConn) prepareSelect(stmt *fakeStmt, parts []string) (driver.Stmt, error) { if len(parts) != 3 { + stmt.Close() return nil, errf("invalid SELECT syntax with %d parts; want 3", len(parts)) } stmt.table = parts[0] @@ -259,14 +264,17 @@ func (c *fakeConn) prepareSelect(stmt *fakeStmt, parts []string) (driver.Stmt, e } nameVal := strings.Split(colspec, "=") if len(nameVal) != 2 { + stmt.Close() return nil, errf("SELECT on table %q has invalid column spec of %q (index %d)", stmt.table, colspec, n) } column, value := nameVal[0], nameVal[1] _, ok := c.db.columnType(stmt.table, column) if !ok { + stmt.Close() return nil, errf("SELECT on table %q references non-existent column %q", stmt.table, column) } if value != "?" { + stmt.Close() return nil, errf("SELECT on table %q has pre-bound value for where column %q; need a question mark", stmt.table, column) } @@ -279,12 +287,14 @@ func (c *fakeConn) prepareSelect(stmt *fakeStmt, parts []string) (driver.Stmt, e // parts are table|col=type,col2=type2 func (c *fakeConn) prepareCreate(stmt *fakeStmt, parts []string) (driver.Stmt, error) { if len(parts) != 2 { + stmt.Close() return nil, errf("invalid CREATE syntax with %d parts; want 2", len(parts)) } stmt.table = parts[0] for n, colspec := range strings.Split(parts[1], ",") { nameType := strings.Split(colspec, "=") if len(nameType) != 2 { + stmt.Close() return nil, errf("CREATE table %q has invalid column spec of %q (index %d)", stmt.table, colspec, n) } stmt.colName = append(stmt.colName, nameType[0]) @@ -296,17 +306,20 @@ func (c *fakeConn) prepareCreate(stmt *fakeStmt, parts []string) (driver.Stmt, e // parts are table|col=?,col2=val func (c *fakeConn) prepareInsert(stmt *fakeStmt, parts []string) (driver.Stmt, error) { if len(parts) != 2 { + stmt.Close() return nil, errf("invalid INSERT syntax with %d parts; want 2", len(parts)) } stmt.table = parts[0] for n, colspec := range strings.Split(parts[1], ",") { nameVal := strings.Split(colspec, "=") if len(nameVal) != 2 { + stmt.Close() return nil, errf("INSERT table %q has invalid column spec of %q (index %d)", stmt.table, colspec, n) } column, value := nameVal[0], nameVal[1] ctype, ok := c.db.columnType(stmt.table, column) if !ok { + stmt.Close() return nil, errf("INSERT table %q references non-existent column %q", stmt.table, column) } stmt.colName = append(stmt.colName, column) @@ -322,10 +335,12 @@ func (c *fakeConn) prepareInsert(stmt *fakeStmt, parts []string) (driver.Stmt, e case "int32": i, err := strconv.Atoi(value) if err != nil { + stmt.Close() return nil, errf("invalid conversion to int32 from %q", value) } subsetVal = int64(i) // int64 is a subset type, but not int32 default: + stmt.Close() return nil, errf("unsupported conversion for pre-bound parameter %q to type %q", value, ctype) } stmt.colValue = append(stmt.colValue, subsetVal) @@ -339,6 +354,7 @@ func (c *fakeConn) prepareInsert(stmt *fakeStmt, parts []string) (driver.Stmt, e } func (c *fakeConn) Prepare(query string) (driver.Stmt, error) { + c.numPrepare++ if c.db == nil { panic("nil c.db; conn = " + fmt.Sprintf("%#v", c)) } @@ -360,6 +376,7 @@ func (c *fakeConn) Prepare(query string) (driver.Stmt, error) { case "INSERT": return c.prepareInsert(stmt, parts) default: + stmt.Close() return nil, errf("unsupported command type %q", cmd) } return stmt, nil diff --git a/src/pkg/database/sql/sql.go b/src/pkg/database/sql/sql.go index 62b551d89..51a357b37 100644 --- a/src/pkg/database/sql/sql.go +++ b/src/pkg/database/sql/sql.go @@ -175,6 +175,16 @@ var ErrNoRows = errors.New("sql: no rows in result set") // DB is a database handle. It's safe for concurrent use by multiple // goroutines. +// +// If the underlying database driver has the concept of a connection +// and per-connection session state, the sql package manages creating +// and freeing connections automatically, including maintaining a free +// pool of idle connections. If observing session state is required, +// either do not share a *DB between multiple concurrent goroutines or +// create and observe all state only within a transaction. Once +// DB.Open is called, the returned Tx is bound to a single isolated +// connection. Once Tx.Commit or Tx.Rollback is called, that +// connection is returned to DB's idle connection pool. type DB struct { driver driver.Driver dsn string @@ -241,34 +251,56 @@ func (db *DB) conn() (driver.Conn, error) { func (db *DB) connIfFree(wanted driver.Conn) (conn driver.Conn, ok bool) { db.mu.Lock() defer db.mu.Unlock() - for n, conn := range db.freeConn { - if conn == wanted { - db.freeConn[n] = db.freeConn[len(db.freeConn)-1] - db.freeConn = db.freeConn[:len(db.freeConn)-1] - return wanted, true + for i, conn := range db.freeConn { + if conn != wanted { + continue } + db.freeConn[i] = db.freeConn[len(db.freeConn)-1] + db.freeConn = db.freeConn[:len(db.freeConn)-1] + return wanted, true } return nil, false } -func (db *DB) putConn(c driver.Conn) { +// putConnHook is a hook for testing. +var putConnHook func(*DB, driver.Conn) + +// putConn adds a connection to the db's free pool. +// err is optionally the last error that occured on this connection. +func (db *DB) putConn(c driver.Conn, err error) { + if err == driver.ErrBadConn { + // Don't reuse bad connections. + return + } db.mu.Lock() - defer db.mu.Unlock() + if putConnHook != nil { + putConnHook(db, c) + } if n := len(db.freeConn); !db.closed && n < db.maxIdleConns() { db.freeConn = append(db.freeConn, c) + db.mu.Unlock() return } - db.closeConn(c) // TODO(bradfitz): release lock before calling this? -} - -func (db *DB) closeConn(c driver.Conn) { - // TODO: check to see if we need this Conn for any prepared statements - // that are active. + // TODO: check to see if we need this Conn for any prepared + // statements which are still active? + db.mu.Unlock() c.Close() } // Prepare creates a prepared statement for later execution. func (db *DB) Prepare(query string) (*Stmt, error) { + var stmt *Stmt + var err error + for i := 0; i < 10; i++ { + stmt, err = db.prepare(query) + if err != driver.ErrBadConn { + break + } + } + return stmt, err +} + +func (db *DB) prepare(query string) (stmt *Stmt, err error) { // TODO: check if db.driver supports an optional // driver.Preparer interface and call that instead, if so, // otherwise we make a prepared statement that's bound @@ -279,12 +311,12 @@ func (db *DB) Prepare(query string) (*Stmt, error) { if err != nil { return nil, err } - defer db.putConn(ci) + defer db.putConn(ci, err) si, err := ci.Prepare(query) if err != nil { return nil, err } - stmt := &Stmt{ + stmt = &Stmt{ db: db, query: query, css: []connStmt{{ci, si}}, @@ -295,15 +327,22 @@ func (db *DB) Prepare(query string) (*Stmt, error) { // Exec executes a query without returning any rows. func (db *DB) Exec(query string, args ...interface{}) (Result, error) { sargs, err := subsetTypeArgs(args) - if err != nil { - return nil, err + var res Result + for i := 0; i < 10; i++ { + res, err = db.exec(query, sargs) + if err != driver.ErrBadConn { + break + } } + return res, err +} +func (db *DB) exec(query string, sargs []driver.Value) (res Result, err error) { ci, err := db.conn() if err != nil { return nil, err } - defer db.putConn(ci) + defer db.putConn(ci, err) if execer, ok := ci.(driver.Execer); ok { resi, err := execer.Exec(query, sargs) @@ -354,13 +393,25 @@ func (db *DB) QueryRow(query string, args ...interface{}) *Row { // Begin starts a transaction. The isolation level is dependent on // the driver. func (db *DB) Begin() (*Tx, error) { + var tx *Tx + var err error + for i := 0; i < 10; i++ { + tx, err = db.begin() + if err != driver.ErrBadConn { + break + } + } + return tx, err +} + +func (db *DB) begin() (tx *Tx, err error) { ci, err := db.conn() if err != nil { return nil, err } txi, err := ci.Begin() if err != nil { - db.putConn(ci) + db.putConn(ci, err) return nil, fmt.Errorf("sql: failed to Begin transaction: %v", err) } return &Tx{ @@ -406,7 +457,7 @@ func (tx *Tx) close() { panic("double close") // internal error } tx.done = true - tx.db.putConn(tx.ci) + tx.db.putConn(tx.ci, nil) tx.ci = nil tx.txi = nil } @@ -561,9 +612,11 @@ func (tx *Tx) Query(query string, args ...interface{}) (*Rows, error) { return nil, err } rows, err := stmt.Query(args...) - if err == nil { - rows.closeStmt = stmt + if err != nil { + stmt.Close() + return nil, err } + rows.closeStmt = stmt return rows, err } @@ -609,7 +662,7 @@ func (s *Stmt) Exec(args ...interface{}) (Result, error) { if err != nil { return nil, err } - defer releaseConn() + defer releaseConn(nil) // -1 means the driver doesn't know how to count the number of // placeholders, so we won't sanity check input here and instead let the @@ -672,7 +725,7 @@ func (s *Stmt) Exec(args ...interface{}) (Result, error) { // connStmt returns a free driver connection on which to execute the // statement, a function to call to release the connection, and a // statement bound to that connection. -func (s *Stmt) connStmt() (ci driver.Conn, releaseConn func(), si driver.Stmt, err error) { +func (s *Stmt) connStmt() (ci driver.Conn, releaseConn func(error), si driver.Stmt, err error) { if err = s.stickyErr; err != nil { return } @@ -691,7 +744,7 @@ func (s *Stmt) connStmt() (ci driver.Conn, releaseConn func(), si driver.Stmt, e if err != nil { return } - releaseConn = func() { s.tx.releaseConn() } + releaseConn = func(error) { s.tx.releaseConn() } return ci, releaseConn, s.txsi, nil } @@ -700,7 +753,7 @@ func (s *Stmt) connStmt() (ci driver.Conn, releaseConn func(), si driver.Stmt, e for _, v := range s.css { // TODO(bradfitz): lazily clean up entries in this // list with dead conns while enumerating - if _, match = s.db.connIfFree(cs.ci); match { + if _, match = s.db.connIfFree(v.ci); match { cs = v break } @@ -710,22 +763,28 @@ func (s *Stmt) connStmt() (ci driver.Conn, releaseConn func(), si driver.Stmt, e // Make a new conn if all are busy. // TODO(bradfitz): or wait for one? make configurable later? if !match { - ci, err := s.db.conn() - if err != nil { - return nil, nil, nil, err - } - si, err := ci.Prepare(s.query) - if err != nil { - return nil, nil, nil, err + for i := 0; ; i++ { + ci, err := s.db.conn() + if err != nil { + return nil, nil, nil, err + } + si, err := ci.Prepare(s.query) + if err == driver.ErrBadConn && i < 10 { + continue + } + if err != nil { + return nil, nil, nil, err + } + s.mu.Lock() + cs = connStmt{ci, si} + s.css = append(s.css, cs) + s.mu.Unlock() + break } - s.mu.Lock() - cs = connStmt{ci, si} - s.css = append(s.css, cs) - s.mu.Unlock() } conn := cs.ci - releaseConn = func() { s.db.putConn(conn) } + releaseConn = func(err error) { s.db.putConn(conn, err) } return conn, releaseConn, cs.si, nil } @@ -749,7 +808,7 @@ func (s *Stmt) Query(args ...interface{}) (*Rows, error) { } rowsi, err := si.Query(sargs) if err != nil { - s.db.putConn(ci) + releaseConn(err) return nil, err } // Note: ownership of ci passes to the *Rows, to be freed @@ -800,7 +859,7 @@ func (s *Stmt) Close() error { for _, v := range s.css { if ci, match := s.db.connIfFree(v.ci); match { v.si.Close() - s.db.putConn(ci) + s.db.putConn(ci, nil) } else { // TODO(bradfitz): care that we can't close // this statement because the statement's @@ -827,7 +886,7 @@ func (s *Stmt) Close() error { type Rows struct { db *DB ci driver.Conn // owned; must call putconn when closed to release - releaseConn func() + releaseConn func(error) rowsi driver.Rows closed bool @@ -939,7 +998,7 @@ func (rs *Rows) Close() error { } rs.closed = true err := rs.rowsi.Close() - rs.releaseConn() + rs.releaseConn(err) if rs.closeStmt != nil { rs.closeStmt.Close() } @@ -963,7 +1022,7 @@ func (r *Row) Scan(dest ...interface{}) error { } // TODO(bradfitz): for now we need to defensively clone all - // []byte that the driver returned (not permitting + // []byte that the driver returned (not permitting // *RawBytes in Rows.Scan), since we're about to close // the Rows in our defer, when we return from this function. // the contract with the driver.Next(...) interface is that it diff --git a/src/pkg/database/sql/sql_test.go b/src/pkg/database/sql/sql_test.go index c985a10be..b29670586 100644 --- a/src/pkg/database/sql/sql_test.go +++ b/src/pkg/database/sql/sql_test.go @@ -5,13 +5,35 @@ package sql import ( + "database/sql/driver" "fmt" "reflect" + "runtime" "strings" "testing" "time" ) +func init() { + type dbConn struct { + db *DB + c driver.Conn + } + freedFrom := make(map[dbConn]string) + putConnHook = func(db *DB, c driver.Conn) { + for _, oc := range db.freeConn { + if oc == c { + // print before panic, as panic may get lost due to conflicting panic + // (all goroutines asleep) elsewhere, since we might not unlock + // the mutex in freeConn here. + println("double free of conn. conflicts are:\nA) " + freedFrom[dbConn{db, c}] + "\n\nand\nB) " + stack()) + panic("double free of conn.") + } + } + freedFrom[dbConn{db, c}] = stack() + } +} + const fakeDBName = "foo" var chrisBirthday = time.Unix(123456789, 0) @@ -47,9 +69,19 @@ func closeDB(t *testing.T, db *DB) { } } +// numPrepares assumes that db has exactly 1 idle conn and returns +// its count of calls to Prepare +func numPrepares(t *testing.T, db *DB) int { + if n := len(db.freeConn); n != 1 { + t.Fatalf("free conns = %d; want 1", n) + } + return db.freeConn[0].(*fakeConn).numPrepare +} + func TestQuery(t *testing.T) { db := newTestDB(t, "people") defer closeDB(t, db) + prepares0 := numPrepares(t, db) rows, err := db.Query("SELECT|people|age,name|") if err != nil { t.Fatalf("Query: %v", err) @@ -83,7 +115,10 @@ func TestQuery(t *testing.T) { // And verify that the final rows.Next() call, which hit EOF, // also closed the rows connection. if n := len(db.freeConn); n != 1 { - t.Errorf("free conns after query hitting EOF = %d; want 1", n) + t.Fatalf("free conns after query hitting EOF = %d; want 1", n) + } + if prepares := numPrepares(t, db) - prepares0; prepares != 1 { + t.Errorf("executed %d Prepare statements; want 1", prepares) } } @@ -216,6 +251,7 @@ func TestStatementQueryRow(t *testing.T) { if err != nil { t.Fatalf("Prepare: %v", err) } + defer stmt.Close() var age int for n, tt := range []struct { name string @@ -256,6 +292,7 @@ func TestExec(t *testing.T) { if err != nil { t.Errorf("Stmt, err = %v, %v", stmt, err) } + defer stmt.Close() type execTest struct { args []interface{} @@ -297,11 +334,14 @@ func TestTxStmt(t *testing.T) { if err != nil { t.Fatalf("Stmt, err = %v, %v", stmt, err) } + defer stmt.Close() tx, err := db.Begin() if err != nil { t.Fatalf("Begin = %v", err) } - _, err = tx.Stmt(stmt).Exec("Bobby", 7) + txs := tx.Stmt(stmt) + defer txs.Close() + _, err = txs.Exec("Bobby", 7) if err != nil { t.Fatalf("Exec = %v", err) } @@ -330,6 +370,7 @@ func TestTxQuery(t *testing.T) { if err != nil { t.Fatal(err) } + defer r.Close() if !r.Next() { if r.Err() != nil { @@ -345,6 +386,22 @@ func TestTxQuery(t *testing.T) { } } +func TestTxQueryInvalid(t *testing.T) { + db := newTestDB(t, "") + defer closeDB(t, db) + + tx, err := db.Begin() + if err != nil { + t.Fatal(err) + } + defer tx.Rollback() + + _, err = tx.Query("SELECT|t1|name|") + if err == nil { + t.Fatal("Error expected") + } +} + // Tests fix for issue 2542, that we release a lock when querying on // a closed connection. func TestIssue2542Deadlock(t *testing.T) { @@ -450,48 +507,48 @@ type nullTestSpec struct { func TestNullStringParam(t *testing.T) { spec := nullTestSpec{"nullstring", "string", [6]nullTestRow{ - nullTestRow{NullString{"aqua", true}, "", NullString{"aqua", true}}, - nullTestRow{NullString{"brown", false}, "", NullString{"", false}}, - nullTestRow{"chartreuse", "", NullString{"chartreuse", true}}, - nullTestRow{NullString{"darkred", true}, "", NullString{"darkred", true}}, - nullTestRow{NullString{"eel", false}, "", NullString{"", false}}, - nullTestRow{"foo", NullString{"black", false}, nil}, + {NullString{"aqua", true}, "", NullString{"aqua", true}}, + {NullString{"brown", false}, "", NullString{"", false}}, + {"chartreuse", "", NullString{"chartreuse", true}}, + {NullString{"darkred", true}, "", NullString{"darkred", true}}, + {NullString{"eel", false}, "", NullString{"", false}}, + {"foo", NullString{"black", false}, nil}, }} nullTestRun(t, spec) } func TestNullInt64Param(t *testing.T) { spec := nullTestSpec{"nullint64", "int64", [6]nullTestRow{ - nullTestRow{NullInt64{31, true}, 1, NullInt64{31, true}}, - nullTestRow{NullInt64{-22, false}, 1, NullInt64{0, false}}, - nullTestRow{22, 1, NullInt64{22, true}}, - nullTestRow{NullInt64{33, true}, 1, NullInt64{33, true}}, - nullTestRow{NullInt64{222, false}, 1, NullInt64{0, false}}, - nullTestRow{0, NullInt64{31, false}, nil}, + {NullInt64{31, true}, 1, NullInt64{31, true}}, + {NullInt64{-22, false}, 1, NullInt64{0, false}}, + {22, 1, NullInt64{22, true}}, + {NullInt64{33, true}, 1, NullInt64{33, true}}, + {NullInt64{222, false}, 1, NullInt64{0, false}}, + {0, NullInt64{31, false}, nil}, }} nullTestRun(t, spec) } func TestNullFloat64Param(t *testing.T) { spec := nullTestSpec{"nullfloat64", "float64", [6]nullTestRow{ - nullTestRow{NullFloat64{31.2, true}, 1, NullFloat64{31.2, true}}, - nullTestRow{NullFloat64{13.1, false}, 1, NullFloat64{0, false}}, - nullTestRow{-22.9, 1, NullFloat64{-22.9, true}}, - nullTestRow{NullFloat64{33.81, true}, 1, NullFloat64{33.81, true}}, - nullTestRow{NullFloat64{222, false}, 1, NullFloat64{0, false}}, - nullTestRow{10, NullFloat64{31.2, false}, nil}, + {NullFloat64{31.2, true}, 1, NullFloat64{31.2, true}}, + {NullFloat64{13.1, false}, 1, NullFloat64{0, false}}, + {-22.9, 1, NullFloat64{-22.9, true}}, + {NullFloat64{33.81, true}, 1, NullFloat64{33.81, true}}, + {NullFloat64{222, false}, 1, NullFloat64{0, false}}, + {10, NullFloat64{31.2, false}, nil}, }} nullTestRun(t, spec) } func TestNullBoolParam(t *testing.T) { spec := nullTestSpec{"nullbool", "bool", [6]nullTestRow{ - nullTestRow{NullBool{false, true}, true, NullBool{false, true}}, - nullTestRow{NullBool{true, false}, false, NullBool{false, false}}, - nullTestRow{true, true, NullBool{true, true}}, - nullTestRow{NullBool{true, true}, false, NullBool{true, true}}, - nullTestRow{NullBool{true, false}, true, NullBool{false, false}}, - nullTestRow{true, NullBool{true, false}, nil}, + {NullBool{false, true}, true, NullBool{false, true}}, + {NullBool{true, false}, false, NullBool{false, false}}, + {true, true, NullBool{true, true}}, + {NullBool{true, true}, false, NullBool{true, true}}, + {NullBool{true, false}, true, NullBool{false, false}}, + {true, NullBool{true, false}, nil}, }} nullTestRun(t, spec) } @@ -510,6 +567,7 @@ func nullTestRun(t *testing.T, spec nullTestSpec) { if err != nil { t.Fatalf("prepare: %v", err) } + defer stmt.Close() if _, err := stmt.Exec(3, "chris", spec.rows[2].nullParam, spec.rows[2].notNullParam); err != nil { t.Errorf("exec insert chris: %v", err) } @@ -549,3 +607,8 @@ func nullTestRun(t *testing.T, spec nullTestSpec) { } } } + +func stack() string { + buf := make([]byte, 1024) + return string(buf[:runtime.Stack(buf, false)]) +} diff --git a/src/pkg/encoding/asn1/asn1.go b/src/pkg/encoding/asn1/asn1.go index 4d1ae38c4..3bf81a68c 100644 --- a/src/pkg/encoding/asn1/asn1.go +++ b/src/pkg/encoding/asn1/asn1.go @@ -250,10 +250,14 @@ func parseBase128Int(bytes []byte, initOffset int) (ret, offset int, err error) func parseUTCTime(bytes []byte) (ret time.Time, err error) { s := string(bytes) ret, err = time.Parse("0601021504Z0700", s) - if err == nil { - return + if err != nil { + ret, err = time.Parse("060102150405Z0700", s) } - ret, err = time.Parse("060102150405Z0700", s) + if err == nil && ret.Year() >= 2050 { + // UTCTime only encodes times prior to 2050. See https://tools.ietf.org/html/rfc5280#section-4.1.2.5.1 + ret = ret.AddDate(-100, 0, 0) + } + return } diff --git a/src/pkg/encoding/asn1/asn1_test.go b/src/pkg/encoding/asn1/asn1_test.go index 92c9eb62d..93803f435 100644 --- a/src/pkg/encoding/asn1/asn1_test.go +++ b/src/pkg/encoding/asn1/asn1_test.go @@ -321,7 +321,7 @@ var parseFieldParametersTestData []parseFieldParametersTest = []parseFieldParame {"default:42", fieldParameters{defaultValue: newInt64(42)}}, {"tag:17", fieldParameters{tag: newInt(17)}}, {"optional,explicit,default:42,tag:17", fieldParameters{optional: true, explicit: true, defaultValue: newInt64(42), tag: newInt(17)}}, - {"optional,explicit,default:42,tag:17,rubbish1", fieldParameters{true, true, false, newInt64(42), newInt(17), 0, false}}, + {"optional,explicit,default:42,tag:17,rubbish1", fieldParameters{true, true, false, newInt64(42), newInt(17), 0, false, false}}, {"set", fieldParameters{set: true}}, } diff --git a/src/pkg/encoding/asn1/common.go b/src/pkg/encoding/asn1/common.go index f7cb3acbb..03856bc55 100644 --- a/src/pkg/encoding/asn1/common.go +++ b/src/pkg/encoding/asn1/common.go @@ -75,6 +75,7 @@ type fieldParameters struct { tag *int // the EXPLICIT or IMPLICIT tag (maybe nil). stringType int // the string tag to use when marshaling. set bool // true iff this should be encoded as a SET + omitEmpty bool // true iff this should be omitted if empty when marshaling. // Invariants: // if explicit is set, tag is non-nil. @@ -116,6 +117,8 @@ func parseFieldParameters(str string) (ret fieldParameters) { if ret.tag == nil { ret.tag = new(int) } + case part == "omitempty": + ret.omitEmpty = true } } return diff --git a/src/pkg/encoding/asn1/marshal.go b/src/pkg/encoding/asn1/marshal.go index 774bee74b..163bca575 100644 --- a/src/pkg/encoding/asn1/marshal.go +++ b/src/pkg/encoding/asn1/marshal.go @@ -463,6 +463,10 @@ func marshalField(out *forkableWriter, v reflect.Value, params fieldParameters) return marshalField(out, v.Elem(), params) } + if v.Kind() == reflect.Slice && v.Len() == 0 && params.omitEmpty { + return + } + if params.optional && reflect.DeepEqual(v.Interface(), reflect.Zero(v.Type()).Interface()) { return } diff --git a/src/pkg/encoding/asn1/marshal_test.go b/src/pkg/encoding/asn1/marshal_test.go index a7447f978..f43bcae68 100644 --- a/src/pkg/encoding/asn1/marshal_test.go +++ b/src/pkg/encoding/asn1/marshal_test.go @@ -54,6 +54,10 @@ type optionalRawValueTest struct { A RawValue `asn1:"optional"` } +type omitEmptyTest struct { + A []string `asn1:"omitempty"` +} + type testSET []int var PST = time.FixedZone("PST", -8*60*60) @@ -116,6 +120,8 @@ var marshalTests = []marshalTest{ {rawContentsStruct{[]byte{0x30, 3, 1, 2, 3}, 64}, "3003010203"}, {RawValue{Tag: 1, Class: 2, IsCompound: false, Bytes: []byte{1, 2, 3}}, "8103010203"}, {testSET([]int{10}), "310302010a"}, + {omitEmptyTest{[]string{}}, "3000"}, + {omitEmptyTest{[]string{"1"}}, "30053003130131"}, } func TestMarshal(t *testing.T) { diff --git a/src/pkg/encoding/binary/binary.go b/src/pkg/encoding/binary/binary.go index 02f090d53..712e490e6 100644 --- a/src/pkg/encoding/binary/binary.go +++ b/src/pkg/encoding/binary/binary.go @@ -2,12 +2,17 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// Package binary implements translation between -// unsigned integer values and byte sequences -// and the reading and writing of fixed-size values. +// Package binary implements translation between numbers and byte sequences +// and encoding and decoding of varints. +// +// Numbers are translated by reading and writing fixed-size values. // A fixed-size value is either a fixed-size arithmetic // type (int8, uint8, int16, float32, complex64, ...) // or an array or struct containing only fixed-size values. +// +// Varints are a method of encoding integers using one or more bytes; +// numbers with smaller absolute value take a smaller number of bytes. +// For a specification, see http://code.google.com/apis/protocolbuffers/docs/encoding.html. package binary import ( diff --git a/src/pkg/encoding/csv/reader.go b/src/pkg/encoding/csv/reader.go index 9aa398e58..db4d98852 100644 --- a/src/pkg/encoding/csv/reader.go +++ b/src/pkg/encoding/csv/reader.go @@ -92,7 +92,8 @@ var ( // If FieldsPerRecord is positive, Read requires each record to // have the given number of fields. If FieldsPerRecord is 0, Read sets it to // the number of fields in the first record, so that future records must -// have the same field count. +// have the same field count. If FieldsPerRecord is negative, no check is +// made and records may have a variable number of fields. // // If LazyQuotes is true, a quote may appear in an unquoted field and a // non-doubled quote may appear in a quoted field. diff --git a/src/pkg/encoding/gob/decode.go b/src/pkg/encoding/gob/decode.go index 0708a83c9..e32a178ab 100644 --- a/src/pkg/encoding/gob/decode.go +++ b/src/pkg/encoding/gob/decode.go @@ -707,6 +707,9 @@ func (dec *Decoder) decodeInterface(ityp reflect.Type, state *decoderState, p ui if name == "" { // Copy the representation of the nil interface value to the target. // This is horribly unsafe and special. + if indir > 0 { + p = allocate(ityp, p, 1) // All but the last level has been allocated by dec.Indirect + } *(*[2]uintptr)(unsafe.Pointer(p)) = ivalue.InterfaceData() return } diff --git a/src/pkg/encoding/gob/doc.go b/src/pkg/encoding/gob/doc.go index c9ad18e76..96885f8de 100644 --- a/src/pkg/encoding/gob/doc.go +++ b/src/pkg/encoding/gob/doc.go @@ -226,7 +226,7 @@ where * signifies zero or more repetitions and the type id of a value must be predefined or be defined before the value in the stream. See "Gobs of data" for a design discussion of the gob wire format: -http://blog.golang.org/2011/03/gobs-of-data.html +http://golang.org/doc/articles/gobs_of_data.html */ package gob diff --git a/src/pkg/encoding/gob/encoder_test.go b/src/pkg/encoding/gob/encoder_test.go index 050786dfd..c4947cbb8 100644 --- a/src/pkg/encoding/gob/encoder_test.go +++ b/src/pkg/encoding/gob/encoder_test.go @@ -694,8 +694,8 @@ type Bug3 struct { func TestGobPtrSlices(t *testing.T) { in := []*Bug3{ - &Bug3{1, nil}, - &Bug3{2, nil}, + {1, nil}, + {2, nil}, } b := new(bytes.Buffer) err := NewEncoder(b).Encode(&in) diff --git a/src/pkg/encoding/gob/gobencdec_test.go b/src/pkg/encoding/gob/gobencdec_test.go index 83644c033..45240d764 100644 --- a/src/pkg/encoding/gob/gobencdec_test.go +++ b/src/pkg/encoding/gob/gobencdec_test.go @@ -573,3 +573,22 @@ func TestGobEncodeIsZero(t *testing.T) { t.Fatalf("%v != %v", x, y) } } + +func TestGobEncodePtrError(t *testing.T) { + var err error + b := new(bytes.Buffer) + enc := NewEncoder(b) + err = enc.Encode(&err) + if err != nil { + t.Fatal("encode:", err) + } + dec := NewDecoder(b) + err2 := fmt.Errorf("foo") + err = dec.Decode(&err2) + if err != nil { + t.Fatal("decode:", err) + } + if err2 != nil { + t.Fatalf("expected nil, got %v", err2) + } +} diff --git a/src/pkg/encoding/json/encode.go b/src/pkg/encoding/json/encode.go index 5425a3a90..14957b848 100644 --- a/src/pkg/encoding/json/encode.go +++ b/src/pkg/encoding/json/encode.go @@ -6,7 +6,7 @@ // RFC 4627. // // See "JSON and Go" for an introduction to this package: -// http://blog.golang.org/2011/01/json-and-go.html +// http://golang.org/doc/articles/json_and_go.html package json import ( @@ -43,7 +43,8 @@ import ( // to keep some browsers from misinterpreting JSON output as HTML. // // Array and slice values encode as JSON arrays, except that -// []byte encodes as a base64-encoded string. +// []byte encodes as a base64-encoded string, and a nil slice +// encodes as the null JSON object. // // Struct values encode as JSON objects. Each exported struct field // becomes a member of the object unless diff --git a/src/pkg/exp/norm/maketables.go b/src/pkg/exp/norm/maketables.go index bb21bb581..1deedc949 100644 --- a/src/pkg/exp/norm/maketables.go +++ b/src/pkg/exp/norm/maketables.go @@ -577,7 +577,7 @@ type decompSet [4]map[string]bool func makeDecompSet() decompSet { m := decompSet{} - for i, _ := range m { + for i := range m { m[i] = make(map[string]bool) } return m @@ -646,7 +646,7 @@ func printCharInfoTables() int { fmt.Println("const (") for i, m := range decompSet { sa := []string{} - for s, _ := range m { + for s := range m { sa = append(sa, s) } sort.Strings(sa) diff --git a/src/pkg/exp/norm/normalize.go b/src/pkg/exp/norm/normalize.go index b5cd44abf..c1d74f89d 100644 --- a/src/pkg/exp/norm/normalize.go +++ b/src/pkg/exp/norm/normalize.go @@ -356,7 +356,7 @@ func lastBoundary(fd *formInfo, b []byte) int { return -1 } if info.size == 0 { // ends with incomplete rune - if p == 0 { // starts wtih incomplete rune + if p == 0 { // starts with incomplete rune return -1 } i = p diff --git a/src/pkg/exp/types/universe.go b/src/pkg/exp/types/universe.go index 46cff31bc..cb89397b2 100644 --- a/src/pkg/exp/types/universe.go +++ b/src/pkg/exp/types/universe.go @@ -102,11 +102,6 @@ func init() { defType("Pointer") defFun("Alignof") - defFun("New") - defFun("NewArray") defFun("Offsetof") - defFun("Reflect") defFun("Sizeof") - defFun("Typeof") - defFun("Unreflect") } diff --git a/src/pkg/exp/wingui/Makefile b/src/pkg/exp/wingui/Makefile deleted file mode 100644 index bf69c98a5..000000000 --- a/src/pkg/exp/wingui/Makefile +++ /dev/null @@ -1,24 +0,0 @@ -# Copyright 2011 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. - -GOOS=windows - -include ../../../Make.inc - -LD:=$(LD) -Hwindowsgui - -TARG=wingui - -GOFILES=\ - gui.go\ - winapi.go\ - zwinapi.go\ - -include ../../../Make.cmd - -zwinapi.go: winapi.go - (echo '// +build windows'; \ - $(GOROOT)/src/pkg/syscall/mksyscall_windows.pl $<) \ - | gofmt \ - > $@ diff --git a/src/pkg/exp/wingui/gui.go b/src/pkg/exp/wingui/gui.go deleted file mode 100644 index 3b79873fa..000000000 --- a/src/pkg/exp/wingui/gui.go +++ /dev/null @@ -1,155 +0,0 @@ -// Copyright 2011 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. - -// +build windows - -package main - -import ( - "fmt" - "os" - "syscall" - "unsafe" -) - -// some help functions - -func abortf(format string, a ...interface{}) { - fmt.Fprintf(os.Stdout, format, a...) - os.Exit(1) -} - -func abortErrNo(funcname string, err error) { - errno, _ := err.(syscall.Errno) - abortf("%s failed: %d %s\n", funcname, uint32(errno), err) -} - -// global vars - -var ( - mh syscall.Handle - bh syscall.Handle -) - -// WinProc called by windows to notify us of all windows events we might be interested in. -func WndProc(hwnd syscall.Handle, msg uint32, wparam, lparam uintptr) (rc uintptr) { - switch msg { - case WM_CREATE: - var e error - // CreateWindowEx - bh, e = CreateWindowEx( - 0, - syscall.StringToUTF16Ptr("button"), - syscall.StringToUTF16Ptr("Quit"), - WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTON, - 75, 70, 140, 25, - hwnd, 1, mh, 0) - if e != nil { - abortErrNo("CreateWindowEx", e) - } - fmt.Printf("button handle is %x\n", bh) - rc = DefWindowProc(hwnd, msg, wparam, lparam) - case WM_COMMAND: - switch syscall.Handle(lparam) { - case bh: - e := PostMessage(hwnd, WM_CLOSE, 0, 0) - if e != nil { - abortErrNo("PostMessage", e) - } - default: - rc = DefWindowProc(hwnd, msg, wparam, lparam) - } - case WM_CLOSE: - DestroyWindow(hwnd) - case WM_DESTROY: - PostQuitMessage(0) - default: - rc = DefWindowProc(hwnd, msg, wparam, lparam) - } - //fmt.Printf("WndProc(0x%08x, %d, 0x%08x, 0x%08x) (%d)\n", hwnd, msg, wparam, lparam, rc) - return -} - -func rungui() int { - var e error - - // GetModuleHandle - mh, e = GetModuleHandle(nil) - if e != nil { - abortErrNo("GetModuleHandle", e) - } - - // Get icon we're going to use. - myicon, e := LoadIcon(0, IDI_APPLICATION) - if e != nil { - abortErrNo("LoadIcon", e) - } - - // Get cursor we're going to use. - mycursor, e := LoadCursor(0, IDC_ARROW) - if e != nil { - abortErrNo("LoadCursor", e) - } - - // Create callback - wproc := syscall.NewCallback(WndProc) - - // RegisterClassEx - wcname := syscall.StringToUTF16Ptr("myWindowClass") - var wc Wndclassex - wc.Size = uint32(unsafe.Sizeof(wc)) - wc.WndProc = wproc - wc.Instance = mh - wc.Icon = myicon - wc.Cursor = mycursor - wc.Background = COLOR_BTNFACE + 1 - wc.MenuName = nil - wc.ClassName = wcname - wc.IconSm = myicon - if _, e := RegisterClassEx(&wc); e != nil { - abortErrNo("RegisterClassEx", e) - } - - // CreateWindowEx - wh, e := CreateWindowEx( - WS_EX_CLIENTEDGE, - wcname, - syscall.StringToUTF16Ptr("My window"), - WS_OVERLAPPEDWINDOW, - CW_USEDEFAULT, CW_USEDEFAULT, 300, 200, - 0, 0, mh, 0) - if e != nil { - abortErrNo("CreateWindowEx", e) - } - fmt.Printf("main window handle is %x\n", wh) - - // ShowWindow - ShowWindow(wh, SW_SHOWDEFAULT) - - // UpdateWindow - if e := UpdateWindow(wh); e != nil { - abortErrNo("UpdateWindow", e) - } - - // Process all windows messages until WM_QUIT. - var m Msg - for { - r, e := GetMessage(&m, 0, 0, 0) - if e != nil { - abortErrNo("GetMessage", e) - } - if r == 0 { - // WM_QUIT received -> get out - break - } - TranslateMessage(&m) - DispatchMessage(&m) - } - return int(m.Wparam) -} - -func main() { - rc := rungui() - os.Exit(rc) -} diff --git a/src/pkg/exp/wingui/winapi.go b/src/pkg/exp/wingui/winapi.go deleted file mode 100644 index f876088e9..000000000 --- a/src/pkg/exp/wingui/winapi.go +++ /dev/null @@ -1,134 +0,0 @@ -// Copyright 2011 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. - -// +build windows - -package main - -import ( - "syscall" - "unsafe" -) - -type Wndclassex struct { - Size uint32 - Style uint32 - WndProc uintptr - ClsExtra int32 - WndExtra int32 - Instance syscall.Handle - Icon syscall.Handle - Cursor syscall.Handle - Background syscall.Handle - MenuName *uint16 - ClassName *uint16 - IconSm syscall.Handle -} - -type Point struct { - X uintptr - Y uintptr -} - -type Msg struct { - Hwnd syscall.Handle - Message uint32 - Wparam uintptr - Lparam uintptr - Time uint32 - Pt Point -} - -const ( - // Window styles - WS_OVERLAPPED = 0 - WS_POPUP = 0x80000000 - WS_CHILD = 0x40000000 - WS_MINIMIZE = 0x20000000 - WS_VISIBLE = 0x10000000 - WS_DISABLED = 0x8000000 - WS_CLIPSIBLINGS = 0x4000000 - WS_CLIPCHILDREN = 0x2000000 - WS_MAXIMIZE = 0x1000000 - WS_CAPTION = WS_BORDER | WS_DLGFRAME - WS_BORDER = 0x800000 - WS_DLGFRAME = 0x400000 - WS_VSCROLL = 0x200000 - WS_HSCROLL = 0x100000 - WS_SYSMENU = 0x80000 - WS_THICKFRAME = 0x40000 - WS_GROUP = 0x20000 - WS_TABSTOP = 0x10000 - WS_MINIMIZEBOX = 0x20000 - WS_MAXIMIZEBOX = 0x10000 - WS_TILED = WS_OVERLAPPED - WS_ICONIC = WS_MINIMIZE - WS_SIZEBOX = WS_THICKFRAME - // Common Window Styles - WS_OVERLAPPEDWINDOW = WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX - WS_TILEDWINDOW = WS_OVERLAPPEDWINDOW - WS_POPUPWINDOW = WS_POPUP | WS_BORDER | WS_SYSMENU - WS_CHILDWINDOW = WS_CHILD - - WS_EX_CLIENTEDGE = 0x200 - - // Some windows messages - WM_CREATE = 1 - WM_DESTROY = 2 - WM_CLOSE = 16 - WM_COMMAND = 273 - - // Some button control styles - BS_DEFPUSHBUTTON = 1 - - // Some color constants - COLOR_WINDOW = 5 - COLOR_BTNFACE = 15 - - // Default window position - CW_USEDEFAULT = 0x80000000 - 0x100000000 - - // Show window default style - SW_SHOWDEFAULT = 10 -) - -var ( - // Some globally known cursors - IDC_ARROW = MakeIntResource(32512) - IDC_IBEAM = MakeIntResource(32513) - IDC_WAIT = MakeIntResource(32514) - IDC_CROSS = MakeIntResource(32515) - - // Some globally known icons - IDI_APPLICATION = MakeIntResource(32512) - IDI_HAND = MakeIntResource(32513) - IDI_QUESTION = MakeIntResource(32514) - IDI_EXCLAMATION = MakeIntResource(32515) - IDI_ASTERISK = MakeIntResource(32516) - IDI_WINLOGO = MakeIntResource(32517) - IDI_WARNING = IDI_EXCLAMATION - IDI_ERROR = IDI_HAND - IDI_INFORMATION = IDI_ASTERISK -) - -//sys GetModuleHandle(modname *uint16) (handle syscall.Handle, err error) = GetModuleHandleW -//sys RegisterClassEx(wndclass *Wndclassex) (atom uint16, err error) = user32.RegisterClassExW -//sys CreateWindowEx(exstyle uint32, classname *uint16, windowname *uint16, style uint32, x int32, y int32, width int32, height int32, wndparent syscall.Handle, menu syscall.Handle, instance syscall.Handle, param uintptr) (hwnd syscall.Handle, err error) = user32.CreateWindowExW -//sys DefWindowProc(hwnd syscall.Handle, msg uint32, wparam uintptr, lparam uintptr) (lresult uintptr) = user32.DefWindowProcW -//sys DestroyWindow(hwnd syscall.Handle) (err error) = user32.DestroyWindow -//sys PostQuitMessage(exitcode int32) = user32.PostQuitMessage -//sys ShowWindow(hwnd syscall.Handle, cmdshow int32) (wasvisible bool) = user32.ShowWindow -//sys UpdateWindow(hwnd syscall.Handle) (err error) = user32.UpdateWindow -//sys GetMessage(msg *Msg, hwnd syscall.Handle, MsgFilterMin uint32, MsgFilterMax uint32) (ret int32, err error) [failretval==-1] = user32.GetMessageW -//sys TranslateMessage(msg *Msg) (done bool) = user32.TranslateMessage -//sys DispatchMessage(msg *Msg) (ret int32) = user32.DispatchMessageW -//sys LoadIcon(instance syscall.Handle, iconname *uint16) (icon syscall.Handle, err error) = user32.LoadIconW -//sys LoadCursor(instance syscall.Handle, cursorname *uint16) (cursor syscall.Handle, err error) = user32.LoadCursorW -//sys SetCursor(cursor syscall.Handle) (precursor syscall.Handle, err error) = user32.SetCursor -//sys SendMessage(hwnd syscall.Handle, msg uint32, wparam uintptr, lparam uintptr) (lresult uintptr) = user32.SendMessageW -//sys PostMessage(hwnd syscall.Handle, msg uint32, wparam uintptr, lparam uintptr) (err error) = user32.PostMessageW - -func MakeIntResource(id uint16) *uint16 { - return (*uint16)(unsafe.Pointer(uintptr(id))) -} diff --git a/src/pkg/exp/wingui/zwinapi.go b/src/pkg/exp/wingui/zwinapi.go deleted file mode 100644 index 5666c6de5..000000000 --- a/src/pkg/exp/wingui/zwinapi.go +++ /dev/null @@ -1,192 +0,0 @@ -// +build windows -// mksyscall_windows.pl winapi.go -// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT - -package main - -import "unsafe" -import "syscall" - -var ( - modkernel32 = syscall.NewLazyDLL("kernel32.dll") - moduser32 = syscall.NewLazyDLL("user32.dll") - - procGetModuleHandleW = modkernel32.NewProc("GetModuleHandleW") - procRegisterClassExW = moduser32.NewProc("RegisterClassExW") - procCreateWindowExW = moduser32.NewProc("CreateWindowExW") - procDefWindowProcW = moduser32.NewProc("DefWindowProcW") - procDestroyWindow = moduser32.NewProc("DestroyWindow") - procPostQuitMessage = moduser32.NewProc("PostQuitMessage") - procShowWindow = moduser32.NewProc("ShowWindow") - procUpdateWindow = moduser32.NewProc("UpdateWindow") - procGetMessageW = moduser32.NewProc("GetMessageW") - procTranslateMessage = moduser32.NewProc("TranslateMessage") - procDispatchMessageW = moduser32.NewProc("DispatchMessageW") - procLoadIconW = moduser32.NewProc("LoadIconW") - procLoadCursorW = moduser32.NewProc("LoadCursorW") - procSetCursor = moduser32.NewProc("SetCursor") - procSendMessageW = moduser32.NewProc("SendMessageW") - procPostMessageW = moduser32.NewProc("PostMessageW") -) - -func GetModuleHandle(modname *uint16) (handle syscall.Handle, err error) { - r0, _, e1 := syscall.Syscall(procGetModuleHandleW.Addr(), 1, uintptr(unsafe.Pointer(modname)), 0, 0) - handle = syscall.Handle(r0) - if handle == 0 { - if e1 != 0 { - err = error(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func RegisterClassEx(wndclass *Wndclassex) (atom uint16, err error) { - r0, _, e1 := syscall.Syscall(procRegisterClassExW.Addr(), 1, uintptr(unsafe.Pointer(wndclass)), 0, 0) - atom = uint16(r0) - if atom == 0 { - if e1 != 0 { - err = error(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func CreateWindowEx(exstyle uint32, classname *uint16, windowname *uint16, style uint32, x int32, y int32, width int32, height int32, wndparent syscall.Handle, menu syscall.Handle, instance syscall.Handle, param uintptr) (hwnd syscall.Handle, err error) { - r0, _, e1 := syscall.Syscall12(procCreateWindowExW.Addr(), 12, uintptr(exstyle), uintptr(unsafe.Pointer(classname)), uintptr(unsafe.Pointer(windowname)), uintptr(style), uintptr(x), uintptr(y), uintptr(width), uintptr(height), uintptr(wndparent), uintptr(menu), uintptr(instance), uintptr(param)) - hwnd = syscall.Handle(r0) - if hwnd == 0 { - if e1 != 0 { - err = error(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func DefWindowProc(hwnd syscall.Handle, msg uint32, wparam uintptr, lparam uintptr) (lresult uintptr) { - r0, _, _ := syscall.Syscall6(procDefWindowProcW.Addr(), 4, uintptr(hwnd), uintptr(msg), uintptr(wparam), uintptr(lparam), 0, 0) - lresult = uintptr(r0) - return -} - -func DestroyWindow(hwnd syscall.Handle) (err error) { - r1, _, e1 := syscall.Syscall(procDestroyWindow.Addr(), 1, uintptr(hwnd), 0, 0) - if int(r1) == 0 { - if e1 != 0 { - err = error(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func PostQuitMessage(exitcode int32) { - syscall.Syscall(procPostQuitMessage.Addr(), 1, uintptr(exitcode), 0, 0) - return -} - -func ShowWindow(hwnd syscall.Handle, cmdshow int32) (wasvisible bool) { - r0, _, _ := syscall.Syscall(procShowWindow.Addr(), 2, uintptr(hwnd), uintptr(cmdshow), 0) - wasvisible = bool(r0 != 0) - return -} - -func UpdateWindow(hwnd syscall.Handle) (err error) { - r1, _, e1 := syscall.Syscall(procUpdateWindow.Addr(), 1, uintptr(hwnd), 0, 0) - if int(r1) == 0 { - if e1 != 0 { - err = error(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func GetMessage(msg *Msg, hwnd syscall.Handle, MsgFilterMin uint32, MsgFilterMax uint32) (ret int32, err error) { - r0, _, e1 := syscall.Syscall6(procGetMessageW.Addr(), 4, uintptr(unsafe.Pointer(msg)), uintptr(hwnd), uintptr(MsgFilterMin), uintptr(MsgFilterMax), 0, 0) - ret = int32(r0) - if ret == -1 { - if e1 != 0 { - err = error(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func TranslateMessage(msg *Msg) (done bool) { - r0, _, _ := syscall.Syscall(procTranslateMessage.Addr(), 1, uintptr(unsafe.Pointer(msg)), 0, 0) - done = bool(r0 != 0) - return -} - -func DispatchMessage(msg *Msg) (ret int32) { - r0, _, _ := syscall.Syscall(procDispatchMessageW.Addr(), 1, uintptr(unsafe.Pointer(msg)), 0, 0) - ret = int32(r0) - return -} - -func LoadIcon(instance syscall.Handle, iconname *uint16) (icon syscall.Handle, err error) { - r0, _, e1 := syscall.Syscall(procLoadIconW.Addr(), 2, uintptr(instance), uintptr(unsafe.Pointer(iconname)), 0) - icon = syscall.Handle(r0) - if icon == 0 { - if e1 != 0 { - err = error(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func LoadCursor(instance syscall.Handle, cursorname *uint16) (cursor syscall.Handle, err error) { - r0, _, e1 := syscall.Syscall(procLoadCursorW.Addr(), 2, uintptr(instance), uintptr(unsafe.Pointer(cursorname)), 0) - cursor = syscall.Handle(r0) - if cursor == 0 { - if e1 != 0 { - err = error(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func SetCursor(cursor syscall.Handle) (precursor syscall.Handle, err error) { - r0, _, e1 := syscall.Syscall(procSetCursor.Addr(), 1, uintptr(cursor), 0, 0) - precursor = syscall.Handle(r0) - if precursor == 0 { - if e1 != 0 { - err = error(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func SendMessage(hwnd syscall.Handle, msg uint32, wparam uintptr, lparam uintptr) (lresult uintptr) { - r0, _, _ := syscall.Syscall6(procSendMessageW.Addr(), 4, uintptr(hwnd), uintptr(msg), uintptr(wparam), uintptr(lparam), 0, 0) - lresult = uintptr(r0) - return -} - -func PostMessage(hwnd syscall.Handle, msg uint32, wparam uintptr, lparam uintptr) (err error) { - r1, _, e1 := syscall.Syscall6(procPostMessageW.Addr(), 4, uintptr(hwnd), uintptr(msg), uintptr(wparam), uintptr(lparam), 0, 0) - if int(r1) == 0 { - if e1 != 0 { - err = error(e1) - } else { - err = syscall.EINVAL - } - } - return -} diff --git a/src/pkg/expvar/expvar.go b/src/pkg/expvar/expvar.go index 1919296ea..b06599505 100644 --- a/src/pkg/expvar/expvar.go +++ b/src/pkg/expvar/expvar.go @@ -41,10 +41,14 @@ type Var interface { // Int is a 64-bit integer variable that satisfies the Var interface. type Int struct { i int64 - mu sync.Mutex + mu sync.RWMutex } -func (v *Int) String() string { return strconv.FormatInt(v.i, 10) } +func (v *Int) String() string { + v.mu.RLock() + defer v.mu.RUnlock() + return strconv.FormatInt(v.i, 10) +} func (v *Int) Add(delta int64) { v.mu.Lock() @@ -61,10 +65,14 @@ func (v *Int) Set(value int64) { // Float is a 64-bit float variable that satisfies the Var interface. type Float struct { f float64 - mu sync.Mutex + mu sync.RWMutex } -func (v *Float) String() string { return strconv.FormatFloat(v.f, 'g', -1, 64) } +func (v *Float) String() string { + v.mu.RLock() + defer v.mu.RUnlock() + return strconv.FormatFloat(v.f, 'g', -1, 64) +} // Add adds delta to v. func (v *Float) Add(delta float64) { @@ -95,17 +103,17 @@ type KeyValue struct { func (v *Map) String() string { v.mu.RLock() defer v.mu.RUnlock() - b := new(bytes.Buffer) - fmt.Fprintf(b, "{") + var b bytes.Buffer + fmt.Fprintf(&b, "{") first := true for key, val := range v.m { if !first { - fmt.Fprintf(b, ", ") + fmt.Fprintf(&b, ", ") } - fmt.Fprintf(b, "\"%s\": %v", key, val) + fmt.Fprintf(&b, "\"%s\": %v", key, val) first = false } - fmt.Fprintf(b, "}") + fmt.Fprintf(&b, "}") return b.String() } @@ -180,12 +188,21 @@ func (v *Map) Do(f func(KeyValue)) { // String is a string variable, and satisfies the Var interface. type String struct { - s string + s string + mu sync.RWMutex } -func (v *String) String() string { return strconv.Quote(v.s) } +func (v *String) String() string { + v.mu.RLock() + defer v.mu.RUnlock() + return strconv.Quote(v.s) +} -func (v *String) Set(value string) { v.s = value } +func (v *String) Set(value string) { + v.mu.Lock() + defer v.mu.Unlock() + v.s = value +} // Func implements Var by calling the function // and formatting the returned value using JSON. diff --git a/src/pkg/flag/example_test.go b/src/pkg/flag/example_test.go new file mode 100644 index 000000000..04a0d20ee --- /dev/null +++ b/src/pkg/flag/example_test.go @@ -0,0 +1,83 @@ +// Copyright 2012 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. + +// These examples demonstrate more intricate uses of the flag package. +package flag_test + +import ( + "errors" + "flag" + "fmt" + "strings" + "time" +) + +// Example 1: A single string flag called "species" with default value "gopher". +var species = flag.String("species", "gopher", "the species we are studying") + +// Example 2: Two flags sharing a variable, so we can have a shorthand. +// The order of initialization is undefined, so make sure both use the +// same default value. They must be set up with an init function. +var gopherType string + +func init() { + const ( + defaultGopher = "pocket" + usage = "the variety of gopher" + ) + flag.StringVar(&gopherType, "gopher_type", defaultGopher, usage) + flag.StringVar(&gopherType, "g", defaultGopher, usage+" (shorthand)") +} + +// Example 3: A user-defined flag type, a slice of durations. +type interval []time.Duration + +// String is the method to format the flag's value, part of the flag.Value interface. +// The String method's output will be used in diagnostics. +func (i *interval) String() string { + return fmt.Sprint(*i) +} + +// Set is the method to set the flag value, part of the flag.Value interface. +// Set's argument is a string to be parsed to set the flag. +// It's a comma-separated list, so we split it. +func (i *interval) Set(value string) error { + // If we wanted to allow the flag to be set multiple times, + // accumulating values, we would delete this if statement. + // That would permit usages such as + // -deltaT 10s -deltaT 15s + // and other combinations. + if len(*i) > 0 { + return errors.New("interval flag already set") + } + for _, dt := range strings.Split(value, ",") { + duration, err := time.ParseDuration(dt) + if err != nil { + return err + } + *i = append(*i, duration) + } + return nil +} + +// Define a flag to accumulate durations. Because it has a special type, +// we need to use the Var function and therefore create the flag during +// init. + +var intervalFlag interval + +func init() { + // Tie the command-line flag to the intervalFlag variable and + // set a usage message. + flag.Var(&intervalFlag, "deltaT", "comma-separated list of intervals to use between events") +} + +func Example() { + // All the interesting pieces are with the variables declared above, but + // to enable the flag package to see the flags defined there, one must + // execute, typically at the start of main (not init!): + // flag.Parse() + // We don't run it here because this is not a main function and + // the testing suite has already parsed the flags. +} diff --git a/src/pkg/fmt/doc.go b/src/pkg/fmt/doc.go index 7d4178da7..9660370c2 100644 --- a/src/pkg/fmt/doc.go +++ b/src/pkg/fmt/doc.go @@ -7,7 +7,8 @@ to C's printf and scanf. The format 'verbs' are derived from C's but are simpler. - Printing: + + Printing The verbs: @@ -127,7 +128,8 @@ by a single character (the verb) and end with a parenthesized description. - Scanning: + + Scanning An analogous set of functions scans formatted text to yield values. Scan, Scanf and Scanln read from os.Stdin; Fscan, diff --git a/src/pkg/fmt/export_test.go b/src/pkg/fmt/export_test.go new file mode 100644 index 000000000..89d57ee6c --- /dev/null +++ b/src/pkg/fmt/export_test.go @@ -0,0 +1,7 @@ +// Copyright 2012 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. + +package fmt + +var IsSpace = isSpace diff --git a/src/pkg/fmt/fmt_test.go b/src/pkg/fmt/fmt_test.go index 86db9bc67..758fc50d0 100644 --- a/src/pkg/fmt/fmt_test.go +++ b/src/pkg/fmt/fmt_test.go @@ -13,6 +13,7 @@ import ( "strings" "testing" "time" + "unicode" ) type ( @@ -828,3 +829,13 @@ func TestBadVerbRecursion(t *testing.T) { t.Error("fail with value") } } + +func TestIsSpace(t *testing.T) { + // This tests the internal isSpace function. + // IsSpace = isSpace is defined in export_test.go. + for i := rune(0); i <= unicode.MaxRune; i++ { + if IsSpace(i) != unicode.IsSpace(i) { + t.Errorf("isSpace(%U) = %v, want %v", i, IsSpace(i), unicode.IsSpace(i)) + } + } +} diff --git a/src/pkg/fmt/format.go b/src/pkg/fmt/format.go index 78d9e998b..2186f334b 100644 --- a/src/pkg/fmt/format.go +++ b/src/pkg/fmt/format.go @@ -5,9 +5,7 @@ package fmt import ( - "bytes" "strconv" - "unicode" "unicode/utf8" ) @@ -36,10 +34,10 @@ func init() { } // A fmt is the raw formatter used by Printf etc. -// It prints into a bytes.Buffer that must be set up externally. +// It prints into a buffer that must be set up separately. type fmt struct { intbuf [nByte]byte - buf *bytes.Buffer + buf *buffer // width, precision wid int prec int @@ -69,7 +67,7 @@ func (f *fmt) clearflags() { f.zero = false } -func (f *fmt) init(buf *bytes.Buffer) { +func (f *fmt) init(buf *buffer) { f.buf = buf f.clearflags() } @@ -247,7 +245,7 @@ func (f *fmt) integer(a int64, base uint64, signedness bool, digits string) { } // If we want a quoted char for %#U, move the data up to make room. - if f.unicode && f.uniQuote && a >= 0 && a <= unicode.MaxRune && unicode.IsPrint(rune(a)) { + if f.unicode && f.uniQuote && a >= 0 && a <= utf8.MaxRune && strconv.IsPrint(rune(a)) { runeWidth := utf8.RuneLen(rune(a)) width := 1 + 1 + runeWidth + 1 // space, quote, rune, quote copy(buf[i-width:], buf[i:]) // guaranteed to have enough room. @@ -290,16 +288,15 @@ func (f *fmt) fmt_s(s string) { // fmt_sx formats a string as a hexadecimal encoding of its bytes. func (f *fmt) fmt_sx(s, digits string) { // TODO: Avoid buffer by pre-padding. - var b bytes.Buffer + var b []byte for i := 0; i < len(s); i++ { if i > 0 && f.space { - b.WriteByte(' ') + b = append(b, ' ') } v := s[i] - b.WriteByte(digits[v>>4]) - b.WriteByte(digits[v&0xF]) + b = append(b, digits[v>>4], digits[v&0xF]) } - f.pad(b.Bytes()) + f.pad(b) } // fmt_q formats a string as a double-quoted, escaped Go string constant. diff --git a/src/pkg/fmt/print.go b/src/pkg/fmt/print.go index c3ba2f339..13438243c 100644 --- a/src/pkg/fmt/print.go +++ b/src/pkg/fmt/print.go @@ -5,13 +5,11 @@ package fmt import ( - "bytes" "errors" "io" "os" "reflect" "sync" - "unicode" "unicode/utf8" ) @@ -71,11 +69,45 @@ type GoStringer interface { GoString() string } +// Use simple []byte instead of bytes.Buffer to avoid large dependency. +type buffer []byte + +func (b *buffer) Write(p []byte) (n int, err error) { + *b = append(*b, p...) + return len(p), nil +} + +func (b *buffer) WriteString(s string) (n int, err error) { + *b = append(*b, s...) + return len(s), nil +} + +func (b *buffer) WriteByte(c byte) error { + *b = append(*b, c) + return nil +} + +func (bp *buffer) WriteRune(r rune) error { + if r < utf8.RuneSelf { + *bp = append(*bp, byte(r)) + return nil + } + + b := *bp + n := len(b) + for n+utf8.UTFMax > cap(b) { + b = append(b, 0) + } + w := utf8.EncodeRune(b[n:n+utf8.UTFMax], r) + *bp = b[:n+w] + return nil +} + type pp struct { n int panicking bool erroring bool // printing an error condition - buf bytes.Buffer + buf buffer // field holds the current item, as an interface{}. field interface{} // value holds the current item, as a reflect.Value, and will be @@ -133,10 +165,10 @@ func newPrinter() *pp { // Save used pp structs in ppFree; avoids an allocation per invocation. func (p *pp) free() { // Don't hold on to pp structs with large buffers. - if cap(p.buf.Bytes()) > 1024 { + if cap(p.buf) > 1024 { return } - p.buf.Reset() + p.buf = p.buf[:0] p.field = nil p.value = reflect.Value{} ppFree.put(p) @@ -179,7 +211,7 @@ func (p *pp) Write(b []byte) (ret int, err error) { func Fprintf(w io.Writer, format string, a ...interface{}) (n int, err error) { p := newPrinter() p.doPrintf(format, a) - n64, err := p.buf.WriteTo(w) + n64, err := w.Write(p.buf) p.free() return int(n64), err } @@ -194,7 +226,7 @@ func Printf(format string, a ...interface{}) (n int, err error) { func Sprintf(format string, a ...interface{}) string { p := newPrinter() p.doPrintf(format, a) - s := p.buf.String() + s := string(p.buf) p.free() return s } @@ -213,7 +245,7 @@ func Errorf(format string, a ...interface{}) error { func Fprint(w io.Writer, a ...interface{}) (n int, err error) { p := newPrinter() p.doPrint(a, false, false) - n64, err := p.buf.WriteTo(w) + n64, err := w.Write(p.buf) p.free() return int(n64), err } @@ -230,7 +262,7 @@ func Print(a ...interface{}) (n int, err error) { func Sprint(a ...interface{}) string { p := newPrinter() p.doPrint(a, false, false) - s := p.buf.String() + s := string(p.buf) p.free() return s } @@ -245,7 +277,7 @@ func Sprint(a ...interface{}) string { func Fprintln(w io.Writer, a ...interface{}) (n int, err error) { p := newPrinter() p.doPrint(a, true, true) - n64, err := p.buf.WriteTo(w) + n64, err := w.Write(p.buf) p.free() return int(n64), err } @@ -262,7 +294,7 @@ func Println(a ...interface{}) (n int, err error) { func Sprintln(a ...interface{}) string { p := newPrinter() p.doPrint(a, true, true) - s := p.buf.String() + s := string(p.buf) p.free() return s } @@ -352,7 +384,7 @@ func (p *pp) fmtInt64(v int64, verb rune) { case 'o': p.fmt.integer(v, 8, signed, ldigits) case 'q': - if 0 <= v && v <= unicode.MaxRune { + if 0 <= v && v <= utf8.MaxRune { p.fmt.fmt_qc(v) } else { p.badVerb(verb) @@ -416,7 +448,7 @@ func (p *pp) fmtUint64(v uint64, verb rune, goSyntax bool) { case 'o': p.fmt.integer(int64(v), 8, unsigned, ldigits) case 'q': - if 0 <= v && v <= unicode.MaxRune { + if 0 <= v && v <= utf8.MaxRune { p.fmt.fmt_qc(int64(v)) } else { p.badVerb(verb) diff --git a/src/pkg/fmt/scan.go b/src/pkg/fmt/scan.go index fa9a5584a..0b3e04069 100644 --- a/src/pkg/fmt/scan.go +++ b/src/pkg/fmt/scan.go @@ -5,15 +5,12 @@ package fmt import ( - "bytes" "errors" "io" "math" "os" "reflect" "strconv" - "strings" - "unicode" "unicode/utf8" ) @@ -87,25 +84,36 @@ func Scanf(format string, a ...interface{}) (n int, err error) { return Fscanf(os.Stdin, format, a...) } +type stringReader string + +func (r *stringReader) Read(b []byte) (n int, err error) { + n = copy(b, *r) + *r = (*r)[n:] + if n == 0 { + err = io.EOF + } + return +} + // Sscan scans the argument string, storing successive space-separated // values into successive arguments. Newlines count as space. It // returns the number of items successfully scanned. If that is less // than the number of arguments, err will report why. func Sscan(str string, a ...interface{}) (n int, err error) { - return Fscan(strings.NewReader(str), a...) + return Fscan((*stringReader)(&str), a...) } // Sscanln is similar to Sscan, but stops scanning at a newline and // after the final item there must be a newline or EOF. func Sscanln(str string, a ...interface{}) (n int, err error) { - return Fscanln(strings.NewReader(str), a...) + return Fscanln((*stringReader)(&str), a...) } // Sscanf scans the argument string, storing successive space-separated // values into successive arguments as determined by the format. It // returns the number of items successfully parsed. func Sscanf(str string, format string, a ...interface{}) (n int, err error) { - return Fscanf(strings.NewReader(str), format, a...) + return Fscanf((*stringReader)(&str), format, a...) } // Fscan scans text read from r, storing successive space-separated @@ -149,7 +157,7 @@ const eof = -1 // ss is the internal implementation of ScanState. type ss struct { rr io.RuneReader // where to read input - buf bytes.Buffer // token accumulator + buf buffer // token accumulator peekRune rune // one-rune lookahead prevRune rune // last rune returned by ReadRune count int // runes consumed so far. @@ -262,14 +270,46 @@ func (s *ss) Token(skipSpace bool, f func(rune) bool) (tok []byte, err error) { if f == nil { f = notSpace } - s.buf.Reset() + s.buf = s.buf[:0] tok = s.token(skipSpace, f) return } +// space is a copy of the unicode.White_Space ranges, +// to avoid depending on package unicode. +var space = [][2]uint16{ + {0x0009, 0x000d}, + {0x0020, 0x0020}, + {0x0085, 0x0085}, + {0x00a0, 0x00a0}, + {0x1680, 0x1680}, + {0x180e, 0x180e}, + {0x2000, 0x200a}, + {0x2028, 0x2029}, + {0x202f, 0x202f}, + {0x205f, 0x205f}, + {0x3000, 0x3000}, +} + +func isSpace(r rune) bool { + if r >= 1<<16 { + return false + } + rx := uint16(r) + for _, rng := range space { + if rx < rng[0] { + return false + } + if rx <= rng[1] { + return true + } + } + return false +} + // notSpace is the default scanning function used in Token. func notSpace(r rune) bool { - return !unicode.IsSpace(r) + return !isSpace(r) } // skipSpace provides Scan() methods the ability to skip space and newline characters @@ -378,10 +418,10 @@ func (s *ss) free(old ssave) { return } // Don't hold on to ss structs with large buffers. - if cap(s.buf.Bytes()) > 1024 { + if cap(s.buf) > 1024 { return } - s.buf.Reset() + s.buf = s.buf[:0] s.rr = nil ssFree.put(s) } @@ -403,7 +443,7 @@ func (s *ss) skipSpace(stopAtNewline bool) { s.errorString("unexpected newline") return } - if !unicode.IsSpace(r) { + if !isSpace(r) { s.UnreadRune() break } @@ -429,7 +469,7 @@ func (s *ss) token(skipSpace bool, f func(rune) bool) []byte { } s.buf.WriteRune(r) } - return s.buf.Bytes() + return s.buf } // typeError indicates that the type of the operand did not match the format @@ -440,6 +480,15 @@ func (s *ss) typeError(field interface{}, expected string) { var complexError = errors.New("syntax error scanning complex number") var boolError = errors.New("syntax error scanning boolean") +func indexRune(s string, r rune) int { + for i, c := range s { + if c == r { + return i + } + } + return -1 +} + // consume reads the next rune in the input and reports whether it is in the ok string. // If accept is true, it puts the character into the input token. func (s *ss) consume(ok string, accept bool) bool { @@ -447,7 +496,7 @@ func (s *ss) consume(ok string, accept bool) bool { if r == eof { return false } - if strings.IndexRune(ok, r) >= 0 { + if indexRune(ok, r) >= 0 { if accept { s.buf.WriteRune(r) } @@ -465,7 +514,7 @@ func (s *ss) peek(ok string) bool { if r != eof { s.UnreadRune() } - return strings.IndexRune(ok, r) >= 0 + return indexRune(ok, r) >= 0 } func (s *ss) notEOF() { @@ -560,7 +609,7 @@ func (s *ss) scanNumber(digits string, haveDigits bool) string { } for s.accept(digits) { } - return s.buf.String() + return string(s.buf) } // scanRune returns the next rune value in the input. @@ -660,16 +709,16 @@ func (s *ss) scanUint(verb rune, bitSize int) uint64 { // if the width is specified. It's not rigorous about syntax because it doesn't check that // we have at least some digits, but Atof will do that. func (s *ss) floatToken() string { - s.buf.Reset() + s.buf = s.buf[:0] // NaN? if s.accept("nN") && s.accept("aA") && s.accept("nN") { - return s.buf.String() + return string(s.buf) } // leading sign? s.accept(sign) // Inf? if s.accept("iI") && s.accept("nN") && s.accept("fF") { - return s.buf.String() + return string(s.buf) } // digits? for s.accept(decimalDigits) { @@ -688,7 +737,7 @@ func (s *ss) floatToken() string { for s.accept(decimalDigits) { } } - return s.buf.String() + return string(s.buf) } // complexTokens returns the real and imaginary parts of the complex number starting here. @@ -698,13 +747,13 @@ func (s *ss) complexTokens() (real, imag string) { // TODO: accept N and Ni independently? parens := s.accept("(") real = s.floatToken() - s.buf.Reset() + s.buf = s.buf[:0] // Must now have a sign. if !s.accept("+-") { s.error(complexError) } // Sign is now in buffer - imagSign := s.buf.String() + imagSign := string(s.buf) imag = s.floatToken() if !s.accept("i") { s.error(complexError) @@ -717,7 +766,7 @@ func (s *ss) complexTokens() (real, imag string) { // convertFloat converts the string to a float64value. func (s *ss) convertFloat(str string, n int) float64 { - if p := strings.Index(str, "p"); p >= 0 { + if p := indexRune(str, 'p'); p >= 0 { // Atof doesn't handle power-of-2 exponents, // but they're easy to evaluate. f, err := strconv.ParseFloat(str[:p], n) @@ -794,7 +843,7 @@ func (s *ss) quotedString() string { } s.buf.WriteRune(r) } - return s.buf.String() + return string(s.buf) case '"': // Double-quoted: Include the quotes and let strconv.Unquote do the backslash escapes. s.buf.WriteRune(quote) @@ -811,7 +860,7 @@ func (s *ss) quotedString() string { break } } - result, err := strconv.Unquote(s.buf.String()) + result, err := strconv.Unquote(string(s.buf)) if err != nil { s.error(err) } @@ -844,7 +893,7 @@ func (s *ss) hexByte() (b byte, ok bool) { if rune1 == eof { return } - if unicode.IsSpace(rune1) { + if isSpace(rune1) { s.UnreadRune() return } @@ -862,11 +911,11 @@ func (s *ss) hexString() string { } s.buf.WriteByte(b) } - if s.buf.Len() == 0 { + if len(s.buf) == 0 { s.errorString("Scan: no hex data for %x string") return "" } - return s.buf.String() + return string(s.buf) } const floatVerbs = "beEfFgGv" @@ -875,7 +924,7 @@ const hugeWid = 1 << 30 // scanOne scans a single value, deriving the scanner from the type of the argument. func (s *ss) scanOne(verb rune, field interface{}) { - s.buf.Reset() + s.buf = s.buf[:0] var err error // If the parameter has its own Scan method, use that. if v, ok := field.(Scanner); ok { @@ -1004,7 +1053,7 @@ func (s *ss) doScan(a []interface{}) (numProcessed int, err error) { if r == '\n' || r == eof { break } - if !unicode.IsSpace(r) { + if !isSpace(r) { s.errorString("Scan: expected newline") break } @@ -1032,7 +1081,7 @@ func (s *ss) advance(format string) (i int) { i += w // skip the first % } sawSpace := false - for unicode.IsSpace(fmtc) && i < len(format) { + for isSpace(fmtc) && i < len(format) { sawSpace = true i += w fmtc, w = utf8.DecodeRuneInString(format[i:]) @@ -1044,7 +1093,7 @@ func (s *ss) advance(format string) (i int) { if inputc == eof { return } - if !unicode.IsSpace(inputc) { + if !isSpace(inputc) { // Space in format but not in input: error s.errorString("expected space in input to match format") } diff --git a/src/pkg/fmt/scan_test.go b/src/pkg/fmt/scan_test.go index 61b48f9cc..320857b73 100644 --- a/src/pkg/fmt/scan_test.go +++ b/src/pkg/fmt/scan_test.go @@ -810,7 +810,7 @@ func TestMultiLine(t *testing.T) { } } -// RecursiveInt accepts an string matching %d.%d.%d.... +// RecursiveInt accepts a string matching %d.%d.%d.... // and parses it into a linked list. // It allows us to benchmark recursive descent style scanners. type RecursiveInt struct { @@ -826,7 +826,7 @@ func (r *RecursiveInt) Scan(state ScanState, verb rune) (err error) { next := new(RecursiveInt) _, err = Fscanf(state, ".%v", next) if err != nil { - if err == errors.New("input does not match format") || err == io.ErrUnexpectedEOF { + if err == io.ErrUnexpectedEOF { err = nil } return diff --git a/src/pkg/go/build/Makefile b/src/pkg/go/build/Makefile deleted file mode 100644 index 3bb3912cb..000000000 --- a/src/pkg/go/build/Makefile +++ /dev/null @@ -1,11 +0,0 @@ -# Copyright 2009 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. - -syslist.go: ../../../Make.inc Makefile - echo '// Generated automatically by make.' >$@ - echo >>$@ - echo 'package build' >>$@ - echo >>$@ - echo 'const goosList = "$(GOOS_LIST)"' >>$@ - echo 'const goarchList = "$(GOARCH_LIST)"' >>$@ diff --git a/src/pkg/go/build/build.go b/src/pkg/go/build/build.go index eece76105..d113dc135 100644 --- a/src/pkg/go/build/build.go +++ b/src/pkg/go/build/build.go @@ -34,7 +34,7 @@ type Context struct { CgoEnabled bool // whether cgo can be used BuildTags []string // additional tags to recognize in +build lines UseAllFiles bool // use files regardless of +build lines, file names - Gccgo bool // assume use of gccgo when computing object paths + Compiler string // compiler to assume when computing target paths // By default, Import uses the operating system's file system calls // to read directories and files. To read from other sources, @@ -210,6 +210,7 @@ func (ctxt *Context) SrcDirs() []string { // if set, or else the compiled code's GOARCH, GOOS, and GOROOT. var Default Context = defaultContext() +// This list is also known to ../../../cmd/dist/build.c. var cgoEnabled = map[string]bool{ "darwin/386": true, "darwin/amd64": true, @@ -228,6 +229,7 @@ func defaultContext() Context { c.GOOS = envOr("GOOS", runtime.GOOS) c.GOROOT = runtime.GOROOT() c.GOPATH = envOr("GOPATH", "") + c.Compiler = runtime.Compiler switch os.Getenv("CGO_ENABLED") { case "1": @@ -277,11 +279,12 @@ type Package struct { PkgObj string // installed .a file // Source files - GoFiles []string // .go source files (excluding CgoFiles, TestGoFiles, XTestGoFiles) - CgoFiles []string // .go source files that import "C" - CFiles []string // .c source files - HFiles []string // .h source files - SFiles []string // .s source files + GoFiles []string // .go source files (excluding CgoFiles, TestGoFiles, XTestGoFiles) + CgoFiles []string // .go source files that import "C" + CFiles []string // .c source files + HFiles []string // .h source files + SFiles []string // .s source files + SysoFiles []string // .syso system object files to add to archive // Cgo directives CgoPkgConfig []string // Cgo pkg-config directives @@ -314,42 +317,58 @@ func (ctxt *Context) ImportDir(dir string, mode ImportMode) (*Package, error) { return ctxt.Import(".", dir, mode) } +// NoGoError is the error used by Import to describe a directory +// containing no Go source files. +type NoGoError struct { + Dir string +} + +func (e *NoGoError) Error() string { + return "no Go source files in " + e.Dir +} + // Import returns details about the Go package named by the import path, -// interpreting local import paths relative to the src directory. If the path -// is a local import path naming a package that can be imported using a -// standard import path, the returned package will set p.ImportPath to -// that path. +// interpreting local import paths relative to the srcDir directory. +// If the path is a local import path naming a package that can be imported +// using a standard import path, the returned package will set p.ImportPath +// to that path. // // In the directory containing the package, .go, .c, .h, and .s files are // considered part of the package except for: // // - .go files in package documentation -// - files starting with _ or . +// - files starting with _ or . (likely editor temporary files) // - files with build constraints not satisfied by the context // // If an error occurs, Import returns a non-nil error also returns a non-nil // *Package containing partial information. // -func (ctxt *Context) Import(path string, src string, mode ImportMode) (*Package, error) { +func (ctxt *Context) Import(path string, srcDir string, mode ImportMode) (*Package, error) { p := &Package{ ImportPath: path, } var pkga string - if ctxt.Gccgo { + var pkgerr error + switch ctxt.Compiler { + case "gccgo": dir, elem := pathpkg.Split(p.ImportPath) pkga = "pkg/gccgo/" + dir + "lib" + elem + ".a" - } else { + case "gc": pkga = "pkg/" + ctxt.GOOS + "_" + ctxt.GOARCH + "/" + p.ImportPath + ".a" + default: + // Save error for end of function. + pkgerr = fmt.Errorf("import %q: unknown compiler %q", path, ctxt.Compiler) } binaryOnly := false if IsLocalImport(path) { - if src == "" { + pkga = "" // local imports have no installed path + if srcDir == "" { return p, fmt.Errorf("import %q: import relative to unknown directory", path) } if !ctxt.isAbsPath(path) { - p.Dir = ctxt.joinPath(src, path) + p.Dir = ctxt.joinPath(srcDir, path) } // Determine canonical import path, if any. if ctxt.GOROOT != "" { @@ -396,7 +415,7 @@ func (ctxt *Context) Import(path string, src string, mode ImportMode) (*Package, if ctxt.GOROOT != "" { dir := ctxt.joinPath(ctxt.GOROOT, "src", "pkg", path) isDir := ctxt.isDir(dir) - binaryOnly = !isDir && mode&AllowBinary != 0 && ctxt.isFile(ctxt.joinPath(ctxt.GOROOT, pkga)) + binaryOnly = !isDir && mode&AllowBinary != 0 && pkga != "" && ctxt.isFile(ctxt.joinPath(ctxt.GOROOT, pkga)) if isDir || binaryOnly { p.Dir = dir p.Goroot = true @@ -407,7 +426,7 @@ func (ctxt *Context) Import(path string, src string, mode ImportMode) (*Package, for _, root := range ctxt.gopath() { dir := ctxt.joinPath(root, "src", path) isDir := ctxt.isDir(dir) - binaryOnly = !isDir && mode&AllowBinary != 0 && ctxt.isFile(ctxt.joinPath(root, pkga)) + binaryOnly = !isDir && mode&AllowBinary != 0 && pkga != "" && ctxt.isFile(ctxt.joinPath(root, pkga)) if isDir || binaryOnly { p.Dir = dir p.Root = root @@ -426,14 +445,16 @@ Found: } p.PkgRoot = ctxt.joinPath(p.Root, "pkg") p.BinDir = ctxt.joinPath(p.Root, "bin") - p.PkgObj = ctxt.joinPath(p.Root, pkga) + if pkga != "" { + p.PkgObj = ctxt.joinPath(p.Root, pkga) + } } if mode&FindOnly != 0 { - return p, nil + return p, pkgerr } if binaryOnly && (mode&AllowBinary) != 0 { - return p, nil + return p, pkgerr } dirs, err := ctxt.readDir(p.Dir) @@ -467,7 +488,13 @@ Found: ext := name[i:] switch ext { case ".go", ".c", ".s", ".h", ".S": - // tentatively okay + // tentatively okay - read to make sure + case ".syso": + // binary objects to add to package archive + // Likely of the form foo_windows.syso, but + // the name was vetted above with goodOSArchFile. + p.SysoFiles = append(p.SysoFiles, name) + continue default: // skip continue @@ -586,7 +613,7 @@ Found: } } if p.Name == "" { - return p, fmt.Errorf("no Go source files in %s", p.Dir) + return p, &NoGoError{p.Dir} } p.Imports, p.ImportPos = cleanImports(imported) @@ -601,7 +628,7 @@ Found: sort.Strings(p.SFiles) } - return p, nil + return p, pkgerr } func cleanImports(m map[string][]token.Position) ([]string, map[string][]token.Position) { @@ -614,8 +641,8 @@ func cleanImports(m map[string][]token.Position) ([]string, map[string][]token.P } // Import is shorthand for Default.Import. -func Import(path, src string, mode ImportMode) (*Package, error) { - return Default.Import(path, src, mode) +func Import(path, srcDir string, mode ImportMode) (*Package, error) { + return Default.Import(path, srcDir, mode) } // ImportDir is shorthand for Default.ImportDir. @@ -848,7 +875,7 @@ func splitQuoted(s string) (r []string, err error) { // !cgo (if cgo is disabled) // tag (if tag is listed in ctxt.BuildTags) // !tag (if tag is not listed in ctxt.BuildTags) -// a slash-separated list of any of these +// a comma-separated list of any of these // func (ctxt *Context) match(name string) bool { if name == "" { @@ -862,11 +889,11 @@ func (ctxt *Context) match(name string) bool { return false } if strings.HasPrefix(name, "!") { // negation - return !ctxt.match(name[1:]) + return len(name) > 1 && !ctxt.match(name[1:]) } // Tags must be letters, digits, underscores. - // Unlike in Go identifiers, all digits is fine (e.g., "386"). + // Unlike in Go identifiers, all digits are fine (e.g., "386"). for _, c := range name { if !unicode.IsLetter(c) && !unicode.IsDigit(c) && c != '_' { return false diff --git a/src/pkg/go/build/build_test.go b/src/pkg/go/build/build_test.go index 06b8b0e94..560ebad5c 100644 --- a/src/pkg/go/build/build_test.go +++ b/src/pkg/go/build/build_test.go @@ -36,6 +36,7 @@ func TestMatch(t *testing.T) { nomatch(runtime.GOOS + "," + runtime.GOARCH + ",!foo") match(runtime.GOOS + "," + runtime.GOARCH + ",!bar") nomatch(runtime.GOOS + "," + runtime.GOARCH + ",bar") + nomatch("!") } func TestDotSlashImport(t *testing.T) { diff --git a/src/pkg/go/build/deps_test.go b/src/pkg/go/build/deps_test.go new file mode 100644 index 000000000..4e9f32a03 --- /dev/null +++ b/src/pkg/go/build/deps_test.go @@ -0,0 +1,424 @@ +// Copyright 2012 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. + +// This file exercises the import parser but also checks that +// some low-level packages do not have new dependencies added. + +package build_test + +import ( + "go/build" + "sort" + "testing" +) + +// pkgDeps defines the expected dependencies between packages in +// the Go source tree. It is a statement of policy. +// Changes should not be made to this map without prior discussion. +// +// The map contains two kinds of entries: +// 1) Lower-case keys are standard import paths and list the +// allowed imports in that package. +// 2) Upper-case keys define aliases for package sets, which can then +// be used as dependencies by other rules. +// +// DO NOT CHANGE THIS DATA TO FIX BUILDS. +// +var pkgDeps = map[string][]string{ + // L0 is the lowest level, core, nearly unavoidable packages. + "errors": {}, + "io": {"errors", "sync"}, + "runtime": {"unsafe"}, + "sync": {"sync/atomic"}, + "sync/atomic": {"unsafe"}, + "unsafe": {}, + + "L0": { + "errors", + "io", + "runtime", + "sync", + "sync/atomic", + "unsafe", + }, + + // L1 adds simple functions and strings processing, + // but not Unicode tables. + "math": {"unsafe"}, + "math/cmplx": {"math"}, + "math/rand": {"L0", "math"}, + "sort": {"math"}, + "strconv": {"L0", "unicode/utf8", "math"}, + "unicode/utf16": {}, + "unicode/utf8": {}, + + "L1": { + "L0", + "math", + "math/cmplx", + "math/rand", + "sort", + "strconv", + "unicode/utf16", + "unicode/utf8", + }, + + // L2 adds Unicode and strings processing. + "bufio": {"L0", "unicode/utf8", "bytes"}, + "bytes": {"L0", "unicode", "unicode/utf8"}, + "path": {"L0", "unicode/utf8", "strings"}, + "strings": {"L0", "unicode", "unicode/utf8"}, + "unicode": {}, + + "L2": { + "L1", + "bufio", + "bytes", + "path", + "strings", + "unicode", + }, + + // L3 adds reflection and some basic utility packages + // and interface definitions, but nothing that makes + // system calls. + "crypto": {"L2", "hash"}, // interfaces + "crypto/cipher": {"L2"}, // interfaces + "encoding/base32": {"L2"}, + "encoding/base64": {"L2"}, + "encoding/binary": {"L2", "reflect"}, + "hash": {"L2"}, // interfaces + "hash/adler32": {"L2", "hash"}, + "hash/crc32": {"L2", "hash"}, + "hash/crc64": {"L2", "hash"}, + "hash/fnv": {"L2", "hash"}, + "image": {"L2", "image/color"}, // interfaces + "image/color": {"L2"}, // interfaces + "reflect": {"L2"}, + + "L3": { + "L2", + "crypto", + "crypto/cipher", + "encoding/base32", + "encoding/base64", + "encoding/binary", + "hash", + "hash/adler32", + "hash/crc32", + "hash/crc64", + "hash/fnv", + "image", + "image/color", + "reflect", + }, + + // End of linear dependency definitions. + + // Operating system access. + "syscall": {"L0", "unicode/utf16"}, + "time": {"L0", "syscall"}, + "os": {"L1", "os", "syscall", "time"}, + "path/filepath": {"L2", "os", "syscall"}, + "io/ioutil": {"L2", "os", "path/filepath", "time"}, + "os/exec": {"L2", "os", "syscall"}, + "os/signal": {"L2", "os", "syscall"}, + + // OS enables basic operating system functionality, + // but not direct use of package syscall, nor os/signal. + "OS": { + "io/ioutil", + "os", + "os/exec", + "path/filepath", + "time", + }, + + // Formatted I/O: few dependencies (L1) but we must add reflect. + "fmt": {"L1", "os", "reflect"}, + "log": {"L1", "os", "fmt", "time"}, + + // Packages used by testing must be low-level (L2+fmt). + "regexp": {"L2", "regexp/syntax"}, + "regexp/syntax": {"L2"}, + "runtime/debug": {"L2", "fmt", "io/ioutil", "os"}, + "runtime/pprof": {"L2", "fmt", "text/tabwriter"}, + "text/tabwriter": {"L2"}, + + "testing": {"L2", "flag", "fmt", "os", "runtime/pprof", "time"}, + "testing/iotest": {"L2", "log"}, + "testing/quick": {"L2", "flag", "fmt", "reflect"}, + + // L4 is defined as L3+fmt+log+time, because in general once + // you're using L3 packages, use of fmt, log, or time is not a big deal. + "L4": { + "L3", + "fmt", + "log", + "time", + }, + + // Go parser. + "go/ast": {"L4", "OS", "go/scanner", "go/token"}, + "go/doc": {"L4", "go/ast", "go/token", "regexp", "text/template"}, + "go/parser": {"L4", "OS", "go/ast", "go/scanner", "go/token"}, + "go/printer": {"L4", "OS", "go/ast", "go/scanner", "go/token", "text/tabwriter"}, + "go/scanner": {"L4", "OS", "go/token"}, + "go/token": {"L4"}, + + "GOPARSER": { + "go/ast", + "go/doc", + "go/parser", + "go/printer", + "go/scanner", + "go/token", + }, + + // One of a kind. + "archive/tar": {"L4", "OS"}, + "archive/zip": {"L4", "OS", "compress/flate"}, + "compress/bzip2": {"L4"}, + "compress/flate": {"L4"}, + "compress/gzip": {"L4", "compress/flate"}, + "compress/lzw": {"L4"}, + "compress/zlib": {"L4", "compress/flate"}, + "database/sql": {"L4", "database/sql/driver"}, + "database/sql/driver": {"L4", "time"}, + "debug/dwarf": {"L4"}, + "debug/elf": {"L4", "OS", "debug/dwarf"}, + "debug/gosym": {"L4"}, + "debug/macho": {"L4", "OS", "debug/dwarf"}, + "debug/pe": {"L4", "OS", "debug/dwarf"}, + "encoding/ascii85": {"L4"}, + "encoding/asn1": {"L4", "math/big"}, + "encoding/csv": {"L4"}, + "encoding/gob": {"L4", "OS"}, + "encoding/hex": {"L4"}, + "encoding/json": {"L4"}, + "encoding/pem": {"L4"}, + "encoding/xml": {"L4"}, + "flag": {"L4", "OS"}, + "go/build": {"L4", "OS", "GOPARSER"}, + "html": {"L4"}, + "image/draw": {"L4"}, + "image/gif": {"L4", "compress/lzw"}, + "image/jpeg": {"L4"}, + "image/png": {"L4", "compress/zlib"}, + "index/suffixarray": {"L4", "regexp"}, + "math/big": {"L4"}, + "mime": {"L4", "OS", "syscall"}, + "net/url": {"L4"}, + "text/scanner": {"L4", "OS"}, + "text/template/parse": {"L4"}, + + "html/template": { + "L4", "OS", "encoding/json", "html", "text/template", + "text/template/parse", + }, + "text/template": { + "L4", "OS", "net/url", "text/template/parse", + }, + + // Cgo. + "runtime/cgo": {"L0", "C"}, + "CGO": {"C", "runtime/cgo"}, + + // Fake entry to satisfy the pseudo-import "C" + // that shows up in programs that use cgo. + "C": {}, + + "os/user": {"L4", "CGO", "syscall"}, + + // Basic networking. + // Because net must be used by any package that wants to + // do networking portably, it must have a small dependency set: just L1+basic os. + "net": {"L1", "CGO", "os", "syscall", "time"}, + + // NET enables use of basic network-related packages. + "NET": { + "net", + "mime", + "net/textproto", + "net/url", + }, + + // Uses of networking. + "log/syslog": {"L4", "OS", "net"}, + "net/mail": {"L4", "NET", "OS"}, + "net/textproto": {"L4", "OS", "net"}, + + // Core crypto. + "crypto/aes": {"L3"}, + "crypto/des": {"L3"}, + "crypto/hmac": {"L3"}, + "crypto/md5": {"L3"}, + "crypto/rc4": {"L3"}, + "crypto/sha1": {"L3"}, + "crypto/sha256": {"L3"}, + "crypto/sha512": {"L3"}, + "crypto/subtle": {"L3"}, + + "CRYPTO": { + "crypto/aes", + "crypto/des", + "crypto/hmac", + "crypto/md5", + "crypto/rc4", + "crypto/sha1", + "crypto/sha256", + "crypto/sha512", + "crypto/subtle", + }, + + // Random byte, number generation. + // This would be part of core crypto except that it imports + // math/big, which imports fmt. + "crypto/rand": {"L4", "CRYPTO", "OS", "math/big", "syscall"}, + + // Mathematical crypto: dependencies on fmt (L4) and math/big. + // We could avoid some of the fmt, but math/big imports fmt anyway. + "crypto/dsa": {"L4", "CRYPTO", "math/big"}, + "crypto/ecdsa": {"L4", "CRYPTO", "crypto/elliptic", "math/big"}, + "crypto/elliptic": {"L4", "CRYPTO", "math/big"}, + "crypto/rsa": {"L4", "CRYPTO", "crypto/rand", "math/big"}, + + "CRYPTO-MATH": { + "CRYPTO", + "crypto/dsa", + "crypto/ecdsa", + "crypto/elliptic", + "crypto/rand", + "crypto/rsa", + "encoding/asn1", + "math/big", + }, + + // SSL/TLS. + "crypto/tls": { + "L4", "CRYPTO-MATH", "CGO", "OS", + "crypto/x509", "encoding/pem", "net", "syscall", + }, + "crypto/x509": {"L4", "CRYPTO-MATH", "OS", "CGO", "crypto/x509/pkix", "encoding/pem", "syscall"}, + "crypto/x509/pkix": {"L4", "CRYPTO-MATH"}, + + // Simple net+crypto-aware packages. + "mime/multipart": {"L4", "OS", "mime", "crypto/rand", "net/textproto"}, + "net/smtp": {"L4", "CRYPTO", "NET", "crypto/tls"}, + + // HTTP, kingpin of dependencies. + "net/http": { + "L4", "NET", "OS", + "compress/gzip", "crypto/tls", "mime/multipart", "runtime/debug", + }, + + // HTTP-using packages. + "expvar": {"L4", "OS", "encoding/json", "net/http"}, + "net/http/cgi": {"L4", "NET", "OS", "crypto/tls", "net/http", "regexp"}, + "net/http/fcgi": {"L4", "NET", "OS", "net/http", "net/http/cgi"}, + "net/http/httptest": {"L4", "NET", "OS", "crypto/tls", "flag", "net/http"}, + "net/http/httputil": {"L4", "NET", "OS", "net/http"}, + "net/http/pprof": {"L4", "OS", "html/template", "net/http", "runtime/pprof"}, + "net/rpc": {"L4", "NET", "encoding/gob", "net/http", "text/template"}, + "net/rpc/jsonrpc": {"L4", "NET", "encoding/json", "net/rpc"}, +} + +// isMacro reports whether p is a package dependency macro +// (uppercase name). +func isMacro(p string) bool { + return 'A' <= p[0] && p[0] <= 'Z' +} + +func allowed(pkg string) map[string]bool { + m := map[string]bool{} + var allow func(string) + allow = func(p string) { + if m[p] { + return + } + m[p] = true // set even for macros, to avoid loop on cycle + + // Upper-case names are macro-expanded. + if isMacro(p) { + for _, pp := range pkgDeps[p] { + allow(pp) + } + } + } + for _, pp := range pkgDeps[pkg] { + allow(pp) + } + return m +} + +var bools = []bool{false, true} +var geese = []string{"darwin", "freebsd", "linux", "netbsd", "openbsd", "plan9", "windows"} +var goarches = []string{"386", "amd64", "arm"} + +type osPkg struct { + goos, pkg string +} + +// allowedErrors are the operating systems and packages known to contain errors +// (currently just "no Go source files") +var allowedErrors = map[osPkg]bool{ + osPkg{"windows", "log/syslog"}: true, + osPkg{"plan9", "log/syslog"}: true, +} + +func TestDependencies(t *testing.T) { + var all []string + + for k := range pkgDeps { + all = append(all, k) + } + sort.Strings(all) + + ctxt := build.Default + test := func(mustImport bool) { + for _, pkg := range all { + if isMacro(pkg) { + continue + } + p, err := ctxt.Import(pkg, "", 0) + if err != nil { + if allowedErrors[osPkg{ctxt.GOOS, pkg}] { + continue + } + // Some of the combinations we try might not + // be reasonable (like arm,plan9,cgo), so ignore + // errors for the auto-generated combinations. + if !mustImport { + continue + } + t.Errorf("%s/%s/cgo=%v %v", ctxt.GOOS, ctxt.GOARCH, ctxt.CgoEnabled, err) + continue + } + ok := allowed(pkg) + var bad []string + for _, imp := range p.Imports { + if !ok[imp] { + bad = append(bad, imp) + } + } + if bad != nil { + t.Errorf("%s/%s/cgo=%v unexpected dependency: %s imports %v", ctxt.GOOS, ctxt.GOARCH, ctxt.CgoEnabled, pkg, bad) + } + } + } + test(true) + + if testing.Short() { + t.Logf("skipping other systems") + return + } + + for _, ctxt.GOOS = range geese { + for _, ctxt.GOARCH = range goarches { + for _, ctxt.CgoEnabled = range bools { + test(false) + } + } + } +} diff --git a/src/pkg/go/build/syslist.go b/src/pkg/go/build/syslist.go index 8a2db8fa3..ea21f3c74 100644 --- a/src/pkg/go/build/syslist.go +++ b/src/pkg/go/build/syslist.go @@ -1,4 +1,6 @@ -// Generated automatically by make. +// Copyright 2011 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. package build diff --git a/src/pkg/go/parser/error_test.go b/src/pkg/go/parser/error_test.go new file mode 100644 index 000000000..377c8b80c --- /dev/null +++ b/src/pkg/go/parser/error_test.go @@ -0,0 +1,166 @@ +// Copyright 2012 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. + +// This file implements a parser test harness. The files in the testdata +// directory are parsed and the errors reported are compared against the +// error messages expected in the test files. The test files must end in +// .src rather than .go so that they are not disturbed by gofmt runs. +// +// Expected errors are indicated in the test files by putting a comment +// of the form /* ERROR "rx" */ immediately following an offending token. +// The harness will verify that an error matching the regular expression +// rx is reported at that source position. +// +// For instance, the following test file indicates that a "not declared" +// error should be reported for the undeclared variable x: +// +// package p +// func f() { +// _ = x /* ERROR "not declared" */ + 1 +// } + +package parser + +import ( + "go/scanner" + "go/token" + "io/ioutil" + "path/filepath" + "regexp" + "strings" + "testing" +) + +const testdata = "testdata" + +// getFile assumes that each filename occurs at most once +func getFile(filename string) (file *token.File) { + fset.Iterate(func(f *token.File) bool { + if f.Name() == filename { + if file != nil { + panic(filename + " used multiple times") + } + file = f + } + return true + }) + return file +} + +func getPos(filename string, offset int) token.Pos { + if f := getFile(filename); f != nil { + return f.Pos(offset) + } + return token.NoPos +} + +// ERROR comments must be of the form /* ERROR "rx" */ and rx is +// a regular expression that matches the expected error message. +// +var errRx = regexp.MustCompile(`^/\* *ERROR *"([^"]*)" *\*/$`) + +// expectedErrors collects the regular expressions of ERROR comments found +// in files and returns them as a map of error positions to error messages. +// +func expectedErrors(t *testing.T, filename string, src []byte) map[token.Pos]string { + errors := make(map[token.Pos]string) + + var s scanner.Scanner + // file was parsed already - do not add it again to the file + // set otherwise the position information returned here will + // not match the position information collected by the parser + s.Init(getFile(filename), src, nil, scanner.ScanComments) + var prev token.Pos // position of last non-comment, non-semicolon token + + for { + pos, tok, lit := s.Scan() + switch tok { + case token.EOF: + return errors + case token.COMMENT: + s := errRx.FindStringSubmatch(lit) + if len(s) == 2 { + errors[prev] = string(s[1]) + } + default: + prev = pos + } + } + + panic("unreachable") +} + +// compareErrors compares the map of expected error messages with the list +// of found errors and reports discrepancies. +// +func compareErrors(t *testing.T, expected map[token.Pos]string, found scanner.ErrorList) { + for _, error := range found { + // error.Pos is a token.Position, but we want + // a token.Pos so we can do a map lookup + pos := getPos(error.Pos.Filename, error.Pos.Offset) + if msg, found := expected[pos]; found { + // we expect a message at pos; check if it matches + rx, err := regexp.Compile(msg) + if err != nil { + t.Errorf("%s: %v", error.Pos, err) + continue + } + if match := rx.MatchString(error.Msg); !match { + t.Errorf("%s: %q does not match %q", error.Pos, error.Msg, msg) + continue + } + // we have a match - eliminate this error + delete(expected, pos) + } else { + // To keep in mind when analyzing failed test output: + // If the same error position occurs multiple times in errors, + // this message will be triggered (because the first error at + // the position removes this position from the expected errors). + t.Errorf("%s: unexpected error: %s", error.Pos, error.Msg) + } + } + + // there should be no expected errors left + if len(expected) > 0 { + t.Errorf("%d errors not reported:", len(expected)) + for pos, msg := range expected { + t.Errorf("%s: %s\n", fset.Position(pos), msg) + } + } +} + +func checkErrors(t *testing.T, filename string, input interface{}) { + src, err := readSource(filename, input) + if err != nil { + t.Error(err) + return + } + + _, err = ParseFile(fset, filename, src, DeclarationErrors) + found, ok := err.(scanner.ErrorList) + if err != nil && !ok { + t.Error(err) + return + } + + // we are expecting the following errors + // (collect these after parsing a file so that it is found in the file set) + expected := expectedErrors(t, filename, src) + + // verify errors returned by the parser + compareErrors(t, expected, found) +} + +func TestErrors(t *testing.T) { + list, err := ioutil.ReadDir(testdata) + if err != nil { + t.Fatal(err) + } + for _, fi := range list { + name := fi.Name() + if !fi.IsDir() && !strings.HasPrefix(name, ".") && strings.HasSuffix(name, ".src") { + checkErrors(t, filepath.Join(testdata, name), nil) + } + } +} diff --git a/src/pkg/go/parser/parser.go b/src/pkg/go/parser/parser.go index a122baf08..e362e13a7 100644 --- a/src/pkg/go/parser/parser.go +++ b/src/pkg/go/parser/parser.go @@ -40,6 +40,13 @@ type parser struct { tok token.Token // one token look-ahead lit string // token literal + // Error recovery + // (used to limit the number of calls to syncXXX functions + // w/o making scanning progress - avoids potential endless + // loops across multiple parser functions during error recovery) + syncPos token.Pos // last synchronization position + syncCnt int // number of calls to syncXXX without progress + // Non-syntactic parser control exprLev int // < 0: in control clause, >= 0: in expression @@ -362,18 +369,36 @@ func (p *parser) expect(tok token.Token) token.Pos { // expectClosing is like expect but provides a better error message // for the common case of a missing comma before a newline. // -func (p *parser) expectClosing(tok token.Token, construct string) token.Pos { +func (p *parser) expectClosing(tok token.Token, context string) token.Pos { if p.tok != tok && p.tok == token.SEMICOLON && p.lit == "\n" { - p.error(p.pos, "missing ',' before newline in "+construct) + p.error(p.pos, "missing ',' before newline in "+context) p.next() } return p.expect(tok) } func (p *parser) expectSemi() { + // semicolon is optional before a closing ')' or '}' if p.tok != token.RPAREN && p.tok != token.RBRACE { - p.expect(token.SEMICOLON) + if p.tok == token.SEMICOLON { + p.next() + } else { + p.errorExpected(p.pos, "';'") + syncStmt(p) + } + } +} + +func (p *parser) atComma(context string) bool { + if p.tok == token.COMMA { + return true + } + if p.tok == token.SEMICOLON && p.lit == "\n" { + p.error(p.pos, "missing ',' before newline in "+context) + return true // "insert" the comma and continue + } + return false } func assert(cond bool, msg string) { @@ -382,6 +407,68 @@ func assert(cond bool, msg string) { } } +// syncStmt advances to the next statement. +// Used for synchronization after an error. +// +func syncStmt(p *parser) { + for { + switch p.tok { + case token.BREAK, token.CONST, token.CONTINUE, token.DEFER, + token.FALLTHROUGH, token.FOR, token.GO, token.GOTO, + token.IF, token.RETURN, token.SELECT, token.SWITCH, + token.TYPE, token.VAR: + // Return only if parser made some progress since last + // sync or if it has not reached 10 sync calls without + // progress. Otherwise consume at least one token to + // avoid an endless parser loop (it is possible that + // both parseOperand and parseStmt call syncStmt and + // correctly do not advance, thus the need for the + // invocation limit p.syncCnt). + if p.pos == p.syncPos && p.syncCnt < 10 { + p.syncCnt++ + return + } + if p.pos > p.syncPos { + p.syncPos = p.pos + p.syncCnt = 0 + return + } + // Reaching here indicates a parser bug, likely an + // incorrect token list in this function, but it only + // leads to skipping of possibly correct code if a + // previous error is present, and thus is preferred + // over a non-terminating parse. + case token.EOF: + return + } + p.next() + } +} + +// syncDecl advances to the next declaration. +// Used for synchronization after an error. +// +func syncDecl(p *parser) { + for { + switch p.tok { + case token.CONST, token.TYPE, token.VAR: + // see comments in syncStmt + if p.pos == p.syncPos && p.syncCnt < 10 { + p.syncCnt++ + return + } + if p.pos > p.syncPos { + p.syncPos = p.pos + p.syncCnt = 0 + return + } + case token.EOF: + return + } + p.next() + } +} + // ---------------------------------------------------------------------------- // Identifiers @@ -522,9 +609,11 @@ func (p *parser) makeIdentList(list []ast.Expr) []*ast.Ident { for i, x := range list { ident, isIdent := x.(*ast.Ident) if !isIdent { - pos := x.Pos() - p.errorExpected(pos, "identifier") - ident = &ast.Ident{NamePos: pos, Name: "_"} + if _, isBad := x.(*ast.BadExpr); !isBad { + // only report error if it's a new one + p.errorExpected(x.Pos(), "identifier") + } + ident = &ast.Ident{NamePos: x.Pos(), Name: "_"} } idents[i] = ident } @@ -688,7 +777,7 @@ func (p *parser) parseParameterList(scope *ast.Scope, ellipsisOk bool) (params [ // Go spec: The scope of an identifier denoting a function // parameter or result variable is the function body. p.declare(field, nil, scope, ast.Var, idents...) - if p.tok != token.COMMA { + if !p.atComma("parameter list") { break } p.next() @@ -991,19 +1080,19 @@ func (p *parser) parseOperand(lhs bool) ast.Expr { case token.FUNC: return p.parseFuncTypeOrLit() + } - default: - if typ := p.tryIdentOrType(true); typ != nil { - // could be type for composite literal or conversion - _, isIdent := typ.(*ast.Ident) - assert(!isIdent, "type cannot be identifier") - return typ - } + if typ := p.tryIdentOrType(true); typ != nil { + // could be type for composite literal or conversion + _, isIdent := typ.(*ast.Ident) + assert(!isIdent, "type cannot be identifier") + return typ } + // we have an error pos := p.pos p.errorExpected(pos, "operand") - p.next() // make progress + syncStmt(p) return &ast.BadExpr{From: pos, To: p.pos} } @@ -1078,7 +1167,7 @@ func (p *parser) parseCallOrConversion(fun ast.Expr) *ast.CallExpr { ellipsis = p.pos p.next() } - if p.tok != token.COMMA { + if !p.atComma("argument list") { break } p.next() @@ -1118,7 +1207,7 @@ func (p *parser) parseElementList() (list []ast.Expr) { for p.tok != token.RBRACE && p.tok != token.EOF { list = append(list, p.parseElement(true)) - if p.tok != token.COMMA { + if !p.atComma("composite literal") { break } p.next() @@ -1262,8 +1351,8 @@ L: x = p.parseTypeAssertion(p.checkExpr(x)) default: pos := p.pos - p.next() // make progress p.errorExpected(pos, "selector or type assertion") + p.next() // make progress x = &ast.BadExpr{From: pos, To: p.pos} } case token.LBRACK: @@ -1471,7 +1560,10 @@ func (p *parser) parseCallExpr() *ast.CallExpr { if call, isCall := x.(*ast.CallExpr); isCall { return call } - p.errorExpected(x.Pos(), "function/method call") + if _, isBad := x.(*ast.BadExpr); !isBad { + // only report error if it's a new one + p.errorExpected(x.Pos(), "function/method call") + } return nil } @@ -1862,7 +1954,7 @@ func (p *parser) parseStmt() (s ast.Stmt) { switch p.tok { case token.CONST, token.TYPE, token.VAR: - s = &ast.DeclStmt{Decl: p.parseDecl()} + s = &ast.DeclStmt{Decl: p.parseDecl(syncStmt)} case // tokens that may start an expression token.IDENT, token.INT, token.FLOAT, token.IMAG, token.CHAR, token.STRING, token.FUNC, token.LPAREN, // operands @@ -1904,7 +1996,7 @@ func (p *parser) parseStmt() (s ast.Stmt) { // no statement found pos := p.pos p.errorExpected(pos, "statement") - p.next() // make progress + syncStmt(p) s = &ast.BadStmt{From: pos, To: p.pos} } @@ -2095,8 +2187,13 @@ func (p *parser) parseReceiver(scope *ast.Scope) *ast.FieldList { recv := par.List[0] base := deref(recv.Type) if _, isIdent := base.(*ast.Ident); !isIdent { - p.errorExpected(base.Pos(), "(unqualified) identifier") - par.List = []*ast.Field{{Type: &ast.BadExpr{From: recv.Pos(), To: recv.End()}}} + if _, isBad := base.(*ast.BadExpr); !isBad { + // only report error if it's a new one + p.errorExpected(base.Pos(), "(unqualified) identifier") + } + par.List = []*ast.Field{ + {Type: &ast.BadExpr{From: recv.Pos(), To: recv.End()}}, + } } return par @@ -2152,7 +2249,7 @@ func (p *parser) parseFuncDecl() *ast.FuncDecl { return decl } -func (p *parser) parseDecl() ast.Decl { +func (p *parser) parseDecl(sync func(*parser)) ast.Decl { if p.trace { defer un(trace(p, "Declaration")) } @@ -2174,9 +2271,8 @@ func (p *parser) parseDecl() ast.Decl { default: pos := p.pos p.errorExpected(pos, "declaration") - p.next() // make progress - decl := &ast.BadDecl{From: pos, To: p.pos} - return decl + sync(p) + return &ast.BadDecl{From: pos, To: p.pos} } return p.parseGenDecl(p.tok, f) @@ -2215,7 +2311,7 @@ func (p *parser) parseFile() *ast.File { if p.mode&ImportsOnly == 0 { // rest of package body for p.tok != token.EOF { - decls = append(decls, p.parseDecl()) + decls = append(decls, p.parseDecl(syncDecl)) } } } diff --git a/src/pkg/go/parser/parser_test.go b/src/pkg/go/parser/parser_test.go index 93ca3d6aa..5e45acd00 100644 --- a/src/pkg/go/parser/parser_test.go +++ b/src/pkg/go/parser/parser_test.go @@ -14,87 +14,14 @@ import ( var fset = token.NewFileSet() -var illegalInputs = []interface{}{ - nil, - 3.14, - []byte(nil), - "foo!", - `package p; func f() { if /* should have condition */ {} };`, - `package p; func f() { if ; /* should have condition */ {} };`, - `package p; func f() { if f(); /* should have condition */ {} };`, - `package p; const c; /* should have constant value */`, - `package p; func f() { if _ = range x; true {} };`, - `package p; func f() { switch _ = range x; true {} };`, - `package p; func f() { for _ = range x ; ; {} };`, - `package p; func f() { for ; ; _ = range x {} };`, - `package p; func f() { for ; _ = range x ; {} };`, - `package p; func f() { switch t = t.(type) {} };`, - `package p; func f() { switch t, t = t.(type) {} };`, - `package p; func f() { switch t = t.(type), t {} };`, - `package p; var a = [1]int; /* illegal expression */`, - `package p; var a = [...]int; /* illegal expression */`, - `package p; var a = struct{} /* illegal expression */`, - `package p; var a = func(); /* illegal expression */`, - `package p; var a = interface{} /* illegal expression */`, - `package p; var a = []int /* illegal expression */`, - `package p; var a = map[int]int /* illegal expression */`, - `package p; var a = chan int; /* illegal expression */`, - `package p; var a = []int{[]int}; /* illegal expression */`, - `package p; var a = ([]int); /* illegal expression */`, - `package p; var a = a[[]int:[]int]; /* illegal expression */`, - `package p; var a = <- chan int; /* illegal expression */`, - `package p; func f() { select { case _ <- chan int: } };`, -} - -func TestParseIllegalInputs(t *testing.T) { - for _, src := range illegalInputs { - _, err := ParseFile(fset, "", src, 0) - if err == nil { - t.Errorf("ParseFile(%v) should have failed", src) - } - } -} - -var validPrograms = []string{ - "package p\n", - `package p;`, - `package p; import "fmt"; func f() { fmt.Println("Hello, World!") };`, - `package p; func f() { if f(T{}) {} };`, - `package p; func f() { _ = (<-chan int)(x) };`, - `package p; func f() { _ = (<-chan <-chan int)(x) };`, - `package p; func f(func() func() func());`, - `package p; func f(...T);`, - `package p; func f(float, ...int);`, - `package p; func f(x int, a ...int) { f(0, a...); f(1, a...,) };`, - `package p; func f(int,) {};`, - `package p; func f(...int,) {};`, - `package p; func f(x ...int,) {};`, - `package p; type T []int; var a []bool; func f() { if a[T{42}[0]] {} };`, - `package p; type T []int; func g(int) bool { return true }; func f() { if g(T{42}[0]) {} };`, - `package p; type T []int; func f() { for _ = range []int{T{42}[0]} {} };`, - `package p; var a = T{{1, 2}, {3, 4}}`, - `package p; func f() { select { case <- c: case c <- d: case c <- <- d: case <-c <- d: } };`, - `package p; func f() { select { case x := (<-c): } };`, - `package p; func f() { if ; true {} };`, - `package p; func f() { switch ; {} };`, - `package p; func f() { for _ = range "foo" + "bar" {} };`, -} - -func TestParseValidPrograms(t *testing.T) { - for _, src := range validPrograms { - _, err := ParseFile(fset, "", src, SpuriousErrors) - if err != nil { - t.Errorf("ParseFile(%q): %v", src, err) - } - } -} - var validFiles = []string{ "parser.go", "parser_test.go", + "error_test.go", + "short_test.go", } -func TestParse3(t *testing.T) { +func TestParse(t *testing.T) { for _, filename := range validFiles { _, err := ParseFile(fset, filename, nil, DeclarationErrors) if err != nil { @@ -116,7 +43,7 @@ func nameFilter(filename string) bool { func dirFilter(f os.FileInfo) bool { return nameFilter(f.Name()) } -func TestParse4(t *testing.T) { +func TestParseDir(t *testing.T) { path := "." pkgs, err := ParseDir(fset, path, dirFilter, 0) if err != nil { @@ -158,7 +85,7 @@ func TestParseExpr(t *testing.T) { } // it must not crash - for _, src := range validPrograms { + for _, src := range valids { ParseExpr(src) } } diff --git a/src/pkg/go/parser/short_test.go b/src/pkg/go/parser/short_test.go new file mode 100644 index 000000000..238492bf3 --- /dev/null +++ b/src/pkg/go/parser/short_test.go @@ -0,0 +1,75 @@ +// Copyright 2009 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. + +// This file contains test cases for short valid and invalid programs. + +package parser + +import "testing" + +var valids = []string{ + "package p\n", + `package p;`, + `package p; import "fmt"; func f() { fmt.Println("Hello, World!") };`, + `package p; func f() { if f(T{}) {} };`, + `package p; func f() { _ = (<-chan int)(x) };`, + `package p; func f() { _ = (<-chan <-chan int)(x) };`, + `package p; func f(func() func() func());`, + `package p; func f(...T);`, + `package p; func f(float, ...int);`, + `package p; func f(x int, a ...int) { f(0, a...); f(1, a...,) };`, + `package p; func f(int,) {};`, + `package p; func f(...int,) {};`, + `package p; func f(x ...int,) {};`, + `package p; type T []int; var a []bool; func f() { if a[T{42}[0]] {} };`, + `package p; type T []int; func g(int) bool { return true }; func f() { if g(T{42}[0]) {} };`, + `package p; type T []int; func f() { for _ = range []int{T{42}[0]} {} };`, + `package p; var a = T{{1, 2}, {3, 4}}`, + `package p; func f() { select { case <- c: case c <- d: case c <- <- d: case <-c <- d: } };`, + `package p; func f() { select { case x := (<-c): } };`, + `package p; func f() { if ; true {} };`, + `package p; func f() { switch ; {} };`, + `package p; func f() { for _ = range "foo" + "bar" {} };`, +} + +func TestValid(t *testing.T) { + for _, src := range valids { + checkErrors(t, src, src) + } +} + +var invalids = []string{ + `foo /* ERROR "expected 'package'" */ !`, + `package p; func f() { if { /* ERROR "expected operand" */ } };`, + `package p; func f() { if ; { /* ERROR "expected operand" */ } };`, + `package p; func f() { if f(); { /* ERROR "expected operand" */ } };`, + `package p; const c; /* ERROR "expected '='" */`, + `package p; func f() { if _ /* ERROR "expected condition" */ = range x; true {} };`, + `package p; func f() { switch _ /* ERROR "expected condition" */ = range x; true {} };`, + `package p; func f() { for _ = range x ; /* ERROR "expected '{'" */ ; {} };`, + `package p; func f() { for ; ; _ = range /* ERROR "expected operand" */ x {} };`, + `package p; func f() { for ; _ /* ERROR "expected condition" */ = range x ; {} };`, + `package p; func f() { switch t /* ERROR "expected condition" */ = t.(type) {} };`, + `package p; func f() { switch t /* ERROR "expected condition" */ , t = t.(type) {} };`, + `package p; func f() { switch t /* ERROR "expected condition" */ = t.(type), t {} };`, + `package p; var a = [ /* ERROR "expected expression" */ 1]int;`, + `package p; var a = [ /* ERROR "expected expression" */ ...]int;`, + `package p; var a = struct /* ERROR "expected expression" */ {}`, + `package p; var a = func /* ERROR "expected expression" */ ();`, + `package p; var a = interface /* ERROR "expected expression" */ {}`, + `package p; var a = [ /* ERROR "expected expression" */ ]int`, + `package p; var a = map /* ERROR "expected expression" */ [int]int`, + `package p; var a = chan /* ERROR "expected expression" */ int;`, + `package p; var a = []int{[ /* ERROR "expected expression" */ ]int};`, + `package p; var a = ( /* ERROR "expected expression" */ []int);`, + `package p; var a = a[[ /* ERROR "expected expression" */ ]int:[]int];`, + `package p; var a = <- /* ERROR "expected expression" */ chan int;`, + `package p; func f() { select { case _ <- chan /* ERROR "expected expression" */ int: } };`, +} + +func TestInvalid(t *testing.T) { + for _, src := range invalids { + checkErrors(t, src, src) + } +} diff --git a/src/pkg/go/parser/testdata/commas.src b/src/pkg/go/parser/testdata/commas.src new file mode 100644 index 000000000..af6e70645 --- /dev/null +++ b/src/pkg/go/parser/testdata/commas.src @@ -0,0 +1,19 @@ +// Copyright 2012 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. + +// Test case for error messages/parser synchronization +// after missing commas. + +package p + +var _ = []int{ + 0 /* ERROR "missing ','" */ +} + +var _ = []int{ + 0, + 1, + 2, + 3 /* ERROR "missing ','" */ +} diff --git a/src/pkg/go/parser/testdata/issue3106.src b/src/pkg/go/parser/testdata/issue3106.src new file mode 100644 index 000000000..82796c8ce --- /dev/null +++ b/src/pkg/go/parser/testdata/issue3106.src @@ -0,0 +1,46 @@ +// Copyright 2012 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. + +// Test case for issue 3106: Better synchronization of +// parser after certain syntax errors. + +package main + +func f() { + var m Mutex + c := MakeCond(&m) + percent := 0 + const step = 10 + for i := 0; i < 5; i++ { + go func() { + for { + // Emulates some useful work. + time.Sleep(1e8) + m.Lock() + defer + if /* ERROR "expected operand, found 'if'" */ percent == 100 { + m.Unlock() + break + } + percent++ + if percent % step == 0 { + //c.Signal() + } + m.Unlock() + } + }() + } + for { + m.Lock() + if percent == 0 || percent % step != 0 { + c.Wait() + } + fmt.Print(",") + if percent == 100 { + m.Unlock() + break + } + m.Unlock() + } +} diff --git a/src/pkg/go/printer/example_test.go b/src/pkg/go/printer/example_test.go new file mode 100644 index 000000000..e570040ba --- /dev/null +++ b/src/pkg/go/printer/example_test.go @@ -0,0 +1,67 @@ +// Copyright 2012 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. + +package printer_test + +import ( + "bytes" + "fmt" + "go/ast" + "go/parser" + "go/printer" + "go/token" + "strings" + "testing" +) + +// Dummy test function so that godoc does not use the entire file as example. +func Test(*testing.T) {} + +func parseFunc(filename, functionname string) (fun *ast.FuncDecl, fset *token.FileSet) { + fset = token.NewFileSet() + if file, err := parser.ParseFile(fset, filename, nil, 0); err == nil { + for _, d := range file.Decls { + if f, ok := d.(*ast.FuncDecl); ok && f.Name.Name == functionname { + fun = f + return + } + } + } + panic("function not found") +} + +func ExampleFprint() { + // Parse source file and extract the AST without comments for + // this function, with position information referring to the + // file set fset. + funcAST, fset := parseFunc("example_test.go", "ExampleFprint") + + // Print the function body into buffer buf. + // The file set is provided to the printer so that it knows + // about the original source formatting and can add additional + // line breaks where they were present in the source. + var buf bytes.Buffer + printer.Fprint(&buf, fset, funcAST.Body) + + // Remove braces {} enclosing the function body, unindent, + // and trim leading and trailing white space. + s := buf.String() + s = s[1 : len(s)-1] + s = strings.TrimSpace(strings.Replace(s, "\n\t", "\n", -1)) + + // Print the cleaned-up body text to stdout. + fmt.Println(s) + + // output: + // funcAST, fset := parseFunc("example_test.go", "ExampleFprint") + // + // var buf bytes.Buffer + // printer.Fprint(&buf, fset, funcAST.Body) + // + // s := buf.String() + // s = s[1 : len(s)-1] + // s = strings.TrimSpace(strings.Replace(s, "\n\t", "\n", -1)) + // + // fmt.Println(s) +} diff --git a/src/pkg/go/printer/nodes.go b/src/pkg/go/printer/nodes.go index 05b4ef59a..727d2a371 100644 --- a/src/pkg/go/printer/nodes.go +++ b/src/pkg/go/printer/nodes.go @@ -15,7 +15,7 @@ import ( "unicode/utf8" ) -// Other formatting issues: +// Formatting issues: // - better comment formatting for /*-style comments at the end of a line (e.g. a declaration) // when the comment spans multiple lines; if such a comment is just two lines, formatting is // not idempotent @@ -365,7 +365,7 @@ func (p *printer) setLineComment(text string) { } func (p *printer) isMultiLine(n ast.Node) bool { - return p.lineFor(n.End())-p.lineFor(n.Pos()) > 1 + return p.lineFor(n.End())-p.lineFor(n.Pos()) > 0 } func (p *printer) fieldList(fields *ast.FieldList, isStruct, isIncomplete bool) { @@ -964,6 +964,41 @@ func (p *printer) controlClause(isForStmt bool, init ast.Stmt, expr ast.Expr, po } } +// indentList reports whether an expression list would look better if it +// were indented wholesale (starting with the very first element, rather +// than starting at the first line break). +// +func (p *printer) indentList(list []ast.Expr) bool { + // Heuristic: indentList returns true if there are more than one multi- + // line element in the list, or if there is any element that is not + // starting on the same line as the previous one ends. + if len(list) >= 2 { + var b = p.lineFor(list[0].Pos()) + var e = p.lineFor(list[len(list)-1].End()) + if 0 < b && b < e { + // list spans multiple lines + n := 0 // multi-line element count + line := b + for _, x := range list { + xb := p.lineFor(x.Pos()) + xe := p.lineFor(x.End()) + if line < xb { + // x is not starting on the same + // line as the previous one ended + return true + } + if xb < xe { + // x is a multi-line element + n++ + } + line = xe + } + return n > 1 + } + } + return false +} + func (p *printer) stmt(stmt ast.Stmt, nextIsRBrace bool) { p.print(stmt.Pos()) @@ -1030,7 +1065,18 @@ func (p *printer) stmt(stmt ast.Stmt, nextIsRBrace bool) { p.print(token.RETURN) if s.Results != nil { p.print(blank) - p.exprList(s.Pos(), s.Results, 1, 0, token.NoPos) + // Use indentList heuristic to make corner cases look + // better (issue 1207). A more systematic approach would + // always indent, but this would cause significant + // reformatting of the code base and not necessarily + // lead to more nicely formatted code in general. + if p.indentList(s.Results) { + p.print(indent) + p.exprList(s.Pos(), s.Results, 1, noIndent, token.NoPos) + p.print(unindent) + } else { + p.exprList(s.Pos(), s.Results, 1, 0, token.NoPos) + } } case *ast.BranchStmt: @@ -1200,9 +1246,9 @@ func keepTypeColumn(specs []ast.Spec) []bool { return m } -func (p *printer) valueSpec(s *ast.ValueSpec, keepType, doIndent bool) { +func (p *printer) valueSpec(s *ast.ValueSpec, keepType bool) { p.setComment(s.Doc) - p.identList(s.Names, doIndent) // always present + p.identList(s.Names, false) // always present extraTabs := 3 if s.Type != nil || keepType { p.print(vtab) @@ -1290,7 +1336,7 @@ func (p *printer) genDecl(d *ast.GenDecl) { if i > 0 { p.linebreak(p.lineFor(s.Pos()), 1, ignore, newSection) } - p.valueSpec(s.(*ast.ValueSpec), keepType[i], false) + p.valueSpec(s.(*ast.ValueSpec), keepType[i]) newSection = p.isMultiLine(s) } } else { diff --git a/src/pkg/go/printer/testdata/declarations.golden b/src/pkg/go/printer/testdata/declarations.golden index 7ed7cb61a..71ed32ed1 100644 --- a/src/pkg/go/printer/testdata/declarations.golden +++ b/src/pkg/go/printer/testdata/declarations.golden @@ -500,7 +500,7 @@ type _ struct { type _ struct { a, b, - c, d int // this line should be indented + c, d int // this line should be indented u, v, w, x float // this line should be indented p, q, r, s float // this line should be indented @@ -562,10 +562,21 @@ var a2, b2, var ( a3, b3, - c3, d3 int // this line should be indented + c3, d3 int // this line should be indented a4, b4, c4 int // this line should be indented ) +// Test case from issue 3304: multi-line declarations must end +// a formatting section and not influence indentation of the +// next line. +var ( + minRefreshTimeSec = flag.Int64("min_refresh_time_sec", 604800, + "minimum time window between two refreshes for a given user.") + x = flag.Int64("refresh_user_rollout_percent", 100, + "temporary flag to ramp up the refresh user rpc") + aVeryLongVariableName = stats.GetVarInt("refresh-user-count") +) + func _() { var privateKey2 = &Block{Type: "RSA PRIVATE KEY", Headers: map[string]string{}, diff --git a/src/pkg/go/printer/testdata/declarations.input b/src/pkg/go/printer/testdata/declarations.input index df8c2b167..d74cff25d 100644 --- a/src/pkg/go/printer/testdata/declarations.input +++ b/src/pkg/go/printer/testdata/declarations.input @@ -577,6 +577,16 @@ c3, d3 int // this line should be indented a4, b4, c4 int // this line should be indented ) +// Test case from issue 3304: multi-line declarations must end +// a formatting section and not influence indentation of the +// next line. +var ( + minRefreshTimeSec = flag.Int64("min_refresh_time_sec", 604800, + "minimum time window between two refreshes for a given user.") + x = flag.Int64("refresh_user_rollout_percent", 100, + "temporary flag to ramp up the refresh user rpc") + aVeryLongVariableName = stats.GetVarInt("refresh-user-count") +) func _() { var privateKey2 = &Block{Type: "RSA PRIVATE KEY", diff --git a/src/pkg/go/printer/testdata/statements.golden b/src/pkg/go/printer/testdata/statements.golden index ffca21edb..4d70617bf 100644 --- a/src/pkg/go/printer/testdata/statements.golden +++ b/src/pkg/go/printer/testdata/statements.golden @@ -55,12 +55,24 @@ func _f() { return T{ 1, 2, - }, + }, nil + return T{ + 1, + 2, + }, + T{ + x: 3, + y: 4, + }, nil + return T{ + 1, + 2, + }, nil return T{ - 1, - 2, - }, + 1, + 2, + }, T{ x: 3, y: 4, @@ -70,10 +82,10 @@ func _f() { z return func() {} return func() { - _ = 0 - }, T{ - 1, 2, - } + _ = 0 + }, T{ + 1, 2, + } return func() { _ = 0 } @@ -84,6 +96,37 @@ func _f() { } } +// Formatting of multi-line returns: test cases from issue 1207. +func F() (*T, os.Error) { + return &T{ + X: 1, + Y: 2, + }, + nil +} + +func G() (*T, *T, os.Error) { + return &T{ + X: 1, + Y: 2, + }, + &T{ + X: 3, + Y: 4, + }, + nil +} + +func _() interface{} { + return &fileStat{ + name: basename(file.name), + size: mkSize(d.FileSizeHigh, d.FileSizeLow), + modTime: mkModTime(d.LastWriteTime), + mode: mkMode(d.FileAttributes), + sys: mkSysFromFI(&d), + }, nil +} + // Formatting of if-statement headers. func _() { if true { diff --git a/src/pkg/go/printer/testdata/statements.input b/src/pkg/go/printer/testdata/statements.input index 99945e955..bd03bc98b 100644 --- a/src/pkg/go/printer/testdata/statements.input +++ b/src/pkg/go/printer/testdata/statements.input @@ -55,6 +55,18 @@ func _f() { return T{ 1, 2, + }, nil + return T{ + 1, + 2, + }, + T{ + x: 3, + y: 4, + }, nil + return T{ + 1, + 2, }, nil return T{ @@ -84,6 +96,37 @@ func _f() { } } +// Formatting of multi-line returns: test cases from issue 1207. +func F() (*T, os.Error) { + return &T{ + X: 1, + Y: 2, + }, + nil +} + +func G() (*T, *T, os.Error) { + return &T{ + X: 1, + Y: 2, + }, + &T{ + X: 3, + Y: 4, + }, + nil +} + +func _() interface{} { + return &fileStat{ + name: basename(file.name), + size: mkSize(d.FileSizeHigh, d.FileSizeLow), + modTime: mkModTime(d.LastWriteTime), + mode: mkMode(d.FileAttributes), + sys: mkSysFromFI(&d), + }, nil +} + // Formatting of if-statement headers. func _() { if true {} diff --git a/src/pkg/go/scanner/scanner.go b/src/pkg/go/scanner/scanner.go index 2395363b0..da508747a 100644 --- a/src/pkg/go/scanner/scanner.go +++ b/src/pkg/go/scanner/scanner.go @@ -109,7 +109,7 @@ const ( func (s *Scanner) Init(file *token.File, src []byte, err ErrorHandler, mode Mode) { // Explicitly initialize all fields since a scanner may be reused. if file.Size() != len(src) { - panic("file size does not match src len") + panic(fmt.Sprintf("file size (%d) does not match src len (%d)", file.Size(), len(src))) } s.file = file s.dir, _ = filepath.Split(file.Name()) diff --git a/src/pkg/html/template/clone_test.go b/src/pkg/html/template/clone_test.go index c612775d4..2663cddc2 100644 --- a/src/pkg/html/template/clone_test.go +++ b/src/pkg/html/template/clone_test.go @@ -113,3 +113,36 @@ func TestClone(t *testing.T) { t.Errorf("t3: got %q want %q", got, want) } } + +func TestTemplates(t *testing.T) { + names := []string{"t0", "a", "lhs", "rhs"} + // Some template definitions borrowed from TestClone. + const tmpl = ` + {{define "a"}}{{template "lhs"}}{{.}}{{template "rhs"}}{{end}} + {{define "lhs"}} <a href=" {{end}} + {{define "rhs"}} "></a> {{end}}` + t0 := Must(New("t0").Parse(tmpl)) + templates := t0.Templates() + if len(templates) != len(names) { + t.Errorf("expected %d templates; got %d", len(names), len(templates)) + } + for _, name := range names { + found := false + for _, tmpl := range templates { + if name == tmpl.text.Name() { + found = true + break + } + } + if !found { + t.Error("could not find template", name) + } + } +} + +// This used to crash; http://golang.org/issue/3281 +func TestCloneCrash(t *testing.T) { + t1 := New("all") + Must(t1.New("t1").Parse(`{{define "foo"}}foo{{end}}`)) + t1.Clone() +} diff --git a/src/pkg/html/template/content.go b/src/pkg/html/template/content.go index 539664f97..c1bd2e494 100644 --- a/src/pkg/html/template/content.go +++ b/src/pkg/html/template/content.go @@ -26,10 +26,10 @@ type ( HTML string // HTMLAttr encapsulates an HTML attribute from a trusted source, - // for example: ` dir="ltr"`. + // for example, ` dir="ltr"`. HTMLAttr string - // JS encapsulates a known safe EcmaScript5 Expression, or example, + // JS encapsulates a known safe EcmaScript5 Expression, for example, // `(x + y * z())`. // Template authors are responsible for ensuring that typed expressions // do not break the intended precedence and that there is no diff --git a/src/pkg/html/template/doc.go b/src/pkg/html/template/doc.go index 3699ea1a9..f470facfd 100644 --- a/src/pkg/html/template/doc.go +++ b/src/pkg/html/template/doc.go @@ -29,7 +29,7 @@ can be safely embedded in an HTML document. The escaping is contextual, so actions can appear within JavaScript, CSS, and URI contexts. The security model used by this package assumes that template authors are -trusted, while text/template Execute's data parameter is not. More details are +trusted, while Execute's data parameter is not. More details are provided below. Example diff --git a/src/pkg/html/template/escape.go b/src/pkg/html/template/escape.go index a058e20d7..5f0e28e8c 100644 --- a/src/pkg/html/template/escape.go +++ b/src/pkg/html/template/escape.go @@ -8,6 +8,7 @@ import ( "bytes" "fmt" "html" + "io" "text/template" "text/template/parse" ) @@ -751,3 +752,44 @@ func (e *escaper) template(name string) *template.Template { } return t } + +// Forwarding functions so that clients need only import this package +// to reach the general escaping functions of text/template. + +// HTMLEscape writes to w the escaped HTML equivalent of the plain text data b. +func HTMLEscape(w io.Writer, b []byte) { + template.HTMLEscape(w, b) +} + +// HTMLEscapeString returns the escaped HTML equivalent of the plain text data s. +func HTMLEscapeString(s string) string { + return template.HTMLEscapeString(s) +} + +// HTMLEscaper returns the escaped HTML equivalent of the textual +// representation of its arguments. +func HTMLEscaper(args ...interface{}) string { + return template.HTMLEscaper(args...) +} + +// JSEscape writes to w the escaped JavaScript equivalent of the plain text data b. +func JSEscape(w io.Writer, b []byte) { + template.JSEscape(w, b) +} + +// JSEscapeString returns the escaped JavaScript equivalent of the plain text data s. +func JSEscapeString(s string) string { + return template.JSEscapeString(s) +} + +// JSEscaper returns the escaped JavaScript equivalent of the textual +// representation of its arguments. +func JSEscaper(args ...interface{}) string { + return template.JSEscaper(args...) +} + +// URLQueryEscaper returns the escaped value of the textual representation of +// its arguments in a form suitable for embedding in a URL query. +func URLQueryEscaper(args ...interface{}) string { + return template.URLQueryEscaper(args...) +} diff --git a/src/pkg/html/template/escape_test.go b/src/pkg/html/template/escape_test.go index 2bbb1b1bc..ce12c1795 100644 --- a/src/pkg/html/template/escape_test.go +++ b/src/pkg/html/template/escape_test.go @@ -8,6 +8,7 @@ import ( "bytes" "encoding/json" "fmt" + "os" "strings" "testing" "text/template" @@ -1637,6 +1638,14 @@ func TestIndirectPrint(t *testing.T) { } } +// This is a test for issue 3272. +func TestEmptyTemplate(t *testing.T) { + page := Must(New("page").ParseFiles(os.DevNull)) + if err := page.ExecuteTemplate(os.Stdout, "page", "nothing"); err == nil { + t.Fatal("expected error") + } +} + func BenchmarkEscapedExecute(b *testing.B) { tmpl := Must(New("t").Parse(`<a onclick="alert('{{.}}')">{{.}}</a>`)) var buf bytes.Buffer diff --git a/src/pkg/html/template/template.go b/src/pkg/html/template/template.go index b0bae7a54..edac7335c 100644 --- a/src/pkg/html/template/template.go +++ b/src/pkg/html/template/template.go @@ -31,6 +31,20 @@ type nameSpace struct { set map[string]*Template } +// Templates returns a slice of the templates associated with t, including t +// itself. +func (t *Template) Templates() []*Template { + ns := t.nameSpace + ns.mu.Lock() + defer ns.mu.Unlock() + // Return a slice so we don't expose the map. + m := make([]*Template, 0, len(ns.set)) + for _, v := range ns.set { + m = append(m, v) + } + return m +} + // Execute applies a parsed template to the specified data object, // writing the output to wr. func (t *Template) Execute(wr io.Writer, data interface{}) (err error) { @@ -64,7 +78,13 @@ func (t *Template) lookupAndEscapeTemplate(name string) (tmpl *Template, err err t.nameSpace.mu.Lock() defer t.nameSpace.mu.Unlock() tmpl = t.set[name] - if (tmpl == nil) != (t.text.Lookup(name) == nil) { + if tmpl == nil { + return nil, fmt.Errorf("html/template: %q is undefined", name) + } + if tmpl.text.Tree == nil || tmpl.text.Root == nil { + return nil, fmt.Errorf("html/template: %q is an incomplete template", name) + } + if t.text.Lookup(name) == nil { panic("html/template internal error: template escaping out of sync") } if tmpl != nil && !tmpl.escaped { @@ -160,9 +180,11 @@ func (t *Template) Clone() (*Template, error) { if src == nil || src.escaped { return nil, fmt.Errorf("html/template: cannot Clone %q after it has executed", t.Name()) } - x.Tree = &parse.Tree{ - Name: x.Tree.Name, - Root: x.Tree.Root.CopyList(), + if x.Tree != nil { + x.Tree = &parse.Tree{ + Name: x.Tree.Name, + Root: x.Tree.Root.CopyList(), + } } ret.set[name] = &Template{ false, @@ -274,7 +296,7 @@ func (t *Template) ParseFiles(filenames ...string) (*Template, error) { func parseFiles(t *Template, filenames ...string) (*Template, error) { if len(filenames) == 0 { // Not really a problem, but be consistent. - return nil, fmt.Errorf("template: no files named in call to ParseFiles") + return nil, fmt.Errorf("html/template: no files named in call to ParseFiles") } for _, filename := range filenames { b, err := ioutil.ReadFile(filename) @@ -331,7 +353,7 @@ func parseGlob(t *Template, pattern string) (*Template, error) { return nil, err } if len(filenames) == 0 { - return nil, fmt.Errorf("template: pattern matches no files: %#q", pattern) + return nil, fmt.Errorf("html/template: pattern matches no files: %#q", pattern) } return parseFiles(t, filenames...) } diff --git a/src/pkg/image/draw/draw.go b/src/pkg/image/draw/draw.go index 3b6679f7c..bef325c0c 100644 --- a/src/pkg/image/draw/draw.go +++ b/src/pkg/image/draw/draw.go @@ -5,7 +5,7 @@ // Package draw provides image composition functions. // // See "The Go image/draw package" for an introduction to this package: -// http://blog.golang.org/2011/09/go-imagedraw-package.html +// http://golang.org/doc/articles/image_draw.html package draw import ( diff --git a/src/pkg/index/suffixarray/qsufsort.go b/src/pkg/index/suffixarray/qsufsort.go index c69be43c2..9c36a98f8 100644 --- a/src/pkg/index/suffixarray/qsufsort.go +++ b/src/pkg/index/suffixarray/qsufsort.go @@ -11,7 +11,7 @@ // Consecutive groups of suffixes in sa are labeled as sorted groups or // unsorted groups. For a given pass of the sorter, all suffixes are ordered // up to their first h characters, and sa is h-ordered. Suffixes in their -// final positions and unambiguouly sorted in h-order are in a sorted group. +// final positions and unambiguously sorted in h-order are in a sorted group. // Consecutive groups of suffixes with identical first h characters are an // unsorted group. In each pass of the algorithm, unsorted groups are sorted // according to the group number of their following suffix. @@ -78,7 +78,7 @@ func sortedByFirstByte(data []byte) []int { for _, b := range data { count[b]++ } - // make count[b] equal index of first occurence of b in sorted array + // make count[b] equal index of first occurrence of b in sorted array sum := 0 for b := range count { count[b], sum = sum, count[b]+sum diff --git a/src/pkg/io/io.go b/src/pkg/io/io.go index 7074834d6..54bf159eb 100644 --- a/src/pkg/io/io.go +++ b/src/pkg/io/io.go @@ -173,6 +173,13 @@ type ReaderAt interface { // at offset off. It returns the number of bytes written from p (0 <= n <= len(p)) // and any error encountered that caused the write to stop early. // WriteAt must return a non-nil error if it returns n < len(p). +// +// If WriteAt is writing to a destination with a seek offset, +// WriteAt should not affect nor be affected by the underlying +// seek offset. +// +// Clients of WriteAt can execute parallel WriteAt calls on the same +// destination if the ranges do not overlap. type WriterAt interface { WriteAt(p []byte, off int64) (n int, err error) } diff --git a/src/pkg/io/ioutil/ioutil.go b/src/pkg/io/ioutil/ioutil.go index 180afc2c2..f072b8c75 100644 --- a/src/pkg/io/ioutil/ioutil.go +++ b/src/pkg/io/ioutil/ioutil.go @@ -53,10 +53,13 @@ func ReadFile(filename string) ([]byte, error) { defer f.Close() // It's a good but not certain bet that FileInfo will tell us exactly how much to // read, so let's try it but be prepared for the answer to be wrong. - fi, err := f.Stat() var n int64 - if size := fi.Size(); err == nil && size < 2e9 { // Don't preallocate a huge buffer, just in case. - n = size + + if fi, err := f.Stat(); err == nil { + // Don't preallocate a huge buffer, just in case. + if size := fi.Size(); size < 1e9 { + n = size + } } // As initial capacity for readAll, use n + a little extra in case Size is zero, // and to avoid another allocation after Read has filled the buffer. The readAll diff --git a/src/pkg/log/log.go b/src/pkg/log/log.go index a5d88fd9b..1d7f209d1 100644 --- a/src/pkg/log/log.go +++ b/src/pkg/log/log.go @@ -13,7 +13,6 @@ package log import ( - "bytes" "fmt" "io" "os" @@ -28,7 +27,7 @@ const ( // order they appear (the order listed here) or the format they present (as // described in the comments). A colon appears after these items: // 2009/0123 01:23:23.123123 /a/b/c/d.go:23: message - Ldate = 1 << iota // the date: 2009/0123 + Ldate = 1 << iota // the date: 2009/01/23 Ltime // the time: 01:23:23 Lmicroseconds // microsecond resolution: 01:23:23.123123. assumes Ltime. Llongfile // full file name and line number: /a/b/c/d.go:23 @@ -41,11 +40,11 @@ const ( // the Writer's Write method. A Logger can be used simultaneously from // multiple goroutines; it guarantees to serialize access to the Writer. type Logger struct { - mu sync.Mutex // ensures atomic writes; protects the following fields - prefix string // prefix to write at beginning of each line - flag int // properties - out io.Writer // destination for output - buf bytes.Buffer // for accumulating text to write + mu sync.Mutex // ensures atomic writes; protects the following fields + prefix string // prefix to write at beginning of each line + flag int // properties + out io.Writer // destination for output + buf []byte // for accumulating text to write } // New creates a new Logger. The out variable sets the @@ -60,10 +59,10 @@ var std = New(os.Stderr, "", LstdFlags) // Cheap integer to fixed-width decimal ASCII. Give a negative width to avoid zero-padding. // Knows the buffer has capacity. -func itoa(buf *bytes.Buffer, i int, wid int) { +func itoa(buf *[]byte, i int, wid int) { var u uint = uint(i) if u == 0 && wid <= 1 { - buf.WriteByte('0') + *buf = append(*buf, '0') return } @@ -75,38 +74,33 @@ func itoa(buf *bytes.Buffer, i int, wid int) { wid-- b[bp] = byte(u%10) + '0' } - - // avoid slicing b to avoid an allocation. - for bp < len(b) { - buf.WriteByte(b[bp]) - bp++ - } + *buf = append(*buf, b[bp:]...) } -func (l *Logger) formatHeader(buf *bytes.Buffer, t time.Time, file string, line int) { - buf.WriteString(l.prefix) +func (l *Logger) formatHeader(buf *[]byte, t time.Time, file string, line int) { + *buf = append(*buf, l.prefix...) if l.flag&(Ldate|Ltime|Lmicroseconds) != 0 { if l.flag&Ldate != 0 { year, month, day := t.Date() itoa(buf, year, 4) - buf.WriteByte('/') + *buf = append(*buf, '/') itoa(buf, int(month), 2) - buf.WriteByte('/') + *buf = append(*buf, '/') itoa(buf, day, 2) - buf.WriteByte(' ') + *buf = append(*buf, ' ') } if l.flag&(Ltime|Lmicroseconds) != 0 { hour, min, sec := t.Clock() itoa(buf, hour, 2) - buf.WriteByte(':') + *buf = append(*buf, ':') itoa(buf, min, 2) - buf.WriteByte(':') + *buf = append(*buf, ':') itoa(buf, sec, 2) if l.flag&Lmicroseconds != 0 { - buf.WriteByte('.') + *buf = append(*buf, '.') itoa(buf, t.Nanosecond()/1e3, 6) } - buf.WriteByte(' ') + *buf = append(*buf, ' ') } } if l.flag&(Lshortfile|Llongfile) != 0 { @@ -120,10 +114,10 @@ func (l *Logger) formatHeader(buf *bytes.Buffer, t time.Time, file string, line } file = short } - buf.WriteString(file) - buf.WriteByte(':') + *buf = append(*buf, file...) + *buf = append(*buf, ':') itoa(buf, line, -1) - buf.WriteString(": ") + *buf = append(*buf, ": "...) } } @@ -150,13 +144,13 @@ func (l *Logger) Output(calldepth int, s string) error { } l.mu.Lock() } - l.buf.Reset() + l.buf = l.buf[:0] l.formatHeader(&l.buf, now, file, line) - l.buf.WriteString(s) + l.buf = append(l.buf, s...) if len(s) > 0 && s[len(s)-1] != '\n' { - l.buf.WriteByte('\n') + l.buf = append(l.buf, '\n') } - _, err := l.out.Write(l.buf.Bytes()) + _, err := l.out.Write(l.buf) return err } diff --git a/test/bugs/424.go b/src/pkg/log/syslog/syslog_windows.go index b22776086..8d99e2e59 100644 --- a/test/bugs/424.go +++ b/src/pkg/log/syslog/syslog_windows.go @@ -1,9 +1,8 @@ -// $G $D/$F.dir/lib.go && $G $D/$F.dir/main.go && $L main.$A && $A.out - // Copyright 2012 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. -// Test case for embedded method invocation. +// Package syslog provides a simple interface to the system log service. +package syslog -ignored +// BUG(brainman): This package is not implemented on Windows yet. diff --git a/src/pkg/math/big/nat.go b/src/pkg/math/big/nat.go index da1ac944c..0bc6572b9 100644 --- a/src/pkg/math/big/nat.go +++ b/src/pkg/math/big/nat.go @@ -826,7 +826,7 @@ func (x nat) string(charset string) string { // iterative approach. This threshold is represented by leafSize. Benchmarking of leafSize in the // range 2..64 shows that values of 8 and 16 work well, with a 4x speedup at medium lengths and // ~30x for 20000 digits. Use nat_test.go's BenchmarkLeafSize tests to optimize leafSize for -// specfic hardware. +// specific hardware. // func (q nat) convertWords(s []byte, charset string, b Word, ndigits int, bb Word, table []divisor) { // split larger blocks recursively diff --git a/src/pkg/math/erf.go b/src/pkg/math/erf.go index 87c70c251..c6f32bdbe 100644 --- a/src/pkg/math/erf.go +++ b/src/pkg/math/erf.go @@ -248,7 +248,7 @@ func Erf(x float64) float64 { R = rb0 + s*(rb1+s*(rb2+s*(rb3+s*(rb4+s*(rb5+s*rb6))))) S = 1 + s*(sb1+s*(sb2+s*(sb3+s*(sb4+s*(sb5+s*(sb6+s*sb7)))))) } - z := Float64frombits(Float64bits(x) & 0xffffffff00000000) // pseudo-single (20-bit) precison x + z := Float64frombits(Float64bits(x) & 0xffffffff00000000) // pseudo-single (20-bit) precision x r := Exp(-z*z-0.5625) * Exp((z-x)*(z+x)+R/S) if sign { return r/x - 1 @@ -321,7 +321,7 @@ func Erfc(x float64) float64 { R = rb0 + s*(rb1+s*(rb2+s*(rb3+s*(rb4+s*(rb5+s*rb6))))) S = 1 + s*(sb1+s*(sb2+s*(sb3+s*(sb4+s*(sb5+s*(sb6+s*sb7)))))) } - z := Float64frombits(Float64bits(x) & 0xffffffff00000000) // pseudo-single (20-bit) precison x + z := Float64frombits(Float64bits(x) & 0xffffffff00000000) // pseudo-single (20-bit) precision x r := Exp(-z*z-0.5625) * Exp((z-x)*(z+x)+R/S) if sign { return 2 - r/x diff --git a/src/pkg/net/dial_test.go b/src/pkg/net/dial_test.go index 5f5aea146..7212087fe 100644 --- a/src/pkg/net/dial_test.go +++ b/src/pkg/net/dial_test.go @@ -6,6 +6,7 @@ package net import ( "flag" + "fmt" "regexp" "runtime" "testing" @@ -32,7 +33,7 @@ func TestDialTimeout(t *testing.T) { numConns := listenerBacklog + 10 // TODO(bradfitz): It's hard to test this in a portable - // way. This is unforunate, but works for now. + // way. This is unfortunate, but works for now. switch runtime.GOOS { case "linux": // The kernel will start accepting TCP connections before userspace @@ -44,13 +45,25 @@ func TestDialTimeout(t *testing.T) { errc <- err }() } - case "darwin": + case "darwin", "windows": // At least OS X 10.7 seems to accept any number of // connections, ignoring listen's backlog, so resort // to connecting to a hopefully-dead 127/8 address. // Same for windows. + // + // Use an IANA reserved port (49151) instead of 80, because + // on our 386 builder, this Dial succeeds, connecting + // to an IIS web server somewhere. The data center + // or VM or firewall must be stealing the TCP connection. + // + // IANA Service Name and Transport Protocol Port Number Registry + // <http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xml> go func() { - _, err := DialTimeout("tcp", "127.0.71.111:80", 200*time.Millisecond) + c, err := DialTimeout("tcp", "127.0.71.111:49151", 200*time.Millisecond) + if err == nil { + err = fmt.Errorf("unexpected: connected to %s!", c.RemoteAddr()) + c.Close() + } errc <- err }() default: diff --git a/src/pkg/net/dnsclient.go b/src/pkg/net/dnsclient.go index f4ed8b87c..e69cb3188 100644 --- a/src/pkg/net/dnsclient.go +++ b/src/pkg/net/dnsclient.go @@ -5,8 +5,6 @@ package net import ( - "bytes" - "fmt" "math/rand" "sort" ) @@ -45,20 +43,22 @@ func reverseaddr(addr string) (arpa string, err error) { return "", &DNSError{Err: "unrecognized address", Name: addr} } if ip.To4() != nil { - return fmt.Sprintf("%d.%d.%d.%d.in-addr.arpa.", ip[15], ip[14], ip[13], ip[12]), nil + return itoa(int(ip[15])) + "." + itoa(int(ip[14])) + "." + itoa(int(ip[13])) + "." + + itoa(int(ip[12])) + ".in-addr.arpa.", nil } // Must be IPv6 - var buf bytes.Buffer + buf := make([]byte, 0, len(ip)*4+len("ip6.arpa.")) // Add it, in reverse, to the buffer for i := len(ip) - 1; i >= 0; i-- { - s := fmt.Sprintf("%02x", ip[i]) - buf.WriteByte(s[1]) - buf.WriteByte('.') - buf.WriteByte(s[0]) - buf.WriteByte('.') + v := ip[i] + buf = append(buf, hexDigit[v&0xF]) + buf = append(buf, '.') + buf = append(buf, hexDigit[v>>4]) + buf = append(buf, '.') } // Append "ip6.arpa." and return (buf already has the final .) - return buf.String() + "ip6.arpa.", nil + buf = append(buf, "ip6.arpa."...) + return string(buf), nil } // Find answer for name in dns message. diff --git a/src/pkg/net/dnsmsg.go b/src/pkg/net/dnsmsg.go index 97c506210..b6ebe1173 100644 --- a/src/pkg/net/dnsmsg.go +++ b/src/pkg/net/dnsmsg.go @@ -7,11 +7,10 @@ // This is intended to support name resolution during Dial. // It doesn't have to be blazing fast. // -// Rather than write the usual handful of routines to pack and -// unpack every message that can appear on the wire, we use -// reflection to write a generic pack/unpack for structs and then -// use it. Thus, if in the future we need to define new message -// structs, no new pack/unpack/printing code needs to be written. +// Each message structure has a Walk method that is used by +// a generic pack/unpack routine. Thus, if in the future we need +// to define new message structs, no new pack/unpack/printing code +// needs to be written. // // The first half of this file defines the DNS message formats. // The second half implements the conversion to and from wire format. @@ -23,12 +22,6 @@ package net -import ( - "fmt" - "os" - "reflect" -) - // Packet formats // Wire constants. @@ -75,6 +68,20 @@ const ( dnsRcodeRefused = 5 ) +// A dnsStruct describes how to iterate over its fields to emulate +// reflective marshalling. +type dnsStruct interface { + // Walk iterates over fields of a structure and calls f + // with a reference to that field, the name of the field + // and a tag ("", "domain", "ipv4", "ipv6") specifying + // particular encodings. Possible concrete types + // for v are *uint16, *uint32, *string, or []byte, and + // *int, *bool in the case of dnsMsgHdr. + // Whenever f returns false, Walk must stop and return + // false, and otherwise return true. + Walk(f func(v interface{}, name, tag string) (ok bool)) (ok bool) +} + // The wire format for the DNS packet header. type dnsHeader struct { Id uint16 @@ -82,6 +89,15 @@ type dnsHeader struct { Qdcount, Ancount, Nscount, Arcount uint16 } +func (h *dnsHeader) Walk(f func(v interface{}, name, tag string) bool) bool { + return f(&h.Id, "Id", "") && + f(&h.Bits, "Bits", "") && + f(&h.Qdcount, "Qdcount", "") && + f(&h.Ancount, "Ancount", "") && + f(&h.Nscount, "Nscount", "") && + f(&h.Arcount, "Arcount", "") +} + const ( // dnsHeader.Bits _QR = 1 << 15 // query/response (response=1) @@ -98,6 +114,12 @@ type dnsQuestion struct { Qclass uint16 } +func (q *dnsQuestion) Walk(f func(v interface{}, name, tag string) bool) bool { + return f(&q.Name, "Name", "domain") && + f(&q.Qtype, "Qtype", "") && + f(&q.Qclass, "Qclass", "") +} + // DNS responses (resource records). // There are many types of messages, // but they all share the same header. @@ -113,7 +135,16 @@ func (h *dnsRR_Header) Header() *dnsRR_Header { return h } +func (h *dnsRR_Header) Walk(f func(v interface{}, name, tag string) bool) bool { + return f(&h.Name, "Name", "domain") && + f(&h.Rrtype, "Rrtype", "") && + f(&h.Class, "Class", "") && + f(&h.Ttl, "Ttl", "") && + f(&h.Rdlength, "Rdlength", "") +} + type dnsRR interface { + dnsStruct Header() *dnsRR_Header } @@ -128,6 +159,10 @@ func (rr *dnsRR_CNAME) Header() *dnsRR_Header { return &rr.Hdr } +func (rr *dnsRR_CNAME) Walk(f func(v interface{}, name, tag string) bool) bool { + return rr.Hdr.Walk(f) && f(&rr.Cname, "Cname", "domain") +} + type dnsRR_HINFO struct { Hdr dnsRR_Header Cpu string @@ -138,6 +173,10 @@ func (rr *dnsRR_HINFO) Header() *dnsRR_Header { return &rr.Hdr } +func (rr *dnsRR_HINFO) Walk(f func(v interface{}, name, tag string) bool) bool { + return rr.Hdr.Walk(f) && f(&rr.Cpu, "Cpu", "") && f(&rr.Os, "Os", "") +} + type dnsRR_MB struct { Hdr dnsRR_Header Mb string `net:"domain-name"` @@ -147,6 +186,10 @@ func (rr *dnsRR_MB) Header() *dnsRR_Header { return &rr.Hdr } +func (rr *dnsRR_MB) Walk(f func(v interface{}, name, tag string) bool) bool { + return rr.Hdr.Walk(f) && f(&rr.Mb, "Mb", "domain") +} + type dnsRR_MG struct { Hdr dnsRR_Header Mg string `net:"domain-name"` @@ -156,6 +199,10 @@ func (rr *dnsRR_MG) Header() *dnsRR_Header { return &rr.Hdr } +func (rr *dnsRR_MG) Walk(f func(v interface{}, name, tag string) bool) bool { + return rr.Hdr.Walk(f) && f(&rr.Mg, "Mg", "domain") +} + type dnsRR_MINFO struct { Hdr dnsRR_Header Rmail string `net:"domain-name"` @@ -166,6 +213,10 @@ func (rr *dnsRR_MINFO) Header() *dnsRR_Header { return &rr.Hdr } +func (rr *dnsRR_MINFO) Walk(f func(v interface{}, name, tag string) bool) bool { + return rr.Hdr.Walk(f) && f(&rr.Rmail, "Rmail", "domain") && f(&rr.Email, "Email", "domain") +} + type dnsRR_MR struct { Hdr dnsRR_Header Mr string `net:"domain-name"` @@ -175,6 +226,10 @@ func (rr *dnsRR_MR) Header() *dnsRR_Header { return &rr.Hdr } +func (rr *dnsRR_MR) Walk(f func(v interface{}, name, tag string) bool) bool { + return rr.Hdr.Walk(f) && f(&rr.Mr, "Mr", "domain") +} + type dnsRR_MX struct { Hdr dnsRR_Header Pref uint16 @@ -185,6 +240,10 @@ func (rr *dnsRR_MX) Header() *dnsRR_Header { return &rr.Hdr } +func (rr *dnsRR_MX) Walk(f func(v interface{}, name, tag string) bool) bool { + return rr.Hdr.Walk(f) && f(&rr.Pref, "Pref", "") && f(&rr.Mx, "Mx", "domain") +} + type dnsRR_NS struct { Hdr dnsRR_Header Ns string `net:"domain-name"` @@ -194,6 +253,10 @@ func (rr *dnsRR_NS) Header() *dnsRR_Header { return &rr.Hdr } +func (rr *dnsRR_NS) Walk(f func(v interface{}, name, tag string) bool) bool { + return rr.Hdr.Walk(f) && f(&rr.Ns, "Ns", "domain") +} + type dnsRR_PTR struct { Hdr dnsRR_Header Ptr string `net:"domain-name"` @@ -203,6 +266,10 @@ func (rr *dnsRR_PTR) Header() *dnsRR_Header { return &rr.Hdr } +func (rr *dnsRR_PTR) Walk(f func(v interface{}, name, tag string) bool) bool { + return rr.Hdr.Walk(f) && f(&rr.Ptr, "Ptr", "domain") +} + type dnsRR_SOA struct { Hdr dnsRR_Header Ns string `net:"domain-name"` @@ -218,6 +285,17 @@ func (rr *dnsRR_SOA) Header() *dnsRR_Header { return &rr.Hdr } +func (rr *dnsRR_SOA) Walk(f func(v interface{}, name, tag string) bool) bool { + return rr.Hdr.Walk(f) && + f(&rr.Ns, "Ns", "domain") && + f(&rr.Mbox, "Mbox", "domain") && + f(&rr.Serial, "Serial", "") && + f(&rr.Refresh, "Refresh", "") && + f(&rr.Retry, "Retry", "") && + f(&rr.Expire, "Expire", "") && + f(&rr.Minttl, "Minttl", "") +} + type dnsRR_TXT struct { Hdr dnsRR_Header Txt string // not domain name @@ -227,6 +305,10 @@ func (rr *dnsRR_TXT) Header() *dnsRR_Header { return &rr.Hdr } +func (rr *dnsRR_TXT) Walk(f func(v interface{}, name, tag string) bool) bool { + return rr.Hdr.Walk(f) && f(&rr.Txt, "Txt", "") +} + type dnsRR_SRV struct { Hdr dnsRR_Header Priority uint16 @@ -239,6 +321,14 @@ func (rr *dnsRR_SRV) Header() *dnsRR_Header { return &rr.Hdr } +func (rr *dnsRR_SRV) Walk(f func(v interface{}, name, tag string) bool) bool { + return rr.Hdr.Walk(f) && + f(&rr.Priority, "Priority", "") && + f(&rr.Weight, "Weight", "") && + f(&rr.Port, "Port", "") && + f(&rr.Target, "Target", "domain") +} + type dnsRR_A struct { Hdr dnsRR_Header A uint32 `net:"ipv4"` @@ -248,6 +338,10 @@ func (rr *dnsRR_A) Header() *dnsRR_Header { return &rr.Hdr } +func (rr *dnsRR_A) Walk(f func(v interface{}, name, tag string) bool) bool { + return rr.Hdr.Walk(f) && f(&rr.A, "A", "ipv4") +} + type dnsRR_AAAA struct { Hdr dnsRR_Header AAAA [16]byte `net:"ipv6"` @@ -257,6 +351,10 @@ func (rr *dnsRR_AAAA) Header() *dnsRR_Header { return &rr.Hdr } +func (rr *dnsRR_AAAA) Walk(f func(v interface{}, name, tag string) bool) bool { + return rr.Hdr.Walk(f) && f(rr.AAAA[:], "AAAA", "ipv6") +} + // Packing and unpacking. // // All the packers and unpackers take a (msg []byte, off int) @@ -386,134 +484,107 @@ Loop: return s, off1, true } -// TODO(rsc): Move into generic library? -// Pack a reflect.StructValue into msg. Struct members can only be uint16, uint32, string, -// [n]byte, and other (often anonymous) structs. -func packStructValue(val reflect.Value, msg []byte, off int) (off1 int, ok bool) { - for i := 0; i < val.NumField(); i++ { - f := val.Type().Field(i) - switch fv := val.Field(i); fv.Kind() { +// packStruct packs a structure into msg at specified offset off, and +// returns off1 such that msg[off:off1] is the encoded data. +func packStruct(any dnsStruct, msg []byte, off int) (off1 int, ok bool) { + ok = any.Walk(func(field interface{}, name, tag string) bool { + switch fv := field.(type) { default: - fmt.Fprintf(os.Stderr, "net: dns: unknown packing type %v", f.Type) - return len(msg), false - case reflect.Struct: - off, ok = packStructValue(fv, msg, off) - case reflect.Uint16: + println("net: dns: unknown packing type") + return false + case *uint16: + i := *fv if off+2 > len(msg) { - return len(msg), false + return false } - i := fv.Uint() msg[off] = byte(i >> 8) msg[off+1] = byte(i) off += 2 - case reflect.Uint32: - if off+4 > len(msg) { - return len(msg), false - } - i := fv.Uint() + case *uint32: + i := *fv msg[off] = byte(i >> 24) msg[off+1] = byte(i >> 16) msg[off+2] = byte(i >> 8) msg[off+3] = byte(i) off += 4 - case reflect.Array: - if fv.Type().Elem().Kind() != reflect.Uint8 { - fmt.Fprintf(os.Stderr, "net: dns: unknown packing type %v", f.Type) - return len(msg), false - } - n := fv.Len() + case []byte: + n := len(fv) if off+n > len(msg) { - return len(msg), false + return false } - reflect.Copy(reflect.ValueOf(msg[off:off+n]), fv) + copy(msg[off:off+n], fv) off += n - case reflect.String: - // There are multiple string encodings. - // The tag distinguishes ordinary strings from domain names. - s := fv.String() - switch f.Tag { + case *string: + s := *fv + switch tag { default: - fmt.Fprintf(os.Stderr, "net: dns: unknown string tag %v", f.Tag) - return len(msg), false - case `net:"domain-name"`: + println("net: dns: unknown string tag", tag) + return false + case "domain": off, ok = packDomainName(s, msg, off) if !ok { - return len(msg), false + return false } case "": // Counted string: 1 byte length. if len(s) > 255 || off+1+len(s) > len(msg) { - return len(msg), false + return false } msg[off] = byte(len(s)) off++ off += copy(msg[off:], s) } } + return true + }) + if !ok { + return len(msg), false } return off, true } -func structValue(any interface{}) reflect.Value { - return reflect.ValueOf(any).Elem() -} - -func packStruct(any interface{}, msg []byte, off int) (off1 int, ok bool) { - off, ok = packStructValue(structValue(any), msg, off) - return off, ok -} - -// TODO(rsc): Move into generic library? -// Unpack a reflect.StructValue from msg. -// Same restrictions as packStructValue. -func unpackStructValue(val reflect.Value, msg []byte, off int) (off1 int, ok bool) { - for i := 0; i < val.NumField(); i++ { - f := val.Type().Field(i) - switch fv := val.Field(i); fv.Kind() { +// unpackStruct decodes msg[off:] into the given structure, and +// returns off1 such that msg[off:off1] is the encoded data. +func unpackStruct(any dnsStruct, msg []byte, off int) (off1 int, ok bool) { + ok = any.Walk(func(field interface{}, name, tag string) bool { + switch fv := field.(type) { default: - fmt.Fprintf(os.Stderr, "net: dns: unknown packing type %v", f.Type) - return len(msg), false - case reflect.Struct: - off, ok = unpackStructValue(fv, msg, off) - case reflect.Uint16: + println("net: dns: unknown packing type") + return false + case *uint16: if off+2 > len(msg) { - return len(msg), false + return false } - i := uint16(msg[off])<<8 | uint16(msg[off+1]) - fv.SetUint(uint64(i)) + *fv = uint16(msg[off])<<8 | uint16(msg[off+1]) off += 2 - case reflect.Uint32: + case *uint32: if off+4 > len(msg) { - return len(msg), false + return false } - i := uint32(msg[off])<<24 | uint32(msg[off+1])<<16 | uint32(msg[off+2])<<8 | uint32(msg[off+3]) - fv.SetUint(uint64(i)) + *fv = uint32(msg[off])<<24 | uint32(msg[off+1])<<16 | + uint32(msg[off+2])<<8 | uint32(msg[off+3]) off += 4 - case reflect.Array: - if fv.Type().Elem().Kind() != reflect.Uint8 { - fmt.Fprintf(os.Stderr, "net: dns: unknown packing type %v", f.Type) - return len(msg), false - } - n := fv.Len() + case []byte: + n := len(fv) if off+n > len(msg) { - return len(msg), false + return false } - reflect.Copy(fv, reflect.ValueOf(msg[off:off+n])) + copy(fv, msg[off:off+n]) off += n - case reflect.String: + case *string: var s string - switch f.Tag { + switch tag { default: - fmt.Fprintf(os.Stderr, "net: dns: unknown string tag %v", f.Tag) - return len(msg), false - case `net:"domain-name"`: + println("net: dns: unknown string tag", tag) + return false + case "domain": s, off, ok = unpackDomainName(msg, off) if !ok { - return len(msg), false + return false } case "": if off >= len(msg) || off+1+int(msg[off]) > len(msg) { - return len(msg), false + return false } n := int(msg[off]) off++ @@ -524,51 +595,77 @@ func unpackStructValue(val reflect.Value, msg []byte, off int) (off1 int, ok boo off += n s = string(b) } - fv.SetString(s) + *fv = s } + return true + }) + if !ok { + return len(msg), false } return off, true } -func unpackStruct(any interface{}, msg []byte, off int) (off1 int, ok bool) { - off, ok = unpackStructValue(structValue(any), msg, off) - return off, ok -} - -// Generic struct printer. -// Doesn't care about the string tag `net:"domain-name"`, -// but does look for an `net:"ipv4"` tag on uint32 variables -// and the `net:"ipv6"` tag on array variables, -// printing them as IP addresses. -func printStructValue(val reflect.Value) string { +// Generic struct printer. Prints fields with tag "ipv4" or "ipv6" +// as IP addresses. +func printStruct(any dnsStruct) string { s := "{" - for i := 0; i < val.NumField(); i++ { - if i > 0 { + i := 0 + any.Walk(func(val interface{}, name, tag string) bool { + i++ + if i > 1 { s += ", " } - f := val.Type().Field(i) - if !f.Anonymous { - s += f.Name + "=" - } - fval := val.Field(i) - if fv := fval; fv.Kind() == reflect.Struct { - s += printStructValue(fv) - } else if fv := fval; (fv.Kind() == reflect.Uint || fv.Kind() == reflect.Uint8 || fv.Kind() == reflect.Uint16 || fv.Kind() == reflect.Uint32 || fv.Kind() == reflect.Uint64 || fv.Kind() == reflect.Uintptr) && f.Tag == `net:"ipv4"` { - i := fv.Uint() + s += name + "=" + switch tag { + case "ipv4": + i := val.(uint32) s += IPv4(byte(i>>24), byte(i>>16), byte(i>>8), byte(i)).String() - } else if fv := fval; fv.Kind() == reflect.Array && f.Tag == `net:"ipv6"` { - i := fv.Interface().([]byte) + case "ipv6": + i := val.([]byte) s += IP(i).String() - } else { - s += fmt.Sprint(fval.Interface()) + default: + var i int64 + switch v := val.(type) { + default: + // can't really happen. + s += "<unknown type>" + return true + case *string: + s += *v + return true + case []byte: + s += string(v) + return true + case *bool: + if *v { + s += "true" + } else { + s += "false" + } + return true + case *int: + i = int64(*v) + case *uint: + i = int64(*v) + case *uint8: + i = int64(*v) + case *uint16: + i = int64(*v) + case *uint32: + i = int64(*v) + case *uint64: + i = int64(*v) + case *uintptr: + i = int64(*v) + } + s += itoa(int(i)) } - } + return true + }) s += "}" return s } -func printStruct(any interface{}) string { return printStructValue(structValue(any)) } - // Resource record packer. func packRR(rr dnsRR, msg []byte, off int) (off2 int, ok bool) { var off1 int @@ -627,6 +724,17 @@ type dnsMsgHdr struct { rcode int } +func (h *dnsMsgHdr) Walk(f func(v interface{}, name, tag string) bool) bool { + return f(&h.id, "id", "") && + f(&h.response, "response", "") && + f(&h.opcode, "opcode", "") && + f(&h.authoritative, "authoritative", "") && + f(&h.truncated, "truncated", "") && + f(&h.recursion_desired, "recursion_desired", "") && + f(&h.recursion_available, "recursion_available", "") && + f(&h.rcode, "rcode", "") +} + type dnsMsg struct { dnsMsgHdr question []dnsQuestion diff --git a/src/pkg/net/dnsmsg_test.go b/src/pkg/net/dnsmsg_test.go index 06152a01a..c39dbdb04 100644 --- a/src/pkg/net/dnsmsg_test.go +++ b/src/pkg/net/dnsmsg_test.go @@ -6,6 +6,7 @@ package net import ( "encoding/hex" + "reflect" "testing" ) @@ -19,6 +20,7 @@ func TestDNSParseSRVReply(t *testing.T) { if !ok { t.Fatalf("unpacking packet failed") } + msg.String() // exercise this code path if g, e := len(msg.answer), 5; g != e { t.Errorf("len(msg.answer) = %d; want %d", g, e) } @@ -38,6 +40,16 @@ func TestDNSParseSRVReply(t *testing.T) { t.Errorf("len(addrs) = %d; want %d", g, e) t.Logf("addrs = %#v", addrs) } + // repack and unpack. + data2, ok := msg.Pack() + msg2 := new(dnsMsg) + msg2.Unpack(data2) + switch { + case !ok: + t.Errorf("failed to repack message") + case !reflect.DeepEqual(msg, msg2): + t.Errorf("repacked message differs from original") + } } func TestDNSParseCorruptSRVReply(t *testing.T) { @@ -50,6 +62,7 @@ func TestDNSParseCorruptSRVReply(t *testing.T) { if !ok { t.Fatalf("unpacking packet failed") } + msg.String() // exercise this code path if g, e := len(msg.answer), 5; g != e { t.Errorf("len(msg.answer) = %d; want %d", g, e) } diff --git a/src/pkg/net/fd_linux.go b/src/pkg/net/fd_linux.go index a1d62acc7..085e42307 100644 --- a/src/pkg/net/fd_linux.go +++ b/src/pkg/net/fd_linux.go @@ -84,7 +84,8 @@ func (p *pollster) StopWaiting(fd int, bits uint) { events, already := p.events[fd] if !already { - print("Epoll unexpected fd=", fd, "\n") + // The fd returned by the kernel may have been + // cancelled already; return silently. return } diff --git a/src/pkg/net/file_test.go b/src/pkg/net/file_test.go index 868388efa..95c0b6699 100644 --- a/src/pkg/net/file_test.go +++ b/src/pkg/net/file_test.go @@ -27,7 +27,8 @@ type connFile interface { } func testFileListener(t *testing.T, net, laddr string) { - if net == "tcp" { + switch net { + case "tcp", "tcp4", "tcp6": laddr += ":0" // any available port } l, err := Listen(net, laddr) @@ -55,20 +56,52 @@ func testFileListener(t *testing.T, net, laddr string) { } } +var fileListenerTests = []struct { + net string + laddr string + ipv6 bool // test with underlying AF_INET6 socket + linux bool // test with abstract unix domain socket, a Linux-ism +}{ + {net: "tcp", laddr: ""}, + {net: "tcp", laddr: "0.0.0.0"}, + {net: "tcp", laddr: "[::ffff:0.0.0.0]"}, + {net: "tcp", laddr: "[::]", ipv6: true}, + + {net: "tcp", laddr: "127.0.0.1"}, + {net: "tcp", laddr: "[::ffff:127.0.0.1]"}, + {net: "tcp", laddr: "[::1]", ipv6: true}, + + {net: "tcp4", laddr: ""}, + {net: "tcp4", laddr: "0.0.0.0"}, + {net: "tcp4", laddr: "[::ffff:0.0.0.0]"}, + + {net: "tcp4", laddr: "127.0.0.1"}, + {net: "tcp4", laddr: "[::ffff:127.0.0.1]"}, + + {net: "tcp6", laddr: "", ipv6: true}, + {net: "tcp6", laddr: "[::]", ipv6: true}, + + {net: "tcp6", laddr: "[::1]", ipv6: true}, + + {net: "unix", laddr: "@gotest/net", linux: true}, + {net: "unixpacket", laddr: "@gotest/net", linux: true}, +} + func TestFileListener(t *testing.T) { - if runtime.GOOS == "windows" || runtime.GOOS == "plan9" { + switch runtime.GOOS { + case "plan9", "windows": + t.Logf("skipping test on %q", runtime.GOOS) return } - testFileListener(t, "tcp", "127.0.0.1") - testFileListener(t, "tcp", "127.0.0.1") - if supportsIPv6 && supportsIPv4map { - testFileListener(t, "tcp", "[::ffff:127.0.0.1]") - testFileListener(t, "tcp", "127.0.0.1") - testFileListener(t, "tcp", "[::ffff:127.0.0.1]") - } - if runtime.GOOS == "linux" { - testFileListener(t, "unix", "@gotest/net") - testFileListener(t, "unixpacket", "@gotest/net") + + for _, tt := range fileListenerTests { + if skipServerTest(tt.net, "unix", tt.laddr, tt.ipv6, false, tt.linux) { + continue + } + if skipServerTest(tt.net, "unixpacket", tt.laddr, tt.ipv6, false, tt.linux) { + continue + } + testFileListener(t, tt.net, tt.laddr) } } @@ -98,9 +131,13 @@ func testFilePacketConn(t *testing.T, pcf packetConnFile, listen bool) { } func testFilePacketConnListen(t *testing.T, net, laddr string) { + switch net { + case "udp", "udp4", "udp6": + laddr += ":0" // any available port + } l, err := ListenPacket(net, laddr) if err != nil { - t.Fatalf("Listen failed: %v", err) + t.Fatalf("ListenPacket failed: %v", err) } testFilePacketConn(t, l.(packetConnFile), true) if err := l.Close(); err != nil { @@ -109,6 +146,10 @@ func testFilePacketConnListen(t *testing.T, net, laddr string) { } func testFilePacketConnDial(t *testing.T, net, raddr string) { + switch net { + case "udp", "udp4", "udp6": + raddr += ":12345" + } c, err := Dial(net, raddr) if err != nil { t.Fatalf("Dial failed: %v", err) @@ -119,19 +160,42 @@ func testFilePacketConnDial(t *testing.T, net, raddr string) { } } +var filePacketConnTests = []struct { + net string + addr string + ipv6 bool // test with underlying AF_INET6 socket + linux bool // test with abstract unix domain socket, a Linux-ism +}{ + {net: "udp", addr: "127.0.0.1"}, + {net: "udp", addr: "[::ffff:127.0.0.1]"}, + {net: "udp", addr: "[::1]", ipv6: true}, + + {net: "udp4", addr: "127.0.0.1"}, + {net: "udp4", addr: "[::ffff:127.0.0.1]"}, + + {net: "udp6", addr: "[::1]", ipv6: true}, + + {net: "unixgram", addr: "@gotest3/net", linux: true}, +} + func TestFilePacketConn(t *testing.T) { - if runtime.GOOS == "windows" || runtime.GOOS == "plan9" { + switch runtime.GOOS { + case "plan9", "windows": + t.Logf("skipping test on %q", runtime.GOOS) return } - testFilePacketConnListen(t, "udp", "127.0.0.1:0") - testFilePacketConnDial(t, "udp", "127.0.0.1:12345") - if supportsIPv6 { - testFilePacketConnListen(t, "udp", "[::1]:0") - } - if supportsIPv6 && supportsIPv4map { - testFilePacketConnDial(t, "udp", "[::ffff:127.0.0.1]:12345") - } - if runtime.GOOS == "linux" { - testFilePacketConnListen(t, "unixgram", "@gotest1/net") + + for _, tt := range filePacketConnTests { + if skipServerTest(tt.net, "unixgram", tt.addr, tt.ipv6, false, tt.linux) { + continue + } + testFilePacketConnListen(t, tt.net, tt.addr) + switch tt.addr { + case "", "0.0.0.0", "[::ffff:0.0.0.0]", "[::]": + default: + if tt.net != "unixgram" { + testFilePacketConnDial(t, tt.net, tt.addr) + } + } } } diff --git a/src/pkg/net/http/client_test.go b/src/pkg/net/http/client_test.go index aa0bf4be6..e00b62e59 100644 --- a/src/pkg/net/http/client_test.go +++ b/src/pkg/net/http/client_test.go @@ -238,9 +238,9 @@ func TestRedirects(t *testing.T) { } var expectedCookies = []*Cookie{ - &Cookie{Name: "ChocolateChip", Value: "tasty"}, - &Cookie{Name: "First", Value: "Hit"}, - &Cookie{Name: "Second", Value: "Hit"}, + {Name: "ChocolateChip", Value: "tasty"}, + {Name: "First", Value: "Hit"}, + {Name: "Second", Value: "Hit"}, } var echoCookiesRedirectHandler = HandlerFunc(func(w ResponseWriter, r *Request) { diff --git a/src/pkg/net/http/request.go b/src/pkg/net/http/request.go index 527765780..f5bc6eb91 100644 --- a/src/pkg/net/http/request.go +++ b/src/pkg/net/http/request.go @@ -455,11 +455,13 @@ func ReadRequest(b *bufio.Reader) (req *Request, err error) { // First line: GET /index.html HTTP/1.0 var s string if s, err = tp.ReadLine(); err != nil { + return nil, err + } + defer func() { if err == io.EOF { err = io.ErrUnexpectedEOF } - return nil, err - } + }() var f []string if f = strings.SplitN(s, " ", 3); len(f) < 3 { diff --git a/src/pkg/net/http/request_test.go b/src/pkg/net/http/request_test.go index 7a3556d03..6e00b9bfd 100644 --- a/src/pkg/net/http/request_test.go +++ b/src/pkg/net/http/request_test.go @@ -5,6 +5,7 @@ package http_test import ( + "bufio" "bytes" "fmt" "io" @@ -177,6 +178,24 @@ func TestRequestMultipartCallOrder(t *testing.T) { } } +var readRequestErrorTests = []struct { + in string + err error +}{ + {"GET / HTTP/1.1\r\nheader:foo\r\n\r\n", nil}, + {"GET / HTTP/1.1\r\nheader:foo\r\n", io.ErrUnexpectedEOF}, + {"", io.EOF}, +} + +func TestReadRequestErrors(t *testing.T) { + for i, tt := range readRequestErrorTests { + _, err := ReadRequest(bufio.NewReader(strings.NewReader(tt.in))) + if err != tt.err { + t.Errorf("%d. got error = %v; want %v", i, err, tt.err) + } + } +} + func testMissingFile(t *testing.T, req *Request) { f, fh, err := req.FormFile("missing") if f != nil { diff --git a/src/pkg/net/http/server.go b/src/pkg/net/http/server.go index fa0df54a2..228ac4019 100644 --- a/src/pkg/net/http/server.go +++ b/src/pkg/net/http/server.go @@ -601,7 +601,7 @@ func (c *conn) serve() { // while they're still writing their // request. Undefined behavior. msg = "413 Request Entity Too Large" - } else if err == io.ErrUnexpectedEOF { + } else if err == io.EOF { break // Don't reply } else if neterr, ok := err.(net.Error); ok && neterr.Timeout() { break // Don't reply diff --git a/src/pkg/net/http/transport.go b/src/pkg/net/http/transport.go index 09579f8a0..024975946 100644 --- a/src/pkg/net/http/transport.go +++ b/src/pkg/net/http/transport.go @@ -196,7 +196,7 @@ func (t *Transport) CloseIdleConnections() { pconn.close() } } - t.idleConn = nil + t.idleConn = make(map[string][]*persistConn) } // diff --git a/src/pkg/net/http/transport_test.go b/src/pkg/net/http/transport_test.go index cbb3884f9..a9e401de5 100644 --- a/src/pkg/net/http/transport_test.go +++ b/src/pkg/net/http/transport_test.go @@ -698,6 +698,32 @@ func TestTransportPersistConnLeak(t *testing.T) { } } +// This used to crash; http://golang.org/issue/3266 +func TestTransportIdleConnCrash(t *testing.T) { + tr := &Transport{} + c := &Client{Transport: tr} + + unblockCh := make(chan bool, 1) + ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) { + <-unblockCh + tr.CloseIdleConnections() + })) + defer ts.Close() + + didreq := make(chan bool) + go func() { + res, err := c.Get(ts.URL) + if err != nil { + t.Error(err) + } else { + res.Body.Close() // returns idle conn + } + didreq <- true + }() + unblockCh <- true + <-didreq +} + type fooProto struct{} func (fooProto) RoundTrip(req *Request) (*Response, error) { diff --git a/src/pkg/net/http/triv.go b/src/pkg/net/http/triv.go index 269af0ca3..232d65089 100644 --- a/src/pkg/net/http/triv.go +++ b/src/pkg/net/http/triv.go @@ -15,7 +15,9 @@ import ( "log" "net/http" "os" + "os/exec" "strconv" + "sync" ) // hello world, the web server @@ -28,14 +30,21 @@ func HelloServer(w http.ResponseWriter, req *http.Request) { // Simple counter server. POSTing to it will set the value. type Counter struct { - n int + mu sync.Mutex // protects n + n int } // This makes Counter satisfy the expvar.Var interface, so we can export // it directly. -func (ctr *Counter) String() string { return fmt.Sprintf("%d", ctr.n) } +func (ctr *Counter) String() string { + ctr.mu.Lock() + defer ctr.mu.Unlock() + return fmt.Sprintf("%d", ctr.n) +} func (ctr *Counter) ServeHTTP(w http.ResponseWriter, req *http.Request) { + ctr.mu.Lock() + defer ctr.mu.Unlock() switch req.Method { case "GET": ctr.n++ @@ -95,54 +104,36 @@ func (ch Chan) ServeHTTP(w http.ResponseWriter, req *http.Request) { // exec a program, redirecting output func DateServer(rw http.ResponseWriter, req *http.Request) { rw.Header().Set("Content-Type", "text/plain; charset=utf-8") - r, w, err := os.Pipe() - if err != nil { - fmt.Fprintf(rw, "pipe: %s\n", err) - return - } - p, err := os.StartProcess("/bin/date", []string{"date"}, &os.ProcAttr{Files: []*os.File{nil, w, w}}) - defer r.Close() - w.Close() - if err != nil { - fmt.Fprintf(rw, "fork/exec: %s\n", err) - return - } - io.Copy(rw, r) - wait, err := p.Wait(0) + date, err := exec.Command("/bin/date").Output() if err != nil { - fmt.Fprintf(rw, "wait: %s\n", err) - return - } - if !wait.Exited() || wait.ExitStatus() != 0 { - fmt.Fprintf(rw, "date: %v\n", wait) + http.Error(rw, err.Error(), 500) return } + rw.Write(date) } func Logger(w http.ResponseWriter, req *http.Request) { - log.Print(req.URL.Raw) - w.WriteHeader(404) - w.Write([]byte("oops")) + log.Print(req.URL) + http.Error(w, "oops", 404) } -var webroot = flag.String("root", "/home/rsc", "web root directory") +var webroot = flag.String("root", os.Getenv("HOME"), "web root directory") func main() { flag.Parse() // The counter is published as a variable directly. ctr := new(Counter) - http.Handle("/counter", ctr) expvar.Publish("counter", ctr) - + http.Handle("/counter", ctr) http.Handle("/", http.HandlerFunc(Logger)) http.Handle("/go/", http.StripPrefix("/go/", http.FileServer(http.Dir(*webroot)))) - http.Handle("/flags", http.HandlerFunc(FlagServer)) - http.Handle("/args", http.HandlerFunc(ArgServer)) - http.Handle("/go/hello", http.HandlerFunc(HelloServer)) http.Handle("/chan", ChanCreate()) - http.Handle("/date", http.HandlerFunc(DateServer)) + http.HandleFunc("/flags", FlagServer) + http.HandleFunc("/args", ArgServer) + http.HandleFunc("/go/hello", HelloServer) + http.HandleFunc("/date", DateServer) err := http.ListenAndServe(":12345", nil) if err != nil { log.Panicln("ListenAndServe:", err) diff --git a/src/pkg/net/interface.go b/src/pkg/net/interface.go index f25d046c1..ee23570a9 100644 --- a/src/pkg/net/interface.go +++ b/src/pkg/net/interface.go @@ -78,7 +78,7 @@ func (ifi *Interface) MulticastAddrs() ([]Addr, error) { return interfaceMulticastAddrTable(ifi.Index) } -// Interfaces returns a list of the systems's network interfaces. +// Interfaces returns a list of the system's network interfaces. func Interfaces() ([]Interface, error) { return interfaceTable(0) } diff --git a/src/pkg/net/interface_linux.go b/src/pkg/net/interface_linux.go index 15c2f3781..825b20227 100644 --- a/src/pkg/net/interface_linux.go +++ b/src/pkg/net/interface_linux.go @@ -7,14 +7,13 @@ package net import ( - "fmt" "os" "syscall" "unsafe" ) // If the ifindex is zero, interfaceTable returns mappings of all -// network interfaces. Otheriwse it returns a mapping of a specific +// network interfaces. Otherwise it returns a mapping of a specific // interface. func interfaceTable(ifindex int) ([]Interface, error) { tab, err := syscall.NetlinkRIB(syscall.RTM_GETLINK, syscall.AF_UNSPEC) @@ -194,7 +193,9 @@ func parseProcNetIGMP(path string, ifi *Interface) []Addr { name = f[1] case len(f[0]) == 8: if ifi == nil || name == ifi.Name { - fmt.Sscanf(f[0], "%08x", &b) + for i := 0; i+1 < len(f[0]); i += 2 { + b[i/2], _ = xtoi2(f[0][i:i+2], 0) + } ifma := IPAddr{IP: IPv4(b[3], b[2], b[1], b[0])} ifmat = append(ifmat, ifma.toAddr()) } @@ -218,10 +219,11 @@ func parseProcNetIGMP6(path string, ifi *Interface) []Addr { continue } if ifi == nil || f[1] == ifi.Name { - fmt.Sscanf(f[2], "%32x", &b) + for i := 0; i+1 < len(f[2]); i += 2 { + b[i/2], _ = xtoi2(f[2][i:i+2], 0) + } ifma := IPAddr{IP: IP{b[0], b[1], b[2], b[3], b[4], b[5], b[6], b[7], b[8], b[9], b[10], b[11], b[12], b[13], b[14], b[15]}} ifmat = append(ifmat, ifma.toAddr()) - } } return ifmat diff --git a/src/pkg/net/interface_stub.go b/src/pkg/net/interface_stub.go index 4876b3af3..d4d7ce9c7 100644 --- a/src/pkg/net/interface_stub.go +++ b/src/pkg/net/interface_stub.go @@ -9,7 +9,7 @@ package net // If the ifindex is zero, interfaceTable returns mappings of all -// network interfaces. Otheriwse it returns a mapping of a specific +// network interfaces. Otherwise it returns a mapping of a specific // interface. func interfaceTable(ifindex int) ([]Interface, error) { return nil, nil diff --git a/src/pkg/net/interface_windows.go b/src/pkg/net/interface_windows.go index d0c975326..4368b3306 100644 --- a/src/pkg/net/interface_windows.go +++ b/src/pkg/net/interface_windows.go @@ -56,7 +56,7 @@ func getInterfaceList() ([]syscall.InterfaceInfo, error) { } // If the ifindex is zero, interfaceTable returns mappings of all -// network interfaces. Otheriwse it returns a mapping of a specific +// network interfaces. Otherwise it returns a mapping of a specific // interface. func interfaceTable(ifindex int) ([]Interface, error) { ai, err := getAdapterList() diff --git a/src/pkg/net/iprawsock_posix.go b/src/pkg/net/iprawsock_posix.go index 9caa86985..6bbe67c3d 100644 --- a/src/pkg/net/iprawsock_posix.go +++ b/src/pkg/net/iprawsock_posix.go @@ -34,6 +34,13 @@ func (a *IPAddr) family() int { return syscall.AF_INET6 } +func (a *IPAddr) isWildcard() bool { + if a == nil || a.IP == nil { + return true + } + return a.IP.IsUnspecified() +} + func (a *IPAddr) sockaddr(family int) (syscall.Sockaddr, error) { return ipToSockaddr(family, a.IP, 0) } diff --git a/src/pkg/net/ipsock_posix.go b/src/pkg/net/ipsock_posix.go index 4841057d6..ed313195c 100644 --- a/src/pkg/net/ipsock_posix.go +++ b/src/pkg/net/ipsock_posix.go @@ -38,6 +38,7 @@ func probeIPv6Stack() (supportsIPv6, supportsIPv4map bool) { continue } defer closesocket(s) + syscall.SetsockoptInt(s, syscall.IPPROTO_IPV6, syscall.IPV6_V6ONLY, 0) sa, err := probes[i].la.toAddr().sockaddr(syscall.AF_INET6) if err != nil { continue @@ -55,58 +56,75 @@ func probeIPv6Stack() (supportsIPv6, supportsIPv4map bool) { // favoriteAddrFamily returns the appropriate address family to // the given net, laddr, raddr and mode. At first it figures // address family out from the net. If mode indicates "listen" -// and laddr.(type).IP is nil, it assumes that the user wants to -// make a passive connection with wildcard address family, both -// INET and INET6, and wildcard address. Otherwise guess: if the -// addresses are IPv4 then returns INET, or else returns INET6. -func favoriteAddrFamily(net string, laddr, raddr sockaddr, mode string) int { +// and laddr is a wildcard, it assumes that the user wants to +// make a passive connection with a wildcard address family, both +// AF_INET and AF_INET6, and a wildcard address like following: +// +// 1. A wild-wild listen, "tcp" + "" +// If the platform supports both IPv6 and IPv6 IPv4-mapping +// capabilities, we assume that the user want to listen on +// both IPv4 and IPv6 wildcard address over an AF_INET6 +// socket with IPV6_V6ONLY=0. Otherwise we prefer an IPv4 +// wildcard address listen over an AF_INET socket. +// +// 2. A wild-ipv4wild listen, "tcp" + "0.0.0.0" +// Same as 1. +// +// 3. A wild-ipv6wild listen, "tcp" + "[::]" +// Almost same as 1 but we prefer an IPv6 wildcard address +// listen over an AF_INET6 socket with IPV6_V6ONLY=0 when +// the platform supports IPv6 capability but not IPv6 IPv4- +// mapping capability. +// +// 4. A ipv4-ipv4wild listen, "tcp4" + "" or "0.0.0.0" +// We use an IPv4 (AF_INET) wildcard address listen. +// +// 5. A ipv6-ipv6wild listen, "tcp6" + "" or "[::]" +// We use an IPv6 (AF_INET6, IPV6_V6ONLY=1) wildcard address +// listen. +// +// Otherwise guess: if the addresses are IPv4 then returns AF_INET, +// or else returns AF_INET6. It also returns a boolean value what +// designates IPV6_V6ONLY option. +// +// Note that OpenBSD allows neither "net.inet6.ip6.v6only=1" change +// nor IPPROTO_IPV6 level IPV6_V6ONLY socket option setting. +func favoriteAddrFamily(net string, laddr, raddr sockaddr, mode string) (family int, ipv6only bool) { switch net[len(net)-1] { case '4': - return syscall.AF_INET + return syscall.AF_INET, false case '6': - return syscall.AF_INET6 + return syscall.AF_INET6, true } - if mode == "listen" { - // Note that OpenBSD allows neither "net.inet6.ip6.v6only" - // change nor IPPROTO_IPV6 level IPV6_V6ONLY socket option - // setting. - switch a := laddr.(type) { - case *TCPAddr: - if a.IP == nil && supportsIPv6 && supportsIPv4map { - return syscall.AF_INET6 - } - case *UDPAddr: - if a.IP == nil && supportsIPv6 && supportsIPv4map { - return syscall.AF_INET6 - } - case *IPAddr: - if a.IP == nil && supportsIPv6 && supportsIPv4map { - return syscall.AF_INET6 - } + if mode == "listen" && laddr.isWildcard() { + if supportsIPv4map { + return syscall.AF_INET6, false } + return laddr.family(), false } if (laddr == nil || laddr.family() == syscall.AF_INET) && (raddr == nil || raddr.family() == syscall.AF_INET) { - return syscall.AF_INET + return syscall.AF_INET, false } - return syscall.AF_INET6 + return syscall.AF_INET6, false } -// Internet sockets (TCP, UDP) +// Internet sockets (TCP, UDP, IP) -// A sockaddr represents a TCP or UDP network address that can +// A sockaddr represents a TCP, UDP or IP network address that can // be converted into a syscall.Sockaddr. type sockaddr interface { Addr - sockaddr(family int) (syscall.Sockaddr, error) family() int + isWildcard() bool + sockaddr(family int) (syscall.Sockaddr, error) } func internetSocket(net string, laddr, raddr sockaddr, sotype, proto int, mode string, toAddr func(syscall.Sockaddr) Addr) (fd *netFD, err error) { var la, ra syscall.Sockaddr - family := favoriteAddrFamily(net, laddr, raddr, mode) + family, ipv6only := favoriteAddrFamily(net, laddr, raddr, mode) if laddr != nil { if la, err = laddr.sockaddr(family); err != nil { goto Error @@ -117,7 +135,7 @@ func internetSocket(net string, laddr, raddr sockaddr, sotype, proto int, mode s goto Error } } - fd, err = socket(net, family, sotype, proto, la, ra, toAddr) + fd, err = socket(net, family, sotype, proto, ipv6only, la, ra, toAddr) if err != nil { goto Error } @@ -152,7 +170,7 @@ func ipToSockaddr(family int, ip IP, port int) (syscall.Sockaddr, error) { } // IPv4 callers use 0.0.0.0 to mean "announce on any available address". // In IPv6 mode, Linux treats that as meaning "announce on 0.0.0.0", - // which it refuses to do. Rewrite to the IPv6 all zeros. + // which it refuses to do. Rewrite to the IPv6 unspecified address. if ip.Equal(IPv4zero) { ip = IPv6zero } diff --git a/src/pkg/net/mac.go b/src/pkg/net/mac.go index e0637d00b..d616b1f68 100644 --- a/src/pkg/net/mac.go +++ b/src/pkg/net/mac.go @@ -6,24 +6,26 @@ package net -import ( - "bytes" - "errors" - "fmt" -) +import "errors" + +const hexDigit = "0123456789abcdef" // A HardwareAddr represents a physical hardware address. type HardwareAddr []byte func (a HardwareAddr) String() string { - var buf bytes.Buffer + if len(a) == 0 { + return "" + } + buf := make([]byte, 0, len(a)*3-1) for i, b := range a { if i > 0 { - buf.WriteByte(':') + buf = append(buf, ':') } - fmt.Fprintf(&buf, "%02x", b) + buf = append(buf, hexDigit[b>>4]) + buf = append(buf, hexDigit[b&0xF]) } - return buf.String() + return string(buf) } // ParseMAC parses s as an IEEE 802 MAC-48, EUI-48, or EUI-64 using one of the diff --git a/src/pkg/net/mac_test.go b/src/pkg/net/mac_test.go index 3837e740c..8f9dc6685 100644 --- a/src/pkg/net/mac_test.go +++ b/src/pkg/net/mac_test.go @@ -43,12 +43,24 @@ func match(err error, s string) bool { return err != nil && strings.Contains(err.Error(), s) } -func TestParseMAC(t *testing.T) { - for _, tt := range mactests { +func TestMACParseString(t *testing.T) { + for i, tt := range mactests { out, err := ParseMAC(tt.in) if !reflect.DeepEqual(out, tt.out) || !match(err, tt.err) { t.Errorf("ParseMAC(%q) = %v, %v, want %v, %v", tt.in, out, err, tt.out, tt.err) } + if tt.err == "" { + // Verify that serialization works too, and that it round-trips. + s := out.String() + out2, err := ParseMAC(s) + if err != nil { + t.Errorf("%d. ParseMAC(%q) = %v", i, s, err) + continue + } + if !reflect.DeepEqual(out2, out) { + t.Errorf("%d. ParseMAC(%q) = %v, want %v", i, s, out2, out) + } + } } } diff --git a/src/pkg/net/mail/message.go b/src/pkg/net/mail/message.go index bf22c711e..0917bbedf 100644 --- a/src/pkg/net/mail/message.go +++ b/src/pkg/net/mail/message.go @@ -394,8 +394,7 @@ func (p *addrParser) consumeAtom(dot bool) (atom string, err error) { i := 1 for ; i < p.len() && isAtext((*p)[i], dot); i++ { } - // TODO(dsymonds): Remove the []byte() conversion here when 6g doesn't need it. - atom, *p = string([]byte((*p)[:i])), (*p)[i:] + atom, *p = string((*p)[:i]), (*p)[i:] return atom, nil } diff --git a/src/pkg/net/multicast_test.go b/src/pkg/net/multicast_test.go index 1d760c210..67261b1ee 100644 --- a/src/pkg/net/multicast_test.go +++ b/src/pkg/net/multicast_test.go @@ -47,9 +47,11 @@ var multicastListenerTests = []struct { func TestMulticastListener(t *testing.T) { switch runtime.GOOS { case "netbsd", "openbsd", "plan9", "windows": + t.Logf("skipping test on %q", runtime.GOOS) return case "linux": if runtime.GOARCH == "arm" || runtime.GOARCH == "alpha" { + t.Logf("skipping test on %q/%q", runtime.GOOS, runtime.GOARCH) return } } @@ -86,7 +88,13 @@ func TestMulticastListener(t *testing.T) { func TestSimpleMulticastListener(t *testing.T) { switch runtime.GOOS { case "plan9": + t.Logf("skipping test on %q", runtime.GOOS) return + case "windows": + if testing.Short() || !*testExternal { + t.Logf("skipping test on windows to avoid firewall") + return + } } for _, tt := range multicastListenerTests { diff --git a/src/pkg/net/net.go b/src/pkg/net/net.go index bf242ff8d..9ebcdbe99 100644 --- a/src/pkg/net/net.go +++ b/src/pkg/net/net.go @@ -54,6 +54,8 @@ type Addr interface { } // Conn is a generic stream-oriented network connection. +// +// Multiple goroutines may invoke methods on a Conn simultaneously. type Conn interface { // Read reads data from the connection. // Read can be made to time out and return a Error with Timeout() == true @@ -66,6 +68,7 @@ type Conn interface { Write(b []byte) (n int, err error) // Close closes the connection. + // Any blocked Read or Write operations will be unblocked and return errors. Close() error // LocalAddr returns the local network address. @@ -89,11 +92,11 @@ type Conn interface { // A zero value for t means I/O operations will not time out. SetDeadline(t time.Time) error - // SetReadDeadline sets the deadline for Read calls. + // SetReadDeadline sets the deadline for future Read calls. // A zero value for t means Read will not time out. SetReadDeadline(t time.Time) error - // SetWriteDeadline sets the deadline for Write calls. + // SetWriteDeadline sets the deadline for future Write calls. // Even if write times out, it may return n > 0, indicating that // some of the data was successfully written. // A zero value for t means Write will not time out. @@ -108,6 +111,8 @@ type Error interface { } // PacketConn is a generic packet-oriented network connection. +// +// Multiple goroutines may invoke methods on a PacketConn simultaneously. type PacketConn interface { // ReadFrom reads a packet from the connection, // copying the payload into b. It returns the number of @@ -126,6 +131,7 @@ type PacketConn interface { WriteTo(b []byte, addr Addr) (n int, err error) // Close closes the connection. + // Any blocked ReadFrom or WriteTo operations will be unblocked and return errors. Close() error // LocalAddr returns the local network address. @@ -135,13 +141,13 @@ type PacketConn interface { // with the connection. SetDeadline(t time.Time) error - // SetReadDeadline sets the deadline for all Read calls to return. + // SetReadDeadline sets the deadline for future Read calls. // If the deadline is reached, Read will fail with a timeout // (see type Error) instead of blocking. // A zero value for t means Read will not time out. SetReadDeadline(t time.Time) error - // SetWriteDeadline sets the deadline for all Write calls to return. + // SetWriteDeadline sets the deadline for future Write calls. // If the deadline is reached, Write will fail with a timeout // (see type Error) instead of blocking. // A zero value for t means Write will not time out. @@ -151,11 +157,14 @@ type PacketConn interface { } // A Listener is a generic network listener for stream-oriented protocols. +// +// Multiple goroutines may invoke methods on a Listener simultaneously. type Listener interface { // Accept waits for and returns the next connection to the listener. Accept() (c Conn, err error) // Close closes the listener. + // Any blocked Accept operations will be unblocked and return errors. Close() error // Addr returns the listener's network address. diff --git a/src/pkg/net/net_test.go b/src/pkg/net/net_test.go index c1a90de01..fd145e1d7 100644 --- a/src/pkg/net/net_test.go +++ b/src/pkg/net/net_test.go @@ -13,6 +13,7 @@ import ( func TestShutdown(t *testing.T) { if runtime.GOOS == "plan9" { + t.Logf("skipping test on %q", runtime.GOOS) return } l, err := Listen("tcp", "127.0.0.1:0") diff --git a/src/pkg/net/parse_test.go b/src/pkg/net/parse_test.go index dfbaba4d9..30fda45df 100644 --- a/src/pkg/net/parse_test.go +++ b/src/pkg/net/parse_test.go @@ -13,7 +13,9 @@ import ( func TestReadLine(t *testing.T) { // /etc/services file does not exist on windows and Plan 9. - if runtime.GOOS == "windows" || runtime.GOOS == "plan9" { + switch runtime.GOOS { + case "plan9", "windows": + t.Logf("skipping test on %q", runtime.GOOS) return } filename := "/etc/services" // a nice big file diff --git a/src/pkg/net/rpc/client.go b/src/pkg/net/rpc/client.go index f7abf21f1..db2da8e44 100644 --- a/src/pkg/net/rpc/client.go +++ b/src/pkg/net/rpc/client.go @@ -36,7 +36,8 @@ type Call struct { // Client represents an RPC Client. // There may be multiple outstanding Calls associated -// with a single Client. +// with a single Client, and a Client may be used by +// multiple goroutines simultaneously. type Client struct { mutex sync.Mutex // protects pending, seq, request sending sync.Mutex diff --git a/src/pkg/net/server_test.go b/src/pkg/net/server_test.go index b98621681..158b9477d 100644 --- a/src/pkg/net/server_test.go +++ b/src/pkg/net/server_test.go @@ -9,234 +9,461 @@ import ( "io" "os" "runtime" - "strings" "testing" "time" ) -// Do not test empty datagrams by default. -// It causes unexplained timeouts on some systems, -// including Snow Leopard. I think that the kernel -// doesn't quite expect them. -var testUDP = flag.Bool("udp", false, "whether to test UDP datagrams") +func skipServerTest(net, unixsotype, addr string, ipv6, ipv4map, linuxonly bool) bool { + switch runtime.GOOS { + case "linux": + case "plan9", "windows": + // "unix" sockets are not supported on Windows and Plan 9. + if net == unixsotype { + return true + } + default: + if net == unixsotype && linuxonly { + return true + } + } + switch addr { + case "", "0.0.0.0", "[::ffff:0.0.0.0]", "[::]": + if testing.Short() || !*testExternal { + return true + } + } + if ipv6 && !supportsIPv6 { + return true + } + if ipv4map && !supportsIPv4map { + return true + } + return false +} -func runEcho(fd io.ReadWriter, done chan<- int) { - var buf [1024]byte +var streamConnServerTests = []struct { + snet string // server side + saddr string + cnet string // client side + caddr string + ipv6 bool // test with underlying AF_INET6 socket + ipv4map bool // test with IPv6 IPv4-mapping functionality + empty bool // test with empty data + linux bool // test with abstract unix domain socket, a Linux-ism +}{ + {snet: "tcp", saddr: "", cnet: "tcp", caddr: "127.0.0.1"}, + {snet: "tcp", saddr: "0.0.0.0", cnet: "tcp", caddr: "127.0.0.1"}, + {snet: "tcp", saddr: "[::ffff:0.0.0.0]", cnet: "tcp", caddr: "127.0.0.1"}, + {snet: "tcp", saddr: "[::]", cnet: "tcp", caddr: "[::1]", ipv6: true}, - for { - n, err := fd.Read(buf[0:]) - if err != nil || n == 0 || string(buf[:n]) == "END" { - break + {snet: "tcp", saddr: "", cnet: "tcp", caddr: "[::1]", ipv4map: true}, + {snet: "tcp", saddr: "0.0.0.0", cnet: "tcp", caddr: "[::1]", ipv4map: true}, + {snet: "tcp", saddr: "[::ffff:0.0.0.0]", cnet: "tcp", caddr: "[::1]", ipv4map: true}, + {snet: "tcp", saddr: "[::]", cnet: "tcp", caddr: "127.0.0.1", ipv4map: true}, + + {snet: "tcp", saddr: "", cnet: "tcp4", caddr: "127.0.0.1"}, + {snet: "tcp", saddr: "0.0.0.0", cnet: "tcp4", caddr: "127.0.0.1"}, + {snet: "tcp", saddr: "[::ffff:0.0.0.0]", cnet: "tcp4", caddr: "127.0.0.1"}, + {snet: "tcp", saddr: "[::]", cnet: "tcp6", caddr: "[::1]", ipv6: true}, + + {snet: "tcp", saddr: "", cnet: "tcp6", caddr: "[::1]", ipv4map: true}, + {snet: "tcp", saddr: "0.0.0.0", cnet: "tcp6", caddr: "[::1]", ipv4map: true}, + {snet: "tcp", saddr: "[::ffff:0.0.0.0]", cnet: "tcp6", caddr: "[::1]", ipv4map: true}, + {snet: "tcp", saddr: "[::]", cnet: "tcp4", caddr: "127.0.0.1", ipv4map: true}, + + {snet: "tcp", saddr: "127.0.0.1", cnet: "tcp", caddr: "127.0.0.1"}, + {snet: "tcp", saddr: "[::ffff:127.0.0.1]", cnet: "tcp", caddr: "127.0.0.1"}, + {snet: "tcp", saddr: "[::1]", cnet: "tcp", caddr: "[::1]", ipv6: true}, + + {snet: "tcp4", saddr: "", cnet: "tcp4", caddr: "127.0.0.1"}, + {snet: "tcp4", saddr: "0.0.0.0", cnet: "tcp4", caddr: "127.0.0.1"}, + {snet: "tcp4", saddr: "[::ffff:0.0.0.0]", cnet: "tcp4", caddr: "127.0.0.1"}, + + {snet: "tcp4", saddr: "127.0.0.1", cnet: "tcp4", caddr: "127.0.0.1"}, + + {snet: "tcp6", saddr: "", cnet: "tcp6", caddr: "[::1]", ipv6: true}, + {snet: "tcp6", saddr: "[::]", cnet: "tcp6", caddr: "[::1]", ipv6: true}, + + {snet: "tcp6", saddr: "[::1]", cnet: "tcp6", caddr: "[::1]", ipv6: true}, + + {snet: "unix", saddr: "/tmp/gotest1.net", cnet: "unix", caddr: "/tmp/gotest1.net.local"}, + {snet: "unix", saddr: "@gotest2/net", cnet: "unix", caddr: "@gotest2/net.local", linux: true}, +} + +func TestStreamConnServer(t *testing.T) { + for _, tt := range streamConnServerTests { + if skipServerTest(tt.snet, "unix", tt.saddr, tt.ipv6, tt.ipv4map, tt.linux) { + continue + } + + listening := make(chan string) + done := make(chan int) + switch tt.snet { + case "tcp", "tcp4", "tcp6": + tt.saddr += ":0" + case "unix": + os.Remove(tt.saddr) + os.Remove(tt.caddr) + } + + go runStreamConnServer(t, tt.snet, tt.saddr, listening, done) + taddr := <-listening // wait for server to start + + switch tt.cnet { + case "tcp", "tcp4", "tcp6": + _, port, err := SplitHostPort(taddr) + if err != nil { + t.Errorf("SplitHostPort(%q) failed: %v", taddr, err) + return + } + taddr = tt.caddr + ":" + port + } + + runStreamConnClient(t, tt.cnet, taddr, tt.empty) + <-done // make sure server stopped + + switch tt.snet { + case "unix": + os.Remove(tt.saddr) + os.Remove(tt.caddr) + } + } +} + +var seqpacketConnServerTests = []struct { + net string + saddr string // server address + caddr string // client address + empty bool // test with empty data +}{ + {net: "unixpacket", saddr: "/tmp/gotest3.net", caddr: "/tmp/gotest3.net.local"}, + {net: "unixpacket", saddr: "@gotest4/net", caddr: "@gotest4/net.local"}, +} + +func TestSeqpacketConnServer(t *testing.T) { + if runtime.GOOS != "linux" { + t.Logf("skipping test on %q", runtime.GOOS) + return + } + + for _, tt := range seqpacketConnServerTests { + listening := make(chan string) + done := make(chan int) + switch tt.net { + case "unixpacket": + os.Remove(tt.saddr) + os.Remove(tt.caddr) + } + + go runStreamConnServer(t, tt.net, tt.saddr, listening, done) + taddr := <-listening // wait for server to start + + runStreamConnClient(t, tt.net, taddr, tt.empty) + <-done // make sure server stopped + + switch tt.net { + case "unixpacket": + os.Remove(tt.saddr) + os.Remove(tt.caddr) } - fd.Write(buf[0:n]) } - done <- 1 } -func runServe(t *testing.T, network, addr string, listening chan<- string, done chan<- int) { - l, err := Listen(network, addr) +func runStreamConnServer(t *testing.T, net, laddr string, listening chan<- string, done chan<- int) { + l, err := Listen(net, laddr) if err != nil { - t.Fatalf("net.Listen(%q, %q) = _, %v", network, addr, err) + t.Errorf("Listen(%q, %q) failed: %v", net, laddr, err) + listening <- "<nil>" + done <- 1 + return } + defer l.Close() listening <- l.Addr().String() + echo := func(rw io.ReadWriter, done chan<- int) { + buf := make([]byte, 1024) + for { + n, err := rw.Read(buf[0:]) + if err != nil || n == 0 || string(buf[:n]) == "END" { + break + } + rw.Write(buf[0:n]) + } + done <- 1 + } + +run: for { - fd, err := l.Accept() + c, err := l.Accept() if err != nil { - break + continue run } echodone := make(chan int) - go runEcho(fd, echodone) - <-echodone // make sure Echo stops - l.Close() + go echo(c, echodone) + <-echodone // make sure echo stopped + c.Close() + break run } done <- 1 } -func connect(t *testing.T, network, addr string, isEmpty bool) { - var fd Conn - var err error - if network == "unixgram" { - fd, err = DialUnix(network, &UnixAddr{addr + ".local", network}, &UnixAddr{addr, network}) - } else { - fd, err = Dial(network, addr) - } +func runStreamConnClient(t *testing.T, net, taddr string, isEmpty bool) { + c, err := Dial(net, taddr) if err != nil { - t.Fatalf("net.Dial(%q, %q) = _, %v", network, addr, err) + t.Errorf("Dial(%q, %q) failed: %v", net, taddr, err) + return } - fd.SetReadDeadline(time.Now().Add(1 * time.Second)) + defer c.Close() + c.SetReadDeadline(time.Now().Add(1 * time.Second)) - var b []byte + var wb []byte if !isEmpty { - b = []byte("hello, world\n") + wb = []byte("StreamConnClient by Dial\n") } - var b1 [100]byte - - n, err1 := fd.Write(b) - if n != len(b) { - t.Fatalf("fd.Write(%q) = %d, %v", b, n, err1) + if n, err := c.Write(wb); err != nil || n != len(wb) { + t.Errorf("Write failed: %v, %v; want %v, <nil>", n, err, len(wb)) + return } - n, err1 = fd.Read(b1[0:]) - if n != len(b) || err1 != nil { - t.Fatalf("fd.Read() = %d, %v (want %d, nil)", n, err1, len(b)) + rb := make([]byte, 1024) + if n, err := c.Read(rb[0:]); err != nil || n != len(wb) { + t.Errorf("Read failed: %v, %v; want %v, <nil>", n, err, len(wb)) + return } // Send explicit ending for unixpacket. // Older Linux kernels do not stop reads on close. - if network == "unixpacket" { - fd.Write([]byte("END")) + switch net { + case "unixpacket": + c.Write([]byte("END")) } - - fd.Close() } -func doTest(t *testing.T, network, listenaddr, dialaddr string) { - t.Logf("Test %q %q %q", network, listenaddr, dialaddr) - switch listenaddr { - case "", "0.0.0.0", "[::]", "[::ffff:0.0.0.0]": - if testing.Short() || !*testExternal { - t.Logf("skip wildcard listen during short test") - return - } - } - listening := make(chan string) - done := make(chan int) - if network == "tcp" || network == "tcp4" || network == "tcp6" { - listenaddr += ":0" // any available port - } - go runServe(t, network, listenaddr, listening, done) - addr := <-listening // wait for server to start - if network == "tcp" || network == "tcp4" || network == "tcp6" { - dialaddr += addr[strings.LastIndex(addr, ":"):] - } - connect(t, network, dialaddr, false) - <-done // make sure server stopped -} +// Do not test empty datagrams by default. +// It causes unexplained timeouts on some systems, +// including Snow Leopard. I think that the kernel +// doesn't quite expect them. +var testDatagram = flag.Bool("datagram", false, "whether to test udp and unixgram") -func TestTCPServer(t *testing.T) { - doTest(t, "tcp", "", "127.0.0.1") - doTest(t, "tcp", "0.0.0.0", "127.0.0.1") - doTest(t, "tcp", "127.0.0.1", "127.0.0.1") - doTest(t, "tcp4", "", "127.0.0.1") - doTest(t, "tcp4", "0.0.0.0", "127.0.0.1") - doTest(t, "tcp4", "127.0.0.1", "127.0.0.1") - if supportsIPv6 { - doTest(t, "tcp", "[::]", "[::1]") - doTest(t, "tcp", "[::1]", "[::1]") - doTest(t, "tcp6", "", "[::1]") - doTest(t, "tcp6", "[::]", "[::1]") - doTest(t, "tcp6", "[::1]", "[::1]") - } - if supportsIPv6 && supportsIPv4map { - doTest(t, "tcp", "[::ffff:0.0.0.0]", "127.0.0.1") - doTest(t, "tcp", "[::]", "127.0.0.1") - doTest(t, "tcp4", "[::ffff:0.0.0.0]", "127.0.0.1") - doTest(t, "tcp6", "", "127.0.0.1") - doTest(t, "tcp6", "[::ffff:0.0.0.0]", "127.0.0.1") - doTest(t, "tcp6", "[::]", "127.0.0.1") - doTest(t, "tcp", "127.0.0.1", "[::ffff:127.0.0.1]") - doTest(t, "tcp", "[::ffff:127.0.0.1]", "127.0.0.1") - doTest(t, "tcp4", "127.0.0.1", "[::ffff:127.0.0.1]") - doTest(t, "tcp4", "[::ffff:127.0.0.1]", "127.0.0.1") - doTest(t, "tcp6", "127.0.0.1", "[::ffff:127.0.0.1]") - doTest(t, "tcp6", "[::ffff:127.0.0.1]", "127.0.0.1") - } +var datagramPacketConnServerTests = []struct { + snet string // server side + saddr string + cnet string // client side + caddr string + ipv6 bool // test with underlying AF_INET6 socket + ipv4map bool // test with IPv6 IPv4-mapping functionality + dial bool // test with Dial or DialUnix + empty bool // test with empty data + linux bool // test with abstract unix domain socket, a Linux-ism +}{ + {snet: "udp", saddr: "", cnet: "udp", caddr: "127.0.0.1"}, + {snet: "udp", saddr: "0.0.0.0", cnet: "udp", caddr: "127.0.0.1"}, + {snet: "udp", saddr: "[::ffff:0.0.0.0]", cnet: "udp", caddr: "127.0.0.1"}, + {snet: "udp", saddr: "[::]", cnet: "udp", caddr: "[::1]", ipv6: true}, + + {snet: "udp", saddr: "", cnet: "udp", caddr: "[::1]", ipv4map: true}, + {snet: "udp", saddr: "0.0.0.0", cnet: "udp", caddr: "[::1]", ipv4map: true}, + {snet: "udp", saddr: "[::ffff:0.0.0.0]", cnet: "udp", caddr: "[::1]", ipv4map: true}, + {snet: "udp", saddr: "[::]", cnet: "udp", caddr: "127.0.0.1", ipv4map: true}, + + {snet: "udp", saddr: "", cnet: "udp4", caddr: "127.0.0.1"}, + {snet: "udp", saddr: "0.0.0.0", cnet: "udp4", caddr: "127.0.0.1"}, + {snet: "udp", saddr: "[::ffff:0.0.0.0]", cnet: "udp4", caddr: "127.0.0.1"}, + {snet: "udp", saddr: "[::]", cnet: "udp6", caddr: "[::1]", ipv6: true}, + + {snet: "udp", saddr: "", cnet: "udp6", caddr: "[::1]", ipv4map: true}, + {snet: "udp", saddr: "0.0.0.0", cnet: "udp6", caddr: "[::1]", ipv4map: true}, + {snet: "udp", saddr: "[::ffff:0.0.0.0]", cnet: "udp6", caddr: "[::1]", ipv4map: true}, + {snet: "udp", saddr: "[::]", cnet: "udp4", caddr: "127.0.0.1", ipv4map: true}, + + {snet: "udp", saddr: "127.0.0.1", cnet: "udp", caddr: "127.0.0.1"}, + {snet: "udp", saddr: "[::ffff:127.0.0.1]", cnet: "udp", caddr: "127.0.0.1"}, + {snet: "udp", saddr: "[::1]", cnet: "udp", caddr: "[::1]", ipv6: true}, + + {snet: "udp4", saddr: "", cnet: "udp4", caddr: "127.0.0.1"}, + {snet: "udp4", saddr: "0.0.0.0", cnet: "udp4", caddr: "127.0.0.1"}, + {snet: "udp4", saddr: "[::ffff:0.0.0.0]", cnet: "udp4", caddr: "127.0.0.1"}, + + {snet: "udp4", saddr: "127.0.0.1", cnet: "udp4", caddr: "127.0.0.1"}, + + {snet: "udp6", saddr: "", cnet: "udp6", caddr: "[::1]", ipv6: true}, + {snet: "udp6", saddr: "[::]", cnet: "udp6", caddr: "[::1]", ipv6: true}, + + {snet: "udp6", saddr: "[::1]", cnet: "udp6", caddr: "[::1]", ipv6: true}, + + {snet: "udp", saddr: "127.0.0.1", cnet: "udp", caddr: "127.0.0.1", dial: true}, + {snet: "udp", saddr: "127.0.0.1", cnet: "udp", caddr: "127.0.0.1", empty: true}, + {snet: "udp", saddr: "127.0.0.1", cnet: "udp", caddr: "127.0.0.1", dial: true, empty: true}, + + {snet: "udp", saddr: "[::1]", cnet: "udp", caddr: "[::1]", ipv6: true, dial: true}, + {snet: "udp", saddr: "[::1]", cnet: "udp", caddr: "[::1]", ipv6: true, empty: true}, + {snet: "udp", saddr: "[::1]", cnet: "udp", caddr: "[::1]", ipv6: true, dial: true, empty: true}, + + {snet: "unixgram", saddr: "/tmp/gotest5.net", cnet: "unixgram", caddr: "/tmp/gotest5.net.local"}, + {snet: "unixgram", saddr: "/tmp/gotest5.net", cnet: "unixgram", caddr: "/tmp/gotest5.net.local", dial: true}, + {snet: "unixgram", saddr: "/tmp/gotest5.net", cnet: "unixgram", caddr: "/tmp/gotest5.net.local", empty: true}, + {snet: "unixgram", saddr: "/tmp/gotest5.net", cnet: "unixgram", caddr: "/tmp/gotest5.net.local", dial: true, empty: true}, + + {snet: "unixgram", saddr: "@gotest6/net", cnet: "unixgram", caddr: "@gotest6/net.local", linux: true}, } -func TestUnixServer(t *testing.T) { - // "unix" sockets are not supported on windows and Plan 9. - if runtime.GOOS == "windows" || runtime.GOOS == "plan9" { +func TestDatagramPacketConnServer(t *testing.T) { + if !*testDatagram { return } - os.Remove("/tmp/gotest.net") - doTest(t, "unix", "/tmp/gotest.net", "/tmp/gotest.net") - os.Remove("/tmp/gotest.net") - if runtime.GOOS == "linux" { - doTest(t, "unixpacket", "/tmp/gotest.net", "/tmp/gotest.net") - os.Remove("/tmp/gotest.net") - // Test abstract unix domain socket, a Linux-ism - doTest(t, "unix", "@gotest/net", "@gotest/net") - doTest(t, "unixpacket", "@gotest/net", "@gotest/net") + + for _, tt := range datagramPacketConnServerTests { + if skipServerTest(tt.snet, "unixgram", tt.saddr, tt.ipv6, tt.ipv4map, tt.linux) { + continue + } + + listening := make(chan string) + done := make(chan int) + switch tt.snet { + case "udp", "udp4", "udp6": + tt.saddr += ":0" + case "unixgram": + os.Remove(tt.saddr) + os.Remove(tt.caddr) + } + + go runDatagramPacketConnServer(t, tt.snet, tt.saddr, listening, done) + taddr := <-listening // wait for server to start + + switch tt.cnet { + case "udp", "udp4", "udp6": + _, port, err := SplitHostPort(taddr) + if err != nil { + t.Errorf("SplitHostPort(%q) failed: %v", taddr, err) + return + } + taddr = tt.caddr + ":" + port + tt.caddr += ":0" + } + if tt.dial { + runDatagramConnClient(t, tt.cnet, tt.caddr, taddr, tt.empty) + } else { + runDatagramPacketConnClient(t, tt.cnet, tt.caddr, taddr, tt.empty) + } + <-done // tell server to stop + <-done // make sure server stopped + + switch tt.snet { + case "unixgram": + os.Remove(tt.saddr) + os.Remove(tt.caddr) + } } } -func runPacket(t *testing.T, network, addr string, listening chan<- string, done chan<- int) { - c, err := ListenPacket(network, addr) +func runDatagramPacketConnServer(t *testing.T, net, laddr string, listening chan<- string, done chan<- int) { + c, err := ListenPacket(net, laddr) if err != nil { - t.Fatalf("net.ListenPacket(%q, %q) = _, %v", network, addr, err) + t.Errorf("ListenPacket(%q, %q) failed: %v", net, laddr, err) + listening <- "<nil>" + done <- 1 + return } + defer c.Close() listening <- c.LocalAddr().String() - var buf [1000]byte -Run: + + buf := make([]byte, 1024) +run: for { c.SetReadDeadline(time.Now().Add(10 * time.Millisecond)) - n, addr, err := c.ReadFrom(buf[0:]) - if e, ok := err.(Error); ok && e.Timeout() { + n, ra, err := c.ReadFrom(buf[0:]) + if nerr, ok := err.(Error); ok && nerr.Timeout() { select { case done <- 1: - break Run + break run default: - continue Run + continue run } } if err != nil { - break + break run } - if _, err = c.WriteTo(buf[0:n], addr); err != nil { - t.Fatalf("WriteTo %v: %v", addr, err) + if _, err = c.WriteTo(buf[0:n], ra); err != nil { + t.Errorf("WriteTo(%v) failed: %v", ra, err) + break run } } - c.Close() done <- 1 } -func doTestPacket(t *testing.T, network, listenaddr, dialaddr string, isEmpty bool) { - t.Logf("TestPacket %q %q %q", network, listenaddr, dialaddr) - listening := make(chan string) - done := make(chan int) - if network == "udp" { - listenaddr += ":0" // any available port - } - go runPacket(t, network, listenaddr, listening, done) - addr := <-listening // wait for server to start - if network == "udp" { - dialaddr += addr[strings.LastIndex(addr, ":"):] - } - connect(t, network, dialaddr, isEmpty) - <-done // tell server to stop - <-done // wait for stop -} +func runDatagramConnClient(t *testing.T, net, laddr, taddr string, isEmpty bool) { + var c Conn + var err error + switch net { + case "udp", "udp4", "udp6": + c, err = Dial(net, taddr) + if err != nil { + t.Errorf("Dial(%q, %q) failed: %v", net, taddr, err) + return + } + case "unixgram": + c, err = DialUnix(net, &UnixAddr{laddr, net}, &UnixAddr{taddr, net}) + if err != nil { + t.Errorf("DialUnix(%q, {%q, %q}) failed: %v", net, laddr, taddr, err) + return + } + } + defer c.Close() + c.SetReadDeadline(time.Now().Add(1 * time.Second)) -func TestUDPServer(t *testing.T) { - if !*testUDP { + var wb []byte + if !isEmpty { + wb = []byte("DatagramConnClient by Dial\n") + } + if n, err := c.Write(wb[0:]); err != nil || n != len(wb) { + t.Errorf("Write failed: %v, %v; want %v, <nil>", n, err, len(wb)) return } - for _, isEmpty := range []bool{false, true} { - doTestPacket(t, "udp", "0.0.0.0", "127.0.0.1", isEmpty) - doTestPacket(t, "udp", "", "127.0.0.1", isEmpty) - if supportsIPv6 && supportsIPv4map { - doTestPacket(t, "udp", "[::]", "[::ffff:127.0.0.1]", isEmpty) - doTestPacket(t, "udp", "[::]", "127.0.0.1", isEmpty) - doTestPacket(t, "udp", "0.0.0.0", "[::ffff:127.0.0.1]", isEmpty) - } + + rb := make([]byte, 1024) + if n, err := c.Read(rb[0:]); err != nil || n != len(wb) { + t.Errorf("Read failed: %v, %v; want %v, <nil>", n, err, len(wb)) + return } } -func TestUnixDatagramServer(t *testing.T) { - // "unix" sockets are not supported on windows and Plan 9. - if runtime.GOOS == "windows" || runtime.GOOS == "plan9" { +func runDatagramPacketConnClient(t *testing.T, net, laddr, taddr string, isEmpty bool) { + var ra Addr + var err error + switch net { + case "udp", "udp4", "udp6": + ra, err = ResolveUDPAddr(net, taddr) + if err != nil { + t.Errorf("ResolveUDPAddr(%q, %q) failed: %v", net, taddr, err) + return + } + case "unixgram": + ra, err = ResolveUnixAddr(net, taddr) + if err != nil { + t.Errorf("ResolveUxixAddr(%q, %q) failed: %v", net, taddr, err) + return + } + } + c, err := ListenPacket(net, laddr) + if err != nil { + t.Errorf("ListenPacket(%q, %q) faild: %v", net, laddr, err) return } - for _, isEmpty := range []bool{false} { - os.Remove("/tmp/gotest1.net") - os.Remove("/tmp/gotest1.net.local") - doTestPacket(t, "unixgram", "/tmp/gotest1.net", "/tmp/gotest1.net", isEmpty) - os.Remove("/tmp/gotest1.net") - os.Remove("/tmp/gotest1.net.local") - if runtime.GOOS == "linux" { - // Test abstract unix domain socket, a Linux-ism - doTestPacket(t, "unixgram", "@gotest1/net", "@gotest1/net", isEmpty) - } + defer c.Close() + c.SetReadDeadline(time.Now().Add(1 * time.Second)) + + var wb []byte + if !isEmpty { + wb = []byte("DatagramPacketConnClient by ListenPacket\n") + } + if n, err := c.WriteTo(wb[0:], ra); err != nil || n != len(wb) { + t.Errorf("WriteTo(%v) failed: %v, %v; want %v, <nil>", ra, n, err, len(wb)) + return + } + + rb := make([]byte, 1024) + if n, _, err := c.ReadFrom(rb[0:]); err != nil || n != len(wb) { + t.Errorf("ReadFrom failed: %v, %v; want %v, <nil>", n, err, len(wb)) + return } } diff --git a/src/pkg/net/sock.go b/src/pkg/net/sock.go index dc139f04a..3ae16054e 100644 --- a/src/pkg/net/sock.go +++ b/src/pkg/net/sock.go @@ -16,7 +16,7 @@ import ( var listenerBacklog = maxListenerBacklog() // Generic socket creation. -func socket(net string, f, t, p int, la, ra syscall.Sockaddr, toAddr func(syscall.Sockaddr) Addr) (fd *netFD, err error) { +func socket(net string, f, t, p int, ipv6only bool, la, ra syscall.Sockaddr, toAddr func(syscall.Sockaddr) Addr) (fd *netFD, err error) { // See ../syscall/exec.go for description of ForkLock. syscall.ForkLock.RLock() s, err := syscall.Socket(f, t, p) @@ -27,7 +27,7 @@ func socket(net string, f, t, p int, la, ra syscall.Sockaddr, toAddr func(syscal syscall.CloseOnExec(s) syscall.ForkLock.RUnlock() - err = setDefaultSockopts(s, f, t) + err = setDefaultSockopts(s, f, t, ipv6only) if err != nil { closesocket(s) return nil, err diff --git a/src/pkg/net/sockopt.go b/src/pkg/net/sockopt.go index 0a051d7ae..0cd19266f 100644 --- a/src/pkg/net/sockopt.go +++ b/src/pkg/net/sockopt.go @@ -9,7 +9,6 @@ package net import ( - "bytes" "os" "syscall" "time" @@ -98,7 +97,7 @@ func setIPv4MreqToInterface(mreq *syscall.IPMreq, ifi *Interface) error { } } done: - if bytes.Equal(mreq.Multiaddr[:], IPv4zero.To4()) { + if bytesEqual(mreq.Multiaddr[:], IPv4zero.To4()) { return errNoSuchMulticastInterface } return nil diff --git a/src/pkg/net/sockopt_bsd.go b/src/pkg/net/sockopt_bsd.go index 79e0e57e2..fff65f362 100644 --- a/src/pkg/net/sockopt_bsd.go +++ b/src/pkg/net/sockopt_bsd.go @@ -13,12 +13,17 @@ import ( "syscall" ) -func setDefaultSockopts(s, f, t int) error { +func setDefaultSockopts(s, f, t int, ipv6only bool) error { switch f { case syscall.AF_INET6: - // Allow both IP versions even if the OS default is otherwise. - // Note that some operating systems never admit this option. - syscall.SetsockoptInt(s, syscall.IPPROTO_IPV6, syscall.IPV6_V6ONLY, 0) + if ipv6only { + syscall.SetsockoptInt(s, syscall.IPPROTO_IPV6, syscall.IPV6_V6ONLY, 1) + } else { + // Allow both IP versions even if the OS default + // is otherwise. Note that some operating systems + // never admit this option. + syscall.SetsockoptInt(s, syscall.IPPROTO_IPV6, syscall.IPV6_V6ONLY, 0) + } } // Allow broadcast. err := syscall.SetsockoptInt(s, syscall.SOL_SOCKET, syscall.SO_BROADCAST, 1) diff --git a/src/pkg/net/sockopt_linux.go b/src/pkg/net/sockopt_linux.go index 7509c29ee..0f47538c5 100644 --- a/src/pkg/net/sockopt_linux.go +++ b/src/pkg/net/sockopt_linux.go @@ -11,12 +11,17 @@ import ( "syscall" ) -func setDefaultSockopts(s, f, t int) error { +func setDefaultSockopts(s, f, t int, ipv6only bool) error { switch f { case syscall.AF_INET6: - // Allow both IP versions even if the OS default is otherwise. - // Note that some operating systems never admit this option. - syscall.SetsockoptInt(s, syscall.IPPROTO_IPV6, syscall.IPV6_V6ONLY, 0) + if ipv6only { + syscall.SetsockoptInt(s, syscall.IPPROTO_IPV6, syscall.IPV6_V6ONLY, 1) + } else { + // Allow both IP versions even if the OS default + // is otherwise. Note that some operating systems + // never admit this option. + syscall.SetsockoptInt(s, syscall.IPPROTO_IPV6, syscall.IPV6_V6ONLY, 0) + } } // Allow broadcast. err := syscall.SetsockoptInt(s, syscall.SOL_SOCKET, syscall.SO_BROADCAST, 1) diff --git a/src/pkg/net/sockopt_windows.go b/src/pkg/net/sockopt_windows.go index b18af67d7..509b5963b 100644 --- a/src/pkg/net/sockopt_windows.go +++ b/src/pkg/net/sockopt_windows.go @@ -11,12 +11,17 @@ import ( "syscall" ) -func setDefaultSockopts(s syscall.Handle, f, t int) error { +func setDefaultSockopts(s syscall.Handle, f, t int, ipv6only bool) error { switch f { case syscall.AF_INET6: - // Allow both IP versions even if the OS default is otherwise. - // Note that some operating systems never admit this option. - syscall.SetsockoptInt(s, syscall.IPPROTO_IPV6, syscall.IPV6_V6ONLY, 0) + if ipv6only { + syscall.SetsockoptInt(s, syscall.IPPROTO_IPV6, syscall.IPV6_V6ONLY, 1) + } else { + // Allow both IP versions even if the OS default + // is otherwise. Note that some operating systems + // never admit this option. + syscall.SetsockoptInt(s, syscall.IPPROTO_IPV6, syscall.IPV6_V6ONLY, 0) + } } // Allow broadcast. syscall.SetsockoptInt(s, syscall.SOL_SOCKET, syscall.SO_BROADCAST, 1) diff --git a/src/pkg/net/tcpsock_posix.go b/src/pkg/net/tcpsock_posix.go index e05bc1017..15f8efdd7 100644 --- a/src/pkg/net/tcpsock_posix.go +++ b/src/pkg/net/tcpsock_posix.go @@ -9,7 +9,6 @@ package net import ( - "fmt" "io" "os" "syscall" @@ -30,7 +29,7 @@ func sockaddrToTCP(sa syscall.Sockaddr) Addr { default: if sa != nil { // Diagnose when we will turn a non-nil sockaddr into a nil. - panic(fmt.Sprintf("unexpected type in sockaddrToTCP: %T", sa)) + panic("unexpected type in sockaddrToTCP") } } return nil @@ -46,6 +45,13 @@ func (a *TCPAddr) family() int { return syscall.AF_INET6 } +func (a *TCPAddr) isWildcard() bool { + if a == nil || a.IP == nil { + return true + } + return a.IP.IsUnspecified() +} + func (a *TCPAddr) sockaddr(family int) (syscall.Sockaddr, error) { return ipToSockaddr(family, a.IP, a.Port) } diff --git a/src/pkg/net/timeout_test.go b/src/pkg/net/timeout_test.go index ef350f0f9..672fb7241 100644 --- a/src/pkg/net/timeout_test.go +++ b/src/pkg/net/timeout_test.go @@ -11,13 +11,13 @@ import ( "time" ) -func testTimeout(t *testing.T, network, addr string, readFrom bool) { - fd, err := Dial(network, addr) +func testTimeout(t *testing.T, net, addr string, readFrom bool) { + c, err := Dial(net, addr) if err != nil { - t.Errorf("dial %s %s failed: %v", network, addr, err) + t.Errorf("Dial(%q, %q) failed: %v", net, addr, err) return } - defer fd.Close() + defer c.Close() what := "Read" if readFrom { what = "ReadFrom" @@ -26,22 +26,22 @@ func testTimeout(t *testing.T, network, addr string, readFrom bool) { errc := make(chan error, 1) go func() { t0 := time.Now() - fd.SetReadDeadline(time.Now().Add(100 * time.Millisecond)) + c.SetReadDeadline(time.Now().Add(100 * time.Millisecond)) var b [100]byte var n int - var err1 error + var err error if readFrom { - n, _, err1 = fd.(PacketConn).ReadFrom(b[0:]) + n, _, err = c.(PacketConn).ReadFrom(b[0:]) } else { - n, err1 = fd.Read(b[0:]) + n, err = c.Read(b[0:]) } t1 := time.Now() - if n != 0 || err1 == nil || !err1.(Error).Timeout() { - errc <- fmt.Errorf("fd.%s on %s %s did not return 0, timeout: %v, %v", what, network, addr, n, err1) + if n != 0 || err == nil || !err.(Error).Timeout() { + errc <- fmt.Errorf("%s(%q, %q) did not return 0, timeout: %v, %v", what, net, addr, n, err) return } if dt := t1.Sub(t0); dt < 50*time.Millisecond || !testing.Short() && dt > 250*time.Millisecond { - errc <- fmt.Errorf("fd.%s on %s %s took %s, expected 0.1s", what, network, addr, dt) + errc <- fmt.Errorf("%s(%q, %q) took %s, expected 0.1s", what, net, addr, dt) return } errc <- nil @@ -52,26 +52,39 @@ func testTimeout(t *testing.T, network, addr string, readFrom bool) { t.Error(err) } case <-time.After(1 * time.Second): - t.Errorf("%s on %s %s took over 1 second, expected 0.1s", what, network, addr) + t.Errorf("%s(%q, %q) took over 1 second, expected 0.1s", what, net, addr) } } func TestTimeoutUDP(t *testing.T) { - if runtime.GOOS == "plan9" { + switch runtime.GOOS { + case "plan9": + t.Logf("skipping test on %q", runtime.GOOS) return } - testTimeout(t, "udp", "127.0.0.1:53", false) - testTimeout(t, "udp", "127.0.0.1:53", true) + + // set up a listener that won't talk back + listening := make(chan string) + done := make(chan int) + go runDatagramPacketConnServer(t, "udp", "127.0.0.1:0", listening, done) + addr := <-listening + + testTimeout(t, "udp", addr, false) + testTimeout(t, "udp", addr, true) + <-done } func TestTimeoutTCP(t *testing.T) { - if runtime.GOOS == "plan9" { + switch runtime.GOOS { + case "plan9": + t.Logf("skipping test on %q", runtime.GOOS) return } + // set up a listener that won't talk back listening := make(chan string) done := make(chan int) - go runServe(t, "tcp", "127.0.0.1:0", listening, done) + go runStreamConnServer(t, "tcp", "127.0.0.1:0", listening, done) addr := <-listening testTimeout(t, "tcp", addr, false) @@ -79,7 +92,9 @@ func TestTimeoutTCP(t *testing.T) { } func TestDeadlineReset(t *testing.T) { - if runtime.GOOS == "plan9" { + switch runtime.GOOS { + case "plan9": + t.Logf("skipping test on %q", runtime.GOOS) return } ln, err := Listen("tcp", "127.0.0.1:0") diff --git a/src/pkg/net/udp_test.go b/src/pkg/net/udp_test.go index ea5fad41a..f80d3b5a9 100644 --- a/src/pkg/net/udp_test.go +++ b/src/pkg/net/udp_test.go @@ -10,7 +10,9 @@ import ( ) func TestWriteToUDP(t *testing.T) { - if runtime.GOOS == "plan9" { + switch runtime.GOOS { + case "plan9": + t.Logf("skipping test on %q", runtime.GOOS) return } diff --git a/src/pkg/net/udpsock_posix.go b/src/pkg/net/udpsock_posix.go index 1f99dc538..9e820e1c5 100644 --- a/src/pkg/net/udpsock_posix.go +++ b/src/pkg/net/udpsock_posix.go @@ -37,6 +37,13 @@ func (a *UDPAddr) family() int { return syscall.AF_INET6 } +func (a *UDPAddr) isWildcard() bool { + if a == nil || a.IP == nil { + return true + } + return a.IP.IsUnspecified() +} + func (a *UDPAddr) sockaddr(family int) (syscall.Sockaddr, error) { return ipToSockaddr(family, a.IP, a.Port) } diff --git a/src/pkg/net/unicast_test.go b/src/pkg/net/unicast_test.go index 297276d3a..e5dd013db 100644 --- a/src/pkg/net/unicast_test.go +++ b/src/pkg/net/unicast_test.go @@ -5,83 +5,482 @@ package net import ( - "io" "runtime" + "syscall" "testing" ) -var unicastTests = []struct { - net string - laddr string - ipv6 bool - packet bool +var listenerTests = []struct { + net string + laddr string + ipv6 bool // test with underlying AF_INET6 socket + wildcard bool // test with wildcard address }{ - {net: "tcp4", laddr: "127.0.0.1:0"}, - {net: "tcp4", laddr: "previous"}, - {net: "tcp6", laddr: "[::1]:0", ipv6: true}, - {net: "tcp6", laddr: "previous", ipv6: true}, - {net: "udp4", laddr: "127.0.0.1:0", packet: true}, - {net: "udp6", laddr: "[::1]:0", ipv6: true, packet: true}, + {net: "tcp", laddr: "", wildcard: true}, + {net: "tcp", laddr: "0.0.0.0", wildcard: true}, + {net: "tcp", laddr: "[::ffff:0.0.0.0]", wildcard: true}, + {net: "tcp", laddr: "[::]", ipv6: true, wildcard: true}, + + {net: "tcp", laddr: "127.0.0.1"}, + {net: "tcp", laddr: "[::ffff:127.0.0.1]"}, + {net: "tcp", laddr: "[::1]", ipv6: true}, + + {net: "tcp4", laddr: "", wildcard: true}, + {net: "tcp4", laddr: "0.0.0.0", wildcard: true}, + {net: "tcp4", laddr: "[::ffff:0.0.0.0]", wildcard: true}, + + {net: "tcp4", laddr: "127.0.0.1"}, + {net: "tcp4", laddr: "[::ffff:127.0.0.1]"}, + + {net: "tcp6", laddr: "", ipv6: true, wildcard: true}, + {net: "tcp6", laddr: "[::]", ipv6: true, wildcard: true}, + + {net: "tcp6", laddr: "[::1]", ipv6: true}, } -func TestUnicastTCPAndUDP(t *testing.T) { - if runtime.GOOS == "plan9" || runtime.GOOS == "windows" { +// TestTCPListener tests both single and double listen to a test +// listener with same address family, same listening address and +// same port. +func TestTCPListener(t *testing.T) { + switch runtime.GOOS { + case "plan9", "windows": + t.Logf("skipping test on %q", runtime.GOOS) return } - prevladdr := "" - for _, tt := range unicastTests { + for _, tt := range listenerTests { + if tt.wildcard && (testing.Short() || !*testExternal) { + continue + } if tt.ipv6 && !supportsIPv6 { continue } - var ( - fd *netFD - closer io.Closer - ) - if !tt.packet { - if tt.laddr == "previous" { - tt.laddr = prevladdr + l1, port := usableListenPort(t, tt.net, tt.laddr) + checkFirstListener(t, tt.net, tt.laddr+":"+port, l1) + l2, err := Listen(tt.net, tt.laddr+":"+port) + checkSecondListener(t, tt.net, tt.laddr+":"+port, err, l2) + fd := l1.(*TCPListener).fd + switch fd.family { + case syscall.AF_INET: + testIPv4UnicastSocketOptions(t, fd) + case syscall.AF_INET6: + testIPv6UnicastSocketOptions(t, fd) + } + l1.Close() + } +} + +// TestUDPListener tests both single and double listen to a test +// listener with same address family, same listening address and +// same port. +func TestUDPListener(t *testing.T) { + switch runtime.GOOS { + case "plan9", "windows": + t.Logf("skipping test on %q", runtime.GOOS) + return + } + + toudpnet := func(net string) string { + switch net { + case "tcp": + return "udp" + case "tcp4": + return "udp4" + case "tcp6": + return "udp6" + } + return "<nil>" + } + + for _, tt := range listenerTests { + if tt.wildcard && (testing.Short() || !*testExternal) { + continue + } + if tt.ipv6 && !supportsIPv6 { + continue + } + tt.net = toudpnet(tt.net) + l1, port := usableListenPacketPort(t, tt.net, tt.laddr) + checkFirstListener(t, tt.net, tt.laddr+":"+port, l1) + l2, err := ListenPacket(tt.net, tt.laddr+":"+port) + checkSecondListener(t, tt.net, tt.laddr+":"+port, err, l2) + fd := l1.(*UDPConn).fd + switch fd.family { + case syscall.AF_INET: + testIPv4UnicastSocketOptions(t, fd) + case syscall.AF_INET6: + testIPv6UnicastSocketOptions(t, fd) + } + l1.Close() + } +} + +func TestSimpleTCPListener(t *testing.T) { + switch runtime.GOOS { + case "plan9": + t.Logf("skipping test on %q", runtime.GOOS) + return + } + + for _, tt := range listenerTests { + if tt.wildcard && (testing.Short() || !*testExternal) { + continue + } + if tt.ipv6 { + continue + } + l1, port := usableListenPort(t, tt.net, tt.laddr) + checkFirstListener(t, tt.net, tt.laddr+":"+port, l1) + l2, err := Listen(tt.net, tt.laddr+":"+port) + checkSecondListener(t, tt.net, tt.laddr+":"+port, err, l2) + l1.Close() + } +} + +func TestSimpleUDPListener(t *testing.T) { + switch runtime.GOOS { + case "plan9": + t.Logf("skipping test on %q", runtime.GOOS) + return + } + + toudpnet := func(net string) string { + switch net { + case "tcp": + return "udp" + case "tcp4": + return "udp4" + case "tcp6": + return "udp6" + } + return "<nil>" + } + + for _, tt := range listenerTests { + if tt.wildcard && (testing.Short() || !*testExternal) { + continue + } + if tt.ipv6 { + continue + } + tt.net = toudpnet(tt.net) + l1, port := usableListenPacketPort(t, tt.net, tt.laddr) + checkFirstListener(t, tt.net, tt.laddr+":"+port, l1) + l2, err := ListenPacket(tt.net, tt.laddr+":"+port) + checkSecondListener(t, tt.net, tt.laddr+":"+port, err, l2) + l1.Close() + } +} + +var dualStackListenerTests = []struct { + net1 string // first listener + laddr1 string + net2 string // second listener + laddr2 string + wildcard bool // test with wildcard address + xerr error // expected error value, nil or other +}{ + // Test cases and expected results for the attemping 2nd listen on the same port + // 1st listen 2nd listen darwin freebsd linux openbsd + // ------------------------------------------------------------------------------------ + // "tcp" "" "tcp" "" - - - - + // "tcp" "" "tcp" "0.0.0.0" - - - - + // "tcp" "0.0.0.0" "tcp" "" - - - - + // ------------------------------------------------------------------------------------ + // "tcp" "" "tcp" "[::]" - - - ok + // "tcp" "[::]" "tcp" "" - - - ok + // "tcp" "0.0.0.0" "tcp" "[::]" - - - ok + // "tcp" "[::]" "tcp" "0.0.0.0" - - - ok + // "tcp" "[::ffff:0.0.0.0]" "tcp" "[::]" - - - ok + // "tcp" "[::]" "tcp" "[::ffff:0.0.0.0]" - - - ok + // ------------------------------------------------------------------------------------ + // "tcp4" "" "tcp6" "" ok ok ok ok + // "tcp6" "" "tcp4" "" ok ok ok ok + // "tcp4" "0.0.0.0" "tcp6" "[::]" ok ok ok ok + // "tcp6" "[::]" "tcp4" "0.0.0.0" ok ok ok ok + // ------------------------------------------------------------------------------------ + // "tcp" "127.0.0.1" "tcp" "[::1]" ok ok ok ok + // "tcp" "[::1]" "tcp" "127.0.0.1" ok ok ok ok + // "tcp4" "127.0.0.1" "tcp6" "[::1]" ok ok ok ok + // "tcp6" "[::1]" "tcp4" "127.0.0.1" ok ok ok ok + // + // Platform default configurations: + // darwin, kernel version 11.3.0 + // net.inet6.ip6.v6only=0 (overridable by sysctl or IPV6_V6ONLY option) + // freebsd, kernel version 8.2 + // net.inet6.ip6.v6only=1 (overridable by sysctl or IPV6_V6ONLY option) + // linux, kernel version 3.0.0 + // net.ipv6.bindv6only=0 (overridable by sysctl or IPV6_V6ONLY option) + // openbsd, kernel version 5.0 + // net.inet6.ip6.v6only=1 (overriding is prohibited) + + {net1: "tcp", laddr1: "", net2: "tcp", laddr2: "", wildcard: true, xerr: syscall.EADDRINUSE}, + {net1: "tcp", laddr1: "", net2: "tcp", laddr2: "0.0.0.0", wildcard: true, xerr: syscall.EADDRINUSE}, + {net1: "tcp", laddr1: "0.0.0.0", net2: "tcp", laddr2: "", wildcard: true, xerr: syscall.EADDRINUSE}, + + {net1: "tcp", laddr1: "", net2: "tcp", laddr2: "[::]", wildcard: true, xerr: syscall.EADDRINUSE}, + {net1: "tcp", laddr1: "[::]", net2: "tcp", laddr2: "", wildcard: true, xerr: syscall.EADDRINUSE}, + {net1: "tcp", laddr1: "0.0.0.0", net2: "tcp", laddr2: "[::]", wildcard: true, xerr: syscall.EADDRINUSE}, + {net1: "tcp", laddr1: "[::]", net2: "tcp", laddr2: "0.0.0.0", wildcard: true, xerr: syscall.EADDRINUSE}, + {net1: "tcp", laddr1: "[::ffff:0.0.0.0]", net2: "tcp", laddr2: "[::]", wildcard: true, xerr: syscall.EADDRINUSE}, + {net1: "tcp", laddr1: "[::]", net2: "tcp", laddr2: "[::ffff:0.0.0.0]", wildcard: true, xerr: syscall.EADDRINUSE}, + + {net1: "tcp4", laddr1: "", net2: "tcp6", laddr2: "", wildcard: true}, + {net1: "tcp6", laddr1: "", net2: "tcp4", laddr2: "", wildcard: true}, + {net1: "tcp4", laddr1: "0.0.0.0", net2: "tcp6", laddr2: "[::]", wildcard: true}, + {net1: "tcp6", laddr1: "[::]", net2: "tcp4", laddr2: "0.0.0.0", wildcard: true}, + + {net1: "tcp", laddr1: "127.0.0.1", net2: "tcp", laddr2: "[::1]"}, + {net1: "tcp", laddr1: "[::1]", net2: "tcp", laddr2: "127.0.0.1"}, + {net1: "tcp4", laddr1: "127.0.0.1", net2: "tcp6", laddr2: "[::1]"}, + {net1: "tcp6", laddr1: "[::1]", net2: "tcp4", laddr2: "127.0.0.1"}, +} + +// TestDualStackTCPListener tests both single and double listen +// to a test listener with various address families, differnet +// listening address and same port. +func TestDualStackTCPListener(t *testing.T) { + switch runtime.GOOS { + case "plan9": + t.Logf("skipping test on %q", runtime.GOOS) + return + } + if !supportsIPv6 { + return + } + + for _, tt := range dualStackListenerTests { + if tt.wildcard && (testing.Short() || !*testExternal) { + continue + } + switch runtime.GOOS { + case "openbsd": + if tt.wildcard && differentWildcardAddr(tt.laddr1, tt.laddr2) { + tt.xerr = nil + } + } + l1, port := usableListenPort(t, tt.net1, tt.laddr1) + laddr := tt.laddr1 + ":" + port + checkFirstListener(t, tt.net1, laddr, l1) + laddr = tt.laddr2 + ":" + port + l2, err := Listen(tt.net2, laddr) + checkDualStackSecondListener(t, tt.net2, laddr, tt.xerr, err, l2) + l1.Close() + } +} + +// TestDualStackUDPListener tests both single and double listen +// to a test listener with various address families, differnet +// listening address and same port. +func TestDualStackUDPListener(t *testing.T) { + switch runtime.GOOS { + case "plan9": + t.Logf("skipping test on %q", runtime.GOOS) + return + } + if !supportsIPv6 { + return + } + + toudpnet := func(net string) string { + switch net { + case "tcp": + return "udp" + case "tcp4": + return "udp4" + case "tcp6": + return "udp6" + } + return "<nil>" + } + + for _, tt := range dualStackListenerTests { + if tt.wildcard && (testing.Short() || !*testExternal) { + continue + } + tt.net1 = toudpnet(tt.net1) + tt.net2 = toudpnet(tt.net2) + switch runtime.GOOS { + case "openbsd": + if tt.wildcard && differentWildcardAddr(tt.laddr1, tt.laddr2) { + tt.xerr = nil } - l, err := Listen(tt.net, tt.laddr) - if err != nil { - t.Fatalf("Listen failed: %v", err) + } + l1, port := usableListenPacketPort(t, tt.net1, tt.laddr1) + laddr := tt.laddr1 + ":" + port + checkFirstListener(t, tt.net1, laddr, l1) + laddr = tt.laddr2 + ":" + port + l2, err := ListenPacket(tt.net2, laddr) + checkDualStackSecondListener(t, tt.net2, laddr, tt.xerr, err, l2) + l1.Close() + } +} + +func usableListenPort(t *testing.T, net, laddr string) (l Listener, port string) { + var nladdr string + var err error + switch net { + default: + panic("usableListenPort net=" + net) + case "tcp", "tcp4", "tcp6": + l, err = Listen(net, laddr+":0") + if err != nil { + t.Fatalf("Probe Listen(%q, %q) failed: %v", net, laddr, err) + } + nladdr = l.(*TCPListener).Addr().String() + } + _, port, err = SplitHostPort(nladdr) + if err != nil { + t.Fatalf("SplitHostPort failed: %v", err) + } + return l, port +} + +func usableListenPacketPort(t *testing.T, net, laddr string) (l PacketConn, port string) { + var nladdr string + var err error + switch net { + default: + panic("usableListenPacketPort net=" + net) + case "udp", "udp4", "udp6": + l, err = ListenPacket(net, laddr+":0") + if err != nil { + t.Fatalf("Probe ListenPacket(%q, %q) failed: %v", net, laddr, err) + } + nladdr = l.(*UDPConn).LocalAddr().String() + } + _, port, err = SplitHostPort(nladdr) + if err != nil { + t.Fatalf("SplitHostPort failed: %v", err) + } + return l, port +} + +func differentWildcardAddr(i, j string) bool { + if (i == "" || i == "0.0.0.0" || i == "::ffff:0.0.0.0") && (j == "" || j == "0.0.0.0" || j == "::ffff:0.0.0.0") { + return false + } + if i == "[::]" && j == "[::]" { + return false + } + return true +} + +func checkFirstListener(t *testing.T, net, laddr string, l interface{}) { + switch net { + case "tcp": + fd := l.(*TCPListener).fd + checkDualStackAddrFamily(t, net, laddr, fd) + case "tcp4": + fd := l.(*TCPListener).fd + if fd.family != syscall.AF_INET { + t.Fatalf("First Listen(%q, %q) returns address family %v, expected %v", net, laddr, fd.family, syscall.AF_INET) + } + case "tcp6": + fd := l.(*TCPListener).fd + if fd.family != syscall.AF_INET6 { + t.Fatalf("First Listen(%q, %q) returns address family %v, expected %v", net, laddr, fd.family, syscall.AF_INET6) + } + case "udp": + fd := l.(*UDPConn).fd + checkDualStackAddrFamily(t, net, laddr, fd) + case "udp4": + fd := l.(*UDPConn).fd + if fd.family != syscall.AF_INET { + t.Fatalf("First ListenPacket(%q, %q) returns address family %v, expected %v", net, laddr, fd.family, syscall.AF_INET) + } + case "udp6": + fd := l.(*UDPConn).fd + if fd.family != syscall.AF_INET6 { + t.Fatalf("First ListenPacket(%q, %q) returns address family %v, expected %v", net, laddr, fd.family, syscall.AF_INET6) + } + default: + t.Fatalf("Unexpected network: %q", net) + } +} + +func checkSecondListener(t *testing.T, net, laddr string, err error, l interface{}) { + switch net { + case "tcp", "tcp4", "tcp6": + if err == nil { + l.(*TCPListener).Close() + t.Fatalf("Second Listen(%q, %q) should fail", net, laddr) + } + case "udp", "udp4", "udp6": + if err == nil { + l.(*UDPConn).Close() + t.Fatalf("Second ListenPacket(%q, %q) should fail", net, laddr) + } + default: + t.Fatalf("Unexpected network: %q", net) + } +} + +func checkDualStackSecondListener(t *testing.T, net, laddr string, xerr, err error, l interface{}) { + switch net { + case "tcp", "tcp4", "tcp6": + if xerr == nil && err != nil || xerr != nil && err == nil { + t.Fatalf("Second Listen(%q, %q) returns %v, expected %v", net, laddr, err, xerr) + } + l.(*TCPListener).Close() + case "udp", "udp4", "udp6": + if xerr == nil && err != nil || xerr != nil && err == nil { + t.Fatalf("Second ListenPacket(%q, %q) returns %v, expected %v", net, laddr, err, xerr) + } + l.(*UDPConn).Close() + default: + t.Fatalf("Unexpected network: %q", net) + } +} + +func checkDualStackAddrFamily(t *testing.T, net, laddr string, fd *netFD) { + switch a := fd.laddr.(type) { + case *TCPAddr: + // If a node under test supports both IPv6 capability + // and IPv6 IPv4-mapping capability, we can assume + // that the node listens on a wildcard address with an + // AF_INET6 socket. + if supportsIPv4map && fd.laddr.(*TCPAddr).isWildcard() { + if fd.family != syscall.AF_INET6 { + t.Fatalf("Listen(%q, %q) returns address family %v, expected %v", net, laddr, fd.family, syscall.AF_INET6) } - prevladdr = l.Addr().String() - closer = l - fd = l.(*TCPListener).fd } else { - c, err := ListenPacket(tt.net, tt.laddr) - if err != nil { - t.Fatalf("ListenPacket failed: %v", err) + if fd.family != a.family() { + t.Fatalf("Listen(%q, %q) returns address family %v, expected %v", net, laddr, fd.family, a.family()) } - closer = c - fd = c.(*UDPConn).fd } - if !tt.ipv6 { - testIPv4UnicastSocketOptions(t, fd) + case *UDPAddr: + // If a node under test supports both IPv6 capability + // and IPv6 IPv4-mapping capability, we can assume + // that the node listens on a wildcard address with an + // AF_INET6 socket. + if supportsIPv4map && fd.laddr.(*UDPAddr).isWildcard() { + if fd.family != syscall.AF_INET6 { + t.Fatalf("ListenPacket(%q, %q) returns address family %v, expected %v", net, laddr, fd.family, syscall.AF_INET6) + } } else { - testIPv6UnicastSocketOptions(t, fd) + if fd.family != a.family() { + t.Fatalf("ListenPacket(%q, %q) returns address family %v, expected %v", net, laddr, fd.family, a.family()) + } } - closer.Close() + default: + t.Fatalf("Unexpected protocol address type: %T", a) } } func testIPv4UnicastSocketOptions(t *testing.T, fd *netFD) { - tos, err := ipv4TOS(fd) + _, err := ipv4TOS(fd) if err != nil { t.Fatalf("ipv4TOS failed: %v", err) } - t.Logf("IPv4 TOS: %v", tos) err = setIPv4TOS(fd, 1) if err != nil { t.Fatalf("setIPv4TOS failed: %v", err) } - - ttl, err := ipv4TTL(fd) + _, err = ipv4TTL(fd) if err != nil { t.Fatalf("ipv4TTL failed: %v", err) } - t.Logf("IPv4 TTL: %v", ttl) err = setIPv4TTL(fd, 1) if err != nil { t.Fatalf("setIPv4TTL failed: %v", err) @@ -89,23 +488,51 @@ func testIPv4UnicastSocketOptions(t *testing.T, fd *netFD) { } func testIPv6UnicastSocketOptions(t *testing.T, fd *netFD) { - tos, err := ipv6TrafficClass(fd) + _, err := ipv6TrafficClass(fd) if err != nil { t.Fatalf("ipv6TrafficClass failed: %v", err) } - t.Logf("IPv6 TrafficClass: %v", tos) err = setIPv6TrafficClass(fd, 1) if err != nil { t.Fatalf("setIPv6TrafficClass failed: %v", err) } - - hoplim, err := ipv6HopLimit(fd) + _, err = ipv6HopLimit(fd) if err != nil { t.Fatalf("ipv6HopLimit failed: %v", err) } - t.Logf("IPv6 HopLimit: %v", hoplim) err = setIPv6HopLimit(fd, 1) if err != nil { t.Fatalf("setIPv6HopLimit failed: %v", err) } } + +var prohibitionaryDialArgTests = []struct { + net string + addr string +}{ + {"tcp6", "127.0.0.1"}, + {"tcp6", "[::ffff:127.0.0.1]"}, +} + +func TestProhibitionaryDialArgs(t *testing.T) { + switch runtime.GOOS { + case "plan9": + t.Logf("skipping test on %q", runtime.GOOS) + return + } + // This test requires both IPv6 and IPv6 IPv4-mapping functionality. + if !supportsIPv4map || testing.Short() || !*testExternal { + return + } + + l, port := usableListenPort(t, "tcp", "[::]") + defer l.Close() + + for _, tt := range prohibitionaryDialArgTests { + c, err := Dial(tt.net, tt.addr+":"+port) + if err == nil { + c.Close() + t.Fatalf("Dial(%q, %q) should fail", tt.net, tt.addr) + } + } +} diff --git a/src/pkg/net/unixsock_posix.go b/src/pkg/net/unixsock_posix.go index 3a94cf5c5..37a2b1e09 100644 --- a/src/pkg/net/unixsock_posix.go +++ b/src/pkg/net/unixsock_posix.go @@ -59,7 +59,7 @@ func unixSocket(net string, laddr, raddr *UnixAddr, mode string) (fd *netFD, err f = sockaddrToUnixpacket } - fd, err = socket(net, syscall.AF_UNIX, sotype, 0, la, ra, f) + fd, err = socket(net, syscall.AF_UNIX, sotype, 0, false, la, ra, f) if err != nil { goto Error } @@ -208,8 +208,8 @@ func (c *UnixConn) SetWriteBuffer(bytes int) error { } // ReadFromUnix reads a packet from c, copying the payload into b. -// It returns the number of bytes copied into b and the return address -// that was on the packet. +// It returns the number of bytes copied into b and the source address +// of the packet. // // ReadFromUnix can be made to time out and return // an error with Timeout() == true after a fixed time limit; @@ -264,6 +264,11 @@ func (c *UnixConn) WriteTo(b []byte, addr Addr) (n int, err error) { return c.WriteToUnix(b, a) } +// ReadMsgUnix reads a packet from c, copying the payload into b +// and the associated out-of-band data into oob. +// It returns the number of bytes copied into b, the number of +// bytes copied into oob, the flags that were set on the packet, +// and the source address of the packet. func (c *UnixConn) ReadMsgUnix(b, oob []byte) (n, oobn, flags int, addr *UnixAddr, err error) { if !c.ok() { return 0, 0, 0, nil, syscall.EINVAL @@ -276,6 +281,9 @@ func (c *UnixConn) ReadMsgUnix(b, oob []byte) (n, oobn, flags int, addr *UnixAdd return } +// WriteMsgUnix writes a packet to addr via c, copying the payload from b +// and the associated out-of-band data from oob. It returns the number +// of payload and out-of-band bytes written. func (c *UnixConn) WriteMsgUnix(b, oob []byte, addr *UnixAddr) (n, oobn int, err error) { if !c.ok() { return 0, 0, syscall.EINVAL diff --git a/src/pkg/os/error.go b/src/pkg/os/error.go index e0b83b5c2..b88e49400 100644 --- a/src/pkg/os/error.go +++ b/src/pkg/os/error.go @@ -42,3 +42,21 @@ func NewSyscallError(syscall string, err error) error { } return &SyscallError{syscall, err} } + +// IsExist returns whether the error is known to report that a file or directory +// already exists. It is satisfied by ErrExist as well as some syscall errors. +func IsExist(err error) bool { + return isExist(err) +} + +// IsNotExist returns whether the error is known to report that a file or directory +// does not exist. It is satisfied by ErrNotExist as well as some syscall errors. +func IsNotExist(err error) bool { + return isNotExist(err) +} + +// IsPermission returns whether the error is known to report that permission is denied. +// It is satisfied by ErrPermission as well as some syscall errors. +func IsPermission(err error) bool { + return isPermission(err) +} diff --git a/src/pkg/os/error_plan9.go b/src/pkg/os/error_plan9.go index 159d685e7..3c9dfb0b1 100644 --- a/src/pkg/os/error_plan9.go +++ b/src/pkg/os/error_plan9.go @@ -4,24 +4,21 @@ package os -// IsExist returns whether the error is known to report that a file already exists. -func IsExist(err error) bool { +func isExist(err error) bool { if pe, ok := err.(*PathError); ok { err = pe.Err } return contains(err.Error(), " exists") } -// IsNotExist returns whether the error is known to report that a file does not exist. -func IsNotExist(err error) bool { +func isNotExist(err error) bool { if pe, ok := err.(*PathError); ok { err = pe.Err } return contains(err.Error(), "does not exist") } -// IsPermission returns whether the error is known to report that permission is denied. -func IsPermission(err error) bool { +func isPermission(err error) bool { if pe, ok := err.(*PathError); ok { err = pe.Err } diff --git a/src/pkg/os/error_posix.go b/src/pkg/os/error_posix.go index 74b75d112..1685c1f21 100644 --- a/src/pkg/os/error_posix.go +++ b/src/pkg/os/error_posix.go @@ -2,33 +2,27 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build darwin freebsd linux netbsd openbsd windows +// +build darwin freebsd linux netbsd openbsd package os import "syscall" -// IsExist returns whether the error is known to report that a file already exists. -// It is satisfied by ErrExist as well as some syscall errors. -func IsExist(err error) bool { +func isExist(err error) bool { if pe, ok := err.(*PathError); ok { err = pe.Err } return err == syscall.EEXIST || err == ErrExist } -// IsNotExist returns whether the error is known to report that a file does not exist. -// It is satisfied by ErrNotExist as well as some syscall errors. -func IsNotExist(err error) bool { +func isNotExist(err error) bool { if pe, ok := err.(*PathError); ok { err = pe.Err } return err == syscall.ENOENT || err == ErrNotExist } -// IsPermission returns whether the error is known to report that permission is denied. -// It is satisfied by ErrPermission as well as some syscall errors. -func IsPermission(err error) bool { +func isPermission(err error) bool { if pe, ok := err.(*PathError); ok { err = pe.Err } diff --git a/src/pkg/os/error_test.go b/src/pkg/os/error_test.go new file mode 100644 index 000000000..42f846fa3 --- /dev/null +++ b/src/pkg/os/error_test.go @@ -0,0 +1,81 @@ +// Copyright 2012 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. + +package os_test + +import ( + "fmt" + "io/ioutil" + "os" + "path/filepath" + "testing" +) + +func TestErrIsExist(t *testing.T) { + f, err := ioutil.TempFile("", "_Go_ErrIsExist") + if err != nil { + t.Fatalf("open ErrIsExist tempfile: %s", err) + return + } + defer os.Remove(f.Name()) + defer f.Close() + f2, err := os.OpenFile(f.Name(), os.O_RDWR|os.O_CREATE|os.O_EXCL, 0600) + if err == nil { + f2.Close() + t.Fatal("Open should have failed") + return + } + if s := checkErrorPredicate("os.IsExist", os.IsExist, err); s != "" { + t.Fatal(s) + return + } +} + +func testErrNotExist(name string) string { + f, err := os.Open(name) + if err == nil { + f.Close() + return "Open should have failed" + } + if s := checkErrorPredicate("os.IsNotExist", os.IsNotExist, err); s != "" { + return s + } + + err = os.Chdir(name) + if err == nil { + return "Chdir should have failed" + } + if s := checkErrorPredicate("os.IsNotExist", os.IsNotExist, err); s != "" { + return s + } + return "" +} + +func TestErrIsNotExist(t *testing.T) { + tmpDir, err := ioutil.TempDir("", "_Go_ErrIsNotExist") + if err != nil { + t.Fatalf("create ErrIsNotExist tempdir: %s", err) + return + } + defer os.RemoveAll(tmpDir) + + name := filepath.Join(tmpDir, "NotExists") + if s := testErrNotExist(name); s != "" { + t.Fatal(s) + return + } + + name = filepath.Join(name, "NotExists2") + if s := testErrNotExist(name); s != "" { + t.Fatal(s) + return + } +} + +func checkErrorPredicate(predName string, pred func(error) bool, err error) string { + if !pred(err) { + return fmt.Sprintf("%s does not work as expected for %#v", predName, err) + } + return "" +} diff --git a/src/pkg/os/error_windows.go b/src/pkg/os/error_windows.go new file mode 100644 index 000000000..5d692b073 --- /dev/null +++ b/src/pkg/os/error_windows.go @@ -0,0 +1,30 @@ +// Copyright 2012 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. + +package os + +import "syscall" + +func isExist(err error) bool { + if pe, ok := err.(*PathError); ok { + err = pe.Err + } + return err == syscall.ERROR_ALREADY_EXISTS || + err == syscall.ERROR_FILE_EXISTS || err == ErrExist +} + +func isNotExist(err error) bool { + if pe, ok := err.(*PathError); ok { + err = pe.Err + } + return err == syscall.ERROR_FILE_NOT_FOUND || + err == syscall.ERROR_PATH_NOT_FOUND || err == ErrNotExist +} + +func isPermission(err error) bool { + if pe, ok := err.(*PathError); ok { + err = pe.Err + } + return err == ErrPermission +} diff --git a/src/pkg/os/exec/exec.go b/src/pkg/os/exec/exec.go index ebe92a9fb..bbd04902b 100644 --- a/src/pkg/os/exec/exec.go +++ b/src/pkg/os/exec/exec.go @@ -59,7 +59,7 @@ type Cmd struct { // If either is nil, Run connects the corresponding file descriptor // to the null device (os.DevNull). // - // If Stdout and Stderr are are the same writer, at most one + // If Stdout and Stderr are the same writer, at most one // goroutine at a time will call Write. Stdout io.Writer Stderr io.Writer diff --git a/src/pkg/os/file_unix.go b/src/pkg/os/file_unix.go index 6aa0280f4..6271c3189 100644 --- a/src/pkg/os/file_unix.go +++ b/src/pkg/os/file_unix.go @@ -173,7 +173,21 @@ func (f *File) pread(b []byte, off int64) (n int, err error) { // write writes len(b) bytes to the File. // It returns the number of bytes written and an error, if any. func (f *File) write(b []byte) (n int, err error) { - return syscall.Write(f.fd, b) + for { + m, err := syscall.Write(f.fd, b) + n += m + + // If the syscall wrote some data but not all (short write) + // or it returned EINTR, then assume it stopped early for + // reasons that are uninteresting to the caller, and try again. + if 0 < m && m < len(b) || err == syscall.EINTR { + b = b[m:] + continue + } + + return n, err + } + panic("not reached") } // pwrite writes len(b) bytes to the File starting at byte offset off. diff --git a/src/pkg/os/os_test.go b/src/pkg/os/os_test.go index d1e241f00..dec80cc09 100644 --- a/src/pkg/os/os_test.go +++ b/src/pkg/os/os_test.go @@ -1047,3 +1047,22 @@ func TestSameFile(t *testing.T) { t.Errorf("files should be different") } } + +func TestDevNullFile(t *testing.T) { + f, err := Open(DevNull) + if err != nil { + t.Fatalf("Open(%s): %v", DevNull, err) + } + defer f.Close() + fi, err := f.Stat() + if err != nil { + t.Fatalf("Stat(%s): %v", DevNull, err) + } + name := filepath.Base(DevNull) + if fi.Name() != name { + t.Fatalf("wrong file name have %v want %v", fi.Name(), name) + } + if fi.Size() != 0 { + t.Fatalf("wrong file size have %d want 0", fi.Size()) + } +} diff --git a/src/pkg/os/stat_windows.go b/src/pkg/os/stat_windows.go index 19e215e93..75351c805 100644 --- a/src/pkg/os/stat_windows.go +++ b/src/pkg/os/stat_windows.go @@ -21,6 +21,9 @@ func (file *File) Stat() (fi FileInfo, err error) { // I don't know any better way to do that for directory return Stat(file.name) } + if file.name == DevNull { + return statDevNull() + } var d syscall.ByHandleFileInformation e := syscall.GetFileInformationByHandle(syscall.Handle(file.fd), &d) if e != nil { @@ -41,6 +44,9 @@ func Stat(name string) (fi FileInfo, err error) { if len(name) == 0 { return nil, &PathError{"Stat", name, syscall.Errno(syscall.ERROR_PATH_NOT_FOUND)} } + if name == DevNull { + return statDevNull() + } var d syscall.Win32FileAttributeData e := syscall.GetFileAttributesEx(syscall.StringToUTF16Ptr(name), syscall.GetFileExInfoStandard, (*byte)(unsafe.Pointer(&d))) if e != nil { @@ -69,6 +75,22 @@ func Lstat(name string) (fi FileInfo, err error) { return Stat(name) } +// statDevNull return FileInfo structure describing DevNull file ("NUL"). +// It creates invented data, since none of windows api will return +// that information. +func statDevNull() (fi FileInfo, err error) { + return &fileStat{ + name: DevNull, + mode: ModeDevice | ModeCharDevice | 0666, + sys: &winSys{ + // hopefully this will work for SameFile + vol: 0, + idxhi: 0, + idxlo: 0, + }, + }, nil +} + // basename removes trailing slashes and the leading // directory name and drive letter from path name. func basename(name string) string { @@ -199,7 +221,7 @@ func (s *winSys) loadFileId() error { } s.Lock() defer s.Unlock() - h, e := syscall.CreateFile(syscall.StringToUTF16Ptr(s.path), syscall.GENERIC_READ, syscall.FILE_SHARE_READ, nil, syscall.OPEN_EXISTING, 0, 0) + h, e := syscall.CreateFile(syscall.StringToUTF16Ptr(s.path), 0, 0, nil, syscall.OPEN_EXISTING, syscall.FILE_FLAG_BACKUP_SEMANTICS, 0) if e != nil { return e } diff --git a/src/pkg/os/types.go b/src/pkg/os/types.go index c7c5199be..01dddf50d 100644 --- a/src/pkg/os/types.go +++ b/src/pkg/os/types.go @@ -15,7 +15,7 @@ func Getpagesize() int { return syscall.Getpagesize() } // A FileInfo describes a file and is returned by Stat and Lstat type FileInfo interface { Name() string // base name of the file - Size() int64 // length in bytes + Size() int64 // length in bytes for regular files; system-dependent for others Mode() FileMode // file mode bits ModTime() time.Time // modification time IsDir() bool // abbreviation for Mode().IsDir() diff --git a/src/pkg/path/filepath/match.go b/src/pkg/path/filepath/match.go index 38d264fb9..db8b0260c 100644 --- a/src/pkg/path/filepath/match.go +++ b/src/pkg/path/filepath/match.go @@ -7,6 +7,7 @@ package filepath import ( "errors" "os" + "runtime" "sort" "strings" "unicode/utf8" @@ -37,6 +38,9 @@ var ErrBadPattern = errors.New("syntax error in pattern") // The only possible returned error is ErrBadPattern, when pattern // is malformed. // +// On Windows, escaping is disabled. Instead, '\\' is treated as +// path separator. +// func Match(pattern, name string) (matched bool, err error) { Pattern: for len(pattern) > 0 { @@ -95,9 +99,11 @@ Scan: for i = 0; i < len(pattern); i++ { switch pattern[i] { case '\\': - // error check handled in matchChunk: bad pattern. - if i+1 < len(pattern) { - i++ + if runtime.GOOS != "windows" { + // error check handled in matchChunk: bad pattern. + if i+1 < len(pattern) { + i++ + } } case '[': inrange = true @@ -167,10 +173,12 @@ func matchChunk(chunk, s string) (rest string, ok bool, err error) { chunk = chunk[1:] case '\\': - chunk = chunk[1:] - if len(chunk) == 0 { - err = ErrBadPattern - return + if runtime.GOOS != "windows" { + chunk = chunk[1:] + if len(chunk) == 0 { + err = ErrBadPattern + return + } } fallthrough @@ -191,7 +199,7 @@ func getEsc(chunk string) (r rune, nchunk string, err error) { err = ErrBadPattern return } - if chunk[0] == '\\' { + if chunk[0] == '\\' && runtime.GOOS != "windows" { chunk = chunk[1:] if len(chunk) == 0 { err = ErrBadPattern diff --git a/src/pkg/path/filepath/match_test.go b/src/pkg/path/filepath/match_test.go index 7bdc449bc..7b0ea8017 100644 --- a/src/pkg/path/filepath/match_test.go +++ b/src/pkg/path/filepath/match_test.go @@ -7,6 +7,7 @@ package filepath_test import ( . "path/filepath" "runtime" + "strings" "testing" ) @@ -76,21 +77,26 @@ func errp(e error) string { } func TestMatch(t *testing.T) { - if runtime.GOOS == "windows" { - // XXX: Don't pass for windows. - return - } for _, tt := range matchTests { - ok, err := Match(tt.pattern, tt.s) + pattern := tt.pattern + s := tt.s + if runtime.GOOS == "windows" { + if strings.Index(pattern, "\\") >= 0 { + // no escape allowed on windows. + continue + } + pattern = Clean(pattern) + s = Clean(s) + } + ok, err := Match(pattern, s) if ok != tt.match || err != tt.err { - t.Errorf("Match(%#q, %#q) = %v, %q want %v, %q", tt.pattern, tt.s, ok, errp(err), tt.match, errp(tt.err)) + t.Errorf("Match(%#q, %#q) = %v, %q want %v, %q", pattern, s, ok, errp(err), tt.match, errp(tt.err)) } } } // contains returns true if vector contains the string s. func contains(vector []string, s string) bool { - s = ToSlash(s) for _, elem := range vector { if elem == s { return true @@ -109,18 +115,20 @@ var globTests = []struct { } func TestGlob(t *testing.T) { - if runtime.GOOS == "windows" { - // XXX: Don't pass for windows. - return - } for _, tt := range globTests { - matches, err := Glob(tt.pattern) + pattern := tt.pattern + result := tt.result + if runtime.GOOS == "windows" { + pattern = Clean(pattern) + result = Clean(result) + } + matches, err := Glob(pattern) if err != nil { - t.Errorf("Glob error for %q: %s", tt.pattern, err) + t.Errorf("Glob error for %q: %s", pattern, err) continue } - if !contains(matches, tt.result) { - t.Errorf("Glob(%#q) = %#v want %v", tt.pattern, matches, tt.result) + if !contains(matches, result) { + t.Errorf("Glob(%#q) = %#v want %v", pattern, matches, result) } } for _, pattern := range []string{"no_match", "../*/no_match"} { diff --git a/src/pkg/path/filepath/path.go b/src/pkg/path/filepath/path.go index cfe46981f..1e7487263 100644 --- a/src/pkg/path/filepath/path.go +++ b/src/pkg/path/filepath/path.go @@ -7,10 +7,8 @@ package filepath import ( - "bytes" "errors" "os" - "runtime" "sort" "strings" ) @@ -191,64 +189,7 @@ func Ext(path string) string { // If path is relative the result will be relative to the current directory, // unless one of the components is an absolute symbolic link. func EvalSymlinks(path string) (string, error) { - if runtime.GOOS == "windows" { - // Symlinks are not supported under windows. - _, err := os.Lstat(path) - if err != nil { - return "", err - } - return Clean(path), nil - } - const maxIter = 255 - originalPath := path - // consume path by taking each frontmost path element, - // expanding it if it's a symlink, and appending it to b - var b bytes.Buffer - for n := 0; path != ""; n++ { - if n > maxIter { - return "", errors.New("EvalSymlinks: too many links in " + originalPath) - } - - // find next path component, p - i := strings.IndexRune(path, Separator) - var p string - if i == -1 { - p, path = path, "" - } else { - p, path = path[:i], path[i+1:] - } - - if p == "" { - if b.Len() == 0 { - // must be absolute path - b.WriteRune(Separator) - } - continue - } - - fi, err := os.Lstat(b.String() + p) - if err != nil { - return "", err - } - if fi.Mode()&os.ModeSymlink == 0 { - b.WriteString(p) - if path != "" { - b.WriteRune(Separator) - } - continue - } - - // it's a symlink, put it at the front of path - dest, err := os.Readlink(b.String() + p) - if err != nil { - return "", err - } - if IsAbs(dest) { - b.Reset() - } - path = dest + string(Separator) + path - } - return Clean(b.String()), nil + return evalSymlinks(path) } // Abs returns an absolute representation of path. diff --git a/src/pkg/path/filepath/path_test.go b/src/pkg/path/filepath/path_test.go index 98ff46642..87cb5e553 100644 --- a/src/pkg/path/filepath/path_test.go +++ b/src/pkg/path/filepath/path_test.go @@ -440,7 +440,7 @@ func TestBase(t *testing.T) { tests := basetests if runtime.GOOS == "windows" { // make unix tests work on windows - for i, _ := range tests { + for i := range tests { tests[i].result = filepath.Clean(tests[i].result) } // add windows specific tests @@ -483,7 +483,7 @@ func TestDir(t *testing.T) { tests := dirtests if runtime.GOOS == "windows" { // make unix tests work on windows - for i, _ := range tests { + for i := range tests { tests[i].result = filepath.Clean(tests[i].result) } // add windows specific tests @@ -621,6 +621,12 @@ func TestEvalSymlinks(t *testing.T) { if d.path == d.dest { // will test only real files and directories tests = append(tests, d) + // test "canonical" names + d2 := EvalSymlinksTest{ + path: strings.ToUpper(d.path), + dest: d.dest, + } + tests = append(tests, d2) } } } else { @@ -642,33 +648,61 @@ func TestEvalSymlinks(t *testing.T) { } } -// Test paths relative to $GOROOT/src -var abstests = []string{ - "../AUTHORS", - "pkg/../../AUTHORS", - "Make.inc", - "pkg/math", +// Test directories relative to temporary directory. +// The tests are run in absTestDirs[0]. +var absTestDirs = []string{ + "a", + "a/b", + "a/b/c", +} + +// Test paths relative to temporary directory. $ expands to the directory. +// The tests are run in absTestDirs[0]. +// We create absTestDirs first. +var absTests = []string{ ".", - "$GOROOT/src/Make.inc", - "$GOROOT/src/../src/Make.inc", - "$GOROOT/misc/cgo", - "$GOROOT", + "b", + "../a", + "../a/b", + "../a/b/./c/../../.././a", + "$", + "$/.", + "$/a/../a/b", + "$/a/b/c/../../.././a", } func TestAbs(t *testing.T) { - t.Logf("test needs to be rewritten; disabled") - return - oldwd, err := os.Getwd() if err != nil { - t.Fatal("Getwd failed: " + err.Error()) + t.Fatal("Getwd failed: ", err) } defer os.Chdir(oldwd) - goroot := os.Getenv("GOROOT") - cwd := filepath.Join(goroot, "src") - os.Chdir(cwd) - for _, path := range abstests { - path = strings.Replace(path, "$GOROOT", goroot, -1) + + root, err := ioutil.TempDir("", "TestAbs") + if err != nil { + t.Fatal("TempDir failed: ", err) + } + defer os.RemoveAll(root) + + err = os.Chdir(root) + if err != nil { + t.Fatal("chdir failed: ", err) + } + + for _, dir := range absTestDirs { + err = os.Mkdir(dir, 0777) + if err != nil { + t.Fatal("Mkdir failed: ", err) + } + } + + err = os.Chdir(absTestDirs[0]) + if err != nil { + t.Fatal("chdir failed: ", err) + } + + for _, path := range absTests { + path = strings.Replace(path, "$", root, -1) info, err := os.Stat(path) if err != nil { t.Errorf("%s: %s", path, err) diff --git a/src/pkg/path/filepath/symlink.go b/src/pkg/path/filepath/symlink.go new file mode 100644 index 000000000..307dd0f8f --- /dev/null +++ b/src/pkg/path/filepath/symlink.go @@ -0,0 +1,67 @@ +// Copyright 2012 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. + +// +build !windows + +package filepath + +import ( + "bytes" + "errors" + "os" + "strings" +) + +func evalSymlinks(path string) (string, error) { + const maxIter = 255 + originalPath := path + // consume path by taking each frontmost path element, + // expanding it if it's a symlink, and appending it to b + var b bytes.Buffer + for n := 0; path != ""; n++ { + if n > maxIter { + return "", errors.New("EvalSymlinks: too many links in " + originalPath) + } + + // find next path component, p + i := strings.IndexRune(path, Separator) + var p string + if i == -1 { + p, path = path, "" + } else { + p, path = path[:i], path[i+1:] + } + + if p == "" { + if b.Len() == 0 { + // must be absolute path + b.WriteRune(Separator) + } + continue + } + + fi, err := os.Lstat(b.String() + p) + if err != nil { + return "", err + } + if fi.Mode()&os.ModeSymlink == 0 { + b.WriteString(p) + if path != "" { + b.WriteRune(Separator) + } + continue + } + + // it's a symlink, put it at the front of path + dest, err := os.Readlink(b.String() + p) + if err != nil { + return "", err + } + if IsAbs(dest) { + b.Reset() + } + path = dest + string(Separator) + path + } + return Clean(b.String()), nil +} diff --git a/src/pkg/path/filepath/symlink_windows.go b/src/pkg/path/filepath/symlink_windows.go new file mode 100644 index 000000000..afa88bfe8 --- /dev/null +++ b/src/pkg/path/filepath/symlink_windows.go @@ -0,0 +1,27 @@ +// Copyright 2012 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. + +package filepath + +import ( + "syscall" +) + +func evalSymlinks(path string) (string, error) { + p := syscall.StringToUTF16(path) + b := p // GetLongPathName says we can reuse buffer + n, err := syscall.GetLongPathName(&p[0], &b[0], uint32(len(b))) + if err != nil { + return "", err + } + if n > uint32(len(b)) { + b = make([]uint16, n) + n, err = syscall.GetLongPathName(&p[0], &b[0], uint32(len(b))) + if err != nil { + return "", err + } + } + b = b[:n] + return Clean(syscall.UTF16ToString(b)), nil +} diff --git a/src/pkg/reflect/type.go b/src/pkg/reflect/type.go index 6356b296d..64550b8f6 100644 --- a/src/pkg/reflect/type.go +++ b/src/pkg/reflect/type.go @@ -66,9 +66,10 @@ type Type interface { // It returns an empty string for unnamed types. Name() string - // PkgPath returns the type's package path. - // The package path is a full package import path like "encoding/base64". - // PkgPath returns an empty string for unnamed or predeclared types. + // PkgPath returns a named type's package path, that is, the import path + // that uniquely identifies the package, such as "encoding/base64". + // If the type was predeclared (string, error) or unnamed (*T, struct{}, []int), + // the package path will be the empty string. PkgPath() string // Size returns the number of bytes needed to store @@ -243,7 +244,7 @@ type commonType struct { fieldAlign uint8 // alignment of struct field with this type kind uint8 // enumeration for C alg *uintptr // algorithm table (../runtime/runtime.h:/Alg) - string *string // string form; unnecessary but undeniably useful + string *string // string form; unnecessary but undeniably useful *uncommonType // (relatively) uncommon fields ptrToThis *runtimeType // pointer to this type, if used in binary or has methods } @@ -354,11 +355,18 @@ type structType struct { // Method represents a single method. type Method struct { - PkgPath string // empty for uppercase Name + // Name is the method name. + // PkgPath is the package path that qualifies a lower case (unexported) + // method name. It is empty for upper case (exported) method names. + // The combination of PkgPath and Name uniquely identifies a method + // in a method set. + // See http://golang.org/ref/spec#Uniqueness_of_identifiers Name string - Type Type - Func Value - Index int + PkgPath string + + Type Type // method type + Func Value // func with receiver as first argument + Index int // index for Type.Method } // High bit says whether type has @@ -697,14 +705,20 @@ func (t *interfaceType) MethodByName(name string) (m Method, ok bool) { return } +// A StructField describes a single field in a struct. type StructField struct { - PkgPath string // empty for uppercase Name - Name string - Type Type - Tag StructTag - Offset uintptr - Index []int - Anonymous bool + // Name is the field name. + // PkgPath is the package path that qualifies a lower case (unexported) + // field name. It is empty for upper case (exported) field names. + // See http://golang.org/ref/spec#Uniqueness_of_identifiers + Name string + PkgPath string + + Type Type // field type + Tag StructTag // field tag string + Offset uintptr // offset within struct, in bytes + Index []int // index sequence for Type.FieldByIndex + Anonymous bool // is an anonymous field } // A StructTag is the tag string in a struct field. diff --git a/src/pkg/reflect/value.go b/src/pkg/reflect/value.go index f3f7d639a..79476ad22 100644 --- a/src/pkg/reflect/value.go +++ b/src/pkg/reflect/value.go @@ -54,6 +54,10 @@ func memmove(adst, asrc unsafe.Pointer, n uintptr) { // its String method returns "<invalid Value>", and all other methods panic. // Most functions and methods never return an invalid value. // If one does, its documentation states the conditions explicitly. +// +// A Value can be used concurrently by multiple goroutines provided that +// the underlying Go value can be used concurrently for the equivalent +// direct operations. type Value struct { // typ holds the type of the value represented by a Value. typ *commonType @@ -1628,6 +1632,15 @@ func MakeSlice(typ Type, len, cap int) Value { if typ.Kind() != Slice { panic("reflect.MakeSlice of non-slice type") } + if len < 0 { + panic("reflect.MakeSlice: negative len") + } + if cap < 0 { + panic("reflect.MakeSlice: negative cap") + } + if len > cap { + panic("reflect.MakeSlice: len > cap") + } // Declare slice so that gc can see the base pointer in it. var x []byte diff --git a/src/pkg/runtime/asm_386.s b/src/pkg/runtime/asm_386.s index 6bbec3063..21bd293ab 100644 --- a/src/pkg/runtime/asm_386.s +++ b/src/pkg/runtime/asm_386.s @@ -425,6 +425,14 @@ TEXT runtime·cgocallback(SB),7,$12 // Save current m->g0->sched.sp on stack and then set it to SP. get_tls(CX) MOVL m(CX), BP + + // If m is nil, it is almost certainly because we have been called + // on a thread that Go did not create. We're going to crash as + // soon as we try to use m; instead, try to print a nice error and exit. + CMPL BP, $0 + JNE 2(PC) + CALL runtime·badcallback(SB) + MOVL m_g0(BP), SI PUSHL (g_sched+gobuf_sp)(SI) MOVL SP, (g_sched+gobuf_sp)(SI) @@ -552,4 +560,13 @@ TEXT runtime·emptyfunc(SB),0,$0 TEXT runtime·abort(SB),7,$0 INT $0x3 +TEXT runtime·stackguard(SB),7,$0 + MOVL SP, DX + MOVL DX, sp+0(FP) + get_tls(CX) + MOVL g(CX), BX + MOVL g_stackguard(BX), DX + MOVL DX, guard+4(FP) + RET + GLOBL runtime·tls0(SB), $32 diff --git a/src/pkg/runtime/asm_amd64.s b/src/pkg/runtime/asm_amd64.s index 2ea87a779..d41ab96d0 100644 --- a/src/pkg/runtime/asm_amd64.s +++ b/src/pkg/runtime/asm_amd64.s @@ -73,7 +73,7 @@ ok: // start this M CALL runtime·mstart(SB) - CALL runtime·notok(SB) // never returns + MOVL $0xf1, 0xf1 // crash RET TEXT runtime·breakpoint(SB),7,$0 @@ -471,6 +471,14 @@ TEXT runtime·cgocallback(SB),7,$24 // Save current m->g0->sched.sp on stack and then set it to SP. get_tls(CX) MOVQ m(CX), BP + + // If m is nil, it is almost certainly because we have been called + // on a thread that Go did not create. We're going to crash as + // soon as we try to use m; instead, try to print a nice error and exit. + CMPQ BP, $0 + JNE 2(PC) + CALL runtime·badcallback(SB) + MOVQ m_g0(BP), SI PUSHQ (g_sched+gobuf_sp)(SI) MOVQ SP, (g_sched+gobuf_sp)(SI) @@ -579,4 +587,13 @@ TEXT runtime·cputicks(SB),7,$0 ADDQ DX, AX RET +TEXT runtime·stackguard(SB),7,$0 + MOVQ SP, DX + MOVQ DX, sp+0(FP) + get_tls(CX) + MOVQ g(CX), BX + MOVQ g_stackguard(BX), DX + MOVQ DX, guard+8(FP) + RET + GLOBL runtime·tls0(SB), $64 diff --git a/src/pkg/runtime/asm_arm.s b/src/pkg/runtime/asm_arm.s index 3d9a7a73e..423fda7a0 100644 --- a/src/pkg/runtime/asm_arm.s +++ b/src/pkg/runtime/asm_arm.s @@ -313,3 +313,10 @@ casl: casfail: MOVW $0, R0 RET + +TEXT runtime·stackguard(SB),7,$0 + MOVW R13, R1 + MOVW g_stackguard(g), R2 + MOVW R1, sp+0(FP) + MOVW R2, limit+4(FP) + RET diff --git a/src/pkg/runtime/cgo/gcc_darwin_386.c b/src/pkg/runtime/cgo/gcc_darwin_386.c index d9f25347a..2c30c666f 100644 --- a/src/pkg/runtime/cgo/gcc_darwin_386.c +++ b/src/pkg/runtime/cgo/gcc_darwin_386.c @@ -4,6 +4,7 @@ #include <string.h> /* for strerror */ #include <pthread.h> +#include <signal.h> #include "libcgo.h" static void* threadentry(void*); @@ -120,14 +121,21 @@ void libcgo_sys_thread_start(ThreadStart *ts) { pthread_attr_t attr; + sigset_t ign, oset; pthread_t p; size_t size; int err; + sigfillset(&ign); + sigprocmask(SIG_SETMASK, &ign, &oset); + pthread_attr_init(&attr); pthread_attr_getstacksize(&attr, &size); ts->g->stackguard = size; err = pthread_create(&p, &attr, threadentry, ts); + + sigprocmask(SIG_SETMASK, &oset, nil); + if (err != 0) { fprintf(stderr, "runtime/cgo: pthread_create failed: %s\n", strerror(err)); abort(); diff --git a/src/pkg/runtime/cgo/gcc_darwin_amd64.c b/src/pkg/runtime/cgo/gcc_darwin_amd64.c index a0b026ee2..89dc7a4e8 100644 --- a/src/pkg/runtime/cgo/gcc_darwin_amd64.c +++ b/src/pkg/runtime/cgo/gcc_darwin_amd64.c @@ -4,6 +4,7 @@ #include <string.h> /* for strerror */ #include <pthread.h> +#include <signal.h> #include "libcgo.h" static void* threadentry(void*); @@ -90,14 +91,21 @@ void libcgo_sys_thread_start(ThreadStart *ts) { pthread_attr_t attr; + sigset_t ign, oset; pthread_t p; size_t size; int err; + sigfillset(&ign); + sigprocmask(SIG_SETMASK, &ign, &oset); + pthread_attr_init(&attr); pthread_attr_getstacksize(&attr, &size); ts->g->stackguard = size; err = pthread_create(&p, &attr, threadentry, ts); + + sigprocmask(SIG_SETMASK, &oset, nil); + if (err != 0) { fprintf(stderr, "runtime/cgo: pthread_create failed: %s\n", strerror(err)); abort(); diff --git a/src/pkg/runtime/cgo/gcc_linux_386.c b/src/pkg/runtime/cgo/gcc_linux_386.c index 8401a75ca..7d84acc11 100644 --- a/src/pkg/runtime/cgo/gcc_linux_386.c +++ b/src/pkg/runtime/cgo/gcc_linux_386.c @@ -4,6 +4,7 @@ #include <pthread.h> #include <string.h> +#include <signal.h> #include "libcgo.h" static void *threadentry(void*); @@ -26,10 +27,14 @@ void libcgo_sys_thread_start(ThreadStart *ts) { pthread_attr_t attr; + sigset_t ign, oset; pthread_t p; size_t size; int err; + sigfillset(&ign); + sigprocmask(SIG_SETMASK, &ign, &oset); + // Not sure why the memset is necessary here, // but without it, we get a bogus stack size // out of pthread_attr_getstacksize. C'est la Linux. @@ -39,6 +44,9 @@ libcgo_sys_thread_start(ThreadStart *ts) pthread_attr_getstacksize(&attr, &size); ts->g->stackguard = size; err = pthread_create(&p, &attr, threadentry, ts); + + sigprocmask(SIG_SETMASK, &oset, nil); + if (err != 0) { fprintf(stderr, "runtime/cgo: pthread_create failed: %s\n", strerror(err)); abort(); diff --git a/src/pkg/runtime/cgo/gcc_linux_amd64.c b/src/pkg/runtime/cgo/gcc_linux_amd64.c index 6ce3333a8..28cbf78c5 100644 --- a/src/pkg/runtime/cgo/gcc_linux_amd64.c +++ b/src/pkg/runtime/cgo/gcc_linux_amd64.c @@ -4,6 +4,7 @@ #include <pthread.h> #include <string.h> // strerror +#include <signal.h> #include "libcgo.h" static void* threadentry(void*); @@ -26,14 +27,21 @@ void libcgo_sys_thread_start(ThreadStart *ts) { pthread_attr_t attr; + sigset_t ign, oset; pthread_t p; size_t size; int err; + sigfillset(&ign); + sigprocmask(SIG_SETMASK, &ign, &oset); + pthread_attr_init(&attr); pthread_attr_getstacksize(&attr, &size); ts->g->stackguard = size; err = pthread_create(&p, &attr, threadentry, ts); + + sigprocmask(SIG_SETMASK, &oset, nil); + if (err != 0) { fprintf(stderr, "runtime/cgo: pthread_create failed: %s\n", strerror(err)); abort(); diff --git a/src/pkg/runtime/compiler.go b/src/pkg/runtime/compiler.go new file mode 100644 index 000000000..562a46022 --- /dev/null +++ b/src/pkg/runtime/compiler.go @@ -0,0 +1,13 @@ +// Copyright 2012 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. + +package runtime + +// Compiler is the name of the compiler toolchain that built the +// running binary. Known toolchains are: +// +// gc The 5g/6g/8g compiler suite at code.google.com/p/go. +// gccgo The gccgo front end, part of the GCC compiler suite. +// +const Compiler = "gc" diff --git a/src/pkg/runtime/debug/stack_test.go b/src/pkg/runtime/debug/stack_test.go index 94293bb93..f33f5072b 100644 --- a/src/pkg/runtime/debug/stack_test.go +++ b/src/pkg/runtime/debug/stack_test.go @@ -39,13 +39,20 @@ func TestStack(t *testing.T) { if len(lines) <= 6 { t.Fatal("too few lines") } - check(t, lines[0], "src/pkg/runtime/debug/stack_test.go") - check(t, lines[1], "\t(*T).ptrmethod: return Stack()") - check(t, lines[2], "src/pkg/runtime/debug/stack_test.go") - check(t, lines[3], "\tT.method: return t.ptrmethod()") - check(t, lines[4], "src/pkg/runtime/debug/stack_test.go") - check(t, lines[5], "\tTestStack: b := T(0).method()") - check(t, lines[6], "src/pkg/testing/testing.go") + n := 0 + frame := func(line, code string) { + check(t, lines[n], line) + n++ + // The source might not be available while running the test. + if strings.HasPrefix(lines[n], "\t") { + check(t, lines[n], code) + n++ + } + } + frame("src/pkg/runtime/debug/stack_test.go", "\t(*T).ptrmethod: return Stack()") + frame("src/pkg/runtime/debug/stack_test.go", "\tT.method: return t.ptrmethod()") + frame("src/pkg/runtime/debug/stack_test.go", "\tTestStack: b := T(0).method()") + frame("src/pkg/testing/testing.go", "") } func check(t *testing.T, line, has string) { diff --git a/src/pkg/runtime/export_test.go b/src/pkg/runtime/export_test.go index c603e1b0d..51921135b 100644 --- a/src/pkg/runtime/export_test.go +++ b/src/pkg/runtime/export_test.go @@ -19,7 +19,9 @@ var F64toint = f64toint func entersyscall() func exitsyscall() func golockedOSThread() bool +func stackguard() (sp, limit uintptr) var Entersyscall = entersyscall var Exitsyscall = exitsyscall var LockedOSThread = golockedOSThread +var Stackguard = stackguard diff --git a/src/pkg/runtime/goc2c.c b/src/pkg/runtime/goc2c.c deleted file mode 100644 index b59a69c5e..000000000 --- a/src/pkg/runtime/goc2c.c +++ /dev/null @@ -1,750 +0,0 @@ -// Copyright 2009 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. - -// +build ignore - -/* - * Translate a .goc file into a .c file. A .goc file is a combination - * of a limited form of Go with C. - */ - -/* - package PACKAGENAME - {# line} - func NAME([NAME TYPE { , NAME TYPE }]) [(NAME TYPE { , NAME TYPE })] \{ - C code with proper brace nesting - \} -*/ - -/* - * We generate C code which implements the function such that it can - * be called from Go and executes the C code. - */ - -#include <u.h> -#include <stdio.h> -#include <libc.h> - -/* Whether we're emitting for gcc */ -static int gcc; - -/* File and line number */ -static const char *file; -static unsigned int lineno = 1; - -/* List of names and types. */ -struct params { - struct params *next; - char *name; - char *type; -}; - -/* index into type_table */ -enum { - Bool, - Float, - Int, - Uint, - Uintptr, - String, - Slice, - Eface, -}; - -static struct { - char *name; - int size; -} type_table[] = { - /* variable sized first, for easy replacement */ - /* order matches enum above */ - /* default is 32-bit architecture sizes */ - "bool", 1, - "float", 4, - "int", 4, - "uint", 4, - "uintptr", 4, - "String", 8, - "Slice", 12, - "Eface", 8, - - /* fixed size */ - "float32", 4, - "float64", 8, - "byte", 1, - "int8", 1, - "uint8", 1, - "int16", 2, - "uint16", 2, - "int32", 4, - "uint32", 4, - "int64", 8, - "uint64", 8, - - NULL, -}; - -/* Fixed structure alignment (non-gcc only) */ -int structround = 4; - -/* Unexpected EOF. */ -static void -bad_eof(void) -{ - sysfatal("%s:%ud: unexpected EOF\n", file, lineno); -} - -/* Out of memory. */ -static void -bad_mem(void) -{ - sysfatal("%s:%ud: out of memory\n", file, lineno); -} - -/* Allocate memory without fail. */ -static void * -xmalloc(unsigned int size) -{ - void *ret = malloc(size); - if (ret == NULL) - bad_mem(); - return ret; -} - -/* Reallocate memory without fail. */ -static void* -xrealloc(void *buf, unsigned int size) -{ - void *ret = realloc(buf, size); - if (ret == NULL) - bad_mem(); - return ret; -} - -/* Free a list of parameters. */ -static void -free_params(struct params *p) -{ - while (p != NULL) { - struct params *next; - - next = p->next; - free(p->name); - free(p->type); - free(p); - p = next; - } -} - -/* Read a character, tracking lineno. */ -static int -getchar_update_lineno(void) -{ - int c; - - c = getchar(); - if (c == '\n') - ++lineno; - return c; -} - -/* Read a character, giving an error on EOF, tracking lineno. */ -static int -getchar_no_eof(void) -{ - int c; - - c = getchar_update_lineno(); - if (c == EOF) - bad_eof(); - return c; -} - -/* Read a character, skipping comments. */ -static int -getchar_skipping_comments(void) -{ - int c; - - while (1) { - c = getchar_update_lineno(); - if (c != '/') - return c; - - c = getchar(); - if (c == '/') { - do { - c = getchar_update_lineno(); - } while (c != EOF && c != '\n'); - return c; - } else if (c == '*') { - while (1) { - c = getchar_update_lineno(); - if (c == EOF) - return EOF; - if (c == '*') { - do { - c = getchar_update_lineno(); - } while (c == '*'); - if (c == '/') - break; - } - } - } else { - ungetc(c, stdin); - return '/'; - } - } -} - -/* - * Read and return a token. Tokens are string or character literals - * or else delimited by whitespace or by [(),{}]. - * The latter are all returned as single characters. - */ -static char * -read_token(void) -{ - int c, q; - char *buf; - unsigned int alc, off; - const char* delims = "(),{}"; - - while (1) { - c = getchar_skipping_comments(); - if (c == EOF) - return NULL; - if (!isspace(c)) - break; - } - alc = 16; - buf = xmalloc(alc + 1); - off = 0; - if(c == '"' || c == '\'') { - q = c; - buf[off] = c; - ++off; - while (1) { - if (off+2 >= alc) { // room for c and maybe next char - alc *= 2; - buf = xrealloc(buf, alc + 1); - } - c = getchar_no_eof(); - buf[off] = c; - ++off; - if(c == q) - break; - if(c == '\\') { - buf[off] = getchar_no_eof(); - ++off; - } - } - } else if (strchr(delims, c) != NULL) { - buf[off] = c; - ++off; - } else { - while (1) { - if (off >= alc) { - alc *= 2; - buf = xrealloc(buf, alc + 1); - } - buf[off] = c; - ++off; - c = getchar_skipping_comments(); - if (c == EOF) - break; - if (isspace(c) || strchr(delims, c) != NULL) { - if (c == '\n') - lineno--; - ungetc(c, stdin); - break; - } - } - } - buf[off] = '\0'; - return buf; -} - -/* Read a token, giving an error on EOF. */ -static char * -read_token_no_eof(void) -{ - char *token = read_token(); - if (token == NULL) - bad_eof(); - return token; -} - -/* Read the package clause, and return the package name. */ -static char * -read_package(void) -{ - char *token; - - token = read_token_no_eof(); - if (token == nil) - sysfatal("%s:%ud: no token\n", file, lineno); - if (strcmp(token, "package") != 0) { - sysfatal("%s:%ud: expected \"package\", got \"%s\"\n", - file, lineno, token); - } - return read_token_no_eof(); -} - -/* Read and copy preprocessor lines. */ -static void -read_preprocessor_lines(void) -{ - while (1) { - int c; - - do { - c = getchar_skipping_comments(); - } while (isspace(c)); - if (c != '#') { - ungetc(c, stdin); - break; - } - putchar(c); - do { - c = getchar_update_lineno(); - putchar(c); - } while (c != '\n'); - } -} - -/* - * Read a type in Go syntax and return a type in C syntax. We only - * permit basic types and pointers. - */ -static char * -read_type(void) -{ - char *p, *op, *q; - int pointer_count; - unsigned int len; - - p = read_token_no_eof(); - if (*p != '*') - return p; - op = p; - pointer_count = 0; - while (*p == '*') { - ++pointer_count; - ++p; - } - len = strlen(p); - q = xmalloc(len + pointer_count + 1); - memcpy(q, p, len); - while (pointer_count > 0) { - q[len] = '*'; - ++len; - --pointer_count; - } - q[len] = '\0'; - free(op); - return q; -} - -/* Return the size of the given type. */ -static int -type_size(char *p) -{ - int i; - - if(p[strlen(p)-1] == '*') - return type_table[Uintptr].size; - - for(i=0; type_table[i].name; i++) - if(strcmp(type_table[i].name, p) == 0) - return type_table[i].size; - sysfatal("%s:%ud: unknown type %s\n", file, lineno, p); - return 0; -} - -/* - * Read a list of parameters. Each parameter is a name and a type. - * The list ends with a ')'. We have already read the '('. - */ -static struct params * -read_params(int *poffset) -{ - char *token; - struct params *ret, **pp, *p; - int offset, size, rnd; - - ret = NULL; - pp = &ret; - token = read_token_no_eof(); - offset = 0; - if (strcmp(token, ")") != 0) { - while (1) { - p = xmalloc(sizeof(struct params)); - p->name = token; - p->type = read_type(); - p->next = NULL; - *pp = p; - pp = &p->next; - - size = type_size(p->type); - rnd = size; - if(rnd > structround) - rnd = structround; - if(offset%rnd) - offset += rnd - offset%rnd; - offset += size; - - token = read_token_no_eof(); - if (strcmp(token, ",") != 0) - break; - token = read_token_no_eof(); - } - } - if (strcmp(token, ")") != 0) { - sysfatal("%s:%ud: expected '('\n", - file, lineno); - } - if (poffset != NULL) - *poffset = offset; - return ret; -} - -/* - * Read a function header. This reads up to and including the initial - * '{' character. Returns 1 if it read a header, 0 at EOF. - */ -static int -read_func_header(char **name, struct params **params, int *paramwid, struct params **rets) -{ - int lastline; - char *token; - - lastline = -1; - while (1) { - token = read_token(); - if (token == NULL) - return 0; - if (strcmp(token, "func") == 0) { - if(lastline != -1) - printf("\n"); - break; - } - if (lastline != lineno) { - if (lastline == lineno-1) - printf("\n"); - else - printf("\n#line %d \"%s\"\n", lineno, file); - lastline = lineno; - } - printf("%s ", token); - } - - *name = read_token_no_eof(); - - token = read_token(); - if (token == NULL || strcmp(token, "(") != 0) { - sysfatal("%s:%ud: expected \"(\"\n", - file, lineno); - } - *params = read_params(paramwid); - - token = read_token(); - if (token == NULL || strcmp(token, "(") != 0) - *rets = NULL; - else { - *rets = read_params(NULL); - token = read_token(); - } - if (token == NULL || strcmp(token, "{") != 0) { - sysfatal("%s:%ud: expected \"{\"\n", - file, lineno); - } - return 1; -} - -/* Write out parameters. */ -static void -write_params(struct params *params, int *first) -{ - struct params *p; - - for (p = params; p != NULL; p = p->next) { - if (*first) - *first = 0; - else - printf(", "); - printf("%s %s", p->type, p->name); - } -} - -/* Write a 6g function header. */ -static void -write_6g_func_header(char *package, char *name, struct params *params, - int paramwid, struct params *rets) -{ - int first, n; - - printf("void\n%s·%s(", package, name); - first = 1; - write_params(params, &first); - - /* insert padding to align output struct */ - if(rets != NULL && paramwid%structround != 0) { - n = structround - paramwid%structround; - if(n & 1) - printf(", uint8"); - if(n & 2) - printf(", uint16"); - if(n & 4) - printf(", uint32"); - } - - write_params(rets, &first); - printf(")\n{\n"); -} - -/* Write a 6g function trailer. */ -static void -write_6g_func_trailer(struct params *rets) -{ - struct params *p; - - for (p = rets; p != NULL; p = p->next) - printf("\tFLUSH(&%s);\n", p->name); - printf("}\n"); -} - -/* Define the gcc function return type if necessary. */ -static void -define_gcc_return_type(char *package, char *name, struct params *rets) -{ - struct params *p; - - if (rets == NULL || rets->next == NULL) - return; - printf("struct %s_%s_ret {\n", package, name); - for (p = rets; p != NULL; p = p->next) - printf(" %s %s;\n", p->type, p->name); - printf("};\n"); -} - -/* Write out the gcc function return type. */ -static void -write_gcc_return_type(char *package, char *name, struct params *rets) -{ - if (rets == NULL) - printf("void"); - else if (rets->next == NULL) - printf("%s", rets->type); - else - printf("struct %s_%s_ret", package, name); -} - -/* Write out a gcc function header. */ -static void -write_gcc_func_header(char *package, char *name, struct params *params, - struct params *rets) -{ - int first; - struct params *p; - - define_gcc_return_type(package, name, rets); - write_gcc_return_type(package, name, rets); - printf(" %s_%s(", package, name); - first = 1; - write_params(params, &first); - printf(") asm (\"%s.%s\");\n", package, name); - write_gcc_return_type(package, name, rets); - printf(" %s_%s(", package, name); - first = 1; - write_params(params, &first); - printf(")\n{\n"); - for (p = rets; p != NULL; p = p->next) - printf(" %s %s;\n", p->type, p->name); -} - -/* Write out a gcc function trailer. */ -static void -write_gcc_func_trailer(char *package, char *name, struct params *rets) -{ - if (rets == NULL) - ; - else if (rets->next == NULL) - printf("return %s;\n", rets->name); - else { - struct params *p; - - printf(" {\n struct %s_%s_ret __ret;\n", package, name); - for (p = rets; p != NULL; p = p->next) - printf(" __ret.%s = %s;\n", p->name, p->name); - printf(" return __ret;\n }\n"); - } - printf("}\n"); -} - -/* Write out a function header. */ -static void -write_func_header(char *package, char *name, - struct params *params, int paramwid, - struct params *rets) -{ - if (gcc) - write_gcc_func_header(package, name, params, rets); - else - write_6g_func_header(package, name, params, paramwid, rets); - printf("#line %d \"%s\"\n", lineno, file); -} - -/* Write out a function trailer. */ -static void -write_func_trailer(char *package, char *name, - struct params *rets) -{ - if (gcc) - write_gcc_func_trailer(package, name, rets); - else - write_6g_func_trailer(rets); -} - -/* - * Read and write the body of the function, ending in an unnested } - * (which is read but not written). - */ -static void -copy_body(void) -{ - int nesting = 0; - while (1) { - int c; - - c = getchar_no_eof(); - if (c == '}' && nesting == 0) - return; - putchar(c); - switch (c) { - default: - break; - case '{': - ++nesting; - break; - case '}': - --nesting; - break; - case '/': - c = getchar_update_lineno(); - putchar(c); - if (c == '/') { - do { - c = getchar_no_eof(); - putchar(c); - } while (c != '\n'); - } else if (c == '*') { - while (1) { - c = getchar_no_eof(); - putchar(c); - if (c == '*') { - do { - c = getchar_no_eof(); - putchar(c); - } while (c == '*'); - if (c == '/') - break; - } - } - } - break; - case '"': - case '\'': - { - int delim = c; - do { - c = getchar_no_eof(); - putchar(c); - if (c == '\\') { - c = getchar_no_eof(); - putchar(c); - c = '\0'; - } - } while (c != delim); - } - break; - } - } -} - -/* Process the entire file. */ -static void -process_file(void) -{ - char *package, *name; - struct params *params, *rets; - int paramwid; - - package = read_package(); - read_preprocessor_lines(); - while (read_func_header(&name, ¶ms, ¶mwid, &rets)) { - write_func_header(package, name, params, paramwid, rets); - copy_body(); - write_func_trailer(package, name, rets); - free(name); - free_params(params); - free_params(rets); - } - free(package); -} - -static void -usage(void) -{ - sysfatal("Usage: goc2c [--6g | --gc] [file]\n"); -} - -void -main(int argc, char **argv) -{ - char *goarch; - - argv0 = argv[0]; - while(argc > 1 && argv[1][0] == '-') { - if(strcmp(argv[1], "-") == 0) - break; - if(strcmp(argv[1], "--6g") == 0) - gcc = 0; - else if(strcmp(argv[1], "--gcc") == 0) - gcc = 1; - else - usage(); - argc--; - argv++; - } - - if(argc <= 1 || strcmp(argv[1], "-") == 0) { - file = "<stdin>"; - process_file(); - exits(0); - } - - if(argc > 2) - usage(); - - file = argv[1]; - if(freopen(file, "r", stdin) == 0) { - sysfatal("open %s: %r\n", file); - } - - if(!gcc) { - // 6g etc; update size table - goarch = getenv("GOARCH"); - if(goarch != NULL && strcmp(goarch, "amd64") == 0) { - type_table[Uintptr].size = 8; - type_table[String].size = 16; - type_table[Slice].size = 8+4+4; - type_table[Eface].size = 8+8; - structround = 8; - } - } - - printf("// AUTO-GENERATED by autogen.sh; DO NOT EDIT\n\n"); - process_file(); - exits(0); -} diff --git a/src/pkg/runtime/malloc.goc b/src/pkg/runtime/malloc.goc index af03f8018..fbdd6bb02 100644 --- a/src/pkg/runtime/malloc.goc +++ b/src/pkg/runtime/malloc.goc @@ -371,6 +371,22 @@ runtime·MHeap_SysAlloc(MHeap *h, uintptr n) { byte *p; + if(n > h->arena_end - h->arena_used) { + // We are in 32-bit mode, maybe we didn't use all possible address space yet. + // Reserve some more space. + byte *new_end; + uintptr needed; + + needed = (uintptr)h->arena_used + n - (uintptr)h->arena_end; + // Round wanted arena size to a multiple of 256MB. + needed = (needed + (256<<20) - 1) & ~((256<<20)-1); + new_end = h->arena_end + needed; + if(new_end <= h->arena_start + MaxArena32) { + p = runtime·SysReserve(h->arena_end, new_end - h->arena_end); + if(p == h->arena_end) + h->arena_end = new_end; + } + } if(n <= h->arena_end - h->arena_used) { // Keep taking from our reservation. p = h->arena_used; @@ -392,7 +408,8 @@ runtime·MHeap_SysAlloc(MHeap *h, uintptr n) return nil; if(p < h->arena_start || p+n - h->arena_start >= MaxArena32) { - runtime·printf("runtime: memory allocated by OS not in usable range\n"); + runtime·printf("runtime: memory allocated by OS (%p) not in usable range [%p,%p)\n", + p, h->arena_start, h->arena_start+MaxArena32); runtime·SysFree(p, n); return nil; } diff --git a/src/pkg/runtime/pprof/pprof_test.go b/src/pkg/runtime/pprof/pprof_test.go index 2dc7aef7e..82bb2a292 100644 --- a/src/pkg/runtime/pprof/pprof_test.go +++ b/src/pkg/runtime/pprof/pprof_test.go @@ -24,8 +24,9 @@ func TestCPUProfile(t *testing.T) { } vers := string(out) t.Logf("uname -a: %v", vers) - if strings.Contains(vers, "Darwin Kernel Version 10.8.0") && strings.Contains(vers, "root:xnu-1504.15.3~1/RELEASE_X86_64") { - t.Logf("skipping test on known-broken kernel (64-bit Snow Leopard)") + // Lion uses "Darwin Kernel Version 11". + if strings.Contains(vers, "Darwin Kernel Version 10") && strings.Contains(vers, "RELEASE_X86_64") { + t.Logf("skipping test on known-broken kernel (64-bit Leopard / Snow Leopard)") return } case "plan9": diff --git a/src/pkg/runtime/proc.c b/src/pkg/runtime/proc.c index de7090c52..962f748ce 100644 --- a/src/pkg/runtime/proc.c +++ b/src/pkg/runtime/proc.c @@ -200,7 +200,9 @@ runtime·schedinit(void) n = maxgomaxprocs; runtime·gomaxprocs = n; } - setmcpumax(runtime·gomaxprocs); + // wait for the main goroutine to start before taking + // GOMAXPROCS into account. + setmcpumax(1); runtime·singleproc = runtime·gomaxprocs == 1; canaddmcpu(); // mcpu++ to account for bootstrap m @@ -225,6 +227,8 @@ runtime·main(void) // by calling runtime.LockOSThread during initialization // to preserve the lock. runtime·LockOSThread(); + // From now on, newgoroutines may use non-main threads. + setmcpumax(runtime·gomaxprocs); runtime·sched.init = true; scvg = runtime·newproc1((byte*)runtime·MHeap_Scavenger, nil, 0, 0, runtime·main); main·init(); @@ -730,6 +734,12 @@ runtime·mstart(void) m->g0->sched.pc = (void*)-1; // make sure it is never used runtime·asminit(); runtime·minit(); + + // Install signal handlers; after minit so that minit can + // prepare the thread to be able to handle the signals. + if(m == &runtime·m0) + runtime·initsig(); + schedule(nil); } @@ -1158,6 +1168,11 @@ runtime·malg(int32 stacksize) G *newg; byte *stk; + if(StackTop < sizeof(Stktop)) { + runtime·printf("runtime: SizeofStktop=%d, should be >=%d\n", (int32)StackTop, (int32)sizeof(Stktop)); + runtime·throw("runtime: bad stack.h"); + } + newg = runtime·malloc(sizeof(G)); if(stacksize >= 0) { if(g == m->g0) { diff --git a/src/pkg/runtime/runtime.c b/src/pkg/runtime/runtime.c index afe8c5abe..ebb5544fb 100644 --- a/src/pkg/runtime/runtime.c +++ b/src/pkg/runtime/runtime.c @@ -119,7 +119,7 @@ void runtime·panicstring(int8 *s) { Eface err; - + if(m->gcing) { runtime·printf("panic: %s\n", s); runtime·throw("panic during gc"); @@ -189,7 +189,7 @@ runtime·goargs(void) { String *s; int32 i; - + // for windows implementation see "os" package if(Windows) return; @@ -207,7 +207,7 @@ runtime·goenvs_unix(void) { String *s; int32 i, n; - + for(n=0; argv[argc+1+n] != 0; n++) ; @@ -342,8 +342,6 @@ runtime·check(void) runtime·throw("float32nan2"); if(!(i != i1)) runtime·throw("float32nan3"); - - runtime·initsig(); } void diff --git a/src/pkg/runtime/runtime.h b/src/pkg/runtime/runtime.h index f2669fdb7..6f5aea11d 100644 --- a/src/pkg/runtime/runtime.h +++ b/src/pkg/runtime/runtime.h @@ -675,7 +675,6 @@ void runtime·panicslice(void); /* * runtime c-called (but written in Go) */ -void runtime·newError(String, Eface*); void runtime·printany(Eface); void runtime·newTypeAssertionError(String*, String*, String*, String*, Eface*); void runtime·newErrorString(String, Eface*); @@ -706,7 +705,6 @@ float64 runtime·ldexp(float64 d, int32 e); float64 runtime·modf(float64 d, float64 *ip); void runtime·semacquire(uint32*); void runtime·semrelease(uint32*); -String runtime·signame(int32 sig); int32 runtime·gomaxprocsfunc(int32 n); void runtime·procyield(uint32); void runtime·osyield(void); diff --git a/src/pkg/runtime/signal_plan9_386.c b/src/pkg/runtime/signal_plan9_386.c index 5eb04023f..d26688516 100644 --- a/src/pkg/runtime/signal_plan9_386.c +++ b/src/pkg/runtime/signal_plan9_386.c @@ -4,12 +4,6 @@ #include "runtime.h" -String -runtime·signame(int32) -{ - return runtime·emptystring; -} - void runtime·sigenable(uint32 sig) { diff --git a/src/pkg/runtime/signal_unix.c b/src/pkg/runtime/signal_unix.c index 0b9d2a55a..9b7e8b03a 100644 --- a/src/pkg/runtime/signal_unix.c +++ b/src/pkg/runtime/signal_unix.c @@ -10,14 +10,6 @@ extern SigTab runtime·sigtab[]; -String -runtime·signame(int32 sig) -{ - if(sig < 0 || sig >= NSIG) - return runtime·emptystring; - return runtime·gostringnocopy((byte*)runtime·sigtab[sig].name); -} - void runtime·initsig(void) { diff --git a/src/pkg/runtime/stack.h b/src/pkg/runtime/stack.h index f56dac120..d42385d6c 100644 --- a/src/pkg/runtime/stack.h +++ b/src/pkg/runtime/stack.h @@ -94,4 +94,9 @@ enum { // The maximum number of bytes that a chain of NOSPLIT // functions can use. StackLimit = StackGuard - StackSystem - StackSmall, + + // The assumed size of the top-of-stack data block. + // The actual size can be smaller than this but cannot be larger. + // Checked in proc.c's runtime.malg. + StackTop = 72, }; diff --git a/src/pkg/runtime/stack_test.go b/src/pkg/runtime/stack_test.go new file mode 100644 index 000000000..01c6b6e2f --- /dev/null +++ b/src/pkg/runtime/stack_test.go @@ -0,0 +1,1528 @@ +// Copyright 2012 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. + +// Test stack split logic by calling functions of every frame size +// from near 0 up to and beyond the default segment size (4k). +// Each of those functions reports its SP + stack limit, and then +// the test (the caller) checks that those make sense. By not +// doing the actual checking and reporting from the suspect functions, +// we minimize the possibility of crashes during the test itself. +// +// Exhaustive test for http://golang.org/issue/3310. +// The linker used to get a few sizes near the segment size wrong: +// +// --- FAIL: TestStackSplit (0.01 seconds) +// stack_test.go:22: after runtime_test.stack3812: sp=0x7f7818d5d078 < limit=0x7f7818d5d080 +// stack_test.go:22: after runtime_test.stack3816: sp=0x7f7818d5d078 < limit=0x7f7818d5d080 +// stack_test.go:22: after runtime_test.stack3820: sp=0x7f7818d5d070 < limit=0x7f7818d5d080 +// stack_test.go:22: after runtime_test.stack3824: sp=0x7f7818d5d070 < limit=0x7f7818d5d080 +// stack_test.go:22: after runtime_test.stack3828: sp=0x7f7818d5d068 < limit=0x7f7818d5d080 +// stack_test.go:22: after runtime_test.stack3832: sp=0x7f7818d5d068 < limit=0x7f7818d5d080 +// stack_test.go:22: after runtime_test.stack3836: sp=0x7f7818d5d060 < limit=0x7f7818d5d080 +// stack_test.go:22: after runtime_test.stack3840: sp=0x7f7818d5d060 < limit=0x7f7818d5d080 +// stack_test.go:22: after runtime_test.stack3844: sp=0x7f7818d5d058 < limit=0x7f7818d5d080 +// stack_test.go:22: after runtime_test.stack3848: sp=0x7f7818d5d058 < limit=0x7f7818d5d080 +// stack_test.go:22: after runtime_test.stack3852: sp=0x7f7818d5d050 < limit=0x7f7818d5d080 +// stack_test.go:22: after runtime_test.stack3856: sp=0x7f7818d5d050 < limit=0x7f7818d5d080 +// stack_test.go:22: after runtime_test.stack3860: sp=0x7f7818d5d048 < limit=0x7f7818d5d080 +// stack_test.go:22: after runtime_test.stack3864: sp=0x7f7818d5d048 < limit=0x7f7818d5d080 +// FAIL + +package runtime_test + +import ( + . "runtime" + "testing" + "unsafe" +) + +// See stack.h. +const ( + StackGuard = 256 + StackLimit = 128 +) + +func TestStackSplit(t *testing.T) { + for _, f := range splitTests { + sp, guard := f() + bottom := guard - StackGuard + if sp < bottom+StackLimit { + fun := FuncForPC(*(*uintptr)(unsafe.Pointer(&f))) + t.Errorf("after %s: sp=%#x < limit=%#x (guard=%#x, bottom=%#x)", + fun.Name(), sp, bottom+StackLimit, guard, bottom) + } + } +} + +var splitTests = []func() (uintptr, uintptr){ + // Edit .+1,/^}/-1|seq 4 4 5000 | sed 's/.*/ stack&,/' | fmt + stack4, stack8, stack12, stack16, stack20, stack24, stack28, + stack32, stack36, stack40, stack44, stack48, stack52, stack56, + stack60, stack64, stack68, stack72, stack76, stack80, stack84, + stack88, stack92, stack96, stack100, stack104, stack108, stack112, + stack116, stack120, stack124, stack128, stack132, stack136, + stack140, stack144, stack148, stack152, stack156, stack160, + stack164, stack168, stack172, stack176, stack180, stack184, + stack188, stack192, stack196, stack200, stack204, stack208, + stack212, stack216, stack220, stack224, stack228, stack232, + stack236, stack240, stack244, stack248, stack252, stack256, + stack260, stack264, stack268, stack272, stack276, stack280, + stack284, stack288, stack292, stack296, stack300, stack304, + stack308, stack312, stack316, stack320, stack324, stack328, + stack332, stack336, stack340, stack344, stack348, stack352, + stack356, stack360, stack364, stack368, stack372, stack376, + stack380, stack384, stack388, stack392, stack396, stack400, + stack404, stack408, stack412, stack416, stack420, stack424, + stack428, stack432, stack436, stack440, stack444, stack448, + stack452, stack456, stack460, stack464, stack468, stack472, + stack476, stack480, stack484, stack488, stack492, stack496, + stack500, stack504, stack508, stack512, stack516, stack520, + stack524, stack528, stack532, stack536, stack540, stack544, + stack548, stack552, stack556, stack560, stack564, stack568, + stack572, stack576, stack580, stack584, stack588, stack592, + stack596, stack600, stack604, stack608, stack612, stack616, + stack620, stack624, stack628, stack632, stack636, stack640, + stack644, stack648, stack652, stack656, stack660, stack664, + stack668, stack672, stack676, stack680, stack684, stack688, + stack692, stack696, stack700, stack704, stack708, stack712, + stack716, stack720, stack724, stack728, stack732, stack736, + stack740, stack744, stack748, stack752, stack756, stack760, + stack764, stack768, stack772, stack776, stack780, stack784, + stack788, stack792, stack796, stack800, stack804, stack808, + stack812, stack816, stack820, stack824, stack828, stack832, + stack836, stack840, stack844, stack848, stack852, stack856, + stack860, stack864, stack868, stack872, stack876, stack880, + stack884, stack888, stack892, stack896, stack900, stack904, + stack908, stack912, stack916, stack920, stack924, stack928, + stack932, stack936, stack940, stack944, stack948, stack952, + stack956, stack960, stack964, stack968, stack972, stack976, + stack980, stack984, stack988, stack992, stack996, stack1000, + stack1004, stack1008, stack1012, stack1016, stack1020, stack1024, + stack1028, stack1032, stack1036, stack1040, stack1044, stack1048, + stack1052, stack1056, stack1060, stack1064, stack1068, stack1072, + stack1076, stack1080, stack1084, stack1088, stack1092, stack1096, + stack1100, stack1104, stack1108, stack1112, stack1116, stack1120, + stack1124, stack1128, stack1132, stack1136, stack1140, stack1144, + stack1148, stack1152, stack1156, stack1160, stack1164, stack1168, + stack1172, stack1176, stack1180, stack1184, stack1188, stack1192, + stack1196, stack1200, stack1204, stack1208, stack1212, stack1216, + stack1220, stack1224, stack1228, stack1232, stack1236, stack1240, + stack1244, stack1248, stack1252, stack1256, stack1260, stack1264, + stack1268, stack1272, stack1276, stack1280, stack1284, stack1288, + stack1292, stack1296, stack1300, stack1304, stack1308, stack1312, + stack1316, stack1320, stack1324, stack1328, stack1332, stack1336, + stack1340, stack1344, stack1348, stack1352, stack1356, stack1360, + stack1364, stack1368, stack1372, stack1376, stack1380, stack1384, + stack1388, stack1392, stack1396, stack1400, stack1404, stack1408, + stack1412, stack1416, stack1420, stack1424, stack1428, stack1432, + stack1436, stack1440, stack1444, stack1448, stack1452, stack1456, + stack1460, stack1464, stack1468, stack1472, stack1476, stack1480, + stack1484, stack1488, stack1492, stack1496, stack1500, stack1504, + stack1508, stack1512, stack1516, stack1520, stack1524, stack1528, + stack1532, stack1536, stack1540, stack1544, stack1548, stack1552, + stack1556, stack1560, stack1564, stack1568, stack1572, stack1576, + stack1580, stack1584, stack1588, stack1592, stack1596, stack1600, + stack1604, stack1608, stack1612, stack1616, stack1620, stack1624, + stack1628, stack1632, stack1636, stack1640, stack1644, stack1648, + stack1652, stack1656, stack1660, stack1664, stack1668, stack1672, + stack1676, stack1680, stack1684, stack1688, stack1692, stack1696, + stack1700, stack1704, stack1708, stack1712, stack1716, stack1720, + stack1724, stack1728, stack1732, stack1736, stack1740, stack1744, + stack1748, stack1752, stack1756, stack1760, stack1764, stack1768, + stack1772, stack1776, stack1780, stack1784, stack1788, stack1792, + stack1796, stack1800, stack1804, stack1808, stack1812, stack1816, + stack1820, stack1824, stack1828, stack1832, stack1836, stack1840, + stack1844, stack1848, stack1852, stack1856, stack1860, stack1864, + stack1868, stack1872, stack1876, stack1880, stack1884, stack1888, + stack1892, stack1896, stack1900, stack1904, stack1908, stack1912, + stack1916, stack1920, stack1924, stack1928, stack1932, stack1936, + stack1940, stack1944, stack1948, stack1952, stack1956, stack1960, + stack1964, stack1968, stack1972, stack1976, stack1980, stack1984, + stack1988, stack1992, stack1996, stack2000, stack2004, stack2008, + stack2012, stack2016, stack2020, stack2024, stack2028, stack2032, + stack2036, stack2040, stack2044, stack2048, stack2052, stack2056, + stack2060, stack2064, stack2068, stack2072, stack2076, stack2080, + stack2084, stack2088, stack2092, stack2096, stack2100, stack2104, + stack2108, stack2112, stack2116, stack2120, stack2124, stack2128, + stack2132, stack2136, stack2140, stack2144, stack2148, stack2152, + stack2156, stack2160, stack2164, stack2168, stack2172, stack2176, + stack2180, stack2184, stack2188, stack2192, stack2196, stack2200, + stack2204, stack2208, stack2212, stack2216, stack2220, stack2224, + stack2228, stack2232, stack2236, stack2240, stack2244, stack2248, + stack2252, stack2256, stack2260, stack2264, stack2268, stack2272, + stack2276, stack2280, stack2284, stack2288, stack2292, stack2296, + stack2300, stack2304, stack2308, stack2312, stack2316, stack2320, + stack2324, stack2328, stack2332, stack2336, stack2340, stack2344, + stack2348, stack2352, stack2356, stack2360, stack2364, stack2368, + stack2372, stack2376, stack2380, stack2384, stack2388, stack2392, + stack2396, stack2400, stack2404, stack2408, stack2412, stack2416, + stack2420, stack2424, stack2428, stack2432, stack2436, stack2440, + stack2444, stack2448, stack2452, stack2456, stack2460, stack2464, + stack2468, stack2472, stack2476, stack2480, stack2484, stack2488, + stack2492, stack2496, stack2500, stack2504, stack2508, stack2512, + stack2516, stack2520, stack2524, stack2528, stack2532, stack2536, + stack2540, stack2544, stack2548, stack2552, stack2556, stack2560, + stack2564, stack2568, stack2572, stack2576, stack2580, stack2584, + stack2588, stack2592, stack2596, stack2600, stack2604, stack2608, + stack2612, stack2616, stack2620, stack2624, stack2628, stack2632, + stack2636, stack2640, stack2644, stack2648, stack2652, stack2656, + stack2660, stack2664, stack2668, stack2672, stack2676, stack2680, + stack2684, stack2688, stack2692, stack2696, stack2700, stack2704, + stack2708, stack2712, stack2716, stack2720, stack2724, stack2728, + stack2732, stack2736, stack2740, stack2744, stack2748, stack2752, + stack2756, stack2760, stack2764, stack2768, stack2772, stack2776, + stack2780, stack2784, stack2788, stack2792, stack2796, stack2800, + stack2804, stack2808, stack2812, stack2816, stack2820, stack2824, + stack2828, stack2832, stack2836, stack2840, stack2844, stack2848, + stack2852, stack2856, stack2860, stack2864, stack2868, stack2872, + stack2876, stack2880, stack2884, stack2888, stack2892, stack2896, + stack2900, stack2904, stack2908, stack2912, stack2916, stack2920, + stack2924, stack2928, stack2932, stack2936, stack2940, stack2944, + stack2948, stack2952, stack2956, stack2960, stack2964, stack2968, + stack2972, stack2976, stack2980, stack2984, stack2988, stack2992, + stack2996, stack3000, stack3004, stack3008, stack3012, stack3016, + stack3020, stack3024, stack3028, stack3032, stack3036, stack3040, + stack3044, stack3048, stack3052, stack3056, stack3060, stack3064, + stack3068, stack3072, stack3076, stack3080, stack3084, stack3088, + stack3092, stack3096, stack3100, stack3104, stack3108, stack3112, + stack3116, stack3120, stack3124, stack3128, stack3132, stack3136, + stack3140, stack3144, stack3148, stack3152, stack3156, stack3160, + stack3164, stack3168, stack3172, stack3176, stack3180, stack3184, + stack3188, stack3192, stack3196, stack3200, stack3204, stack3208, + stack3212, stack3216, stack3220, stack3224, stack3228, stack3232, + stack3236, stack3240, stack3244, stack3248, stack3252, stack3256, + stack3260, stack3264, stack3268, stack3272, stack3276, stack3280, + stack3284, stack3288, stack3292, stack3296, stack3300, stack3304, + stack3308, stack3312, stack3316, stack3320, stack3324, stack3328, + stack3332, stack3336, stack3340, stack3344, stack3348, stack3352, + stack3356, stack3360, stack3364, stack3368, stack3372, stack3376, + stack3380, stack3384, stack3388, stack3392, stack3396, stack3400, + stack3404, stack3408, stack3412, stack3416, stack3420, stack3424, + stack3428, stack3432, stack3436, stack3440, stack3444, stack3448, + stack3452, stack3456, stack3460, stack3464, stack3468, stack3472, + stack3476, stack3480, stack3484, stack3488, stack3492, stack3496, + stack3500, stack3504, stack3508, stack3512, stack3516, stack3520, + stack3524, stack3528, stack3532, stack3536, stack3540, stack3544, + stack3548, stack3552, stack3556, stack3560, stack3564, stack3568, + stack3572, stack3576, stack3580, stack3584, stack3588, stack3592, + stack3596, stack3600, stack3604, stack3608, stack3612, stack3616, + stack3620, stack3624, stack3628, stack3632, stack3636, stack3640, + stack3644, stack3648, stack3652, stack3656, stack3660, stack3664, + stack3668, stack3672, stack3676, stack3680, stack3684, stack3688, + stack3692, stack3696, stack3700, stack3704, stack3708, stack3712, + stack3716, stack3720, stack3724, stack3728, stack3732, stack3736, + stack3740, stack3744, stack3748, stack3752, stack3756, stack3760, + stack3764, stack3768, stack3772, stack3776, stack3780, stack3784, + stack3788, stack3792, stack3796, stack3800, stack3804, stack3808, + stack3812, stack3816, stack3820, stack3824, stack3828, stack3832, + stack3836, stack3840, stack3844, stack3848, stack3852, stack3856, + stack3860, stack3864, stack3868, stack3872, stack3876, stack3880, + stack3884, stack3888, stack3892, stack3896, stack3900, stack3904, + stack3908, stack3912, stack3916, stack3920, stack3924, stack3928, + stack3932, stack3936, stack3940, stack3944, stack3948, stack3952, + stack3956, stack3960, stack3964, stack3968, stack3972, stack3976, + stack3980, stack3984, stack3988, stack3992, stack3996, stack4000, + stack4004, stack4008, stack4012, stack4016, stack4020, stack4024, + stack4028, stack4032, stack4036, stack4040, stack4044, stack4048, + stack4052, stack4056, stack4060, stack4064, stack4068, stack4072, + stack4076, stack4080, stack4084, stack4088, stack4092, stack4096, + stack4100, stack4104, stack4108, stack4112, stack4116, stack4120, + stack4124, stack4128, stack4132, stack4136, stack4140, stack4144, + stack4148, stack4152, stack4156, stack4160, stack4164, stack4168, + stack4172, stack4176, stack4180, stack4184, stack4188, stack4192, + stack4196, stack4200, stack4204, stack4208, stack4212, stack4216, + stack4220, stack4224, stack4228, stack4232, stack4236, stack4240, + stack4244, stack4248, stack4252, stack4256, stack4260, stack4264, + stack4268, stack4272, stack4276, stack4280, stack4284, stack4288, + stack4292, stack4296, stack4300, stack4304, stack4308, stack4312, + stack4316, stack4320, stack4324, stack4328, stack4332, stack4336, + stack4340, stack4344, stack4348, stack4352, stack4356, stack4360, + stack4364, stack4368, stack4372, stack4376, stack4380, stack4384, + stack4388, stack4392, stack4396, stack4400, stack4404, stack4408, + stack4412, stack4416, stack4420, stack4424, stack4428, stack4432, + stack4436, stack4440, stack4444, stack4448, stack4452, stack4456, + stack4460, stack4464, stack4468, stack4472, stack4476, stack4480, + stack4484, stack4488, stack4492, stack4496, stack4500, stack4504, + stack4508, stack4512, stack4516, stack4520, stack4524, stack4528, + stack4532, stack4536, stack4540, stack4544, stack4548, stack4552, + stack4556, stack4560, stack4564, stack4568, stack4572, stack4576, + stack4580, stack4584, stack4588, stack4592, stack4596, stack4600, + stack4604, stack4608, stack4612, stack4616, stack4620, stack4624, + stack4628, stack4632, stack4636, stack4640, stack4644, stack4648, + stack4652, stack4656, stack4660, stack4664, stack4668, stack4672, + stack4676, stack4680, stack4684, stack4688, stack4692, stack4696, + stack4700, stack4704, stack4708, stack4712, stack4716, stack4720, + stack4724, stack4728, stack4732, stack4736, stack4740, stack4744, + stack4748, stack4752, stack4756, stack4760, stack4764, stack4768, + stack4772, stack4776, stack4780, stack4784, stack4788, stack4792, + stack4796, stack4800, stack4804, stack4808, stack4812, stack4816, + stack4820, stack4824, stack4828, stack4832, stack4836, stack4840, + stack4844, stack4848, stack4852, stack4856, stack4860, stack4864, + stack4868, stack4872, stack4876, stack4880, stack4884, stack4888, + stack4892, stack4896, stack4900, stack4904, stack4908, stack4912, + stack4916, stack4920, stack4924, stack4928, stack4932, stack4936, + stack4940, stack4944, stack4948, stack4952, stack4956, stack4960, + stack4964, stack4968, stack4972, stack4976, stack4980, stack4984, + stack4988, stack4992, stack4996, stack5000, +} + +var Used byte + +func use(buf []byte) { + for _, c := range buf { + Used += c + } +} + +// Edit .+1,$ | seq 4 4 5000 | sed 's/.*/func stack&()(uintptr, uintptr) { var buf [&]byte; use(buf[:]); return Stackguard() }/' +func stack4() (uintptr, uintptr) { var buf [4]byte; use(buf[:]); return Stackguard() } +func stack8() (uintptr, uintptr) { var buf [8]byte; use(buf[:]); return Stackguard() } +func stack12() (uintptr, uintptr) { var buf [12]byte; use(buf[:]); return Stackguard() } +func stack16() (uintptr, uintptr) { var buf [16]byte; use(buf[:]); return Stackguard() } +func stack20() (uintptr, uintptr) { var buf [20]byte; use(buf[:]); return Stackguard() } +func stack24() (uintptr, uintptr) { var buf [24]byte; use(buf[:]); return Stackguard() } +func stack28() (uintptr, uintptr) { var buf [28]byte; use(buf[:]); return Stackguard() } +func stack32() (uintptr, uintptr) { var buf [32]byte; use(buf[:]); return Stackguard() } +func stack36() (uintptr, uintptr) { var buf [36]byte; use(buf[:]); return Stackguard() } +func stack40() (uintptr, uintptr) { var buf [40]byte; use(buf[:]); return Stackguard() } +func stack44() (uintptr, uintptr) { var buf [44]byte; use(buf[:]); return Stackguard() } +func stack48() (uintptr, uintptr) { var buf [48]byte; use(buf[:]); return Stackguard() } +func stack52() (uintptr, uintptr) { var buf [52]byte; use(buf[:]); return Stackguard() } +func stack56() (uintptr, uintptr) { var buf [56]byte; use(buf[:]); return Stackguard() } +func stack60() (uintptr, uintptr) { var buf [60]byte; use(buf[:]); return Stackguard() } +func stack64() (uintptr, uintptr) { var buf [64]byte; use(buf[:]); return Stackguard() } +func stack68() (uintptr, uintptr) { var buf [68]byte; use(buf[:]); return Stackguard() } +func stack72() (uintptr, uintptr) { var buf [72]byte; use(buf[:]); return Stackguard() } +func stack76() (uintptr, uintptr) { var buf [76]byte; use(buf[:]); return Stackguard() } +func stack80() (uintptr, uintptr) { var buf [80]byte; use(buf[:]); return Stackguard() } +func stack84() (uintptr, uintptr) { var buf [84]byte; use(buf[:]); return Stackguard() } +func stack88() (uintptr, uintptr) { var buf [88]byte; use(buf[:]); return Stackguard() } +func stack92() (uintptr, uintptr) { var buf [92]byte; use(buf[:]); return Stackguard() } +func stack96() (uintptr, uintptr) { var buf [96]byte; use(buf[:]); return Stackguard() } +func stack100() (uintptr, uintptr) { var buf [100]byte; use(buf[:]); return Stackguard() } +func stack104() (uintptr, uintptr) { var buf [104]byte; use(buf[:]); return Stackguard() } +func stack108() (uintptr, uintptr) { var buf [108]byte; use(buf[:]); return Stackguard() } +func stack112() (uintptr, uintptr) { var buf [112]byte; use(buf[:]); return Stackguard() } +func stack116() (uintptr, uintptr) { var buf [116]byte; use(buf[:]); return Stackguard() } +func stack120() (uintptr, uintptr) { var buf [120]byte; use(buf[:]); return Stackguard() } +func stack124() (uintptr, uintptr) { var buf [124]byte; use(buf[:]); return Stackguard() } +func stack128() (uintptr, uintptr) { var buf [128]byte; use(buf[:]); return Stackguard() } +func stack132() (uintptr, uintptr) { var buf [132]byte; use(buf[:]); return Stackguard() } +func stack136() (uintptr, uintptr) { var buf [136]byte; use(buf[:]); return Stackguard() } +func stack140() (uintptr, uintptr) { var buf [140]byte; use(buf[:]); return Stackguard() } +func stack144() (uintptr, uintptr) { var buf [144]byte; use(buf[:]); return Stackguard() } +func stack148() (uintptr, uintptr) { var buf [148]byte; use(buf[:]); return Stackguard() } +func stack152() (uintptr, uintptr) { var buf [152]byte; use(buf[:]); return Stackguard() } +func stack156() (uintptr, uintptr) { var buf [156]byte; use(buf[:]); return Stackguard() } +func stack160() (uintptr, uintptr) { var buf [160]byte; use(buf[:]); return Stackguard() } +func stack164() (uintptr, uintptr) { var buf [164]byte; use(buf[:]); return Stackguard() } +func stack168() (uintptr, uintptr) { var buf [168]byte; use(buf[:]); return Stackguard() } +func stack172() (uintptr, uintptr) { var buf [172]byte; use(buf[:]); return Stackguard() } +func stack176() (uintptr, uintptr) { var buf [176]byte; use(buf[:]); return Stackguard() } +func stack180() (uintptr, uintptr) { var buf [180]byte; use(buf[:]); return Stackguard() } +func stack184() (uintptr, uintptr) { var buf [184]byte; use(buf[:]); return Stackguard() } +func stack188() (uintptr, uintptr) { var buf [188]byte; use(buf[:]); return Stackguard() } +func stack192() (uintptr, uintptr) { var buf [192]byte; use(buf[:]); return Stackguard() } +func stack196() (uintptr, uintptr) { var buf [196]byte; use(buf[:]); return Stackguard() } +func stack200() (uintptr, uintptr) { var buf [200]byte; use(buf[:]); return Stackguard() } +func stack204() (uintptr, uintptr) { var buf [204]byte; use(buf[:]); return Stackguard() } +func stack208() (uintptr, uintptr) { var buf [208]byte; use(buf[:]); return Stackguard() } +func stack212() (uintptr, uintptr) { var buf [212]byte; use(buf[:]); return Stackguard() } +func stack216() (uintptr, uintptr) { var buf [216]byte; use(buf[:]); return Stackguard() } +func stack220() (uintptr, uintptr) { var buf [220]byte; use(buf[:]); return Stackguard() } +func stack224() (uintptr, uintptr) { var buf [224]byte; use(buf[:]); return Stackguard() } +func stack228() (uintptr, uintptr) { var buf [228]byte; use(buf[:]); return Stackguard() } +func stack232() (uintptr, uintptr) { var buf [232]byte; use(buf[:]); return Stackguard() } +func stack236() (uintptr, uintptr) { var buf [236]byte; use(buf[:]); return Stackguard() } +func stack240() (uintptr, uintptr) { var buf [240]byte; use(buf[:]); return Stackguard() } +func stack244() (uintptr, uintptr) { var buf [244]byte; use(buf[:]); return Stackguard() } +func stack248() (uintptr, uintptr) { var buf [248]byte; use(buf[:]); return Stackguard() } +func stack252() (uintptr, uintptr) { var buf [252]byte; use(buf[:]); return Stackguard() } +func stack256() (uintptr, uintptr) { var buf [256]byte; use(buf[:]); return Stackguard() } +func stack260() (uintptr, uintptr) { var buf [260]byte; use(buf[:]); return Stackguard() } +func stack264() (uintptr, uintptr) { var buf [264]byte; use(buf[:]); return Stackguard() } +func stack268() (uintptr, uintptr) { var buf [268]byte; use(buf[:]); return Stackguard() } +func stack272() (uintptr, uintptr) { var buf [272]byte; use(buf[:]); return Stackguard() } +func stack276() (uintptr, uintptr) { var buf [276]byte; use(buf[:]); return Stackguard() } +func stack280() (uintptr, uintptr) { var buf [280]byte; use(buf[:]); return Stackguard() } +func stack284() (uintptr, uintptr) { var buf [284]byte; use(buf[:]); return Stackguard() } +func stack288() (uintptr, uintptr) { var buf [288]byte; use(buf[:]); return Stackguard() } +func stack292() (uintptr, uintptr) { var buf [292]byte; use(buf[:]); return Stackguard() } +func stack296() (uintptr, uintptr) { var buf [296]byte; use(buf[:]); return Stackguard() } +func stack300() (uintptr, uintptr) { var buf [300]byte; use(buf[:]); return Stackguard() } +func stack304() (uintptr, uintptr) { var buf [304]byte; use(buf[:]); return Stackguard() } +func stack308() (uintptr, uintptr) { var buf [308]byte; use(buf[:]); return Stackguard() } +func stack312() (uintptr, uintptr) { var buf [312]byte; use(buf[:]); return Stackguard() } +func stack316() (uintptr, uintptr) { var buf [316]byte; use(buf[:]); return Stackguard() } +func stack320() (uintptr, uintptr) { var buf [320]byte; use(buf[:]); return Stackguard() } +func stack324() (uintptr, uintptr) { var buf [324]byte; use(buf[:]); return Stackguard() } +func stack328() (uintptr, uintptr) { var buf [328]byte; use(buf[:]); return Stackguard() } +func stack332() (uintptr, uintptr) { var buf [332]byte; use(buf[:]); return Stackguard() } +func stack336() (uintptr, uintptr) { var buf [336]byte; use(buf[:]); return Stackguard() } +func stack340() (uintptr, uintptr) { var buf [340]byte; use(buf[:]); return Stackguard() } +func stack344() (uintptr, uintptr) { var buf [344]byte; use(buf[:]); return Stackguard() } +func stack348() (uintptr, uintptr) { var buf [348]byte; use(buf[:]); return Stackguard() } +func stack352() (uintptr, uintptr) { var buf [352]byte; use(buf[:]); return Stackguard() } +func stack356() (uintptr, uintptr) { var buf [356]byte; use(buf[:]); return Stackguard() } +func stack360() (uintptr, uintptr) { var buf [360]byte; use(buf[:]); return Stackguard() } +func stack364() (uintptr, uintptr) { var buf [364]byte; use(buf[:]); return Stackguard() } +func stack368() (uintptr, uintptr) { var buf [368]byte; use(buf[:]); return Stackguard() } +func stack372() (uintptr, uintptr) { var buf [372]byte; use(buf[:]); return Stackguard() } +func stack376() (uintptr, uintptr) { var buf [376]byte; use(buf[:]); return Stackguard() } +func stack380() (uintptr, uintptr) { var buf [380]byte; use(buf[:]); return Stackguard() } +func stack384() (uintptr, uintptr) { var buf [384]byte; use(buf[:]); return Stackguard() } +func stack388() (uintptr, uintptr) { var buf [388]byte; use(buf[:]); return Stackguard() } +func stack392() (uintptr, uintptr) { var buf [392]byte; use(buf[:]); return Stackguard() } +func stack396() (uintptr, uintptr) { var buf [396]byte; use(buf[:]); return Stackguard() } +func stack400() (uintptr, uintptr) { var buf [400]byte; use(buf[:]); return Stackguard() } +func stack404() (uintptr, uintptr) { var buf [404]byte; use(buf[:]); return Stackguard() } +func stack408() (uintptr, uintptr) { var buf [408]byte; use(buf[:]); return Stackguard() } +func stack412() (uintptr, uintptr) { var buf [412]byte; use(buf[:]); return Stackguard() } +func stack416() (uintptr, uintptr) { var buf [416]byte; use(buf[:]); return Stackguard() } +func stack420() (uintptr, uintptr) { var buf [420]byte; use(buf[:]); return Stackguard() } +func stack424() (uintptr, uintptr) { var buf [424]byte; use(buf[:]); return Stackguard() } +func stack428() (uintptr, uintptr) { var buf [428]byte; use(buf[:]); return Stackguard() } +func stack432() (uintptr, uintptr) { var buf [432]byte; use(buf[:]); return Stackguard() } +func stack436() (uintptr, uintptr) { var buf [436]byte; use(buf[:]); return Stackguard() } +func stack440() (uintptr, uintptr) { var buf [440]byte; use(buf[:]); return Stackguard() } +func stack444() (uintptr, uintptr) { var buf [444]byte; use(buf[:]); return Stackguard() } +func stack448() (uintptr, uintptr) { var buf [448]byte; use(buf[:]); return Stackguard() } +func stack452() (uintptr, uintptr) { var buf [452]byte; use(buf[:]); return Stackguard() } +func stack456() (uintptr, uintptr) { var buf [456]byte; use(buf[:]); return Stackguard() } +func stack460() (uintptr, uintptr) { var buf [460]byte; use(buf[:]); return Stackguard() } +func stack464() (uintptr, uintptr) { var buf [464]byte; use(buf[:]); return Stackguard() } +func stack468() (uintptr, uintptr) { var buf [468]byte; use(buf[:]); return Stackguard() } +func stack472() (uintptr, uintptr) { var buf [472]byte; use(buf[:]); return Stackguard() } +func stack476() (uintptr, uintptr) { var buf [476]byte; use(buf[:]); return Stackguard() } +func stack480() (uintptr, uintptr) { var buf [480]byte; use(buf[:]); return Stackguard() } +func stack484() (uintptr, uintptr) { var buf [484]byte; use(buf[:]); return Stackguard() } +func stack488() (uintptr, uintptr) { var buf [488]byte; use(buf[:]); return Stackguard() } +func stack492() (uintptr, uintptr) { var buf [492]byte; use(buf[:]); return Stackguard() } +func stack496() (uintptr, uintptr) { var buf [496]byte; use(buf[:]); return Stackguard() } +func stack500() (uintptr, uintptr) { var buf [500]byte; use(buf[:]); return Stackguard() } +func stack504() (uintptr, uintptr) { var buf [504]byte; use(buf[:]); return Stackguard() } +func stack508() (uintptr, uintptr) { var buf [508]byte; use(buf[:]); return Stackguard() } +func stack512() (uintptr, uintptr) { var buf [512]byte; use(buf[:]); return Stackguard() } +func stack516() (uintptr, uintptr) { var buf [516]byte; use(buf[:]); return Stackguard() } +func stack520() (uintptr, uintptr) { var buf [520]byte; use(buf[:]); return Stackguard() } +func stack524() (uintptr, uintptr) { var buf [524]byte; use(buf[:]); return Stackguard() } +func stack528() (uintptr, uintptr) { var buf [528]byte; use(buf[:]); return Stackguard() } +func stack532() (uintptr, uintptr) { var buf [532]byte; use(buf[:]); return Stackguard() } +func stack536() (uintptr, uintptr) { var buf [536]byte; use(buf[:]); return Stackguard() } +func stack540() (uintptr, uintptr) { var buf [540]byte; use(buf[:]); return Stackguard() } +func stack544() (uintptr, uintptr) { var buf [544]byte; use(buf[:]); return Stackguard() } +func stack548() (uintptr, uintptr) { var buf [548]byte; use(buf[:]); return Stackguard() } +func stack552() (uintptr, uintptr) { var buf [552]byte; use(buf[:]); return Stackguard() } +func stack556() (uintptr, uintptr) { var buf [556]byte; use(buf[:]); return Stackguard() } +func stack560() (uintptr, uintptr) { var buf [560]byte; use(buf[:]); return Stackguard() } +func stack564() (uintptr, uintptr) { var buf [564]byte; use(buf[:]); return Stackguard() } +func stack568() (uintptr, uintptr) { var buf [568]byte; use(buf[:]); return Stackguard() } +func stack572() (uintptr, uintptr) { var buf [572]byte; use(buf[:]); return Stackguard() } +func stack576() (uintptr, uintptr) { var buf [576]byte; use(buf[:]); return Stackguard() } +func stack580() (uintptr, uintptr) { var buf [580]byte; use(buf[:]); return Stackguard() } +func stack584() (uintptr, uintptr) { var buf [584]byte; use(buf[:]); return Stackguard() } +func stack588() (uintptr, uintptr) { var buf [588]byte; use(buf[:]); return Stackguard() } +func stack592() (uintptr, uintptr) { var buf [592]byte; use(buf[:]); return Stackguard() } +func stack596() (uintptr, uintptr) { var buf [596]byte; use(buf[:]); return Stackguard() } +func stack600() (uintptr, uintptr) { var buf [600]byte; use(buf[:]); return Stackguard() } +func stack604() (uintptr, uintptr) { var buf [604]byte; use(buf[:]); return Stackguard() } +func stack608() (uintptr, uintptr) { var buf [608]byte; use(buf[:]); return Stackguard() } +func stack612() (uintptr, uintptr) { var buf [612]byte; use(buf[:]); return Stackguard() } +func stack616() (uintptr, uintptr) { var buf [616]byte; use(buf[:]); return Stackguard() } +func stack620() (uintptr, uintptr) { var buf [620]byte; use(buf[:]); return Stackguard() } +func stack624() (uintptr, uintptr) { var buf [624]byte; use(buf[:]); return Stackguard() } +func stack628() (uintptr, uintptr) { var buf [628]byte; use(buf[:]); return Stackguard() } +func stack632() (uintptr, uintptr) { var buf [632]byte; use(buf[:]); return Stackguard() } +func stack636() (uintptr, uintptr) { var buf [636]byte; use(buf[:]); return Stackguard() } +func stack640() (uintptr, uintptr) { var buf [640]byte; use(buf[:]); return Stackguard() } +func stack644() (uintptr, uintptr) { var buf [644]byte; use(buf[:]); return Stackguard() } +func stack648() (uintptr, uintptr) { var buf [648]byte; use(buf[:]); return Stackguard() } +func stack652() (uintptr, uintptr) { var buf [652]byte; use(buf[:]); return Stackguard() } +func stack656() (uintptr, uintptr) { var buf [656]byte; use(buf[:]); return Stackguard() } +func stack660() (uintptr, uintptr) { var buf [660]byte; use(buf[:]); return Stackguard() } +func stack664() (uintptr, uintptr) { var buf [664]byte; use(buf[:]); return Stackguard() } +func stack668() (uintptr, uintptr) { var buf [668]byte; use(buf[:]); return Stackguard() } +func stack672() (uintptr, uintptr) { var buf [672]byte; use(buf[:]); return Stackguard() } +func stack676() (uintptr, uintptr) { var buf [676]byte; use(buf[:]); return Stackguard() } +func stack680() (uintptr, uintptr) { var buf [680]byte; use(buf[:]); return Stackguard() } +func stack684() (uintptr, uintptr) { var buf [684]byte; use(buf[:]); return Stackguard() } +func stack688() (uintptr, uintptr) { var buf [688]byte; use(buf[:]); return Stackguard() } +func stack692() (uintptr, uintptr) { var buf [692]byte; use(buf[:]); return Stackguard() } +func stack696() (uintptr, uintptr) { var buf [696]byte; use(buf[:]); return Stackguard() } +func stack700() (uintptr, uintptr) { var buf [700]byte; use(buf[:]); return Stackguard() } +func stack704() (uintptr, uintptr) { var buf [704]byte; use(buf[:]); return Stackguard() } +func stack708() (uintptr, uintptr) { var buf [708]byte; use(buf[:]); return Stackguard() } +func stack712() (uintptr, uintptr) { var buf [712]byte; use(buf[:]); return Stackguard() } +func stack716() (uintptr, uintptr) { var buf [716]byte; use(buf[:]); return Stackguard() } +func stack720() (uintptr, uintptr) { var buf [720]byte; use(buf[:]); return Stackguard() } +func stack724() (uintptr, uintptr) { var buf [724]byte; use(buf[:]); return Stackguard() } +func stack728() (uintptr, uintptr) { var buf [728]byte; use(buf[:]); return Stackguard() } +func stack732() (uintptr, uintptr) { var buf [732]byte; use(buf[:]); return Stackguard() } +func stack736() (uintptr, uintptr) { var buf [736]byte; use(buf[:]); return Stackguard() } +func stack740() (uintptr, uintptr) { var buf [740]byte; use(buf[:]); return Stackguard() } +func stack744() (uintptr, uintptr) { var buf [744]byte; use(buf[:]); return Stackguard() } +func stack748() (uintptr, uintptr) { var buf [748]byte; use(buf[:]); return Stackguard() } +func stack752() (uintptr, uintptr) { var buf [752]byte; use(buf[:]); return Stackguard() } +func stack756() (uintptr, uintptr) { var buf [756]byte; use(buf[:]); return Stackguard() } +func stack760() (uintptr, uintptr) { var buf [760]byte; use(buf[:]); return Stackguard() } +func stack764() (uintptr, uintptr) { var buf [764]byte; use(buf[:]); return Stackguard() } +func stack768() (uintptr, uintptr) { var buf [768]byte; use(buf[:]); return Stackguard() } +func stack772() (uintptr, uintptr) { var buf [772]byte; use(buf[:]); return Stackguard() } +func stack776() (uintptr, uintptr) { var buf [776]byte; use(buf[:]); return Stackguard() } +func stack780() (uintptr, uintptr) { var buf [780]byte; use(buf[:]); return Stackguard() } +func stack784() (uintptr, uintptr) { var buf [784]byte; use(buf[:]); return Stackguard() } +func stack788() (uintptr, uintptr) { var buf [788]byte; use(buf[:]); return Stackguard() } +func stack792() (uintptr, uintptr) { var buf [792]byte; use(buf[:]); return Stackguard() } +func stack796() (uintptr, uintptr) { var buf [796]byte; use(buf[:]); return Stackguard() } +func stack800() (uintptr, uintptr) { var buf [800]byte; use(buf[:]); return Stackguard() } +func stack804() (uintptr, uintptr) { var buf [804]byte; use(buf[:]); return Stackguard() } +func stack808() (uintptr, uintptr) { var buf [808]byte; use(buf[:]); return Stackguard() } +func stack812() (uintptr, uintptr) { var buf [812]byte; use(buf[:]); return Stackguard() } +func stack816() (uintptr, uintptr) { var buf [816]byte; use(buf[:]); return Stackguard() } +func stack820() (uintptr, uintptr) { var buf [820]byte; use(buf[:]); return Stackguard() } +func stack824() (uintptr, uintptr) { var buf [824]byte; use(buf[:]); return Stackguard() } +func stack828() (uintptr, uintptr) { var buf [828]byte; use(buf[:]); return Stackguard() } +func stack832() (uintptr, uintptr) { var buf [832]byte; use(buf[:]); return Stackguard() } +func stack836() (uintptr, uintptr) { var buf [836]byte; use(buf[:]); return Stackguard() } +func stack840() (uintptr, uintptr) { var buf [840]byte; use(buf[:]); return Stackguard() } +func stack844() (uintptr, uintptr) { var buf [844]byte; use(buf[:]); return Stackguard() } +func stack848() (uintptr, uintptr) { var buf [848]byte; use(buf[:]); return Stackguard() } +func stack852() (uintptr, uintptr) { var buf [852]byte; use(buf[:]); return Stackguard() } +func stack856() (uintptr, uintptr) { var buf [856]byte; use(buf[:]); return Stackguard() } +func stack860() (uintptr, uintptr) { var buf [860]byte; use(buf[:]); return Stackguard() } +func stack864() (uintptr, uintptr) { var buf [864]byte; use(buf[:]); return Stackguard() } +func stack868() (uintptr, uintptr) { var buf [868]byte; use(buf[:]); return Stackguard() } +func stack872() (uintptr, uintptr) { var buf [872]byte; use(buf[:]); return Stackguard() } +func stack876() (uintptr, uintptr) { var buf [876]byte; use(buf[:]); return Stackguard() } +func stack880() (uintptr, uintptr) { var buf [880]byte; use(buf[:]); return Stackguard() } +func stack884() (uintptr, uintptr) { var buf [884]byte; use(buf[:]); return Stackguard() } +func stack888() (uintptr, uintptr) { var buf [888]byte; use(buf[:]); return Stackguard() } +func stack892() (uintptr, uintptr) { var buf [892]byte; use(buf[:]); return Stackguard() } +func stack896() (uintptr, uintptr) { var buf [896]byte; use(buf[:]); return Stackguard() } +func stack900() (uintptr, uintptr) { var buf [900]byte; use(buf[:]); return Stackguard() } +func stack904() (uintptr, uintptr) { var buf [904]byte; use(buf[:]); return Stackguard() } +func stack908() (uintptr, uintptr) { var buf [908]byte; use(buf[:]); return Stackguard() } +func stack912() (uintptr, uintptr) { var buf [912]byte; use(buf[:]); return Stackguard() } +func stack916() (uintptr, uintptr) { var buf [916]byte; use(buf[:]); return Stackguard() } +func stack920() (uintptr, uintptr) { var buf [920]byte; use(buf[:]); return Stackguard() } +func stack924() (uintptr, uintptr) { var buf [924]byte; use(buf[:]); return Stackguard() } +func stack928() (uintptr, uintptr) { var buf [928]byte; use(buf[:]); return Stackguard() } +func stack932() (uintptr, uintptr) { var buf [932]byte; use(buf[:]); return Stackguard() } +func stack936() (uintptr, uintptr) { var buf [936]byte; use(buf[:]); return Stackguard() } +func stack940() (uintptr, uintptr) { var buf [940]byte; use(buf[:]); return Stackguard() } +func stack944() (uintptr, uintptr) { var buf [944]byte; use(buf[:]); return Stackguard() } +func stack948() (uintptr, uintptr) { var buf [948]byte; use(buf[:]); return Stackguard() } +func stack952() (uintptr, uintptr) { var buf [952]byte; use(buf[:]); return Stackguard() } +func stack956() (uintptr, uintptr) { var buf [956]byte; use(buf[:]); return Stackguard() } +func stack960() (uintptr, uintptr) { var buf [960]byte; use(buf[:]); return Stackguard() } +func stack964() (uintptr, uintptr) { var buf [964]byte; use(buf[:]); return Stackguard() } +func stack968() (uintptr, uintptr) { var buf [968]byte; use(buf[:]); return Stackguard() } +func stack972() (uintptr, uintptr) { var buf [972]byte; use(buf[:]); return Stackguard() } +func stack976() (uintptr, uintptr) { var buf [976]byte; use(buf[:]); return Stackguard() } +func stack980() (uintptr, uintptr) { var buf [980]byte; use(buf[:]); return Stackguard() } +func stack984() (uintptr, uintptr) { var buf [984]byte; use(buf[:]); return Stackguard() } +func stack988() (uintptr, uintptr) { var buf [988]byte; use(buf[:]); return Stackguard() } +func stack992() (uintptr, uintptr) { var buf [992]byte; use(buf[:]); return Stackguard() } +func stack996() (uintptr, uintptr) { var buf [996]byte; use(buf[:]); return Stackguard() } +func stack1000() (uintptr, uintptr) { var buf [1000]byte; use(buf[:]); return Stackguard() } +func stack1004() (uintptr, uintptr) { var buf [1004]byte; use(buf[:]); return Stackguard() } +func stack1008() (uintptr, uintptr) { var buf [1008]byte; use(buf[:]); return Stackguard() } +func stack1012() (uintptr, uintptr) { var buf [1012]byte; use(buf[:]); return Stackguard() } +func stack1016() (uintptr, uintptr) { var buf [1016]byte; use(buf[:]); return Stackguard() } +func stack1020() (uintptr, uintptr) { var buf [1020]byte; use(buf[:]); return Stackguard() } +func stack1024() (uintptr, uintptr) { var buf [1024]byte; use(buf[:]); return Stackguard() } +func stack1028() (uintptr, uintptr) { var buf [1028]byte; use(buf[:]); return Stackguard() } +func stack1032() (uintptr, uintptr) { var buf [1032]byte; use(buf[:]); return Stackguard() } +func stack1036() (uintptr, uintptr) { var buf [1036]byte; use(buf[:]); return Stackguard() } +func stack1040() (uintptr, uintptr) { var buf [1040]byte; use(buf[:]); return Stackguard() } +func stack1044() (uintptr, uintptr) { var buf [1044]byte; use(buf[:]); return Stackguard() } +func stack1048() (uintptr, uintptr) { var buf [1048]byte; use(buf[:]); return Stackguard() } +func stack1052() (uintptr, uintptr) { var buf [1052]byte; use(buf[:]); return Stackguard() } +func stack1056() (uintptr, uintptr) { var buf [1056]byte; use(buf[:]); return Stackguard() } +func stack1060() (uintptr, uintptr) { var buf [1060]byte; use(buf[:]); return Stackguard() } +func stack1064() (uintptr, uintptr) { var buf [1064]byte; use(buf[:]); return Stackguard() } +func stack1068() (uintptr, uintptr) { var buf [1068]byte; use(buf[:]); return Stackguard() } +func stack1072() (uintptr, uintptr) { var buf [1072]byte; use(buf[:]); return Stackguard() } +func stack1076() (uintptr, uintptr) { var buf [1076]byte; use(buf[:]); return Stackguard() } +func stack1080() (uintptr, uintptr) { var buf [1080]byte; use(buf[:]); return Stackguard() } +func stack1084() (uintptr, uintptr) { var buf [1084]byte; use(buf[:]); return Stackguard() } +func stack1088() (uintptr, uintptr) { var buf [1088]byte; use(buf[:]); return Stackguard() } +func stack1092() (uintptr, uintptr) { var buf [1092]byte; use(buf[:]); return Stackguard() } +func stack1096() (uintptr, uintptr) { var buf [1096]byte; use(buf[:]); return Stackguard() } +func stack1100() (uintptr, uintptr) { var buf [1100]byte; use(buf[:]); return Stackguard() } +func stack1104() (uintptr, uintptr) { var buf [1104]byte; use(buf[:]); return Stackguard() } +func stack1108() (uintptr, uintptr) { var buf [1108]byte; use(buf[:]); return Stackguard() } +func stack1112() (uintptr, uintptr) { var buf [1112]byte; use(buf[:]); return Stackguard() } +func stack1116() (uintptr, uintptr) { var buf [1116]byte; use(buf[:]); return Stackguard() } +func stack1120() (uintptr, uintptr) { var buf [1120]byte; use(buf[:]); return Stackguard() } +func stack1124() (uintptr, uintptr) { var buf [1124]byte; use(buf[:]); return Stackguard() } +func stack1128() (uintptr, uintptr) { var buf [1128]byte; use(buf[:]); return Stackguard() } +func stack1132() (uintptr, uintptr) { var buf [1132]byte; use(buf[:]); return Stackguard() } +func stack1136() (uintptr, uintptr) { var buf [1136]byte; use(buf[:]); return Stackguard() } +func stack1140() (uintptr, uintptr) { var buf [1140]byte; use(buf[:]); return Stackguard() } +func stack1144() (uintptr, uintptr) { var buf [1144]byte; use(buf[:]); return Stackguard() } +func stack1148() (uintptr, uintptr) { var buf [1148]byte; use(buf[:]); return Stackguard() } +func stack1152() (uintptr, uintptr) { var buf [1152]byte; use(buf[:]); return Stackguard() } +func stack1156() (uintptr, uintptr) { var buf [1156]byte; use(buf[:]); return Stackguard() } +func stack1160() (uintptr, uintptr) { var buf [1160]byte; use(buf[:]); return Stackguard() } +func stack1164() (uintptr, uintptr) { var buf [1164]byte; use(buf[:]); return Stackguard() } +func stack1168() (uintptr, uintptr) { var buf [1168]byte; use(buf[:]); return Stackguard() } +func stack1172() (uintptr, uintptr) { var buf [1172]byte; use(buf[:]); return Stackguard() } +func stack1176() (uintptr, uintptr) { var buf [1176]byte; use(buf[:]); return Stackguard() } +func stack1180() (uintptr, uintptr) { var buf [1180]byte; use(buf[:]); return Stackguard() } +func stack1184() (uintptr, uintptr) { var buf [1184]byte; use(buf[:]); return Stackguard() } +func stack1188() (uintptr, uintptr) { var buf [1188]byte; use(buf[:]); return Stackguard() } +func stack1192() (uintptr, uintptr) { var buf [1192]byte; use(buf[:]); return Stackguard() } +func stack1196() (uintptr, uintptr) { var buf [1196]byte; use(buf[:]); return Stackguard() } +func stack1200() (uintptr, uintptr) { var buf [1200]byte; use(buf[:]); return Stackguard() } +func stack1204() (uintptr, uintptr) { var buf [1204]byte; use(buf[:]); return Stackguard() } +func stack1208() (uintptr, uintptr) { var buf [1208]byte; use(buf[:]); return Stackguard() } +func stack1212() (uintptr, uintptr) { var buf [1212]byte; use(buf[:]); return Stackguard() } +func stack1216() (uintptr, uintptr) { var buf [1216]byte; use(buf[:]); return Stackguard() } +func stack1220() (uintptr, uintptr) { var buf [1220]byte; use(buf[:]); return Stackguard() } +func stack1224() (uintptr, uintptr) { var buf [1224]byte; use(buf[:]); return Stackguard() } +func stack1228() (uintptr, uintptr) { var buf [1228]byte; use(buf[:]); return Stackguard() } +func stack1232() (uintptr, uintptr) { var buf [1232]byte; use(buf[:]); return Stackguard() } +func stack1236() (uintptr, uintptr) { var buf [1236]byte; use(buf[:]); return Stackguard() } +func stack1240() (uintptr, uintptr) { var buf [1240]byte; use(buf[:]); return Stackguard() } +func stack1244() (uintptr, uintptr) { var buf [1244]byte; use(buf[:]); return Stackguard() } +func stack1248() (uintptr, uintptr) { var buf [1248]byte; use(buf[:]); return Stackguard() } +func stack1252() (uintptr, uintptr) { var buf [1252]byte; use(buf[:]); return Stackguard() } +func stack1256() (uintptr, uintptr) { var buf [1256]byte; use(buf[:]); return Stackguard() } +func stack1260() (uintptr, uintptr) { var buf [1260]byte; use(buf[:]); return Stackguard() } +func stack1264() (uintptr, uintptr) { var buf [1264]byte; use(buf[:]); return Stackguard() } +func stack1268() (uintptr, uintptr) { var buf [1268]byte; use(buf[:]); return Stackguard() } +func stack1272() (uintptr, uintptr) { var buf [1272]byte; use(buf[:]); return Stackguard() } +func stack1276() (uintptr, uintptr) { var buf [1276]byte; use(buf[:]); return Stackguard() } +func stack1280() (uintptr, uintptr) { var buf [1280]byte; use(buf[:]); return Stackguard() } +func stack1284() (uintptr, uintptr) { var buf [1284]byte; use(buf[:]); return Stackguard() } +func stack1288() (uintptr, uintptr) { var buf [1288]byte; use(buf[:]); return Stackguard() } +func stack1292() (uintptr, uintptr) { var buf [1292]byte; use(buf[:]); return Stackguard() } +func stack1296() (uintptr, uintptr) { var buf [1296]byte; use(buf[:]); return Stackguard() } +func stack1300() (uintptr, uintptr) { var buf [1300]byte; use(buf[:]); return Stackguard() } +func stack1304() (uintptr, uintptr) { var buf [1304]byte; use(buf[:]); return Stackguard() } +func stack1308() (uintptr, uintptr) { var buf [1308]byte; use(buf[:]); return Stackguard() } +func stack1312() (uintptr, uintptr) { var buf [1312]byte; use(buf[:]); return Stackguard() } +func stack1316() (uintptr, uintptr) { var buf [1316]byte; use(buf[:]); return Stackguard() } +func stack1320() (uintptr, uintptr) { var buf [1320]byte; use(buf[:]); return Stackguard() } +func stack1324() (uintptr, uintptr) { var buf [1324]byte; use(buf[:]); return Stackguard() } +func stack1328() (uintptr, uintptr) { var buf [1328]byte; use(buf[:]); return Stackguard() } +func stack1332() (uintptr, uintptr) { var buf [1332]byte; use(buf[:]); return Stackguard() } +func stack1336() (uintptr, uintptr) { var buf [1336]byte; use(buf[:]); return Stackguard() } +func stack1340() (uintptr, uintptr) { var buf [1340]byte; use(buf[:]); return Stackguard() } +func stack1344() (uintptr, uintptr) { var buf [1344]byte; use(buf[:]); return Stackguard() } +func stack1348() (uintptr, uintptr) { var buf [1348]byte; use(buf[:]); return Stackguard() } +func stack1352() (uintptr, uintptr) { var buf [1352]byte; use(buf[:]); return Stackguard() } +func stack1356() (uintptr, uintptr) { var buf [1356]byte; use(buf[:]); return Stackguard() } +func stack1360() (uintptr, uintptr) { var buf [1360]byte; use(buf[:]); return Stackguard() } +func stack1364() (uintptr, uintptr) { var buf [1364]byte; use(buf[:]); return Stackguard() } +func stack1368() (uintptr, uintptr) { var buf [1368]byte; use(buf[:]); return Stackguard() } +func stack1372() (uintptr, uintptr) { var buf [1372]byte; use(buf[:]); return Stackguard() } +func stack1376() (uintptr, uintptr) { var buf [1376]byte; use(buf[:]); return Stackguard() } +func stack1380() (uintptr, uintptr) { var buf [1380]byte; use(buf[:]); return Stackguard() } +func stack1384() (uintptr, uintptr) { var buf [1384]byte; use(buf[:]); return Stackguard() } +func stack1388() (uintptr, uintptr) { var buf [1388]byte; use(buf[:]); return Stackguard() } +func stack1392() (uintptr, uintptr) { var buf [1392]byte; use(buf[:]); return Stackguard() } +func stack1396() (uintptr, uintptr) { var buf [1396]byte; use(buf[:]); return Stackguard() } +func stack1400() (uintptr, uintptr) { var buf [1400]byte; use(buf[:]); return Stackguard() } +func stack1404() (uintptr, uintptr) { var buf [1404]byte; use(buf[:]); return Stackguard() } +func stack1408() (uintptr, uintptr) { var buf [1408]byte; use(buf[:]); return Stackguard() } +func stack1412() (uintptr, uintptr) { var buf [1412]byte; use(buf[:]); return Stackguard() } +func stack1416() (uintptr, uintptr) { var buf [1416]byte; use(buf[:]); return Stackguard() } +func stack1420() (uintptr, uintptr) { var buf [1420]byte; use(buf[:]); return Stackguard() } +func stack1424() (uintptr, uintptr) { var buf [1424]byte; use(buf[:]); return Stackguard() } +func stack1428() (uintptr, uintptr) { var buf [1428]byte; use(buf[:]); return Stackguard() } +func stack1432() (uintptr, uintptr) { var buf [1432]byte; use(buf[:]); return Stackguard() } +func stack1436() (uintptr, uintptr) { var buf [1436]byte; use(buf[:]); return Stackguard() } +func stack1440() (uintptr, uintptr) { var buf [1440]byte; use(buf[:]); return Stackguard() } +func stack1444() (uintptr, uintptr) { var buf [1444]byte; use(buf[:]); return Stackguard() } +func stack1448() (uintptr, uintptr) { var buf [1448]byte; use(buf[:]); return Stackguard() } +func stack1452() (uintptr, uintptr) { var buf [1452]byte; use(buf[:]); return Stackguard() } +func stack1456() (uintptr, uintptr) { var buf [1456]byte; use(buf[:]); return Stackguard() } +func stack1460() (uintptr, uintptr) { var buf [1460]byte; use(buf[:]); return Stackguard() } +func stack1464() (uintptr, uintptr) { var buf [1464]byte; use(buf[:]); return Stackguard() } +func stack1468() (uintptr, uintptr) { var buf [1468]byte; use(buf[:]); return Stackguard() } +func stack1472() (uintptr, uintptr) { var buf [1472]byte; use(buf[:]); return Stackguard() } +func stack1476() (uintptr, uintptr) { var buf [1476]byte; use(buf[:]); return Stackguard() } +func stack1480() (uintptr, uintptr) { var buf [1480]byte; use(buf[:]); return Stackguard() } +func stack1484() (uintptr, uintptr) { var buf [1484]byte; use(buf[:]); return Stackguard() } +func stack1488() (uintptr, uintptr) { var buf [1488]byte; use(buf[:]); return Stackguard() } +func stack1492() (uintptr, uintptr) { var buf [1492]byte; use(buf[:]); return Stackguard() } +func stack1496() (uintptr, uintptr) { var buf [1496]byte; use(buf[:]); return Stackguard() } +func stack1500() (uintptr, uintptr) { var buf [1500]byte; use(buf[:]); return Stackguard() } +func stack1504() (uintptr, uintptr) { var buf [1504]byte; use(buf[:]); return Stackguard() } +func stack1508() (uintptr, uintptr) { var buf [1508]byte; use(buf[:]); return Stackguard() } +func stack1512() (uintptr, uintptr) { var buf [1512]byte; use(buf[:]); return Stackguard() } +func stack1516() (uintptr, uintptr) { var buf [1516]byte; use(buf[:]); return Stackguard() } +func stack1520() (uintptr, uintptr) { var buf [1520]byte; use(buf[:]); return Stackguard() } +func stack1524() (uintptr, uintptr) { var buf [1524]byte; use(buf[:]); return Stackguard() } +func stack1528() (uintptr, uintptr) { var buf [1528]byte; use(buf[:]); return Stackguard() } +func stack1532() (uintptr, uintptr) { var buf [1532]byte; use(buf[:]); return Stackguard() } +func stack1536() (uintptr, uintptr) { var buf [1536]byte; use(buf[:]); return Stackguard() } +func stack1540() (uintptr, uintptr) { var buf [1540]byte; use(buf[:]); return Stackguard() } +func stack1544() (uintptr, uintptr) { var buf [1544]byte; use(buf[:]); return Stackguard() } +func stack1548() (uintptr, uintptr) { var buf [1548]byte; use(buf[:]); return Stackguard() } +func stack1552() (uintptr, uintptr) { var buf [1552]byte; use(buf[:]); return Stackguard() } +func stack1556() (uintptr, uintptr) { var buf [1556]byte; use(buf[:]); return Stackguard() } +func stack1560() (uintptr, uintptr) { var buf [1560]byte; use(buf[:]); return Stackguard() } +func stack1564() (uintptr, uintptr) { var buf [1564]byte; use(buf[:]); return Stackguard() } +func stack1568() (uintptr, uintptr) { var buf [1568]byte; use(buf[:]); return Stackguard() } +func stack1572() (uintptr, uintptr) { var buf [1572]byte; use(buf[:]); return Stackguard() } +func stack1576() (uintptr, uintptr) { var buf [1576]byte; use(buf[:]); return Stackguard() } +func stack1580() (uintptr, uintptr) { var buf [1580]byte; use(buf[:]); return Stackguard() } +func stack1584() (uintptr, uintptr) { var buf [1584]byte; use(buf[:]); return Stackguard() } +func stack1588() (uintptr, uintptr) { var buf [1588]byte; use(buf[:]); return Stackguard() } +func stack1592() (uintptr, uintptr) { var buf [1592]byte; use(buf[:]); return Stackguard() } +func stack1596() (uintptr, uintptr) { var buf [1596]byte; use(buf[:]); return Stackguard() } +func stack1600() (uintptr, uintptr) { var buf [1600]byte; use(buf[:]); return Stackguard() } +func stack1604() (uintptr, uintptr) { var buf [1604]byte; use(buf[:]); return Stackguard() } +func stack1608() (uintptr, uintptr) { var buf [1608]byte; use(buf[:]); return Stackguard() } +func stack1612() (uintptr, uintptr) { var buf [1612]byte; use(buf[:]); return Stackguard() } +func stack1616() (uintptr, uintptr) { var buf [1616]byte; use(buf[:]); return Stackguard() } +func stack1620() (uintptr, uintptr) { var buf [1620]byte; use(buf[:]); return Stackguard() } +func stack1624() (uintptr, uintptr) { var buf [1624]byte; use(buf[:]); return Stackguard() } +func stack1628() (uintptr, uintptr) { var buf [1628]byte; use(buf[:]); return Stackguard() } +func stack1632() (uintptr, uintptr) { var buf [1632]byte; use(buf[:]); return Stackguard() } +func stack1636() (uintptr, uintptr) { var buf [1636]byte; use(buf[:]); return Stackguard() } +func stack1640() (uintptr, uintptr) { var buf [1640]byte; use(buf[:]); return Stackguard() } +func stack1644() (uintptr, uintptr) { var buf [1644]byte; use(buf[:]); return Stackguard() } +func stack1648() (uintptr, uintptr) { var buf [1648]byte; use(buf[:]); return Stackguard() } +func stack1652() (uintptr, uintptr) { var buf [1652]byte; use(buf[:]); return Stackguard() } +func stack1656() (uintptr, uintptr) { var buf [1656]byte; use(buf[:]); return Stackguard() } +func stack1660() (uintptr, uintptr) { var buf [1660]byte; use(buf[:]); return Stackguard() } +func stack1664() (uintptr, uintptr) { var buf [1664]byte; use(buf[:]); return Stackguard() } +func stack1668() (uintptr, uintptr) { var buf [1668]byte; use(buf[:]); return Stackguard() } +func stack1672() (uintptr, uintptr) { var buf [1672]byte; use(buf[:]); return Stackguard() } +func stack1676() (uintptr, uintptr) { var buf [1676]byte; use(buf[:]); return Stackguard() } +func stack1680() (uintptr, uintptr) { var buf [1680]byte; use(buf[:]); return Stackguard() } +func stack1684() (uintptr, uintptr) { var buf [1684]byte; use(buf[:]); return Stackguard() } +func stack1688() (uintptr, uintptr) { var buf [1688]byte; use(buf[:]); return Stackguard() } +func stack1692() (uintptr, uintptr) { var buf [1692]byte; use(buf[:]); return Stackguard() } +func stack1696() (uintptr, uintptr) { var buf [1696]byte; use(buf[:]); return Stackguard() } +func stack1700() (uintptr, uintptr) { var buf [1700]byte; use(buf[:]); return Stackguard() } +func stack1704() (uintptr, uintptr) { var buf [1704]byte; use(buf[:]); return Stackguard() } +func stack1708() (uintptr, uintptr) { var buf [1708]byte; use(buf[:]); return Stackguard() } +func stack1712() (uintptr, uintptr) { var buf [1712]byte; use(buf[:]); return Stackguard() } +func stack1716() (uintptr, uintptr) { var buf [1716]byte; use(buf[:]); return Stackguard() } +func stack1720() (uintptr, uintptr) { var buf [1720]byte; use(buf[:]); return Stackguard() } +func stack1724() (uintptr, uintptr) { var buf [1724]byte; use(buf[:]); return Stackguard() } +func stack1728() (uintptr, uintptr) { var buf [1728]byte; use(buf[:]); return Stackguard() } +func stack1732() (uintptr, uintptr) { var buf [1732]byte; use(buf[:]); return Stackguard() } +func stack1736() (uintptr, uintptr) { var buf [1736]byte; use(buf[:]); return Stackguard() } +func stack1740() (uintptr, uintptr) { var buf [1740]byte; use(buf[:]); return Stackguard() } +func stack1744() (uintptr, uintptr) { var buf [1744]byte; use(buf[:]); return Stackguard() } +func stack1748() (uintptr, uintptr) { var buf [1748]byte; use(buf[:]); return Stackguard() } +func stack1752() (uintptr, uintptr) { var buf [1752]byte; use(buf[:]); return Stackguard() } +func stack1756() (uintptr, uintptr) { var buf [1756]byte; use(buf[:]); return Stackguard() } +func stack1760() (uintptr, uintptr) { var buf [1760]byte; use(buf[:]); return Stackguard() } +func stack1764() (uintptr, uintptr) { var buf [1764]byte; use(buf[:]); return Stackguard() } +func stack1768() (uintptr, uintptr) { var buf [1768]byte; use(buf[:]); return Stackguard() } +func stack1772() (uintptr, uintptr) { var buf [1772]byte; use(buf[:]); return Stackguard() } +func stack1776() (uintptr, uintptr) { var buf [1776]byte; use(buf[:]); return Stackguard() } +func stack1780() (uintptr, uintptr) { var buf [1780]byte; use(buf[:]); return Stackguard() } +func stack1784() (uintptr, uintptr) { var buf [1784]byte; use(buf[:]); return Stackguard() } +func stack1788() (uintptr, uintptr) { var buf [1788]byte; use(buf[:]); return Stackguard() } +func stack1792() (uintptr, uintptr) { var buf [1792]byte; use(buf[:]); return Stackguard() } +func stack1796() (uintptr, uintptr) { var buf [1796]byte; use(buf[:]); return Stackguard() } +func stack1800() (uintptr, uintptr) { var buf [1800]byte; use(buf[:]); return Stackguard() } +func stack1804() (uintptr, uintptr) { var buf [1804]byte; use(buf[:]); return Stackguard() } +func stack1808() (uintptr, uintptr) { var buf [1808]byte; use(buf[:]); return Stackguard() } +func stack1812() (uintptr, uintptr) { var buf [1812]byte; use(buf[:]); return Stackguard() } +func stack1816() (uintptr, uintptr) { var buf [1816]byte; use(buf[:]); return Stackguard() } +func stack1820() (uintptr, uintptr) { var buf [1820]byte; use(buf[:]); return Stackguard() } +func stack1824() (uintptr, uintptr) { var buf [1824]byte; use(buf[:]); return Stackguard() } +func stack1828() (uintptr, uintptr) { var buf [1828]byte; use(buf[:]); return Stackguard() } +func stack1832() (uintptr, uintptr) { var buf [1832]byte; use(buf[:]); return Stackguard() } +func stack1836() (uintptr, uintptr) { var buf [1836]byte; use(buf[:]); return Stackguard() } +func stack1840() (uintptr, uintptr) { var buf [1840]byte; use(buf[:]); return Stackguard() } +func stack1844() (uintptr, uintptr) { var buf [1844]byte; use(buf[:]); return Stackguard() } +func stack1848() (uintptr, uintptr) { var buf [1848]byte; use(buf[:]); return Stackguard() } +func stack1852() (uintptr, uintptr) { var buf [1852]byte; use(buf[:]); return Stackguard() } +func stack1856() (uintptr, uintptr) { var buf [1856]byte; use(buf[:]); return Stackguard() } +func stack1860() (uintptr, uintptr) { var buf [1860]byte; use(buf[:]); return Stackguard() } +func stack1864() (uintptr, uintptr) { var buf [1864]byte; use(buf[:]); return Stackguard() } +func stack1868() (uintptr, uintptr) { var buf [1868]byte; use(buf[:]); return Stackguard() } +func stack1872() (uintptr, uintptr) { var buf [1872]byte; use(buf[:]); return Stackguard() } +func stack1876() (uintptr, uintptr) { var buf [1876]byte; use(buf[:]); return Stackguard() } +func stack1880() (uintptr, uintptr) { var buf [1880]byte; use(buf[:]); return Stackguard() } +func stack1884() (uintptr, uintptr) { var buf [1884]byte; use(buf[:]); return Stackguard() } +func stack1888() (uintptr, uintptr) { var buf [1888]byte; use(buf[:]); return Stackguard() } +func stack1892() (uintptr, uintptr) { var buf [1892]byte; use(buf[:]); return Stackguard() } +func stack1896() (uintptr, uintptr) { var buf [1896]byte; use(buf[:]); return Stackguard() } +func stack1900() (uintptr, uintptr) { var buf [1900]byte; use(buf[:]); return Stackguard() } +func stack1904() (uintptr, uintptr) { var buf [1904]byte; use(buf[:]); return Stackguard() } +func stack1908() (uintptr, uintptr) { var buf [1908]byte; use(buf[:]); return Stackguard() } +func stack1912() (uintptr, uintptr) { var buf [1912]byte; use(buf[:]); return Stackguard() } +func stack1916() (uintptr, uintptr) { var buf [1916]byte; use(buf[:]); return Stackguard() } +func stack1920() (uintptr, uintptr) { var buf [1920]byte; use(buf[:]); return Stackguard() } +func stack1924() (uintptr, uintptr) { var buf [1924]byte; use(buf[:]); return Stackguard() } +func stack1928() (uintptr, uintptr) { var buf [1928]byte; use(buf[:]); return Stackguard() } +func stack1932() (uintptr, uintptr) { var buf [1932]byte; use(buf[:]); return Stackguard() } +func stack1936() (uintptr, uintptr) { var buf [1936]byte; use(buf[:]); return Stackguard() } +func stack1940() (uintptr, uintptr) { var buf [1940]byte; use(buf[:]); return Stackguard() } +func stack1944() (uintptr, uintptr) { var buf [1944]byte; use(buf[:]); return Stackguard() } +func stack1948() (uintptr, uintptr) { var buf [1948]byte; use(buf[:]); return Stackguard() } +func stack1952() (uintptr, uintptr) { var buf [1952]byte; use(buf[:]); return Stackguard() } +func stack1956() (uintptr, uintptr) { var buf [1956]byte; use(buf[:]); return Stackguard() } +func stack1960() (uintptr, uintptr) { var buf [1960]byte; use(buf[:]); return Stackguard() } +func stack1964() (uintptr, uintptr) { var buf [1964]byte; use(buf[:]); return Stackguard() } +func stack1968() (uintptr, uintptr) { var buf [1968]byte; use(buf[:]); return Stackguard() } +func stack1972() (uintptr, uintptr) { var buf [1972]byte; use(buf[:]); return Stackguard() } +func stack1976() (uintptr, uintptr) { var buf [1976]byte; use(buf[:]); return Stackguard() } +func stack1980() (uintptr, uintptr) { var buf [1980]byte; use(buf[:]); return Stackguard() } +func stack1984() (uintptr, uintptr) { var buf [1984]byte; use(buf[:]); return Stackguard() } +func stack1988() (uintptr, uintptr) { var buf [1988]byte; use(buf[:]); return Stackguard() } +func stack1992() (uintptr, uintptr) { var buf [1992]byte; use(buf[:]); return Stackguard() } +func stack1996() (uintptr, uintptr) { var buf [1996]byte; use(buf[:]); return Stackguard() } +func stack2000() (uintptr, uintptr) { var buf [2000]byte; use(buf[:]); return Stackguard() } +func stack2004() (uintptr, uintptr) { var buf [2004]byte; use(buf[:]); return Stackguard() } +func stack2008() (uintptr, uintptr) { var buf [2008]byte; use(buf[:]); return Stackguard() } +func stack2012() (uintptr, uintptr) { var buf [2012]byte; use(buf[:]); return Stackguard() } +func stack2016() (uintptr, uintptr) { var buf [2016]byte; use(buf[:]); return Stackguard() } +func stack2020() (uintptr, uintptr) { var buf [2020]byte; use(buf[:]); return Stackguard() } +func stack2024() (uintptr, uintptr) { var buf [2024]byte; use(buf[:]); return Stackguard() } +func stack2028() (uintptr, uintptr) { var buf [2028]byte; use(buf[:]); return Stackguard() } +func stack2032() (uintptr, uintptr) { var buf [2032]byte; use(buf[:]); return Stackguard() } +func stack2036() (uintptr, uintptr) { var buf [2036]byte; use(buf[:]); return Stackguard() } +func stack2040() (uintptr, uintptr) { var buf [2040]byte; use(buf[:]); return Stackguard() } +func stack2044() (uintptr, uintptr) { var buf [2044]byte; use(buf[:]); return Stackguard() } +func stack2048() (uintptr, uintptr) { var buf [2048]byte; use(buf[:]); return Stackguard() } +func stack2052() (uintptr, uintptr) { var buf [2052]byte; use(buf[:]); return Stackguard() } +func stack2056() (uintptr, uintptr) { var buf [2056]byte; use(buf[:]); return Stackguard() } +func stack2060() (uintptr, uintptr) { var buf [2060]byte; use(buf[:]); return Stackguard() } +func stack2064() (uintptr, uintptr) { var buf [2064]byte; use(buf[:]); return Stackguard() } +func stack2068() (uintptr, uintptr) { var buf [2068]byte; use(buf[:]); return Stackguard() } +func stack2072() (uintptr, uintptr) { var buf [2072]byte; use(buf[:]); return Stackguard() } +func stack2076() (uintptr, uintptr) { var buf [2076]byte; use(buf[:]); return Stackguard() } +func stack2080() (uintptr, uintptr) { var buf [2080]byte; use(buf[:]); return Stackguard() } +func stack2084() (uintptr, uintptr) { var buf [2084]byte; use(buf[:]); return Stackguard() } +func stack2088() (uintptr, uintptr) { var buf [2088]byte; use(buf[:]); return Stackguard() } +func stack2092() (uintptr, uintptr) { var buf [2092]byte; use(buf[:]); return Stackguard() } +func stack2096() (uintptr, uintptr) { var buf [2096]byte; use(buf[:]); return Stackguard() } +func stack2100() (uintptr, uintptr) { var buf [2100]byte; use(buf[:]); return Stackguard() } +func stack2104() (uintptr, uintptr) { var buf [2104]byte; use(buf[:]); return Stackguard() } +func stack2108() (uintptr, uintptr) { var buf [2108]byte; use(buf[:]); return Stackguard() } +func stack2112() (uintptr, uintptr) { var buf [2112]byte; use(buf[:]); return Stackguard() } +func stack2116() (uintptr, uintptr) { var buf [2116]byte; use(buf[:]); return Stackguard() } +func stack2120() (uintptr, uintptr) { var buf [2120]byte; use(buf[:]); return Stackguard() } +func stack2124() (uintptr, uintptr) { var buf [2124]byte; use(buf[:]); return Stackguard() } +func stack2128() (uintptr, uintptr) { var buf [2128]byte; use(buf[:]); return Stackguard() } +func stack2132() (uintptr, uintptr) { var buf [2132]byte; use(buf[:]); return Stackguard() } +func stack2136() (uintptr, uintptr) { var buf [2136]byte; use(buf[:]); return Stackguard() } +func stack2140() (uintptr, uintptr) { var buf [2140]byte; use(buf[:]); return Stackguard() } +func stack2144() (uintptr, uintptr) { var buf [2144]byte; use(buf[:]); return Stackguard() } +func stack2148() (uintptr, uintptr) { var buf [2148]byte; use(buf[:]); return Stackguard() } +func stack2152() (uintptr, uintptr) { var buf [2152]byte; use(buf[:]); return Stackguard() } +func stack2156() (uintptr, uintptr) { var buf [2156]byte; use(buf[:]); return Stackguard() } +func stack2160() (uintptr, uintptr) { var buf [2160]byte; use(buf[:]); return Stackguard() } +func stack2164() (uintptr, uintptr) { var buf [2164]byte; use(buf[:]); return Stackguard() } +func stack2168() (uintptr, uintptr) { var buf [2168]byte; use(buf[:]); return Stackguard() } +func stack2172() (uintptr, uintptr) { var buf [2172]byte; use(buf[:]); return Stackguard() } +func stack2176() (uintptr, uintptr) { var buf [2176]byte; use(buf[:]); return Stackguard() } +func stack2180() (uintptr, uintptr) { var buf [2180]byte; use(buf[:]); return Stackguard() } +func stack2184() (uintptr, uintptr) { var buf [2184]byte; use(buf[:]); return Stackguard() } +func stack2188() (uintptr, uintptr) { var buf [2188]byte; use(buf[:]); return Stackguard() } +func stack2192() (uintptr, uintptr) { var buf [2192]byte; use(buf[:]); return Stackguard() } +func stack2196() (uintptr, uintptr) { var buf [2196]byte; use(buf[:]); return Stackguard() } +func stack2200() (uintptr, uintptr) { var buf [2200]byte; use(buf[:]); return Stackguard() } +func stack2204() (uintptr, uintptr) { var buf [2204]byte; use(buf[:]); return Stackguard() } +func stack2208() (uintptr, uintptr) { var buf [2208]byte; use(buf[:]); return Stackguard() } +func stack2212() (uintptr, uintptr) { var buf [2212]byte; use(buf[:]); return Stackguard() } +func stack2216() (uintptr, uintptr) { var buf [2216]byte; use(buf[:]); return Stackguard() } +func stack2220() (uintptr, uintptr) { var buf [2220]byte; use(buf[:]); return Stackguard() } +func stack2224() (uintptr, uintptr) { var buf [2224]byte; use(buf[:]); return Stackguard() } +func stack2228() (uintptr, uintptr) { var buf [2228]byte; use(buf[:]); return Stackguard() } +func stack2232() (uintptr, uintptr) { var buf [2232]byte; use(buf[:]); return Stackguard() } +func stack2236() (uintptr, uintptr) { var buf [2236]byte; use(buf[:]); return Stackguard() } +func stack2240() (uintptr, uintptr) { var buf [2240]byte; use(buf[:]); return Stackguard() } +func stack2244() (uintptr, uintptr) { var buf [2244]byte; use(buf[:]); return Stackguard() } +func stack2248() (uintptr, uintptr) { var buf [2248]byte; use(buf[:]); return Stackguard() } +func stack2252() (uintptr, uintptr) { var buf [2252]byte; use(buf[:]); return Stackguard() } +func stack2256() (uintptr, uintptr) { var buf [2256]byte; use(buf[:]); return Stackguard() } +func stack2260() (uintptr, uintptr) { var buf [2260]byte; use(buf[:]); return Stackguard() } +func stack2264() (uintptr, uintptr) { var buf [2264]byte; use(buf[:]); return Stackguard() } +func stack2268() (uintptr, uintptr) { var buf [2268]byte; use(buf[:]); return Stackguard() } +func stack2272() (uintptr, uintptr) { var buf [2272]byte; use(buf[:]); return Stackguard() } +func stack2276() (uintptr, uintptr) { var buf [2276]byte; use(buf[:]); return Stackguard() } +func stack2280() (uintptr, uintptr) { var buf [2280]byte; use(buf[:]); return Stackguard() } +func stack2284() (uintptr, uintptr) { var buf [2284]byte; use(buf[:]); return Stackguard() } +func stack2288() (uintptr, uintptr) { var buf [2288]byte; use(buf[:]); return Stackguard() } +func stack2292() (uintptr, uintptr) { var buf [2292]byte; use(buf[:]); return Stackguard() } +func stack2296() (uintptr, uintptr) { var buf [2296]byte; use(buf[:]); return Stackguard() } +func stack2300() (uintptr, uintptr) { var buf [2300]byte; use(buf[:]); return Stackguard() } +func stack2304() (uintptr, uintptr) { var buf [2304]byte; use(buf[:]); return Stackguard() } +func stack2308() (uintptr, uintptr) { var buf [2308]byte; use(buf[:]); return Stackguard() } +func stack2312() (uintptr, uintptr) { var buf [2312]byte; use(buf[:]); return Stackguard() } +func stack2316() (uintptr, uintptr) { var buf [2316]byte; use(buf[:]); return Stackguard() } +func stack2320() (uintptr, uintptr) { var buf [2320]byte; use(buf[:]); return Stackguard() } +func stack2324() (uintptr, uintptr) { var buf [2324]byte; use(buf[:]); return Stackguard() } +func stack2328() (uintptr, uintptr) { var buf [2328]byte; use(buf[:]); return Stackguard() } +func stack2332() (uintptr, uintptr) { var buf [2332]byte; use(buf[:]); return Stackguard() } +func stack2336() (uintptr, uintptr) { var buf [2336]byte; use(buf[:]); return Stackguard() } +func stack2340() (uintptr, uintptr) { var buf [2340]byte; use(buf[:]); return Stackguard() } +func stack2344() (uintptr, uintptr) { var buf [2344]byte; use(buf[:]); return Stackguard() } +func stack2348() (uintptr, uintptr) { var buf [2348]byte; use(buf[:]); return Stackguard() } +func stack2352() (uintptr, uintptr) { var buf [2352]byte; use(buf[:]); return Stackguard() } +func stack2356() (uintptr, uintptr) { var buf [2356]byte; use(buf[:]); return Stackguard() } +func stack2360() (uintptr, uintptr) { var buf [2360]byte; use(buf[:]); return Stackguard() } +func stack2364() (uintptr, uintptr) { var buf [2364]byte; use(buf[:]); return Stackguard() } +func stack2368() (uintptr, uintptr) { var buf [2368]byte; use(buf[:]); return Stackguard() } +func stack2372() (uintptr, uintptr) { var buf [2372]byte; use(buf[:]); return Stackguard() } +func stack2376() (uintptr, uintptr) { var buf [2376]byte; use(buf[:]); return Stackguard() } +func stack2380() (uintptr, uintptr) { var buf [2380]byte; use(buf[:]); return Stackguard() } +func stack2384() (uintptr, uintptr) { var buf [2384]byte; use(buf[:]); return Stackguard() } +func stack2388() (uintptr, uintptr) { var buf [2388]byte; use(buf[:]); return Stackguard() } +func stack2392() (uintptr, uintptr) { var buf [2392]byte; use(buf[:]); return Stackguard() } +func stack2396() (uintptr, uintptr) { var buf [2396]byte; use(buf[:]); return Stackguard() } +func stack2400() (uintptr, uintptr) { var buf [2400]byte; use(buf[:]); return Stackguard() } +func stack2404() (uintptr, uintptr) { var buf [2404]byte; use(buf[:]); return Stackguard() } +func stack2408() (uintptr, uintptr) { var buf [2408]byte; use(buf[:]); return Stackguard() } +func stack2412() (uintptr, uintptr) { var buf [2412]byte; use(buf[:]); return Stackguard() } +func stack2416() (uintptr, uintptr) { var buf [2416]byte; use(buf[:]); return Stackguard() } +func stack2420() (uintptr, uintptr) { var buf [2420]byte; use(buf[:]); return Stackguard() } +func stack2424() (uintptr, uintptr) { var buf [2424]byte; use(buf[:]); return Stackguard() } +func stack2428() (uintptr, uintptr) { var buf [2428]byte; use(buf[:]); return Stackguard() } +func stack2432() (uintptr, uintptr) { var buf [2432]byte; use(buf[:]); return Stackguard() } +func stack2436() (uintptr, uintptr) { var buf [2436]byte; use(buf[:]); return Stackguard() } +func stack2440() (uintptr, uintptr) { var buf [2440]byte; use(buf[:]); return Stackguard() } +func stack2444() (uintptr, uintptr) { var buf [2444]byte; use(buf[:]); return Stackguard() } +func stack2448() (uintptr, uintptr) { var buf [2448]byte; use(buf[:]); return Stackguard() } +func stack2452() (uintptr, uintptr) { var buf [2452]byte; use(buf[:]); return Stackguard() } +func stack2456() (uintptr, uintptr) { var buf [2456]byte; use(buf[:]); return Stackguard() } +func stack2460() (uintptr, uintptr) { var buf [2460]byte; use(buf[:]); return Stackguard() } +func stack2464() (uintptr, uintptr) { var buf [2464]byte; use(buf[:]); return Stackguard() } +func stack2468() (uintptr, uintptr) { var buf [2468]byte; use(buf[:]); return Stackguard() } +func stack2472() (uintptr, uintptr) { var buf [2472]byte; use(buf[:]); return Stackguard() } +func stack2476() (uintptr, uintptr) { var buf [2476]byte; use(buf[:]); return Stackguard() } +func stack2480() (uintptr, uintptr) { var buf [2480]byte; use(buf[:]); return Stackguard() } +func stack2484() (uintptr, uintptr) { var buf [2484]byte; use(buf[:]); return Stackguard() } +func stack2488() (uintptr, uintptr) { var buf [2488]byte; use(buf[:]); return Stackguard() } +func stack2492() (uintptr, uintptr) { var buf [2492]byte; use(buf[:]); return Stackguard() } +func stack2496() (uintptr, uintptr) { var buf [2496]byte; use(buf[:]); return Stackguard() } +func stack2500() (uintptr, uintptr) { var buf [2500]byte; use(buf[:]); return Stackguard() } +func stack2504() (uintptr, uintptr) { var buf [2504]byte; use(buf[:]); return Stackguard() } +func stack2508() (uintptr, uintptr) { var buf [2508]byte; use(buf[:]); return Stackguard() } +func stack2512() (uintptr, uintptr) { var buf [2512]byte; use(buf[:]); return Stackguard() } +func stack2516() (uintptr, uintptr) { var buf [2516]byte; use(buf[:]); return Stackguard() } +func stack2520() (uintptr, uintptr) { var buf [2520]byte; use(buf[:]); return Stackguard() } +func stack2524() (uintptr, uintptr) { var buf [2524]byte; use(buf[:]); return Stackguard() } +func stack2528() (uintptr, uintptr) { var buf [2528]byte; use(buf[:]); return Stackguard() } +func stack2532() (uintptr, uintptr) { var buf [2532]byte; use(buf[:]); return Stackguard() } +func stack2536() (uintptr, uintptr) { var buf [2536]byte; use(buf[:]); return Stackguard() } +func stack2540() (uintptr, uintptr) { var buf [2540]byte; use(buf[:]); return Stackguard() } +func stack2544() (uintptr, uintptr) { var buf [2544]byte; use(buf[:]); return Stackguard() } +func stack2548() (uintptr, uintptr) { var buf [2548]byte; use(buf[:]); return Stackguard() } +func stack2552() (uintptr, uintptr) { var buf [2552]byte; use(buf[:]); return Stackguard() } +func stack2556() (uintptr, uintptr) { var buf [2556]byte; use(buf[:]); return Stackguard() } +func stack2560() (uintptr, uintptr) { var buf [2560]byte; use(buf[:]); return Stackguard() } +func stack2564() (uintptr, uintptr) { var buf [2564]byte; use(buf[:]); return Stackguard() } +func stack2568() (uintptr, uintptr) { var buf [2568]byte; use(buf[:]); return Stackguard() } +func stack2572() (uintptr, uintptr) { var buf [2572]byte; use(buf[:]); return Stackguard() } +func stack2576() (uintptr, uintptr) { var buf [2576]byte; use(buf[:]); return Stackguard() } +func stack2580() (uintptr, uintptr) { var buf [2580]byte; use(buf[:]); return Stackguard() } +func stack2584() (uintptr, uintptr) { var buf [2584]byte; use(buf[:]); return Stackguard() } +func stack2588() (uintptr, uintptr) { var buf [2588]byte; use(buf[:]); return Stackguard() } +func stack2592() (uintptr, uintptr) { var buf [2592]byte; use(buf[:]); return Stackguard() } +func stack2596() (uintptr, uintptr) { var buf [2596]byte; use(buf[:]); return Stackguard() } +func stack2600() (uintptr, uintptr) { var buf [2600]byte; use(buf[:]); return Stackguard() } +func stack2604() (uintptr, uintptr) { var buf [2604]byte; use(buf[:]); return Stackguard() } +func stack2608() (uintptr, uintptr) { var buf [2608]byte; use(buf[:]); return Stackguard() } +func stack2612() (uintptr, uintptr) { var buf [2612]byte; use(buf[:]); return Stackguard() } +func stack2616() (uintptr, uintptr) { var buf [2616]byte; use(buf[:]); return Stackguard() } +func stack2620() (uintptr, uintptr) { var buf [2620]byte; use(buf[:]); return Stackguard() } +func stack2624() (uintptr, uintptr) { var buf [2624]byte; use(buf[:]); return Stackguard() } +func stack2628() (uintptr, uintptr) { var buf [2628]byte; use(buf[:]); return Stackguard() } +func stack2632() (uintptr, uintptr) { var buf [2632]byte; use(buf[:]); return Stackguard() } +func stack2636() (uintptr, uintptr) { var buf [2636]byte; use(buf[:]); return Stackguard() } +func stack2640() (uintptr, uintptr) { var buf [2640]byte; use(buf[:]); return Stackguard() } +func stack2644() (uintptr, uintptr) { var buf [2644]byte; use(buf[:]); return Stackguard() } +func stack2648() (uintptr, uintptr) { var buf [2648]byte; use(buf[:]); return Stackguard() } +func stack2652() (uintptr, uintptr) { var buf [2652]byte; use(buf[:]); return Stackguard() } +func stack2656() (uintptr, uintptr) { var buf [2656]byte; use(buf[:]); return Stackguard() } +func stack2660() (uintptr, uintptr) { var buf [2660]byte; use(buf[:]); return Stackguard() } +func stack2664() (uintptr, uintptr) { var buf [2664]byte; use(buf[:]); return Stackguard() } +func stack2668() (uintptr, uintptr) { var buf [2668]byte; use(buf[:]); return Stackguard() } +func stack2672() (uintptr, uintptr) { var buf [2672]byte; use(buf[:]); return Stackguard() } +func stack2676() (uintptr, uintptr) { var buf [2676]byte; use(buf[:]); return Stackguard() } +func stack2680() (uintptr, uintptr) { var buf [2680]byte; use(buf[:]); return Stackguard() } +func stack2684() (uintptr, uintptr) { var buf [2684]byte; use(buf[:]); return Stackguard() } +func stack2688() (uintptr, uintptr) { var buf [2688]byte; use(buf[:]); return Stackguard() } +func stack2692() (uintptr, uintptr) { var buf [2692]byte; use(buf[:]); return Stackguard() } +func stack2696() (uintptr, uintptr) { var buf [2696]byte; use(buf[:]); return Stackguard() } +func stack2700() (uintptr, uintptr) { var buf [2700]byte; use(buf[:]); return Stackguard() } +func stack2704() (uintptr, uintptr) { var buf [2704]byte; use(buf[:]); return Stackguard() } +func stack2708() (uintptr, uintptr) { var buf [2708]byte; use(buf[:]); return Stackguard() } +func stack2712() (uintptr, uintptr) { var buf [2712]byte; use(buf[:]); return Stackguard() } +func stack2716() (uintptr, uintptr) { var buf [2716]byte; use(buf[:]); return Stackguard() } +func stack2720() (uintptr, uintptr) { var buf [2720]byte; use(buf[:]); return Stackguard() } +func stack2724() (uintptr, uintptr) { var buf [2724]byte; use(buf[:]); return Stackguard() } +func stack2728() (uintptr, uintptr) { var buf [2728]byte; use(buf[:]); return Stackguard() } +func stack2732() (uintptr, uintptr) { var buf [2732]byte; use(buf[:]); return Stackguard() } +func stack2736() (uintptr, uintptr) { var buf [2736]byte; use(buf[:]); return Stackguard() } +func stack2740() (uintptr, uintptr) { var buf [2740]byte; use(buf[:]); return Stackguard() } +func stack2744() (uintptr, uintptr) { var buf [2744]byte; use(buf[:]); return Stackguard() } +func stack2748() (uintptr, uintptr) { var buf [2748]byte; use(buf[:]); return Stackguard() } +func stack2752() (uintptr, uintptr) { var buf [2752]byte; use(buf[:]); return Stackguard() } +func stack2756() (uintptr, uintptr) { var buf [2756]byte; use(buf[:]); return Stackguard() } +func stack2760() (uintptr, uintptr) { var buf [2760]byte; use(buf[:]); return Stackguard() } +func stack2764() (uintptr, uintptr) { var buf [2764]byte; use(buf[:]); return Stackguard() } +func stack2768() (uintptr, uintptr) { var buf [2768]byte; use(buf[:]); return Stackguard() } +func stack2772() (uintptr, uintptr) { var buf [2772]byte; use(buf[:]); return Stackguard() } +func stack2776() (uintptr, uintptr) { var buf [2776]byte; use(buf[:]); return Stackguard() } +func stack2780() (uintptr, uintptr) { var buf [2780]byte; use(buf[:]); return Stackguard() } +func stack2784() (uintptr, uintptr) { var buf [2784]byte; use(buf[:]); return Stackguard() } +func stack2788() (uintptr, uintptr) { var buf [2788]byte; use(buf[:]); return Stackguard() } +func stack2792() (uintptr, uintptr) { var buf [2792]byte; use(buf[:]); return Stackguard() } +func stack2796() (uintptr, uintptr) { var buf [2796]byte; use(buf[:]); return Stackguard() } +func stack2800() (uintptr, uintptr) { var buf [2800]byte; use(buf[:]); return Stackguard() } +func stack2804() (uintptr, uintptr) { var buf [2804]byte; use(buf[:]); return Stackguard() } +func stack2808() (uintptr, uintptr) { var buf [2808]byte; use(buf[:]); return Stackguard() } +func stack2812() (uintptr, uintptr) { var buf [2812]byte; use(buf[:]); return Stackguard() } +func stack2816() (uintptr, uintptr) { var buf [2816]byte; use(buf[:]); return Stackguard() } +func stack2820() (uintptr, uintptr) { var buf [2820]byte; use(buf[:]); return Stackguard() } +func stack2824() (uintptr, uintptr) { var buf [2824]byte; use(buf[:]); return Stackguard() } +func stack2828() (uintptr, uintptr) { var buf [2828]byte; use(buf[:]); return Stackguard() } +func stack2832() (uintptr, uintptr) { var buf [2832]byte; use(buf[:]); return Stackguard() } +func stack2836() (uintptr, uintptr) { var buf [2836]byte; use(buf[:]); return Stackguard() } +func stack2840() (uintptr, uintptr) { var buf [2840]byte; use(buf[:]); return Stackguard() } +func stack2844() (uintptr, uintptr) { var buf [2844]byte; use(buf[:]); return Stackguard() } +func stack2848() (uintptr, uintptr) { var buf [2848]byte; use(buf[:]); return Stackguard() } +func stack2852() (uintptr, uintptr) { var buf [2852]byte; use(buf[:]); return Stackguard() } +func stack2856() (uintptr, uintptr) { var buf [2856]byte; use(buf[:]); return Stackguard() } +func stack2860() (uintptr, uintptr) { var buf [2860]byte; use(buf[:]); return Stackguard() } +func stack2864() (uintptr, uintptr) { var buf [2864]byte; use(buf[:]); return Stackguard() } +func stack2868() (uintptr, uintptr) { var buf [2868]byte; use(buf[:]); return Stackguard() } +func stack2872() (uintptr, uintptr) { var buf [2872]byte; use(buf[:]); return Stackguard() } +func stack2876() (uintptr, uintptr) { var buf [2876]byte; use(buf[:]); return Stackguard() } +func stack2880() (uintptr, uintptr) { var buf [2880]byte; use(buf[:]); return Stackguard() } +func stack2884() (uintptr, uintptr) { var buf [2884]byte; use(buf[:]); return Stackguard() } +func stack2888() (uintptr, uintptr) { var buf [2888]byte; use(buf[:]); return Stackguard() } +func stack2892() (uintptr, uintptr) { var buf [2892]byte; use(buf[:]); return Stackguard() } +func stack2896() (uintptr, uintptr) { var buf [2896]byte; use(buf[:]); return Stackguard() } +func stack2900() (uintptr, uintptr) { var buf [2900]byte; use(buf[:]); return Stackguard() } +func stack2904() (uintptr, uintptr) { var buf [2904]byte; use(buf[:]); return Stackguard() } +func stack2908() (uintptr, uintptr) { var buf [2908]byte; use(buf[:]); return Stackguard() } +func stack2912() (uintptr, uintptr) { var buf [2912]byte; use(buf[:]); return Stackguard() } +func stack2916() (uintptr, uintptr) { var buf [2916]byte; use(buf[:]); return Stackguard() } +func stack2920() (uintptr, uintptr) { var buf [2920]byte; use(buf[:]); return Stackguard() } +func stack2924() (uintptr, uintptr) { var buf [2924]byte; use(buf[:]); return Stackguard() } +func stack2928() (uintptr, uintptr) { var buf [2928]byte; use(buf[:]); return Stackguard() } +func stack2932() (uintptr, uintptr) { var buf [2932]byte; use(buf[:]); return Stackguard() } +func stack2936() (uintptr, uintptr) { var buf [2936]byte; use(buf[:]); return Stackguard() } +func stack2940() (uintptr, uintptr) { var buf [2940]byte; use(buf[:]); return Stackguard() } +func stack2944() (uintptr, uintptr) { var buf [2944]byte; use(buf[:]); return Stackguard() } +func stack2948() (uintptr, uintptr) { var buf [2948]byte; use(buf[:]); return Stackguard() } +func stack2952() (uintptr, uintptr) { var buf [2952]byte; use(buf[:]); return Stackguard() } +func stack2956() (uintptr, uintptr) { var buf [2956]byte; use(buf[:]); return Stackguard() } +func stack2960() (uintptr, uintptr) { var buf [2960]byte; use(buf[:]); return Stackguard() } +func stack2964() (uintptr, uintptr) { var buf [2964]byte; use(buf[:]); return Stackguard() } +func stack2968() (uintptr, uintptr) { var buf [2968]byte; use(buf[:]); return Stackguard() } +func stack2972() (uintptr, uintptr) { var buf [2972]byte; use(buf[:]); return Stackguard() } +func stack2976() (uintptr, uintptr) { var buf [2976]byte; use(buf[:]); return Stackguard() } +func stack2980() (uintptr, uintptr) { var buf [2980]byte; use(buf[:]); return Stackguard() } +func stack2984() (uintptr, uintptr) { var buf [2984]byte; use(buf[:]); return Stackguard() } +func stack2988() (uintptr, uintptr) { var buf [2988]byte; use(buf[:]); return Stackguard() } +func stack2992() (uintptr, uintptr) { var buf [2992]byte; use(buf[:]); return Stackguard() } +func stack2996() (uintptr, uintptr) { var buf [2996]byte; use(buf[:]); return Stackguard() } +func stack3000() (uintptr, uintptr) { var buf [3000]byte; use(buf[:]); return Stackguard() } +func stack3004() (uintptr, uintptr) { var buf [3004]byte; use(buf[:]); return Stackguard() } +func stack3008() (uintptr, uintptr) { var buf [3008]byte; use(buf[:]); return Stackguard() } +func stack3012() (uintptr, uintptr) { var buf [3012]byte; use(buf[:]); return Stackguard() } +func stack3016() (uintptr, uintptr) { var buf [3016]byte; use(buf[:]); return Stackguard() } +func stack3020() (uintptr, uintptr) { var buf [3020]byte; use(buf[:]); return Stackguard() } +func stack3024() (uintptr, uintptr) { var buf [3024]byte; use(buf[:]); return Stackguard() } +func stack3028() (uintptr, uintptr) { var buf [3028]byte; use(buf[:]); return Stackguard() } +func stack3032() (uintptr, uintptr) { var buf [3032]byte; use(buf[:]); return Stackguard() } +func stack3036() (uintptr, uintptr) { var buf [3036]byte; use(buf[:]); return Stackguard() } +func stack3040() (uintptr, uintptr) { var buf [3040]byte; use(buf[:]); return Stackguard() } +func stack3044() (uintptr, uintptr) { var buf [3044]byte; use(buf[:]); return Stackguard() } +func stack3048() (uintptr, uintptr) { var buf [3048]byte; use(buf[:]); return Stackguard() } +func stack3052() (uintptr, uintptr) { var buf [3052]byte; use(buf[:]); return Stackguard() } +func stack3056() (uintptr, uintptr) { var buf [3056]byte; use(buf[:]); return Stackguard() } +func stack3060() (uintptr, uintptr) { var buf [3060]byte; use(buf[:]); return Stackguard() } +func stack3064() (uintptr, uintptr) { var buf [3064]byte; use(buf[:]); return Stackguard() } +func stack3068() (uintptr, uintptr) { var buf [3068]byte; use(buf[:]); return Stackguard() } +func stack3072() (uintptr, uintptr) { var buf [3072]byte; use(buf[:]); return Stackguard() } +func stack3076() (uintptr, uintptr) { var buf [3076]byte; use(buf[:]); return Stackguard() } +func stack3080() (uintptr, uintptr) { var buf [3080]byte; use(buf[:]); return Stackguard() } +func stack3084() (uintptr, uintptr) { var buf [3084]byte; use(buf[:]); return Stackguard() } +func stack3088() (uintptr, uintptr) { var buf [3088]byte; use(buf[:]); return Stackguard() } +func stack3092() (uintptr, uintptr) { var buf [3092]byte; use(buf[:]); return Stackguard() } +func stack3096() (uintptr, uintptr) { var buf [3096]byte; use(buf[:]); return Stackguard() } +func stack3100() (uintptr, uintptr) { var buf [3100]byte; use(buf[:]); return Stackguard() } +func stack3104() (uintptr, uintptr) { var buf [3104]byte; use(buf[:]); return Stackguard() } +func stack3108() (uintptr, uintptr) { var buf [3108]byte; use(buf[:]); return Stackguard() } +func stack3112() (uintptr, uintptr) { var buf [3112]byte; use(buf[:]); return Stackguard() } +func stack3116() (uintptr, uintptr) { var buf [3116]byte; use(buf[:]); return Stackguard() } +func stack3120() (uintptr, uintptr) { var buf [3120]byte; use(buf[:]); return Stackguard() } +func stack3124() (uintptr, uintptr) { var buf [3124]byte; use(buf[:]); return Stackguard() } +func stack3128() (uintptr, uintptr) { var buf [3128]byte; use(buf[:]); return Stackguard() } +func stack3132() (uintptr, uintptr) { var buf [3132]byte; use(buf[:]); return Stackguard() } +func stack3136() (uintptr, uintptr) { var buf [3136]byte; use(buf[:]); return Stackguard() } +func stack3140() (uintptr, uintptr) { var buf [3140]byte; use(buf[:]); return Stackguard() } +func stack3144() (uintptr, uintptr) { var buf [3144]byte; use(buf[:]); return Stackguard() } +func stack3148() (uintptr, uintptr) { var buf [3148]byte; use(buf[:]); return Stackguard() } +func stack3152() (uintptr, uintptr) { var buf [3152]byte; use(buf[:]); return Stackguard() } +func stack3156() (uintptr, uintptr) { var buf [3156]byte; use(buf[:]); return Stackguard() } +func stack3160() (uintptr, uintptr) { var buf [3160]byte; use(buf[:]); return Stackguard() } +func stack3164() (uintptr, uintptr) { var buf [3164]byte; use(buf[:]); return Stackguard() } +func stack3168() (uintptr, uintptr) { var buf [3168]byte; use(buf[:]); return Stackguard() } +func stack3172() (uintptr, uintptr) { var buf [3172]byte; use(buf[:]); return Stackguard() } +func stack3176() (uintptr, uintptr) { var buf [3176]byte; use(buf[:]); return Stackguard() } +func stack3180() (uintptr, uintptr) { var buf [3180]byte; use(buf[:]); return Stackguard() } +func stack3184() (uintptr, uintptr) { var buf [3184]byte; use(buf[:]); return Stackguard() } +func stack3188() (uintptr, uintptr) { var buf [3188]byte; use(buf[:]); return Stackguard() } +func stack3192() (uintptr, uintptr) { var buf [3192]byte; use(buf[:]); return Stackguard() } +func stack3196() (uintptr, uintptr) { var buf [3196]byte; use(buf[:]); return Stackguard() } +func stack3200() (uintptr, uintptr) { var buf [3200]byte; use(buf[:]); return Stackguard() } +func stack3204() (uintptr, uintptr) { var buf [3204]byte; use(buf[:]); return Stackguard() } +func stack3208() (uintptr, uintptr) { var buf [3208]byte; use(buf[:]); return Stackguard() } +func stack3212() (uintptr, uintptr) { var buf [3212]byte; use(buf[:]); return Stackguard() } +func stack3216() (uintptr, uintptr) { var buf [3216]byte; use(buf[:]); return Stackguard() } +func stack3220() (uintptr, uintptr) { var buf [3220]byte; use(buf[:]); return Stackguard() } +func stack3224() (uintptr, uintptr) { var buf [3224]byte; use(buf[:]); return Stackguard() } +func stack3228() (uintptr, uintptr) { var buf [3228]byte; use(buf[:]); return Stackguard() } +func stack3232() (uintptr, uintptr) { var buf [3232]byte; use(buf[:]); return Stackguard() } +func stack3236() (uintptr, uintptr) { var buf [3236]byte; use(buf[:]); return Stackguard() } +func stack3240() (uintptr, uintptr) { var buf [3240]byte; use(buf[:]); return Stackguard() } +func stack3244() (uintptr, uintptr) { var buf [3244]byte; use(buf[:]); return Stackguard() } +func stack3248() (uintptr, uintptr) { var buf [3248]byte; use(buf[:]); return Stackguard() } +func stack3252() (uintptr, uintptr) { var buf [3252]byte; use(buf[:]); return Stackguard() } +func stack3256() (uintptr, uintptr) { var buf [3256]byte; use(buf[:]); return Stackguard() } +func stack3260() (uintptr, uintptr) { var buf [3260]byte; use(buf[:]); return Stackguard() } +func stack3264() (uintptr, uintptr) { var buf [3264]byte; use(buf[:]); return Stackguard() } +func stack3268() (uintptr, uintptr) { var buf [3268]byte; use(buf[:]); return Stackguard() } +func stack3272() (uintptr, uintptr) { var buf [3272]byte; use(buf[:]); return Stackguard() } +func stack3276() (uintptr, uintptr) { var buf [3276]byte; use(buf[:]); return Stackguard() } +func stack3280() (uintptr, uintptr) { var buf [3280]byte; use(buf[:]); return Stackguard() } +func stack3284() (uintptr, uintptr) { var buf [3284]byte; use(buf[:]); return Stackguard() } +func stack3288() (uintptr, uintptr) { var buf [3288]byte; use(buf[:]); return Stackguard() } +func stack3292() (uintptr, uintptr) { var buf [3292]byte; use(buf[:]); return Stackguard() } +func stack3296() (uintptr, uintptr) { var buf [3296]byte; use(buf[:]); return Stackguard() } +func stack3300() (uintptr, uintptr) { var buf [3300]byte; use(buf[:]); return Stackguard() } +func stack3304() (uintptr, uintptr) { var buf [3304]byte; use(buf[:]); return Stackguard() } +func stack3308() (uintptr, uintptr) { var buf [3308]byte; use(buf[:]); return Stackguard() } +func stack3312() (uintptr, uintptr) { var buf [3312]byte; use(buf[:]); return Stackguard() } +func stack3316() (uintptr, uintptr) { var buf [3316]byte; use(buf[:]); return Stackguard() } +func stack3320() (uintptr, uintptr) { var buf [3320]byte; use(buf[:]); return Stackguard() } +func stack3324() (uintptr, uintptr) { var buf [3324]byte; use(buf[:]); return Stackguard() } +func stack3328() (uintptr, uintptr) { var buf [3328]byte; use(buf[:]); return Stackguard() } +func stack3332() (uintptr, uintptr) { var buf [3332]byte; use(buf[:]); return Stackguard() } +func stack3336() (uintptr, uintptr) { var buf [3336]byte; use(buf[:]); return Stackguard() } +func stack3340() (uintptr, uintptr) { var buf [3340]byte; use(buf[:]); return Stackguard() } +func stack3344() (uintptr, uintptr) { var buf [3344]byte; use(buf[:]); return Stackguard() } +func stack3348() (uintptr, uintptr) { var buf [3348]byte; use(buf[:]); return Stackguard() } +func stack3352() (uintptr, uintptr) { var buf [3352]byte; use(buf[:]); return Stackguard() } +func stack3356() (uintptr, uintptr) { var buf [3356]byte; use(buf[:]); return Stackguard() } +func stack3360() (uintptr, uintptr) { var buf [3360]byte; use(buf[:]); return Stackguard() } +func stack3364() (uintptr, uintptr) { var buf [3364]byte; use(buf[:]); return Stackguard() } +func stack3368() (uintptr, uintptr) { var buf [3368]byte; use(buf[:]); return Stackguard() } +func stack3372() (uintptr, uintptr) { var buf [3372]byte; use(buf[:]); return Stackguard() } +func stack3376() (uintptr, uintptr) { var buf [3376]byte; use(buf[:]); return Stackguard() } +func stack3380() (uintptr, uintptr) { var buf [3380]byte; use(buf[:]); return Stackguard() } +func stack3384() (uintptr, uintptr) { var buf [3384]byte; use(buf[:]); return Stackguard() } +func stack3388() (uintptr, uintptr) { var buf [3388]byte; use(buf[:]); return Stackguard() } +func stack3392() (uintptr, uintptr) { var buf [3392]byte; use(buf[:]); return Stackguard() } +func stack3396() (uintptr, uintptr) { var buf [3396]byte; use(buf[:]); return Stackguard() } +func stack3400() (uintptr, uintptr) { var buf [3400]byte; use(buf[:]); return Stackguard() } +func stack3404() (uintptr, uintptr) { var buf [3404]byte; use(buf[:]); return Stackguard() } +func stack3408() (uintptr, uintptr) { var buf [3408]byte; use(buf[:]); return Stackguard() } +func stack3412() (uintptr, uintptr) { var buf [3412]byte; use(buf[:]); return Stackguard() } +func stack3416() (uintptr, uintptr) { var buf [3416]byte; use(buf[:]); return Stackguard() } +func stack3420() (uintptr, uintptr) { var buf [3420]byte; use(buf[:]); return Stackguard() } +func stack3424() (uintptr, uintptr) { var buf [3424]byte; use(buf[:]); return Stackguard() } +func stack3428() (uintptr, uintptr) { var buf [3428]byte; use(buf[:]); return Stackguard() } +func stack3432() (uintptr, uintptr) { var buf [3432]byte; use(buf[:]); return Stackguard() } +func stack3436() (uintptr, uintptr) { var buf [3436]byte; use(buf[:]); return Stackguard() } +func stack3440() (uintptr, uintptr) { var buf [3440]byte; use(buf[:]); return Stackguard() } +func stack3444() (uintptr, uintptr) { var buf [3444]byte; use(buf[:]); return Stackguard() } +func stack3448() (uintptr, uintptr) { var buf [3448]byte; use(buf[:]); return Stackguard() } +func stack3452() (uintptr, uintptr) { var buf [3452]byte; use(buf[:]); return Stackguard() } +func stack3456() (uintptr, uintptr) { var buf [3456]byte; use(buf[:]); return Stackguard() } +func stack3460() (uintptr, uintptr) { var buf [3460]byte; use(buf[:]); return Stackguard() } +func stack3464() (uintptr, uintptr) { var buf [3464]byte; use(buf[:]); return Stackguard() } +func stack3468() (uintptr, uintptr) { var buf [3468]byte; use(buf[:]); return Stackguard() } +func stack3472() (uintptr, uintptr) { var buf [3472]byte; use(buf[:]); return Stackguard() } +func stack3476() (uintptr, uintptr) { var buf [3476]byte; use(buf[:]); return Stackguard() } +func stack3480() (uintptr, uintptr) { var buf [3480]byte; use(buf[:]); return Stackguard() } +func stack3484() (uintptr, uintptr) { var buf [3484]byte; use(buf[:]); return Stackguard() } +func stack3488() (uintptr, uintptr) { var buf [3488]byte; use(buf[:]); return Stackguard() } +func stack3492() (uintptr, uintptr) { var buf [3492]byte; use(buf[:]); return Stackguard() } +func stack3496() (uintptr, uintptr) { var buf [3496]byte; use(buf[:]); return Stackguard() } +func stack3500() (uintptr, uintptr) { var buf [3500]byte; use(buf[:]); return Stackguard() } +func stack3504() (uintptr, uintptr) { var buf [3504]byte; use(buf[:]); return Stackguard() } +func stack3508() (uintptr, uintptr) { var buf [3508]byte; use(buf[:]); return Stackguard() } +func stack3512() (uintptr, uintptr) { var buf [3512]byte; use(buf[:]); return Stackguard() } +func stack3516() (uintptr, uintptr) { var buf [3516]byte; use(buf[:]); return Stackguard() } +func stack3520() (uintptr, uintptr) { var buf [3520]byte; use(buf[:]); return Stackguard() } +func stack3524() (uintptr, uintptr) { var buf [3524]byte; use(buf[:]); return Stackguard() } +func stack3528() (uintptr, uintptr) { var buf [3528]byte; use(buf[:]); return Stackguard() } +func stack3532() (uintptr, uintptr) { var buf [3532]byte; use(buf[:]); return Stackguard() } +func stack3536() (uintptr, uintptr) { var buf [3536]byte; use(buf[:]); return Stackguard() } +func stack3540() (uintptr, uintptr) { var buf [3540]byte; use(buf[:]); return Stackguard() } +func stack3544() (uintptr, uintptr) { var buf [3544]byte; use(buf[:]); return Stackguard() } +func stack3548() (uintptr, uintptr) { var buf [3548]byte; use(buf[:]); return Stackguard() } +func stack3552() (uintptr, uintptr) { var buf [3552]byte; use(buf[:]); return Stackguard() } +func stack3556() (uintptr, uintptr) { var buf [3556]byte; use(buf[:]); return Stackguard() } +func stack3560() (uintptr, uintptr) { var buf [3560]byte; use(buf[:]); return Stackguard() } +func stack3564() (uintptr, uintptr) { var buf [3564]byte; use(buf[:]); return Stackguard() } +func stack3568() (uintptr, uintptr) { var buf [3568]byte; use(buf[:]); return Stackguard() } +func stack3572() (uintptr, uintptr) { var buf [3572]byte; use(buf[:]); return Stackguard() } +func stack3576() (uintptr, uintptr) { var buf [3576]byte; use(buf[:]); return Stackguard() } +func stack3580() (uintptr, uintptr) { var buf [3580]byte; use(buf[:]); return Stackguard() } +func stack3584() (uintptr, uintptr) { var buf [3584]byte; use(buf[:]); return Stackguard() } +func stack3588() (uintptr, uintptr) { var buf [3588]byte; use(buf[:]); return Stackguard() } +func stack3592() (uintptr, uintptr) { var buf [3592]byte; use(buf[:]); return Stackguard() } +func stack3596() (uintptr, uintptr) { var buf [3596]byte; use(buf[:]); return Stackguard() } +func stack3600() (uintptr, uintptr) { var buf [3600]byte; use(buf[:]); return Stackguard() } +func stack3604() (uintptr, uintptr) { var buf [3604]byte; use(buf[:]); return Stackguard() } +func stack3608() (uintptr, uintptr) { var buf [3608]byte; use(buf[:]); return Stackguard() } +func stack3612() (uintptr, uintptr) { var buf [3612]byte; use(buf[:]); return Stackguard() } +func stack3616() (uintptr, uintptr) { var buf [3616]byte; use(buf[:]); return Stackguard() } +func stack3620() (uintptr, uintptr) { var buf [3620]byte; use(buf[:]); return Stackguard() } +func stack3624() (uintptr, uintptr) { var buf [3624]byte; use(buf[:]); return Stackguard() } +func stack3628() (uintptr, uintptr) { var buf [3628]byte; use(buf[:]); return Stackguard() } +func stack3632() (uintptr, uintptr) { var buf [3632]byte; use(buf[:]); return Stackguard() } +func stack3636() (uintptr, uintptr) { var buf [3636]byte; use(buf[:]); return Stackguard() } +func stack3640() (uintptr, uintptr) { var buf [3640]byte; use(buf[:]); return Stackguard() } +func stack3644() (uintptr, uintptr) { var buf [3644]byte; use(buf[:]); return Stackguard() } +func stack3648() (uintptr, uintptr) { var buf [3648]byte; use(buf[:]); return Stackguard() } +func stack3652() (uintptr, uintptr) { var buf [3652]byte; use(buf[:]); return Stackguard() } +func stack3656() (uintptr, uintptr) { var buf [3656]byte; use(buf[:]); return Stackguard() } +func stack3660() (uintptr, uintptr) { var buf [3660]byte; use(buf[:]); return Stackguard() } +func stack3664() (uintptr, uintptr) { var buf [3664]byte; use(buf[:]); return Stackguard() } +func stack3668() (uintptr, uintptr) { var buf [3668]byte; use(buf[:]); return Stackguard() } +func stack3672() (uintptr, uintptr) { var buf [3672]byte; use(buf[:]); return Stackguard() } +func stack3676() (uintptr, uintptr) { var buf [3676]byte; use(buf[:]); return Stackguard() } +func stack3680() (uintptr, uintptr) { var buf [3680]byte; use(buf[:]); return Stackguard() } +func stack3684() (uintptr, uintptr) { var buf [3684]byte; use(buf[:]); return Stackguard() } +func stack3688() (uintptr, uintptr) { var buf [3688]byte; use(buf[:]); return Stackguard() } +func stack3692() (uintptr, uintptr) { var buf [3692]byte; use(buf[:]); return Stackguard() } +func stack3696() (uintptr, uintptr) { var buf [3696]byte; use(buf[:]); return Stackguard() } +func stack3700() (uintptr, uintptr) { var buf [3700]byte; use(buf[:]); return Stackguard() } +func stack3704() (uintptr, uintptr) { var buf [3704]byte; use(buf[:]); return Stackguard() } +func stack3708() (uintptr, uintptr) { var buf [3708]byte; use(buf[:]); return Stackguard() } +func stack3712() (uintptr, uintptr) { var buf [3712]byte; use(buf[:]); return Stackguard() } +func stack3716() (uintptr, uintptr) { var buf [3716]byte; use(buf[:]); return Stackguard() } +func stack3720() (uintptr, uintptr) { var buf [3720]byte; use(buf[:]); return Stackguard() } +func stack3724() (uintptr, uintptr) { var buf [3724]byte; use(buf[:]); return Stackguard() } +func stack3728() (uintptr, uintptr) { var buf [3728]byte; use(buf[:]); return Stackguard() } +func stack3732() (uintptr, uintptr) { var buf [3732]byte; use(buf[:]); return Stackguard() } +func stack3736() (uintptr, uintptr) { var buf [3736]byte; use(buf[:]); return Stackguard() } +func stack3740() (uintptr, uintptr) { var buf [3740]byte; use(buf[:]); return Stackguard() } +func stack3744() (uintptr, uintptr) { var buf [3744]byte; use(buf[:]); return Stackguard() } +func stack3748() (uintptr, uintptr) { var buf [3748]byte; use(buf[:]); return Stackguard() } +func stack3752() (uintptr, uintptr) { var buf [3752]byte; use(buf[:]); return Stackguard() } +func stack3756() (uintptr, uintptr) { var buf [3756]byte; use(buf[:]); return Stackguard() } +func stack3760() (uintptr, uintptr) { var buf [3760]byte; use(buf[:]); return Stackguard() } +func stack3764() (uintptr, uintptr) { var buf [3764]byte; use(buf[:]); return Stackguard() } +func stack3768() (uintptr, uintptr) { var buf [3768]byte; use(buf[:]); return Stackguard() } +func stack3772() (uintptr, uintptr) { var buf [3772]byte; use(buf[:]); return Stackguard() } +func stack3776() (uintptr, uintptr) { var buf [3776]byte; use(buf[:]); return Stackguard() } +func stack3780() (uintptr, uintptr) { var buf [3780]byte; use(buf[:]); return Stackguard() } +func stack3784() (uintptr, uintptr) { var buf [3784]byte; use(buf[:]); return Stackguard() } +func stack3788() (uintptr, uintptr) { var buf [3788]byte; use(buf[:]); return Stackguard() } +func stack3792() (uintptr, uintptr) { var buf [3792]byte; use(buf[:]); return Stackguard() } +func stack3796() (uintptr, uintptr) { var buf [3796]byte; use(buf[:]); return Stackguard() } +func stack3800() (uintptr, uintptr) { var buf [3800]byte; use(buf[:]); return Stackguard() } +func stack3804() (uintptr, uintptr) { var buf [3804]byte; use(buf[:]); return Stackguard() } +func stack3808() (uintptr, uintptr) { var buf [3808]byte; use(buf[:]); return Stackguard() } +func stack3812() (uintptr, uintptr) { var buf [3812]byte; use(buf[:]); return Stackguard() } +func stack3816() (uintptr, uintptr) { var buf [3816]byte; use(buf[:]); return Stackguard() } +func stack3820() (uintptr, uintptr) { var buf [3820]byte; use(buf[:]); return Stackguard() } +func stack3824() (uintptr, uintptr) { var buf [3824]byte; use(buf[:]); return Stackguard() } +func stack3828() (uintptr, uintptr) { var buf [3828]byte; use(buf[:]); return Stackguard() } +func stack3832() (uintptr, uintptr) { var buf [3832]byte; use(buf[:]); return Stackguard() } +func stack3836() (uintptr, uintptr) { var buf [3836]byte; use(buf[:]); return Stackguard() } +func stack3840() (uintptr, uintptr) { var buf [3840]byte; use(buf[:]); return Stackguard() } +func stack3844() (uintptr, uintptr) { var buf [3844]byte; use(buf[:]); return Stackguard() } +func stack3848() (uintptr, uintptr) { var buf [3848]byte; use(buf[:]); return Stackguard() } +func stack3852() (uintptr, uintptr) { var buf [3852]byte; use(buf[:]); return Stackguard() } +func stack3856() (uintptr, uintptr) { var buf [3856]byte; use(buf[:]); return Stackguard() } +func stack3860() (uintptr, uintptr) { var buf [3860]byte; use(buf[:]); return Stackguard() } +func stack3864() (uintptr, uintptr) { var buf [3864]byte; use(buf[:]); return Stackguard() } +func stack3868() (uintptr, uintptr) { var buf [3868]byte; use(buf[:]); return Stackguard() } +func stack3872() (uintptr, uintptr) { var buf [3872]byte; use(buf[:]); return Stackguard() } +func stack3876() (uintptr, uintptr) { var buf [3876]byte; use(buf[:]); return Stackguard() } +func stack3880() (uintptr, uintptr) { var buf [3880]byte; use(buf[:]); return Stackguard() } +func stack3884() (uintptr, uintptr) { var buf [3884]byte; use(buf[:]); return Stackguard() } +func stack3888() (uintptr, uintptr) { var buf [3888]byte; use(buf[:]); return Stackguard() } +func stack3892() (uintptr, uintptr) { var buf [3892]byte; use(buf[:]); return Stackguard() } +func stack3896() (uintptr, uintptr) { var buf [3896]byte; use(buf[:]); return Stackguard() } +func stack3900() (uintptr, uintptr) { var buf [3900]byte; use(buf[:]); return Stackguard() } +func stack3904() (uintptr, uintptr) { var buf [3904]byte; use(buf[:]); return Stackguard() } +func stack3908() (uintptr, uintptr) { var buf [3908]byte; use(buf[:]); return Stackguard() } +func stack3912() (uintptr, uintptr) { var buf [3912]byte; use(buf[:]); return Stackguard() } +func stack3916() (uintptr, uintptr) { var buf [3916]byte; use(buf[:]); return Stackguard() } +func stack3920() (uintptr, uintptr) { var buf [3920]byte; use(buf[:]); return Stackguard() } +func stack3924() (uintptr, uintptr) { var buf [3924]byte; use(buf[:]); return Stackguard() } +func stack3928() (uintptr, uintptr) { var buf [3928]byte; use(buf[:]); return Stackguard() } +func stack3932() (uintptr, uintptr) { var buf [3932]byte; use(buf[:]); return Stackguard() } +func stack3936() (uintptr, uintptr) { var buf [3936]byte; use(buf[:]); return Stackguard() } +func stack3940() (uintptr, uintptr) { var buf [3940]byte; use(buf[:]); return Stackguard() } +func stack3944() (uintptr, uintptr) { var buf [3944]byte; use(buf[:]); return Stackguard() } +func stack3948() (uintptr, uintptr) { var buf [3948]byte; use(buf[:]); return Stackguard() } +func stack3952() (uintptr, uintptr) { var buf [3952]byte; use(buf[:]); return Stackguard() } +func stack3956() (uintptr, uintptr) { var buf [3956]byte; use(buf[:]); return Stackguard() } +func stack3960() (uintptr, uintptr) { var buf [3960]byte; use(buf[:]); return Stackguard() } +func stack3964() (uintptr, uintptr) { var buf [3964]byte; use(buf[:]); return Stackguard() } +func stack3968() (uintptr, uintptr) { var buf [3968]byte; use(buf[:]); return Stackguard() } +func stack3972() (uintptr, uintptr) { var buf [3972]byte; use(buf[:]); return Stackguard() } +func stack3976() (uintptr, uintptr) { var buf [3976]byte; use(buf[:]); return Stackguard() } +func stack3980() (uintptr, uintptr) { var buf [3980]byte; use(buf[:]); return Stackguard() } +func stack3984() (uintptr, uintptr) { var buf [3984]byte; use(buf[:]); return Stackguard() } +func stack3988() (uintptr, uintptr) { var buf [3988]byte; use(buf[:]); return Stackguard() } +func stack3992() (uintptr, uintptr) { var buf [3992]byte; use(buf[:]); return Stackguard() } +func stack3996() (uintptr, uintptr) { var buf [3996]byte; use(buf[:]); return Stackguard() } +func stack4000() (uintptr, uintptr) { var buf [4000]byte; use(buf[:]); return Stackguard() } +func stack4004() (uintptr, uintptr) { var buf [4004]byte; use(buf[:]); return Stackguard() } +func stack4008() (uintptr, uintptr) { var buf [4008]byte; use(buf[:]); return Stackguard() } +func stack4012() (uintptr, uintptr) { var buf [4012]byte; use(buf[:]); return Stackguard() } +func stack4016() (uintptr, uintptr) { var buf [4016]byte; use(buf[:]); return Stackguard() } +func stack4020() (uintptr, uintptr) { var buf [4020]byte; use(buf[:]); return Stackguard() } +func stack4024() (uintptr, uintptr) { var buf [4024]byte; use(buf[:]); return Stackguard() } +func stack4028() (uintptr, uintptr) { var buf [4028]byte; use(buf[:]); return Stackguard() } +func stack4032() (uintptr, uintptr) { var buf [4032]byte; use(buf[:]); return Stackguard() } +func stack4036() (uintptr, uintptr) { var buf [4036]byte; use(buf[:]); return Stackguard() } +func stack4040() (uintptr, uintptr) { var buf [4040]byte; use(buf[:]); return Stackguard() } +func stack4044() (uintptr, uintptr) { var buf [4044]byte; use(buf[:]); return Stackguard() } +func stack4048() (uintptr, uintptr) { var buf [4048]byte; use(buf[:]); return Stackguard() } +func stack4052() (uintptr, uintptr) { var buf [4052]byte; use(buf[:]); return Stackguard() } +func stack4056() (uintptr, uintptr) { var buf [4056]byte; use(buf[:]); return Stackguard() } +func stack4060() (uintptr, uintptr) { var buf [4060]byte; use(buf[:]); return Stackguard() } +func stack4064() (uintptr, uintptr) { var buf [4064]byte; use(buf[:]); return Stackguard() } +func stack4068() (uintptr, uintptr) { var buf [4068]byte; use(buf[:]); return Stackguard() } +func stack4072() (uintptr, uintptr) { var buf [4072]byte; use(buf[:]); return Stackguard() } +func stack4076() (uintptr, uintptr) { var buf [4076]byte; use(buf[:]); return Stackguard() } +func stack4080() (uintptr, uintptr) { var buf [4080]byte; use(buf[:]); return Stackguard() } +func stack4084() (uintptr, uintptr) { var buf [4084]byte; use(buf[:]); return Stackguard() } +func stack4088() (uintptr, uintptr) { var buf [4088]byte; use(buf[:]); return Stackguard() } +func stack4092() (uintptr, uintptr) { var buf [4092]byte; use(buf[:]); return Stackguard() } +func stack4096() (uintptr, uintptr) { var buf [4096]byte; use(buf[:]); return Stackguard() } +func stack4100() (uintptr, uintptr) { var buf [4100]byte; use(buf[:]); return Stackguard() } +func stack4104() (uintptr, uintptr) { var buf [4104]byte; use(buf[:]); return Stackguard() } +func stack4108() (uintptr, uintptr) { var buf [4108]byte; use(buf[:]); return Stackguard() } +func stack4112() (uintptr, uintptr) { var buf [4112]byte; use(buf[:]); return Stackguard() } +func stack4116() (uintptr, uintptr) { var buf [4116]byte; use(buf[:]); return Stackguard() } +func stack4120() (uintptr, uintptr) { var buf [4120]byte; use(buf[:]); return Stackguard() } +func stack4124() (uintptr, uintptr) { var buf [4124]byte; use(buf[:]); return Stackguard() } +func stack4128() (uintptr, uintptr) { var buf [4128]byte; use(buf[:]); return Stackguard() } +func stack4132() (uintptr, uintptr) { var buf [4132]byte; use(buf[:]); return Stackguard() } +func stack4136() (uintptr, uintptr) { var buf [4136]byte; use(buf[:]); return Stackguard() } +func stack4140() (uintptr, uintptr) { var buf [4140]byte; use(buf[:]); return Stackguard() } +func stack4144() (uintptr, uintptr) { var buf [4144]byte; use(buf[:]); return Stackguard() } +func stack4148() (uintptr, uintptr) { var buf [4148]byte; use(buf[:]); return Stackguard() } +func stack4152() (uintptr, uintptr) { var buf [4152]byte; use(buf[:]); return Stackguard() } +func stack4156() (uintptr, uintptr) { var buf [4156]byte; use(buf[:]); return Stackguard() } +func stack4160() (uintptr, uintptr) { var buf [4160]byte; use(buf[:]); return Stackguard() } +func stack4164() (uintptr, uintptr) { var buf [4164]byte; use(buf[:]); return Stackguard() } +func stack4168() (uintptr, uintptr) { var buf [4168]byte; use(buf[:]); return Stackguard() } +func stack4172() (uintptr, uintptr) { var buf [4172]byte; use(buf[:]); return Stackguard() } +func stack4176() (uintptr, uintptr) { var buf [4176]byte; use(buf[:]); return Stackguard() } +func stack4180() (uintptr, uintptr) { var buf [4180]byte; use(buf[:]); return Stackguard() } +func stack4184() (uintptr, uintptr) { var buf [4184]byte; use(buf[:]); return Stackguard() } +func stack4188() (uintptr, uintptr) { var buf [4188]byte; use(buf[:]); return Stackguard() } +func stack4192() (uintptr, uintptr) { var buf [4192]byte; use(buf[:]); return Stackguard() } +func stack4196() (uintptr, uintptr) { var buf [4196]byte; use(buf[:]); return Stackguard() } +func stack4200() (uintptr, uintptr) { var buf [4200]byte; use(buf[:]); return Stackguard() } +func stack4204() (uintptr, uintptr) { var buf [4204]byte; use(buf[:]); return Stackguard() } +func stack4208() (uintptr, uintptr) { var buf [4208]byte; use(buf[:]); return Stackguard() } +func stack4212() (uintptr, uintptr) { var buf [4212]byte; use(buf[:]); return Stackguard() } +func stack4216() (uintptr, uintptr) { var buf [4216]byte; use(buf[:]); return Stackguard() } +func stack4220() (uintptr, uintptr) { var buf [4220]byte; use(buf[:]); return Stackguard() } +func stack4224() (uintptr, uintptr) { var buf [4224]byte; use(buf[:]); return Stackguard() } +func stack4228() (uintptr, uintptr) { var buf [4228]byte; use(buf[:]); return Stackguard() } +func stack4232() (uintptr, uintptr) { var buf [4232]byte; use(buf[:]); return Stackguard() } +func stack4236() (uintptr, uintptr) { var buf [4236]byte; use(buf[:]); return Stackguard() } +func stack4240() (uintptr, uintptr) { var buf [4240]byte; use(buf[:]); return Stackguard() } +func stack4244() (uintptr, uintptr) { var buf [4244]byte; use(buf[:]); return Stackguard() } +func stack4248() (uintptr, uintptr) { var buf [4248]byte; use(buf[:]); return Stackguard() } +func stack4252() (uintptr, uintptr) { var buf [4252]byte; use(buf[:]); return Stackguard() } +func stack4256() (uintptr, uintptr) { var buf [4256]byte; use(buf[:]); return Stackguard() } +func stack4260() (uintptr, uintptr) { var buf [4260]byte; use(buf[:]); return Stackguard() } +func stack4264() (uintptr, uintptr) { var buf [4264]byte; use(buf[:]); return Stackguard() } +func stack4268() (uintptr, uintptr) { var buf [4268]byte; use(buf[:]); return Stackguard() } +func stack4272() (uintptr, uintptr) { var buf [4272]byte; use(buf[:]); return Stackguard() } +func stack4276() (uintptr, uintptr) { var buf [4276]byte; use(buf[:]); return Stackguard() } +func stack4280() (uintptr, uintptr) { var buf [4280]byte; use(buf[:]); return Stackguard() } +func stack4284() (uintptr, uintptr) { var buf [4284]byte; use(buf[:]); return Stackguard() } +func stack4288() (uintptr, uintptr) { var buf [4288]byte; use(buf[:]); return Stackguard() } +func stack4292() (uintptr, uintptr) { var buf [4292]byte; use(buf[:]); return Stackguard() } +func stack4296() (uintptr, uintptr) { var buf [4296]byte; use(buf[:]); return Stackguard() } +func stack4300() (uintptr, uintptr) { var buf [4300]byte; use(buf[:]); return Stackguard() } +func stack4304() (uintptr, uintptr) { var buf [4304]byte; use(buf[:]); return Stackguard() } +func stack4308() (uintptr, uintptr) { var buf [4308]byte; use(buf[:]); return Stackguard() } +func stack4312() (uintptr, uintptr) { var buf [4312]byte; use(buf[:]); return Stackguard() } +func stack4316() (uintptr, uintptr) { var buf [4316]byte; use(buf[:]); return Stackguard() } +func stack4320() (uintptr, uintptr) { var buf [4320]byte; use(buf[:]); return Stackguard() } +func stack4324() (uintptr, uintptr) { var buf [4324]byte; use(buf[:]); return Stackguard() } +func stack4328() (uintptr, uintptr) { var buf [4328]byte; use(buf[:]); return Stackguard() } +func stack4332() (uintptr, uintptr) { var buf [4332]byte; use(buf[:]); return Stackguard() } +func stack4336() (uintptr, uintptr) { var buf [4336]byte; use(buf[:]); return Stackguard() } +func stack4340() (uintptr, uintptr) { var buf [4340]byte; use(buf[:]); return Stackguard() } +func stack4344() (uintptr, uintptr) { var buf [4344]byte; use(buf[:]); return Stackguard() } +func stack4348() (uintptr, uintptr) { var buf [4348]byte; use(buf[:]); return Stackguard() } +func stack4352() (uintptr, uintptr) { var buf [4352]byte; use(buf[:]); return Stackguard() } +func stack4356() (uintptr, uintptr) { var buf [4356]byte; use(buf[:]); return Stackguard() } +func stack4360() (uintptr, uintptr) { var buf [4360]byte; use(buf[:]); return Stackguard() } +func stack4364() (uintptr, uintptr) { var buf [4364]byte; use(buf[:]); return Stackguard() } +func stack4368() (uintptr, uintptr) { var buf [4368]byte; use(buf[:]); return Stackguard() } +func stack4372() (uintptr, uintptr) { var buf [4372]byte; use(buf[:]); return Stackguard() } +func stack4376() (uintptr, uintptr) { var buf [4376]byte; use(buf[:]); return Stackguard() } +func stack4380() (uintptr, uintptr) { var buf [4380]byte; use(buf[:]); return Stackguard() } +func stack4384() (uintptr, uintptr) { var buf [4384]byte; use(buf[:]); return Stackguard() } +func stack4388() (uintptr, uintptr) { var buf [4388]byte; use(buf[:]); return Stackguard() } +func stack4392() (uintptr, uintptr) { var buf [4392]byte; use(buf[:]); return Stackguard() } +func stack4396() (uintptr, uintptr) { var buf [4396]byte; use(buf[:]); return Stackguard() } +func stack4400() (uintptr, uintptr) { var buf [4400]byte; use(buf[:]); return Stackguard() } +func stack4404() (uintptr, uintptr) { var buf [4404]byte; use(buf[:]); return Stackguard() } +func stack4408() (uintptr, uintptr) { var buf [4408]byte; use(buf[:]); return Stackguard() } +func stack4412() (uintptr, uintptr) { var buf [4412]byte; use(buf[:]); return Stackguard() } +func stack4416() (uintptr, uintptr) { var buf [4416]byte; use(buf[:]); return Stackguard() } +func stack4420() (uintptr, uintptr) { var buf [4420]byte; use(buf[:]); return Stackguard() } +func stack4424() (uintptr, uintptr) { var buf [4424]byte; use(buf[:]); return Stackguard() } +func stack4428() (uintptr, uintptr) { var buf [4428]byte; use(buf[:]); return Stackguard() } +func stack4432() (uintptr, uintptr) { var buf [4432]byte; use(buf[:]); return Stackguard() } +func stack4436() (uintptr, uintptr) { var buf [4436]byte; use(buf[:]); return Stackguard() } +func stack4440() (uintptr, uintptr) { var buf [4440]byte; use(buf[:]); return Stackguard() } +func stack4444() (uintptr, uintptr) { var buf [4444]byte; use(buf[:]); return Stackguard() } +func stack4448() (uintptr, uintptr) { var buf [4448]byte; use(buf[:]); return Stackguard() } +func stack4452() (uintptr, uintptr) { var buf [4452]byte; use(buf[:]); return Stackguard() } +func stack4456() (uintptr, uintptr) { var buf [4456]byte; use(buf[:]); return Stackguard() } +func stack4460() (uintptr, uintptr) { var buf [4460]byte; use(buf[:]); return Stackguard() } +func stack4464() (uintptr, uintptr) { var buf [4464]byte; use(buf[:]); return Stackguard() } +func stack4468() (uintptr, uintptr) { var buf [4468]byte; use(buf[:]); return Stackguard() } +func stack4472() (uintptr, uintptr) { var buf [4472]byte; use(buf[:]); return Stackguard() } +func stack4476() (uintptr, uintptr) { var buf [4476]byte; use(buf[:]); return Stackguard() } +func stack4480() (uintptr, uintptr) { var buf [4480]byte; use(buf[:]); return Stackguard() } +func stack4484() (uintptr, uintptr) { var buf [4484]byte; use(buf[:]); return Stackguard() } +func stack4488() (uintptr, uintptr) { var buf [4488]byte; use(buf[:]); return Stackguard() } +func stack4492() (uintptr, uintptr) { var buf [4492]byte; use(buf[:]); return Stackguard() } +func stack4496() (uintptr, uintptr) { var buf [4496]byte; use(buf[:]); return Stackguard() } +func stack4500() (uintptr, uintptr) { var buf [4500]byte; use(buf[:]); return Stackguard() } +func stack4504() (uintptr, uintptr) { var buf [4504]byte; use(buf[:]); return Stackguard() } +func stack4508() (uintptr, uintptr) { var buf [4508]byte; use(buf[:]); return Stackguard() } +func stack4512() (uintptr, uintptr) { var buf [4512]byte; use(buf[:]); return Stackguard() } +func stack4516() (uintptr, uintptr) { var buf [4516]byte; use(buf[:]); return Stackguard() } +func stack4520() (uintptr, uintptr) { var buf [4520]byte; use(buf[:]); return Stackguard() } +func stack4524() (uintptr, uintptr) { var buf [4524]byte; use(buf[:]); return Stackguard() } +func stack4528() (uintptr, uintptr) { var buf [4528]byte; use(buf[:]); return Stackguard() } +func stack4532() (uintptr, uintptr) { var buf [4532]byte; use(buf[:]); return Stackguard() } +func stack4536() (uintptr, uintptr) { var buf [4536]byte; use(buf[:]); return Stackguard() } +func stack4540() (uintptr, uintptr) { var buf [4540]byte; use(buf[:]); return Stackguard() } +func stack4544() (uintptr, uintptr) { var buf [4544]byte; use(buf[:]); return Stackguard() } +func stack4548() (uintptr, uintptr) { var buf [4548]byte; use(buf[:]); return Stackguard() } +func stack4552() (uintptr, uintptr) { var buf [4552]byte; use(buf[:]); return Stackguard() } +func stack4556() (uintptr, uintptr) { var buf [4556]byte; use(buf[:]); return Stackguard() } +func stack4560() (uintptr, uintptr) { var buf [4560]byte; use(buf[:]); return Stackguard() } +func stack4564() (uintptr, uintptr) { var buf [4564]byte; use(buf[:]); return Stackguard() } +func stack4568() (uintptr, uintptr) { var buf [4568]byte; use(buf[:]); return Stackguard() } +func stack4572() (uintptr, uintptr) { var buf [4572]byte; use(buf[:]); return Stackguard() } +func stack4576() (uintptr, uintptr) { var buf [4576]byte; use(buf[:]); return Stackguard() } +func stack4580() (uintptr, uintptr) { var buf [4580]byte; use(buf[:]); return Stackguard() } +func stack4584() (uintptr, uintptr) { var buf [4584]byte; use(buf[:]); return Stackguard() } +func stack4588() (uintptr, uintptr) { var buf [4588]byte; use(buf[:]); return Stackguard() } +func stack4592() (uintptr, uintptr) { var buf [4592]byte; use(buf[:]); return Stackguard() } +func stack4596() (uintptr, uintptr) { var buf [4596]byte; use(buf[:]); return Stackguard() } +func stack4600() (uintptr, uintptr) { var buf [4600]byte; use(buf[:]); return Stackguard() } +func stack4604() (uintptr, uintptr) { var buf [4604]byte; use(buf[:]); return Stackguard() } +func stack4608() (uintptr, uintptr) { var buf [4608]byte; use(buf[:]); return Stackguard() } +func stack4612() (uintptr, uintptr) { var buf [4612]byte; use(buf[:]); return Stackguard() } +func stack4616() (uintptr, uintptr) { var buf [4616]byte; use(buf[:]); return Stackguard() } +func stack4620() (uintptr, uintptr) { var buf [4620]byte; use(buf[:]); return Stackguard() } +func stack4624() (uintptr, uintptr) { var buf [4624]byte; use(buf[:]); return Stackguard() } +func stack4628() (uintptr, uintptr) { var buf [4628]byte; use(buf[:]); return Stackguard() } +func stack4632() (uintptr, uintptr) { var buf [4632]byte; use(buf[:]); return Stackguard() } +func stack4636() (uintptr, uintptr) { var buf [4636]byte; use(buf[:]); return Stackguard() } +func stack4640() (uintptr, uintptr) { var buf [4640]byte; use(buf[:]); return Stackguard() } +func stack4644() (uintptr, uintptr) { var buf [4644]byte; use(buf[:]); return Stackguard() } +func stack4648() (uintptr, uintptr) { var buf [4648]byte; use(buf[:]); return Stackguard() } +func stack4652() (uintptr, uintptr) { var buf [4652]byte; use(buf[:]); return Stackguard() } +func stack4656() (uintptr, uintptr) { var buf [4656]byte; use(buf[:]); return Stackguard() } +func stack4660() (uintptr, uintptr) { var buf [4660]byte; use(buf[:]); return Stackguard() } +func stack4664() (uintptr, uintptr) { var buf [4664]byte; use(buf[:]); return Stackguard() } +func stack4668() (uintptr, uintptr) { var buf [4668]byte; use(buf[:]); return Stackguard() } +func stack4672() (uintptr, uintptr) { var buf [4672]byte; use(buf[:]); return Stackguard() } +func stack4676() (uintptr, uintptr) { var buf [4676]byte; use(buf[:]); return Stackguard() } +func stack4680() (uintptr, uintptr) { var buf [4680]byte; use(buf[:]); return Stackguard() } +func stack4684() (uintptr, uintptr) { var buf [4684]byte; use(buf[:]); return Stackguard() } +func stack4688() (uintptr, uintptr) { var buf [4688]byte; use(buf[:]); return Stackguard() } +func stack4692() (uintptr, uintptr) { var buf [4692]byte; use(buf[:]); return Stackguard() } +func stack4696() (uintptr, uintptr) { var buf [4696]byte; use(buf[:]); return Stackguard() } +func stack4700() (uintptr, uintptr) { var buf [4700]byte; use(buf[:]); return Stackguard() } +func stack4704() (uintptr, uintptr) { var buf [4704]byte; use(buf[:]); return Stackguard() } +func stack4708() (uintptr, uintptr) { var buf [4708]byte; use(buf[:]); return Stackguard() } +func stack4712() (uintptr, uintptr) { var buf [4712]byte; use(buf[:]); return Stackguard() } +func stack4716() (uintptr, uintptr) { var buf [4716]byte; use(buf[:]); return Stackguard() } +func stack4720() (uintptr, uintptr) { var buf [4720]byte; use(buf[:]); return Stackguard() } +func stack4724() (uintptr, uintptr) { var buf [4724]byte; use(buf[:]); return Stackguard() } +func stack4728() (uintptr, uintptr) { var buf [4728]byte; use(buf[:]); return Stackguard() } +func stack4732() (uintptr, uintptr) { var buf [4732]byte; use(buf[:]); return Stackguard() } +func stack4736() (uintptr, uintptr) { var buf [4736]byte; use(buf[:]); return Stackguard() } +func stack4740() (uintptr, uintptr) { var buf [4740]byte; use(buf[:]); return Stackguard() } +func stack4744() (uintptr, uintptr) { var buf [4744]byte; use(buf[:]); return Stackguard() } +func stack4748() (uintptr, uintptr) { var buf [4748]byte; use(buf[:]); return Stackguard() } +func stack4752() (uintptr, uintptr) { var buf [4752]byte; use(buf[:]); return Stackguard() } +func stack4756() (uintptr, uintptr) { var buf [4756]byte; use(buf[:]); return Stackguard() } +func stack4760() (uintptr, uintptr) { var buf [4760]byte; use(buf[:]); return Stackguard() } +func stack4764() (uintptr, uintptr) { var buf [4764]byte; use(buf[:]); return Stackguard() } +func stack4768() (uintptr, uintptr) { var buf [4768]byte; use(buf[:]); return Stackguard() } +func stack4772() (uintptr, uintptr) { var buf [4772]byte; use(buf[:]); return Stackguard() } +func stack4776() (uintptr, uintptr) { var buf [4776]byte; use(buf[:]); return Stackguard() } +func stack4780() (uintptr, uintptr) { var buf [4780]byte; use(buf[:]); return Stackguard() } +func stack4784() (uintptr, uintptr) { var buf [4784]byte; use(buf[:]); return Stackguard() } +func stack4788() (uintptr, uintptr) { var buf [4788]byte; use(buf[:]); return Stackguard() } +func stack4792() (uintptr, uintptr) { var buf [4792]byte; use(buf[:]); return Stackguard() } +func stack4796() (uintptr, uintptr) { var buf [4796]byte; use(buf[:]); return Stackguard() } +func stack4800() (uintptr, uintptr) { var buf [4800]byte; use(buf[:]); return Stackguard() } +func stack4804() (uintptr, uintptr) { var buf [4804]byte; use(buf[:]); return Stackguard() } +func stack4808() (uintptr, uintptr) { var buf [4808]byte; use(buf[:]); return Stackguard() } +func stack4812() (uintptr, uintptr) { var buf [4812]byte; use(buf[:]); return Stackguard() } +func stack4816() (uintptr, uintptr) { var buf [4816]byte; use(buf[:]); return Stackguard() } +func stack4820() (uintptr, uintptr) { var buf [4820]byte; use(buf[:]); return Stackguard() } +func stack4824() (uintptr, uintptr) { var buf [4824]byte; use(buf[:]); return Stackguard() } +func stack4828() (uintptr, uintptr) { var buf [4828]byte; use(buf[:]); return Stackguard() } +func stack4832() (uintptr, uintptr) { var buf [4832]byte; use(buf[:]); return Stackguard() } +func stack4836() (uintptr, uintptr) { var buf [4836]byte; use(buf[:]); return Stackguard() } +func stack4840() (uintptr, uintptr) { var buf [4840]byte; use(buf[:]); return Stackguard() } +func stack4844() (uintptr, uintptr) { var buf [4844]byte; use(buf[:]); return Stackguard() } +func stack4848() (uintptr, uintptr) { var buf [4848]byte; use(buf[:]); return Stackguard() } +func stack4852() (uintptr, uintptr) { var buf [4852]byte; use(buf[:]); return Stackguard() } +func stack4856() (uintptr, uintptr) { var buf [4856]byte; use(buf[:]); return Stackguard() } +func stack4860() (uintptr, uintptr) { var buf [4860]byte; use(buf[:]); return Stackguard() } +func stack4864() (uintptr, uintptr) { var buf [4864]byte; use(buf[:]); return Stackguard() } +func stack4868() (uintptr, uintptr) { var buf [4868]byte; use(buf[:]); return Stackguard() } +func stack4872() (uintptr, uintptr) { var buf [4872]byte; use(buf[:]); return Stackguard() } +func stack4876() (uintptr, uintptr) { var buf [4876]byte; use(buf[:]); return Stackguard() } +func stack4880() (uintptr, uintptr) { var buf [4880]byte; use(buf[:]); return Stackguard() } +func stack4884() (uintptr, uintptr) { var buf [4884]byte; use(buf[:]); return Stackguard() } +func stack4888() (uintptr, uintptr) { var buf [4888]byte; use(buf[:]); return Stackguard() } +func stack4892() (uintptr, uintptr) { var buf [4892]byte; use(buf[:]); return Stackguard() } +func stack4896() (uintptr, uintptr) { var buf [4896]byte; use(buf[:]); return Stackguard() } +func stack4900() (uintptr, uintptr) { var buf [4900]byte; use(buf[:]); return Stackguard() } +func stack4904() (uintptr, uintptr) { var buf [4904]byte; use(buf[:]); return Stackguard() } +func stack4908() (uintptr, uintptr) { var buf [4908]byte; use(buf[:]); return Stackguard() } +func stack4912() (uintptr, uintptr) { var buf [4912]byte; use(buf[:]); return Stackguard() } +func stack4916() (uintptr, uintptr) { var buf [4916]byte; use(buf[:]); return Stackguard() } +func stack4920() (uintptr, uintptr) { var buf [4920]byte; use(buf[:]); return Stackguard() } +func stack4924() (uintptr, uintptr) { var buf [4924]byte; use(buf[:]); return Stackguard() } +func stack4928() (uintptr, uintptr) { var buf [4928]byte; use(buf[:]); return Stackguard() } +func stack4932() (uintptr, uintptr) { var buf [4932]byte; use(buf[:]); return Stackguard() } +func stack4936() (uintptr, uintptr) { var buf [4936]byte; use(buf[:]); return Stackguard() } +func stack4940() (uintptr, uintptr) { var buf [4940]byte; use(buf[:]); return Stackguard() } +func stack4944() (uintptr, uintptr) { var buf [4944]byte; use(buf[:]); return Stackguard() } +func stack4948() (uintptr, uintptr) { var buf [4948]byte; use(buf[:]); return Stackguard() } +func stack4952() (uintptr, uintptr) { var buf [4952]byte; use(buf[:]); return Stackguard() } +func stack4956() (uintptr, uintptr) { var buf [4956]byte; use(buf[:]); return Stackguard() } +func stack4960() (uintptr, uintptr) { var buf [4960]byte; use(buf[:]); return Stackguard() } +func stack4964() (uintptr, uintptr) { var buf [4964]byte; use(buf[:]); return Stackguard() } +func stack4968() (uintptr, uintptr) { var buf [4968]byte; use(buf[:]); return Stackguard() } +func stack4972() (uintptr, uintptr) { var buf [4972]byte; use(buf[:]); return Stackguard() } +func stack4976() (uintptr, uintptr) { var buf [4976]byte; use(buf[:]); return Stackguard() } +func stack4980() (uintptr, uintptr) { var buf [4980]byte; use(buf[:]); return Stackguard() } +func stack4984() (uintptr, uintptr) { var buf [4984]byte; use(buf[:]); return Stackguard() } +func stack4988() (uintptr, uintptr) { var buf [4988]byte; use(buf[:]); return Stackguard() } +func stack4992() (uintptr, uintptr) { var buf [4992]byte; use(buf[:]); return Stackguard() } +func stack4996() (uintptr, uintptr) { var buf [4996]byte; use(buf[:]); return Stackguard() } +func stack5000() (uintptr, uintptr) { var buf [5000]byte; use(buf[:]); return Stackguard() } diff --git a/src/pkg/runtime/sys_darwin_386.s b/src/pkg/runtime/sys_darwin_386.s index c2dab8931..3cf3506ad 100644 --- a/src/pkg/runtime/sys_darwin_386.s +++ b/src/pkg/runtime/sys_darwin_386.s @@ -8,15 +8,11 @@ #include "zasm_GOOS_GOARCH.h" -TEXT runtime·notok(SB),7,$0 - MOVL $0xf1, 0xf1 - RET - // Exit the entire program (like C exit) TEXT runtime·exit(SB),7,$0 MOVL $1, AX INT $0x80 - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET // Exit this OS thread (like pthread_exit, which eventually @@ -25,7 +21,7 @@ TEXT runtime·exit1(SB),7,$0 MOVL $361, AX INT $0x80 JAE 2(PC) - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET TEXT runtime·write(SB),7,$0 @@ -52,14 +48,14 @@ TEXT runtime·madvise(SB),7,$0 MOVL $75, AX INT $0x80 JAE 2(PC) - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET TEXT runtime·munmap(SB),7,$0 MOVL $73, AX INT $0x80 JAE 2(PC) - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET TEXT runtime·setitimer(SB),7,$0 @@ -110,14 +106,14 @@ TEXT runtime·sigprocmask(SB),7,$0 MOVL $329, AX // pthread_sigmask (on OS X, sigprocmask==entire process) INT $0x80 JAE 2(PC) - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET TEXT runtime·sigaction(SB),7,$0 MOVL $46, AX INT $0x80 JAE 2(PC) - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET // Sigtramp's job is to call the actual signal handler. @@ -130,13 +126,18 @@ TEXT runtime·sigaction(SB),7,$0 // 20(FP) context TEXT runtime·sigtramp(SB),7,$40 get_tls(CX) + + // check that m exists + MOVL m(CX), BP + CMPL BP, $0 + JNE 2(PC) + CALL runtime·badsignal(SB) // save g MOVL g(CX), DI MOVL DI, 20(SP) // g = m->gsignal - MOVL m(CX), BP MOVL m_gsignal(BP), BP MOVL BP, g(CX) @@ -165,14 +166,14 @@ TEXT runtime·sigtramp(SB),7,$40 MOVL BX, 8(SP) MOVL $184, AX // sigreturn(ucontext, infostyle) INT $0x80 - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET TEXT runtime·sigaltstack(SB),7,$0 MOVL $53, AX INT $0x80 JAE 2(PC) - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET TEXT runtime·usleep(SB),7,$32 @@ -268,7 +269,7 @@ TEXT runtime·bsdthread_register(SB),7,$40 MOVL $0, 24(SP) // dispatchqueue_offset INT $0x80 JAE 2(PC) - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET // Invoke Mach system call. diff --git a/src/pkg/runtime/sys_darwin_amd64.s b/src/pkg/runtime/sys_darwin_amd64.s index 4b215d04d..90571baae 100644 --- a/src/pkg/runtime/sys_darwin_amd64.s +++ b/src/pkg/runtime/sys_darwin_amd64.s @@ -18,7 +18,7 @@ TEXT runtime·exit(SB),7,$0 MOVL 8(SP), DI // arg 1 exit status MOVL $(0x2000000+1), AX // syscall entry SYSCALL - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET // Exit this OS thread (like pthread_exit, which eventually @@ -27,7 +27,7 @@ TEXT runtime·exit1(SB),7,$0 MOVL 8(SP), DI // arg 1 exit status MOVL $(0x2000000+361), AX // syscall entry SYSCALL - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET TEXT runtime·write(SB),7,$0 @@ -62,7 +62,7 @@ TEXT runtime·madvise(SB), 7, $0 MOVL $(0x2000000+75), AX // syscall entry madvise SYSCALL JCC 2(PC) - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET // func now() (sec int64, nsec int32) @@ -99,7 +99,7 @@ TEXT runtime·sigprocmask(SB),7,$0 MOVL $(0x2000000+329), AX // pthread_sigmask (on OS X, sigprocmask==entire process) SYSCALL JCC 2(PC) - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET TEXT runtime·sigaction(SB),7,$0 @@ -111,18 +111,23 @@ TEXT runtime·sigaction(SB),7,$0 MOVL $(0x2000000+46), AX // syscall entry SYSCALL JCC 2(PC) - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET TEXT runtime·sigtramp(SB),7,$64 get_tls(BX) + // check that m exists + MOVQ m(BX), BP + CMPQ BP, $0 + JNE 2(PC) + CALL runtime·badsignal(SB) + // save g MOVQ g(BX), R10 MOVQ R10, 48(SP) // g = m->gsignal - MOVQ m(BX), BP MOVQ m_gsignal(BP), BP MOVQ BP, g(BX) @@ -164,12 +169,7 @@ TEXT runtime·munmap(SB),7,$0 MOVL $(0x2000000+73), AX // syscall entry SYSCALL JCC 2(PC) - CALL runtime·notok(SB) - RET - -TEXT runtime·notok(SB),7,$0 - MOVL $0xf1, BP - MOVQ BP, (BP) + MOVL $0xf1, 0xf1 // crash RET TEXT runtime·sigaltstack(SB),7,$0 @@ -178,7 +178,7 @@ TEXT runtime·sigaltstack(SB),7,$0 MOVQ $(0x2000000+53), AX SYSCALL JCC 2(PC) - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET TEXT runtime·usleep(SB),7,$16 @@ -266,7 +266,7 @@ TEXT runtime·bsdthread_register(SB),7,$0 MOVQ $(0x2000000+366), AX // bsdthread_register SYSCALL JCC 2(PC) - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET // Mach system calls use 0x1000000 instead of the BSD's 0x2000000. diff --git a/src/pkg/runtime/sys_freebsd_386.s b/src/pkg/runtime/sys_freebsd_386.s index aab444494..a72d8972b 100644 --- a/src/pkg/runtime/sys_freebsd_386.s +++ b/src/pkg/runtime/sys_freebsd_386.s @@ -45,14 +45,14 @@ TEXT runtime·thr_start(SB),7,$0 TEXT runtime·exit(SB),7,$-4 MOVL $1, AX INT $0x80 - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET TEXT runtime·exit1(SB),7,$-4 MOVL $431, AX INT $0x80 JAE 2(PC) - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET TEXT runtime·write(SB),7,$-4 @@ -79,10 +79,6 @@ TEXT runtime·raisesigpipe(SB),7,$12 INT $0x80 RET -TEXT runtime·notok(SB),7,$0 - MOVL $0xf1, 0xf1 - RET - TEXT runtime·mmap(SB),7,$32 LEAL arg0+0(FP), SI LEAL 4(SP), DI @@ -103,7 +99,7 @@ TEXT runtime·munmap(SB),7,$-4 MOVL $73, AX INT $0x80 JAE 2(PC) - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET TEXT runtime·setitimer(SB), 7, $-4 @@ -157,18 +153,23 @@ TEXT runtime·sigaction(SB),7,$-4 MOVL $416, AX INT $0x80 JAE 2(PC) - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET TEXT runtime·sigtramp(SB),7,$44 get_tls(CX) + // check that m exists + MOVL m(CX), BX + CMPL BX, $0 + JNE 2(PC) + CALL runtime·badsignal(SB) + // save g MOVL g(CX), DI MOVL DI, 20(SP) // g = m->gsignal - MOVL m(CX), BX MOVL m_gsignal(BX), BX MOVL BX, g(CX) @@ -194,14 +195,14 @@ TEXT runtime·sigtramp(SB),7,$44 MOVL AX, 4(SP) MOVL $417, AX // sigreturn(ucontext) INT $0x80 - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET TEXT runtime·sigaltstack(SB),7,$0 MOVL $53, AX INT $0x80 JAE 2(PC) - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET TEXT runtime·usleep(SB),7,$20 @@ -220,8 +221,6 @@ TEXT runtime·usleep(SB),7,$20 MOVL $0, 8(SP) // arg 2 - rmtp MOVL $240, AX // sys_nanosleep INT $0x80 - JAE 2(PC) - CALL runtime·notok(SB) RET /* @@ -319,7 +318,7 @@ TEXT runtime·sigprocmask(SB),7,$16 MOVL $340, AX // sys_sigprocmask INT $0x80 JAE 2(PC) - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET GLOBL runtime·tlsoffset(SB),$4 diff --git a/src/pkg/runtime/sys_freebsd_amd64.s b/src/pkg/runtime/sys_freebsd_amd64.s index 3984ef40e..36e034a80 100644 --- a/src/pkg/runtime/sys_freebsd_amd64.s +++ b/src/pkg/runtime/sys_freebsd_amd64.s @@ -47,14 +47,14 @@ TEXT runtime·exit(SB),7,$-8 MOVL 8(SP), DI // arg 1 exit status MOVL $1, AX SYSCALL - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET TEXT runtime·exit1(SB),7,$-8 MOVQ 8(SP), DI // arg 1 exit status MOVL $431, AX SYSCALL - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET TEXT runtime·write(SB),7,$-8 @@ -129,18 +129,23 @@ TEXT runtime·sigaction(SB),7,$-8 MOVL $416, AX SYSCALL JCC 2(PC) - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET TEXT runtime·sigtramp(SB),7,$64 get_tls(BX) + // check that m exists + MOVQ m(BX), BP + CMPQ BP, $0 + JNE 2(PC) + CALL runtime·badsignal(SB) + // save g MOVQ g(BX), R10 MOVQ R10, 40(SP) // g = m->signal - MOVQ m(BX), BP MOVQ m_gsignal(BP), BP MOVQ BP, g(BX) @@ -174,12 +179,7 @@ TEXT runtime·munmap(SB),7,$0 MOVL $73, AX SYSCALL JCC 2(PC) - CALL runtime·notok(SB) - RET - -TEXT runtime·notok(SB),7,$-8 - MOVL $0xf1, BP - MOVQ BP, (BP) + MOVL $0xf1, 0xf1 // crash RET TEXT runtime·sigaltstack(SB),7,$-8 @@ -188,7 +188,7 @@ TEXT runtime·sigaltstack(SB),7,$-8 MOVQ $53, AX SYSCALL JCC 2(PC) - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET TEXT runtime·usleep(SB),7,$16 @@ -205,8 +205,6 @@ TEXT runtime·usleep(SB),7,$16 MOVQ $0, SI // arg 2 - rmtp MOVL $240, AX // sys_nanosleep SYSCALL - JCC 2(PC) - CALL runtime·notok(SB) RET // set tls base to DI @@ -218,7 +216,7 @@ TEXT runtime·settls(SB),7,$8 MOVQ $165, AX // sysarch SYSCALL JCC 2(PC) - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET TEXT runtime·sysctl(SB),7,$0 @@ -248,5 +246,5 @@ TEXT runtime·sigprocmask(SB),7,$0 MOVL $340, AX // sys_sigprocmask SYSCALL JAE 2(PC) - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET diff --git a/src/pkg/runtime/sys_linux_386.s b/src/pkg/runtime/sys_linux_386.s index b4cefc53f..602d9ddac 100644 --- a/src/pkg/runtime/sys_linux_386.s +++ b/src/pkg/runtime/sys_linux_386.s @@ -167,6 +167,12 @@ TEXT runtime·rt_sigaction(SB),7,$0 TEXT runtime·sigtramp(SB),7,$44 get_tls(CX) + // check that m exists + MOVL m(CX), BX + CMPL BX, $0 + JNE 2(PC) + CALL runtime·badsignal(SB) + // save g MOVL g(CX), DI MOVL DI, 20(SP) diff --git a/src/pkg/runtime/sys_linux_amd64.s b/src/pkg/runtime/sys_linux_amd64.s index 0de5b2aa4..657ab7e0b 100644 --- a/src/pkg/runtime/sys_linux_amd64.s +++ b/src/pkg/runtime/sys_linux_amd64.s @@ -139,7 +139,7 @@ TEXT runtime·rtsigprocmask(SB),7,$0-32 SYSCALL CMPQ AX, $0xfffffffffffff001 JLS 2(PC) - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET TEXT runtime·rt_sigaction(SB),7,$0-32 @@ -154,12 +154,17 @@ TEXT runtime·rt_sigaction(SB),7,$0-32 TEXT runtime·sigtramp(SB),7,$64 get_tls(BX) + // check that m exists + MOVQ m(BX), BP + CMPQ BP, $0 + JNE 2(PC) + CALL runtime·badsignal(SB) + // save g MOVQ g(BX), R10 MOVQ R10, 40(SP) // g = m->gsignal - MOVQ m(BX), BP MOVQ m_gsignal(BP), BP MOVQ BP, g(BX) @@ -205,7 +210,7 @@ TEXT runtime·munmap(SB),7,$0 SYSCALL CMPQ AX, $0xfffffffffffff001 JLS 2(PC) - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET TEXT runtime·madvise(SB),7,$0 @@ -216,12 +221,7 @@ TEXT runtime·madvise(SB),7,$0 SYSCALL CMPQ AX, $0xfffffffffffff001 JLS 2(PC) - CALL runtime·notok(SB) - RET - -TEXT runtime·notok(SB),7,$0 - MOVQ $0xf1, BP - MOVQ BP, (BP) + MOVL $0xf1, 0xf1 // crash RET // int64 futex(int32 *uaddr, int32 op, int32 val, @@ -290,7 +290,7 @@ TEXT runtime·sigaltstack(SB),7,$-8 SYSCALL CMPQ AX, $0xfffffffffffff001 JLS 2(PC) - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET // set tls base to DI @@ -303,7 +303,7 @@ TEXT runtime·settls(SB),7,$32 SYSCALL CMPQ AX, $0xfffffffffffff001 JLS 2(PC) - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET TEXT runtime·osyield(SB),7,$0 diff --git a/src/pkg/runtime/sys_linux_arm.s b/src/pkg/runtime/sys_linux_arm.s index 439df3afa..03e173d26 100644 --- a/src/pkg/runtime/sys_linux_arm.s +++ b/src/pkg/runtime/sys_linux_arm.s @@ -38,11 +38,6 @@ #define ARM_BASE (SYS_BASE + 0x0f0000) #define SYS_ARM_cacheflush (ARM_BASE + 2) -TEXT notok<>(SB),7,$0 - MOVW $0, R9 - MOVW R9, (R9) - B 0(PC) - TEXT runtime·open(SB),7,$0 MOVW 0(FP), R0 MOVW 4(FP), R1 @@ -126,7 +121,8 @@ TEXT runtime·munmap(SB),7,$0 SWI $0 MOVW $0xfffff001, R6 CMP R6, R0 - BL.HI notok<>(SB) + MOVW.HI $0, R9 // crash on syscall failure + MOVW.HI R9, (R9) RET TEXT runtime·madvise(SB),7,$0 @@ -137,7 +133,8 @@ TEXT runtime·madvise(SB),7,$0 SWI $0 MOVW $0xfffff001, R6 CMP R6, R0 - BL.HI notok<>(SB) + MOVW.HI $0, R9 // crash on syscall failure + MOVW.HI R9, (R9) RET TEXT runtime·setitimer(SB),7,$0 @@ -291,7 +288,8 @@ TEXT runtime·sigaltstack(SB),7,$0 SWI $0 MOVW $0xfffff001, R6 CMP R6, R0 - BL.HI notok<>(SB) + MOVW.HI $0, R9 // crash on syscall failure + MOVW.HI R9, (R9) RET TEXT runtime·sigtramp(SB),7,$24 diff --git a/src/pkg/runtime/sys_netbsd_386.s b/src/pkg/runtime/sys_netbsd_386.s index 632286102..11f8c7aaa 100644 --- a/src/pkg/runtime/sys_netbsd_386.s +++ b/src/pkg/runtime/sys_netbsd_386.s @@ -12,14 +12,14 @@ TEXT runtime·exit(SB),7,$-4 MOVL $1, AX INT $0x80 - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET TEXT runtime·exit1(SB),7,$-4 MOVL $302, AX // sys_threxit INT $0x80 JAE 2(PC) - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET TEXT runtime·write(SB),7,$-4 @@ -55,10 +55,6 @@ TEXT runtime·raisesigpipe(SB),7,$12 INT $0x80 RET -TEXT runtime·notok(SB),7,$0 - MOVL $0xf1, 0xf1 - RET - TEXT runtime·mmap(SB),7,$36 LEAL arg0+0(FP), SI LEAL 4(SP), DI @@ -83,7 +79,7 @@ TEXT runtime·munmap(SB),7,$-4 MOVL $73, AX // sys_munmap INT $0x80 JAE 2(PC) - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET TEXT runtime·setitimer(SB),7,$-4 @@ -136,18 +132,23 @@ TEXT runtime·sigaction(SB),7,$-4 MOVL $46, AX // sys_sigaction INT $0x80 JAE 2(PC) - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET TEXT runtime·sigtramp(SB),7,$44 get_tls(CX) + // check that m exists + MOVL m(CX), BX + CMPL BX, $0 + JNE 2(PC) + CALL runtime·badsignal(SB) + // save g MOVL g(CX), DI MOVL DI, 20(SP) // g = m->gsignal - MOVL m(CX), BX MOVL m_gsignal(BX), BX MOVL BX, g(CX) @@ -173,7 +174,7 @@ TEXT runtime·sigtramp(SB),7,$44 MOVL AX, 4(SP) // arg 1 - sigcontext MOVL $103, AX // sys_sigreturn INT $0x80 - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET // int32 rfork_thread(int32 flags, void *stack, M *m, G *g, void (*fn)(void)); @@ -285,7 +286,7 @@ TEXT runtime·settls(SB),7,$16 MOVL $165, AX // sys_sysarch INT $0x80 JCC 2(PC) - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET TEXT runtime·osyield(SB),7,$-4 diff --git a/src/pkg/runtime/sys_netbsd_amd64.s b/src/pkg/runtime/sys_netbsd_amd64.s index 7abeb159b..0b83cd4d8 100644 --- a/src/pkg/runtime/sys_netbsd_amd64.s +++ b/src/pkg/runtime/sys_netbsd_amd64.s @@ -83,13 +83,13 @@ TEXT runtime·exit(SB),7,$-8 MOVL 8(SP), DI // arg 1 - exit status MOVL $1, AX // sys_exit SYSCALL - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET TEXT runtime·exit1(SB),7,$-8 MOVL $302, AX // sys_threxit SYSCALL - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET TEXT runtime·write(SB),7,$-8 @@ -170,18 +170,23 @@ TEXT runtime·sigaction(SB),7,$-8 MOVL $46, AX SYSCALL JCC 2(PC) - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET TEXT runtime·sigtramp(SB),7,$64 get_tls(BX) + // check that m exists + MOVQ m(BX), BP + CMPQ BP, $0 + JNE 2(PC) + CALL runtime·badsignal(SB) + // save g MOVQ g(BX), R10 MOVQ R10, 40(SP) // g = m->signal - MOVQ m(BX), BP MOVQ m_gsignal(BP), BP MOVQ BP, g(BX) @@ -221,12 +226,7 @@ TEXT runtime·munmap(SB),7,$0 MOVL $73, AX // sys_munmap SYSCALL JCC 2(PC) - CALL runtime·notok(SB) - RET - -TEXT runtime·notok(SB),7,$-8 - MOVL $0xf1, BP - MOVQ BP, (BP) + MOVL $0xf1, 0xf1 // crash RET TEXT runtime·sigaltstack(SB),7,$-8 @@ -235,7 +235,7 @@ TEXT runtime·sigaltstack(SB),7,$-8 MOVQ $288, AX // sys_sigaltstack SYSCALL JCC 2(PC) - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET // set tls base to DI @@ -248,7 +248,7 @@ TEXT runtime·settls(SB),7,$8 MOVQ $165, AX // sys_sysarch SYSCALL JCC 2(PC) - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET TEXT runtime·sysctl(SB),7,$0 diff --git a/src/pkg/runtime/sys_openbsd_386.s b/src/pkg/runtime/sys_openbsd_386.s index d49d32b95..593b4a9df 100644 --- a/src/pkg/runtime/sys_openbsd_386.s +++ b/src/pkg/runtime/sys_openbsd_386.s @@ -12,14 +12,14 @@ TEXT runtime·exit(SB),7,$-4 MOVL $1, AX INT $0x80 - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET TEXT runtime·exit1(SB),7,$-4 MOVL $302, AX // sys_threxit INT $0x80 JAE 2(PC) - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET TEXT runtime·write(SB),7,$-4 @@ -55,10 +55,6 @@ TEXT runtime·raisesigpipe(SB),7,$12 INT $0x80 RET -TEXT runtime·notok(SB),7,$0 - MOVL $0xf1, 0xf1 - RET - TEXT runtime·mmap(SB),7,$36 LEAL arg0+0(FP), SI LEAL 4(SP), DI @@ -83,7 +79,7 @@ TEXT runtime·munmap(SB),7,$-4 MOVL $73, AX // sys_munmap INT $0x80 JAE 2(PC) - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET TEXT runtime·setitimer(SB),7,$-4 @@ -136,18 +132,23 @@ TEXT runtime·sigaction(SB),7,$-4 MOVL $46, AX // sys_sigaction INT $0x80 JAE 2(PC) - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET TEXT runtime·sigtramp(SB),7,$44 get_tls(CX) + // check that m exists + MOVL m(CX), BX + CMPL BX, $0 + JNE 2(PC) + CALL runtime·badsignal(SB) + // save g MOVL g(CX), DI MOVL DI, 20(SP) // g = m->gsignal - MOVL m(CX), BX MOVL m_gsignal(BX), BX MOVL BX, g(CX) @@ -173,7 +174,7 @@ TEXT runtime·sigtramp(SB),7,$44 MOVL AX, 4(SP) // arg 1 - sigcontext MOVL $103, AX // sys_sigreturn INT $0x80 - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET // int32 rfork_thread(int32 flags, void *stack, M *m, G *g, void (*fn)(void)); @@ -285,7 +286,7 @@ TEXT runtime·settls(SB),7,$16 MOVL $165, AX // sys_sysarch INT $0x80 JCC 2(PC) - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET TEXT runtime·osyield(SB),7,$-4 diff --git a/src/pkg/runtime/sys_openbsd_amd64.s b/src/pkg/runtime/sys_openbsd_amd64.s index 5bf2e813e..d2d48e6b5 100644 --- a/src/pkg/runtime/sys_openbsd_amd64.s +++ b/src/pkg/runtime/sys_openbsd_amd64.s @@ -83,13 +83,13 @@ TEXT runtime·exit(SB),7,$-8 MOVL 8(SP), DI // arg 1 - exit status MOVL $1, AX // sys_exit SYSCALL - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET TEXT runtime·exit1(SB),7,$-8 MOVL $302, AX // sys_threxit SYSCALL - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET TEXT runtime·write(SB),7,$-8 @@ -170,18 +170,23 @@ TEXT runtime·sigaction(SB),7,$-8 MOVL $46, AX SYSCALL JCC 2(PC) - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET TEXT runtime·sigtramp(SB),7,$64 get_tls(BX) + // check that m exists + MOVQ m(BX), BP + CMPQ BP, $0 + JNE 2(PC) + CALL runtime·badsignal(SB) + // save g MOVQ g(BX), R10 MOVQ R10, 40(SP) // g = m->signal - MOVQ m(BX), BP MOVQ m_gsignal(BP), BP MOVQ BP, g(BX) @@ -221,12 +226,7 @@ TEXT runtime·munmap(SB),7,$0 MOVL $73, AX // sys_munmap SYSCALL JCC 2(PC) - CALL runtime·notok(SB) - RET - -TEXT runtime·notok(SB),7,$-8 - MOVL $0xf1, BP - MOVQ BP, (BP) + MOVL $0xf1, 0xf1 // crash RET TEXT runtime·sigaltstack(SB),7,$-8 @@ -235,7 +235,7 @@ TEXT runtime·sigaltstack(SB),7,$-8 MOVQ $288, AX // sys_sigaltstack SYSCALL JCC 2(PC) - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET // set tls base to DI @@ -248,7 +248,7 @@ TEXT runtime·settls(SB),7,$8 MOVQ $165, AX // sys_sysarch SYSCALL JCC 2(PC) - CALL runtime·notok(SB) + MOVL $0xf1, 0xf1 // crash RET TEXT runtime·sysctl(SB),7,$0 diff --git a/src/pkg/runtime/sys_windows_386.s b/src/pkg/runtime/sys_windows_386.s index 5290f6093..d5646bfea 100644 --- a/src/pkg/runtime/sys_windows_386.s +++ b/src/pkg/runtime/sys_windows_386.s @@ -38,6 +38,46 @@ TEXT runtime·asmstdcall(SB),7,$0 RET +TEXT runtime·badcallback(SB),7,$24 + // stderr + MOVL $-12, 0(SP) + MOVL SP, BP + CALL *runtime·GetStdHandle(SB) + MOVL BP, SP + + MOVL AX, 0(SP) // handle + MOVL $runtime·badcallbackmsg(SB), DX // pointer + MOVL DX, 4(SP) + MOVL runtime·badcallbacklen(SB), DX // count + MOVL DX, 8(SP) + LEAL 20(SP), DX // written count + MOVL $0, 0(DX) + MOVL DX, 12(SP) + MOVL $0, 16(SP) // overlapped + CALL *runtime·WriteFile(SB) + MOVL BP, SI + RET + +TEXT runtime·badsignal(SB),7,$24 + // stderr + MOVL $-12, 0(SP) + MOVL SP, BP + CALL *runtime·GetStdHandle(SB) + MOVL BP, SP + + MOVL AX, 0(SP) // handle + MOVL $runtime·badsignalmsg(SB), DX // pointer + MOVL DX, 4(SP) + MOVL runtime·badsignallen(SB), DX // count + MOVL DX, 8(SP) + LEAL 20(SP), DX // written count + MOVL $0, 0(DX) + MOVL DX, 12(SP) + MOVL $0, 16(SP) // overlapped + CALL *runtime·WriteFile(SB) + MOVL BP, SI + RET + // faster get/set last error TEXT runtime·getlasterror(SB),7,$0 MOVL 0x34(FS), AX @@ -59,7 +99,15 @@ TEXT runtime·sigtramp(SB),7,$28 MOVL CX, 0(SP) MOVL context+8(FP), CX MOVL CX, 4(SP) + get_tls(CX) + + // check that m exists + MOVL m(CX), AX + CMPL AX, $0 + JNE 2(PC) + CALL runtime·badsignal(SB) + MOVL g(CX), CX MOVL CX, 8(SP) diff --git a/src/pkg/runtime/sys_windows_amd64.s b/src/pkg/runtime/sys_windows_amd64.s index 76b5ee5fb..11909cda2 100644 --- a/src/pkg/runtime/sys_windows_amd64.s +++ b/src/pkg/runtime/sys_windows_amd64.s @@ -60,6 +60,55 @@ loadregs: RET +// This should be called on a system stack, +// so we don't need to concern about split stack. +TEXT runtime·badcallback(SB),7,$0 + SUBQ $48, SP + + // stderr + MOVQ $-12, CX // stderr + MOVQ CX, 0(SP) + MOVQ runtime·GetStdHandle(SB), AX + CALL AX + + MOVQ AX, CX // handle + MOVQ CX, 0(SP) + MOVQ $runtime·badcallbackmsg(SB), DX // pointer + MOVQ DX, 8(SP) + MOVL $runtime·badcallbacklen(SB), R8 // count + MOVQ R8, 16(SP) + LEAQ 40(SP), R9 // written count + MOVQ $0, 0(R9) + MOVQ R9, 24(SP) + MOVQ $0, 32(SP) // overlapped + MOVQ runtime·WriteFile(SB), AX + CALL AX + + ADDQ $48, SP + RET + +TEXT runtime·badsignal(SB),7,$48 + // stderr + MOVQ $-12, CX // stderr + MOVQ CX, 0(SP) + MOVQ runtime·GetStdHandle(SB), AX + CALL AX + + MOVQ AX, CX // handle + MOVQ CX, 0(SP) + MOVQ $runtime·badsignalmsg(SB), DX // pointer + MOVQ DX, 8(SP) + MOVL $runtime·badsignallen(SB), R8 // count + MOVQ R8, 16(SP) + LEAQ 40(SP), R9 // written count + MOVQ $0, 0(R9) + MOVQ R9, 24(SP) + MOVQ $0, 32(SP) // overlapped + MOVQ runtime·WriteFile(SB), AX + CALL AX + + RET + // faster get/set last error TEXT runtime·getlasterror(SB),7,$0 MOVQ 0x30(GS), AX @@ -72,7 +121,7 @@ TEXT runtime·setlasterror(SB),7,$0 MOVL AX, 0x68(CX) RET -TEXT runtime·sigtramp(SB),7,$56 +TEXT runtime·sigtramp(SB),7,$0 // CX: exception record // R8: context @@ -81,10 +130,23 @@ TEXT runtime·sigtramp(SB),7,$56 MOVL $1, AX JNZ sigdone - // copy arguments for call to sighandler + // copy arguments for call to sighandler. + + // Stack adjustment is here to hide from 6l, + // which doesn't understand that sigtramp + // runs on essentially unlimited stack. + SUBQ $56, SP MOVQ CX, 0(SP) MOVQ R8, 8(SP) + get_tls(CX) + + // check that m exists + MOVQ m(CX), AX + CMPQ AX, $0 + JNE 2(PC) + CALL runtime·badsignal(SB) + MOVQ g(CX), CX MOVQ CX, 16(SP) @@ -99,6 +161,8 @@ TEXT runtime·sigtramp(SB),7,$56 MOVQ 32(SP), BP MOVQ 40(SP), SI MOVQ 48(SP), DI + ADDQ $56, SP + sigdone: RET @@ -207,15 +271,18 @@ TEXT runtime·callbackasm(SB),7,$0 MOVQ R14, 8(SP) MOVQ R15, 0(SP) + // prepare call stack. use SUBQ to hide from stack frame checks // cgocallback(void (*fn)(void*), void *frame, uintptr framesize) - PUSHQ DX // uintptr framesize - PUSHQ CX // void *frame - PUSHQ AX // void (*fn)(void*) + SUBQ $24, SP + MOVQ DX, 16(SP) // uintptr framesize + MOVQ CX, 8(SP) // void *frame + MOVQ AX, 0(SP) // void (*fn)(void*) CLD CALL runtime·cgocallback(SB) - POPQ AX - POPQ CX - POPQ DX + MOVQ 0(SP), AX + MOVQ 8(SP), CX + MOVQ 16(SP), DX + ADDQ $24, SP // restore registers as required for windows callback // 6l does not allow writing many POPs here issuing a warning "nosplit stack overflow" @@ -268,11 +335,6 @@ TEXT runtime·tstart_stdcall(SB),7,$0 XORL AX, AX // return 0 == success RET -TEXT runtime·notok(SB),7,$0 - MOVQ $0xf1, BP - MOVQ BP, (BP) - RET - // set tls base to DI TEXT runtime·settls(SB),7,$0 CALL runtime·setstacklimits(SB) diff --git a/src/pkg/runtime/thread_darwin.c b/src/pkg/runtime/thread_darwin.c index 556fb67e8..6a83e48a3 100644 --- a/src/pkg/runtime/thread_darwin.c +++ b/src/pkg/runtime/thread_darwin.c @@ -477,3 +477,23 @@ runtime·setprof(bool on) else runtime·sigprocmask(SIG_BLOCK, &sigset_prof, nil); } + +static int8 badcallback[] = "runtime: cgo callback on thread not created by Go.\n"; + +// This runs on a foreign stack, without an m or a g. No stack split. +#pragma textflag 7 +void +runtime·badcallback(void) +{ + runtime·write(2, badcallback, sizeof badcallback - 1); +} + +static int8 badsignal[] = "runtime: signal received on thread not created by Go.\n"; + +// This runs on a foreign stack, without an m or a g. No stack split. +#pragma textflag 7 +void +runtime·badsignal(void) +{ + runtime·write(2, badsignal, sizeof badsignal - 1); +} diff --git a/src/pkg/runtime/thread_freebsd.c b/src/pkg/runtime/thread_freebsd.c index 77e8bb3da..4c546178f 100644 --- a/src/pkg/runtime/thread_freebsd.c +++ b/src/pkg/runtime/thread_freebsd.c @@ -195,3 +195,23 @@ runtime·setprof(bool on) { USED(on); } + +static int8 badcallback[] = "runtime: cgo callback on thread not created by Go.\n"; + +// This runs on a foreign stack, without an m or a g. No stack split. +#pragma textflag 7 +void +runtime·badcallback(void) +{ + runtime·write(2, badcallback, sizeof badcallback - 1); +} + +static int8 badsignal[] = "runtime: signal received on thread not created by Go.\n"; + +// This runs on a foreign stack, without an m or a g. No stack split. +#pragma textflag 7 +void +runtime·badsignal(void) +{ + runtime·write(2, badsignal, sizeof badsignal - 1); +} diff --git a/src/pkg/runtime/thread_linux.c b/src/pkg/runtime/thread_linux.c index 6b428440e..858be7036 100644 --- a/src/pkg/runtime/thread_linux.c +++ b/src/pkg/runtime/thread_linux.c @@ -255,3 +255,23 @@ runtime·setprof(bool on) { USED(on); } + +static int8 badcallback[] = "runtime: cgo callback on thread not created by Go.\n"; + +// This runs on a foreign stack, without an m or a g. No stack split. +#pragma textflag 7 +void +runtime·badcallback(void) +{ + runtime·write(2, badcallback, sizeof badcallback - 1); +} + +static int8 badsignal[] = "runtime: signal received on thread not created by Go.\n"; + +// This runs on a foreign stack, without an m or a g. No stack split. +#pragma textflag 7 +void +runtime·badsignal(void) +{ + runtime·write(2, badsignal, sizeof badsignal - 1); +} diff --git a/src/pkg/runtime/thread_netbsd.c b/src/pkg/runtime/thread_netbsd.c index 62e133c44..1b2df85cd 100644 --- a/src/pkg/runtime/thread_netbsd.c +++ b/src/pkg/runtime/thread_netbsd.c @@ -213,3 +213,23 @@ runtime·setprof(bool on) { USED(on); } + +static int8 badcallback[] = "runtime: cgo callback on thread not created by Go.\n"; + +// This runs on a foreign stack, without an m or a g. No stack split. +#pragma textflag 7 +void +runtime·badcallback(void) +{ + runtime·write(2, badcallback, sizeof badcallback - 1); +} + +static int8 badsignal[] = "runtime: signal received on thread not created by Go.\n"; + +// This runs on a foreign stack, without an m or a g. No stack split. +#pragma textflag 7 +void +runtime·badsignal(void) +{ + runtime·write(2, badsignal, sizeof badsignal - 1); +} diff --git a/src/pkg/runtime/thread_openbsd.c b/src/pkg/runtime/thread_openbsd.c index bee0c5755..d0f947210 100644 --- a/src/pkg/runtime/thread_openbsd.c +++ b/src/pkg/runtime/thread_openbsd.c @@ -213,3 +213,23 @@ runtime·setprof(bool on) { USED(on); } + +static int8 badcallback[] = "runtime: cgo callback on thread not created by Go.\n"; + +// This runs on a foreign stack, without an m or a g. No stack split. +#pragma textflag 7 +void +runtime·badcallback(void) +{ + runtime·write(2, badcallback, sizeof badcallback - 1); +} + +static int8 badsignal[] = "runtime: signal received on thread not created by Go.\n"; + +// This runs on a foreign stack, without an m or a g. No stack split. +#pragma textflag 7 +void +runtime·badsignal(void) +{ + runtime·write(2, badsignal, sizeof badsignal - 1); +} diff --git a/src/pkg/runtime/thread_plan9.c b/src/pkg/runtime/thread_plan9.c index aaed5050b..3b0dca69f 100644 --- a/src/pkg/runtime/thread_plan9.c +++ b/src/pkg/runtime/thread_plan9.c @@ -247,3 +247,23 @@ runtime·setprof(bool on) { USED(on); } + +static int8 badcallback[] = "runtime: cgo callback on thread not created by Go.\n"; + +// This runs on a foreign stack, without an m or a g. No stack split. +#pragma textflag 7 +void +runtime·badcallback(void) +{ + runtime·pwrite(2, badcallback, sizeof badcallback - 1, -1LL); +} + +static int8 badsignal[] = "runtime: signal received on thread not created by Go.\n"; + +// This runs on a foreign stack, without an m or a g. No stack split. +#pragma textflag 7 +void +runtime·badsignal(void) +{ + runtime·pwrite(2, badsignal, sizeof badsignal - 1, -1LL); +} diff --git a/src/pkg/runtime/thread_windows.c b/src/pkg/runtime/thread_windows.c index 8a448bc37..f684d3733 100644 --- a/src/pkg/runtime/thread_windows.c +++ b/src/pkg/runtime/thread_windows.c @@ -302,21 +302,6 @@ runtime·initsig(void) USED(p); } -String -runtime·signame(int32 sig) -{ - int8 *s; - - switch(sig) { - case SIGINT: - s = "SIGINT: interrupt"; - break; - default: - return runtime·emptystring; - } - return runtime·gostringnocopy((byte*)s); -} - uint32 runtime·ctrlhandler1(uint32 type) { @@ -437,3 +422,9 @@ runtime·setprof(bool on) { USED(on); } + +int8 runtime·badcallbackmsg[] = "runtime: cgo callback on thread not created by Go.\n"; +int32 runtime·badcallbacklen = sizeof runtime·badcallbackmsg - 1; + +int8 runtime·badsignalmsg[] = "runtime: signal received on thread not created by Go.\n"; +int32 runtime·badsignallen = sizeof runtime·badsignalmsg - 1; diff --git a/src/pkg/sort/sort.go b/src/pkg/sort/sort.go index 31da3c83d..62a4d55e7 100644 --- a/src/pkg/sort/sort.go +++ b/src/pkg/sort/sort.go @@ -183,17 +183,21 @@ func quickSort(data Interface, a, b, maxDepth int) { } } +// Sort sorts data. +// It makes one call to data.Len to determine n, and O(n*log(n)) calls to +// data.Less and data.Swap. The sort is not guaranteed to be stable. func Sort(data Interface) { - // Switch to heapsort if depth of 2*ceil(lg(n)) is reached. + // Switch to heapsort if depth of 2*ceil(lg(n+1)) is reached. n := data.Len() maxDepth := 0 - for 1<<uint(maxDepth) < n { + for i := n; i > 0; i >>= 1 { maxDepth++ } maxDepth *= 2 quickSort(data, 0, n, maxDepth) } +// IsSorted reports whether data is sorted. func IsSorted(data Interface) bool { n := data.Len() for i := n - 1; i > 0; i-- { diff --git a/src/pkg/strconv/isprint.go b/src/pkg/strconv/isprint.go new file mode 100644 index 000000000..a03a07bfb --- /dev/null +++ b/src/pkg/strconv/isprint.go @@ -0,0 +1,521 @@ +// DO NOT EDIT. GENERATED BY +// go run makeisprint.go >x && mv x isprint.go + +package strconv + +// (474+134+42)*2 + (180)*4 = 2020 bytes + +var isPrint16 = []uint16{ + 0x0020, 0x007e, + 0x00a1, 0x0377, + 0x037a, 0x037e, + 0x0384, 0x0527, + 0x0531, 0x0556, + 0x0559, 0x058a, + 0x0591, 0x05c7, + 0x05d0, 0x05ea, + 0x05f0, 0x05f4, + 0x0606, 0x061b, + 0x061e, 0x070d, + 0x0710, 0x074a, + 0x074d, 0x07b1, + 0x07c0, 0x07fa, + 0x0800, 0x082d, + 0x0830, 0x085b, + 0x085e, 0x085e, + 0x0900, 0x098c, + 0x098f, 0x0990, + 0x0993, 0x09b2, + 0x09b6, 0x09b9, + 0x09bc, 0x09c4, + 0x09c7, 0x09c8, + 0x09cb, 0x09ce, + 0x09d7, 0x09d7, + 0x09dc, 0x09e3, + 0x09e6, 0x09fb, + 0x0a01, 0x0a0a, + 0x0a0f, 0x0a10, + 0x0a13, 0x0a39, + 0x0a3c, 0x0a42, + 0x0a47, 0x0a48, + 0x0a4b, 0x0a4d, + 0x0a51, 0x0a51, + 0x0a59, 0x0a5e, + 0x0a66, 0x0a75, + 0x0a81, 0x0ab9, + 0x0abc, 0x0acd, + 0x0ad0, 0x0ad0, + 0x0ae0, 0x0ae3, + 0x0ae6, 0x0af1, + 0x0b01, 0x0b0c, + 0x0b0f, 0x0b10, + 0x0b13, 0x0b39, + 0x0b3c, 0x0b44, + 0x0b47, 0x0b48, + 0x0b4b, 0x0b4d, + 0x0b56, 0x0b57, + 0x0b5c, 0x0b63, + 0x0b66, 0x0b77, + 0x0b82, 0x0b8a, + 0x0b8e, 0x0b95, + 0x0b99, 0x0b9f, + 0x0ba3, 0x0ba4, + 0x0ba8, 0x0baa, + 0x0bae, 0x0bb9, + 0x0bbe, 0x0bc2, + 0x0bc6, 0x0bcd, + 0x0bd0, 0x0bd0, + 0x0bd7, 0x0bd7, + 0x0be6, 0x0bfa, + 0x0c01, 0x0c39, + 0x0c3d, 0x0c4d, + 0x0c55, 0x0c59, + 0x0c60, 0x0c63, + 0x0c66, 0x0c6f, + 0x0c78, 0x0c7f, + 0x0c82, 0x0cb9, + 0x0cbc, 0x0ccd, + 0x0cd5, 0x0cd6, + 0x0cde, 0x0ce3, + 0x0ce6, 0x0cf2, + 0x0d02, 0x0d3a, + 0x0d3d, 0x0d4e, + 0x0d57, 0x0d57, + 0x0d60, 0x0d63, + 0x0d66, 0x0d75, + 0x0d79, 0x0d7f, + 0x0d82, 0x0d96, + 0x0d9a, 0x0dbd, + 0x0dc0, 0x0dc6, + 0x0dca, 0x0dca, + 0x0dcf, 0x0ddf, + 0x0df2, 0x0df4, + 0x0e01, 0x0e3a, + 0x0e3f, 0x0e5b, + 0x0e81, 0x0e84, + 0x0e87, 0x0e8a, + 0x0e8d, 0x0e8d, + 0x0e94, 0x0ea7, + 0x0eaa, 0x0ebd, + 0x0ec0, 0x0ecd, + 0x0ed0, 0x0ed9, + 0x0edc, 0x0edd, + 0x0f00, 0x0f6c, + 0x0f71, 0x0fda, + 0x1000, 0x10c5, + 0x10d0, 0x10fc, + 0x1100, 0x124d, + 0x1250, 0x125d, + 0x1260, 0x128d, + 0x1290, 0x12b5, + 0x12b8, 0x12c5, + 0x12c8, 0x1315, + 0x1318, 0x135a, + 0x135d, 0x137c, + 0x1380, 0x1399, + 0x13a0, 0x13f4, + 0x1400, 0x169c, + 0x16a0, 0x16f0, + 0x1700, 0x1714, + 0x1720, 0x1736, + 0x1740, 0x1753, + 0x1760, 0x1773, + 0x1780, 0x17b3, + 0x17b6, 0x17dd, + 0x17e0, 0x17e9, + 0x17f0, 0x17f9, + 0x1800, 0x180d, + 0x1810, 0x1819, + 0x1820, 0x1877, + 0x1880, 0x18aa, + 0x18b0, 0x18f5, + 0x1900, 0x191c, + 0x1920, 0x192b, + 0x1930, 0x193b, + 0x1940, 0x1940, + 0x1944, 0x196d, + 0x1970, 0x1974, + 0x1980, 0x19ab, + 0x19b0, 0x19c9, + 0x19d0, 0x19da, + 0x19de, 0x1a1b, + 0x1a1e, 0x1a7c, + 0x1a7f, 0x1a89, + 0x1a90, 0x1a99, + 0x1aa0, 0x1aad, + 0x1b00, 0x1b4b, + 0x1b50, 0x1b7c, + 0x1b80, 0x1baa, + 0x1bae, 0x1bb9, + 0x1bc0, 0x1bf3, + 0x1bfc, 0x1c37, + 0x1c3b, 0x1c49, + 0x1c4d, 0x1c7f, + 0x1cd0, 0x1cf2, + 0x1d00, 0x1de6, + 0x1dfc, 0x1f15, + 0x1f18, 0x1f1d, + 0x1f20, 0x1f45, + 0x1f48, 0x1f4d, + 0x1f50, 0x1f7d, + 0x1f80, 0x1fd3, + 0x1fd6, 0x1fef, + 0x1ff2, 0x1ffe, + 0x2010, 0x2027, + 0x2030, 0x205e, + 0x2070, 0x2071, + 0x2074, 0x209c, + 0x20a0, 0x20b9, + 0x20d0, 0x20f0, + 0x2100, 0x2189, + 0x2190, 0x23f3, + 0x2400, 0x2426, + 0x2440, 0x244a, + 0x2460, 0x2b4c, + 0x2b50, 0x2b59, + 0x2c00, 0x2cf1, + 0x2cf9, 0x2d25, + 0x2d30, 0x2d65, + 0x2d6f, 0x2d70, + 0x2d7f, 0x2d96, + 0x2da0, 0x2e31, + 0x2e80, 0x2ef3, + 0x2f00, 0x2fd5, + 0x2ff0, 0x2ffb, + 0x3001, 0x3096, + 0x3099, 0x30ff, + 0x3105, 0x312d, + 0x3131, 0x31ba, + 0x31c0, 0x31e3, + 0x31f0, 0x4db5, + 0x4dc0, 0x9fcb, + 0xa000, 0xa48c, + 0xa490, 0xa4c6, + 0xa4d0, 0xa62b, + 0xa640, 0xa673, + 0xa67c, 0xa697, + 0xa6a0, 0xa6f7, + 0xa700, 0xa791, + 0xa7a0, 0xa7a9, + 0xa7fa, 0xa82b, + 0xa830, 0xa839, + 0xa840, 0xa877, + 0xa880, 0xa8c4, + 0xa8ce, 0xa8d9, + 0xa8e0, 0xa8fb, + 0xa900, 0xa953, + 0xa95f, 0xa97c, + 0xa980, 0xa9d9, + 0xa9de, 0xa9df, + 0xaa00, 0xaa36, + 0xaa40, 0xaa4d, + 0xaa50, 0xaa59, + 0xaa5c, 0xaa7b, + 0xaa80, 0xaac2, + 0xaadb, 0xaadf, + 0xab01, 0xab06, + 0xab09, 0xab0e, + 0xab11, 0xab16, + 0xab20, 0xab2e, + 0xabc0, 0xabed, + 0xabf0, 0xabf9, + 0xac00, 0xd7a3, + 0xd7b0, 0xd7c6, + 0xd7cb, 0xd7fb, + 0xf900, 0xfa2d, + 0xfa30, 0xfa6d, + 0xfa70, 0xfad9, + 0xfb00, 0xfb06, + 0xfb13, 0xfb17, + 0xfb1d, 0xfbc1, + 0xfbd3, 0xfd3f, + 0xfd50, 0xfd8f, + 0xfd92, 0xfdc7, + 0xfdf0, 0xfdfd, + 0xfe00, 0xfe19, + 0xfe20, 0xfe26, + 0xfe30, 0xfe6b, + 0xfe70, 0xfefc, + 0xff01, 0xffbe, + 0xffc2, 0xffc7, + 0xffca, 0xffcf, + 0xffd2, 0xffd7, + 0xffda, 0xffdc, + 0xffe0, 0xffee, + 0xfffc, 0xfffd, +} + +var isNotPrint16 = []uint16{ + 0x00ad, + 0x038b, + 0x038d, + 0x03a2, + 0x0560, + 0x0588, + 0x06dd, + 0x083f, + 0x0978, + 0x0980, + 0x0984, + 0x09a9, + 0x09b1, + 0x09de, + 0x0a04, + 0x0a29, + 0x0a31, + 0x0a34, + 0x0a37, + 0x0a3d, + 0x0a5d, + 0x0a84, + 0x0a8e, + 0x0a92, + 0x0aa9, + 0x0ab1, + 0x0ab4, + 0x0ac6, + 0x0aca, + 0x0af0, + 0x0b04, + 0x0b29, + 0x0b31, + 0x0b34, + 0x0b5e, + 0x0b84, + 0x0b91, + 0x0b9b, + 0x0b9d, + 0x0bc9, + 0x0c04, + 0x0c0d, + 0x0c11, + 0x0c29, + 0x0c34, + 0x0c45, + 0x0c49, + 0x0c57, + 0x0c84, + 0x0c8d, + 0x0c91, + 0x0ca9, + 0x0cb4, + 0x0cc5, + 0x0cc9, + 0x0cdf, + 0x0cf0, + 0x0d04, + 0x0d0d, + 0x0d11, + 0x0d45, + 0x0d49, + 0x0d84, + 0x0db2, + 0x0dbc, + 0x0dd5, + 0x0dd7, + 0x0e83, + 0x0e89, + 0x0e98, + 0x0ea0, + 0x0ea4, + 0x0ea6, + 0x0eac, + 0x0eba, + 0x0ec5, + 0x0ec7, + 0x0f48, + 0x0f98, + 0x0fbd, + 0x0fcd, + 0x1249, + 0x1257, + 0x1259, + 0x1289, + 0x12b1, + 0x12bf, + 0x12c1, + 0x12d7, + 0x1311, + 0x1680, + 0x170d, + 0x176d, + 0x1771, + 0x1a5f, + 0x1f58, + 0x1f5a, + 0x1f5c, + 0x1f5e, + 0x1fb5, + 0x1fc5, + 0x1fdc, + 0x1ff5, + 0x208f, + 0x2700, + 0x27cb, + 0x27cd, + 0x2c2f, + 0x2c5f, + 0x2da7, + 0x2daf, + 0x2db7, + 0x2dbf, + 0x2dc7, + 0x2dcf, + 0x2dd7, + 0x2ddf, + 0x2e9a, + 0x3040, + 0x318f, + 0x321f, + 0x32ff, + 0xa78f, + 0xa9ce, + 0xab27, + 0xfb37, + 0xfb3d, + 0xfb3f, + 0xfb42, + 0xfb45, + 0xfe53, + 0xfe67, + 0xfe75, + 0xffe7, +} + +var isPrint32 = []uint32{ + 0x010000, 0x01004d, + 0x010050, 0x01005d, + 0x010080, 0x0100fa, + 0x010100, 0x010102, + 0x010107, 0x010133, + 0x010137, 0x01018a, + 0x010190, 0x01019b, + 0x0101d0, 0x0101fd, + 0x010280, 0x01029c, + 0x0102a0, 0x0102d0, + 0x010300, 0x010323, + 0x010330, 0x01034a, + 0x010380, 0x0103c3, + 0x0103c8, 0x0103d5, + 0x010400, 0x01049d, + 0x0104a0, 0x0104a9, + 0x010800, 0x010805, + 0x010808, 0x010838, + 0x01083c, 0x01083c, + 0x01083f, 0x01085f, + 0x010900, 0x01091b, + 0x01091f, 0x010939, + 0x01093f, 0x01093f, + 0x010a00, 0x010a06, + 0x010a0c, 0x010a33, + 0x010a38, 0x010a3a, + 0x010a3f, 0x010a47, + 0x010a50, 0x010a58, + 0x010a60, 0x010a7f, + 0x010b00, 0x010b35, + 0x010b39, 0x010b55, + 0x010b58, 0x010b72, + 0x010b78, 0x010b7f, + 0x010c00, 0x010c48, + 0x010e60, 0x010e7e, + 0x011000, 0x01104d, + 0x011052, 0x01106f, + 0x011080, 0x0110c1, + 0x012000, 0x01236e, + 0x012400, 0x012462, + 0x012470, 0x012473, + 0x013000, 0x01342e, + 0x016800, 0x016a38, + 0x01b000, 0x01b001, + 0x01d000, 0x01d0f5, + 0x01d100, 0x01d126, + 0x01d129, 0x01d172, + 0x01d17b, 0x01d1dd, + 0x01d200, 0x01d245, + 0x01d300, 0x01d356, + 0x01d360, 0x01d371, + 0x01d400, 0x01d49f, + 0x01d4a2, 0x01d4a2, + 0x01d4a5, 0x01d4a6, + 0x01d4a9, 0x01d50a, + 0x01d50d, 0x01d546, + 0x01d54a, 0x01d6a5, + 0x01d6a8, 0x01d7cb, + 0x01d7ce, 0x01d7ff, + 0x01f000, 0x01f02b, + 0x01f030, 0x01f093, + 0x01f0a0, 0x01f0ae, + 0x01f0b1, 0x01f0be, + 0x01f0c1, 0x01f0df, + 0x01f100, 0x01f10a, + 0x01f110, 0x01f169, + 0x01f170, 0x01f19a, + 0x01f1e6, 0x01f202, + 0x01f210, 0x01f23a, + 0x01f240, 0x01f248, + 0x01f250, 0x01f251, + 0x01f300, 0x01f320, + 0x01f330, 0x01f37c, + 0x01f380, 0x01f393, + 0x01f3a0, 0x01f3ca, + 0x01f3e0, 0x01f3f0, + 0x01f400, 0x01f4fc, + 0x01f500, 0x01f53d, + 0x01f550, 0x01f567, + 0x01f5fb, 0x01f625, + 0x01f628, 0x01f62d, + 0x01f630, 0x01f640, + 0x01f645, 0x01f64f, + 0x01f680, 0x01f6c5, + 0x01f700, 0x01f773, + 0x020000, 0x02a6d6, + 0x02a700, 0x02b734, + 0x02b740, 0x02b81d, + 0x02f800, 0x02fa1d, + 0x0e0100, 0x0e01ef, +} + +var isNotPrint32 = []uint16{ // add 0x10000 to each entry + 0x000c, + 0x0027, + 0x003b, + 0x003e, + 0x031f, + 0x039e, + 0x0809, + 0x0836, + 0x0856, + 0x0a04, + 0x0a14, + 0x0a18, + 0x10bd, + 0xd455, + 0xd49d, + 0xd4ad, + 0xd4ba, + 0xd4bc, + 0xd4c4, + 0xd506, + 0xd515, + 0xd51d, + 0xd53a, + 0xd53f, + 0xd545, + 0xd551, + 0xf0d0, + 0xf12f, + 0xf336, + 0xf3c5, + 0xf43f, + 0xf441, + 0xf4f8, + 0xf600, + 0xf611, + 0xf615, + 0xf617, + 0xf619, + 0xf61b, + 0xf61f, + 0xf62c, + 0xf634, +} diff --git a/src/pkg/strconv/makeisprint.go b/src/pkg/strconv/makeisprint.go new file mode 100644 index 000000000..8a6699bdb --- /dev/null +++ b/src/pkg/strconv/makeisprint.go @@ -0,0 +1,162 @@ +// Copyright 2012 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. + +// +build ignore + +// makeisprint generates the tables for strconv's compact isPrint. +package main + +import ( + "fmt" + "os" + "unicode" +) + +var ( + range16 []uint16 + except16 []uint16 + range32 []uint32 + except32 []uint32 +) + +// bsearch16 returns the smallest i such that a[i] >= x. +// If there is no such i, bsearch16 returns len(a). +func bsearch16(a []uint16, x uint16) int { + i, j := 0, len(a) + for i < j { + h := i + (j-i)/2 + if a[h] < x { + i = h + 1 + } else { + j = h + } + } + return i +} + +// bsearch32 returns the smallest i such that a[i] >= x. +// If there is no such i, bsearch32 returns len(a). +func bsearch32(a []uint32, x uint32) int { + i, j := 0, len(a) + for i < j { + h := i + (j-i)/2 + if a[h] < x { + i = h + 1 + } else { + j = h + } + } + return i +} + +func isPrint(r rune) bool { + // Same algorithm, either on uint16 or uint32 value. + // First, find first i such that rang[i] >= x. + // This is the index of either the start or end of a pair that might span x. + // The start is even (rang[i&^1]) and the end is odd (rang[i|1]). + // If we find x in a range, make sure x is not in exception list. + + if 0 <= r && r < 1<<16 { + rr, rang, except := uint16(r), range16, except16 + i := bsearch16(rang, rr) + if i >= len(rang) || rr < rang[i&^1] || rang[i|1] < rr { + return false + } + j := bsearch16(except, rr) + return j >= len(except) || except[j] != rr + } + + rr, rang, except := uint32(r), range32, except32 + i := bsearch32(rang, rr) + if i >= len(rang) || rr < rang[i&^1] || rang[i|1] < rr { + return false + } + j := bsearch32(except, rr) + return j >= len(except) || except[j] != rr +} + +func scan(min, max rune) (rang, except []uint32) { + lo := rune(-1) + for i := min; ; i++ { + if (i > max || !unicode.IsPrint(i)) && lo >= 0 { + // End range, but avoid flip flop. + if i+1 <= max && unicode.IsPrint(i+1) { + except = append(except, uint32(i)) + continue + } + rang = append(rang, uint32(lo), uint32(i-1)) + lo = -1 + } + if i > max { + break + } + if lo < 0 && unicode.IsPrint(i) { + lo = i + } + } + return +} + +func to16(x []uint32) []uint16 { + var y []uint16 + for _, v := range x { + if uint32(uint16(v)) != v { + panic("bad 32->16 conversion") + } + y = append(y, uint16(v)) + } + return y +} + +func main() { + rang, except := scan(0, 0xFFFF) + range16 = to16(rang) + except16 = to16(except) + range32, except32 = scan(0x10000, unicode.MaxRune) + + for i := rune(0); i <= unicode.MaxRune; i++ { + if isPrint(i) != unicode.IsPrint(i) { + fmt.Fprintf(os.Stderr, "%U: isPrint=%v, want %v\n", i, isPrint(i), unicode.IsPrint(i)) + return + } + } + + fmt.Printf("// DO NOT EDIT. GENERATED BY\n") + fmt.Printf("// go run makeisprint.go >x && mv x isprint.go\n\n") + fmt.Printf("package strconv\n\n") + + fmt.Printf("// (%d+%d+%d)*2 + (%d)*4 = %d bytes\n\n", + len(range16), len(except16), len(except32), + len(range32), + (len(range16)+len(except16)+len(except32))*2+ + (len(range32))*4) + + fmt.Printf("var isPrint16 = []uint16{\n") + for i := 0; i < len(range16); i += 2 { + fmt.Printf("\t%#04x, %#04x,\n", range16[i], range16[i+1]) + } + fmt.Printf("}\n\n") + + fmt.Printf("var isNotPrint16 = []uint16{\n") + for _, r := range except16 { + fmt.Printf("\t%#04x,\n", r) + } + fmt.Printf("}\n\n") + + fmt.Printf("var isPrint32 = []uint32{\n") + for i := 0; i < len(range32); i += 2 { + fmt.Printf("\t%#06x, %#06x,\n", range32[i], range32[i+1]) + } + fmt.Printf("}\n\n") + + fmt.Printf("var isNotPrint32 = []uint16{ // add 0x10000 to each entry\n") + for _, r := range except32 { + if r >= 0x20000 { + fmt.Fprintf(os.Stderr, "%U too big for isNotPrint32\n", r) + return + } + fmt.Printf("\t%#04x,\n", r-0x10000) + } + fmt.Printf("}\n") +} diff --git a/src/pkg/strconv/quote.go b/src/pkg/strconv/quote.go index 61dbcae70..8a73f9d3b 100644 --- a/src/pkg/strconv/quote.go +++ b/src/pkg/strconv/quote.go @@ -5,17 +5,15 @@ package strconv import ( - "bytes" - "strings" - "unicode" "unicode/utf8" ) const lowerhex = "0123456789abcdef" func quoteWith(s string, quote byte, ASCIIonly bool) string { - var buf bytes.Buffer - buf.WriteByte(quote) + var runeTmp [utf8.UTFMax]byte + buf := make([]byte, 0, 3*len(s)/2) // Try to avoid more allocations. + buf = append(buf, quote) for width := 0; len(s) > 0; s = s[width:] { r := rune(s[0]) width = 1 @@ -23,71 +21,72 @@ func quoteWith(s string, quote byte, ASCIIonly bool) string { r, width = utf8.DecodeRuneInString(s) } if width == 1 && r == utf8.RuneError { - buf.WriteString(`\x`) - buf.WriteByte(lowerhex[s[0]>>4]) - buf.WriteByte(lowerhex[s[0]&0xF]) + buf = append(buf, `\x`...) + buf = append(buf, lowerhex[s[0]>>4]) + buf = append(buf, lowerhex[s[0]&0xF]) continue } if r == rune(quote) || r == '\\' { // always backslashed - buf.WriteByte('\\') - buf.WriteByte(byte(r)) + buf = append(buf, '\\') + buf = append(buf, byte(r)) continue } if ASCIIonly { - if r <= unicode.MaxASCII && unicode.IsPrint(r) { - buf.WriteRune(r) + if r < utf8.RuneSelf && IsPrint(r) { + buf = append(buf, byte(r)) continue } - } else if unicode.IsPrint(r) { - buf.WriteRune(r) + } else if IsPrint(r) { + n := utf8.EncodeRune(runeTmp[:], r) + buf = append(buf, runeTmp[:n]...) continue } switch r { case '\a': - buf.WriteString(`\a`) + buf = append(buf, `\a`...) case '\b': - buf.WriteString(`\b`) + buf = append(buf, `\b`...) case '\f': - buf.WriteString(`\f`) + buf = append(buf, `\f`...) case '\n': - buf.WriteString(`\n`) + buf = append(buf, `\n`...) case '\r': - buf.WriteString(`\r`) + buf = append(buf, `\r`...) case '\t': - buf.WriteString(`\t`) + buf = append(buf, `\t`...) case '\v': - buf.WriteString(`\v`) + buf = append(buf, `\v`...) default: switch { case r < ' ': - buf.WriteString(`\x`) - buf.WriteByte(lowerhex[s[0]>>4]) - buf.WriteByte(lowerhex[s[0]&0xF]) - case r > unicode.MaxRune: + buf = append(buf, `\x`...) + buf = append(buf, lowerhex[s[0]>>4]) + buf = append(buf, lowerhex[s[0]&0xF]) + case r > utf8.MaxRune: r = 0xFFFD fallthrough case r < 0x10000: - buf.WriteString(`\u`) + buf = append(buf, `\u`...) for s := 12; s >= 0; s -= 4 { - buf.WriteByte(lowerhex[r>>uint(s)&0xF]) + buf = append(buf, lowerhex[r>>uint(s)&0xF]) } default: - buf.WriteString(`\U`) + buf = append(buf, `\U`...) for s := 28; s >= 0; s -= 4 { - buf.WriteByte(lowerhex[r>>uint(s)&0xF]) + buf = append(buf, lowerhex[r>>uint(s)&0xF]) } } } } - buf.WriteByte(quote) - return buf.String() + buf = append(buf, quote) + return string(buf) } // Quote returns a double-quoted Go string literal representing s. The // returned string uses Go escape sequences (\t, \n, \xFF, \u0100) for // control characters and non-printable characters as defined by -// unicode.IsPrint. +// IsPrint. func Quote(s string) string { return quoteWith(s, '"', false) } @@ -100,8 +99,7 @@ func AppendQuote(dst []byte, s string) []byte { // QuoteToASCII returns a double-quoted Go string literal representing s. // The returned string uses Go escape sequences (\t, \n, \xFF, \u0100) for -// non-ASCII characters and non-printable characters as defined by -// unicode.IsPrint. +// non-ASCII characters and non-printable characters as defined by IsPrint. func QuoteToASCII(s string) string { return quoteWith(s, '"', true) } @@ -114,8 +112,7 @@ func AppendQuoteToASCII(dst []byte, s string) []byte { // QuoteRune returns a single-quoted Go character literal representing the // rune. The returned string uses Go escape sequences (\t, \n, \xFF, \u0100) -// for control characters and non-printable characters as defined by -// unicode.IsPrint. +// for control characters and non-printable characters as defined by IsPrint. func QuoteRune(r rune) string { // TODO: avoid the allocation here. return quoteWith(string(r), '\'', false) @@ -130,7 +127,7 @@ func AppendQuoteRune(dst []byte, r rune) []byte { // QuoteRuneToASCII returns a single-quoted Go character literal representing // the rune. The returned string uses Go escape sequences (\t, \n, \xFF, // \u0100) for non-ASCII characters and non-printable characters as defined -// by unicode.IsPrint. +// by IsPrint. func QuoteRuneToASCII(r rune) string { // TODO: avoid the allocation here. return quoteWith(string(r), '\'', true) @@ -245,7 +242,7 @@ func UnquoteChar(s string, quote byte) (value rune, multibyte bool, tail string, value = v break } - if v > unicode.MaxRune { + if v > utf8.MaxRune { err = ErrSyntax return } @@ -304,7 +301,7 @@ func Unquote(s string) (t string, err error) { s = s[1 : n-1] if quote == '`' { - if strings.Contains(s, "`") { + if contains(s, '`') { return "", ErrSyntax } return s, nil @@ -312,12 +309,12 @@ func Unquote(s string) (t string, err error) { if quote != '"' && quote != '\'' { return "", ErrSyntax } - if strings.Index(s, "\n") >= 0 { + if contains(s, '\n') { return "", ErrSyntax } // Is it trivial? Avoid allocation. - if strings.Index(s, `\`) < 0 && strings.IndexRune(s, rune(quote)) < 0 { + if !contains(s, '\\') && !contains(s, quote) { switch quote { case '"': return s, nil @@ -329,7 +326,8 @@ func Unquote(s string) (t string, err error) { } } - var buf bytes.Buffer + var runeTmp [utf8.UTFMax]byte + buf := make([]byte, 0, 3*len(s)/2) // Try to avoid more allocations. for len(s) > 0 { c, multibyte, ss, err := UnquoteChar(s, quote) if err != nil { @@ -337,14 +335,107 @@ func Unquote(s string) (t string, err error) { } s = ss if c < utf8.RuneSelf || !multibyte { - buf.WriteByte(byte(c)) + buf = append(buf, byte(c)) } else { - buf.WriteString(string(c)) + n := utf8.EncodeRune(runeTmp[:], c) + buf = append(buf, runeTmp[:n]...) } if quote == '\'' && len(s) != 0 { // single-quoted must be single character return "", ErrSyntax } } - return buf.String(), nil + return string(buf), nil +} + +// contains reports whether the string contains the byte c. +func contains(s string, c byte) bool { + for i := 0; i < len(s); i++ { + if s[i] == c { + return true + } + } + return false +} + +// bsearch16 returns the smallest i such that a[i] >= x. +// If there is no such i, bsearch16 returns len(a). +func bsearch16(a []uint16, x uint16) int { + i, j := 0, len(a) + for i < j { + h := i + (j-i)/2 + if a[h] < x { + i = h + 1 + } else { + j = h + } + } + return i +} + +// bsearch32 returns the smallest i such that a[i] >= x. +// If there is no such i, bsearch32 returns len(a). +func bsearch32(a []uint32, x uint32) int { + i, j := 0, len(a) + for i < j { + h := i + (j-i)/2 + if a[h] < x { + i = h + 1 + } else { + j = h + } + } + return i +} + +// TODO: IsPrint is a local implementation of unicode.IsPrint, verified by the tests +// to give the same answer. It allows this package not to depend on unicode, +// and therefore not pull in all the Unicode tables. If the linker were better +// at tossing unused tables, we could get rid of this implementation. +// That would be nice. + +// IsPrint reports whether the rune is defined as printable by Go, with +// the same definition as unicode.IsPrint: letters, numbers, punctuation, +// symbols and ASCII space. +func IsPrint(r rune) bool { + // Fast check for Latin-1 + if r <= 0xFF { + if 0x20 <= r && r <= 0x7E { + // All the ASCII is printable from space through DEL-1. + return true + } + if 0xA1 <= r && r <= 0xFF { + // Similarly for ¡ through ÿ... + return r != 0xAD // ...except for the bizarre soft hyphen. + } + return false + } + + // Same algorithm, either on uint16 or uint32 value. + // First, find first i such that isPrint[i] >= x. + // This is the index of either the start or end of a pair that might span x. + // The start is even (isPrint[i&^1]) and the end is odd (isPrint[i|1]). + // If we find x in a range, make sure x is not in isNotPrint list. + + if 0 <= r && r < 1<<16 { + rr, isPrint, isNotPrint := uint16(r), isPrint16, isNotPrint16 + i := bsearch16(isPrint, rr) + if i >= len(isPrint) || rr < isPrint[i&^1] || isPrint[i|1] < rr { + return false + } + j := bsearch16(isNotPrint, rr) + return j >= len(isNotPrint) || isNotPrint[j] != rr + } + + rr, isPrint, isNotPrint := uint32(r), isPrint32, isNotPrint32 + i := bsearch32(isPrint, rr) + if i >= len(isPrint) || rr < isPrint[i&^1] || isPrint[i|1] < rr { + return false + } + if r >= 0x20000 { + return true + } + r -= 0x10000 + j := bsearch16(isNotPrint, uint16(r)) + return j >= len(isNotPrint) || isNotPrint[j] != uint16(r) } diff --git a/src/pkg/strconv/quote_test.go b/src/pkg/strconv/quote_test.go index 3f544c43c..61d9bf9a5 100644 --- a/src/pkg/strconv/quote_test.go +++ b/src/pkg/strconv/quote_test.go @@ -7,8 +7,23 @@ package strconv_test import ( . "strconv" "testing" + "unicode" ) +// Verify that our isPrint agrees with unicode.IsPrint +func TestIsPrint(t *testing.T) { + n := 0 + for r := rune(0); r <= unicode.MaxRune; r++ { + if IsPrint(r) != unicode.IsPrint(r) { + t.Errorf("IsPrint(%U)=%t incorrect", r, IsPrint(r)) + n++ + if n > 10 { + return + } + } + } +} + type quoteTest struct { in string out string diff --git a/src/pkg/strings/example_test.go b/src/pkg/strings/example_test.go index daeb85ef6..114171072 100644 --- a/src/pkg/strings/example_test.go +++ b/src/pkg/strings/example_test.go @@ -60,7 +60,7 @@ func ExampleIndex() { // -1 } -func ExampleRune() { +func ExampleIndexRune() { fmt.Println(strings.IndexRune("chicken", 'k')) fmt.Println(strings.IndexRune("chicken", 'd')) // Output: diff --git a/src/pkg/sync/atomic/atomic_test.go b/src/pkg/sync/atomic/atomic_test.go index a06c85c3a..f60d997ce 100644 --- a/src/pkg/sync/atomic/atomic_test.go +++ b/src/pkg/sync/atomic/atomic_test.go @@ -1012,6 +1012,10 @@ func TestHammerStoreLoad(t *testing.T) { } func TestStoreLoadSeqCst32(t *testing.T) { + if runtime.NumCPU() == 1 { + t.Logf("Skipping test on %v processor machine", runtime.NumCPU()) + return + } defer runtime.GOMAXPROCS(runtime.GOMAXPROCS(4)) N := int32(1e3) if testing.Short() { @@ -1049,6 +1053,10 @@ func TestStoreLoadSeqCst32(t *testing.T) { } func TestStoreLoadSeqCst64(t *testing.T) { + if runtime.NumCPU() == 1 { + t.Logf("Skipping test on %v processor machine", runtime.NumCPU()) + return + } if test64err != nil { t.Logf("Skipping 64-bit tests: %v", test64err) return @@ -1090,6 +1098,10 @@ func TestStoreLoadSeqCst64(t *testing.T) { } func TestStoreLoadRelAcq32(t *testing.T) { + if runtime.NumCPU() == 1 { + t.Logf("Skipping test on %v processor machine", runtime.NumCPU()) + return + } defer runtime.GOMAXPROCS(runtime.GOMAXPROCS(4)) N := int32(1e3) if testing.Short() { @@ -1132,6 +1144,10 @@ func TestStoreLoadRelAcq32(t *testing.T) { } func TestStoreLoadRelAcq64(t *testing.T) { + if runtime.NumCPU() == 1 { + t.Logf("Skipping test on %v processor machine", runtime.NumCPU()) + return + } if test64err != nil { t.Logf("Skipping 64-bit tests: %v", test64err) return diff --git a/src/pkg/syscall/mkall.sh b/src/pkg/syscall/mkall.sh index 853c3f7a0..9e2d98f0d 100755 --- a/src/pkg/syscall/mkall.sh +++ b/src/pkg/syscall/mkall.sh @@ -144,8 +144,8 @@ linux_amd64) ;; linux_arm) mkerrors="$mkerrors" - mksyscall="./mksyscall.pl -b32" - mksysnum="./mksysnum_linux.pl /usr/include/asm/unistd.h" + mksyscall="./mksyscall.pl -l32 -arm" + mksysnum="curl -s 'http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob_plain;f=arch/arm/include/asm/unistd.h;hb=HEAD' | ./mksysnum_linux.pl" mktypes="GOARCH=$GOARCH go tool cgo -godefs" ;; netbsd_386) diff --git a/src/pkg/syscall/mksyscall.pl b/src/pkg/syscall/mksyscall.pl index 963599c3a..09949688e 100755 --- a/src/pkg/syscall/mksyscall.pl +++ b/src/pkg/syscall/mksyscall.pl @@ -27,6 +27,7 @@ my $_32bit = ""; my $plan9 = 0; my $openbsd = 0; my $netbsd = 0; +my $arm = 0; # 64-bit value should use (even, odd)-pair if($ARGV[0] eq "-b32") { $_32bit = "big-endian"; @@ -47,6 +48,10 @@ if($ARGV[0] eq "-netbsd") { $netbsd = 1; shift; } +if($ARGV[0] eq "-arm") { + $arm = 1; + shift; +} if($ARGV[0] =~ /^-/) { print STDERR "usage: mksyscall.pl [-b32 | -l32] [file ...]\n"; @@ -135,6 +140,11 @@ while(<>) { push @args, "uintptr($name)"; } } elsif($type eq "int64" && $_32bit ne "") { + if(@args % 2 && $arm) { + # arm abi specifies 64-bit argument uses + # (even, odd) pair + push @args, "0" + } if($_32bit eq "big-endian") { push @args, "uintptr($name>>32)", "uintptr($name)"; } else { diff --git a/src/pkg/syscall/syscall_linux.go b/src/pkg/syscall/syscall_linux.go index 59e167ce5..89fb68192 100644 --- a/src/pkg/syscall/syscall_linux.go +++ b/src/pkg/syscall/syscall_linux.go @@ -627,7 +627,7 @@ func ptracePeek(req int, pid int, addr uintptr, out []byte) (count int, err erro // Remainder. for len(out) > 0 { - // We use an internal buffer to gaurantee alignment. + // We use an internal buffer to guarantee alignment. // It's not documented if this is necessary, but we're paranoid. err = ptrace(req, pid, addr+uintptr(n), uintptr(unsafe.Pointer(&buf[0]))) if err != nil { diff --git a/src/pkg/syscall/syscall_linux_arm.go b/src/pkg/syscall/syscall_linux_arm.go index 744e035f7..48b5d31d7 100644 --- a/src/pkg/syscall/syscall_linux_arm.go +++ b/src/pkg/syscall/syscall_linux_arm.go @@ -4,8 +4,6 @@ package syscall -import "unsafe" - func Getpagesize() int { return 4096 } func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } @@ -23,52 +21,6 @@ func NsecToTimeval(nsec int64) (tv Timeval) { return } -// Pread and Pwrite are special: they insert padding before the int64. - -func Pread(fd int, p []byte, offset int64) (n int, err error) { - var _p0 unsafe.Pointer - if len(p) > 0 { - _p0 = unsafe.Pointer(&p[0]) - } - r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) - n = int(r0) - if e1 != 0 { - err = e1 - } - return -} - -func Pwrite(fd int, p []byte, offset int64) (n int, err error) { - var _p0 unsafe.Pointer - if len(p) > 0 { - _p0 = unsafe.Pointer(&p[0]) - } - r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) - n = int(r0) - if e1 != 0 { - err = e1 - } - return -} - -func Ftruncate(fd int, length int64) (err error) { - // ARM EABI requires 64-bit arguments should be put in a pair - // of registers from an even register number. - _, _, e1 := Syscall6(SYS_FTRUNCATE64, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0) - if e1 != 0 { - err = e1 - } - return -} - -func Truncate(path string, length int64) (err error) { - _, _, e1 := Syscall6(SYS_TRUNCATE64, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, uintptr(length), uintptr(length>>32), 0, 0) - if e1 != 0 { - err = e1 - } - return -} - // Seek is defined in assembly. func Seek(fd int, offset int64, whence int) (newoffset int64, err error) @@ -118,6 +70,11 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) //sysnb Gettimeofday(tv *Timeval) (err error) //sysnb Time(t *Time_t) (tt Time_t, err error) +//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Truncate(path string, length int64) (err error) = SYS_TRUNCATE64 +//sys Ftruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64 + //sys mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { diff --git a/src/pkg/syscall/syscall_windows.go b/src/pkg/syscall/syscall_windows.go index 7c82932d0..b0c24cca6 100644 --- a/src/pkg/syscall/syscall_windows.go +++ b/src/pkg/syscall/syscall_windows.go @@ -174,6 +174,7 @@ func NewCallback(fn interface{}) uintptr //sys SetHandleInformation(handle Handle, mask uint32, flags uint32) (err error) //sys FlushFileBuffers(handle Handle) (err error) //sys GetFullPathName(path *uint16, buflen uint32, buf *uint16, fname **uint16) (n uint32, err error) = kernel32.GetFullPathNameW +//sys GetLongPathName(path *uint16, buf *uint16, buflen uint32) (n uint32, err error) = kernel32.GetLongPathNameW //sys CreateFileMapping(fhandle Handle, sa *SecurityAttributes, prot uint32, maxSizeHigh uint32, maxSizeLow uint32, name *uint16) (handle Handle, err error) = kernel32.CreateFileMappingW //sys MapViewOfFile(handle Handle, access uint32, offsetHigh uint32, offsetLow uint32, length uintptr) (addr uintptr, err error) //sys UnmapViewOfFile(addr uintptr) (err error) @@ -183,8 +184,15 @@ func NewCallback(fn interface{}) uintptr //sys TransmitFile(s Handle, handle Handle, bytesToWrite uint32, bytsPerSend uint32, overlapped *Overlapped, transmitFileBuf *TransmitFileBuffers, flags uint32) (err error) = mswsock.TransmitFile //sys ReadDirectoryChanges(handle Handle, buf *byte, buflen uint32, watchSubTree bool, mask uint32, retlen *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) = kernel32.ReadDirectoryChangesW //sys CertOpenSystemStore(hprov Handle, name *uint16) (store Handle, err error) = crypt32.CertOpenSystemStoreW +//sys CertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) [failretval==InvalidHandle] = crypt32.CertOpenStore //sys CertEnumCertificatesInStore(store Handle, prevContext *CertContext) (context *CertContext, err error) [failretval==nil] = crypt32.CertEnumCertificatesInStore +//sys CertAddCertificateContextToStore(store Handle, certContext *CertContext, addDisposition uint32, storeContext **CertContext) (err error) = crypt32.CertAddCertificateContextToStore //sys CertCloseStore(store Handle, flags uint32) (err error) = crypt32.CertCloseStore +//sys CertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, additionalStore Handle, para *CertChainPara, flags uint32, reserved uintptr, chainCtx **CertChainContext) (err error) = crypt32.CertGetCertificateChain +//sys CertFreeCertificateChain(ctx *CertChainContext) = crypt32.CertFreeCertificateChain +//sys CertCreateCertificateContext(certEncodingType uint32, certEncoded *byte, encodedLen uint32) (context *CertContext, err error) [failretval==nil] = crypt32.CertCreateCertificateContext +//sys CertFreeCertificateContext(ctx *CertContext) (err error) = crypt32.CertFreeCertificateContext +//sys CertVerifyCertificateChainPolicy(policyOID uintptr, chain *CertChainContext, para *CertChainPolicyPara, status *CertChainPolicyStatus) (err error) = crypt32.CertVerifyCertificateChainPolicy //sys RegOpenKeyEx(key Handle, subkey *uint16, options uint32, desiredAccess uint32, result *Handle) (regerrno error) = advapi32.RegOpenKeyExW //sys RegCloseKey(key Handle) (regerrno error) = advapi32.RegCloseKey //sys RegQueryInfoKey(key Handle, class *uint16, classLen *uint32, reserved *uint32, subkeysLen *uint32, maxSubkeyLen *uint32, maxClassLen *uint32, valuesLen *uint32, maxValueNameLen *uint32, maxValueLen *uint32, saLen *uint32, lastWriteTime *Filetime) (regerrno error) = advapi32.RegQueryInfoKeyW diff --git a/src/pkg/syscall/zerrors_linux_arm.go b/src/pkg/syscall/zerrors_linux_arm.go index 9f49807b8..9b99cf83f 100644 --- a/src/pkg/syscall/zerrors_linux_arm.go +++ b/src/pkg/syscall/zerrors_linux_arm.go @@ -189,6 +189,7 @@ const ( ETH_P_ATMMPOA = 0x884c ETH_P_AX25 = 0x2 ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 ETH_P_CAN = 0xc ETH_P_CONTROL = 0x16 ETH_P_CUST = 0x6006 @@ -212,6 +213,7 @@ const ( ETH_P_IPX = 0x8137 ETH_P_IRDA = 0x17 ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c ETH_P_LOCALTALK = 0x9 ETH_P_LOOP = 0x60 ETH_P_MOBITEX = 0x15 @@ -249,6 +251,7 @@ const ( F_GETLK64 = 0xc F_GETOWN = 0x9 F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 F_GETSIG = 0xb F_LOCK = 0x1 F_NOTIFY = 0x402 @@ -263,6 +266,7 @@ const ( F_SETLKW64 = 0xe F_SETOWN = 0x8 F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 F_SETSIG = 0xa F_SHLCK = 0x8 F_TEST = 0x3 @@ -325,6 +329,7 @@ const ( IN_DELETE = 0x200 IN_DELETE_SELF = 0x400 IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 IN_IGNORED = 0x8000 IN_ISDIR = 0x40000000 IN_LOOPBACKNET = 0x7f @@ -426,18 +431,24 @@ const ( IP_DF = 0x4000 IP_DROP_MEMBERSHIP = 0x24 IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 IP_MAXPACKET = 0xffff IP_MAX_MEMBERSHIPS = 0x14 IP_MF = 0x2000 + IP_MINTTL = 0x15 IP_MSFILTER = 0x29 IP_MSS = 0x240 + IP_MTU = 0xe IP_MTU_DISCOVER = 0xa IP_MULTICAST_IF = 0x20 IP_MULTICAST_LOOP = 0x22 IP_MULTICAST_TTL = 0x21 IP_OFFMASK = 0x1fff IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 IP_PKTINFO = 0x8 IP_PKTOPTIONS = 0x9 IP_PMTUDISC = 0xa @@ -447,6 +458,7 @@ const ( IP_PMTUDISC_WANT = 0x1 IP_RECVERR = 0xb IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 IP_RECVRETOPTS = 0x7 IP_RECVTOS = 0xd IP_RECVTTL = 0xc @@ -454,8 +466,10 @@ const ( IP_RF = 0x8000 IP_ROUTER_ALERT = 0x5 IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 IP_TTL = 0x2 IP_UNBLOCK_SOURCE = 0x25 + IP_XFRM_POLICY = 0x11 LINUX_REBOOT_CMD_CAD_OFF = 0x0 LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef LINUX_REBOOT_CMD_HALT = 0xcdef0123 @@ -520,22 +534,38 @@ const ( MSG_TRUNC = 0x20 MSG_TRYHARD = 0x4 MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MS_ACTIVE = 0x40000000 MS_ASYNC = 0x1 MS_BIND = 0x1000 + MS_DIRSYNC = 0x80 MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 MS_MANDLOCK = 0x40 MS_MGC_MSK = 0xffff0000 MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 MS_NOATIME = 0x400 MS_NODEV = 0x4 MS_NODIRATIME = 0x800 MS_NOEXEC = 0x8 MS_NOSUID = 0x2 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 MS_REMOUNT = 0x20 - MS_RMT_MASK = 0xc51 + MS_RMT_MASK = 0x800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 MS_SYNC = 0x4 MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 NAME_MAX = 0xff NETLINK_ADD_MEMBERSHIP = 0x1 NETLINK_AUDIT = 0x9 @@ -555,6 +585,7 @@ const ( NETLINK_NFLOG = 0x5 NETLINK_NO_ENOBUFS = 0x5 NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 NETLINK_ROUTE = 0x0 NETLINK_SCSITRANSPORT = 0x12 NETLINK_SELINUX = 0x7 @@ -629,6 +660,7 @@ const ( PROT_WRITE = 0x2 PR_CAPBSET_DROP = 0x18 PR_CAPBSET_READ = 0x17 + PR_CLEAR_SECCOMP_FILTER = 0x25 PR_ENDIAN_BIG = 0x0 PR_ENDIAN_LITTLE = 0x1 PR_ENDIAN_PPC_LITTLE = 0x2 @@ -652,6 +684,7 @@ const ( PR_GET_NAME = 0x10 PR_GET_PDEATHSIG = 0x2 PR_GET_SECCOMP = 0x15 + PR_GET_SECCOMP_FILTER = 0x23 PR_GET_SECUREBITS = 0x1b PR_GET_TIMERSLACK = 0x1e PR_GET_TIMING = 0xd @@ -664,6 +697,8 @@ const ( PR_MCE_KILL_GET = 0x22 PR_MCE_KILL_LATE = 0x0 PR_MCE_KILL_SET = 0x1 + PR_SECCOMP_FILTER_EVENT = 0x1 + PR_SECCOMP_FILTER_SYSCALL = 0x0 PR_SET_DUMPABLE = 0x4 PR_SET_ENDIAN = 0x14 PR_SET_FPEMU = 0xa @@ -671,7 +706,9 @@ const ( PR_SET_KEEPCAPS = 0x8 PR_SET_NAME = 0xf PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 PR_SET_SECCOMP = 0x16 + PR_SET_SECCOMP_FILTER = 0x24 PR_SET_SECUREBITS = 0x1c PR_SET_TIMERSLACK = 0x1d PR_SET_TIMING = 0xe @@ -697,7 +734,9 @@ const ( PTRACE_GETCRUNCHREGS = 0x19 PTRACE_GETEVENTMSG = 0x4201 PTRACE_GETFPREGS = 0xe + PTRACE_GETHBPREGS = 0x1d PTRACE_GETREGS = 0xc + PTRACE_GETREGSET = 0x4204 PTRACE_GETSIGINFO = 0x4202 PTRACE_GETVFPREGS = 0x1b PTRACE_GETWMMXREGS = 0x12 @@ -720,8 +759,10 @@ const ( PTRACE_POKEUSR = 0x6 PTRACE_SETCRUNCHREGS = 0x1a PTRACE_SETFPREGS = 0xf + PTRACE_SETHBPREGS = 0x1e PTRACE_SETOPTIONS = 0x4200 PTRACE_SETREGS = 0xd + PTRACE_SETREGSET = 0x4205 PTRACE_SETSIGINFO = 0x4203 PTRACE_SETVFPREGS = 0x1c PTRACE_SETWMMXREGS = 0x13 @@ -749,8 +790,9 @@ const ( RTAX_FEATURE_TIMESTAMP = 0x4 RTAX_HOPLIMIT = 0xa RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe RTAX_LOCK = 0x1 - RTAX_MAX = 0xd + RTAX_MAX = 0xe RTAX_MTU = 0x2 RTAX_REORDERING = 0x9 RTAX_RTO_MIN = 0xd @@ -760,7 +802,7 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0xf + RTA_MAX = 0x10 RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 @@ -987,6 +1029,7 @@ const ( SO_RCVLOWAT = 0x12 SO_RCVTIMEO = 0x14 SO_REUSEADDR = 0x2 + SO_RXQ_OVFL = 0x28 SO_SECURITY_AUTHENTICATION = 0x16 SO_SECURITY_ENCRYPTION_NETWORK = 0x18 SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 @@ -998,7 +1041,6 @@ const ( SO_TIMESTAMPING = 0x25 SO_TIMESTAMPNS = 0x23 SO_TYPE = 0x3 - S_APPEND = 0x100 S_BLKSIZE = 0x200 S_IEXEC = 0x40 S_IFBLK = 0x6000 @@ -1009,7 +1051,6 @@ const ( S_IFMT = 0xf000 S_IFREG = 0x8000 S_IFSOCK = 0xc000 - S_IMMUTABLE = 0x200 S_IREAD = 0x100 S_IRGRP = 0x20 S_IROTH = 0x4 @@ -1027,7 +1068,6 @@ const ( S_IXGRP = 0x8 S_IXOTH = 0x1 S_IXUSR = 0x40 - S_WRITE = 0x80 TCP_CONGESTION = 0xd TCP_CORK = 0x3 TCP_DEFER_ACCEPT = 0x9 @@ -1049,11 +1089,13 @@ const ( TIOCCBRK = 0x5428 TIOCCONS = 0x541d TIOCEXCL = 0x540c + TIOCGDEV = 0x80045432 TIOCGETD = 0x5424 TIOCGICOUNT = 0x545d TIOCGLCKTRMIOS = 0x5456 TIOCGPGRP = 0x540f TIOCGPTN = 0x80045430 + TIOCGRS485 = 0x542e TIOCGSERIAL = 0x541e TIOCGSID = 0x5429 TIOCGSOFTCAR = 0x5419 @@ -1084,6 +1126,7 @@ const ( TIOCPKT_DOSTOP = 0x20 TIOCPKT_FLUSHREAD = 0x1 TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 TIOCPKT_NOSTOP = 0x10 TIOCPKT_START = 0x8 TIOCPKT_STOP = 0x4 @@ -1098,16 +1141,22 @@ const ( TIOCSERSWILD = 0x5455 TIOCSER_TEMT = 0x1 TIOCSETD = 0x5423 + TIOCSIG = 0x40045436 TIOCSLCKTRMIOS = 0x5457 TIOCSPGRP = 0x5410 TIOCSPTLCK = 0x40045431 + TIOCSRS485 = 0x542f TIOCSSERIAL = 0x541f TIOCSSOFTCAR = 0x541a TIOCSTI = 0x5412 TIOCSWINSZ = 0x5414 + TIOCVHANGUP = 0x5437 + TUNATTACHFILTER = 0x400854d5 + TUNDETACHFILTER = 0x400854d6 TUNGETFEATURES = 0x800454cf TUNGETIFF = 0x800454d2 TUNGETSNDBUF = 0x800454d3 + TUNGETVNETHDRSZ = 0x800454d7 TUNSETDEBUG = 0x400454c9 TUNSETGROUP = 0x400454ce TUNSETIFF = 0x400454ca @@ -1118,6 +1167,7 @@ const ( TUNSETPERSIST = 0x400454cb TUNSETSNDBUF = 0x400454d4 TUNSETTXFILTER = 0x400454d1 + TUNSETVNETHDRSZ = 0x400454d8 WALL = 0x40000000 WCLONE = 0x80000000 WCONTINUED = 0x8 @@ -1167,6 +1217,7 @@ const ( EFBIG = Errno(0x1b) EHOSTDOWN = Errno(0x70) EHOSTUNREACH = Errno(0x71) + EHWPOISON = Errno(0x85) EIDRM = Errno(0x2b) EILSEQ = Errno(0x54) EINPROGRESS = Errno(0x73) @@ -1437,7 +1488,8 @@ var errors = [...]string{ 129: "key was rejected by service", 130: "owner died", 131: "state not recoverable", - 132: "unknown error 132", + 132: "operation not possible due to RF-kill", + 133: "unknown error 133", } // Signal table diff --git a/src/pkg/syscall/zsyscall_linux_arm.go b/src/pkg/syscall/zsyscall_linux_arm.go index 4e9848a10..1e86d3b7f 100644 --- a/src/pkg/syscall/zsyscall_linux_arm.go +++ b/src/pkg/syscall/zsyscall_linux_arm.go @@ -1,4 +1,4 @@ -// mksyscall.pl -b32 syscall_linux.go syscall_linux_arm.go +// mksyscall.pl -l32 -arm syscall_linux.go syscall_linux_arm.go // MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT package syscall @@ -287,7 +287,7 @@ func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { - _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off>>32), uintptr(off), uintptr(len>>32), uintptr(len)) + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32)) if e1 != 0 { err = e1 } @@ -784,7 +784,7 @@ func Sysinfo(info *Sysinfo_t) (err error) { func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { r0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) - n = int64(int64(r0)<<32 | int64(r1)) + n = int64(int64(r1)<<32 | int64(r0)) if e1 != 0 { err = e1 } @@ -1458,6 +1458,60 @@ func Time(t *Time_t) (tt Time_t, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + _, _, e1 := Syscall6(SYS_TRUNCATE64, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall6(SYS_FTRUNCATE64, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) { r0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset)) xaddr = uintptr(r0) diff --git a/src/pkg/syscall/zsyscall_windows_386.go b/src/pkg/syscall/zsyscall_windows_386.go index 8b1a6db90..093c4768f 100644 --- a/src/pkg/syscall/zsyscall_windows_386.go +++ b/src/pkg/syscall/zsyscall_windows_386.go @@ -18,121 +18,129 @@ var ( modnetapi32 = NewLazyDLL("netapi32.dll") moduserenv = NewLazyDLL("userenv.dll") - procGetLastError = modkernel32.NewProc("GetLastError") - procLoadLibraryW = modkernel32.NewProc("LoadLibraryW") - procFreeLibrary = modkernel32.NewProc("FreeLibrary") - procGetProcAddress = modkernel32.NewProc("GetProcAddress") - procGetVersion = modkernel32.NewProc("GetVersion") - procFormatMessageW = modkernel32.NewProc("FormatMessageW") - procExitProcess = modkernel32.NewProc("ExitProcess") - procCreateFileW = modkernel32.NewProc("CreateFileW") - procReadFile = modkernel32.NewProc("ReadFile") - procWriteFile = modkernel32.NewProc("WriteFile") - procSetFilePointer = modkernel32.NewProc("SetFilePointer") - procCloseHandle = modkernel32.NewProc("CloseHandle") - procGetStdHandle = modkernel32.NewProc("GetStdHandle") - procFindFirstFileW = modkernel32.NewProc("FindFirstFileW") - procFindNextFileW = modkernel32.NewProc("FindNextFileW") - procFindClose = modkernel32.NewProc("FindClose") - procGetFileInformationByHandle = modkernel32.NewProc("GetFileInformationByHandle") - procGetCurrentDirectoryW = modkernel32.NewProc("GetCurrentDirectoryW") - procSetCurrentDirectoryW = modkernel32.NewProc("SetCurrentDirectoryW") - procCreateDirectoryW = modkernel32.NewProc("CreateDirectoryW") - procRemoveDirectoryW = modkernel32.NewProc("RemoveDirectoryW") - procDeleteFileW = modkernel32.NewProc("DeleteFileW") - procMoveFileW = modkernel32.NewProc("MoveFileW") - procGetComputerNameW = modkernel32.NewProc("GetComputerNameW") - procSetEndOfFile = modkernel32.NewProc("SetEndOfFile") - procGetSystemTimeAsFileTime = modkernel32.NewProc("GetSystemTimeAsFileTime") - procGetTimeZoneInformation = modkernel32.NewProc("GetTimeZoneInformation") - procCreateIoCompletionPort = modkernel32.NewProc("CreateIoCompletionPort") - procGetQueuedCompletionStatus = modkernel32.NewProc("GetQueuedCompletionStatus") - procPostQueuedCompletionStatus = modkernel32.NewProc("PostQueuedCompletionStatus") - procCancelIo = modkernel32.NewProc("CancelIo") - procCreateProcessW = modkernel32.NewProc("CreateProcessW") - procOpenProcess = modkernel32.NewProc("OpenProcess") - procTerminateProcess = modkernel32.NewProc("TerminateProcess") - procGetExitCodeProcess = modkernel32.NewProc("GetExitCodeProcess") - procGetStartupInfoW = modkernel32.NewProc("GetStartupInfoW") - procGetCurrentProcess = modkernel32.NewProc("GetCurrentProcess") - procGetProcessTimes = modkernel32.NewProc("GetProcessTimes") - procDuplicateHandle = modkernel32.NewProc("DuplicateHandle") - procWaitForSingleObject = modkernel32.NewProc("WaitForSingleObject") - procGetTempPathW = modkernel32.NewProc("GetTempPathW") - procCreatePipe = modkernel32.NewProc("CreatePipe") - procGetFileType = modkernel32.NewProc("GetFileType") - procCryptAcquireContextW = modadvapi32.NewProc("CryptAcquireContextW") - procCryptReleaseContext = modadvapi32.NewProc("CryptReleaseContext") - procCryptGenRandom = modadvapi32.NewProc("CryptGenRandom") - procGetEnvironmentStringsW = modkernel32.NewProc("GetEnvironmentStringsW") - procFreeEnvironmentStringsW = modkernel32.NewProc("FreeEnvironmentStringsW") - procGetEnvironmentVariableW = modkernel32.NewProc("GetEnvironmentVariableW") - procSetEnvironmentVariableW = modkernel32.NewProc("SetEnvironmentVariableW") - procSetFileTime = modkernel32.NewProc("SetFileTime") - procGetFileAttributesW = modkernel32.NewProc("GetFileAttributesW") - procSetFileAttributesW = modkernel32.NewProc("SetFileAttributesW") - procGetFileAttributesExW = modkernel32.NewProc("GetFileAttributesExW") - procGetCommandLineW = modkernel32.NewProc("GetCommandLineW") - procCommandLineToArgvW = modshell32.NewProc("CommandLineToArgvW") - procLocalFree = modkernel32.NewProc("LocalFree") - procSetHandleInformation = modkernel32.NewProc("SetHandleInformation") - procFlushFileBuffers = modkernel32.NewProc("FlushFileBuffers") - procGetFullPathNameW = modkernel32.NewProc("GetFullPathNameW") - procCreateFileMappingW = modkernel32.NewProc("CreateFileMappingW") - procMapViewOfFile = modkernel32.NewProc("MapViewOfFile") - procUnmapViewOfFile = modkernel32.NewProc("UnmapViewOfFile") - procFlushViewOfFile = modkernel32.NewProc("FlushViewOfFile") - procVirtualLock = modkernel32.NewProc("VirtualLock") - procVirtualUnlock = modkernel32.NewProc("VirtualUnlock") - procTransmitFile = modmswsock.NewProc("TransmitFile") - procReadDirectoryChangesW = modkernel32.NewProc("ReadDirectoryChangesW") - procCertOpenSystemStoreW = modcrypt32.NewProc("CertOpenSystemStoreW") - procCertEnumCertificatesInStore = modcrypt32.NewProc("CertEnumCertificatesInStore") - procCertCloseStore = modcrypt32.NewProc("CertCloseStore") - procRegOpenKeyExW = modadvapi32.NewProc("RegOpenKeyExW") - procRegCloseKey = modadvapi32.NewProc("RegCloseKey") - procRegQueryInfoKeyW = modadvapi32.NewProc("RegQueryInfoKeyW") - procRegEnumKeyExW = modadvapi32.NewProc("RegEnumKeyExW") - procRegQueryValueExW = modadvapi32.NewProc("RegQueryValueExW") - procWSAStartup = modws2_32.NewProc("WSAStartup") - procWSACleanup = modws2_32.NewProc("WSACleanup") - procWSAIoctl = modws2_32.NewProc("WSAIoctl") - procsocket = modws2_32.NewProc("socket") - procsetsockopt = modws2_32.NewProc("setsockopt") - procbind = modws2_32.NewProc("bind") - procconnect = modws2_32.NewProc("connect") - procgetsockname = modws2_32.NewProc("getsockname") - procgetpeername = modws2_32.NewProc("getpeername") - proclisten = modws2_32.NewProc("listen") - procshutdown = modws2_32.NewProc("shutdown") - procclosesocket = modws2_32.NewProc("closesocket") - procAcceptEx = modmswsock.NewProc("AcceptEx") - procGetAcceptExSockaddrs = modmswsock.NewProc("GetAcceptExSockaddrs") - procWSARecv = modws2_32.NewProc("WSARecv") - procWSASend = modws2_32.NewProc("WSASend") - procWSARecvFrom = modws2_32.NewProc("WSARecvFrom") - procWSASendTo = modws2_32.NewProc("WSASendTo") - procgethostbyname = modws2_32.NewProc("gethostbyname") - procgetservbyname = modws2_32.NewProc("getservbyname") - procntohs = modws2_32.NewProc("ntohs") - procgetprotobyname = modws2_32.NewProc("getprotobyname") - procDnsQuery_W = moddnsapi.NewProc("DnsQuery_W") - procDnsRecordListFree = moddnsapi.NewProc("DnsRecordListFree") - procGetIfEntry = modiphlpapi.NewProc("GetIfEntry") - procGetAdaptersInfo = modiphlpapi.NewProc("GetAdaptersInfo") - procTranslateNameW = modsecur32.NewProc("TranslateNameW") - procGetUserNameExW = modsecur32.NewProc("GetUserNameExW") - procNetUserGetInfo = modnetapi32.NewProc("NetUserGetInfo") - procNetApiBufferFree = modnetapi32.NewProc("NetApiBufferFree") - procLookupAccountSidW = modadvapi32.NewProc("LookupAccountSidW") - procLookupAccountNameW = modadvapi32.NewProc("LookupAccountNameW") - procConvertSidToStringSidW = modadvapi32.NewProc("ConvertSidToStringSidW") - procConvertStringSidToSidW = modadvapi32.NewProc("ConvertStringSidToSidW") - procGetLengthSid = modadvapi32.NewProc("GetLengthSid") - procCopySid = modadvapi32.NewProc("CopySid") - procOpenProcessToken = modadvapi32.NewProc("OpenProcessToken") - procGetTokenInformation = modadvapi32.NewProc("GetTokenInformation") - procGetUserProfileDirectoryW = moduserenv.NewProc("GetUserProfileDirectoryW") + procGetLastError = modkernel32.NewProc("GetLastError") + procLoadLibraryW = modkernel32.NewProc("LoadLibraryW") + procFreeLibrary = modkernel32.NewProc("FreeLibrary") + procGetProcAddress = modkernel32.NewProc("GetProcAddress") + procGetVersion = modkernel32.NewProc("GetVersion") + procFormatMessageW = modkernel32.NewProc("FormatMessageW") + procExitProcess = modkernel32.NewProc("ExitProcess") + procCreateFileW = modkernel32.NewProc("CreateFileW") + procReadFile = modkernel32.NewProc("ReadFile") + procWriteFile = modkernel32.NewProc("WriteFile") + procSetFilePointer = modkernel32.NewProc("SetFilePointer") + procCloseHandle = modkernel32.NewProc("CloseHandle") + procGetStdHandle = modkernel32.NewProc("GetStdHandle") + procFindFirstFileW = modkernel32.NewProc("FindFirstFileW") + procFindNextFileW = modkernel32.NewProc("FindNextFileW") + procFindClose = modkernel32.NewProc("FindClose") + procGetFileInformationByHandle = modkernel32.NewProc("GetFileInformationByHandle") + procGetCurrentDirectoryW = modkernel32.NewProc("GetCurrentDirectoryW") + procSetCurrentDirectoryW = modkernel32.NewProc("SetCurrentDirectoryW") + procCreateDirectoryW = modkernel32.NewProc("CreateDirectoryW") + procRemoveDirectoryW = modkernel32.NewProc("RemoveDirectoryW") + procDeleteFileW = modkernel32.NewProc("DeleteFileW") + procMoveFileW = modkernel32.NewProc("MoveFileW") + procGetComputerNameW = modkernel32.NewProc("GetComputerNameW") + procSetEndOfFile = modkernel32.NewProc("SetEndOfFile") + procGetSystemTimeAsFileTime = modkernel32.NewProc("GetSystemTimeAsFileTime") + procGetTimeZoneInformation = modkernel32.NewProc("GetTimeZoneInformation") + procCreateIoCompletionPort = modkernel32.NewProc("CreateIoCompletionPort") + procGetQueuedCompletionStatus = modkernel32.NewProc("GetQueuedCompletionStatus") + procPostQueuedCompletionStatus = modkernel32.NewProc("PostQueuedCompletionStatus") + procCancelIo = modkernel32.NewProc("CancelIo") + procCreateProcessW = modkernel32.NewProc("CreateProcessW") + procOpenProcess = modkernel32.NewProc("OpenProcess") + procTerminateProcess = modkernel32.NewProc("TerminateProcess") + procGetExitCodeProcess = modkernel32.NewProc("GetExitCodeProcess") + procGetStartupInfoW = modkernel32.NewProc("GetStartupInfoW") + procGetCurrentProcess = modkernel32.NewProc("GetCurrentProcess") + procGetProcessTimes = modkernel32.NewProc("GetProcessTimes") + procDuplicateHandle = modkernel32.NewProc("DuplicateHandle") + procWaitForSingleObject = modkernel32.NewProc("WaitForSingleObject") + procGetTempPathW = modkernel32.NewProc("GetTempPathW") + procCreatePipe = modkernel32.NewProc("CreatePipe") + procGetFileType = modkernel32.NewProc("GetFileType") + procCryptAcquireContextW = modadvapi32.NewProc("CryptAcquireContextW") + procCryptReleaseContext = modadvapi32.NewProc("CryptReleaseContext") + procCryptGenRandom = modadvapi32.NewProc("CryptGenRandom") + procGetEnvironmentStringsW = modkernel32.NewProc("GetEnvironmentStringsW") + procFreeEnvironmentStringsW = modkernel32.NewProc("FreeEnvironmentStringsW") + procGetEnvironmentVariableW = modkernel32.NewProc("GetEnvironmentVariableW") + procSetEnvironmentVariableW = modkernel32.NewProc("SetEnvironmentVariableW") + procSetFileTime = modkernel32.NewProc("SetFileTime") + procGetFileAttributesW = modkernel32.NewProc("GetFileAttributesW") + procSetFileAttributesW = modkernel32.NewProc("SetFileAttributesW") + procGetFileAttributesExW = modkernel32.NewProc("GetFileAttributesExW") + procGetCommandLineW = modkernel32.NewProc("GetCommandLineW") + procCommandLineToArgvW = modshell32.NewProc("CommandLineToArgvW") + procLocalFree = modkernel32.NewProc("LocalFree") + procSetHandleInformation = modkernel32.NewProc("SetHandleInformation") + procFlushFileBuffers = modkernel32.NewProc("FlushFileBuffers") + procGetFullPathNameW = modkernel32.NewProc("GetFullPathNameW") + procGetLongPathNameW = modkernel32.NewProc("GetLongPathNameW") + procCreateFileMappingW = modkernel32.NewProc("CreateFileMappingW") + procMapViewOfFile = modkernel32.NewProc("MapViewOfFile") + procUnmapViewOfFile = modkernel32.NewProc("UnmapViewOfFile") + procFlushViewOfFile = modkernel32.NewProc("FlushViewOfFile") + procVirtualLock = modkernel32.NewProc("VirtualLock") + procVirtualUnlock = modkernel32.NewProc("VirtualUnlock") + procTransmitFile = modmswsock.NewProc("TransmitFile") + procReadDirectoryChangesW = modkernel32.NewProc("ReadDirectoryChangesW") + procCertOpenSystemStoreW = modcrypt32.NewProc("CertOpenSystemStoreW") + procCertOpenStore = modcrypt32.NewProc("CertOpenStore") + procCertEnumCertificatesInStore = modcrypt32.NewProc("CertEnumCertificatesInStore") + procCertAddCertificateContextToStore = modcrypt32.NewProc("CertAddCertificateContextToStore") + procCertCloseStore = modcrypt32.NewProc("CertCloseStore") + procCertGetCertificateChain = modcrypt32.NewProc("CertGetCertificateChain") + procCertFreeCertificateChain = modcrypt32.NewProc("CertFreeCertificateChain") + procCertCreateCertificateContext = modcrypt32.NewProc("CertCreateCertificateContext") + procCertFreeCertificateContext = modcrypt32.NewProc("CertFreeCertificateContext") + procCertVerifyCertificateChainPolicy = modcrypt32.NewProc("CertVerifyCertificateChainPolicy") + procRegOpenKeyExW = modadvapi32.NewProc("RegOpenKeyExW") + procRegCloseKey = modadvapi32.NewProc("RegCloseKey") + procRegQueryInfoKeyW = modadvapi32.NewProc("RegQueryInfoKeyW") + procRegEnumKeyExW = modadvapi32.NewProc("RegEnumKeyExW") + procRegQueryValueExW = modadvapi32.NewProc("RegQueryValueExW") + procWSAStartup = modws2_32.NewProc("WSAStartup") + procWSACleanup = modws2_32.NewProc("WSACleanup") + procWSAIoctl = modws2_32.NewProc("WSAIoctl") + procsocket = modws2_32.NewProc("socket") + procsetsockopt = modws2_32.NewProc("setsockopt") + procbind = modws2_32.NewProc("bind") + procconnect = modws2_32.NewProc("connect") + procgetsockname = modws2_32.NewProc("getsockname") + procgetpeername = modws2_32.NewProc("getpeername") + proclisten = modws2_32.NewProc("listen") + procshutdown = modws2_32.NewProc("shutdown") + procclosesocket = modws2_32.NewProc("closesocket") + procAcceptEx = modmswsock.NewProc("AcceptEx") + procGetAcceptExSockaddrs = modmswsock.NewProc("GetAcceptExSockaddrs") + procWSARecv = modws2_32.NewProc("WSARecv") + procWSASend = modws2_32.NewProc("WSASend") + procWSARecvFrom = modws2_32.NewProc("WSARecvFrom") + procWSASendTo = modws2_32.NewProc("WSASendTo") + procgethostbyname = modws2_32.NewProc("gethostbyname") + procgetservbyname = modws2_32.NewProc("getservbyname") + procntohs = modws2_32.NewProc("ntohs") + procgetprotobyname = modws2_32.NewProc("getprotobyname") + procDnsQuery_W = moddnsapi.NewProc("DnsQuery_W") + procDnsRecordListFree = moddnsapi.NewProc("DnsRecordListFree") + procGetIfEntry = modiphlpapi.NewProc("GetIfEntry") + procGetAdaptersInfo = modiphlpapi.NewProc("GetAdaptersInfo") + procTranslateNameW = modsecur32.NewProc("TranslateNameW") + procGetUserNameExW = modsecur32.NewProc("GetUserNameExW") + procNetUserGetInfo = modnetapi32.NewProc("NetUserGetInfo") + procNetApiBufferFree = modnetapi32.NewProc("NetApiBufferFree") + procLookupAccountSidW = modadvapi32.NewProc("LookupAccountSidW") + procLookupAccountNameW = modadvapi32.NewProc("LookupAccountNameW") + procConvertSidToStringSidW = modadvapi32.NewProc("ConvertSidToStringSidW") + procConvertStringSidToSidW = modadvapi32.NewProc("ConvertStringSidToSidW") + procGetLengthSid = modadvapi32.NewProc("GetLengthSid") + procCopySid = modadvapi32.NewProc("CopySid") + procOpenProcessToken = modadvapi32.NewProc("OpenProcessToken") + procGetTokenInformation = modadvapi32.NewProc("GetTokenInformation") + procGetUserProfileDirectoryW = moduserenv.NewProc("GetUserProfileDirectoryW") ) func GetLastError() (lasterr error) { @@ -883,6 +891,19 @@ func GetFullPathName(path *uint16, buflen uint32, buf *uint16, fname **uint16) ( return } +func GetLongPathName(path *uint16, buf *uint16, buflen uint32) (n uint32, err error) { + r0, _, e1 := Syscall(procGetLongPathNameW.Addr(), 3, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(buf)), uintptr(buflen)) + n = uint32(r0) + if n == 0 { + if e1 != 0 { + err = error(e1) + } else { + err = EINVAL + } + } + return +} + func CreateFileMapping(fhandle Handle, sa *SecurityAttributes, prot uint32, maxSizeHigh uint32, maxSizeLow uint32, name *uint16) (handle Handle, err error) { r0, _, e1 := Syscall6(procCreateFileMappingW.Addr(), 6, uintptr(fhandle), uintptr(unsafe.Pointer(sa)), uintptr(prot), uintptr(maxSizeHigh), uintptr(maxSizeLow), uintptr(unsafe.Pointer(name))) handle = Handle(r0) @@ -1000,6 +1021,19 @@ func CertOpenSystemStore(hprov Handle, name *uint16) (store Handle, err error) { return } +func CertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) { + r0, _, e1 := Syscall6(procCertOpenStore.Addr(), 5, uintptr(storeProvider), uintptr(msgAndCertEncodingType), uintptr(cryptProv), uintptr(flags), uintptr(para), 0) + handle = Handle(r0) + if handle == InvalidHandle { + if e1 != 0 { + err = error(e1) + } else { + err = EINVAL + } + } + return +} + func CertEnumCertificatesInStore(store Handle, prevContext *CertContext) (context *CertContext, err error) { r0, _, e1 := Syscall(procCertEnumCertificatesInStore.Addr(), 2, uintptr(store), uintptr(unsafe.Pointer(prevContext)), 0) context = (*CertContext)(unsafe.Pointer(r0)) @@ -1013,6 +1047,18 @@ func CertEnumCertificatesInStore(store Handle, prevContext *CertContext) (contex return } +func CertAddCertificateContextToStore(store Handle, certContext *CertContext, addDisposition uint32, storeContext **CertContext) (err error) { + r1, _, e1 := Syscall6(procCertAddCertificateContextToStore.Addr(), 4, uintptr(store), uintptr(unsafe.Pointer(certContext)), uintptr(addDisposition), uintptr(unsafe.Pointer(storeContext)), 0, 0) + if int(r1) == 0 { + if e1 != 0 { + err = error(e1) + } else { + err = EINVAL + } + } + return +} + func CertCloseStore(store Handle, flags uint32) (err error) { r1, _, e1 := Syscall(procCertCloseStore.Addr(), 2, uintptr(store), uintptr(flags), 0) if int(r1) == 0 { @@ -1025,6 +1071,60 @@ func CertCloseStore(store Handle, flags uint32) (err error) { return } +func CertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, additionalStore Handle, para *CertChainPara, flags uint32, reserved uintptr, chainCtx **CertChainContext) (err error) { + r1, _, e1 := Syscall9(procCertGetCertificateChain.Addr(), 8, uintptr(engine), uintptr(unsafe.Pointer(leaf)), uintptr(unsafe.Pointer(time)), uintptr(additionalStore), uintptr(unsafe.Pointer(para)), uintptr(flags), uintptr(reserved), uintptr(unsafe.Pointer(chainCtx)), 0) + if int(r1) == 0 { + if e1 != 0 { + err = error(e1) + } else { + err = EINVAL + } + } + return +} + +func CertFreeCertificateChain(ctx *CertChainContext) { + Syscall(procCertFreeCertificateChain.Addr(), 1, uintptr(unsafe.Pointer(ctx)), 0, 0) + return +} + +func CertCreateCertificateContext(certEncodingType uint32, certEncoded *byte, encodedLen uint32) (context *CertContext, err error) { + r0, _, e1 := Syscall(procCertCreateCertificateContext.Addr(), 3, uintptr(certEncodingType), uintptr(unsafe.Pointer(certEncoded)), uintptr(encodedLen)) + context = (*CertContext)(unsafe.Pointer(r0)) + if context == nil { + if e1 != 0 { + err = error(e1) + } else { + err = EINVAL + } + } + return +} + +func CertFreeCertificateContext(ctx *CertContext) (err error) { + r1, _, e1 := Syscall(procCertFreeCertificateContext.Addr(), 1, uintptr(unsafe.Pointer(ctx)), 0, 0) + if int(r1) == 0 { + if e1 != 0 { + err = error(e1) + } else { + err = EINVAL + } + } + return +} + +func CertVerifyCertificateChainPolicy(policyOID uintptr, chain *CertChainContext, para *CertChainPolicyPara, status *CertChainPolicyStatus) (err error) { + r1, _, e1 := Syscall6(procCertVerifyCertificateChainPolicy.Addr(), 4, uintptr(policyOID), uintptr(unsafe.Pointer(chain)), uintptr(unsafe.Pointer(para)), uintptr(unsafe.Pointer(status)), 0, 0) + if int(r1) == 0 { + if e1 != 0 { + err = error(e1) + } else { + err = EINVAL + } + } + return +} + func RegOpenKeyEx(key Handle, subkey *uint16, options uint32, desiredAccess uint32, result *Handle) (regerrno error) { r0, _, _ := Syscall6(procRegOpenKeyExW.Addr(), 5, uintptr(key), uintptr(unsafe.Pointer(subkey)), uintptr(options), uintptr(desiredAccess), uintptr(unsafe.Pointer(result)), 0) if r0 != 0 { diff --git a/src/pkg/syscall/zsyscall_windows_amd64.go b/src/pkg/syscall/zsyscall_windows_amd64.go index 9d9990d10..d298b7451 100644 --- a/src/pkg/syscall/zsyscall_windows_amd64.go +++ b/src/pkg/syscall/zsyscall_windows_amd64.go @@ -18,121 +18,129 @@ var ( modnetapi32 = NewLazyDLL("netapi32.dll") moduserenv = NewLazyDLL("userenv.dll") - procGetLastError = modkernel32.NewProc("GetLastError") - procLoadLibraryW = modkernel32.NewProc("LoadLibraryW") - procFreeLibrary = modkernel32.NewProc("FreeLibrary") - procGetProcAddress = modkernel32.NewProc("GetProcAddress") - procGetVersion = modkernel32.NewProc("GetVersion") - procFormatMessageW = modkernel32.NewProc("FormatMessageW") - procExitProcess = modkernel32.NewProc("ExitProcess") - procCreateFileW = modkernel32.NewProc("CreateFileW") - procReadFile = modkernel32.NewProc("ReadFile") - procWriteFile = modkernel32.NewProc("WriteFile") - procSetFilePointer = modkernel32.NewProc("SetFilePointer") - procCloseHandle = modkernel32.NewProc("CloseHandle") - procGetStdHandle = modkernel32.NewProc("GetStdHandle") - procFindFirstFileW = modkernel32.NewProc("FindFirstFileW") - procFindNextFileW = modkernel32.NewProc("FindNextFileW") - procFindClose = modkernel32.NewProc("FindClose") - procGetFileInformationByHandle = modkernel32.NewProc("GetFileInformationByHandle") - procGetCurrentDirectoryW = modkernel32.NewProc("GetCurrentDirectoryW") - procSetCurrentDirectoryW = modkernel32.NewProc("SetCurrentDirectoryW") - procCreateDirectoryW = modkernel32.NewProc("CreateDirectoryW") - procRemoveDirectoryW = modkernel32.NewProc("RemoveDirectoryW") - procDeleteFileW = modkernel32.NewProc("DeleteFileW") - procMoveFileW = modkernel32.NewProc("MoveFileW") - procGetComputerNameW = modkernel32.NewProc("GetComputerNameW") - procSetEndOfFile = modkernel32.NewProc("SetEndOfFile") - procGetSystemTimeAsFileTime = modkernel32.NewProc("GetSystemTimeAsFileTime") - procGetTimeZoneInformation = modkernel32.NewProc("GetTimeZoneInformation") - procCreateIoCompletionPort = modkernel32.NewProc("CreateIoCompletionPort") - procGetQueuedCompletionStatus = modkernel32.NewProc("GetQueuedCompletionStatus") - procPostQueuedCompletionStatus = modkernel32.NewProc("PostQueuedCompletionStatus") - procCancelIo = modkernel32.NewProc("CancelIo") - procCreateProcessW = modkernel32.NewProc("CreateProcessW") - procOpenProcess = modkernel32.NewProc("OpenProcess") - procTerminateProcess = modkernel32.NewProc("TerminateProcess") - procGetExitCodeProcess = modkernel32.NewProc("GetExitCodeProcess") - procGetStartupInfoW = modkernel32.NewProc("GetStartupInfoW") - procGetCurrentProcess = modkernel32.NewProc("GetCurrentProcess") - procGetProcessTimes = modkernel32.NewProc("GetProcessTimes") - procDuplicateHandle = modkernel32.NewProc("DuplicateHandle") - procWaitForSingleObject = modkernel32.NewProc("WaitForSingleObject") - procGetTempPathW = modkernel32.NewProc("GetTempPathW") - procCreatePipe = modkernel32.NewProc("CreatePipe") - procGetFileType = modkernel32.NewProc("GetFileType") - procCryptAcquireContextW = modadvapi32.NewProc("CryptAcquireContextW") - procCryptReleaseContext = modadvapi32.NewProc("CryptReleaseContext") - procCryptGenRandom = modadvapi32.NewProc("CryptGenRandom") - procGetEnvironmentStringsW = modkernel32.NewProc("GetEnvironmentStringsW") - procFreeEnvironmentStringsW = modkernel32.NewProc("FreeEnvironmentStringsW") - procGetEnvironmentVariableW = modkernel32.NewProc("GetEnvironmentVariableW") - procSetEnvironmentVariableW = modkernel32.NewProc("SetEnvironmentVariableW") - procSetFileTime = modkernel32.NewProc("SetFileTime") - procGetFileAttributesW = modkernel32.NewProc("GetFileAttributesW") - procSetFileAttributesW = modkernel32.NewProc("SetFileAttributesW") - procGetFileAttributesExW = modkernel32.NewProc("GetFileAttributesExW") - procGetCommandLineW = modkernel32.NewProc("GetCommandLineW") - procCommandLineToArgvW = modshell32.NewProc("CommandLineToArgvW") - procLocalFree = modkernel32.NewProc("LocalFree") - procSetHandleInformation = modkernel32.NewProc("SetHandleInformation") - procFlushFileBuffers = modkernel32.NewProc("FlushFileBuffers") - procGetFullPathNameW = modkernel32.NewProc("GetFullPathNameW") - procCreateFileMappingW = modkernel32.NewProc("CreateFileMappingW") - procMapViewOfFile = modkernel32.NewProc("MapViewOfFile") - procUnmapViewOfFile = modkernel32.NewProc("UnmapViewOfFile") - procFlushViewOfFile = modkernel32.NewProc("FlushViewOfFile") - procVirtualLock = modkernel32.NewProc("VirtualLock") - procVirtualUnlock = modkernel32.NewProc("VirtualUnlock") - procTransmitFile = modmswsock.NewProc("TransmitFile") - procReadDirectoryChangesW = modkernel32.NewProc("ReadDirectoryChangesW") - procCertOpenSystemStoreW = modcrypt32.NewProc("CertOpenSystemStoreW") - procCertEnumCertificatesInStore = modcrypt32.NewProc("CertEnumCertificatesInStore") - procCertCloseStore = modcrypt32.NewProc("CertCloseStore") - procRegOpenKeyExW = modadvapi32.NewProc("RegOpenKeyExW") - procRegCloseKey = modadvapi32.NewProc("RegCloseKey") - procRegQueryInfoKeyW = modadvapi32.NewProc("RegQueryInfoKeyW") - procRegEnumKeyExW = modadvapi32.NewProc("RegEnumKeyExW") - procRegQueryValueExW = modadvapi32.NewProc("RegQueryValueExW") - procWSAStartup = modws2_32.NewProc("WSAStartup") - procWSACleanup = modws2_32.NewProc("WSACleanup") - procWSAIoctl = modws2_32.NewProc("WSAIoctl") - procsocket = modws2_32.NewProc("socket") - procsetsockopt = modws2_32.NewProc("setsockopt") - procbind = modws2_32.NewProc("bind") - procconnect = modws2_32.NewProc("connect") - procgetsockname = modws2_32.NewProc("getsockname") - procgetpeername = modws2_32.NewProc("getpeername") - proclisten = modws2_32.NewProc("listen") - procshutdown = modws2_32.NewProc("shutdown") - procclosesocket = modws2_32.NewProc("closesocket") - procAcceptEx = modmswsock.NewProc("AcceptEx") - procGetAcceptExSockaddrs = modmswsock.NewProc("GetAcceptExSockaddrs") - procWSARecv = modws2_32.NewProc("WSARecv") - procWSASend = modws2_32.NewProc("WSASend") - procWSARecvFrom = modws2_32.NewProc("WSARecvFrom") - procWSASendTo = modws2_32.NewProc("WSASendTo") - procgethostbyname = modws2_32.NewProc("gethostbyname") - procgetservbyname = modws2_32.NewProc("getservbyname") - procntohs = modws2_32.NewProc("ntohs") - procgetprotobyname = modws2_32.NewProc("getprotobyname") - procDnsQuery_W = moddnsapi.NewProc("DnsQuery_W") - procDnsRecordListFree = moddnsapi.NewProc("DnsRecordListFree") - procGetIfEntry = modiphlpapi.NewProc("GetIfEntry") - procGetAdaptersInfo = modiphlpapi.NewProc("GetAdaptersInfo") - procTranslateNameW = modsecur32.NewProc("TranslateNameW") - procGetUserNameExW = modsecur32.NewProc("GetUserNameExW") - procNetUserGetInfo = modnetapi32.NewProc("NetUserGetInfo") - procNetApiBufferFree = modnetapi32.NewProc("NetApiBufferFree") - procLookupAccountSidW = modadvapi32.NewProc("LookupAccountSidW") - procLookupAccountNameW = modadvapi32.NewProc("LookupAccountNameW") - procConvertSidToStringSidW = modadvapi32.NewProc("ConvertSidToStringSidW") - procConvertStringSidToSidW = modadvapi32.NewProc("ConvertStringSidToSidW") - procGetLengthSid = modadvapi32.NewProc("GetLengthSid") - procCopySid = modadvapi32.NewProc("CopySid") - procOpenProcessToken = modadvapi32.NewProc("OpenProcessToken") - procGetTokenInformation = modadvapi32.NewProc("GetTokenInformation") - procGetUserProfileDirectoryW = moduserenv.NewProc("GetUserProfileDirectoryW") + procGetLastError = modkernel32.NewProc("GetLastError") + procLoadLibraryW = modkernel32.NewProc("LoadLibraryW") + procFreeLibrary = modkernel32.NewProc("FreeLibrary") + procGetProcAddress = modkernel32.NewProc("GetProcAddress") + procGetVersion = modkernel32.NewProc("GetVersion") + procFormatMessageW = modkernel32.NewProc("FormatMessageW") + procExitProcess = modkernel32.NewProc("ExitProcess") + procCreateFileW = modkernel32.NewProc("CreateFileW") + procReadFile = modkernel32.NewProc("ReadFile") + procWriteFile = modkernel32.NewProc("WriteFile") + procSetFilePointer = modkernel32.NewProc("SetFilePointer") + procCloseHandle = modkernel32.NewProc("CloseHandle") + procGetStdHandle = modkernel32.NewProc("GetStdHandle") + procFindFirstFileW = modkernel32.NewProc("FindFirstFileW") + procFindNextFileW = modkernel32.NewProc("FindNextFileW") + procFindClose = modkernel32.NewProc("FindClose") + procGetFileInformationByHandle = modkernel32.NewProc("GetFileInformationByHandle") + procGetCurrentDirectoryW = modkernel32.NewProc("GetCurrentDirectoryW") + procSetCurrentDirectoryW = modkernel32.NewProc("SetCurrentDirectoryW") + procCreateDirectoryW = modkernel32.NewProc("CreateDirectoryW") + procRemoveDirectoryW = modkernel32.NewProc("RemoveDirectoryW") + procDeleteFileW = modkernel32.NewProc("DeleteFileW") + procMoveFileW = modkernel32.NewProc("MoveFileW") + procGetComputerNameW = modkernel32.NewProc("GetComputerNameW") + procSetEndOfFile = modkernel32.NewProc("SetEndOfFile") + procGetSystemTimeAsFileTime = modkernel32.NewProc("GetSystemTimeAsFileTime") + procGetTimeZoneInformation = modkernel32.NewProc("GetTimeZoneInformation") + procCreateIoCompletionPort = modkernel32.NewProc("CreateIoCompletionPort") + procGetQueuedCompletionStatus = modkernel32.NewProc("GetQueuedCompletionStatus") + procPostQueuedCompletionStatus = modkernel32.NewProc("PostQueuedCompletionStatus") + procCancelIo = modkernel32.NewProc("CancelIo") + procCreateProcessW = modkernel32.NewProc("CreateProcessW") + procOpenProcess = modkernel32.NewProc("OpenProcess") + procTerminateProcess = modkernel32.NewProc("TerminateProcess") + procGetExitCodeProcess = modkernel32.NewProc("GetExitCodeProcess") + procGetStartupInfoW = modkernel32.NewProc("GetStartupInfoW") + procGetCurrentProcess = modkernel32.NewProc("GetCurrentProcess") + procGetProcessTimes = modkernel32.NewProc("GetProcessTimes") + procDuplicateHandle = modkernel32.NewProc("DuplicateHandle") + procWaitForSingleObject = modkernel32.NewProc("WaitForSingleObject") + procGetTempPathW = modkernel32.NewProc("GetTempPathW") + procCreatePipe = modkernel32.NewProc("CreatePipe") + procGetFileType = modkernel32.NewProc("GetFileType") + procCryptAcquireContextW = modadvapi32.NewProc("CryptAcquireContextW") + procCryptReleaseContext = modadvapi32.NewProc("CryptReleaseContext") + procCryptGenRandom = modadvapi32.NewProc("CryptGenRandom") + procGetEnvironmentStringsW = modkernel32.NewProc("GetEnvironmentStringsW") + procFreeEnvironmentStringsW = modkernel32.NewProc("FreeEnvironmentStringsW") + procGetEnvironmentVariableW = modkernel32.NewProc("GetEnvironmentVariableW") + procSetEnvironmentVariableW = modkernel32.NewProc("SetEnvironmentVariableW") + procSetFileTime = modkernel32.NewProc("SetFileTime") + procGetFileAttributesW = modkernel32.NewProc("GetFileAttributesW") + procSetFileAttributesW = modkernel32.NewProc("SetFileAttributesW") + procGetFileAttributesExW = modkernel32.NewProc("GetFileAttributesExW") + procGetCommandLineW = modkernel32.NewProc("GetCommandLineW") + procCommandLineToArgvW = modshell32.NewProc("CommandLineToArgvW") + procLocalFree = modkernel32.NewProc("LocalFree") + procSetHandleInformation = modkernel32.NewProc("SetHandleInformation") + procFlushFileBuffers = modkernel32.NewProc("FlushFileBuffers") + procGetFullPathNameW = modkernel32.NewProc("GetFullPathNameW") + procGetLongPathNameW = modkernel32.NewProc("GetLongPathNameW") + procCreateFileMappingW = modkernel32.NewProc("CreateFileMappingW") + procMapViewOfFile = modkernel32.NewProc("MapViewOfFile") + procUnmapViewOfFile = modkernel32.NewProc("UnmapViewOfFile") + procFlushViewOfFile = modkernel32.NewProc("FlushViewOfFile") + procVirtualLock = modkernel32.NewProc("VirtualLock") + procVirtualUnlock = modkernel32.NewProc("VirtualUnlock") + procTransmitFile = modmswsock.NewProc("TransmitFile") + procReadDirectoryChangesW = modkernel32.NewProc("ReadDirectoryChangesW") + procCertOpenSystemStoreW = modcrypt32.NewProc("CertOpenSystemStoreW") + procCertOpenStore = modcrypt32.NewProc("CertOpenStore") + procCertEnumCertificatesInStore = modcrypt32.NewProc("CertEnumCertificatesInStore") + procCertAddCertificateContextToStore = modcrypt32.NewProc("CertAddCertificateContextToStore") + procCertCloseStore = modcrypt32.NewProc("CertCloseStore") + procCertGetCertificateChain = modcrypt32.NewProc("CertGetCertificateChain") + procCertFreeCertificateChain = modcrypt32.NewProc("CertFreeCertificateChain") + procCertCreateCertificateContext = modcrypt32.NewProc("CertCreateCertificateContext") + procCertFreeCertificateContext = modcrypt32.NewProc("CertFreeCertificateContext") + procCertVerifyCertificateChainPolicy = modcrypt32.NewProc("CertVerifyCertificateChainPolicy") + procRegOpenKeyExW = modadvapi32.NewProc("RegOpenKeyExW") + procRegCloseKey = modadvapi32.NewProc("RegCloseKey") + procRegQueryInfoKeyW = modadvapi32.NewProc("RegQueryInfoKeyW") + procRegEnumKeyExW = modadvapi32.NewProc("RegEnumKeyExW") + procRegQueryValueExW = modadvapi32.NewProc("RegQueryValueExW") + procWSAStartup = modws2_32.NewProc("WSAStartup") + procWSACleanup = modws2_32.NewProc("WSACleanup") + procWSAIoctl = modws2_32.NewProc("WSAIoctl") + procsocket = modws2_32.NewProc("socket") + procsetsockopt = modws2_32.NewProc("setsockopt") + procbind = modws2_32.NewProc("bind") + procconnect = modws2_32.NewProc("connect") + procgetsockname = modws2_32.NewProc("getsockname") + procgetpeername = modws2_32.NewProc("getpeername") + proclisten = modws2_32.NewProc("listen") + procshutdown = modws2_32.NewProc("shutdown") + procclosesocket = modws2_32.NewProc("closesocket") + procAcceptEx = modmswsock.NewProc("AcceptEx") + procGetAcceptExSockaddrs = modmswsock.NewProc("GetAcceptExSockaddrs") + procWSARecv = modws2_32.NewProc("WSARecv") + procWSASend = modws2_32.NewProc("WSASend") + procWSARecvFrom = modws2_32.NewProc("WSARecvFrom") + procWSASendTo = modws2_32.NewProc("WSASendTo") + procgethostbyname = modws2_32.NewProc("gethostbyname") + procgetservbyname = modws2_32.NewProc("getservbyname") + procntohs = modws2_32.NewProc("ntohs") + procgetprotobyname = modws2_32.NewProc("getprotobyname") + procDnsQuery_W = moddnsapi.NewProc("DnsQuery_W") + procDnsRecordListFree = moddnsapi.NewProc("DnsRecordListFree") + procGetIfEntry = modiphlpapi.NewProc("GetIfEntry") + procGetAdaptersInfo = modiphlpapi.NewProc("GetAdaptersInfo") + procTranslateNameW = modsecur32.NewProc("TranslateNameW") + procGetUserNameExW = modsecur32.NewProc("GetUserNameExW") + procNetUserGetInfo = modnetapi32.NewProc("NetUserGetInfo") + procNetApiBufferFree = modnetapi32.NewProc("NetApiBufferFree") + procLookupAccountSidW = modadvapi32.NewProc("LookupAccountSidW") + procLookupAccountNameW = modadvapi32.NewProc("LookupAccountNameW") + procConvertSidToStringSidW = modadvapi32.NewProc("ConvertSidToStringSidW") + procConvertStringSidToSidW = modadvapi32.NewProc("ConvertStringSidToSidW") + procGetLengthSid = modadvapi32.NewProc("GetLengthSid") + procCopySid = modadvapi32.NewProc("CopySid") + procOpenProcessToken = modadvapi32.NewProc("OpenProcessToken") + procGetTokenInformation = modadvapi32.NewProc("GetTokenInformation") + procGetUserProfileDirectoryW = moduserenv.NewProc("GetUserProfileDirectoryW") ) func GetLastError() (lasterr error) { @@ -883,6 +891,19 @@ func GetFullPathName(path *uint16, buflen uint32, buf *uint16, fname **uint16) ( return } +func GetLongPathName(path *uint16, buf *uint16, buflen uint32) (n uint32, err error) { + r0, _, e1 := Syscall(procGetLongPathNameW.Addr(), 3, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(buf)), uintptr(buflen)) + n = uint32(r0) + if n == 0 { + if e1 != 0 { + err = error(e1) + } else { + err = EINVAL + } + } + return +} + func CreateFileMapping(fhandle Handle, sa *SecurityAttributes, prot uint32, maxSizeHigh uint32, maxSizeLow uint32, name *uint16) (handle Handle, err error) { r0, _, e1 := Syscall6(procCreateFileMappingW.Addr(), 6, uintptr(fhandle), uintptr(unsafe.Pointer(sa)), uintptr(prot), uintptr(maxSizeHigh), uintptr(maxSizeLow), uintptr(unsafe.Pointer(name))) handle = Handle(r0) @@ -1000,6 +1021,19 @@ func CertOpenSystemStore(hprov Handle, name *uint16) (store Handle, err error) { return } +func CertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) { + r0, _, e1 := Syscall6(procCertOpenStore.Addr(), 5, uintptr(storeProvider), uintptr(msgAndCertEncodingType), uintptr(cryptProv), uintptr(flags), uintptr(para), 0) + handle = Handle(r0) + if handle == InvalidHandle { + if e1 != 0 { + err = error(e1) + } else { + err = EINVAL + } + } + return +} + func CertEnumCertificatesInStore(store Handle, prevContext *CertContext) (context *CertContext, err error) { r0, _, e1 := Syscall(procCertEnumCertificatesInStore.Addr(), 2, uintptr(store), uintptr(unsafe.Pointer(prevContext)), 0) context = (*CertContext)(unsafe.Pointer(r0)) @@ -1013,6 +1047,18 @@ func CertEnumCertificatesInStore(store Handle, prevContext *CertContext) (contex return } +func CertAddCertificateContextToStore(store Handle, certContext *CertContext, addDisposition uint32, storeContext **CertContext) (err error) { + r1, _, e1 := Syscall6(procCertAddCertificateContextToStore.Addr(), 4, uintptr(store), uintptr(unsafe.Pointer(certContext)), uintptr(addDisposition), uintptr(unsafe.Pointer(storeContext)), 0, 0) + if int(r1) == 0 { + if e1 != 0 { + err = error(e1) + } else { + err = EINVAL + } + } + return +} + func CertCloseStore(store Handle, flags uint32) (err error) { r1, _, e1 := Syscall(procCertCloseStore.Addr(), 2, uintptr(store), uintptr(flags), 0) if int(r1) == 0 { @@ -1025,6 +1071,60 @@ func CertCloseStore(store Handle, flags uint32) (err error) { return } +func CertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, additionalStore Handle, para *CertChainPara, flags uint32, reserved uintptr, chainCtx **CertChainContext) (err error) { + r1, _, e1 := Syscall9(procCertGetCertificateChain.Addr(), 8, uintptr(engine), uintptr(unsafe.Pointer(leaf)), uintptr(unsafe.Pointer(time)), uintptr(additionalStore), uintptr(unsafe.Pointer(para)), uintptr(flags), uintptr(reserved), uintptr(unsafe.Pointer(chainCtx)), 0) + if int(r1) == 0 { + if e1 != 0 { + err = error(e1) + } else { + err = EINVAL + } + } + return +} + +func CertFreeCertificateChain(ctx *CertChainContext) { + Syscall(procCertFreeCertificateChain.Addr(), 1, uintptr(unsafe.Pointer(ctx)), 0, 0) + return +} + +func CertCreateCertificateContext(certEncodingType uint32, certEncoded *byte, encodedLen uint32) (context *CertContext, err error) { + r0, _, e1 := Syscall(procCertCreateCertificateContext.Addr(), 3, uintptr(certEncodingType), uintptr(unsafe.Pointer(certEncoded)), uintptr(encodedLen)) + context = (*CertContext)(unsafe.Pointer(r0)) + if context == nil { + if e1 != 0 { + err = error(e1) + } else { + err = EINVAL + } + } + return +} + +func CertFreeCertificateContext(ctx *CertContext) (err error) { + r1, _, e1 := Syscall(procCertFreeCertificateContext.Addr(), 1, uintptr(unsafe.Pointer(ctx)), 0, 0) + if int(r1) == 0 { + if e1 != 0 { + err = error(e1) + } else { + err = EINVAL + } + } + return +} + +func CertVerifyCertificateChainPolicy(policyOID uintptr, chain *CertChainContext, para *CertChainPolicyPara, status *CertChainPolicyStatus) (err error) { + r1, _, e1 := Syscall6(procCertVerifyCertificateChainPolicy.Addr(), 4, uintptr(policyOID), uintptr(unsafe.Pointer(chain)), uintptr(unsafe.Pointer(para)), uintptr(unsafe.Pointer(status)), 0, 0) + if int(r1) == 0 { + if e1 != 0 { + err = error(e1) + } else { + err = EINVAL + } + } + return +} + func RegOpenKeyEx(key Handle, subkey *uint16, options uint32, desiredAccess uint32, result *Handle) (regerrno error) { r0, _, _ := Syscall6(procRegOpenKeyExW.Addr(), 5, uintptr(key), uintptr(unsafe.Pointer(subkey)), uintptr(options), uintptr(desiredAccess), uintptr(unsafe.Pointer(result)), 0) if r0 != 0 { diff --git a/src/pkg/syscall/zsysnum_linux_arm.go b/src/pkg/syscall/zsysnum_linux_arm.go index 1376af72b..7f5d9498c 100644 --- a/src/pkg/syscall/zsysnum_linux_arm.go +++ b/src/pkg/syscall/zsysnum_linux_arm.go @@ -1,4 +1,4 @@ -// mksysnum_linux.pl /usr/include/asm/unistd.h +// mksysnum_linux.pl // MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT package syscall @@ -338,5 +338,17 @@ const ( SYS_PWRITEV = 362 SYS_RT_TGSIGQUEUEINFO = 363 SYS_PERF_EVENT_OPEN = 364 + SYS_RECVMMSG = 365 SYS_ACCEPT4 = 366 + SYS_FANOTIFY_INIT = 367 + SYS_FANOTIFY_MARK = 368 + SYS_PRLIMIT64 = 369 + SYS_NAME_TO_HANDLE_AT = 370 + SYS_OPEN_BY_HANDLE_AT = 371 + SYS_CLOCK_ADJTIME = 372 + SYS_SYNCFS = 373 + SYS_SENDMMSG = 374 + SYS_SETNS = 375 + SYS_PROCESS_VM_READV = 376 + SYS_PROCESS_VM_WRITEV = 377 ) diff --git a/src/pkg/syscall/ztypes_linux_arm.go b/src/pkg/syscall/ztypes_linux_arm.go index 41b49e78c..cd680c3ad 100644 --- a/src/pkg/syscall/ztypes_linux_arm.go +++ b/src/pkg/syscall/ztypes_linux_arm.go @@ -233,7 +233,7 @@ type Cmsghdr struct { Len uint32 Level int32 Type int32 - X__cmsg_data [0]byte + X__cmsg_data [0]uint8 } type Inet4Pktinfo struct { @@ -301,7 +301,7 @@ const ( IFLA_LINKINFO = 0x12 IFLA_NET_NS_PID = 0x13 IFLA_IFALIAS = 0x14 - IFLA_MAX = 0x14 + IFLA_MAX = 0x1c RT_SCOPE_UNIVERSE = 0x0 RT_SCOPE_SITE = 0xc8 RT_SCOPE_LINK = 0xfd @@ -435,7 +435,7 @@ type InotifyEvent struct { Mask uint32 Cookie uint32 Len uint32 - Name [0]byte + Name [0]uint8 } const SizeofInotifyEvent = 0x10 diff --git a/src/pkg/syscall/ztypes_windows.go b/src/pkg/syscall/ztypes_windows.go index e4881e561..54168bb98 100644 --- a/src/pkg/syscall/ztypes_windows.go +++ b/src/pkg/syscall/ztypes_windows.go @@ -10,11 +10,13 @@ const ( ERROR_PATH_NOT_FOUND Errno = 3 ERROR_ACCESS_DENIED Errno = 5 ERROR_NO_MORE_FILES Errno = 18 + ERROR_FILE_EXISTS Errno = 80 ERROR_BROKEN_PIPE Errno = 109 ERROR_BUFFER_OVERFLOW Errno = 111 ERROR_INSUFFICIENT_BUFFER Errno = 122 ERROR_MOD_NOT_FOUND Errno = 126 ERROR_PROC_NOT_FOUND Errno = 127 + ERROR_ALREADY_EXISTS Errno = 183 ERROR_ENVVAR_NOT_FOUND Errno = 203 ERROR_OPERATION_ABORTED Errno = 995 ERROR_IO_PENDING Errno = 997 @@ -208,6 +210,63 @@ const ( CRYPT_MACHINE_KEYSET = 0x00000020 CRYPT_SILENT = 0x00000040 CRYPT_DEFAULT_CONTAINER_OPTIONAL = 0x00000080 + + USAGE_MATCH_TYPE_AND = 0 + USAGE_MATCH_TYPE_OR = 1 + + X509_ASN_ENCODING = 0x00000001 + PKCS_7_ASN_ENCODING = 0x00010000 + + CERT_STORE_PROV_MEMORY = 2 + + CERT_STORE_ADD_ALWAYS = 4 + + CERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG = 0x00000004 + + CERT_TRUST_NO_ERROR = 0x00000000 + CERT_TRUST_IS_NOT_TIME_VALID = 0x00000001 + CERT_TRUST_IS_REVOKED = 0x00000004 + CERT_TRUST_IS_NOT_SIGNATURE_VALID = 0x00000008 + CERT_TRUST_IS_NOT_VALID_FOR_USAGE = 0x00000010 + CERT_TRUST_IS_UNTRUSTED_ROOT = 0x00000020 + CERT_TRUST_REVOCATION_STATUS_UNKNOWN = 0x00000040 + CERT_TRUST_IS_CYCLIC = 0x00000080 + CERT_TRUST_INVALID_EXTENSION = 0x00000100 + CERT_TRUST_INVALID_POLICY_CONSTRAINTS = 0x00000200 + CERT_TRUST_INVALID_BASIC_CONSTRAINTS = 0x00000400 + CERT_TRUST_INVALID_NAME_CONSTRAINTS = 0x00000800 + CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT = 0x00001000 + CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT = 0x00002000 + CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT = 0x00004000 + CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT = 0x00008000 + CERT_TRUST_IS_OFFLINE_REVOCATION = 0x01000000 + CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY = 0x02000000 + CERT_TRUST_IS_EXPLICIT_DISTRUST = 0x04000000 + CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT = 0x08000000 + + CERT_CHAIN_POLICY_BASE = 1 + CERT_CHAIN_POLICY_AUTHENTICODE = 2 + CERT_CHAIN_POLICY_AUTHENTICODE_TS = 3 + CERT_CHAIN_POLICY_SSL = 4 + CERT_CHAIN_POLICY_BASIC_CONSTRAINTS = 5 + CERT_CHAIN_POLICY_NT_AUTH = 6 + CERT_CHAIN_POLICY_MICROSOFT_ROOT = 7 + CERT_CHAIN_POLICY_EV = 8 + + CERT_E_EXPIRED = 0x800B0101 + CERT_E_ROLE = 0x800B0103 + CERT_E_PURPOSE = 0x800B0106 + CERT_E_UNTRUSTEDROOT = 0x800B0109 + CERT_E_CN_NO_MATCH = 0x800B010F + + AUTHTYPE_CLIENT = 1 + AUTHTYPE_SERVER = 2 +) + +var ( + OID_PKIX_KP_SERVER_AUTH = []byte("1.3.6.1.5.5.7.3.1\x00") + OID_SERVER_GATED_CRYPTO = []byte("1.3.6.1.4.1.311.10.3.3\x00") + OID_SGC_NETSCAPE = []byte("2.16.840.1.113730.4.1\x00") ) // Invented values to support what package os expects. @@ -702,6 +761,93 @@ type CertContext struct { Store Handle } +type CertChainContext struct { + Size uint32 + TrustStatus CertTrustStatus + ChainCount uint32 + Chains **CertSimpleChain + LowerQualityChainCount uint32 + LowerQualityChains **CertChainContext + HasRevocationFreshnessTime uint32 + RevocationFreshnessTime uint32 +} + +type CertSimpleChain struct { + Size uint32 + TrustStatus CertTrustStatus + NumElements uint32 + Elements **CertChainElement + TrustListInfo uintptr + HasRevocationFreshnessTime uint32 + RevocationFreshnessTime uint32 +} + +type CertChainElement struct { + Size uint32 + CertContext *CertContext + TrustStatus CertTrustStatus + RevocationInfo *CertRevocationInfo + IssuanceUsage *CertEnhKeyUsage + ApplicationUsage *CertEnhKeyUsage + ExtendedErrorInfo *uint16 +} + +type CertRevocationInfo struct { + Size uint32 + RevocationResult uint32 + RevocationOid *byte + OidSpecificInfo uintptr + HasFreshnessTime uint32 + FreshnessTime uint32 + CrlInfo uintptr // *CertRevocationCrlInfo +} + +type CertTrustStatus struct { + ErrorStatus uint32 + InfoStatus uint32 +} + +type CertUsageMatch struct { + Type uint32 + Usage CertEnhKeyUsage +} + +type CertEnhKeyUsage struct { + Length uint32 + UsageIdentifiers **byte +} + +type CertChainPara struct { + Size uint32 + RequestedUsage CertUsageMatch + RequstedIssuancePolicy CertUsageMatch + URLRetrievalTimeout uint32 + CheckRevocationFreshnessTime uint32 + RevocationFreshnessTime uint32 + CacheResync *Filetime +} + +type CertChainPolicyPara struct { + Size uint32 + Flags uint32 + ExtraPolicyPara uintptr +} + +type SSLExtraCertChainPolicyPara struct { + Size uint32 + AuthType uint32 + Checks uint32 + ServerName *uint16 +} + +type CertChainPolicyStatus struct { + Size uint32 + Error uint32 + ChainIndex uint32 + ElementIndex uint32 + ExtraPolicyStatus uintptr +} + const ( // do not reorder HKEY_CLASSES_ROOT = 0x80000000 + iota diff --git a/src/pkg/testing/testing.go b/src/pkg/testing/testing.go index 477d2ac23..f59ce8ed6 100644 --- a/src/pkg/testing/testing.go +++ b/src/pkg/testing/testing.go @@ -107,6 +107,8 @@ var ( cpuListStr = flag.String("test.cpu", "", "comma-separated list of number of CPUs to use for each test") parallel = flag.Int("test.parallel", runtime.GOMAXPROCS(0), "maximum test parallelism") + haveExamples bool // are there examples? + cpuList []int ) @@ -279,6 +281,7 @@ func Main(matchString func(pat, str string) (bool, error), tests []InternalTest, before() startAlarm() + haveExamples = len(examples) > 0 testOk := RunTests(matchString, tests) exampleOk := RunExamples(matchString, examples) if !testOk || !exampleOk { @@ -303,7 +306,7 @@ func (t *T) report() { func RunTests(matchString func(pat, str string) (bool, error), tests []InternalTest) (ok bool) { ok = true - if len(tests) == 0 { + if len(tests) == 0 && !haveExamples { fmt.Fprintln(os.Stderr, "testing: warning: no tests to run") return } diff --git a/src/pkg/text/template/exec.go b/src/pkg/text/template/exec.go index ad0118e4e..9a720cf43 100644 --- a/src/pkg/text/template/exec.go +++ b/src/pkg/text/template/exec.go @@ -369,6 +369,7 @@ func (s *state) evalVariableNode(dot reflect.Value, v *parse.VariableNode, args // $x.Field has $x as the first ident, Field as the second. Eval the var, then the fields. value := s.varValue(v.Ident[0]) if len(v.Ident) == 1 { + s.notAFunction(args, final) return value } return s.evalFieldChain(dot, value, v.Ident[1:], args, final) diff --git a/src/pkg/text/template/exec_test.go b/src/pkg/text/template/exec_test.go index 70ab39cad..5446027ff 100644 --- a/src/pkg/text/template/exec_test.go +++ b/src/pkg/text/template/exec_test.go @@ -466,6 +466,10 @@ var execTests = []execTest{ {"bug6b", "{{vfunc .V0 .V0}}", "vfunc", tVal, true}, {"bug6c", "{{vfunc .V1 .V0}}", "vfunc", tVal, true}, {"bug6d", "{{vfunc .V1 .V1}}", "vfunc", tVal, true}, + // Legal parse but illegal execution: non-function should have no arguments. + {"bug7a", "{{3 2}}", "", tVal, false}, + {"bug7b", "{{$x := 1}}{{$x 2}}", "", tVal, false}, + {"bug7c", "{{$x := 1}}{{3 | $x}}", "", tVal, false}, } func zeroArgs() string { diff --git a/src/pkg/text/template/multi_test.go b/src/pkg/text/template/multi_test.go index 22dedc4f8..bd98bd047 100644 --- a/src/pkg/text/template/multi_test.go +++ b/src/pkg/text/template/multi_test.go @@ -93,7 +93,7 @@ var multiExecTests = []execTest{ {"invoke dot []int", `{{template "dot" .SI}}`, "[3 4 5]", tVal, true}, {"invoke dotV", `{{template "dotV" .U}}`, "v", tVal, true}, {"invoke nested int", `{{template "nested" .I}}`, "17", tVal, true}, - {"variable declared by template", `{{template "nested" $x=.SI}},{{index $x 1}}`, "[3 4 5],4", tVal, true}, + {"variable declared by template", `{{template "nested" $x:=.SI}},{{index $x 1}}`, "[3 4 5],4", tVal, true}, // User-defined function: test argument evaluator. {"testFunc literal", `{{oneArg "joe"}}`, "oneArg=joe", tVal, true}, diff --git a/src/pkg/text/template/parse/lex.go b/src/pkg/text/template/parse/lex.go index 54e75ee0c..7705c0b88 100644 --- a/src/pkg/text/template/parse/lex.go +++ b/src/pkg/text/template/parse/lex.go @@ -347,6 +347,9 @@ Loop: default: l.backup() word := l.input[l.start:l.pos] + if !l.atTerminator() { + return l.errorf("unexpected character %+U", r) + } switch { case key[word] > itemKeyword: l.emit(key[word]) @@ -365,6 +368,28 @@ Loop: return lexInsideAction } +// atTerminator reports whether the input is at valid termination character to +// appear after an identifier. Mostly to catch cases like "$x+2" not being +// acceptable without a space, in case we decide one day to implement +// arithmetic. +func (l *lexer) atTerminator() bool { + r := l.peek() + if isSpace(r) { + return true + } + switch r { + case eof, ',', '|', ':': + return true + } + // Does r start the delimiter? This can be ambiguous (with delim=="//", $x/2 will + // succeed but should fail) but only in extremely rare cases caused by willfully + // bad choice of delimiter. + if rd, _ := utf8.DecodeRuneInString(l.rightDelim); rd == r { + return true + } + return false +} + // lexChar scans a character constant. The initial quote is already // scanned. Syntax checking is done by the parse. func lexChar(l *lexer) stateFn { diff --git a/src/pkg/text/template/parse/parse.go b/src/pkg/text/template/parse/parse.go index d67b38880..c0087b278 100644 --- a/src/pkg/text/template/parse/parse.go +++ b/src/pkg/text/template/parse/parse.go @@ -326,7 +326,7 @@ func (t *Tree) pipeline(context string) (pipe *PipeNode) { for { if v := t.peek(); v.typ == itemVariable { t.next() - if next := t.peek(); next.typ == itemColonEquals || next.typ == itemChar { + if next := t.peek(); next.typ == itemColonEquals || (next.typ == itemChar && next.val == ",") { t.next() variable := newVariable(v.val) if len(variable.Ident) != 1 { diff --git a/src/pkg/text/template/parse/parse_test.go b/src/pkg/text/template/parse/parse_test.go index 18c0a8b83..b2e788238 100644 --- a/src/pkg/text/template/parse/parse_test.go +++ b/src/pkg/text/template/parse/parse_test.go @@ -201,6 +201,10 @@ var parseTests = []parseTest{ `{{range .X | .M}}"true"{{else}}"false"{{end}}`}, {"range []int", "{{range .SI}}{{.}}{{end}}", noError, `{{range .SI}}{{.}}{{end}}`}, + {"range 1 var", "{{range $x := .SI}}{{.}}{{end}}", noError, + `{{range $x := .SI}}{{.}}{{end}}`}, + {"range 2 vars", "{{range $x, $y := .SI}}{{.}}{{end}}", noError, + `{{range $x, $y := .SI}}{{.}}{{end}}`}, {"constants", "{{range .SI 1 -3.2i true false 'a'}}{{end}}", noError, `{{range .SI 1 -3.2i true false 'a'}}{{end}}`}, {"template", "{{template `x`}}", noError, @@ -226,6 +230,17 @@ var parseTests = []parseTest{ {"invalid punctuation", "{{printf 3, 4}}", hasError, ""}, {"multidecl outside range", "{{with $v, $u := 3}}{{end}}", hasError, ""}, {"too many decls in range", "{{range $u, $v, $w := 3}}{{end}}", hasError, ""}, + // Equals (and other chars) do not assignments make (yet). + {"bug0a", "{{$x := 0}}{{$x}}", noError, "{{$x := 0}}{{$x}}"}, + {"bug0b", "{{$x = 1}}{{$x}}", hasError, ""}, + {"bug0c", "{{$x ! 2}}{{$x}}", hasError, ""}, + {"bug0d", "{{$x % 3}}{{$x}}", hasError, ""}, + // Check the parse fails for := rather than comma. + {"bug0e", "{{range $x := $y := 3}}{{end}}", hasError, ""}, + // Another bug: variable read must ignore following punctuation. + {"bug1a", "{{$x:=.}}{{$x!2}}", hasError, ""}, // ! is just illegal here. + {"bug1b", "{{$x:=.}}{{$x+2}}", hasError, ""}, // $x+2 should not parse as ($x) (+2). + {"bug1c", "{{$x:=.}}{{$x +2}}", noError, "{{$x := .}}{{$x +2}}"}, // It's OK with a space. } var builtins = map[string]interface{}{ diff --git a/src/pkg/time/tick_test.go b/src/pkg/time/tick_test.go index 914f02c86..d8a086ceb 100644 --- a/src/pkg/time/tick_test.go +++ b/src/pkg/time/tick_test.go @@ -22,7 +22,7 @@ func TestTicker(t *testing.T) { dt := t1.Sub(t0) target := Delta * Count slop := target * 2 / 10 - if dt < target-slop || dt > target+slop { + if dt < target-slop || (!testing.Short() && dt > target+slop) { t.Fatalf("%d %s ticks took %s, expected [%s,%s]", Count, Delta, dt, target-slop, target+slop) } // Now test that the ticker stopped diff --git a/src/pkg/time/time.go b/src/pkg/time/time.go index f7ded24d2..473bc2a45 100644 --- a/src/pkg/time/time.go +++ b/src/pkg/time/time.go @@ -13,7 +13,8 @@ import "errors" // // Programs using times should typically store and pass them as values, // not pointers. That is, time variables and struct fields should be of -// type time.Time, not *time.Time. +// type time.Time, not *time.Time. A Time value can be used by +// multiple goroutines simultaneously. // // Time instants can be compared using the Before, After, and Equal methods. // The Sub method subtracts two instants, producing a Duration. @@ -755,13 +756,13 @@ func (t Time) Zone() (name string, offset int) { return } -// Unix returns the Unix time, the number of seconds elapsed +// Unix returns t as a Unix time, the number of seconds elapsed // since January 1, 1970 UTC. func (t Time) Unix() int64 { return t.sec + internalToUnix } -// UnixNano returns the Unix time, the number of nanoseconds elapsed +// UnixNano returns t as a Unix time, the number of nanoseconds elapsed // since January 1, 1970 UTC. func (t Time) UnixNano() int64 { return (t.sec+internalToUnix)*1e9 + int64(t.nsec) diff --git a/src/pkg/unicode/utf16/export_test.go b/src/pkg/unicode/utf16/export_test.go new file mode 100644 index 000000000..306247e48 --- /dev/null +++ b/src/pkg/unicode/utf16/export_test.go @@ -0,0 +1,11 @@ +// Copyright 2012 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. + +package utf16 + +// Extra names for constants so we can validate them during testing. +const ( + MaxRune = maxRune + ReplacementChar = replacementChar +) diff --git a/src/pkg/unicode/utf16/utf16.go b/src/pkg/unicode/utf16/utf16.go index 2b2eb28f2..903e4012a 100644 --- a/src/pkg/unicode/utf16/utf16.go +++ b/src/pkg/unicode/utf16/utf16.go @@ -5,7 +5,14 @@ // Package utf16 implements encoding and decoding of UTF-16 sequences. package utf16 -import "unicode" +// The conditions replacementChar==unicode.ReplacementChar and +// maxRune==unicode.MaxRune are verified in the tests. +// Defining them locally avoids this package depending on package unicode. + +const ( + replacementChar = '\uFFFD' // Unicode replacement character + maxRune = '\U0010FFFF' // Maximum valid Unicode code point. +) const ( // 0xd800-0xdc00 encodes the high 10 bits of a pair. @@ -31,15 +38,15 @@ func DecodeRune(r1, r2 rune) rune { if surr1 <= r1 && r1 < surr2 && surr2 <= r2 && r2 < surr3 { return (rune(r1)-surr1)<<10 | (rune(r2) - surr2) + 0x10000 } - return unicode.ReplacementChar + return replacementChar } // EncodeRune returns the UTF-16 surrogate pair r1, r2 for the given rune. // If the rune is not a valid Unicode code point or does not need encoding, // EncodeRune returns U+FFFD, U+FFFD. func EncodeRune(r rune) (r1, r2 rune) { - if r < surrSelf || r > unicode.MaxRune || IsSurrogate(r) { - return unicode.ReplacementChar, unicode.ReplacementChar + if r < surrSelf || r > maxRune || IsSurrogate(r) { + return replacementChar, replacementChar } r -= surrSelf return surr1 + (r>>10)&0x3ff, surr2 + r&0x3ff @@ -58,8 +65,8 @@ func Encode(s []rune) []uint16 { n = 0 for _, v := range s { switch { - case v < 0, surr1 <= v && v < surr3, v > unicode.MaxRune: - v = unicode.ReplacementChar + case v < 0, surr1 <= v && v < surr3, v > maxRune: + v = replacementChar fallthrough case v < surrSelf: a[n] = uint16(v) @@ -89,7 +96,7 @@ func Decode(s []uint16) []rune { n++ case surr1 <= r && r < surr3: // invalid surrogate sequence - a[n] = unicode.ReplacementChar + a[n] = replacementChar n++ default: // normal rune diff --git a/src/pkg/unicode/utf16/utf16_test.go b/src/pkg/unicode/utf16/utf16_test.go index d453b2f98..ee16a303d 100644 --- a/src/pkg/unicode/utf16/utf16_test.go +++ b/src/pkg/unicode/utf16/utf16_test.go @@ -11,6 +11,16 @@ import ( . "unicode/utf16" ) +// Validate the constants redefined from unicode. +func TestConstants(t *testing.T) { + if MaxRune != unicode.MaxRune { + t.Errorf("utf16.maxRune is wrong: %x should be %x", MaxRune, unicode.MaxRune) + } + if ReplacementChar != unicode.ReplacementChar { + t.Errorf("utf16.replacementChar is wrong: %x should be %x", ReplacementChar, unicode.ReplacementChar) + } +} + type encodeTest struct { in []rune out []uint16 diff --git a/src/pkg/unicode/utf8/utf8.go b/src/pkg/unicode/utf8/utf8.go index 631533a5a..57ea19e96 100644 --- a/src/pkg/unicode/utf8/utf8.go +++ b/src/pkg/unicode/utf8/utf8.go @@ -6,13 +6,16 @@ // UTF-8. It includes functions to translate between runes and UTF-8 byte sequences. package utf8 -import "unicode" // only needed for a couple of constants +// The conditions RuneError==unicode.ReplacementChar and +// MaxRune==unicode.MaxRune are verified in the tests. +// Defining them locally avoids this package depending on package unicode. // Numbers fundamental to the encoding. const ( - RuneError = unicode.ReplacementChar // the "error" Rune or "replacement character". - RuneSelf = 0x80 // characters below Runeself are represented as themselves in a single byte. - UTFMax = 4 // maximum number of bytes of a UTF-8 encoded Unicode character. + RuneError = '\uFFFD' // the "error" Rune or "Unicode replacement character" + RuneSelf = 0x80 // characters below Runeself are represented as themselves in a single byte. + MaxRune = '\U0010FFFF' // Maximum valid Unicode code point. + UTFMax = 4 // maximum number of bytes of a UTF-8 encoded Unicode character. ) const ( @@ -309,7 +312,7 @@ func EncodeRune(p []byte, r rune) int { return 2 } - if uint32(r) > unicode.MaxRune { + if uint32(r) > MaxRune { r = RuneError } diff --git a/src/pkg/unicode/utf8/utf8_test.go b/src/pkg/unicode/utf8/utf8_test.go index 63514265b..4f73c8fb8 100644 --- a/src/pkg/unicode/utf8/utf8_test.go +++ b/src/pkg/unicode/utf8/utf8_test.go @@ -7,9 +7,30 @@ package utf8_test import ( "bytes" "testing" + "unicode" . "unicode/utf8" ) +// Validate the constants redefined from unicode. +func init() { + if MaxRune != unicode.MaxRune { + panic("utf8.MaxRune is wrong") + } + if RuneError != unicode.ReplacementChar { + panic("utf8.RuneError is wrong") + } +} + +// Validate the constants redefined from unicode. +func TestConstants(t *testing.T) { + if MaxRune != unicode.MaxRune { + t.Errorf("utf8.MaxRune is wrong: %x should be %x", MaxRune, unicode.MaxRune) + } + if RuneError != unicode.ReplacementChar { + t.Errorf("utf8.RuneError is wrong: %x should be %x", RuneError, unicode.ReplacementChar) + } +} + type Utf8Map struct { r rune str string diff --git a/src/run.bash b/src/run.bash index fd3b1f27b..ff2e88f00 100755 --- a/src/run.bash +++ b/src/run.bash @@ -5,9 +5,11 @@ set -e -eval $(go tool dist env) +eval $(go env) unset CDPATH # in case user has it set +unset GOPATH # we disallow local import for non-local packages, if $GOROOT happens + # to be under $GOPATH, then some tests below will fail # no core files, please ulimit -c 0 @@ -26,8 +28,8 @@ echo '# Testing packages.' time go test std -short -timeout=120s echo -echo '# runtime -cpu=1,2,4' -go test runtime -short -timeout=120s -cpu=1,2,4 +echo '# GOMAXPROCS=2 runtime -cpu=1,2,4' +GOMAXPROCS=2 go test runtime -short -timeout=240s -cpu=1,2,4 echo echo '# sync -cpu=10' @@ -35,40 +37,30 @@ go test sync -short -timeout=120s -cpu=10 xcd() { echo - echo --- cd $1 + echo '#' $1 builtin cd "$GOROOT"/src/$1 } -BROKEN=true - -$BROKEN || [ "$CGO_ENABLED" != 1 ] || [ "$GOHOSTOS" == windows ] || (xcd ../misc/cgo/stdio -"$GOMAKE" clean ./test.bash ) || exit $? -$BROKEN || [ "$CGO_ENABLED" != 1 ] || (xcd ../misc/cgo/life -"$GOMAKE" clean ./test.bash ) || exit $? -$BROKEN || [ "$CGO_ENABLED" != 1 ] || (xcd ../misc/cgo/test -"$GOMAKE" clean -gotest +go test ) || exit $? -$BROKEN || [ "$CGO_ENABLED" != 1 ] || [ "$GOHOSTOS" == windows ] || [ "$GOHOSTOS" == darwin ] || (xcd ../misc/cgo/testso -"$GOMAKE" clean ./test.bash ) || exit $? @@ -76,37 +68,32 @@ $BROKEN || time ./run ) || exit $? -$BROKEN || [ "$GOARCH" == arm ] || # uses network, fails under QEMU -(xcd ../doc/codelab/wiki -"$GOMAKE" clean -"$GOMAKE" -"$GOMAKE" test +(xcd ../doc/articles/wiki +make clean +./test.bash ) || exit $? -$BROKEN || -for i in ../misc/dashboard/builder ../misc/goplay -do - (xcd $i - "$GOMAKE" clean - "$GOMAKE" - ) || exit $? -done +echo +echo '#' ../misc/dashboard/builder ../misc/goplay +go build ../misc/dashboard/builder ../misc/goplay -$BROKEN || [ "$GOARCH" == arm ] || (xcd ../test/bench/shootout ./timing.sh -test ) || exit $? -$BROKEN || -(xcd ../test/bench/go1 -"$GOMAKE" test -) || exit $? +echo +echo '#' ../test/bench/go1 +go test ../test/bench/go1 (xcd ../test -./run +time go run run.go ) || exit $? echo +echo '# Checking API compatibility.' +go tool api -c $GOROOT/api/go1.txt + +echo echo ALL TESTS PASSED diff --git a/src/run.bat b/src/run.bat index 9f2af3978..c7a157972 100644 --- a/src/run.bat +++ b/src/run.bat @@ -12,6 +12,10 @@ setlocal set GOBUILDFAIL=0 +:: we disallow local import for non-local packages, if %GOROOT% happens +:: to be under %GOPATH%, then some tests below will fail +set GOPATH= + rem TODO avoid rebuild if possible if x%1==x--no-rebuild goto norebuild @@ -36,7 +40,32 @@ go test sync -short -timeout=120s -cpu=10 if errorlevel 1 goto fail echo. -:: TODO: The other tests in run.bash, especially $GOROOT/test/run. +echo # ..\misc\dashboard\builder ..\misc\goplay +go build ..\misc\dashboard\builder ..\misc\goplay +if errorlevel 1 goto fail +echo. + +:: TODO(brainman): disabled, because it fails with: mkdir C:\Users\ADMINI~1\AppData\Local\Temp\2.....\test\bench\: The filename or extension is too long. +::echo # ..\test\bench\go1 +::go test ..\test\bench\go1 +::if errorlevel 1 goto fail +::echo. + +:: TODO: The other tests in run.bash. + +echo # test +cd ..\test +set FAIL=0 +go run run.go +if errorlevel 1 set FAIL=1 +cd ..\src +echo. +if %FAIL%==1 goto fail + +echo # Checking API compatibility. +go tool api -c ..\api\go1.txt +if errorlevel 1 goto fail +echo. echo ALL TESTS PASSED goto end diff --git a/src/sudo.bash b/src/sudo.bash index 78cdb0b8a..cccebd342 100755 --- a/src/sudo.bash +++ b/src/sudo.bash @@ -17,7 +17,7 @@ if [[ ! -d /usr/local/bin ]]; then exit 2 fi -eval $(go tool dist env) +eval $(go env) cd $(dirname $0) for i in prof cov do diff --git a/test/bench/garbage/Makefile b/test/bench/garbage/Makefile index 8002a2017..98838453a 100644 --- a/test/bench/garbage/Makefile +++ b/test/bench/garbage/Makefile @@ -2,27 +2,22 @@ # Use of this source code is governed by a BSD-style # license that can be found in the LICENSE file. -include ../../../src/Make.inc - ALL=\ parser\ peano\ tree\ tree2\ -all: $(addsuffix .out, $(ALL)) - -%.$O: %.go stats.go - $(GC) $(GCFLAGS) $(GCIMPORTS) $*.go stats.go +all: $(ALL) -%.out: %.$O - $(LD) -o $@ $*.$O +%: %.go + go build $*.go stats.go -%.bench: %.out - time ./$*.out +%.bench: % + time ./$* bench: $(addsuffix .bench, $(ALL)) clean: - rm -f *.[$(OS)] $(addsuffix .out, $(ALL)) + rm -f $(ALL) diff --git a/test/bench/go1/Makefile b/test/bench/go1/Makefile deleted file mode 100644 index aa5585335..000000000 --- a/test/bench/go1/Makefile +++ /dev/null @@ -1,10 +0,0 @@ -include $(GOROOT)/src/Make.inc - -TARG=go1 -GOFILES=\ - dummy.go\ - -include $(GOROOT)/src/Make.pkg - -test: - echo go1: tests disabled for now TODO diff --git a/test/bench/go1/dummy.go b/test/bench/go1/dummy.go deleted file mode 100644 index 4956bc7b7..000000000 --- a/test/bench/go1/dummy.go +++ /dev/null @@ -1,3 +0,0 @@ -package go1 - -// Nothing to see here: everything is in the _test files. diff --git a/test/bench/go1/gzip_test.go b/test/bench/go1/gzip_test.go index c9eeb175f..fe4c480eb 100644 --- a/test/bench/go1/gzip_test.go +++ b/test/bench/go1/gzip_test.go @@ -21,20 +21,14 @@ var ( func init() { var buf bytes.Buffer - c, err := gz.NewWriter(&buf) - if err != nil { - panic(err) - } + c := gz.NewWriter(&buf) c.Write(jsongunz) c.Close() jsongz = buf.Bytes() } func gzip() { - c, err := gz.NewWriter(ioutil.Discard) - if err != nil { - panic(err) - } + c := gz.NewWriter(ioutil.Discard) if _, err := c.Write(jsongunz); err != nil { panic(err) } diff --git a/test/cmplxdivide.c b/test/cmplxdivide.c index b340f04d8..12dc4f1c0 100644 --- a/test/cmplxdivide.c +++ b/test/cmplxdivide.c @@ -51,6 +51,7 @@ main(void) int i, j, k, l; double complex n, d, q; + printf("// skip\n"); printf("// # generated by cmplxdivide.c\n"); printf("\n"); printf("package main\n"); diff --git a/test/cmplxdivide.go b/test/cmplxdivide.go index 461ee9796..92a98356d 100644 --- a/test/cmplxdivide.go +++ b/test/cmplxdivide.go @@ -1,4 +1,4 @@ -// $G $D/$F.go $D/cmplxdivide1.go && $L $D/$F.$A && ./$A.out +// run cmplxdivide1.go // Copyright 2010 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style diff --git a/test/cmplxdivide1.go b/test/cmplxdivide1.go index 6a1dee9fe..e9031dd15 100644 --- a/test/cmplxdivide1.go +++ b/test/cmplxdivide1.go @@ -1,3 +1,4 @@ +// skip // # generated by cmplxdivide.c package main diff --git a/test/const4.go b/test/const4.go new file mode 100644 index 000000000..677fcefa7 --- /dev/null +++ b/test/const4.go @@ -0,0 +1,77 @@ +// run + +// Copyright 2011 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. + +// Test len constants and non-constants, http://golang.org/issue/3244. + +package main + +var b struct { + a[10]int +} + +var m map[string][20]int + +var s [][30]int + +const ( + n1 = len(b.a) + n2 = len(m[""]) + n3 = len(s[10]) +) + +// Non-constants (see also const5.go). +var ( + n4 = len(f()) + n5 = len(<-c) + n6 = cap(g()) + n7 = cap(<-c1) +) + +var calledF = false + +func f() *[40]int { + calledF = true + return nil +} + +var c = func() chan *[50]int { + c := make(chan *[50]int, 2) + c <- nil + c <- new([50]int) + return c +}() + +var calledG = false + +func g() *[60]int { + calledG = true + return nil +} + +var c1 = func() chan *[70]int { + c := make(chan *[70]int, 2) + c <- nil + c <- new([70]int) + return c +}() + +func main() { + if n1 != 10 || n2 != 20 || n3 != 30 || n4 != 40 || n5 != 50 || n6 != 60 || n7 != 70 { + println("BUG:", n1, n2, n3, n4, n5, n6, n7) + } + if !calledF { + println("BUG: did not call f") + } + if <-c == nil { + println("BUG: did not receive from c") + } + if !calledG { + println("BUG: did not call g") + } + if <-c1 == nil { + println("BUG: did not receive from c1") + } +} diff --git a/test/const5.go b/test/const5.go new file mode 100644 index 000000000..8e0385e9a --- /dev/null +++ b/test/const5.go @@ -0,0 +1,33 @@ +// errorcheck + +// Copyright 2011 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. + +// Test that len non-constants are not constants, http://golang.org/issue/3244. + +package p + +var b struct { + a[10]int +} + +var m map[string][20]int + +var s [][30]int + +func f() *[40]int +var c chan *[50]int + +const ( + n1 = len(b.a) + n2 = len(m[""]) + n3 = len(s[10]) + + n4 = len(f()) // ERROR "must be constant" + n5 = len(<-c) // ERROR "must be constant" + + n6 = cap(f()) // ERROR "must be constant" + n7 = cap(<-c) // ERROR "must be constant" +) + diff --git a/test/ddd.go b/test/ddd.go index f35836331..01768b89f 100644 --- a/test/ddd.go +++ b/test/ddd.go @@ -60,6 +60,10 @@ type U struct { *T } +type I interface { + Sum(...int) int +} + func main() { if x := sum(1, 2, 3); x != 6 { println("sum 6", x) @@ -207,7 +211,14 @@ func main() { println("i(=u).Sum", x) panic("fail") } - /* TODO(rsc): Enable once nested method expressions work. + var s struct { + I + } + s.I = &u + if x := s.Sum(2, 3, 5, 8); x != 18 { + println("s{&u}.Sum", x) + panic("fail") + } if x := (*U).Sum(&U{}, 1, 3, 5, 2); x != 11 { println("(*U).Sum", x) panic("fail") @@ -216,5 +227,4 @@ func main() { println("U.Sum", x) panic("fail") } - */ } diff --git a/test/ddd2.go b/test/ddd2.go index 2edae36b1..a141a39c7 100644 --- a/test/ddd2.go +++ b/test/ddd2.go @@ -1,4 +1,4 @@ -// true +// skip // Copyright 2010 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style diff --git a/test/escape4.go b/test/escape4.go index ab3aee224..887570896 100644 --- a/test/escape4.go +++ b/test/escape4.go @@ -11,8 +11,8 @@ package foo var p *int -func alloc(x int) *int { // ERROR "can inline alloc" "moved to heap: x" - return &x // ERROR "&x escapes to heap" +func alloc(x int) *int { // ERROR "can inline alloc" "moved to heap: x" + return &x // ERROR "&x escapes to heap" } var f func() @@ -22,12 +22,18 @@ func f1() { // Escape analysis used to miss inlined code in closures. - func() { // ERROR "func literal does not escape" - p = alloc(3) // ERROR "inlining call to alloc" "&x escapes to heap" "moved to heap: x" + func() { // ERROR "func literal does not escape" + p = alloc(3) // ERROR "inlining call to alloc" "&x escapes to heap" "moved to heap: x" }() - - f = func() { // ERROR "func literal escapes to heap" - p = alloc(3) // ERROR "inlining call to alloc" "&x escapes to heap" "moved to heap: x" + + f = func() { // ERROR "func literal escapes to heap" + p = alloc(3) // ERROR "inlining call to alloc" "&x escapes to heap" "moved to heap: x" } f() } + +func f2() {} // ERROR "can inline f2" + +// No inline for panic, recover. +func f3() { panic(1) } +func f4() { recover() } diff --git a/test/fixedbugs/bug223.go b/test/fixedbugs/bug223.go index 80f9cae81..eccf574a1 100644 --- a/test/fixedbugs/bug223.go +++ b/test/fixedbugs/bug223.go @@ -1,4 +1,4 @@ -// (! $G $D/$F.go) | grep 'initialization loop' >/dev/null || echo BUG: bug223 +// errorcheck // Copyright 2009 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style @@ -18,4 +18,4 @@ func f() { } } -var m = map[string]F{"f": f} +var m = map[string]F{"f": f} // ERROR "initialization loop" diff --git a/test/fixedbugs/bug388.go b/test/fixedbugs/bug388.go index aa4cc5a97..d41f9ea54 100644 --- a/test/fixedbugs/bug388.go +++ b/test/fixedbugs/bug388.go @@ -9,13 +9,13 @@ package main import "runtime" -func foo(runtime.UintType, i int) { // ERROR "cannot declare name runtime.UintType|named/anonymous mix" - println(i, runtime.UintType) +func foo(runtime.UintType, i int) { // ERROR "cannot declare name runtime.UintType|named/anonymous mix|undefined identifier" + println(i, runtime.UintType) // GCCGO_ERROR "undefined identifier" } func bar(i int) { - runtime.UintType := i // ERROR "cannot declare name runtime.UintType|non-name on left side" - println(runtime.UintType) // GCCGO_ERROR "invalid use of type" + runtime.UintType := i // ERROR "cannot declare name runtime.UintType|non-name on left side|undefined identifier" + println(runtime.UintType) // GCCGO_ERROR "invalid use of type|undefined identifier" } func baz() { diff --git a/test/bugs/424.dir/lib.go b/test/fixedbugs/bug424.dir/lib.go index 97054da3a..97054da3a 100644 --- a/test/bugs/424.dir/lib.go +++ b/test/fixedbugs/bug424.dir/lib.go diff --git a/test/bugs/424.dir/main.go b/test/fixedbugs/bug424.go index 64a600b55..42cff54d4 100644 --- a/test/bugs/424.dir/main.go +++ b/test/fixedbugs/bug424.go @@ -1,15 +1,19 @@ +// $G $D/$F.dir/lib.go && $G $D/$F.go && $L $F.$A && ./$A.out + // Copyright 2012 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. // Tests that method calls through an interface always -// call the the locally defined method localT.m independent +// call the locally defined method localT.m independent // at which embedding level it is and in which order // embedding is done. package main import "./lib" +import "reflect" +import "fmt" type localI interface { m() string @@ -53,9 +57,43 @@ func main() { println("BUG: myT2:", i.m(), "called") } + t3 := new(myT3) + if t3.m() != "main.localT.m" { + println("BUG: t3:", t3.m(), "called") + } + i = new(myT3) if i.m() != "main.localT.m" { + t := reflect.TypeOf(i) + n := t.NumMethod() + for j := 0; j < n; j++ { + m := t.Method(j) + fmt.Printf("#%d: %s.%s %s\n", j, m.PkgPath, m.Name, m.Type) + } println("BUG: myT3:", i.m(), "called") } - + + var t4 struct { + localT + lib.T + } + if t4.m() != "main.localT.m" { + println("BUG: t4:", t4.m(), "called") + } + i = &t4 + if i.m() != "main.localT.m" { + println("BUG: myT4:", i.m(), "called") + } + + var t5 struct { + lib.T + localT + } + if t5.m() != "main.localT.m" { + println("BUG: t5:", t5.m(), "called") + } + i = &t5 + if i.m() != "main.localT.m" { + println("BUG: myT5:", i.m(), "called") + } } diff --git a/test/fixedbugs/bug427.go b/test/fixedbugs/bug427.go new file mode 100644 index 000000000..1239e7a33 --- /dev/null +++ b/test/fixedbugs/bug427.go @@ -0,0 +1,39 @@ +// compile + +// Copyright 2012 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. + +// http://code.google.com/p/go/issues/detail?id=3351 + +package main + +// struct with four fields of basic type +type S struct {a, b, c, d int} + +// struct with five fields of basic type +type T struct {a, b, c, d, e int} + +// array with four elements +type A [4]int + +// array with five elements +type B [5]int + +func main() { + var i interface{} + + var s1, s2 S + i = s1 == s2 + + var t1, t2 T + i = t1 == t2 + + var a1, a2 A + i = a1 == a2 + + var b1, b2 B + i = b1 == b2 + + _ = i +} diff --git a/test/fixedbugs/bug428.go b/test/fixedbugs/bug428.go new file mode 100644 index 000000000..298c45518 --- /dev/null +++ b/test/fixedbugs/bug428.go @@ -0,0 +1,19 @@ +// run + +// Copyright 2012 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. + +// Test that when the compiler expands append inline it does not +// overwrite a value before it needs it (issue 3369). + +package main + +func main() { + s := make([]byte, 5, 6) + copy(s, "12346") + s = append(s[:len(s)-1], '5', s[len(s)-1]) + if string(s) != "123456" { + panic(s) + } +} diff --git a/test/golden.out b/test/golden.out index b7d759450..764f56196 100644 --- a/test/golden.out +++ b/test/golden.out @@ -17,8 +17,5 @@ == bugs/ -=========== bugs/424.go -BUG: myT3: lib.T.m called - =========== bugs/bug395.go bug395 is broken diff --git a/test/import2.go b/test/import2.go index 0acfabcc1..5c275f34b 100644 --- a/test/import2.go +++ b/test/import2.go @@ -1,4 +1,4 @@ -// true # used by import3 +// skip # used by import3 // Copyright 2010 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style diff --git a/test/interface/embed0.go b/test/interface/embed0.go index dee8319e4..e2ee20ade 100644 --- a/test/interface/embed0.go +++ b/test/interface/embed0.go @@ -1,4 +1,4 @@ -// true # used by embed1.go +// skip # used by embed1.go // Copyright 2009 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style diff --git a/test/interface/private1.go b/test/interface/private1.go index 9c831a2f4..3281c38be 100644 --- a/test/interface/private1.go +++ b/test/interface/private1.go @@ -1,4 +1,4 @@ -// true # used by private.go +// skip # used by private.go // Copyright 2011 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style diff --git a/test/interface/recursive1.go b/test/interface/recursive1.go index 524dda82c..cc3cdc37f 100644 --- a/test/interface/recursive1.go +++ b/test/interface/recursive1.go @@ -1,4 +1,4 @@ -// true # used by recursive2 +// skip # used by recursive2 // Copyright 2012 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style diff --git a/test/method.go b/test/method.go index 6080ce5a7..0c239afbd 100644 --- a/test/method.go +++ b/test/method.go @@ -94,27 +94,27 @@ func main() { } if val(s) != 1 { - println("s.val:", val(s)) + println("val(s):", val(s)) panic("fail") } if val(ps) != 2 { - println("ps.val:", val(ps)) + println("val(ps):", val(ps)) panic("fail") } if val(i) != 3 { - println("i.val:", val(i)) + println("val(i):", val(i)) panic("fail") } if val(pi) != 4 { - println("pi.val:", val(pi)) + println("val(pi):", val(pi)) panic("fail") } if val(t) != 7 { - println("t.val:", val(t)) + println("val(t):", val(t)) panic("fail") } if val(pt) != 8 { - println("pt.val:", val(pt)) + println("val(pt):", val(pt)) panic("fail") } @@ -127,4 +127,124 @@ func main() { println("Val.val(v):", Val.val(v)) panic("fail") } + + var zs struct { S } + var zps struct { *S1 } + var zi struct { I } + var zpi struct { *I1 } + var zpt struct { *T1 } + var zt struct { T } + var zv struct { Val } + + if zs.val() != 1 { + println("zs.val:", zs.val()) + panic("fail") + } + if zps.val() != 2 { + println("zps.val:", zps.val()) + panic("fail") + } + if zi.val() != 3 { + println("zi.val:", zi.val()) + panic("fail") + } + if zpi.val() != 4 { + println("zpi.val:", zpi.val()) + panic("fail") + } + if zt.val() != 7 { + println("zt.val:", zt.val()) + panic("fail") + } + if zpt.val() != 8 { + println("zpt.val:", zpt.val()) + panic("fail") + } + + if val(zs) != 1 { + println("val(zs):", val(zs)) + panic("fail") + } + if val(zps) != 2 { + println("val(zps):", val(zps)) + panic("fail") + } + if val(zi) != 3 { + println("val(zi):", val(zi)) + panic("fail") + } + if val(zpi) != 4 { + println("val(zpi):", val(zpi)) + panic("fail") + } + if val(zt) != 7 { + println("val(zt):", val(zt)) + panic("fail") + } + if val(zpt) != 8 { + println("val(zpt):", val(zpt)) + panic("fail") + } + + zv.Val = zi + if zv.val() != 3 { + println("zv.val():", zv.val()) + panic("fail") + } + + if (&zs).val() != 1 { + println("(&zs).val:", (&zs).val()) + panic("fail") + } + if (&zps).val() != 2 { + println("(&zps).val:", (&zps).val()) + panic("fail") + } + if (&zi).val() != 3 { + println("(&zi).val:", (&zi).val()) + panic("fail") + } + if (&zpi).val() != 4 { + println("(&zpi).val:", (&zpi).val()) + panic("fail") + } + if (&zt).val() != 7 { + println("(&zt).val:", (&zt).val()) + panic("fail") + } + if (&zpt).val() != 8 { + println("(&zpt).val:", (&zpt).val()) + panic("fail") + } + + if val(&zs) != 1 { + println("val(&zs):", val(&zs)) + panic("fail") + } + if val(&zps) != 2 { + println("val(&zps):", val(&zps)) + panic("fail") + } + if val(&zi) != 3 { + println("val(&zi):", val(&zi)) + panic("fail") + } + if val(&zpi) != 4 { + println("val(&zpi):", val(&zpi)) + panic("fail") + } + if val(&zt) != 7 { + println("val(&zt):", val(&zt)) + panic("fail") + } + if val(&zpt) != 8 { + println("val(&zpt):", val(&zpt)) + panic("fail") + } + + zv.Val = &zi + if zv.val() != 3 { + println("zv.val():", zv.val()) + panic("fail") + } } diff --git a/test/method4a.go b/test/method4a.go index 11fa218f3..d23039bfa 100644 --- a/test/method4a.go +++ b/test/method4a.go @@ -1,4 +1,4 @@ -// true +// skip // Copyright 2012 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style @@ -29,6 +29,8 @@ export GOTRACEBACK=0 export LANG=C unset GREP_OPTIONS # in case user has a non-standard set +unset GOROOT_FINAL # breaks ./ imports + failed=0 PATH=${GOBIN:-$GOROOT/bin}:`pwd`:/bin:/usr/bin:/usr/local/bin diff --git a/test/run.go b/test/run.go index 3ba35f9d4..ac6e3c0e2 100644 --- a/test/run.go +++ b/test/run.go @@ -1,4 +1,4 @@ -// #ignore +// skip // Copyright 2012 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style @@ -30,7 +30,7 @@ import ( var ( verbose = flag.Bool("v", false, "verbose. if set, parallelism is set to 1.") - numParallel = flag.Int("n", 8, "number of parallel tests to run") + numParallel = flag.Int("n", runtime.NumCPU(), "number of parallel tests to run") summary = flag.Bool("summary", false, "show summary of results") showSkips = flag.Bool("show_skips", false, "show skipped tests") ) @@ -60,13 +60,15 @@ const maxTests = 5000 func main() { flag.Parse() + + // Disable parallelism if printing if *verbose { *numParallel = 1 } ratec = make(chan bool, *numParallel) var err error - letter, err = build.ArchChar(build.DefaultContext.GOARCH) + letter, err = build.ArchChar(build.Default.GOARCH) check(err) gc = letter + "g" ld = letter + "l" @@ -145,7 +147,7 @@ func goFiles(dir string) []string { check(err) names := []string{} for _, name := range dirnames { - if strings.HasSuffix(name, ".go") { + if !strings.HasPrefix(name, ".") && strings.HasSuffix(name, ".go") { names = append(names, name) } } @@ -170,7 +172,7 @@ type test struct { donec chan bool // closed when done src string - action string // "compile", "build", "run", "errorcheck" + action string // "compile", "build", "run", "errorcheck", "skip" tempDir string err error @@ -208,6 +210,8 @@ func runTests() { } } +var cwd, _ = os.Getwd() + func (t *test) goFileName() string { return filepath.Join(t.dir, t.gofile) } @@ -235,7 +239,13 @@ func (t *test) run() { if strings.HasPrefix(action, "//") { action = action[2:] } - action = strings.TrimSpace(action) + + var args []string + f := strings.Fields(action) + if len(f) > 0 { + action = f[0] + args = f[1:] + } switch action { case "cmpout": @@ -243,6 +253,9 @@ func (t *test) run() { fallthrough case "compile", "build", "run", "errorcheck": t.action = action + case "skip": + t.action = "skip" + return default: t.err = skipError("skipped; unknown pattern: " + action) t.action = "??" @@ -255,66 +268,55 @@ func (t *test) run() { err = ioutil.WriteFile(filepath.Join(t.tempDir, t.gofile), srcBytes, 0644) check(err) - cmd := exec.Command("go", "tool", gc, "-e", "-o", "a."+letter, t.gofile) - var buf bytes.Buffer - cmd.Stdout = &buf - cmd.Stderr = &buf - cmd.Dir = t.tempDir - err = cmd.Run() - out := buf.String() - - if action == "errorcheck" { - t.err = t.errorCheck(out) - return - } + // A few tests (of things like the environment) require these to be set. + os.Setenv("GOOS", runtime.GOOS) + os.Setenv("GOARCH", runtime.GOARCH) - if err != nil { - t.err = fmt.Errorf("build = %v (%q)", err, out) - return + useTmp := true + runcmd := func(args ...string) ([]byte, error) { + cmd := exec.Command(args[0], args[1:]...) + var buf bytes.Buffer + cmd.Stdout = &buf + cmd.Stderr = &buf + if useTmp { + cmd.Dir = t.tempDir + } + err := cmd.Run() + return buf.Bytes(), err } - if action == "compile" { + long := filepath.Join(cwd, t.goFileName()) + switch action { + default: + t.err = fmt.Errorf("unimplemented action %q", action) + + case "errorcheck": + out, _ := runcmd("go", "tool", gc, "-e", "-o", "a."+letter, long) + t.err = t.errorCheck(string(out), long, t.gofile) return - } - if action == "build" || action == "run" { - buf.Reset() - cmd = exec.Command("go", "tool", ld, "-o", "a.out", "a."+letter) - cmd.Stdout = &buf - cmd.Stderr = &buf - cmd.Dir = t.tempDir - err = cmd.Run() - out = buf.String() + case "compile": + out, err := runcmd("go", "tool", gc, "-e", "-o", "a."+letter, long) if err != nil { - t.err = fmt.Errorf("link = %v (%q)", err, out) - return + t.err = fmt.Errorf("%s\n%s", err, out) } - if action == "build" { - return - } - } - if action == "run" { - buf.Reset() - cmd = exec.Command(filepath.Join(t.tempDir, "a.out")) - cmd.Stdout = &buf - cmd.Stderr = &buf - cmd.Dir = t.tempDir - cmd.Env = append(cmd.Env, "GOARCH="+runtime.GOARCH) - err = cmd.Run() - out = buf.String() + case "build": + out, err := runcmd("go", "build", "-o", "a.exe", long) if err != nil { - t.err = fmt.Errorf("run = %v (%q)", err, out) - return + t.err = fmt.Errorf("%s\n%s", err, out) } - if out != t.expectedOutput() { - t.err = fmt.Errorf("output differs; got:\n%s", out) + case "run": + useTmp = false + out, err := runcmd(append([]string{"go", "run", t.goFileName()}, args...)...) + if err != nil { + t.err = fmt.Errorf("%s\n%s", err, out) + } + if string(out) != t.expectedOutput() { + t.err = fmt.Errorf("incorrect output\n%s", out) } - return } - - t.err = fmt.Errorf("unimplemented action %q", action) } func (t *test) String() string { @@ -335,7 +337,7 @@ func (t *test) expectedOutput() string { return string(b) } -func (t *test) errorCheck(outStr string) (err error) { +func (t *test) errorCheck(outStr string, full, short string) (err error) { defer func() { if *verbose && err != nil { log.Printf("%s gc output:\n%s", t, outStr) @@ -354,11 +356,16 @@ func (t *test) errorCheck(outStr string) (err error) { } } + // Cut directory name. + for i := range out { + out[i] = strings.Replace(out[i], full, short, -1) + } + for _, we := range t.wantedErrors() { var errmsgs []string errmsgs, out = partitionStrings(we.filterRe, out) if len(errmsgs) == 0 { - errs = append(errs, fmt.Errorf("errchk: %s:%d: missing expected error: %s", we.file, we.lineNum, we.reStr)) + errs = append(errs, fmt.Errorf("%s:%d: missing error %q", we.file, we.lineNum, we.reStr)) continue } matched := false @@ -370,7 +377,7 @@ func (t *test) errorCheck(outStr string) (err error) { } } if !matched { - errs = append(errs, fmt.Errorf("errchk: %s:%d: error(s) on line didn't match pattern: %s", we.file, we.lineNum, we.reStr)) + errs = append(errs, fmt.Errorf("%s:%d: no match for %q in%s", we.file, we.lineNum, we.reStr, strings.Join(out, "\n"))) continue } } @@ -382,7 +389,7 @@ func (t *test) errorCheck(outStr string) (err error) { return errs[0] } var buf bytes.Buffer - buf.WriteString("Multiple errors:\n") + fmt.Fprintf(&buf, "\n") for _, err := range errs { fmt.Fprintf(&buf, "%s\n", err.Error()) } diff --git a/test/testlib b/test/testlib index 2e4fefc8c..3858431a7 100644 --- a/test/testlib +++ b/test/testlib @@ -14,7 +14,21 @@ build() { } run() { - $G $D/$F.go && $L $F.$A && ./$A.out "$@" + gofiles="" + ingo=true + while $ingo; do + case "$1" in + *.go) + gofiles="$gofiles $1" + shift + ;; + *) + ingo=false + ;; + esac + done + + $G $D/$F.go $gofiles && $L $F.$A && ./$A.out "$@" } cmpout() { @@ -24,3 +38,7 @@ cmpout() { errorcheck() { errchk $G -e $D/$F.go } + +skip() { + true +} |