mirror of
https://github.com/DNSCrypt/dnscrypt-proxy.git
synced 2025-04-04 13:47:39 +03:00
Update deps
This commit is contained in:
parent
010cedd7b8
commit
2739db2733
88 changed files with 1255 additions and 1738 deletions
6
go.mod
6
go.mod
|
@ -22,9 +22,9 @@ require (
|
||||||
github.com/kardianos/service v1.0.1-0.20191211031725-3c356ae54c8a
|
github.com/kardianos/service v1.0.1-0.20191211031725-3c356ae54c8a
|
||||||
github.com/miekg/dns v1.1.29
|
github.com/miekg/dns v1.1.29
|
||||||
github.com/powerman/check v1.2.1
|
github.com/powerman/check v1.2.1
|
||||||
golang.org/x/crypto v0.0.0-20200423211502-4bdfaf469ed5
|
golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37
|
||||||
golang.org/x/net v0.0.0-20200425230154-ff2c4b7c35a0
|
golang.org/x/net v0.0.0-20200602114024-627f9648deb9
|
||||||
golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f
|
golang.org/x/sys v0.0.0-20200602100848-8d3cce7afc34
|
||||||
golang.org/x/text v0.3.2 // indirect
|
golang.org/x/text v0.3.2 // indirect
|
||||||
gopkg.in/natefinch/lumberjack.v2 v2.0.0
|
gopkg.in/natefinch/lumberjack.v2 v2.0.0
|
||||||
gopkg.in/yaml.v2 v2.2.7 // indirect
|
gopkg.in/yaml.v2 v2.2.7 // indirect
|
||||||
|
|
18
go.sum
18
go.sum
|
@ -64,19 +64,15 @@ github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9
|
||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||||
golang.org/x/crypto v0.0.0-20190909091759-094676da4a83/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
golang.org/x/crypto v0.0.0-20190909091759-094676da4a83/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||||
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||||
golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59 h1:3zb4D3T4G8jdExgVU/95+vQXfpEPiMdCaZgmGVxjNHM=
|
golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37 h1:cg5LA/zNPRzIXIWSCxQW10Rvpy94aQh3LT/ShoCpkHw=
|
||||||
golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||||
golang.org/x/crypto v0.0.0-20200423211502-4bdfaf469ed5 h1:Q7tZBpemrlsc2I7IyODzhtallWRSm4Q0d09pL6XbQtU=
|
|
||||||
golang.org/x/crypto v0.0.0-20200423211502-4bdfaf469ed5/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
|
||||||
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
|
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
|
||||||
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||||
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e h1:3G+cUijn7XD+S4eJFddp53Pv7+slrESplyjG25HgL+k=
|
golang.org/x/net v0.0.0-20200602114024-627f9648deb9 h1:pNX+40auqi2JqRfOP1akLGtYcn15TUbkhwuCO3foqqM=
|
||||||
golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
golang.org/x/net v0.0.0-20200602114024-627f9648deb9/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
||||||
golang.org/x/net v0.0.0-20200425230154-ff2c4b7c35a0 h1:Jcxah/M+oLZ/R4/z5RzfPzGbPXnVDPkEDtf2JnuxN+U=
|
|
||||||
golang.org/x/net v0.0.0-20200425230154-ff2c4b7c35a0/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
|
||||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58 h1:8gQV6CLnAEikrhgkHFbMAEhagSSnXWGV915qUMm9mrU=
|
golang.org/x/sync v0.0.0-20190423024810-112230192c58 h1:8gQV6CLnAEikrhgkHFbMAEhagSSnXWGV915qUMm9mrU=
|
||||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sys v0.0.0-20190204203706-41f3e6584952/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20190204203706-41f3e6584952/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
|
@ -88,10 +84,8 @@ golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7w
|
||||||
golang.org/x/sys v0.0.0-20191029155521-f43be2a4598c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20191029155521-f43be2a4598c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd h1:xhmwyvizuTgC2qz7ZlMluP20uW+C3Rm0FD/WLDX8884=
|
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd h1:xhmwyvizuTgC2qz7ZlMluP20uW+C3Rm0FD/WLDX8884=
|
||||||
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20200331124033-c3d80250170d h1:nc5K6ox/4lTFbMVSL9WRR81ixkcwXThoiF6yf+R9scA=
|
golang.org/x/sys v0.0.0-20200602100848-8d3cce7afc34 h1:u6CI7A++8r4SItZHYe2cWeAEndN4p1p+3Oum/Ft2EzM=
|
||||||
golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20200602100848-8d3cce7afc34/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f h1:gWF768j/LaZugp8dyS4UwsslYCYz9XgFxvlgsn0n9H8=
|
|
||||||
golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
|
golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
|
||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
|
golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
|
||||||
|
|
2
vendor/golang.org/x/crypto/poly1305/mac_noasm.go
generated
vendored
2
vendor/golang.org/x/crypto/poly1305/mac_noasm.go
generated
vendored
|
@ -2,7 +2,7 @@
|
||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build !amd64,!ppc64le gccgo purego
|
// +build !amd64,!ppc64le,!s390x gccgo purego
|
||||||
|
|
||||||
package poly1305
|
package poly1305
|
||||||
|
|
||||||
|
|
4
vendor/golang.org/x/crypto/poly1305/poly1305.go
generated
vendored
4
vendor/golang.org/x/crypto/poly1305/poly1305.go
generated
vendored
|
@ -26,7 +26,9 @@ const TagSize = 16
|
||||||
// 16-byte result into out. Authenticating two different messages with the same
|
// 16-byte result into out. Authenticating two different messages with the same
|
||||||
// key allows an attacker to forge messages at will.
|
// key allows an attacker to forge messages at will.
|
||||||
func Sum(out *[16]byte, m []byte, key *[32]byte) {
|
func Sum(out *[16]byte, m []byte, key *[32]byte) {
|
||||||
sum(out, m, key)
|
h := New(key)
|
||||||
|
h.Write(m)
|
||||||
|
h.Sum(out[:0])
|
||||||
}
|
}
|
||||||
|
|
||||||
// Verify returns true if mac is a valid authenticator for m with the given key.
|
// Verify returns true if mac is a valid authenticator for m with the given key.
|
||||||
|
|
3
vendor/golang.org/x/crypto/poly1305/sum_generic.go
generated
vendored
3
vendor/golang.org/x/crypto/poly1305/sum_generic.go
generated
vendored
|
@ -41,7 +41,8 @@ func newMACGeneric(key *[32]byte) macGeneric {
|
||||||
// the value of [x0, x1, x2] is x[0] + x[1] * 2⁶⁴ + x[2] * 2¹²⁸.
|
// the value of [x0, x1, x2] is x[0] + x[1] * 2⁶⁴ + x[2] * 2¹²⁸.
|
||||||
type macState struct {
|
type macState struct {
|
||||||
// h is the main accumulator. It is to be interpreted modulo 2¹³⁰ - 5, but
|
// h is the main accumulator. It is to be interpreted modulo 2¹³⁰ - 5, but
|
||||||
// can grow larger during and after rounds.
|
// can grow larger during and after rounds. It must, however, remain below
|
||||||
|
// 2 * (2¹³⁰ - 5).
|
||||||
h [3]uint64
|
h [3]uint64
|
||||||
// r and s are the private key components.
|
// r and s are the private key components.
|
||||||
r [2]uint64
|
r [2]uint64
|
||||||
|
|
18
vendor/golang.org/x/crypto/poly1305/sum_noasm.go
generated
vendored
18
vendor/golang.org/x/crypto/poly1305/sum_noasm.go
generated
vendored
|
@ -1,18 +0,0 @@
|
||||||
// Copyright 2018 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.
|
|
||||||
|
|
||||||
// At this point only s390x has an assembly implementation of sum. All other
|
|
||||||
// platforms have assembly implementations of mac, and just define sum as using
|
|
||||||
// that through New. Once s390x is ported, this file can be deleted and the body
|
|
||||||
// of sum moved into Sum.
|
|
||||||
|
|
||||||
// +build !go1.11 !s390x gccgo purego
|
|
||||||
|
|
||||||
package poly1305
|
|
||||||
|
|
||||||
func sum(out *[TagSize]byte, msg []byte, key *[32]byte) {
|
|
||||||
h := New(key)
|
|
||||||
h.Write(msg)
|
|
||||||
h.Sum(out[:0])
|
|
||||||
}
|
|
80
vendor/golang.org/x/crypto/poly1305/sum_s390x.go
generated
vendored
80
vendor/golang.org/x/crypto/poly1305/sum_s390x.go
generated
vendored
|
@ -2,7 +2,7 @@
|
||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.11,!gccgo,!purego
|
// +build !gccgo,!purego
|
||||||
|
|
||||||
package poly1305
|
package poly1305
|
||||||
|
|
||||||
|
@ -10,30 +10,66 @@ import (
|
||||||
"golang.org/x/sys/cpu"
|
"golang.org/x/sys/cpu"
|
||||||
)
|
)
|
||||||
|
|
||||||
// poly1305vx is an assembly implementation of Poly1305 that uses vector
|
// updateVX is an assembly implementation of Poly1305 that uses vector
|
||||||
// instructions. It must only be called if the vector facility (vx) is
|
// instructions. It must only be called if the vector facility (vx) is
|
||||||
// available.
|
// available.
|
||||||
//go:noescape
|
//go:noescape
|
||||||
func poly1305vx(out *[16]byte, m *byte, mlen uint64, key *[32]byte)
|
func updateVX(state *macState, msg []byte)
|
||||||
|
|
||||||
// poly1305vmsl is an assembly implementation of Poly1305 that uses vector
|
// mac is a replacement for macGeneric that uses a larger buffer and redirects
|
||||||
// instructions, including VMSL. It must only be called if the vector facility (vx) is
|
// calls that would have gone to updateGeneric to updateVX if the vector
|
||||||
// available and if VMSL is supported.
|
// facility is installed.
|
||||||
//go:noescape
|
//
|
||||||
func poly1305vmsl(out *[16]byte, m *byte, mlen uint64, key *[32]byte)
|
// A larger buffer is required for good performance because the vector
|
||||||
|
// implementation has a higher fixed cost per call than the generic
|
||||||
|
// implementation.
|
||||||
|
type mac struct {
|
||||||
|
macState
|
||||||
|
|
||||||
func sum(out *[16]byte, m []byte, key *[32]byte) {
|
buffer [16 * TagSize]byte // size must be a multiple of block size (16)
|
||||||
if cpu.S390X.HasVX {
|
offset int
|
||||||
var mPtr *byte
|
}
|
||||||
if len(m) > 0 {
|
|
||||||
mPtr = &m[0]
|
func (h *mac) Write(p []byte) (int, error) {
|
||||||
}
|
nn := len(p)
|
||||||
if cpu.S390X.HasVXE && len(m) > 256 {
|
if h.offset > 0 {
|
||||||
poly1305vmsl(out, mPtr, uint64(len(m)), key)
|
n := copy(h.buffer[h.offset:], p)
|
||||||
} else {
|
if h.offset+n < len(h.buffer) {
|
||||||
poly1305vx(out, mPtr, uint64(len(m)), key)
|
h.offset += n
|
||||||
}
|
return nn, nil
|
||||||
} else {
|
}
|
||||||
sumGeneric(out, m, key)
|
p = p[n:]
|
||||||
}
|
h.offset = 0
|
||||||
|
if cpu.S390X.HasVX {
|
||||||
|
updateVX(&h.macState, h.buffer[:])
|
||||||
|
} else {
|
||||||
|
updateGeneric(&h.macState, h.buffer[:])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tail := len(p) % len(h.buffer) // number of bytes to copy into buffer
|
||||||
|
body := len(p) - tail // number of bytes to process now
|
||||||
|
if body > 0 {
|
||||||
|
if cpu.S390X.HasVX {
|
||||||
|
updateVX(&h.macState, p[:body])
|
||||||
|
} else {
|
||||||
|
updateGeneric(&h.macState, p[:body])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
h.offset = copy(h.buffer[:], p[body:]) // copy tail bytes - can be 0
|
||||||
|
return nn, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *mac) Sum(out *[TagSize]byte) {
|
||||||
|
state := h.macState
|
||||||
|
remainder := h.buffer[:h.offset]
|
||||||
|
|
||||||
|
// Use the generic implementation if we have 2 or fewer blocks left
|
||||||
|
// to sum. The vector implementation has a higher startup time.
|
||||||
|
if cpu.S390X.HasVX && len(remainder) > 2*TagSize {
|
||||||
|
updateVX(&state, remainder)
|
||||||
|
} else if len(remainder) > 0 {
|
||||||
|
updateGeneric(&state, remainder)
|
||||||
|
}
|
||||||
|
finalize(out, &state.h, &state.s)
|
||||||
}
|
}
|
||||||
|
|
633
vendor/golang.org/x/crypto/poly1305/sum_s390x.s
generated
vendored
633
vendor/golang.org/x/crypto/poly1305/sum_s390x.s
generated
vendored
|
@ -2,115 +2,187 @@
|
||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.11,!gccgo,!purego
|
// +build !gccgo,!purego
|
||||||
|
|
||||||
#include "textflag.h"
|
#include "textflag.h"
|
||||||
|
|
||||||
// Implementation of Poly1305 using the vector facility (vx).
|
// This implementation of Poly1305 uses the vector facility (vx)
|
||||||
|
// to process up to 2 blocks (32 bytes) per iteration using an
|
||||||
|
// algorithm based on the one described in:
|
||||||
|
//
|
||||||
|
// NEON crypto, Daniel J. Bernstein & Peter Schwabe
|
||||||
|
// https://cryptojedi.org/papers/neoncrypto-20120320.pdf
|
||||||
|
//
|
||||||
|
// This algorithm uses 5 26-bit limbs to represent a 130-bit
|
||||||
|
// value. These limbs are, for the most part, zero extended and
|
||||||
|
// placed into 64-bit vector register elements. Each vector
|
||||||
|
// register is 128-bits wide and so holds 2 of these elements.
|
||||||
|
// Using 26-bit limbs allows us plenty of headroom to accomodate
|
||||||
|
// accumulations before and after multiplication without
|
||||||
|
// overflowing either 32-bits (before multiplication) or 64-bits
|
||||||
|
// (after multiplication).
|
||||||
|
//
|
||||||
|
// In order to parallelise the operations required to calculate
|
||||||
|
// the sum we use two separate accumulators and then sum those
|
||||||
|
// in an extra final step. For compatibility with the generic
|
||||||
|
// implementation we perform this summation at the end of every
|
||||||
|
// updateVX call.
|
||||||
|
//
|
||||||
|
// To use two accumulators we must multiply the message blocks
|
||||||
|
// by r² rather than r. Only the final message block should be
|
||||||
|
// multiplied by r.
|
||||||
|
//
|
||||||
|
// Example:
|
||||||
|
//
|
||||||
|
// We want to calculate the sum (h) for a 64 byte message (m):
|
||||||
|
//
|
||||||
|
// h = m[0:16]r⁴ + m[16:32]r³ + m[32:48]r² + m[48:64]r
|
||||||
|
//
|
||||||
|
// To do this we split the calculation into the even indices
|
||||||
|
// and odd indices of the message. These form our SIMD 'lanes':
|
||||||
|
//
|
||||||
|
// h = m[ 0:16]r⁴ + m[32:48]r² + <- lane 0
|
||||||
|
// m[16:32]r³ + m[48:64]r <- lane 1
|
||||||
|
//
|
||||||
|
// To calculate this iteratively we refactor so that both lanes
|
||||||
|
// are written in terms of r² and r:
|
||||||
|
//
|
||||||
|
// h = (m[ 0:16]r² + m[32:48])r² + <- lane 0
|
||||||
|
// (m[16:32]r² + m[48:64])r <- lane 1
|
||||||
|
// ^ ^
|
||||||
|
// | coefficients for second iteration
|
||||||
|
// coefficients for first iteration
|
||||||
|
//
|
||||||
|
// So in this case we would have two iterations. In the first
|
||||||
|
// both lanes are multiplied by r². In the second only the
|
||||||
|
// first lane is multiplied by r² and the second lane is
|
||||||
|
// instead multiplied by r. This gives use the odd and even
|
||||||
|
// powers of r that we need from the original equation.
|
||||||
|
//
|
||||||
|
// Notation:
|
||||||
|
//
|
||||||
|
// h - accumulator
|
||||||
|
// r - key
|
||||||
|
// m - message
|
||||||
|
//
|
||||||
|
// [a, b] - SIMD register holding two 64-bit values
|
||||||
|
// [a, b, c, d] - SIMD register holding four 32-bit values
|
||||||
|
// xᵢ[n] - limb n of variable x with bit width i
|
||||||
|
//
|
||||||
|
// Limbs are expressed in little endian order, so for 26-bit
|
||||||
|
// limbs x₂₆[4] will be the most significant limb and x₂₆[0]
|
||||||
|
// will be the least significant limb.
|
||||||
|
|
||||||
// constants
|
// masking constants
|
||||||
#define MOD26 V0
|
#define MOD24 V0 // [0x0000000000ffffff, 0x0000000000ffffff] - mask low 24-bits
|
||||||
#define EX0 V1
|
#define MOD26 V1 // [0x0000000003ffffff, 0x0000000003ffffff] - mask low 26-bits
|
||||||
#define EX1 V2
|
|
||||||
#define EX2 V3
|
|
||||||
|
|
||||||
// temporaries
|
// expansion constants (see EXPAND macro)
|
||||||
#define T_0 V4
|
#define EX0 V2
|
||||||
#define T_1 V5
|
#define EX1 V3
|
||||||
#define T_2 V6
|
#define EX2 V4
|
||||||
#define T_3 V7
|
|
||||||
#define T_4 V8
|
|
||||||
|
|
||||||
// key (r)
|
// key (r², r or 1 depending on context)
|
||||||
#define R_0 V9
|
#define R_0 V5
|
||||||
#define R_1 V10
|
#define R_1 V6
|
||||||
#define R_2 V11
|
#define R_2 V7
|
||||||
#define R_3 V12
|
#define R_3 V8
|
||||||
#define R_4 V13
|
#define R_4 V9
|
||||||
#define R5_1 V14
|
|
||||||
#define R5_2 V15
|
|
||||||
#define R5_3 V16
|
|
||||||
#define R5_4 V17
|
|
||||||
#define RSAVE_0 R5
|
|
||||||
#define RSAVE_1 R6
|
|
||||||
#define RSAVE_2 R7
|
|
||||||
#define RSAVE_3 R8
|
|
||||||
#define RSAVE_4 R9
|
|
||||||
#define R5SAVE_1 V28
|
|
||||||
#define R5SAVE_2 V29
|
|
||||||
#define R5SAVE_3 V30
|
|
||||||
#define R5SAVE_4 V31
|
|
||||||
|
|
||||||
// message block
|
// precalculated coefficients (5r², 5r or 0 depending on context)
|
||||||
#define F_0 V18
|
#define R5_1 V10
|
||||||
#define F_1 V19
|
#define R5_2 V11
|
||||||
#define F_2 V20
|
#define R5_3 V12
|
||||||
#define F_3 V21
|
#define R5_4 V13
|
||||||
#define F_4 V22
|
|
||||||
|
|
||||||
// accumulator
|
// message block (m)
|
||||||
#define H_0 V23
|
#define M_0 V14
|
||||||
#define H_1 V24
|
#define M_1 V15
|
||||||
#define H_2 V25
|
#define M_2 V16
|
||||||
#define H_3 V26
|
#define M_3 V17
|
||||||
#define H_4 V27
|
#define M_4 V18
|
||||||
|
|
||||||
GLOBL ·keyMask<>(SB), RODATA, $16
|
// accumulator (h)
|
||||||
DATA ·keyMask<>+0(SB)/8, $0xffffff0ffcffff0f
|
#define H_0 V19
|
||||||
DATA ·keyMask<>+8(SB)/8, $0xfcffff0ffcffff0f
|
#define H_1 V20
|
||||||
|
#define H_2 V21
|
||||||
|
#define H_3 V22
|
||||||
|
#define H_4 V23
|
||||||
|
|
||||||
GLOBL ·bswapMask<>(SB), RODATA, $16
|
// temporary registers (for short-lived values)
|
||||||
DATA ·bswapMask<>+0(SB)/8, $0x0f0e0d0c0b0a0908
|
#define T_0 V24
|
||||||
DATA ·bswapMask<>+8(SB)/8, $0x0706050403020100
|
#define T_1 V25
|
||||||
|
#define T_2 V26
|
||||||
|
#define T_3 V27
|
||||||
|
#define T_4 V28
|
||||||
|
|
||||||
GLOBL ·constants<>(SB), RODATA, $64
|
GLOBL ·constants<>(SB), RODATA, $0x30
|
||||||
// MOD26
|
|
||||||
DATA ·constants<>+0(SB)/8, $0x3ffffff
|
|
||||||
DATA ·constants<>+8(SB)/8, $0x3ffffff
|
|
||||||
// EX0
|
// EX0
|
||||||
DATA ·constants<>+16(SB)/8, $0x0006050403020100
|
DATA ·constants<>+0x00(SB)/8, $0x0006050403020100
|
||||||
DATA ·constants<>+24(SB)/8, $0x1016151413121110
|
DATA ·constants<>+0x08(SB)/8, $0x1016151413121110
|
||||||
// EX1
|
// EX1
|
||||||
DATA ·constants<>+32(SB)/8, $0x060c0b0a09080706
|
DATA ·constants<>+0x10(SB)/8, $0x060c0b0a09080706
|
||||||
DATA ·constants<>+40(SB)/8, $0x161c1b1a19181716
|
DATA ·constants<>+0x18(SB)/8, $0x161c1b1a19181716
|
||||||
// EX2
|
// EX2
|
||||||
DATA ·constants<>+48(SB)/8, $0x0d0d0d0d0d0f0e0d
|
DATA ·constants<>+0x20(SB)/8, $0x0d0d0d0d0d0f0e0d
|
||||||
DATA ·constants<>+56(SB)/8, $0x1d1d1d1d1d1f1e1d
|
DATA ·constants<>+0x28(SB)/8, $0x1d1d1d1d1d1f1e1d
|
||||||
|
|
||||||
// h = (f*g) % (2**130-5) [partial reduction]
|
// MULTIPLY multiplies each lane of f and g, partially reduced
|
||||||
|
// modulo 2¹³⁰ - 5. The result, h, consists of partial products
|
||||||
|
// in each lane that need to be reduced further to produce the
|
||||||
|
// final result.
|
||||||
|
//
|
||||||
|
// h₁₃₀ = (f₁₃₀g₁₃₀) % 2¹³⁰ + (5f₁₃₀g₁₃₀) / 2¹³⁰
|
||||||
|
//
|
||||||
|
// Note that the multiplication by 5 of the high bits is
|
||||||
|
// achieved by precalculating the multiplication of four of the
|
||||||
|
// g coefficients by 5. These are g51-g54.
|
||||||
#define MULTIPLY(f0, f1, f2, f3, f4, g0, g1, g2, g3, g4, g51, g52, g53, g54, h0, h1, h2, h3, h4) \
|
#define MULTIPLY(f0, f1, f2, f3, f4, g0, g1, g2, g3, g4, g51, g52, g53, g54, h0, h1, h2, h3, h4) \
|
||||||
VMLOF f0, g0, h0 \
|
VMLOF f0, g0, h0 \
|
||||||
VMLOF f0, g1, h1 \
|
|
||||||
VMLOF f0, g2, h2 \
|
|
||||||
VMLOF f0, g3, h3 \
|
VMLOF f0, g3, h3 \
|
||||||
|
VMLOF f0, g1, h1 \
|
||||||
VMLOF f0, g4, h4 \
|
VMLOF f0, g4, h4 \
|
||||||
|
VMLOF f0, g2, h2 \
|
||||||
VMLOF f1, g54, T_0 \
|
VMLOF f1, g54, T_0 \
|
||||||
VMLOF f1, g0, T_1 \
|
|
||||||
VMLOF f1, g1, T_2 \
|
|
||||||
VMLOF f1, g2, T_3 \
|
VMLOF f1, g2, T_3 \
|
||||||
|
VMLOF f1, g0, T_1 \
|
||||||
VMLOF f1, g3, T_4 \
|
VMLOF f1, g3, T_4 \
|
||||||
|
VMLOF f1, g1, T_2 \
|
||||||
VMALOF f2, g53, h0, h0 \
|
VMALOF f2, g53, h0, h0 \
|
||||||
VMALOF f2, g54, h1, h1 \
|
|
||||||
VMALOF f2, g0, h2, h2 \
|
|
||||||
VMALOF f2, g1, h3, h3 \
|
VMALOF f2, g1, h3, h3 \
|
||||||
|
VMALOF f2, g54, h1, h1 \
|
||||||
VMALOF f2, g2, h4, h4 \
|
VMALOF f2, g2, h4, h4 \
|
||||||
|
VMALOF f2, g0, h2, h2 \
|
||||||
VMALOF f3, g52, T_0, T_0 \
|
VMALOF f3, g52, T_0, T_0 \
|
||||||
VMALOF f3, g53, T_1, T_1 \
|
|
||||||
VMALOF f3, g54, T_2, T_2 \
|
|
||||||
VMALOF f3, g0, T_3, T_3 \
|
VMALOF f3, g0, T_3, T_3 \
|
||||||
|
VMALOF f3, g53, T_1, T_1 \
|
||||||
VMALOF f3, g1, T_4, T_4 \
|
VMALOF f3, g1, T_4, T_4 \
|
||||||
|
VMALOF f3, g54, T_2, T_2 \
|
||||||
VMALOF f4, g51, h0, h0 \
|
VMALOF f4, g51, h0, h0 \
|
||||||
VMALOF f4, g52, h1, h1 \
|
|
||||||
VMALOF f4, g53, h2, h2 \
|
|
||||||
VMALOF f4, g54, h3, h3 \
|
VMALOF f4, g54, h3, h3 \
|
||||||
|
VMALOF f4, g52, h1, h1 \
|
||||||
VMALOF f4, g0, h4, h4 \
|
VMALOF f4, g0, h4, h4 \
|
||||||
|
VMALOF f4, g53, h2, h2 \
|
||||||
VAG T_0, h0, h0 \
|
VAG T_0, h0, h0 \
|
||||||
VAG T_1, h1, h1 \
|
|
||||||
VAG T_2, h2, h2 \
|
|
||||||
VAG T_3, h3, h3 \
|
VAG T_3, h3, h3 \
|
||||||
VAG T_4, h4, h4
|
VAG T_1, h1, h1 \
|
||||||
|
VAG T_4, h4, h4 \
|
||||||
|
VAG T_2, h2, h2
|
||||||
|
|
||||||
// carry h0->h1 h3->h4, h1->h2 h4->h0, h0->h1 h2->h3, h3->h4
|
// REDUCE performs the following carry operations in four
|
||||||
|
// stages, as specified in Bernstein & Schwabe:
|
||||||
|
//
|
||||||
|
// 1: h₂₆[0]->h₂₆[1] h₂₆[3]->h₂₆[4]
|
||||||
|
// 2: h₂₆[1]->h₂₆[2] h₂₆[4]->h₂₆[0]
|
||||||
|
// 3: h₂₆[0]->h₂₆[1] h₂₆[2]->h₂₆[3]
|
||||||
|
// 4: h₂₆[3]->h₂₆[4]
|
||||||
|
//
|
||||||
|
// The result is that all of the limbs are limited to 26-bits
|
||||||
|
// except for h₂₆[1] and h₂₆[4] which are limited to 27-bits.
|
||||||
|
//
|
||||||
|
// Note that although each limb is aligned at 26-bit intervals
|
||||||
|
// they may contain values that exceed 2²⁶ - 1, hence the need
|
||||||
|
// to carry the excess bits in each limb.
|
||||||
#define REDUCE(h0, h1, h2, h3, h4) \
|
#define REDUCE(h0, h1, h2, h3, h4) \
|
||||||
VESRLG $26, h0, T_0 \
|
VESRLG $26, h0, T_0 \
|
||||||
VESRLG $26, h3, T_1 \
|
VESRLG $26, h3, T_1 \
|
||||||
|
@ -136,144 +208,155 @@ DATA ·constants<>+56(SB)/8, $0x1d1d1d1d1d1f1e1d
|
||||||
VN MOD26, h3, h3 \
|
VN MOD26, h3, h3 \
|
||||||
VAG T_2, h4, h4
|
VAG T_2, h4, h4
|
||||||
|
|
||||||
// expand in0 into d[0] and in1 into d[1]
|
// EXPAND splits the 128-bit little-endian values in0 and in1
|
||||||
|
// into 26-bit big-endian limbs and places the results into
|
||||||
|
// the first and second lane of d₂₆[0:4] respectively.
|
||||||
|
//
|
||||||
|
// The EX0, EX1 and EX2 constants are arrays of byte indices
|
||||||
|
// for permutation. The permutation both reverses the bytes
|
||||||
|
// in the input and ensures the bytes are copied into the
|
||||||
|
// destination limb ready to be shifted into their final
|
||||||
|
// position.
|
||||||
#define EXPAND(in0, in1, d0, d1, d2, d3, d4) \
|
#define EXPAND(in0, in1, d0, d1, d2, d3, d4) \
|
||||||
VGBM $0x0707, d1 \ // d1=tmp
|
|
||||||
VPERM in0, in1, EX2, d4 \
|
|
||||||
VPERM in0, in1, EX0, d0 \
|
VPERM in0, in1, EX0, d0 \
|
||||||
VPERM in0, in1, EX1, d2 \
|
VPERM in0, in1, EX1, d2 \
|
||||||
VN d1, d4, d4 \
|
VPERM in0, in1, EX2, d4 \
|
||||||
VESRLG $26, d0, d1 \
|
VESRLG $26, d0, d1 \
|
||||||
VESRLG $30, d2, d3 \
|
VESRLG $30, d2, d3 \
|
||||||
VESRLG $4, d2, d2 \
|
VESRLG $4, d2, d2 \
|
||||||
VN MOD26, d0, d0 \
|
VN MOD26, d0, d0 \ // [in0₂₆[0], in1₂₆[0]]
|
||||||
VN MOD26, d1, d1 \
|
VN MOD26, d3, d3 \ // [in0₂₆[3], in1₂₆[3]]
|
||||||
VN MOD26, d2, d2 \
|
VN MOD26, d1, d1 \ // [in0₂₆[1], in1₂₆[1]]
|
||||||
VN MOD26, d3, d3
|
VN MOD24, d4, d4 \ // [in0₂₆[4], in1₂₆[4]]
|
||||||
|
VN MOD26, d2, d2 // [in0₂₆[2], in1₂₆[2]]
|
||||||
|
|
||||||
// pack h4:h0 into h1:h0 (no carry)
|
// func updateVX(state *macState, msg []byte)
|
||||||
#define PACK(h0, h1, h2, h3, h4) \
|
TEXT ·updateVX(SB), NOSPLIT, $0
|
||||||
VESLG $26, h1, h1 \
|
MOVD state+0(FP), R1
|
||||||
VESLG $26, h3, h3 \
|
LMG msg+8(FP), R2, R3 // R2=msg_base, R3=msg_len
|
||||||
VO h0, h1, h0 \
|
|
||||||
VO h2, h3, h2 \
|
|
||||||
VESLG $4, h2, h2 \
|
|
||||||
VLEIB $7, $48, h1 \
|
|
||||||
VSLB h1, h2, h2 \
|
|
||||||
VO h0, h2, h0 \
|
|
||||||
VLEIB $7, $104, h1 \
|
|
||||||
VSLB h1, h4, h3 \
|
|
||||||
VO h3, h0, h0 \
|
|
||||||
VLEIB $7, $24, h1 \
|
|
||||||
VSRLB h1, h4, h1
|
|
||||||
|
|
||||||
// if h > 2**130-5 then h -= 2**130-5
|
// load EX0, EX1 and EX2
|
||||||
#define MOD(h0, h1, t0, t1, t2) \
|
|
||||||
VZERO t0 \
|
|
||||||
VLEIG $1, $5, t0 \
|
|
||||||
VACCQ h0, t0, t1 \
|
|
||||||
VAQ h0, t0, t0 \
|
|
||||||
VONE t2 \
|
|
||||||
VLEIG $1, $-4, t2 \
|
|
||||||
VAQ t2, t1, t1 \
|
|
||||||
VACCQ h1, t1, t1 \
|
|
||||||
VONE t2 \
|
|
||||||
VAQ t2, t1, t1 \
|
|
||||||
VN h0, t1, t2 \
|
|
||||||
VNC t0, t1, t1 \
|
|
||||||
VO t1, t2, h0
|
|
||||||
|
|
||||||
// func poly1305vx(out *[16]byte, m *byte, mlen uint64, key *[32]key)
|
|
||||||
TEXT ·poly1305vx(SB), $0-32
|
|
||||||
// This code processes up to 2 blocks (32 bytes) per iteration
|
|
||||||
// using the algorithm described in:
|
|
||||||
// NEON crypto, Daniel J. Bernstein & Peter Schwabe
|
|
||||||
// https://cryptojedi.org/papers/neoncrypto-20120320.pdf
|
|
||||||
LMG out+0(FP), R1, R4 // R1=out, R2=m, R3=mlen, R4=key
|
|
||||||
|
|
||||||
// load MOD26, EX0, EX1 and EX2
|
|
||||||
MOVD $·constants<>(SB), R5
|
MOVD $·constants<>(SB), R5
|
||||||
VLM (R5), MOD26, EX2
|
VLM (R5), EX0, EX2
|
||||||
|
|
||||||
// setup r
|
// generate masks
|
||||||
VL (R4), T_0
|
VGMG $(64-24), $63, MOD24 // [0x00ffffff, 0x00ffffff]
|
||||||
MOVD $·keyMask<>(SB), R6
|
VGMG $(64-26), $63, MOD26 // [0x03ffffff, 0x03ffffff]
|
||||||
VL (R6), T_1
|
|
||||||
VN T_0, T_1, T_0
|
|
||||||
EXPAND(T_0, T_0, R_0, R_1, R_2, R_3, R_4)
|
|
||||||
|
|
||||||
// setup r*5
|
// load h (accumulator) and r (key) from state
|
||||||
VLEIG $0, $5, T_0
|
VZERO T_1 // [0, 0]
|
||||||
VLEIG $1, $5, T_0
|
VL 0(R1), T_0 // [h₆₄[0], h₆₄[1]]
|
||||||
|
VLEG $0, 16(R1), T_1 // [h₆₄[2], 0]
|
||||||
|
VL 24(R1), T_2 // [r₆₄[0], r₆₄[1]]
|
||||||
|
VPDI $0, T_0, T_2, T_3 // [h₆₄[0], r₆₄[0]]
|
||||||
|
VPDI $5, T_0, T_2, T_4 // [h₆₄[1], r₆₄[1]]
|
||||||
|
|
||||||
// store r (for final block)
|
// unpack h and r into 26-bit limbs
|
||||||
VMLOF T_0, R_1, R5SAVE_1
|
// note: h₆₄[2] may have the low 3 bits set, so h₂₆[4] is a 27-bit value
|
||||||
VMLOF T_0, R_2, R5SAVE_2
|
VN MOD26, T_3, H_0 // [h₂₆[0], r₂₆[0]]
|
||||||
VMLOF T_0, R_3, R5SAVE_3
|
VZERO H_1 // [0, 0]
|
||||||
VMLOF T_0, R_4, R5SAVE_4
|
VZERO H_3 // [0, 0]
|
||||||
VLGVG $0, R_0, RSAVE_0
|
VGMG $(64-12-14), $(63-12), T_0 // [0x03fff000, 0x03fff000] - 26-bit mask with low 12 bits masked out
|
||||||
VLGVG $0, R_1, RSAVE_1
|
VESLG $24, T_1, T_1 // [h₆₄[2]<<24, 0]
|
||||||
VLGVG $0, R_2, RSAVE_2
|
VERIMG $-26&63, T_3, MOD26, H_1 // [h₂₆[1], r₂₆[1]]
|
||||||
VLGVG $0, R_3, RSAVE_3
|
VESRLG $+52&63, T_3, H_2 // [h₂₆[2], r₂₆[2]] - low 12 bits only
|
||||||
VLGVG $0, R_4, RSAVE_4
|
VERIMG $-14&63, T_4, MOD26, H_3 // [h₂₆[1], r₂₆[1]]
|
||||||
|
VESRLG $40, T_4, H_4 // [h₂₆[4], r₂₆[4]] - low 24 bits only
|
||||||
|
VERIMG $+12&63, T_4, T_0, H_2 // [h₂₆[2], r₂₆[2]] - complete
|
||||||
|
VO T_1, H_4, H_4 // [h₂₆[4], r₂₆[4]] - complete
|
||||||
|
|
||||||
// skip r**2 calculation
|
// replicate r across all 4 vector elements
|
||||||
|
VREPF $3, H_0, R_0 // [r₂₆[0], r₂₆[0], r₂₆[0], r₂₆[0]]
|
||||||
|
VREPF $3, H_1, R_1 // [r₂₆[1], r₂₆[1], r₂₆[1], r₂₆[1]]
|
||||||
|
VREPF $3, H_2, R_2 // [r₂₆[2], r₂₆[2], r₂₆[2], r₂₆[2]]
|
||||||
|
VREPF $3, H_3, R_3 // [r₂₆[3], r₂₆[3], r₂₆[3], r₂₆[3]]
|
||||||
|
VREPF $3, H_4, R_4 // [r₂₆[4], r₂₆[4], r₂₆[4], r₂₆[4]]
|
||||||
|
|
||||||
|
// zero out lane 1 of h
|
||||||
|
VLEIG $1, $0, H_0 // [h₂₆[0], 0]
|
||||||
|
VLEIG $1, $0, H_1 // [h₂₆[1], 0]
|
||||||
|
VLEIG $1, $0, H_2 // [h₂₆[2], 0]
|
||||||
|
VLEIG $1, $0, H_3 // [h₂₆[3], 0]
|
||||||
|
VLEIG $1, $0, H_4 // [h₂₆[4], 0]
|
||||||
|
|
||||||
|
// calculate 5r (ignore least significant limb)
|
||||||
|
VREPIF $5, T_0
|
||||||
|
VMLF T_0, R_1, R5_1 // [5r₂₆[1], 5r₂₆[1], 5r₂₆[1], 5r₂₆[1]]
|
||||||
|
VMLF T_0, R_2, R5_2 // [5r₂₆[2], 5r₂₆[2], 5r₂₆[2], 5r₂₆[2]]
|
||||||
|
VMLF T_0, R_3, R5_3 // [5r₂₆[3], 5r₂₆[3], 5r₂₆[3], 5r₂₆[3]]
|
||||||
|
VMLF T_0, R_4, R5_4 // [5r₂₆[4], 5r₂₆[4], 5r₂₆[4], 5r₂₆[4]]
|
||||||
|
|
||||||
|
// skip r² calculation if we are only calculating one block
|
||||||
CMPBLE R3, $16, skip
|
CMPBLE R3, $16, skip
|
||||||
|
|
||||||
// calculate r**2
|
// calculate r²
|
||||||
MULTIPLY(R_0, R_1, R_2, R_3, R_4, R_0, R_1, R_2, R_3, R_4, R5SAVE_1, R5SAVE_2, R5SAVE_3, R5SAVE_4, H_0, H_1, H_2, H_3, H_4)
|
MULTIPLY(R_0, R_1, R_2, R_3, R_4, R_0, R_1, R_2, R_3, R_4, R5_1, R5_2, R5_3, R5_4, M_0, M_1, M_2, M_3, M_4)
|
||||||
REDUCE(H_0, H_1, H_2, H_3, H_4)
|
REDUCE(M_0, M_1, M_2, M_3, M_4)
|
||||||
VLEIG $0, $5, T_0
|
VGBM $0x0f0f, T_0
|
||||||
VLEIG $1, $5, T_0
|
VERIMG $0, M_0, T_0, R_0 // [r₂₆[0], r²₂₆[0], r₂₆[0], r²₂₆[0]]
|
||||||
VMLOF T_0, H_1, R5_1
|
VERIMG $0, M_1, T_0, R_1 // [r₂₆[1], r²₂₆[1], r₂₆[1], r²₂₆[1]]
|
||||||
VMLOF T_0, H_2, R5_2
|
VERIMG $0, M_2, T_0, R_2 // [r₂₆[2], r²₂₆[2], r₂₆[2], r²₂₆[2]]
|
||||||
VMLOF T_0, H_3, R5_3
|
VERIMG $0, M_3, T_0, R_3 // [r₂₆[3], r²₂₆[3], r₂₆[3], r²₂₆[3]]
|
||||||
VMLOF T_0, H_4, R5_4
|
VERIMG $0, M_4, T_0, R_4 // [r₂₆[4], r²₂₆[4], r₂₆[4], r²₂₆[4]]
|
||||||
VLR H_0, R_0
|
|
||||||
VLR H_1, R_1
|
|
||||||
VLR H_2, R_2
|
|
||||||
VLR H_3, R_3
|
|
||||||
VLR H_4, R_4
|
|
||||||
|
|
||||||
// initialize h
|
// calculate 5r² (ignore least significant limb)
|
||||||
VZERO H_0
|
VREPIF $5, T_0
|
||||||
VZERO H_1
|
VMLF T_0, R_1, R5_1 // [5r₂₆[1], 5r²₂₆[1], 5r₂₆[1], 5r²₂₆[1]]
|
||||||
VZERO H_2
|
VMLF T_0, R_2, R5_2 // [5r₂₆[2], 5r²₂₆[2], 5r₂₆[2], 5r²₂₆[2]]
|
||||||
VZERO H_3
|
VMLF T_0, R_3, R5_3 // [5r₂₆[3], 5r²₂₆[3], 5r₂₆[3], 5r²₂₆[3]]
|
||||||
VZERO H_4
|
VMLF T_0, R_4, R5_4 // [5r₂₆[4], 5r²₂₆[4], 5r₂₆[4], 5r²₂₆[4]]
|
||||||
|
|
||||||
loop:
|
loop:
|
||||||
CMPBLE R3, $32, b2
|
CMPBLE R3, $32, b2 // 2 or fewer blocks remaining, need to change key coefficients
|
||||||
VLM (R2), T_0, T_1
|
|
||||||
SUB $32, R3
|
// load next 2 blocks from message
|
||||||
MOVD $32(R2), R2
|
VLM (R2), T_0, T_1
|
||||||
EXPAND(T_0, T_1, F_0, F_1, F_2, F_3, F_4)
|
|
||||||
VLEIB $4, $1, F_4
|
// update message slice
|
||||||
VLEIB $12, $1, F_4
|
SUB $32, R3
|
||||||
|
MOVD $32(R2), R2
|
||||||
|
|
||||||
|
// unpack message blocks into 26-bit big-endian limbs
|
||||||
|
EXPAND(T_0, T_1, M_0, M_1, M_2, M_3, M_4)
|
||||||
|
|
||||||
|
// add 2¹²⁸ to each message block value
|
||||||
|
VLEIB $4, $1, M_4
|
||||||
|
VLEIB $12, $1, M_4
|
||||||
|
|
||||||
multiply:
|
multiply:
|
||||||
VAG H_0, F_0, F_0
|
// accumulate the incoming message
|
||||||
VAG H_1, F_1, F_1
|
VAG H_0, M_0, M_0
|
||||||
VAG H_2, F_2, F_2
|
VAG H_3, M_3, M_3
|
||||||
VAG H_3, F_3, F_3
|
VAG H_1, M_1, M_1
|
||||||
VAG H_4, F_4, F_4
|
VAG H_4, M_4, M_4
|
||||||
MULTIPLY(F_0, F_1, F_2, F_3, F_4, R_0, R_1, R_2, R_3, R_4, R5_1, R5_2, R5_3, R5_4, H_0, H_1, H_2, H_3, H_4)
|
VAG H_2, M_2, M_2
|
||||||
|
|
||||||
|
// multiply the accumulator by the key coefficient
|
||||||
|
MULTIPLY(M_0, M_1, M_2, M_3, M_4, R_0, R_1, R_2, R_3, R_4, R5_1, R5_2, R5_3, R5_4, H_0, H_1, H_2, H_3, H_4)
|
||||||
|
|
||||||
|
// carry and partially reduce the partial products
|
||||||
REDUCE(H_0, H_1, H_2, H_3, H_4)
|
REDUCE(H_0, H_1, H_2, H_3, H_4)
|
||||||
|
|
||||||
CMPBNE R3, $0, loop
|
CMPBNE R3, $0, loop
|
||||||
|
|
||||||
finish:
|
finish:
|
||||||
// sum vectors
|
// sum lane 0 and lane 1 and put the result in lane 1
|
||||||
VZERO T_0
|
VZERO T_0
|
||||||
VSUMQG H_0, T_0, H_0
|
VSUMQG H_0, T_0, H_0
|
||||||
VSUMQG H_1, T_0, H_1
|
|
||||||
VSUMQG H_2, T_0, H_2
|
|
||||||
VSUMQG H_3, T_0, H_3
|
VSUMQG H_3, T_0, H_3
|
||||||
|
VSUMQG H_1, T_0, H_1
|
||||||
VSUMQG H_4, T_0, H_4
|
VSUMQG H_4, T_0, H_4
|
||||||
|
VSUMQG H_2, T_0, H_2
|
||||||
|
|
||||||
// h may be >= 2*(2**130-5) so we need to reduce it again
|
// reduce again after summation
|
||||||
|
// TODO(mundaym): there might be a more efficient way to do this
|
||||||
|
// now that we only have 1 active lane. For example, we could
|
||||||
|
// simultaneously pack the values as we reduce them.
|
||||||
REDUCE(H_0, H_1, H_2, H_3, H_4)
|
REDUCE(H_0, H_1, H_2, H_3, H_4)
|
||||||
|
|
||||||
// carry h1->h4
|
// carry h[1] through to h[4] so that only h[4] can exceed 2²⁶ - 1
|
||||||
|
// TODO(mundaym): in testing this final carry was unnecessary.
|
||||||
|
// Needs a proof before it can be removed though.
|
||||||
VESRLG $26, H_1, T_1
|
VESRLG $26, H_1, T_1
|
||||||
VN MOD26, H_1, H_1
|
VN MOD26, H_1, H_1
|
||||||
VAQ T_1, H_2, H_2
|
VAQ T_1, H_2, H_2
|
||||||
|
@ -284,95 +367,137 @@ finish:
|
||||||
VN MOD26, H_3, H_3
|
VN MOD26, H_3, H_3
|
||||||
VAQ T_3, H_4, H_4
|
VAQ T_3, H_4, H_4
|
||||||
|
|
||||||
// h is now < 2*(2**130-5)
|
// h is now < 2(2¹³⁰ - 5)
|
||||||
// pack h into h1 (hi) and h0 (lo)
|
// Pack each lane in h₂₆[0:4] into h₁₂₈[0:1].
|
||||||
PACK(H_0, H_1, H_2, H_3, H_4)
|
VESLG $26, H_1, H_1
|
||||||
|
VESLG $26, H_3, H_3
|
||||||
// if h > 2**130-5 then h -= 2**130-5
|
VO H_0, H_1, H_0
|
||||||
MOD(H_0, H_1, T_0, T_1, T_2)
|
VO H_2, H_3, H_2
|
||||||
|
VESLG $4, H_2, H_2
|
||||||
// h += s
|
VLEIB $7, $48, H_1
|
||||||
MOVD $·bswapMask<>(SB), R5
|
VSLB H_1, H_2, H_2
|
||||||
VL (R5), T_1
|
VO H_0, H_2, H_0
|
||||||
VL 16(R4), T_0
|
VLEIB $7, $104, H_1
|
||||||
VPERM T_0, T_0, T_1, T_0 // reverse bytes (to big)
|
VSLB H_1, H_4, H_3
|
||||||
VAQ T_0, H_0, H_0
|
VO H_3, H_0, H_0
|
||||||
VPERM H_0, H_0, T_1, H_0 // reverse bytes (to little)
|
VLEIB $7, $24, H_1
|
||||||
VST H_0, (R1)
|
VSRLB H_1, H_4, H_1
|
||||||
|
|
||||||
|
// update state
|
||||||
|
VSTEG $1, H_0, 0(R1)
|
||||||
|
VSTEG $0, H_0, 8(R1)
|
||||||
|
VSTEG $1, H_1, 16(R1)
|
||||||
RET
|
RET
|
||||||
|
|
||||||
b2:
|
b2: // 2 or fewer blocks remaining
|
||||||
CMPBLE R3, $16, b1
|
CMPBLE R3, $16, b1
|
||||||
|
|
||||||
// 2 blocks remaining
|
// Load the 2 remaining blocks (17-32 bytes remaining).
|
||||||
SUB $17, R3
|
MOVD $-17(R3), R0 // index of final byte to load modulo 16
|
||||||
VL (R2), T_0
|
VL (R2), T_0 // load full 16 byte block
|
||||||
VLL R3, 16(R2), T_1
|
VLL R0, 16(R2), T_1 // load final (possibly partial) block and pad with zeros to 16 bytes
|
||||||
ADD $1, R3
|
|
||||||
MOVBZ $1, R0
|
|
||||||
CMPBEQ R3, $16, 2(PC)
|
|
||||||
VLVGB R3, R0, T_1
|
|
||||||
EXPAND(T_0, T_1, F_0, F_1, F_2, F_3, F_4)
|
|
||||||
CMPBNE R3, $16, 2(PC)
|
|
||||||
VLEIB $12, $1, F_4
|
|
||||||
VLEIB $4, $1, F_4
|
|
||||||
|
|
||||||
// setup [r²,r]
|
// The Poly1305 algorithm requires that a 1 bit be appended to
|
||||||
VLVGG $1, RSAVE_0, R_0
|
// each message block. If the final block is less than 16 bytes
|
||||||
VLVGG $1, RSAVE_1, R_1
|
// long then it is easiest to insert the 1 before the message
|
||||||
VLVGG $1, RSAVE_2, R_2
|
// block is split into 26-bit limbs. If, on the other hand, the
|
||||||
VLVGG $1, RSAVE_3, R_3
|
// final message block is 16 bytes long then we append the 1 bit
|
||||||
VLVGG $1, RSAVE_4, R_4
|
// after expansion as normal.
|
||||||
VPDI $0, R5_1, R5SAVE_1, R5_1
|
MOVBZ $1, R0
|
||||||
VPDI $0, R5_2, R5SAVE_2, R5_2
|
MOVD $-16(R3), R3 // index of byte in last block to insert 1 at (could be 16)
|
||||||
VPDI $0, R5_3, R5SAVE_3, R5_3
|
CMPBEQ R3, $16, 2(PC) // skip the insertion if the final block is 16 bytes long
|
||||||
VPDI $0, R5_4, R5SAVE_4, R5_4
|
VLVGB R3, R0, T_1 // insert 1 into the byte at index R3
|
||||||
|
|
||||||
|
// Split both blocks into 26-bit limbs in the appropriate lanes.
|
||||||
|
EXPAND(T_0, T_1, M_0, M_1, M_2, M_3, M_4)
|
||||||
|
|
||||||
|
// Append a 1 byte to the end of the second to last block.
|
||||||
|
VLEIB $4, $1, M_4
|
||||||
|
|
||||||
|
// Append a 1 byte to the end of the last block only if it is a
|
||||||
|
// full 16 byte block.
|
||||||
|
CMPBNE R3, $16, 2(PC)
|
||||||
|
VLEIB $12, $1, M_4
|
||||||
|
|
||||||
|
// Finally, set up the coefficients for the final multiplication.
|
||||||
|
// We have previously saved r and 5r in the 32-bit even indexes
|
||||||
|
// of the R_[0-4] and R5_[1-4] coefficient registers.
|
||||||
|
//
|
||||||
|
// We want lane 0 to be multiplied by r² so that can be kept the
|
||||||
|
// same. We want lane 1 to be multiplied by r so we need to move
|
||||||
|
// the saved r value into the 32-bit odd index in lane 1 by
|
||||||
|
// rotating the 64-bit lane by 32.
|
||||||
|
VGBM $0x00ff, T_0 // [0, 0xffffffffffffffff] - mask lane 1 only
|
||||||
|
VERIMG $32, R_0, T_0, R_0 // [_, r²₂₆[0], _, r₂₆[0]]
|
||||||
|
VERIMG $32, R_1, T_0, R_1 // [_, r²₂₆[1], _, r₂₆[1]]
|
||||||
|
VERIMG $32, R_2, T_0, R_2 // [_, r²₂₆[2], _, r₂₆[2]]
|
||||||
|
VERIMG $32, R_3, T_0, R_3 // [_, r²₂₆[3], _, r₂₆[3]]
|
||||||
|
VERIMG $32, R_4, T_0, R_4 // [_, r²₂₆[4], _, r₂₆[4]]
|
||||||
|
VERIMG $32, R5_1, T_0, R5_1 // [_, 5r²₂₆[1], _, 5r₂₆[1]]
|
||||||
|
VERIMG $32, R5_2, T_0, R5_2 // [_, 5r²₂₆[2], _, 5r₂₆[2]]
|
||||||
|
VERIMG $32, R5_3, T_0, R5_3 // [_, 5r²₂₆[3], _, 5r₂₆[3]]
|
||||||
|
VERIMG $32, R5_4, T_0, R5_4 // [_, 5r²₂₆[4], _, 5r₂₆[4]]
|
||||||
|
|
||||||
MOVD $0, R3
|
MOVD $0, R3
|
||||||
BR multiply
|
BR multiply
|
||||||
|
|
||||||
skip:
|
skip:
|
||||||
VZERO H_0
|
|
||||||
VZERO H_1
|
|
||||||
VZERO H_2
|
|
||||||
VZERO H_3
|
|
||||||
VZERO H_4
|
|
||||||
|
|
||||||
CMPBEQ R3, $0, finish
|
CMPBEQ R3, $0, finish
|
||||||
|
|
||||||
b1:
|
b1: // 1 block remaining
|
||||||
// 1 block remaining
|
|
||||||
SUB $1, R3
|
// Load the final block (1-16 bytes). This will be placed into
|
||||||
VLL R3, (R2), T_0
|
// lane 0.
|
||||||
ADD $1, R3
|
MOVD $-1(R3), R0
|
||||||
|
VLL R0, (R2), T_0 // pad to 16 bytes with zeros
|
||||||
|
|
||||||
|
// The Poly1305 algorithm requires that a 1 bit be appended to
|
||||||
|
// each message block. If the final block is less than 16 bytes
|
||||||
|
// long then it is easiest to insert the 1 before the message
|
||||||
|
// block is split into 26-bit limbs. If, on the other hand, the
|
||||||
|
// final message block is 16 bytes long then we append the 1 bit
|
||||||
|
// after expansion as normal.
|
||||||
MOVBZ $1, R0
|
MOVBZ $1, R0
|
||||||
CMPBEQ R3, $16, 2(PC)
|
CMPBEQ R3, $16, 2(PC)
|
||||||
VLVGB R3, R0, T_0
|
VLVGB R3, R0, T_0
|
||||||
VZERO T_1
|
|
||||||
EXPAND(T_0, T_1, F_0, F_1, F_2, F_3, F_4)
|
|
||||||
CMPBNE R3, $16, 2(PC)
|
|
||||||
VLEIB $4, $1, F_4
|
|
||||||
VLEIG $1, $1, R_0
|
|
||||||
VZERO R_1
|
|
||||||
VZERO R_2
|
|
||||||
VZERO R_3
|
|
||||||
VZERO R_4
|
|
||||||
VZERO R5_1
|
|
||||||
VZERO R5_2
|
|
||||||
VZERO R5_3
|
|
||||||
VZERO R5_4
|
|
||||||
|
|
||||||
// setup [r, 1]
|
// Set the message block in lane 1 to the value 0 so that it
|
||||||
VLVGG $0, RSAVE_0, R_0
|
// can be accumulated without affecting the final result.
|
||||||
VLVGG $0, RSAVE_1, R_1
|
VZERO T_1
|
||||||
VLVGG $0, RSAVE_2, R_2
|
|
||||||
VLVGG $0, RSAVE_3, R_3
|
// Split the final message block into 26-bit limbs in lane 0.
|
||||||
VLVGG $0, RSAVE_4, R_4
|
// Lane 1 will be contain 0.
|
||||||
VPDI $0, R5SAVE_1, R5_1, R5_1
|
EXPAND(T_0, T_1, M_0, M_1, M_2, M_3, M_4)
|
||||||
VPDI $0, R5SAVE_2, R5_2, R5_2
|
|
||||||
VPDI $0, R5SAVE_3, R5_3, R5_3
|
// Append a 1 byte to the end of the last block only if it is a
|
||||||
VPDI $0, R5SAVE_4, R5_4, R5_4
|
// full 16 byte block.
|
||||||
|
CMPBNE R3, $16, 2(PC)
|
||||||
|
VLEIB $4, $1, M_4
|
||||||
|
|
||||||
|
// We have previously saved r and 5r in the 32-bit even indexes
|
||||||
|
// of the R_[0-4] and R5_[1-4] coefficient registers.
|
||||||
|
//
|
||||||
|
// We want lane 0 to be multiplied by r so we need to move the
|
||||||
|
// saved r value into the 32-bit odd index in lane 0. We want
|
||||||
|
// lane 1 to be set to the value 1. This makes multiplication
|
||||||
|
// a no-op. We do this by setting lane 1 in every register to 0
|
||||||
|
// and then just setting the 32-bit index 3 in R_0 to 1.
|
||||||
|
VZERO T_0
|
||||||
|
MOVD $0, R0
|
||||||
|
MOVD $0x10111213, R12
|
||||||
|
VLVGP R12, R0, T_1 // [_, 0x10111213, _, 0x00000000]
|
||||||
|
VPERM T_0, R_0, T_1, R_0 // [_, r₂₆[0], _, 0]
|
||||||
|
VPERM T_0, R_1, T_1, R_1 // [_, r₂₆[1], _, 0]
|
||||||
|
VPERM T_0, R_2, T_1, R_2 // [_, r₂₆[2], _, 0]
|
||||||
|
VPERM T_0, R_3, T_1, R_3 // [_, r₂₆[3], _, 0]
|
||||||
|
VPERM T_0, R_4, T_1, R_4 // [_, r₂₆[4], _, 0]
|
||||||
|
VPERM T_0, R5_1, T_1, R5_1 // [_, 5r₂₆[1], _, 0]
|
||||||
|
VPERM T_0, R5_2, T_1, R5_2 // [_, 5r₂₆[2], _, 0]
|
||||||
|
VPERM T_0, R5_3, T_1, R5_3 // [_, 5r₂₆[3], _, 0]
|
||||||
|
VPERM T_0, R5_4, T_1, R5_4 // [_, 5r₂₆[4], _, 0]
|
||||||
|
|
||||||
|
// Set the value of lane 1 to be 1.
|
||||||
|
VLEIF $3, $1, R_0 // [_, r₂₆[0], _, 1]
|
||||||
|
|
||||||
MOVD $0, R3
|
MOVD $0, R3
|
||||||
BR multiply
|
BR multiply
|
||||||
|
|
909
vendor/golang.org/x/crypto/poly1305/sum_vmsl_s390x.s
generated
vendored
909
vendor/golang.org/x/crypto/poly1305/sum_vmsl_s390x.s
generated
vendored
|
@ -1,909 +0,0 @@
|
||||||
// Copyright 2018 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 go1.11,!gccgo,!purego
|
|
||||||
|
|
||||||
#include "textflag.h"
|
|
||||||
|
|
||||||
// Implementation of Poly1305 using the vector facility (vx) and the VMSL instruction.
|
|
||||||
|
|
||||||
// constants
|
|
||||||
#define EX0 V1
|
|
||||||
#define EX1 V2
|
|
||||||
#define EX2 V3
|
|
||||||
|
|
||||||
// temporaries
|
|
||||||
#define T_0 V4
|
|
||||||
#define T_1 V5
|
|
||||||
#define T_2 V6
|
|
||||||
#define T_3 V7
|
|
||||||
#define T_4 V8
|
|
||||||
#define T_5 V9
|
|
||||||
#define T_6 V10
|
|
||||||
#define T_7 V11
|
|
||||||
#define T_8 V12
|
|
||||||
#define T_9 V13
|
|
||||||
#define T_10 V14
|
|
||||||
|
|
||||||
// r**2 & r**4
|
|
||||||
#define R_0 V15
|
|
||||||
#define R_1 V16
|
|
||||||
#define R_2 V17
|
|
||||||
#define R5_1 V18
|
|
||||||
#define R5_2 V19
|
|
||||||
// key (r)
|
|
||||||
#define RSAVE_0 R7
|
|
||||||
#define RSAVE_1 R8
|
|
||||||
#define RSAVE_2 R9
|
|
||||||
#define R5SAVE_1 R10
|
|
||||||
#define R5SAVE_2 R11
|
|
||||||
|
|
||||||
// message block
|
|
||||||
#define M0 V20
|
|
||||||
#define M1 V21
|
|
||||||
#define M2 V22
|
|
||||||
#define M3 V23
|
|
||||||
#define M4 V24
|
|
||||||
#define M5 V25
|
|
||||||
|
|
||||||
// accumulator
|
|
||||||
#define H0_0 V26
|
|
||||||
#define H1_0 V27
|
|
||||||
#define H2_0 V28
|
|
||||||
#define H0_1 V29
|
|
||||||
#define H1_1 V30
|
|
||||||
#define H2_1 V31
|
|
||||||
|
|
||||||
GLOBL ·keyMask<>(SB), RODATA, $16
|
|
||||||
DATA ·keyMask<>+0(SB)/8, $0xffffff0ffcffff0f
|
|
||||||
DATA ·keyMask<>+8(SB)/8, $0xfcffff0ffcffff0f
|
|
||||||
|
|
||||||
GLOBL ·bswapMask<>(SB), RODATA, $16
|
|
||||||
DATA ·bswapMask<>+0(SB)/8, $0x0f0e0d0c0b0a0908
|
|
||||||
DATA ·bswapMask<>+8(SB)/8, $0x0706050403020100
|
|
||||||
|
|
||||||
GLOBL ·constants<>(SB), RODATA, $48
|
|
||||||
// EX0
|
|
||||||
DATA ·constants<>+0(SB)/8, $0x18191a1b1c1d1e1f
|
|
||||||
DATA ·constants<>+8(SB)/8, $0x0000050403020100
|
|
||||||
// EX1
|
|
||||||
DATA ·constants<>+16(SB)/8, $0x18191a1b1c1d1e1f
|
|
||||||
DATA ·constants<>+24(SB)/8, $0x00000a0908070605
|
|
||||||
// EX2
|
|
||||||
DATA ·constants<>+32(SB)/8, $0x18191a1b1c1d1e1f
|
|
||||||
DATA ·constants<>+40(SB)/8, $0x0000000f0e0d0c0b
|
|
||||||
|
|
||||||
GLOBL ·c<>(SB), RODATA, $48
|
|
||||||
// EX0
|
|
||||||
DATA ·c<>+0(SB)/8, $0x0000050403020100
|
|
||||||
DATA ·c<>+8(SB)/8, $0x0000151413121110
|
|
||||||
// EX1
|
|
||||||
DATA ·c<>+16(SB)/8, $0x00000a0908070605
|
|
||||||
DATA ·c<>+24(SB)/8, $0x00001a1918171615
|
|
||||||
// EX2
|
|
||||||
DATA ·c<>+32(SB)/8, $0x0000000f0e0d0c0b
|
|
||||||
DATA ·c<>+40(SB)/8, $0x0000001f1e1d1c1b
|
|
||||||
|
|
||||||
GLOBL ·reduce<>(SB), RODATA, $32
|
|
||||||
// 44 bit
|
|
||||||
DATA ·reduce<>+0(SB)/8, $0x0
|
|
||||||
DATA ·reduce<>+8(SB)/8, $0xfffffffffff
|
|
||||||
// 42 bit
|
|
||||||
DATA ·reduce<>+16(SB)/8, $0x0
|
|
||||||
DATA ·reduce<>+24(SB)/8, $0x3ffffffffff
|
|
||||||
|
|
||||||
// h = (f*g) % (2**130-5) [partial reduction]
|
|
||||||
// uses T_0...T_9 temporary registers
|
|
||||||
// input: m02_0, m02_1, m02_2, m13_0, m13_1, m13_2, r_0, r_1, r_2, r5_1, r5_2, m4_0, m4_1, m4_2, m5_0, m5_1, m5_2
|
|
||||||
// temp: t0, t1, t2, t3, t4, t5, t6, t7, t8, t9
|
|
||||||
// output: m02_0, m02_1, m02_2, m13_0, m13_1, m13_2
|
|
||||||
#define MULTIPLY(m02_0, m02_1, m02_2, m13_0, m13_1, m13_2, r_0, r_1, r_2, r5_1, r5_2, m4_0, m4_1, m4_2, m5_0, m5_1, m5_2, t0, t1, t2, t3, t4, t5, t6, t7, t8, t9) \
|
|
||||||
\ // Eliminate the dependency for the last 2 VMSLs
|
|
||||||
VMSLG m02_0, r_2, m4_2, m4_2 \
|
|
||||||
VMSLG m13_0, r_2, m5_2, m5_2 \ // 8 VMSLs pipelined
|
|
||||||
VMSLG m02_0, r_0, m4_0, m4_0 \
|
|
||||||
VMSLG m02_1, r5_2, V0, T_0 \
|
|
||||||
VMSLG m02_0, r_1, m4_1, m4_1 \
|
|
||||||
VMSLG m02_1, r_0, V0, T_1 \
|
|
||||||
VMSLG m02_1, r_1, V0, T_2 \
|
|
||||||
VMSLG m02_2, r5_1, V0, T_3 \
|
|
||||||
VMSLG m02_2, r5_2, V0, T_4 \
|
|
||||||
VMSLG m13_0, r_0, m5_0, m5_0 \
|
|
||||||
VMSLG m13_1, r5_2, V0, T_5 \
|
|
||||||
VMSLG m13_0, r_1, m5_1, m5_1 \
|
|
||||||
VMSLG m13_1, r_0, V0, T_6 \
|
|
||||||
VMSLG m13_1, r_1, V0, T_7 \
|
|
||||||
VMSLG m13_2, r5_1, V0, T_8 \
|
|
||||||
VMSLG m13_2, r5_2, V0, T_9 \
|
|
||||||
VMSLG m02_2, r_0, m4_2, m4_2 \
|
|
||||||
VMSLG m13_2, r_0, m5_2, m5_2 \
|
|
||||||
VAQ m4_0, T_0, m02_0 \
|
|
||||||
VAQ m4_1, T_1, m02_1 \
|
|
||||||
VAQ m5_0, T_5, m13_0 \
|
|
||||||
VAQ m5_1, T_6, m13_1 \
|
|
||||||
VAQ m02_0, T_3, m02_0 \
|
|
||||||
VAQ m02_1, T_4, m02_1 \
|
|
||||||
VAQ m13_0, T_8, m13_0 \
|
|
||||||
VAQ m13_1, T_9, m13_1 \
|
|
||||||
VAQ m4_2, T_2, m02_2 \
|
|
||||||
VAQ m5_2, T_7, m13_2 \
|
|
||||||
|
|
||||||
// SQUARE uses three limbs of r and r_2*5 to output square of r
|
|
||||||
// uses T_1, T_5 and T_7 temporary registers
|
|
||||||
// input: r_0, r_1, r_2, r5_2
|
|
||||||
// temp: TEMP0, TEMP1, TEMP2
|
|
||||||
// output: p0, p1, p2
|
|
||||||
#define SQUARE(r_0, r_1, r_2, r5_2, p0, p1, p2, TEMP0, TEMP1, TEMP2) \
|
|
||||||
VMSLG r_0, r_0, p0, p0 \
|
|
||||||
VMSLG r_1, r5_2, V0, TEMP0 \
|
|
||||||
VMSLG r_2, r5_2, p1, p1 \
|
|
||||||
VMSLG r_0, r_1, V0, TEMP1 \
|
|
||||||
VMSLG r_1, r_1, p2, p2 \
|
|
||||||
VMSLG r_0, r_2, V0, TEMP2 \
|
|
||||||
VAQ TEMP0, p0, p0 \
|
|
||||||
VAQ TEMP1, p1, p1 \
|
|
||||||
VAQ TEMP2, p2, p2 \
|
|
||||||
VAQ TEMP0, p0, p0 \
|
|
||||||
VAQ TEMP1, p1, p1 \
|
|
||||||
VAQ TEMP2, p2, p2 \
|
|
||||||
|
|
||||||
// carry h0->h1->h2->h0 || h3->h4->h5->h3
|
|
||||||
// uses T_2, T_4, T_5, T_7, T_8, T_9
|
|
||||||
// t6, t7, t8, t9, t10, t11
|
|
||||||
// input: h0, h1, h2, h3, h4, h5
|
|
||||||
// temp: t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11
|
|
||||||
// output: h0, h1, h2, h3, h4, h5
|
|
||||||
#define REDUCE(h0, h1, h2, h3, h4, h5, t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11) \
|
|
||||||
VLM (R12), t6, t7 \ // 44 and 42 bit clear mask
|
|
||||||
VLEIB $7, $0x28, t10 \ // 5 byte shift mask
|
|
||||||
VREPIB $4, t8 \ // 4 bit shift mask
|
|
||||||
VREPIB $2, t11 \ // 2 bit shift mask
|
|
||||||
VSRLB t10, h0, t0 \ // h0 byte shift
|
|
||||||
VSRLB t10, h1, t1 \ // h1 byte shift
|
|
||||||
VSRLB t10, h2, t2 \ // h2 byte shift
|
|
||||||
VSRLB t10, h3, t3 \ // h3 byte shift
|
|
||||||
VSRLB t10, h4, t4 \ // h4 byte shift
|
|
||||||
VSRLB t10, h5, t5 \ // h5 byte shift
|
|
||||||
VSRL t8, t0, t0 \ // h0 bit shift
|
|
||||||
VSRL t8, t1, t1 \ // h2 bit shift
|
|
||||||
VSRL t11, t2, t2 \ // h2 bit shift
|
|
||||||
VSRL t8, t3, t3 \ // h3 bit shift
|
|
||||||
VSRL t8, t4, t4 \ // h4 bit shift
|
|
||||||
VESLG $2, t2, t9 \ // h2 carry x5
|
|
||||||
VSRL t11, t5, t5 \ // h5 bit shift
|
|
||||||
VN t6, h0, h0 \ // h0 clear carry
|
|
||||||
VAQ t2, t9, t2 \ // h2 carry x5
|
|
||||||
VESLG $2, t5, t9 \ // h5 carry x5
|
|
||||||
VN t6, h1, h1 \ // h1 clear carry
|
|
||||||
VN t7, h2, h2 \ // h2 clear carry
|
|
||||||
VAQ t5, t9, t5 \ // h5 carry x5
|
|
||||||
VN t6, h3, h3 \ // h3 clear carry
|
|
||||||
VN t6, h4, h4 \ // h4 clear carry
|
|
||||||
VN t7, h5, h5 \ // h5 clear carry
|
|
||||||
VAQ t0, h1, h1 \ // h0->h1
|
|
||||||
VAQ t3, h4, h4 \ // h3->h4
|
|
||||||
VAQ t1, h2, h2 \ // h1->h2
|
|
||||||
VAQ t4, h5, h5 \ // h4->h5
|
|
||||||
VAQ t2, h0, h0 \ // h2->h0
|
|
||||||
VAQ t5, h3, h3 \ // h5->h3
|
|
||||||
VREPG $1, t6, t6 \ // 44 and 42 bit masks across both halves
|
|
||||||
VREPG $1, t7, t7 \
|
|
||||||
VSLDB $8, h0, h0, h0 \ // set up [h0/1/2, h3/4/5]
|
|
||||||
VSLDB $8, h1, h1, h1 \
|
|
||||||
VSLDB $8, h2, h2, h2 \
|
|
||||||
VO h0, h3, h3 \
|
|
||||||
VO h1, h4, h4 \
|
|
||||||
VO h2, h5, h5 \
|
|
||||||
VESRLG $44, h3, t0 \ // 44 bit shift right
|
|
||||||
VESRLG $44, h4, t1 \
|
|
||||||
VESRLG $42, h5, t2 \
|
|
||||||
VN t6, h3, h3 \ // clear carry bits
|
|
||||||
VN t6, h4, h4 \
|
|
||||||
VN t7, h5, h5 \
|
|
||||||
VESLG $2, t2, t9 \ // multiply carry by 5
|
|
||||||
VAQ t9, t2, t2 \
|
|
||||||
VAQ t0, h4, h4 \
|
|
||||||
VAQ t1, h5, h5 \
|
|
||||||
VAQ t2, h3, h3 \
|
|
||||||
|
|
||||||
// carry h0->h1->h2->h0
|
|
||||||
// input: h0, h1, h2
|
|
||||||
// temp: t0, t1, t2, t3, t4, t5, t6, t7, t8
|
|
||||||
// output: h0, h1, h2
|
|
||||||
#define REDUCE2(h0, h1, h2, t0, t1, t2, t3, t4, t5, t6, t7, t8) \
|
|
||||||
VLEIB $7, $0x28, t3 \ // 5 byte shift mask
|
|
||||||
VREPIB $4, t4 \ // 4 bit shift mask
|
|
||||||
VREPIB $2, t7 \ // 2 bit shift mask
|
|
||||||
VGBM $0x003F, t5 \ // mask to clear carry bits
|
|
||||||
VSRLB t3, h0, t0 \
|
|
||||||
VSRLB t3, h1, t1 \
|
|
||||||
VSRLB t3, h2, t2 \
|
|
||||||
VESRLG $4, t5, t5 \ // 44 bit clear mask
|
|
||||||
VSRL t4, t0, t0 \
|
|
||||||
VSRL t4, t1, t1 \
|
|
||||||
VSRL t7, t2, t2 \
|
|
||||||
VESRLG $2, t5, t6 \ // 42 bit clear mask
|
|
||||||
VESLG $2, t2, t8 \
|
|
||||||
VAQ t8, t2, t2 \
|
|
||||||
VN t5, h0, h0 \
|
|
||||||
VN t5, h1, h1 \
|
|
||||||
VN t6, h2, h2 \
|
|
||||||
VAQ t0, h1, h1 \
|
|
||||||
VAQ t1, h2, h2 \
|
|
||||||
VAQ t2, h0, h0 \
|
|
||||||
VSRLB t3, h0, t0 \
|
|
||||||
VSRLB t3, h1, t1 \
|
|
||||||
VSRLB t3, h2, t2 \
|
|
||||||
VSRL t4, t0, t0 \
|
|
||||||
VSRL t4, t1, t1 \
|
|
||||||
VSRL t7, t2, t2 \
|
|
||||||
VN t5, h0, h0 \
|
|
||||||
VN t5, h1, h1 \
|
|
||||||
VESLG $2, t2, t8 \
|
|
||||||
VN t6, h2, h2 \
|
|
||||||
VAQ t0, h1, h1 \
|
|
||||||
VAQ t8, t2, t2 \
|
|
||||||
VAQ t1, h2, h2 \
|
|
||||||
VAQ t2, h0, h0 \
|
|
||||||
|
|
||||||
// expands two message blocks into the lower halfs of the d registers
|
|
||||||
// moves the contents of the d registers into upper halfs
|
|
||||||
// input: in1, in2, d0, d1, d2, d3, d4, d5
|
|
||||||
// temp: TEMP0, TEMP1, TEMP2, TEMP3
|
|
||||||
// output: d0, d1, d2, d3, d4, d5
|
|
||||||
#define EXPACC(in1, in2, d0, d1, d2, d3, d4, d5, TEMP0, TEMP1, TEMP2, TEMP3) \
|
|
||||||
VGBM $0xff3f, TEMP0 \
|
|
||||||
VGBM $0xff1f, TEMP1 \
|
|
||||||
VESLG $4, d1, TEMP2 \
|
|
||||||
VESLG $4, d4, TEMP3 \
|
|
||||||
VESRLG $4, TEMP0, TEMP0 \
|
|
||||||
VPERM in1, d0, EX0, d0 \
|
|
||||||
VPERM in2, d3, EX0, d3 \
|
|
||||||
VPERM in1, d2, EX2, d2 \
|
|
||||||
VPERM in2, d5, EX2, d5 \
|
|
||||||
VPERM in1, TEMP2, EX1, d1 \
|
|
||||||
VPERM in2, TEMP3, EX1, d4 \
|
|
||||||
VN TEMP0, d0, d0 \
|
|
||||||
VN TEMP0, d3, d3 \
|
|
||||||
VESRLG $4, d1, d1 \
|
|
||||||
VESRLG $4, d4, d4 \
|
|
||||||
VN TEMP1, d2, d2 \
|
|
||||||
VN TEMP1, d5, d5 \
|
|
||||||
VN TEMP0, d1, d1 \
|
|
||||||
VN TEMP0, d4, d4 \
|
|
||||||
|
|
||||||
// expands one message block into the lower halfs of the d registers
|
|
||||||
// moves the contents of the d registers into upper halfs
|
|
||||||
// input: in, d0, d1, d2
|
|
||||||
// temp: TEMP0, TEMP1, TEMP2
|
|
||||||
// output: d0, d1, d2
|
|
||||||
#define EXPACC2(in, d0, d1, d2, TEMP0, TEMP1, TEMP2) \
|
|
||||||
VGBM $0xff3f, TEMP0 \
|
|
||||||
VESLG $4, d1, TEMP2 \
|
|
||||||
VGBM $0xff1f, TEMP1 \
|
|
||||||
VPERM in, d0, EX0, d0 \
|
|
||||||
VESRLG $4, TEMP0, TEMP0 \
|
|
||||||
VPERM in, d2, EX2, d2 \
|
|
||||||
VPERM in, TEMP2, EX1, d1 \
|
|
||||||
VN TEMP0, d0, d0 \
|
|
||||||
VN TEMP1, d2, d2 \
|
|
||||||
VESRLG $4, d1, d1 \
|
|
||||||
VN TEMP0, d1, d1 \
|
|
||||||
|
|
||||||
// pack h2:h0 into h1:h0 (no carry)
|
|
||||||
// input: h0, h1, h2
|
|
||||||
// output: h0, h1, h2
|
|
||||||
#define PACK(h0, h1, h2) \
|
|
||||||
VMRLG h1, h2, h2 \ // copy h1 to upper half h2
|
|
||||||
VESLG $44, h1, h1 \ // shift limb 1 44 bits, leaving 20
|
|
||||||
VO h0, h1, h0 \ // combine h0 with 20 bits from limb 1
|
|
||||||
VESRLG $20, h2, h1 \ // put top 24 bits of limb 1 into h1
|
|
||||||
VLEIG $1, $0, h1 \ // clear h2 stuff from lower half of h1
|
|
||||||
VO h0, h1, h0 \ // h0 now has 88 bits (limb 0 and 1)
|
|
||||||
VLEIG $0, $0, h2 \ // clear upper half of h2
|
|
||||||
VESRLG $40, h2, h1 \ // h1 now has upper two bits of result
|
|
||||||
VLEIB $7, $88, h1 \ // for byte shift (11 bytes)
|
|
||||||
VSLB h1, h2, h2 \ // shift h2 11 bytes to the left
|
|
||||||
VO h0, h2, h0 \ // combine h0 with 20 bits from limb 1
|
|
||||||
VLEIG $0, $0, h1 \ // clear upper half of h1
|
|
||||||
|
|
||||||
// if h > 2**130-5 then h -= 2**130-5
|
|
||||||
// input: h0, h1
|
|
||||||
// temp: t0, t1, t2
|
|
||||||
// output: h0
|
|
||||||
#define MOD(h0, h1, t0, t1, t2) \
|
|
||||||
VZERO t0 \
|
|
||||||
VLEIG $1, $5, t0 \
|
|
||||||
VACCQ h0, t0, t1 \
|
|
||||||
VAQ h0, t0, t0 \
|
|
||||||
VONE t2 \
|
|
||||||
VLEIG $1, $-4, t2 \
|
|
||||||
VAQ t2, t1, t1 \
|
|
||||||
VACCQ h1, t1, t1 \
|
|
||||||
VONE t2 \
|
|
||||||
VAQ t2, t1, t1 \
|
|
||||||
VN h0, t1, t2 \
|
|
||||||
VNC t0, t1, t1 \
|
|
||||||
VO t1, t2, h0 \
|
|
||||||
|
|
||||||
// func poly1305vmsl(out *[16]byte, m *byte, mlen uint64, key *[32]key)
|
|
||||||
TEXT ·poly1305vmsl(SB), $0-32
|
|
||||||
// This code processes 6 + up to 4 blocks (32 bytes) per iteration
|
|
||||||
// using the algorithm described in:
|
|
||||||
// NEON crypto, Daniel J. Bernstein & Peter Schwabe
|
|
||||||
// https://cryptojedi.org/papers/neoncrypto-20120320.pdf
|
|
||||||
// And as moddified for VMSL as described in
|
|
||||||
// Accelerating Poly1305 Cryptographic Message Authentication on the z14
|
|
||||||
// O'Farrell et al, CASCON 2017, p48-55
|
|
||||||
// https://ibm.ent.box.com/s/jf9gedj0e9d2vjctfyh186shaztavnht
|
|
||||||
|
|
||||||
LMG out+0(FP), R1, R4 // R1=out, R2=m, R3=mlen, R4=key
|
|
||||||
VZERO V0 // c
|
|
||||||
|
|
||||||
// load EX0, EX1 and EX2
|
|
||||||
MOVD $·constants<>(SB), R5
|
|
||||||
VLM (R5), EX0, EX2 // c
|
|
||||||
|
|
||||||
// setup r
|
|
||||||
VL (R4), T_0
|
|
||||||
MOVD $·keyMask<>(SB), R6
|
|
||||||
VL (R6), T_1
|
|
||||||
VN T_0, T_1, T_0
|
|
||||||
VZERO T_2 // limbs for r
|
|
||||||
VZERO T_3
|
|
||||||
VZERO T_4
|
|
||||||
EXPACC2(T_0, T_2, T_3, T_4, T_1, T_5, T_7)
|
|
||||||
|
|
||||||
// T_2, T_3, T_4: [0, r]
|
|
||||||
|
|
||||||
// setup r*20
|
|
||||||
VLEIG $0, $0, T_0
|
|
||||||
VLEIG $1, $20, T_0 // T_0: [0, 20]
|
|
||||||
VZERO T_5
|
|
||||||
VZERO T_6
|
|
||||||
VMSLG T_0, T_3, T_5, T_5
|
|
||||||
VMSLG T_0, T_4, T_6, T_6
|
|
||||||
|
|
||||||
// store r for final block in GR
|
|
||||||
VLGVG $1, T_2, RSAVE_0 // c
|
|
||||||
VLGVG $1, T_3, RSAVE_1 // c
|
|
||||||
VLGVG $1, T_4, RSAVE_2 // c
|
|
||||||
VLGVG $1, T_5, R5SAVE_1 // c
|
|
||||||
VLGVG $1, T_6, R5SAVE_2 // c
|
|
||||||
|
|
||||||
// initialize h
|
|
||||||
VZERO H0_0
|
|
||||||
VZERO H1_0
|
|
||||||
VZERO H2_0
|
|
||||||
VZERO H0_1
|
|
||||||
VZERO H1_1
|
|
||||||
VZERO H2_1
|
|
||||||
|
|
||||||
// initialize pointer for reduce constants
|
|
||||||
MOVD $·reduce<>(SB), R12
|
|
||||||
|
|
||||||
// calculate r**2 and 20*(r**2)
|
|
||||||
VZERO R_0
|
|
||||||
VZERO R_1
|
|
||||||
VZERO R_2
|
|
||||||
SQUARE(T_2, T_3, T_4, T_6, R_0, R_1, R_2, T_1, T_5, T_7)
|
|
||||||
REDUCE2(R_0, R_1, R_2, M0, M1, M2, M3, M4, R5_1, R5_2, M5, T_1)
|
|
||||||
VZERO R5_1
|
|
||||||
VZERO R5_2
|
|
||||||
VMSLG T_0, R_1, R5_1, R5_1
|
|
||||||
VMSLG T_0, R_2, R5_2, R5_2
|
|
||||||
|
|
||||||
// skip r**4 calculation if 3 blocks or less
|
|
||||||
CMPBLE R3, $48, b4
|
|
||||||
|
|
||||||
// calculate r**4 and 20*(r**4)
|
|
||||||
VZERO T_8
|
|
||||||
VZERO T_9
|
|
||||||
VZERO T_10
|
|
||||||
SQUARE(R_0, R_1, R_2, R5_2, T_8, T_9, T_10, T_1, T_5, T_7)
|
|
||||||
REDUCE2(T_8, T_9, T_10, M0, M1, M2, M3, M4, T_2, T_3, M5, T_1)
|
|
||||||
VZERO T_2
|
|
||||||
VZERO T_3
|
|
||||||
VMSLG T_0, T_9, T_2, T_2
|
|
||||||
VMSLG T_0, T_10, T_3, T_3
|
|
||||||
|
|
||||||
// put r**2 to the right and r**4 to the left of R_0, R_1, R_2
|
|
||||||
VSLDB $8, T_8, T_8, T_8
|
|
||||||
VSLDB $8, T_9, T_9, T_9
|
|
||||||
VSLDB $8, T_10, T_10, T_10
|
|
||||||
VSLDB $8, T_2, T_2, T_2
|
|
||||||
VSLDB $8, T_3, T_3, T_3
|
|
||||||
|
|
||||||
VO T_8, R_0, R_0
|
|
||||||
VO T_9, R_1, R_1
|
|
||||||
VO T_10, R_2, R_2
|
|
||||||
VO T_2, R5_1, R5_1
|
|
||||||
VO T_3, R5_2, R5_2
|
|
||||||
|
|
||||||
CMPBLE R3, $80, load // less than or equal to 5 blocks in message
|
|
||||||
|
|
||||||
// 6(or 5+1) blocks
|
|
||||||
SUB $81, R3
|
|
||||||
VLM (R2), M0, M4
|
|
||||||
VLL R3, 80(R2), M5
|
|
||||||
ADD $1, R3
|
|
||||||
MOVBZ $1, R0
|
|
||||||
CMPBGE R3, $16, 2(PC)
|
|
||||||
VLVGB R3, R0, M5
|
|
||||||
MOVD $96(R2), R2
|
|
||||||
EXPACC(M0, M1, H0_0, H1_0, H2_0, H0_1, H1_1, H2_1, T_0, T_1, T_2, T_3)
|
|
||||||
EXPACC(M2, M3, H0_0, H1_0, H2_0, H0_1, H1_1, H2_1, T_0, T_1, T_2, T_3)
|
|
||||||
VLEIB $2, $1, H2_0
|
|
||||||
VLEIB $2, $1, H2_1
|
|
||||||
VLEIB $10, $1, H2_0
|
|
||||||
VLEIB $10, $1, H2_1
|
|
||||||
|
|
||||||
VZERO M0
|
|
||||||
VZERO M1
|
|
||||||
VZERO M2
|
|
||||||
VZERO M3
|
|
||||||
VZERO T_4
|
|
||||||
VZERO T_10
|
|
||||||
EXPACC(M4, M5, M0, M1, M2, M3, T_4, T_10, T_0, T_1, T_2, T_3)
|
|
||||||
VLR T_4, M4
|
|
||||||
VLEIB $10, $1, M2
|
|
||||||
CMPBLT R3, $16, 2(PC)
|
|
||||||
VLEIB $10, $1, T_10
|
|
||||||
MULTIPLY(H0_0, H1_0, H2_0, H0_1, H1_1, H2_1, R_0, R_1, R_2, R5_1, R5_2, M0, M1, M2, M3, M4, T_10, T_0, T_1, T_2, T_3, T_4, T_5, T_6, T_7, T_8, T_9)
|
|
||||||
REDUCE(H0_0, H1_0, H2_0, H0_1, H1_1, H2_1, T_10, M0, M1, M2, M3, M4, T_4, T_5, T_2, T_7, T_8, T_9)
|
|
||||||
VMRHG V0, H0_1, H0_0
|
|
||||||
VMRHG V0, H1_1, H1_0
|
|
||||||
VMRHG V0, H2_1, H2_0
|
|
||||||
VMRLG V0, H0_1, H0_1
|
|
||||||
VMRLG V0, H1_1, H1_1
|
|
||||||
VMRLG V0, H2_1, H2_1
|
|
||||||
|
|
||||||
SUB $16, R3
|
|
||||||
CMPBLE R3, $0, square
|
|
||||||
|
|
||||||
load:
|
|
||||||
// load EX0, EX1 and EX2
|
|
||||||
MOVD $·c<>(SB), R5
|
|
||||||
VLM (R5), EX0, EX2
|
|
||||||
|
|
||||||
loop:
|
|
||||||
CMPBLE R3, $64, add // b4 // last 4 or less blocks left
|
|
||||||
|
|
||||||
// next 4 full blocks
|
|
||||||
VLM (R2), M2, M5
|
|
||||||
SUB $64, R3
|
|
||||||
MOVD $64(R2), R2
|
|
||||||
REDUCE(H0_0, H1_0, H2_0, H0_1, H1_1, H2_1, T_10, M0, M1, T_0, T_1, T_3, T_4, T_5, T_2, T_7, T_8, T_9)
|
|
||||||
|
|
||||||
// expacc in-lined to create [m2, m3] limbs
|
|
||||||
VGBM $0x3f3f, T_0 // 44 bit clear mask
|
|
||||||
VGBM $0x1f1f, T_1 // 40 bit clear mask
|
|
||||||
VPERM M2, M3, EX0, T_3
|
|
||||||
VESRLG $4, T_0, T_0 // 44 bit clear mask ready
|
|
||||||
VPERM M2, M3, EX1, T_4
|
|
||||||
VPERM M2, M3, EX2, T_5
|
|
||||||
VN T_0, T_3, T_3
|
|
||||||
VESRLG $4, T_4, T_4
|
|
||||||
VN T_1, T_5, T_5
|
|
||||||
VN T_0, T_4, T_4
|
|
||||||
VMRHG H0_1, T_3, H0_0
|
|
||||||
VMRHG H1_1, T_4, H1_0
|
|
||||||
VMRHG H2_1, T_5, H2_0
|
|
||||||
VMRLG H0_1, T_3, H0_1
|
|
||||||
VMRLG H1_1, T_4, H1_1
|
|
||||||
VMRLG H2_1, T_5, H2_1
|
|
||||||
VLEIB $10, $1, H2_0
|
|
||||||
VLEIB $10, $1, H2_1
|
|
||||||
VPERM M4, M5, EX0, T_3
|
|
||||||
VPERM M4, M5, EX1, T_4
|
|
||||||
VPERM M4, M5, EX2, T_5
|
|
||||||
VN T_0, T_3, T_3
|
|
||||||
VESRLG $4, T_4, T_4
|
|
||||||
VN T_1, T_5, T_5
|
|
||||||
VN T_0, T_4, T_4
|
|
||||||
VMRHG V0, T_3, M0
|
|
||||||
VMRHG V0, T_4, M1
|
|
||||||
VMRHG V0, T_5, M2
|
|
||||||
VMRLG V0, T_3, M3
|
|
||||||
VMRLG V0, T_4, M4
|
|
||||||
VMRLG V0, T_5, M5
|
|
||||||
VLEIB $10, $1, M2
|
|
||||||
VLEIB $10, $1, M5
|
|
||||||
|
|
||||||
MULTIPLY(H0_0, H1_0, H2_0, H0_1, H1_1, H2_1, R_0, R_1, R_2, R5_1, R5_2, M0, M1, M2, M3, M4, M5, T_0, T_1, T_2, T_3, T_4, T_5, T_6, T_7, T_8, T_9)
|
|
||||||
CMPBNE R3, $0, loop
|
|
||||||
REDUCE(H0_0, H1_0, H2_0, H0_1, H1_1, H2_1, T_10, M0, M1, M3, M4, M5, T_4, T_5, T_2, T_7, T_8, T_9)
|
|
||||||
VMRHG V0, H0_1, H0_0
|
|
||||||
VMRHG V0, H1_1, H1_0
|
|
||||||
VMRHG V0, H2_1, H2_0
|
|
||||||
VMRLG V0, H0_1, H0_1
|
|
||||||
VMRLG V0, H1_1, H1_1
|
|
||||||
VMRLG V0, H2_1, H2_1
|
|
||||||
|
|
||||||
// load EX0, EX1, EX2
|
|
||||||
MOVD $·constants<>(SB), R5
|
|
||||||
VLM (R5), EX0, EX2
|
|
||||||
|
|
||||||
// sum vectors
|
|
||||||
VAQ H0_0, H0_1, H0_0
|
|
||||||
VAQ H1_0, H1_1, H1_0
|
|
||||||
VAQ H2_0, H2_1, H2_0
|
|
||||||
|
|
||||||
// h may be >= 2*(2**130-5) so we need to reduce it again
|
|
||||||
// M0...M4 are used as temps here
|
|
||||||
REDUCE2(H0_0, H1_0, H2_0, M0, M1, M2, M3, M4, T_9, T_10, H0_1, M5)
|
|
||||||
|
|
||||||
next: // carry h1->h2
|
|
||||||
VLEIB $7, $0x28, T_1
|
|
||||||
VREPIB $4, T_2
|
|
||||||
VGBM $0x003F, T_3
|
|
||||||
VESRLG $4, T_3
|
|
||||||
|
|
||||||
// byte shift
|
|
||||||
VSRLB T_1, H1_0, T_4
|
|
||||||
|
|
||||||
// bit shift
|
|
||||||
VSRL T_2, T_4, T_4
|
|
||||||
|
|
||||||
// clear h1 carry bits
|
|
||||||
VN T_3, H1_0, H1_0
|
|
||||||
|
|
||||||
// add carry
|
|
||||||
VAQ T_4, H2_0, H2_0
|
|
||||||
|
|
||||||
// h is now < 2*(2**130-5)
|
|
||||||
// pack h into h1 (hi) and h0 (lo)
|
|
||||||
PACK(H0_0, H1_0, H2_0)
|
|
||||||
|
|
||||||
// if h > 2**130-5 then h -= 2**130-5
|
|
||||||
MOD(H0_0, H1_0, T_0, T_1, T_2)
|
|
||||||
|
|
||||||
// h += s
|
|
||||||
MOVD $·bswapMask<>(SB), R5
|
|
||||||
VL (R5), T_1
|
|
||||||
VL 16(R4), T_0
|
|
||||||
VPERM T_0, T_0, T_1, T_0 // reverse bytes (to big)
|
|
||||||
VAQ T_0, H0_0, H0_0
|
|
||||||
VPERM H0_0, H0_0, T_1, H0_0 // reverse bytes (to little)
|
|
||||||
VST H0_0, (R1)
|
|
||||||
RET
|
|
||||||
|
|
||||||
add:
|
|
||||||
// load EX0, EX1, EX2
|
|
||||||
MOVD $·constants<>(SB), R5
|
|
||||||
VLM (R5), EX0, EX2
|
|
||||||
|
|
||||||
REDUCE(H0_0, H1_0, H2_0, H0_1, H1_1, H2_1, T_10, M0, M1, M3, M4, M5, T_4, T_5, T_2, T_7, T_8, T_9)
|
|
||||||
VMRHG V0, H0_1, H0_0
|
|
||||||
VMRHG V0, H1_1, H1_0
|
|
||||||
VMRHG V0, H2_1, H2_0
|
|
||||||
VMRLG V0, H0_1, H0_1
|
|
||||||
VMRLG V0, H1_1, H1_1
|
|
||||||
VMRLG V0, H2_1, H2_1
|
|
||||||
CMPBLE R3, $64, b4
|
|
||||||
|
|
||||||
b4:
|
|
||||||
CMPBLE R3, $48, b3 // 3 blocks or less
|
|
||||||
|
|
||||||
// 4(3+1) blocks remaining
|
|
||||||
SUB $49, R3
|
|
||||||
VLM (R2), M0, M2
|
|
||||||
VLL R3, 48(R2), M3
|
|
||||||
ADD $1, R3
|
|
||||||
MOVBZ $1, R0
|
|
||||||
CMPBEQ R3, $16, 2(PC)
|
|
||||||
VLVGB R3, R0, M3
|
|
||||||
MOVD $64(R2), R2
|
|
||||||
EXPACC(M0, M1, H0_0, H1_0, H2_0, H0_1, H1_1, H2_1, T_0, T_1, T_2, T_3)
|
|
||||||
VLEIB $10, $1, H2_0
|
|
||||||
VLEIB $10, $1, H2_1
|
|
||||||
VZERO M0
|
|
||||||
VZERO M1
|
|
||||||
VZERO M4
|
|
||||||
VZERO M5
|
|
||||||
VZERO T_4
|
|
||||||
VZERO T_10
|
|
||||||
EXPACC(M2, M3, M0, M1, M4, M5, T_4, T_10, T_0, T_1, T_2, T_3)
|
|
||||||
VLR T_4, M2
|
|
||||||
VLEIB $10, $1, M4
|
|
||||||
CMPBNE R3, $16, 2(PC)
|
|
||||||
VLEIB $10, $1, T_10
|
|
||||||
MULTIPLY(H0_0, H1_0, H2_0, H0_1, H1_1, H2_1, R_0, R_1, R_2, R5_1, R5_2, M0, M1, M4, M5, M2, T_10, T_0, T_1, T_2, T_3, T_4, T_5, T_6, T_7, T_8, T_9)
|
|
||||||
REDUCE(H0_0, H1_0, H2_0, H0_1, H1_1, H2_1, T_10, M0, M1, M3, M4, M5, T_4, T_5, T_2, T_7, T_8, T_9)
|
|
||||||
VMRHG V0, H0_1, H0_0
|
|
||||||
VMRHG V0, H1_1, H1_0
|
|
||||||
VMRHG V0, H2_1, H2_0
|
|
||||||
VMRLG V0, H0_1, H0_1
|
|
||||||
VMRLG V0, H1_1, H1_1
|
|
||||||
VMRLG V0, H2_1, H2_1
|
|
||||||
SUB $16, R3
|
|
||||||
CMPBLE R3, $0, square // this condition must always hold true!
|
|
||||||
|
|
||||||
b3:
|
|
||||||
CMPBLE R3, $32, b2
|
|
||||||
|
|
||||||
// 3 blocks remaining
|
|
||||||
|
|
||||||
// setup [r²,r]
|
|
||||||
VSLDB $8, R_0, R_0, R_0
|
|
||||||
VSLDB $8, R_1, R_1, R_1
|
|
||||||
VSLDB $8, R_2, R_2, R_2
|
|
||||||
VSLDB $8, R5_1, R5_1, R5_1
|
|
||||||
VSLDB $8, R5_2, R5_2, R5_2
|
|
||||||
|
|
||||||
VLVGG $1, RSAVE_0, R_0
|
|
||||||
VLVGG $1, RSAVE_1, R_1
|
|
||||||
VLVGG $1, RSAVE_2, R_2
|
|
||||||
VLVGG $1, R5SAVE_1, R5_1
|
|
||||||
VLVGG $1, R5SAVE_2, R5_2
|
|
||||||
|
|
||||||
// setup [h0, h1]
|
|
||||||
VSLDB $8, H0_0, H0_0, H0_0
|
|
||||||
VSLDB $8, H1_0, H1_0, H1_0
|
|
||||||
VSLDB $8, H2_0, H2_0, H2_0
|
|
||||||
VO H0_1, H0_0, H0_0
|
|
||||||
VO H1_1, H1_0, H1_0
|
|
||||||
VO H2_1, H2_0, H2_0
|
|
||||||
VZERO H0_1
|
|
||||||
VZERO H1_1
|
|
||||||
VZERO H2_1
|
|
||||||
|
|
||||||
VZERO M0
|
|
||||||
VZERO M1
|
|
||||||
VZERO M2
|
|
||||||
VZERO M3
|
|
||||||
VZERO M4
|
|
||||||
VZERO M5
|
|
||||||
|
|
||||||
// H*[r**2, r]
|
|
||||||
MULTIPLY(H0_0, H1_0, H2_0, H0_1, H1_1, H2_1, R_0, R_1, R_2, R5_1, R5_2, M0, M1, M2, M3, M4, M5, T_0, T_1, T_2, T_3, T_4, T_5, T_6, T_7, T_8, T_9)
|
|
||||||
REDUCE2(H0_0, H1_0, H2_0, M0, M1, M2, M3, M4, H0_1, H1_1, T_10, M5)
|
|
||||||
|
|
||||||
SUB $33, R3
|
|
||||||
VLM (R2), M0, M1
|
|
||||||
VLL R3, 32(R2), M2
|
|
||||||
ADD $1, R3
|
|
||||||
MOVBZ $1, R0
|
|
||||||
CMPBEQ R3, $16, 2(PC)
|
|
||||||
VLVGB R3, R0, M2
|
|
||||||
|
|
||||||
// H += m0
|
|
||||||
VZERO T_1
|
|
||||||
VZERO T_2
|
|
||||||
VZERO T_3
|
|
||||||
EXPACC2(M0, T_1, T_2, T_3, T_4, T_5, T_6)
|
|
||||||
VLEIB $10, $1, T_3
|
|
||||||
VAG H0_0, T_1, H0_0
|
|
||||||
VAG H1_0, T_2, H1_0
|
|
||||||
VAG H2_0, T_3, H2_0
|
|
||||||
|
|
||||||
VZERO M0
|
|
||||||
VZERO M3
|
|
||||||
VZERO M4
|
|
||||||
VZERO M5
|
|
||||||
VZERO T_10
|
|
||||||
|
|
||||||
// (H+m0)*r
|
|
||||||
MULTIPLY(H0_0, H1_0, H2_0, H0_1, H1_1, H2_1, R_0, R_1, R_2, R5_1, R5_2, M0, M3, M4, M5, V0, T_10, T_0, T_1, T_2, T_3, T_4, T_5, T_6, T_7, T_8, T_9)
|
|
||||||
REDUCE2(H0_0, H1_0, H2_0, M0, M3, M4, M5, T_10, H0_1, H1_1, H2_1, T_9)
|
|
||||||
|
|
||||||
// H += m1
|
|
||||||
VZERO V0
|
|
||||||
VZERO T_1
|
|
||||||
VZERO T_2
|
|
||||||
VZERO T_3
|
|
||||||
EXPACC2(M1, T_1, T_2, T_3, T_4, T_5, T_6)
|
|
||||||
VLEIB $10, $1, T_3
|
|
||||||
VAQ H0_0, T_1, H0_0
|
|
||||||
VAQ H1_0, T_2, H1_0
|
|
||||||
VAQ H2_0, T_3, H2_0
|
|
||||||
REDUCE2(H0_0, H1_0, H2_0, M0, M3, M4, M5, T_9, H0_1, H1_1, H2_1, T_10)
|
|
||||||
|
|
||||||
// [H, m2] * [r**2, r]
|
|
||||||
EXPACC2(M2, H0_0, H1_0, H2_0, T_1, T_2, T_3)
|
|
||||||
CMPBNE R3, $16, 2(PC)
|
|
||||||
VLEIB $10, $1, H2_0
|
|
||||||
VZERO M0
|
|
||||||
VZERO M1
|
|
||||||
VZERO M2
|
|
||||||
VZERO M3
|
|
||||||
VZERO M4
|
|
||||||
VZERO M5
|
|
||||||
MULTIPLY(H0_0, H1_0, H2_0, H0_1, H1_1, H2_1, R_0, R_1, R_2, R5_1, R5_2, M0, M1, M2, M3, M4, M5, T_0, T_1, T_2, T_3, T_4, T_5, T_6, T_7, T_8, T_9)
|
|
||||||
REDUCE2(H0_0, H1_0, H2_0, M0, M1, M2, M3, M4, H0_1, H1_1, M5, T_10)
|
|
||||||
SUB $16, R3
|
|
||||||
CMPBLE R3, $0, next // this condition must always hold true!
|
|
||||||
|
|
||||||
b2:
|
|
||||||
CMPBLE R3, $16, b1
|
|
||||||
|
|
||||||
// 2 blocks remaining
|
|
||||||
|
|
||||||
// setup [r²,r]
|
|
||||||
VSLDB $8, R_0, R_0, R_0
|
|
||||||
VSLDB $8, R_1, R_1, R_1
|
|
||||||
VSLDB $8, R_2, R_2, R_2
|
|
||||||
VSLDB $8, R5_1, R5_1, R5_1
|
|
||||||
VSLDB $8, R5_2, R5_2, R5_2
|
|
||||||
|
|
||||||
VLVGG $1, RSAVE_0, R_0
|
|
||||||
VLVGG $1, RSAVE_1, R_1
|
|
||||||
VLVGG $1, RSAVE_2, R_2
|
|
||||||
VLVGG $1, R5SAVE_1, R5_1
|
|
||||||
VLVGG $1, R5SAVE_2, R5_2
|
|
||||||
|
|
||||||
// setup [h0, h1]
|
|
||||||
VSLDB $8, H0_0, H0_0, H0_0
|
|
||||||
VSLDB $8, H1_0, H1_0, H1_0
|
|
||||||
VSLDB $8, H2_0, H2_0, H2_0
|
|
||||||
VO H0_1, H0_0, H0_0
|
|
||||||
VO H1_1, H1_0, H1_0
|
|
||||||
VO H2_1, H2_0, H2_0
|
|
||||||
VZERO H0_1
|
|
||||||
VZERO H1_1
|
|
||||||
VZERO H2_1
|
|
||||||
|
|
||||||
VZERO M0
|
|
||||||
VZERO M1
|
|
||||||
VZERO M2
|
|
||||||
VZERO M3
|
|
||||||
VZERO M4
|
|
||||||
VZERO M5
|
|
||||||
|
|
||||||
// H*[r**2, r]
|
|
||||||
MULTIPLY(H0_0, H1_0, H2_0, H0_1, H1_1, H2_1, R_0, R_1, R_2, R5_1, R5_2, M0, M1, M2, M3, M4, M5, T_0, T_1, T_2, T_3, T_4, T_5, T_6, T_7, T_8, T_9)
|
|
||||||
REDUCE(H0_0, H1_0, H2_0, H0_1, H1_1, H2_1, T_10, M0, M1, M2, M3, M4, T_4, T_5, T_2, T_7, T_8, T_9)
|
|
||||||
VMRHG V0, H0_1, H0_0
|
|
||||||
VMRHG V0, H1_1, H1_0
|
|
||||||
VMRHG V0, H2_1, H2_0
|
|
||||||
VMRLG V0, H0_1, H0_1
|
|
||||||
VMRLG V0, H1_1, H1_1
|
|
||||||
VMRLG V0, H2_1, H2_1
|
|
||||||
|
|
||||||
// move h to the left and 0s at the right
|
|
||||||
VSLDB $8, H0_0, H0_0, H0_0
|
|
||||||
VSLDB $8, H1_0, H1_0, H1_0
|
|
||||||
VSLDB $8, H2_0, H2_0, H2_0
|
|
||||||
|
|
||||||
// get message blocks and append 1 to start
|
|
||||||
SUB $17, R3
|
|
||||||
VL (R2), M0
|
|
||||||
VLL R3, 16(R2), M1
|
|
||||||
ADD $1, R3
|
|
||||||
MOVBZ $1, R0
|
|
||||||
CMPBEQ R3, $16, 2(PC)
|
|
||||||
VLVGB R3, R0, M1
|
|
||||||
VZERO T_6
|
|
||||||
VZERO T_7
|
|
||||||
VZERO T_8
|
|
||||||
EXPACC2(M0, T_6, T_7, T_8, T_1, T_2, T_3)
|
|
||||||
EXPACC2(M1, T_6, T_7, T_8, T_1, T_2, T_3)
|
|
||||||
VLEIB $2, $1, T_8
|
|
||||||
CMPBNE R3, $16, 2(PC)
|
|
||||||
VLEIB $10, $1, T_8
|
|
||||||
|
|
||||||
// add [m0, m1] to h
|
|
||||||
VAG H0_0, T_6, H0_0
|
|
||||||
VAG H1_0, T_7, H1_0
|
|
||||||
VAG H2_0, T_8, H2_0
|
|
||||||
|
|
||||||
VZERO M2
|
|
||||||
VZERO M3
|
|
||||||
VZERO M4
|
|
||||||
VZERO M5
|
|
||||||
VZERO T_10
|
|
||||||
VZERO M0
|
|
||||||
|
|
||||||
// at this point R_0 .. R5_2 look like [r**2, r]
|
|
||||||
MULTIPLY(H0_0, H1_0, H2_0, H0_1, H1_1, H2_1, R_0, R_1, R_2, R5_1, R5_2, M2, M3, M4, M5, T_10, M0, T_0, T_1, T_2, T_3, T_4, T_5, T_6, T_7, T_8, T_9)
|
|
||||||
REDUCE2(H0_0, H1_0, H2_0, M2, M3, M4, M5, T_9, H0_1, H1_1, H2_1, T_10)
|
|
||||||
SUB $16, R3, R3
|
|
||||||
CMPBLE R3, $0, next
|
|
||||||
|
|
||||||
b1:
|
|
||||||
CMPBLE R3, $0, next
|
|
||||||
|
|
||||||
// 1 block remaining
|
|
||||||
|
|
||||||
// setup [r²,r]
|
|
||||||
VSLDB $8, R_0, R_0, R_0
|
|
||||||
VSLDB $8, R_1, R_1, R_1
|
|
||||||
VSLDB $8, R_2, R_2, R_2
|
|
||||||
VSLDB $8, R5_1, R5_1, R5_1
|
|
||||||
VSLDB $8, R5_2, R5_2, R5_2
|
|
||||||
|
|
||||||
VLVGG $1, RSAVE_0, R_0
|
|
||||||
VLVGG $1, RSAVE_1, R_1
|
|
||||||
VLVGG $1, RSAVE_2, R_2
|
|
||||||
VLVGG $1, R5SAVE_1, R5_1
|
|
||||||
VLVGG $1, R5SAVE_2, R5_2
|
|
||||||
|
|
||||||
// setup [h0, h1]
|
|
||||||
VSLDB $8, H0_0, H0_0, H0_0
|
|
||||||
VSLDB $8, H1_0, H1_0, H1_0
|
|
||||||
VSLDB $8, H2_0, H2_0, H2_0
|
|
||||||
VO H0_1, H0_0, H0_0
|
|
||||||
VO H1_1, H1_0, H1_0
|
|
||||||
VO H2_1, H2_0, H2_0
|
|
||||||
VZERO H0_1
|
|
||||||
VZERO H1_1
|
|
||||||
VZERO H2_1
|
|
||||||
|
|
||||||
VZERO M0
|
|
||||||
VZERO M1
|
|
||||||
VZERO M2
|
|
||||||
VZERO M3
|
|
||||||
VZERO M4
|
|
||||||
VZERO M5
|
|
||||||
|
|
||||||
// H*[r**2, r]
|
|
||||||
MULTIPLY(H0_0, H1_0, H2_0, H0_1, H1_1, H2_1, R_0, R_1, R_2, R5_1, R5_2, M0, M1, M2, M3, M4, M5, T_0, T_1, T_2, T_3, T_4, T_5, T_6, T_7, T_8, T_9)
|
|
||||||
REDUCE2(H0_0, H1_0, H2_0, M0, M1, M2, M3, M4, T_9, T_10, H0_1, M5)
|
|
||||||
|
|
||||||
// set up [0, m0] limbs
|
|
||||||
SUB $1, R3
|
|
||||||
VLL R3, (R2), M0
|
|
||||||
ADD $1, R3
|
|
||||||
MOVBZ $1, R0
|
|
||||||
CMPBEQ R3, $16, 2(PC)
|
|
||||||
VLVGB R3, R0, M0
|
|
||||||
VZERO T_1
|
|
||||||
VZERO T_2
|
|
||||||
VZERO T_3
|
|
||||||
EXPACC2(M0, T_1, T_2, T_3, T_4, T_5, T_6)// limbs: [0, m]
|
|
||||||
CMPBNE R3, $16, 2(PC)
|
|
||||||
VLEIB $10, $1, T_3
|
|
||||||
|
|
||||||
// h+m0
|
|
||||||
VAQ H0_0, T_1, H0_0
|
|
||||||
VAQ H1_0, T_2, H1_0
|
|
||||||
VAQ H2_0, T_3, H2_0
|
|
||||||
|
|
||||||
VZERO M0
|
|
||||||
VZERO M1
|
|
||||||
VZERO M2
|
|
||||||
VZERO M3
|
|
||||||
VZERO M4
|
|
||||||
VZERO M5
|
|
||||||
MULTIPLY(H0_0, H1_0, H2_0, H0_1, H1_1, H2_1, R_0, R_1, R_2, R5_1, R5_2, M0, M1, M2, M3, M4, M5, T_0, T_1, T_2, T_3, T_4, T_5, T_6, T_7, T_8, T_9)
|
|
||||||
REDUCE2(H0_0, H1_0, H2_0, M0, M1, M2, M3, M4, T_9, T_10, H0_1, M5)
|
|
||||||
|
|
||||||
BR next
|
|
||||||
|
|
||||||
square:
|
|
||||||
// setup [r²,r]
|
|
||||||
VSLDB $8, R_0, R_0, R_0
|
|
||||||
VSLDB $8, R_1, R_1, R_1
|
|
||||||
VSLDB $8, R_2, R_2, R_2
|
|
||||||
VSLDB $8, R5_1, R5_1, R5_1
|
|
||||||
VSLDB $8, R5_2, R5_2, R5_2
|
|
||||||
|
|
||||||
VLVGG $1, RSAVE_0, R_0
|
|
||||||
VLVGG $1, RSAVE_1, R_1
|
|
||||||
VLVGG $1, RSAVE_2, R_2
|
|
||||||
VLVGG $1, R5SAVE_1, R5_1
|
|
||||||
VLVGG $1, R5SAVE_2, R5_2
|
|
||||||
|
|
||||||
// setup [h0, h1]
|
|
||||||
VSLDB $8, H0_0, H0_0, H0_0
|
|
||||||
VSLDB $8, H1_0, H1_0, H1_0
|
|
||||||
VSLDB $8, H2_0, H2_0, H2_0
|
|
||||||
VO H0_1, H0_0, H0_0
|
|
||||||
VO H1_1, H1_0, H1_0
|
|
||||||
VO H2_1, H2_0, H2_0
|
|
||||||
VZERO H0_1
|
|
||||||
VZERO H1_1
|
|
||||||
VZERO H2_1
|
|
||||||
|
|
||||||
VZERO M0
|
|
||||||
VZERO M1
|
|
||||||
VZERO M2
|
|
||||||
VZERO M3
|
|
||||||
VZERO M4
|
|
||||||
VZERO M5
|
|
||||||
|
|
||||||
// (h0*r**2) + (h1*r)
|
|
||||||
MULTIPLY(H0_0, H1_0, H2_0, H0_1, H1_1, H2_1, R_0, R_1, R_2, R5_1, R5_2, M0, M1, M2, M3, M4, M5, T_0, T_1, T_2, T_3, T_4, T_5, T_6, T_7, T_8, T_9)
|
|
||||||
REDUCE2(H0_0, H1_0, H2_0, M0, M1, M2, M3, M4, T_9, T_10, H0_1, M5)
|
|
||||||
BR next
|
|
2
vendor/golang.org/x/net/http2/client_conn_pool.go
generated
vendored
2
vendor/golang.org/x/net/http2/client_conn_pool.go
generated
vendored
|
@ -107,6 +107,7 @@ func (p *clientConnPool) getClientConn(req *http.Request, addr string, dialOnMis
|
||||||
|
|
||||||
// dialCall is an in-flight Transport dial call to a host.
|
// dialCall is an in-flight Transport dial call to a host.
|
||||||
type dialCall struct {
|
type dialCall struct {
|
||||||
|
_ incomparable
|
||||||
p *clientConnPool
|
p *clientConnPool
|
||||||
done chan struct{} // closed when done
|
done chan struct{} // closed when done
|
||||||
res *ClientConn // valid after done is closed
|
res *ClientConn // valid after done is closed
|
||||||
|
@ -180,6 +181,7 @@ func (p *clientConnPool) addConnIfNeeded(key string, t *Transport, c *tls.Conn)
|
||||||
}
|
}
|
||||||
|
|
||||||
type addConnCall struct {
|
type addConnCall struct {
|
||||||
|
_ incomparable
|
||||||
p *clientConnPool
|
p *clientConnPool
|
||||||
done chan struct{} // closed when done
|
done chan struct{} // closed when done
|
||||||
err error
|
err error
|
||||||
|
|
2
vendor/golang.org/x/net/http2/flow.go
generated
vendored
2
vendor/golang.org/x/net/http2/flow.go
generated
vendored
|
@ -8,6 +8,8 @@ package http2
|
||||||
|
|
||||||
// flow is the flow control window's size.
|
// flow is the flow control window's size.
|
||||||
type flow struct {
|
type flow struct {
|
||||||
|
_ incomparable
|
||||||
|
|
||||||
// n is the number of DATA bytes we're allowed to send.
|
// n is the number of DATA bytes we're allowed to send.
|
||||||
// A flow is kept both on a conn and a per-stream.
|
// A flow is kept both on a conn and a per-stream.
|
||||||
n int32
|
n int32
|
||||||
|
|
7
vendor/golang.org/x/net/http2/hpack/huffman.go
generated
vendored
7
vendor/golang.org/x/net/http2/hpack/huffman.go
generated
vendored
|
@ -105,7 +105,14 @@ func huffmanDecode(buf *bytes.Buffer, maxLen int, v []byte) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// incomparable is a zero-width, non-comparable type. Adding it to a struct
|
||||||
|
// makes that struct also non-comparable, and generally doesn't add
|
||||||
|
// any size (as long as it's first).
|
||||||
|
type incomparable [0]func()
|
||||||
|
|
||||||
type node struct {
|
type node struct {
|
||||||
|
_ incomparable
|
||||||
|
|
||||||
// children is non-nil for internal nodes
|
// children is non-nil for internal nodes
|
||||||
children *[256]*node
|
children *[256]*node
|
||||||
|
|
||||||
|
|
7
vendor/golang.org/x/net/http2/http2.go
generated
vendored
7
vendor/golang.org/x/net/http2/http2.go
generated
vendored
|
@ -241,6 +241,7 @@ func (cw closeWaiter) Wait() {
|
||||||
// Its buffered writer is lazily allocated as needed, to minimize
|
// Its buffered writer is lazily allocated as needed, to minimize
|
||||||
// idle memory usage with many connections.
|
// idle memory usage with many connections.
|
||||||
type bufferedWriter struct {
|
type bufferedWriter struct {
|
||||||
|
_ incomparable
|
||||||
w io.Writer // immutable
|
w io.Writer // immutable
|
||||||
bw *bufio.Writer // non-nil when data is buffered
|
bw *bufio.Writer // non-nil when data is buffered
|
||||||
}
|
}
|
||||||
|
@ -313,6 +314,7 @@ func bodyAllowedForStatus(status int) bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
type httpError struct {
|
type httpError struct {
|
||||||
|
_ incomparable
|
||||||
msg string
|
msg string
|
||||||
timeout bool
|
timeout bool
|
||||||
}
|
}
|
||||||
|
@ -376,3 +378,8 @@ func (s *sorter) SortStrings(ss []string) {
|
||||||
func validPseudoPath(v string) bool {
|
func validPseudoPath(v string) bool {
|
||||||
return (len(v) > 0 && v[0] == '/') || v == "*"
|
return (len(v) > 0 && v[0] == '/') || v == "*"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// incomparable is a zero-width, non-comparable type. Adding it to a struct
|
||||||
|
// makes that struct also non-comparable, and generally doesn't add
|
||||||
|
// any size (as long as it's first).
|
||||||
|
type incomparable [0]func()
|
||||||
|
|
8
vendor/golang.org/x/net/http2/server.go
generated
vendored
8
vendor/golang.org/x/net/http2/server.go
generated
vendored
|
@ -761,6 +761,7 @@ func (sc *serverConn) readFrames() {
|
||||||
|
|
||||||
// frameWriteResult is the message passed from writeFrameAsync to the serve goroutine.
|
// frameWriteResult is the message passed from writeFrameAsync to the serve goroutine.
|
||||||
type frameWriteResult struct {
|
type frameWriteResult struct {
|
||||||
|
_ incomparable
|
||||||
wr FrameWriteRequest // what was written (or attempted)
|
wr FrameWriteRequest // what was written (or attempted)
|
||||||
err error // result of the writeFrame call
|
err error // result of the writeFrame call
|
||||||
}
|
}
|
||||||
|
@ -771,7 +772,7 @@ type frameWriteResult struct {
|
||||||
// serverConn.
|
// serverConn.
|
||||||
func (sc *serverConn) writeFrameAsync(wr FrameWriteRequest) {
|
func (sc *serverConn) writeFrameAsync(wr FrameWriteRequest) {
|
||||||
err := wr.write.writeFrame(sc)
|
err := wr.write.writeFrame(sc)
|
||||||
sc.wroteFrameCh <- frameWriteResult{wr, err}
|
sc.wroteFrameCh <- frameWriteResult{wr: wr, err: err}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (sc *serverConn) closeAllStreamsOnConnClose() {
|
func (sc *serverConn) closeAllStreamsOnConnClose() {
|
||||||
|
@ -1161,7 +1162,7 @@ func (sc *serverConn) startFrameWrite(wr FrameWriteRequest) {
|
||||||
if wr.write.staysWithinBuffer(sc.bw.Available()) {
|
if wr.write.staysWithinBuffer(sc.bw.Available()) {
|
||||||
sc.writingFrameAsync = false
|
sc.writingFrameAsync = false
|
||||||
err := wr.write.writeFrame(sc)
|
err := wr.write.writeFrame(sc)
|
||||||
sc.wroteFrame(frameWriteResult{wr, err})
|
sc.wroteFrame(frameWriteResult{wr: wr, err: err})
|
||||||
} else {
|
} else {
|
||||||
sc.writingFrameAsync = true
|
sc.writingFrameAsync = true
|
||||||
go sc.writeFrameAsync(wr)
|
go sc.writeFrameAsync(wr)
|
||||||
|
@ -2057,7 +2058,7 @@ func (sc *serverConn) newWriterAndRequestNoBody(st *stream, rp requestParam) (*r
|
||||||
var trailer http.Header
|
var trailer http.Header
|
||||||
for _, v := range rp.header["Trailer"] {
|
for _, v := range rp.header["Trailer"] {
|
||||||
for _, key := range strings.Split(v, ",") {
|
for _, key := range strings.Split(v, ",") {
|
||||||
key = http.CanonicalHeaderKey(strings.TrimSpace(key))
|
key = http.CanonicalHeaderKey(textproto.TrimString(key))
|
||||||
switch key {
|
switch key {
|
||||||
case "Transfer-Encoding", "Trailer", "Content-Length":
|
case "Transfer-Encoding", "Trailer", "Content-Length":
|
||||||
// Bogus. (copy of http1 rules)
|
// Bogus. (copy of http1 rules)
|
||||||
|
@ -2275,6 +2276,7 @@ func (sc *serverConn) sendWindowUpdate32(st *stream, n int32) {
|
||||||
// requestBody is the Handler's Request.Body type.
|
// requestBody is the Handler's Request.Body type.
|
||||||
// Read and Close may be called concurrently.
|
// Read and Close may be called concurrently.
|
||||||
type requestBody struct {
|
type requestBody struct {
|
||||||
|
_ incomparable
|
||||||
stream *stream
|
stream *stream
|
||||||
conn *serverConn
|
conn *serverConn
|
||||||
closed bool // for use by Close only
|
closed bool // for use by Close only
|
||||||
|
|
78
vendor/golang.org/x/net/http2/transport.go
generated
vendored
78
vendor/golang.org/x/net/http2/transport.go
generated
vendored
|
@ -108,6 +108,19 @@ type Transport struct {
|
||||||
// waiting for their turn.
|
// waiting for their turn.
|
||||||
StrictMaxConcurrentStreams bool
|
StrictMaxConcurrentStreams bool
|
||||||
|
|
||||||
|
// ReadIdleTimeout is the timeout after which a health check using ping
|
||||||
|
// frame will be carried out if no frame is received on the connection.
|
||||||
|
// Note that a ping response will is considered a received frame, so if
|
||||||
|
// there is no other traffic on the connection, the health check will
|
||||||
|
// be performed every ReadIdleTimeout interval.
|
||||||
|
// If zero, no health check is performed.
|
||||||
|
ReadIdleTimeout time.Duration
|
||||||
|
|
||||||
|
// PingTimeout is the timeout after which the connection will be closed
|
||||||
|
// if a response to Ping is not received.
|
||||||
|
// Defaults to 15s.
|
||||||
|
PingTimeout time.Duration
|
||||||
|
|
||||||
// t1, if non-nil, is the standard library Transport using
|
// t1, if non-nil, is the standard library Transport using
|
||||||
// this transport. Its settings are used (but not its
|
// this transport. Its settings are used (but not its
|
||||||
// RoundTrip method, etc).
|
// RoundTrip method, etc).
|
||||||
|
@ -131,6 +144,14 @@ func (t *Transport) disableCompression() bool {
|
||||||
return t.DisableCompression || (t.t1 != nil && t.t1.DisableCompression)
|
return t.DisableCompression || (t.t1 != nil && t.t1.DisableCompression)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (t *Transport) pingTimeout() time.Duration {
|
||||||
|
if t.PingTimeout == 0 {
|
||||||
|
return 15 * time.Second
|
||||||
|
}
|
||||||
|
return t.PingTimeout
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
// ConfigureTransport configures a net/http HTTP/1 Transport to use HTTP/2.
|
// ConfigureTransport configures a net/http HTTP/1 Transport to use HTTP/2.
|
||||||
// It returns an error if t1 has already been HTTP/2-enabled.
|
// It returns an error if t1 has already been HTTP/2-enabled.
|
||||||
func ConfigureTransport(t1 *http.Transport) error {
|
func ConfigureTransport(t1 *http.Transport) error {
|
||||||
|
@ -675,6 +696,20 @@ func (t *Transport) newClientConn(c net.Conn, singleUse bool) (*ClientConn, erro
|
||||||
return cc, nil
|
return cc, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (cc *ClientConn) healthCheck() {
|
||||||
|
pingTimeout := cc.t.pingTimeout()
|
||||||
|
// We don't need to periodically ping in the health check, because the readLoop of ClientConn will
|
||||||
|
// trigger the healthCheck again if there is no frame received.
|
||||||
|
ctx, cancel := context.WithTimeout(context.Background(), pingTimeout)
|
||||||
|
defer cancel()
|
||||||
|
err := cc.Ping(ctx)
|
||||||
|
if err != nil {
|
||||||
|
cc.closeForLostPing()
|
||||||
|
cc.t.connPool().MarkDead(cc)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (cc *ClientConn) setGoAway(f *GoAwayFrame) {
|
func (cc *ClientConn) setGoAway(f *GoAwayFrame) {
|
||||||
cc.mu.Lock()
|
cc.mu.Lock()
|
||||||
defer cc.mu.Unlock()
|
defer cc.mu.Unlock()
|
||||||
|
@ -846,14 +881,12 @@ func (cc *ClientConn) sendGoAway() error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Close closes the client connection immediately.
|
// closes the client connection immediately. In-flight requests are interrupted.
|
||||||
//
|
// err is sent to streams.
|
||||||
// In-flight requests are interrupted. For a graceful shutdown, use Shutdown instead.
|
func (cc *ClientConn) closeForError(err error) error {
|
||||||
func (cc *ClientConn) Close() error {
|
|
||||||
cc.mu.Lock()
|
cc.mu.Lock()
|
||||||
defer cc.cond.Broadcast()
|
defer cc.cond.Broadcast()
|
||||||
defer cc.mu.Unlock()
|
defer cc.mu.Unlock()
|
||||||
err := errors.New("http2: client connection force closed via ClientConn.Close")
|
|
||||||
for id, cs := range cc.streams {
|
for id, cs := range cc.streams {
|
||||||
select {
|
select {
|
||||||
case cs.resc <- resAndError{err: err}:
|
case cs.resc <- resAndError{err: err}:
|
||||||
|
@ -866,6 +899,20 @@ func (cc *ClientConn) Close() error {
|
||||||
return cc.tconn.Close()
|
return cc.tconn.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Close closes the client connection immediately.
|
||||||
|
//
|
||||||
|
// In-flight requests are interrupted. For a graceful shutdown, use Shutdown instead.
|
||||||
|
func (cc *ClientConn) Close() error {
|
||||||
|
err := errors.New("http2: client connection force closed via ClientConn.Close")
|
||||||
|
return cc.closeForError(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// closes the client connection immediately. In-flight requests are interrupted.
|
||||||
|
func (cc *ClientConn) closeForLostPing() error {
|
||||||
|
err := errors.New("http2: client connection lost")
|
||||||
|
return cc.closeForError(err)
|
||||||
|
}
|
||||||
|
|
||||||
const maxAllocFrameSize = 512 << 10
|
const maxAllocFrameSize = 512 << 10
|
||||||
|
|
||||||
// frameBuffer returns a scratch buffer suitable for writing DATA frames.
|
// frameBuffer returns a scratch buffer suitable for writing DATA frames.
|
||||||
|
@ -916,7 +963,7 @@ func commaSeparatedTrailers(req *http.Request) (string, error) {
|
||||||
k = http.CanonicalHeaderKey(k)
|
k = http.CanonicalHeaderKey(k)
|
||||||
switch k {
|
switch k {
|
||||||
case "Transfer-Encoding", "Trailer", "Content-Length":
|
case "Transfer-Encoding", "Trailer", "Content-Length":
|
||||||
return "", &badStringError{"invalid Trailer key", k}
|
return "", fmt.Errorf("invalid Trailer key %q", k)
|
||||||
}
|
}
|
||||||
keys = append(keys, k)
|
keys = append(keys, k)
|
||||||
}
|
}
|
||||||
|
@ -1394,13 +1441,6 @@ func (cs *clientStream) awaitFlowControl(maxBytes int) (taken int32, err error)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
type badStringError struct {
|
|
||||||
what string
|
|
||||||
str string
|
|
||||||
}
|
|
||||||
|
|
||||||
func (e *badStringError) Error() string { return fmt.Sprintf("%s %q", e.what, e.str) }
|
|
||||||
|
|
||||||
// requires cc.mu be held.
|
// requires cc.mu be held.
|
||||||
func (cc *ClientConn) encodeHeaders(req *http.Request, addGzipHeader bool, trailers string, contentLength int64) ([]byte, error) {
|
func (cc *ClientConn) encodeHeaders(req *http.Request, addGzipHeader bool, trailers string, contentLength int64) ([]byte, error) {
|
||||||
cc.hbuf.Reset()
|
cc.hbuf.Reset()
|
||||||
|
@ -1616,6 +1656,7 @@ func (cc *ClientConn) writeHeader(name, value string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
type resAndError struct {
|
type resAndError struct {
|
||||||
|
_ incomparable
|
||||||
res *http.Response
|
res *http.Response
|
||||||
err error
|
err error
|
||||||
}
|
}
|
||||||
|
@ -1663,6 +1704,7 @@ func (cc *ClientConn) streamByID(id uint32, andRemove bool) *clientStream {
|
||||||
|
|
||||||
// clientConnReadLoop is the state owned by the clientConn's frame-reading readLoop.
|
// clientConnReadLoop is the state owned by the clientConn's frame-reading readLoop.
|
||||||
type clientConnReadLoop struct {
|
type clientConnReadLoop struct {
|
||||||
|
_ incomparable
|
||||||
cc *ClientConn
|
cc *ClientConn
|
||||||
closeWhenIdle bool
|
closeWhenIdle bool
|
||||||
}
|
}
|
||||||
|
@ -1742,8 +1784,17 @@ func (rl *clientConnReadLoop) run() error {
|
||||||
rl.closeWhenIdle = cc.t.disableKeepAlives() || cc.singleUse
|
rl.closeWhenIdle = cc.t.disableKeepAlives() || cc.singleUse
|
||||||
gotReply := false // ever saw a HEADERS reply
|
gotReply := false // ever saw a HEADERS reply
|
||||||
gotSettings := false
|
gotSettings := false
|
||||||
|
readIdleTimeout := cc.t.ReadIdleTimeout
|
||||||
|
var t *time.Timer
|
||||||
|
if readIdleTimeout != 0 {
|
||||||
|
t = time.AfterFunc(readIdleTimeout, cc.healthCheck)
|
||||||
|
defer t.Stop()
|
||||||
|
}
|
||||||
for {
|
for {
|
||||||
f, err := cc.fr.ReadFrame()
|
f, err := cc.fr.ReadFrame()
|
||||||
|
if t != nil {
|
||||||
|
t.Reset(readIdleTimeout)
|
||||||
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
cc.vlogf("http2: Transport readFrame error on conn %p: (%T) %v", cc, err, err)
|
cc.vlogf("http2: Transport readFrame error on conn %p: (%T) %v", cc, err, err)
|
||||||
}
|
}
|
||||||
|
@ -2479,6 +2530,7 @@ func (rt erringRoundTripper) RoundTrip(*http.Request) (*http.Response, error) {
|
||||||
// gzipReader wraps a response body so it can lazily
|
// gzipReader wraps a response body so it can lazily
|
||||||
// call gzip.NewReader on the first call to Read
|
// call gzip.NewReader on the first call to Read
|
||||||
type gzipReader struct {
|
type gzipReader struct {
|
||||||
|
_ incomparable
|
||||||
body io.ReadCloser // underlying Response.Body
|
body io.ReadCloser // underlying Response.Body
|
||||||
zr *gzip.Reader // lazily-initialized gzip reader
|
zr *gzip.Reader // lazily-initialized gzip reader
|
||||||
zerr error // sticky error
|
zerr error // sticky error
|
||||||
|
|
5
vendor/golang.org/x/net/ipv4/header.go
generated
vendored
5
vendor/golang.org/x/net/ipv4/header.go
generated
vendored
|
@ -14,9 +14,8 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
Version = 4 // protocol version
|
Version = 4 // protocol version
|
||||||
HeaderLen = 20 // header length without extension headers
|
HeaderLen = 20 // header length without extension headers
|
||||||
maxHeaderLen = 60 // sensible default, revisit if later RFCs define new usage of version and header length fields
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type HeaderFlags int
|
type HeaderFlags int
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build aix,ppc64
|
// +build aix
|
||||||
|
|
||||||
package cpu
|
package cpu
|
||||||
|
|
8
vendor/golang.org/x/sys/cpu/cpu_arm64.go
generated
vendored
8
vendor/golang.org/x/sys/cpu/cpu_arm64.go
generated
vendored
|
@ -10,8 +10,14 @@ const cacheLineSize = 64
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
switch runtime.GOOS {
|
switch runtime.GOOS {
|
||||||
case "android", "darwin":
|
case "android", "darwin", "netbsd":
|
||||||
// Android and iOS don't seem to allow reading these registers.
|
// Android and iOS don't seem to allow reading these registers.
|
||||||
|
//
|
||||||
|
// NetBSD:
|
||||||
|
// ID_AA64ISAR0_EL1 is a privileged register and cannot be read from EL0.
|
||||||
|
// It can be read via sysctl(3). Example for future implementers:
|
||||||
|
// https://nxr.netbsd.org/xref/src/usr.sbin/cpuctl/arch/aarch64.c
|
||||||
|
//
|
||||||
// Fake the minimal features expected by
|
// Fake the minimal features expected by
|
||||||
// TestARM64minimalFeatures.
|
// TestARM64minimalFeatures.
|
||||||
ARM64.HasASIMD = true
|
ARM64.HasASIMD = true
|
||||||
|
|
27
vendor/golang.org/x/sys/cpu/syscall_aix_gccgo.go
generated
vendored
Normal file
27
vendor/golang.org/x/sys/cpu/syscall_aix_gccgo.go
generated
vendored
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
// Copyright 2020 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.
|
||||||
|
|
||||||
|
// Recreate a getsystemcfg syscall handler instead of
|
||||||
|
// using the one provided by x/sys/unix to avoid having
|
||||||
|
// the dependency between them. (See golang.org/issue/32102)
|
||||||
|
// Morever, this file will be used during the building of
|
||||||
|
// gccgo's libgo and thus must not used a CGo method.
|
||||||
|
|
||||||
|
// +build aix
|
||||||
|
// +build gccgo
|
||||||
|
|
||||||
|
package cpu
|
||||||
|
|
||||||
|
import (
|
||||||
|
"syscall"
|
||||||
|
)
|
||||||
|
|
||||||
|
//extern getsystemcfg
|
||||||
|
func gccgoGetsystemcfg(label uint32) (r uint64)
|
||||||
|
|
||||||
|
func callgetsystemcfg(label int) (r1 uintptr, e1 syscall.Errno) {
|
||||||
|
r1 = uintptr(gccgoGetsystemcfg(uint32(label)))
|
||||||
|
e1 = syscall.GetErrno()
|
||||||
|
return
|
||||||
|
}
|
30
vendor/golang.org/x/sys/internal/unsafeheader/unsafeheader.go
generated
vendored
Normal file
30
vendor/golang.org/x/sys/internal/unsafeheader/unsafeheader.go
generated
vendored
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
// Copyright 2020 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 unsafeheader contains header declarations for the Go runtime's
|
||||||
|
// slice and string implementations.
|
||||||
|
//
|
||||||
|
// This package allows x/sys to use types equivalent to
|
||||||
|
// reflect.SliceHeader and reflect.StringHeader without introducing
|
||||||
|
// a dependency on the (relatively heavy) "reflect" package.
|
||||||
|
package unsafeheader
|
||||||
|
|
||||||
|
import (
|
||||||
|
"unsafe"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Slice is the runtime representation of a slice.
|
||||||
|
// It cannot be used safely or portably and its representation may change in a later release.
|
||||||
|
type Slice struct {
|
||||||
|
Data unsafe.Pointer
|
||||||
|
Len int
|
||||||
|
Cap int
|
||||||
|
}
|
||||||
|
|
||||||
|
// String is the runtime representation of a string.
|
||||||
|
// It cannot be used safely or portably and its representation may change in a later release.
|
||||||
|
type String struct {
|
||||||
|
Data unsafe.Pointer
|
||||||
|
Len int
|
||||||
|
}
|
3
vendor/golang.org/x/sys/unix/mkerrors.sh
generated
vendored
3
vendor/golang.org/x/sys/unix/mkerrors.sh
generated
vendored
|
@ -187,6 +187,7 @@ struct ltchars {
|
||||||
#include <sys/select.h>
|
#include <sys/select.h>
|
||||||
#include <sys/signalfd.h>
|
#include <sys/signalfd.h>
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
|
#include <sys/timerfd.h>
|
||||||
#include <sys/uio.h>
|
#include <sys/uio.h>
|
||||||
#include <sys/xattr.h>
|
#include <sys/xattr.h>
|
||||||
#include <linux/bpf.h>
|
#include <linux/bpf.h>
|
||||||
|
@ -480,7 +481,7 @@ ccflags="$@"
|
||||||
$2 ~ /^(MS|MNT|UMOUNT)_/ ||
|
$2 ~ /^(MS|MNT|UMOUNT)_/ ||
|
||||||
$2 ~ /^NS_GET_/ ||
|
$2 ~ /^NS_GET_/ ||
|
||||||
$2 ~ /^TUN(SET|GET|ATTACH|DETACH)/ ||
|
$2 ~ /^TUN(SET|GET|ATTACH|DETACH)/ ||
|
||||||
$2 ~ /^(O|F|[ES]?FD|NAME|S|PTRACE|PT)_/ ||
|
$2 ~ /^(O|F|[ES]?FD|NAME|S|PTRACE|PT|TFD)_/ ||
|
||||||
$2 ~ /^KEXEC_/ ||
|
$2 ~ /^KEXEC_/ ||
|
||||||
$2 ~ /^LINUX_REBOOT_CMD_/ ||
|
$2 ~ /^LINUX_REBOOT_CMD_/ ||
|
||||||
$2 ~ /^LINUX_REBOOT_MAGIC[12]$/ ||
|
$2 ~ /^LINUX_REBOOT_MAGIC[12]$/ ||
|
||||||
|
|
21
vendor/golang.org/x/sys/unix/syscall_darwin.1_13.go
generated
vendored
21
vendor/golang.org/x/sys/unix/syscall_darwin.1_13.go
generated
vendored
|
@ -6,7 +6,11 @@
|
||||||
|
|
||||||
package unix
|
package unix
|
||||||
|
|
||||||
import "unsafe"
|
import (
|
||||||
|
"unsafe"
|
||||||
|
|
||||||
|
"golang.org/x/sys/internal/unsafeheader"
|
||||||
|
)
|
||||||
|
|
||||||
//sys closedir(dir uintptr) (err error)
|
//sys closedir(dir uintptr) (err error)
|
||||||
//sys readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno)
|
//sys readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno)
|
||||||
|
@ -71,6 +75,7 @@ func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
|
||||||
cnt++
|
cnt++
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
reclen := int(entry.Reclen)
|
reclen := int(entry.Reclen)
|
||||||
if reclen > len(buf) {
|
if reclen > len(buf) {
|
||||||
// Not enough room. Return for now.
|
// Not enough room. Return for now.
|
||||||
|
@ -79,13 +84,15 @@ func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
|
||||||
// restarting is O(n^2) in the length of the directory. Oh well.
|
// restarting is O(n^2) in the length of the directory. Oh well.
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
// Copy entry into return buffer.
|
// Copy entry into return buffer.
|
||||||
s := struct {
|
var s []byte
|
||||||
ptr unsafe.Pointer
|
hdr := (*unsafeheader.Slice)(unsafe.Pointer(&s))
|
||||||
siz int
|
hdr.Data = unsafe.Pointer(&entry)
|
||||||
cap int
|
hdr.Cap = reclen
|
||||||
}{ptr: unsafe.Pointer(&entry), siz: reclen, cap: reclen}
|
hdr.Len = reclen
|
||||||
copy(buf, *(*[]byte)(unsafe.Pointer(&s)))
|
copy(buf, s)
|
||||||
|
|
||||||
buf = buf[reclen:]
|
buf = buf[reclen:]
|
||||||
n += reclen
|
n += reclen
|
||||||
cnt++
|
cnt++
|
||||||
|
|
1
vendor/golang.org/x/sys/unix/syscall_darwin.go
generated
vendored
1
vendor/golang.org/x/sys/unix/syscall_darwin.go
generated
vendored
|
@ -423,6 +423,7 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
|
||||||
//sysnb Getrlimit(which int, lim *Rlimit) (err error)
|
//sysnb Getrlimit(which int, lim *Rlimit) (err error)
|
||||||
//sysnb Getrusage(who int, rusage *Rusage) (err error)
|
//sysnb Getrusage(who int, rusage *Rusage) (err error)
|
||||||
//sysnb Getsid(pid int) (sid int, err error)
|
//sysnb Getsid(pid int) (sid int, err error)
|
||||||
|
//sysnb Gettimeofday(tp *Timeval) (err error)
|
||||||
//sysnb Getuid() (uid int)
|
//sysnb Getuid() (uid int)
|
||||||
//sysnb Issetugid() (tainted bool)
|
//sysnb Issetugid() (tainted bool)
|
||||||
//sys Kqueue() (fd int, err error)
|
//sys Kqueue() (fd int, err error)
|
||||||
|
|
11
vendor/golang.org/x/sys/unix/syscall_darwin_386.go
generated
vendored
11
vendor/golang.org/x/sys/unix/syscall_darwin_386.go
generated
vendored
|
@ -20,17 +20,6 @@ func setTimeval(sec, usec int64) Timeval {
|
||||||
return Timeval{Sec: int32(sec), Usec: int32(usec)}
|
return Timeval{Sec: int32(sec), Usec: int32(usec)}
|
||||||
}
|
}
|
||||||
|
|
||||||
//sysnb gettimeofday(tp *Timeval) (sec int32, usec int32, err error)
|
|
||||||
func Gettimeofday(tv *Timeval) (err error) {
|
|
||||||
// The tv passed to gettimeofday must be non-nil
|
|
||||||
// but is otherwise unused. The answers come back
|
|
||||||
// in the two registers.
|
|
||||||
sec, usec, err := gettimeofday(tv)
|
|
||||||
tv.Sec = int32(sec)
|
|
||||||
tv.Usec = int32(usec)
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
func SetKevent(k *Kevent_t, fd, mode, flags int) {
|
func SetKevent(k *Kevent_t, fd, mode, flags int) {
|
||||||
k.Ident = uint32(fd)
|
k.Ident = uint32(fd)
|
||||||
k.Filter = int16(mode)
|
k.Filter = int16(mode)
|
||||||
|
|
11
vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go
generated
vendored
11
vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go
generated
vendored
|
@ -20,17 +20,6 @@ func setTimeval(sec, usec int64) Timeval {
|
||||||
return Timeval{Sec: sec, Usec: int32(usec)}
|
return Timeval{Sec: sec, Usec: int32(usec)}
|
||||||
}
|
}
|
||||||
|
|
||||||
//sysnb gettimeofday(tp *Timeval) (sec int64, usec int32, err error)
|
|
||||||
func Gettimeofday(tv *Timeval) (err error) {
|
|
||||||
// The tv passed to gettimeofday must be non-nil
|
|
||||||
// but is otherwise unused. The answers come back
|
|
||||||
// in the two registers.
|
|
||||||
sec, usec, err := gettimeofday(tv)
|
|
||||||
tv.Sec = sec
|
|
||||||
tv.Usec = usec
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
func SetKevent(k *Kevent_t, fd, mode, flags int) {
|
func SetKevent(k *Kevent_t, fd, mode, flags int) {
|
||||||
k.Ident = uint64(fd)
|
k.Ident = uint64(fd)
|
||||||
k.Filter = int16(mode)
|
k.Filter = int16(mode)
|
||||||
|
|
11
vendor/golang.org/x/sys/unix/syscall_darwin_arm.go
generated
vendored
11
vendor/golang.org/x/sys/unix/syscall_darwin_arm.go
generated
vendored
|
@ -20,17 +20,6 @@ func setTimeval(sec, usec int64) Timeval {
|
||||||
return Timeval{Sec: int32(sec), Usec: int32(usec)}
|
return Timeval{Sec: int32(sec), Usec: int32(usec)}
|
||||||
}
|
}
|
||||||
|
|
||||||
//sysnb gettimeofday(tp *Timeval) (sec int32, usec int32, err error)
|
|
||||||
func Gettimeofday(tv *Timeval) (err error) {
|
|
||||||
// The tv passed to gettimeofday must be non-nil
|
|
||||||
// but is otherwise unused. The answers come back
|
|
||||||
// in the two registers.
|
|
||||||
sec, usec, err := gettimeofday(tv)
|
|
||||||
tv.Sec = int32(sec)
|
|
||||||
tv.Usec = int32(usec)
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
func SetKevent(k *Kevent_t, fd, mode, flags int) {
|
func SetKevent(k *Kevent_t, fd, mode, flags int) {
|
||||||
k.Ident = uint32(fd)
|
k.Ident = uint32(fd)
|
||||||
k.Filter = int16(mode)
|
k.Filter = int16(mode)
|
||||||
|
|
11
vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go
generated
vendored
11
vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go
generated
vendored
|
@ -22,17 +22,6 @@ func setTimeval(sec, usec int64) Timeval {
|
||||||
return Timeval{Sec: sec, Usec: int32(usec)}
|
return Timeval{Sec: sec, Usec: int32(usec)}
|
||||||
}
|
}
|
||||||
|
|
||||||
//sysnb gettimeofday(tp *Timeval) (sec int64, usec int32, err error)
|
|
||||||
func Gettimeofday(tv *Timeval) (err error) {
|
|
||||||
// The tv passed to gettimeofday must be non-nil
|
|
||||||
// but is otherwise unused. The answers come back
|
|
||||||
// in the two registers.
|
|
||||||
sec, usec, err := gettimeofday(tv)
|
|
||||||
tv.Sec = sec
|
|
||||||
tv.Usec = usec
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
func SetKevent(k *Kevent_t, fd, mode, flags int) {
|
func SetKevent(k *Kevent_t, fd, mode, flags int) {
|
||||||
k.Ident = uint64(fd)
|
k.Ident = uint64(fd)
|
||||||
k.Filter = int16(mode)
|
k.Filter = int16(mode)
|
||||||
|
|
13
vendor/golang.org/x/sys/unix/syscall_linux.go
generated
vendored
13
vendor/golang.org/x/sys/unix/syscall_linux.go
generated
vendored
|
@ -1633,6 +1633,15 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
|
||||||
//sys CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error)
|
//sys CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error)
|
||||||
//sys DeleteModule(name string, flags int) (err error)
|
//sys DeleteModule(name string, flags int) (err error)
|
||||||
//sys Dup(oldfd int) (fd int, err error)
|
//sys Dup(oldfd int) (fd int, err error)
|
||||||
|
|
||||||
|
func Dup2(oldfd, newfd int) error {
|
||||||
|
// Android O and newer blocks dup2; riscv and arm64 don't implement dup2.
|
||||||
|
if runtime.GOOS == "android" || runtime.GOARCH == "riscv64" || runtime.GOARCH == "arm64" {
|
||||||
|
return Dup3(oldfd, newfd, 0)
|
||||||
|
}
|
||||||
|
return dup2(oldfd, newfd)
|
||||||
|
}
|
||||||
|
|
||||||
//sys Dup3(oldfd int, newfd int, flags int) (err error)
|
//sys Dup3(oldfd int, newfd int, flags int) (err error)
|
||||||
//sysnb EpollCreate1(flag int) (fd int, err error)
|
//sysnb EpollCreate1(flag int) (fd int, err error)
|
||||||
//sysnb EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error)
|
//sysnb EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error)
|
||||||
|
@ -1757,6 +1766,9 @@ func Signalfd(fd int, sigmask *Sigset_t, flags int) (newfd int, err error) {
|
||||||
//sys Syncfs(fd int) (err error)
|
//sys Syncfs(fd int) (err error)
|
||||||
//sysnb Sysinfo(info *Sysinfo_t) (err error)
|
//sysnb Sysinfo(info *Sysinfo_t) (err error)
|
||||||
//sys Tee(rfd int, wfd int, len int, flags int) (n int64, err error)
|
//sys Tee(rfd int, wfd int, len int, flags int) (n int64, err error)
|
||||||
|
//sysnb TimerfdCreate(clockid int, flags int) (fd int, err error)
|
||||||
|
//sysnb TimerfdGettime(fd int, currValue *ItimerSpec) (err error)
|
||||||
|
//sysnb TimerfdSettime(fd int, flags int, newValue *ItimerSpec, oldValue *ItimerSpec) (err error)
|
||||||
//sysnb Tgkill(tgid int, tid int, sig syscall.Signal) (err error)
|
//sysnb Tgkill(tgid int, tid int, sig syscall.Signal) (err error)
|
||||||
//sysnb Times(tms *Tms) (ticks uintptr, err error)
|
//sysnb Times(tms *Tms) (ticks uintptr, err error)
|
||||||
//sysnb Umask(mask int) (oldmask int)
|
//sysnb Umask(mask int) (oldmask int)
|
||||||
|
@ -2178,7 +2190,6 @@ func Klogset(typ int, arg int) (err error) {
|
||||||
// TimerGetoverrun
|
// TimerGetoverrun
|
||||||
// TimerGettime
|
// TimerGettime
|
||||||
// TimerSettime
|
// TimerSettime
|
||||||
// Timerfd
|
|
||||||
// Tkill (obsolete)
|
// Tkill (obsolete)
|
||||||
// Tuxcall
|
// Tuxcall
|
||||||
// Umount2
|
// Umount2
|
||||||
|
|
2
vendor/golang.org/x/sys/unix/syscall_linux_386.go
generated
vendored
2
vendor/golang.org/x/sys/unix/syscall_linux_386.go
generated
vendored
|
@ -49,7 +49,7 @@ func Pipe2(p []int, flags int) (err error) {
|
||||||
|
|
||||||
// 64-bit file system and 32-bit uid calls
|
// 64-bit file system and 32-bit uid calls
|
||||||
// (386 default is 32-bit file system and 16-bit uid).
|
// (386 default is 32-bit file system and 16-bit uid).
|
||||||
//sys Dup2(oldfd int, newfd int) (err error)
|
//sys dup2(oldfd int, newfd int) (err error)
|
||||||
//sysnb EpollCreate(size int) (fd int, err error)
|
//sysnb EpollCreate(size int) (fd int, err error)
|
||||||
//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
|
//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
|
||||||
//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64_64
|
//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64_64
|
||||||
|
|
2
vendor/golang.org/x/sys/unix/syscall_linux_amd64.go
generated
vendored
2
vendor/golang.org/x/sys/unix/syscall_linux_amd64.go
generated
vendored
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
package unix
|
package unix
|
||||||
|
|
||||||
//sys Dup2(oldfd int, newfd int) (err error)
|
//sys dup2(oldfd int, newfd int) (err error)
|
||||||
//sysnb EpollCreate(size int) (fd int, err error)
|
//sysnb EpollCreate(size int) (fd int, err error)
|
||||||
//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
|
//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
|
||||||
//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64
|
//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64
|
||||||
|
|
2
vendor/golang.org/x/sys/unix/syscall_linux_arm.go
generated
vendored
2
vendor/golang.org/x/sys/unix/syscall_linux_arm.go
generated
vendored
|
@ -80,7 +80,7 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
|
||||||
|
|
||||||
// 64-bit file system and 32-bit uid calls
|
// 64-bit file system and 32-bit uid calls
|
||||||
// (16-bit uid calls are not always supported in newer kernels)
|
// (16-bit uid calls are not always supported in newer kernels)
|
||||||
//sys Dup2(oldfd int, newfd int) (err error)
|
//sys dup2(oldfd int, newfd int) (err error)
|
||||||
//sysnb EpollCreate(size int) (fd int, err error)
|
//sysnb EpollCreate(size int) (fd int, err error)
|
||||||
//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
|
//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
|
||||||
//sys Fchown(fd int, uid int, gid int) (err error) = SYS_FCHOWN32
|
//sys Fchown(fd int, uid int, gid int) (err error) = SYS_FCHOWN32
|
||||||
|
|
28
vendor/golang.org/x/sys/unix/syscall_linux_arm64.go
generated
vendored
28
vendor/golang.org/x/sys/unix/syscall_linux_arm64.go
generated
vendored
|
@ -25,7 +25,7 @@ func EpollCreate(size int) (fd int, err error) {
|
||||||
//sysnb Getegid() (egid int)
|
//sysnb Getegid() (egid int)
|
||||||
//sysnb Geteuid() (euid int)
|
//sysnb Geteuid() (euid int)
|
||||||
//sysnb Getgid() (gid int)
|
//sysnb Getgid() (gid int)
|
||||||
//sysnb Getrlimit(resource int, rlim *Rlimit) (err error)
|
//sysnb getrlimit(resource int, rlim *Rlimit) (err error)
|
||||||
//sysnb Getuid() (uid int)
|
//sysnb Getuid() (uid int)
|
||||||
//sys Listen(s int, n int) (err error)
|
//sys Listen(s int, n int) (err error)
|
||||||
//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
|
//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
|
||||||
|
@ -47,7 +47,7 @@ func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err
|
||||||
//sysnb Setregid(rgid int, egid int) (err error)
|
//sysnb Setregid(rgid int, egid int) (err error)
|
||||||
//sysnb Setresgid(rgid int, egid int, sgid int) (err error)
|
//sysnb Setresgid(rgid int, egid int, sgid int) (err error)
|
||||||
//sysnb Setresuid(ruid int, euid int, suid int) (err error)
|
//sysnb Setresuid(ruid int, euid int, suid int) (err error)
|
||||||
//sysnb Setrlimit(resource int, rlim *Rlimit) (err error)
|
//sysnb setrlimit(resource int, rlim *Rlimit) (err error)
|
||||||
//sysnb Setreuid(ruid int, euid int) (err error)
|
//sysnb Setreuid(ruid int, euid int) (err error)
|
||||||
//sys Shutdown(fd int, how int) (err error)
|
//sys Shutdown(fd int, how int) (err error)
|
||||||
//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)
|
//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)
|
||||||
|
@ -168,6 +168,24 @@ func Pipe2(p []int, flags int) (err error) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Getrlimit prefers the prlimit64 system call. See issue 38604.
|
||||||
|
func Getrlimit(resource int, rlim *Rlimit) error {
|
||||||
|
err := prlimit(0, resource, nil, rlim)
|
||||||
|
if err != ENOSYS {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return getrlimit(resource, rlim)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Setrlimit prefers the prlimit64 system call. See issue 38604.
|
||||||
|
func Setrlimit(resource int, rlim *Rlimit) error {
|
||||||
|
err := prlimit(0, resource, rlim, nil)
|
||||||
|
if err != ENOSYS {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return setrlimit(resource, rlim)
|
||||||
|
}
|
||||||
|
|
||||||
func (r *PtraceRegs) PC() uint64 { return r.Pc }
|
func (r *PtraceRegs) PC() uint64 { return r.Pc }
|
||||||
|
|
||||||
func (r *PtraceRegs) SetPC(pc uint64) { r.Pc = pc }
|
func (r *PtraceRegs) SetPC(pc uint64) { r.Pc = pc }
|
||||||
|
@ -192,9 +210,9 @@ func InotifyInit() (fd int, err error) {
|
||||||
return InotifyInit1(0)
|
return InotifyInit1(0)
|
||||||
}
|
}
|
||||||
|
|
||||||
func Dup2(oldfd int, newfd int) (err error) {
|
// dup2 exists because func Dup3 in syscall_linux.go references
|
||||||
return Dup3(oldfd, newfd, 0)
|
// it in an unreachable path. dup2 isn't available on arm64.
|
||||||
}
|
func dup2(oldfd int, newfd int) error
|
||||||
|
|
||||||
func Pause() error {
|
func Pause() error {
|
||||||
_, err := ppoll(nil, 0, nil, nil)
|
_, err := ppoll(nil, 0, nil, nil)
|
||||||
|
|
2
vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go
generated
vendored
2
vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go
generated
vendored
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
package unix
|
package unix
|
||||||
|
|
||||||
//sys Dup2(oldfd int, newfd int) (err error)
|
//sys dup2(oldfd int, newfd int) (err error)
|
||||||
//sysnb EpollCreate(size int) (fd int, err error)
|
//sysnb EpollCreate(size int) (fd int, err error)
|
||||||
//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
|
//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
|
||||||
//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64
|
//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64
|
||||||
|
|
2
vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go
generated
vendored
2
vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go
generated
vendored
|
@ -14,7 +14,7 @@ import (
|
||||||
|
|
||||||
func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
|
func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
|
||||||
|
|
||||||
//sys Dup2(oldfd int, newfd int) (err error)
|
//sys dup2(oldfd int, newfd int) (err error)
|
||||||
//sysnb EpollCreate(size int) (fd int, err error)
|
//sysnb EpollCreate(size int) (fd int, err error)
|
||||||
//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
|
//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
|
||||||
//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64
|
//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64
|
||||||
|
|
2
vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go
generated
vendored
2
vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go
generated
vendored
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
package unix
|
package unix
|
||||||
|
|
||||||
//sys Dup2(oldfd int, newfd int) (err error)
|
//sys dup2(oldfd int, newfd int) (err error)
|
||||||
//sysnb EpollCreate(size int) (fd int, err error)
|
//sysnb EpollCreate(size int) (fd int, err error)
|
||||||
//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
|
//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
|
||||||
//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64
|
//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64
|
||||||
|
|
8
vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go
generated
vendored
8
vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go
generated
vendored
|
@ -191,10 +191,6 @@ func InotifyInit() (fd int, err error) {
|
||||||
return InotifyInit1(0)
|
return InotifyInit1(0)
|
||||||
}
|
}
|
||||||
|
|
||||||
func Dup2(oldfd int, newfd int) (err error) {
|
|
||||||
return Dup3(oldfd, newfd, 0)
|
|
||||||
}
|
|
||||||
|
|
||||||
func Pause() error {
|
func Pause() error {
|
||||||
_, err := ppoll(nil, 0, nil, nil)
|
_, err := ppoll(nil, 0, nil, nil)
|
||||||
return err
|
return err
|
||||||
|
@ -228,3 +224,7 @@ func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error
|
||||||
}
|
}
|
||||||
return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)
|
return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// dup2 exists because func Dup3 in syscall_linux.go references
|
||||||
|
// it in an unreachable path. dup2 isn't available on arm64.
|
||||||
|
func dup2(oldfd int, newfd int) error
|
||||||
|
|
2
vendor/golang.org/x/sys/unix/syscall_linux_s390x.go
generated
vendored
2
vendor/golang.org/x/sys/unix/syscall_linux_s390x.go
generated
vendored
|
@ -10,7 +10,7 @@ import (
|
||||||
"unsafe"
|
"unsafe"
|
||||||
)
|
)
|
||||||
|
|
||||||
//sys Dup2(oldfd int, newfd int) (err error)
|
//sys dup2(oldfd int, newfd int) (err error)
|
||||||
//sysnb EpollCreate(size int) (fd int, err error)
|
//sysnb EpollCreate(size int) (fd int, err error)
|
||||||
//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
|
//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
|
||||||
//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64
|
//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64
|
||||||
|
|
2
vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go
generated
vendored
2
vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go
generated
vendored
|
@ -8,7 +8,7 @@ package unix
|
||||||
|
|
||||||
//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
|
//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
|
||||||
//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64
|
//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64
|
||||||
//sys Dup2(oldfd int, newfd int) (err error)
|
//sys dup2(oldfd int, newfd int) (err error)
|
||||||
//sys Fchown(fd int, uid int, gid int) (err error)
|
//sys Fchown(fd int, uid int, gid int) (err error)
|
||||||
//sys Fstat(fd int, stat *Stat_t) (err error)
|
//sys Fstat(fd int, stat *Stat_t) (err error)
|
||||||
//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64
|
//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64
|
||||||
|
|
17
vendor/golang.org/x/sys/unix/syscall_unix.go
generated
vendored
17
vendor/golang.org/x/sys/unix/syscall_unix.go
generated
vendored
|
@ -12,6 +12,8 @@ import (
|
||||||
"sync"
|
"sync"
|
||||||
"syscall"
|
"syscall"
|
||||||
"unsafe"
|
"unsafe"
|
||||||
|
|
||||||
|
"golang.org/x/sys/internal/unsafeheader"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
@ -113,15 +115,12 @@ func (m *mmapper) Mmap(fd int, offset int64, length int, prot int, flags int) (d
|
||||||
return nil, errno
|
return nil, errno
|
||||||
}
|
}
|
||||||
|
|
||||||
// Slice memory layout
|
// Use unsafe to convert addr into a []byte.
|
||||||
var sl = struct {
|
var b []byte
|
||||||
addr uintptr
|
hdr := (*unsafeheader.Slice)(unsafe.Pointer(&b))
|
||||||
len int
|
hdr.Data = unsafe.Pointer(addr)
|
||||||
cap int
|
hdr.Cap = length
|
||||||
}{addr, length, length}
|
hdr.Len = length
|
||||||
|
|
||||||
// Use unsafe to turn sl into a []byte.
|
|
||||||
b := *(*[]byte)(unsafe.Pointer(&sl))
|
|
||||||
|
|
||||||
// Register mapping in m and return it.
|
// Register mapping in m and return it.
|
||||||
p := &b[cap(b)-1]
|
p := &b[cap(b)-1]
|
||||||
|
|
68
vendor/golang.org/x/sys/unix/zerrors_linux.go
generated
vendored
68
vendor/golang.org/x/sys/unix/zerrors_linux.go
generated
vendored
|
@ -160,78 +160,28 @@ const (
|
||||||
BPF_A = 0x10
|
BPF_A = 0x10
|
||||||
BPF_ABS = 0x20
|
BPF_ABS = 0x20
|
||||||
BPF_ADD = 0x0
|
BPF_ADD = 0x0
|
||||||
BPF_ADJ_ROOM_ENCAP_L2_MASK = 0xff
|
|
||||||
BPF_ADJ_ROOM_ENCAP_L2_SHIFT = 0x38
|
|
||||||
BPF_ALU = 0x4
|
BPF_ALU = 0x4
|
||||||
BPF_ALU64 = 0x7
|
BPF_ALU64 = 0x7
|
||||||
BPF_AND = 0x50
|
BPF_AND = 0x50
|
||||||
BPF_ANY = 0x0
|
|
||||||
BPF_ARSH = 0xc0
|
BPF_ARSH = 0xc0
|
||||||
BPF_B = 0x10
|
BPF_B = 0x10
|
||||||
BPF_BUILD_ID_SIZE = 0x14
|
BPF_BUILD_ID_SIZE = 0x14
|
||||||
BPF_CALL = 0x80
|
BPF_CALL = 0x80
|
||||||
BPF_DEVCG_ACC_MKNOD = 0x1
|
|
||||||
BPF_DEVCG_ACC_READ = 0x2
|
|
||||||
BPF_DEVCG_ACC_WRITE = 0x4
|
|
||||||
BPF_DEVCG_DEV_BLOCK = 0x1
|
|
||||||
BPF_DEVCG_DEV_CHAR = 0x2
|
|
||||||
BPF_DIV = 0x30
|
BPF_DIV = 0x30
|
||||||
BPF_DW = 0x18
|
BPF_DW = 0x18
|
||||||
BPF_END = 0xd0
|
BPF_END = 0xd0
|
||||||
BPF_EXIST = 0x2
|
|
||||||
BPF_EXIT = 0x90
|
BPF_EXIT = 0x90
|
||||||
BPF_FLOW_DISSECTOR_F_PARSE_1ST_FRAG = 0x1
|
|
||||||
BPF_FLOW_DISSECTOR_F_STOP_AT_ENCAP = 0x4
|
|
||||||
BPF_FLOW_DISSECTOR_F_STOP_AT_FLOW_LABEL = 0x2
|
|
||||||
BPF_FROM_BE = 0x8
|
BPF_FROM_BE = 0x8
|
||||||
BPF_FROM_LE = 0x0
|
BPF_FROM_LE = 0x0
|
||||||
BPF_FS_MAGIC = 0xcafe4a11
|
BPF_FS_MAGIC = 0xcafe4a11
|
||||||
BPF_F_ADJ_ROOM_ENCAP_L3_IPV4 = 0x2
|
|
||||||
BPF_F_ADJ_ROOM_ENCAP_L3_IPV6 = 0x4
|
|
||||||
BPF_F_ADJ_ROOM_ENCAP_L4_GRE = 0x8
|
|
||||||
BPF_F_ADJ_ROOM_ENCAP_L4_UDP = 0x10
|
|
||||||
BPF_F_ADJ_ROOM_FIXED_GSO = 0x1
|
|
||||||
BPF_F_ALLOW_MULTI = 0x2
|
BPF_F_ALLOW_MULTI = 0x2
|
||||||
BPF_F_ALLOW_OVERRIDE = 0x1
|
BPF_F_ALLOW_OVERRIDE = 0x1
|
||||||
BPF_F_ANY_ALIGNMENT = 0x2
|
BPF_F_ANY_ALIGNMENT = 0x2
|
||||||
BPF_F_CLONE = 0x200
|
|
||||||
BPF_F_CTXLEN_MASK = 0xfffff00000000
|
|
||||||
BPF_F_CURRENT_CPU = 0xffffffff
|
|
||||||
BPF_F_CURRENT_NETNS = -0x1
|
|
||||||
BPF_F_DONT_FRAGMENT = 0x4
|
|
||||||
BPF_F_FAST_STACK_CMP = 0x200
|
|
||||||
BPF_F_HDR_FIELD_MASK = 0xf
|
|
||||||
BPF_F_INDEX_MASK = 0xffffffff
|
|
||||||
BPF_F_INGRESS = 0x1
|
|
||||||
BPF_F_INVALIDATE_HASH = 0x2
|
|
||||||
BPF_F_LOCK = 0x4
|
|
||||||
BPF_F_MARK_ENFORCE = 0x40
|
|
||||||
BPF_F_MARK_MANGLED_0 = 0x20
|
|
||||||
BPF_F_MMAPABLE = 0x400
|
|
||||||
BPF_F_NO_COMMON_LRU = 0x2
|
|
||||||
BPF_F_NO_PREALLOC = 0x1
|
|
||||||
BPF_F_NUMA_NODE = 0x4
|
|
||||||
BPF_F_PSEUDO_HDR = 0x10
|
|
||||||
BPF_F_QUERY_EFFECTIVE = 0x1
|
BPF_F_QUERY_EFFECTIVE = 0x1
|
||||||
BPF_F_RDONLY = 0x8
|
|
||||||
BPF_F_RDONLY_PROG = 0x80
|
|
||||||
BPF_F_RECOMPUTE_CSUM = 0x1
|
|
||||||
BPF_F_REPLACE = 0x4
|
BPF_F_REPLACE = 0x4
|
||||||
BPF_F_REUSE_STACKID = 0x400
|
|
||||||
BPF_F_SEQ_NUMBER = 0x8
|
|
||||||
BPF_F_SKIP_FIELD_MASK = 0xff
|
|
||||||
BPF_F_STACK_BUILD_ID = 0x20
|
|
||||||
BPF_F_STRICT_ALIGNMENT = 0x1
|
BPF_F_STRICT_ALIGNMENT = 0x1
|
||||||
BPF_F_SYSCTL_BASE_NAME = 0x1
|
|
||||||
BPF_F_TEST_RND_HI32 = 0x4
|
BPF_F_TEST_RND_HI32 = 0x4
|
||||||
BPF_F_TEST_STATE_FREQ = 0x8
|
BPF_F_TEST_STATE_FREQ = 0x8
|
||||||
BPF_F_TUNINFO_IPV6 = 0x1
|
|
||||||
BPF_F_USER_BUILD_ID = 0x800
|
|
||||||
BPF_F_USER_STACK = 0x100
|
|
||||||
BPF_F_WRONLY = 0x10
|
|
||||||
BPF_F_WRONLY_PROG = 0x100
|
|
||||||
BPF_F_ZERO_CSUM_TX = 0x2
|
|
||||||
BPF_F_ZERO_SEED = 0x40
|
|
||||||
BPF_H = 0x8
|
BPF_H = 0x8
|
||||||
BPF_IMM = 0x0
|
BPF_IMM = 0x0
|
||||||
BPF_IND = 0x40
|
BPF_IND = 0x40
|
||||||
|
@ -267,7 +217,6 @@ const (
|
||||||
BPF_MUL = 0x20
|
BPF_MUL = 0x20
|
||||||
BPF_NEG = 0x80
|
BPF_NEG = 0x80
|
||||||
BPF_NET_OFF = -0x100000
|
BPF_NET_OFF = -0x100000
|
||||||
BPF_NOEXIST = 0x1
|
|
||||||
BPF_OBJ_NAME_LEN = 0x10
|
BPF_OBJ_NAME_LEN = 0x10
|
||||||
BPF_OR = 0x40
|
BPF_OR = 0x40
|
||||||
BPF_PSEUDO_CALL = 0x1
|
BPF_PSEUDO_CALL = 0x1
|
||||||
|
@ -275,12 +224,6 @@ const (
|
||||||
BPF_PSEUDO_MAP_VALUE = 0x2
|
BPF_PSEUDO_MAP_VALUE = 0x2
|
||||||
BPF_RET = 0x6
|
BPF_RET = 0x6
|
||||||
BPF_RSH = 0x70
|
BPF_RSH = 0x70
|
||||||
BPF_SK_STORAGE_GET_F_CREATE = 0x1
|
|
||||||
BPF_SOCK_OPS_ALL_CB_FLAGS = 0xf
|
|
||||||
BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2
|
|
||||||
BPF_SOCK_OPS_RTO_CB_FLAG = 0x1
|
|
||||||
BPF_SOCK_OPS_RTT_CB_FLAG = 0x8
|
|
||||||
BPF_SOCK_OPS_STATE_CB_FLAG = 0x4
|
|
||||||
BPF_ST = 0x2
|
BPF_ST = 0x2
|
||||||
BPF_STX = 0x3
|
BPF_STX = 0x3
|
||||||
BPF_SUB = 0x10
|
BPF_SUB = 0x10
|
||||||
|
@ -378,12 +321,14 @@ const (
|
||||||
CLOCK_TXINT = 0x3
|
CLOCK_TXINT = 0x3
|
||||||
CLONE_ARGS_SIZE_VER0 = 0x40
|
CLONE_ARGS_SIZE_VER0 = 0x40
|
||||||
CLONE_ARGS_SIZE_VER1 = 0x50
|
CLONE_ARGS_SIZE_VER1 = 0x50
|
||||||
|
CLONE_ARGS_SIZE_VER2 = 0x58
|
||||||
CLONE_CHILD_CLEARTID = 0x200000
|
CLONE_CHILD_CLEARTID = 0x200000
|
||||||
CLONE_CHILD_SETTID = 0x1000000
|
CLONE_CHILD_SETTID = 0x1000000
|
||||||
CLONE_CLEAR_SIGHAND = 0x100000000
|
CLONE_CLEAR_SIGHAND = 0x100000000
|
||||||
CLONE_DETACHED = 0x400000
|
CLONE_DETACHED = 0x400000
|
||||||
CLONE_FILES = 0x400
|
CLONE_FILES = 0x400
|
||||||
CLONE_FS = 0x200
|
CLONE_FS = 0x200
|
||||||
|
CLONE_INTO_CGROUP = 0x200000000
|
||||||
CLONE_IO = 0x80000000
|
CLONE_IO = 0x80000000
|
||||||
CLONE_NEWCGROUP = 0x2000000
|
CLONE_NEWCGROUP = 0x2000000
|
||||||
CLONE_NEWIPC = 0x8000000
|
CLONE_NEWIPC = 0x8000000
|
||||||
|
@ -598,7 +543,9 @@ const (
|
||||||
FAN_DELETE = 0x200
|
FAN_DELETE = 0x200
|
||||||
FAN_DELETE_SELF = 0x400
|
FAN_DELETE_SELF = 0x400
|
||||||
FAN_DENY = 0x2
|
FAN_DENY = 0x2
|
||||||
|
FAN_DIR_MODIFY = 0x80000
|
||||||
FAN_ENABLE_AUDIT = 0x40
|
FAN_ENABLE_AUDIT = 0x40
|
||||||
|
FAN_EVENT_INFO_TYPE_DFID_NAME = 0x2
|
||||||
FAN_EVENT_INFO_TYPE_FID = 0x1
|
FAN_EVENT_INFO_TYPE_FID = 0x1
|
||||||
FAN_EVENT_METADATA_LEN = 0x18
|
FAN_EVENT_METADATA_LEN = 0x18
|
||||||
FAN_EVENT_ON_CHILD = 0x8000000
|
FAN_EVENT_ON_CHILD = 0x8000000
|
||||||
|
@ -2108,8 +2055,6 @@ const (
|
||||||
TCOFLUSH = 0x1
|
TCOFLUSH = 0x1
|
||||||
TCOOFF = 0x0
|
TCOOFF = 0x0
|
||||||
TCOON = 0x1
|
TCOON = 0x1
|
||||||
TCP_BPF_IW = 0x3e9
|
|
||||||
TCP_BPF_SNDCWND_CLAMP = 0x3ea
|
|
||||||
TCP_CC_INFO = 0x1a
|
TCP_CC_INFO = 0x1a
|
||||||
TCP_CM_INQ = 0x24
|
TCP_CM_INQ = 0x24
|
||||||
TCP_CONGESTION = 0xd
|
TCP_CONGESTION = 0xd
|
||||||
|
@ -2165,6 +2110,8 @@ const (
|
||||||
TCP_USER_TIMEOUT = 0x12
|
TCP_USER_TIMEOUT = 0x12
|
||||||
TCP_WINDOW_CLAMP = 0xa
|
TCP_WINDOW_CLAMP = 0xa
|
||||||
TCP_ZEROCOPY_RECEIVE = 0x23
|
TCP_ZEROCOPY_RECEIVE = 0x23
|
||||||
|
TFD_TIMER_ABSTIME = 0x1
|
||||||
|
TFD_TIMER_CANCEL_ON_SET = 0x2
|
||||||
TIMER_ABSTIME = 0x1
|
TIMER_ABSTIME = 0x1
|
||||||
TIOCM_DTR = 0x2
|
TIOCM_DTR = 0x2
|
||||||
TIOCM_LE = 0x1
|
TIOCM_LE = 0x1
|
||||||
|
@ -2382,8 +2329,9 @@ const (
|
||||||
XDP_COPY = 0x2
|
XDP_COPY = 0x2
|
||||||
XDP_FLAGS_DRV_MODE = 0x4
|
XDP_FLAGS_DRV_MODE = 0x4
|
||||||
XDP_FLAGS_HW_MODE = 0x8
|
XDP_FLAGS_HW_MODE = 0x8
|
||||||
XDP_FLAGS_MASK = 0xf
|
XDP_FLAGS_MASK = 0x1f
|
||||||
XDP_FLAGS_MODES = 0xe
|
XDP_FLAGS_MODES = 0xe
|
||||||
|
XDP_FLAGS_REPLACE = 0x10
|
||||||
XDP_FLAGS_SKB_MODE = 0x2
|
XDP_FLAGS_SKB_MODE = 0x2
|
||||||
XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1
|
XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1
|
||||||
XDP_MMAP_OFFSETS = 0x1
|
XDP_MMAP_OFFSETS = 0x1
|
||||||
|
|
3
vendor/golang.org/x/sys/unix/zerrors_linux_386.go
generated
vendored
3
vendor/golang.org/x/sys/unix/zerrors_linux_386.go
generated
vendored
|
@ -75,6 +75,7 @@ const (
|
||||||
FP_XSTATE_MAGIC2 = 0x46505845
|
FP_XSTATE_MAGIC2 = 0x46505845
|
||||||
FS_IOC_ENABLE_VERITY = 0x40806685
|
FS_IOC_ENABLE_VERITY = 0x40806685
|
||||||
FS_IOC_GETFLAGS = 0x80046601
|
FS_IOC_GETFLAGS = 0x80046601
|
||||||
|
FS_IOC_GET_ENCRYPTION_NONCE = 0x8010661b
|
||||||
FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615
|
FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615
|
||||||
FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614
|
FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614
|
||||||
FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613
|
FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613
|
||||||
|
@ -342,6 +343,8 @@ const (
|
||||||
TCSETXF = 0x5434
|
TCSETXF = 0x5434
|
||||||
TCSETXW = 0x5435
|
TCSETXW = 0x5435
|
||||||
TCXONC = 0x540a
|
TCXONC = 0x540a
|
||||||
|
TFD_CLOEXEC = 0x80000
|
||||||
|
TFD_NONBLOCK = 0x800
|
||||||
TIOCCBRK = 0x5428
|
TIOCCBRK = 0x5428
|
||||||
TIOCCONS = 0x541d
|
TIOCCONS = 0x541d
|
||||||
TIOCEXCL = 0x540c
|
TIOCEXCL = 0x540c
|
||||||
|
|
3
vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go
generated
vendored
3
vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go
generated
vendored
|
@ -75,6 +75,7 @@ const (
|
||||||
FP_XSTATE_MAGIC2 = 0x46505845
|
FP_XSTATE_MAGIC2 = 0x46505845
|
||||||
FS_IOC_ENABLE_VERITY = 0x40806685
|
FS_IOC_ENABLE_VERITY = 0x40806685
|
||||||
FS_IOC_GETFLAGS = 0x80086601
|
FS_IOC_GETFLAGS = 0x80086601
|
||||||
|
FS_IOC_GET_ENCRYPTION_NONCE = 0x8010661b
|
||||||
FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615
|
FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615
|
||||||
FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614
|
FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614
|
||||||
FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613
|
FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613
|
||||||
|
@ -343,6 +344,8 @@ const (
|
||||||
TCSETXF = 0x5434
|
TCSETXF = 0x5434
|
||||||
TCSETXW = 0x5435
|
TCSETXW = 0x5435
|
||||||
TCXONC = 0x540a
|
TCXONC = 0x540a
|
||||||
|
TFD_CLOEXEC = 0x80000
|
||||||
|
TFD_NONBLOCK = 0x800
|
||||||
TIOCCBRK = 0x5428
|
TIOCCBRK = 0x5428
|
||||||
TIOCCONS = 0x541d
|
TIOCCONS = 0x541d
|
||||||
TIOCEXCL = 0x540c
|
TIOCEXCL = 0x540c
|
||||||
|
|
3
vendor/golang.org/x/sys/unix/zerrors_linux_arm.go
generated
vendored
3
vendor/golang.org/x/sys/unix/zerrors_linux_arm.go
generated
vendored
|
@ -74,6 +74,7 @@ const (
|
||||||
FLUSHO = 0x1000
|
FLUSHO = 0x1000
|
||||||
FS_IOC_ENABLE_VERITY = 0x40806685
|
FS_IOC_ENABLE_VERITY = 0x40806685
|
||||||
FS_IOC_GETFLAGS = 0x80046601
|
FS_IOC_GETFLAGS = 0x80046601
|
||||||
|
FS_IOC_GET_ENCRYPTION_NONCE = 0x8010661b
|
||||||
FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615
|
FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615
|
||||||
FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614
|
FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614
|
||||||
FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613
|
FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613
|
||||||
|
@ -349,6 +350,8 @@ const (
|
||||||
TCSETXF = 0x5434
|
TCSETXF = 0x5434
|
||||||
TCSETXW = 0x5435
|
TCSETXW = 0x5435
|
||||||
TCXONC = 0x540a
|
TCXONC = 0x540a
|
||||||
|
TFD_CLOEXEC = 0x80000
|
||||||
|
TFD_NONBLOCK = 0x800
|
||||||
TIOCCBRK = 0x5428
|
TIOCCBRK = 0x5428
|
||||||
TIOCCONS = 0x541d
|
TIOCCONS = 0x541d
|
||||||
TIOCEXCL = 0x540c
|
TIOCEXCL = 0x540c
|
||||||
|
|
3
vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go
generated
vendored
3
vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go
generated
vendored
|
@ -77,6 +77,7 @@ const (
|
||||||
FPSIMD_MAGIC = 0x46508001
|
FPSIMD_MAGIC = 0x46508001
|
||||||
FS_IOC_ENABLE_VERITY = 0x40806685
|
FS_IOC_ENABLE_VERITY = 0x40806685
|
||||||
FS_IOC_GETFLAGS = 0x80086601
|
FS_IOC_GETFLAGS = 0x80086601
|
||||||
|
FS_IOC_GET_ENCRYPTION_NONCE = 0x8010661b
|
||||||
FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615
|
FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615
|
||||||
FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614
|
FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614
|
||||||
FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613
|
FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613
|
||||||
|
@ -336,6 +337,8 @@ const (
|
||||||
TCSETXF = 0x5434
|
TCSETXF = 0x5434
|
||||||
TCSETXW = 0x5435
|
TCSETXW = 0x5435
|
||||||
TCXONC = 0x540a
|
TCXONC = 0x540a
|
||||||
|
TFD_CLOEXEC = 0x80000
|
||||||
|
TFD_NONBLOCK = 0x800
|
||||||
TIOCCBRK = 0x5428
|
TIOCCBRK = 0x5428
|
||||||
TIOCCONS = 0x541d
|
TIOCCONS = 0x541d
|
||||||
TIOCEXCL = 0x540c
|
TIOCEXCL = 0x540c
|
||||||
|
|
3
vendor/golang.org/x/sys/unix/zerrors_linux_mips.go
generated
vendored
3
vendor/golang.org/x/sys/unix/zerrors_linux_mips.go
generated
vendored
|
@ -74,6 +74,7 @@ const (
|
||||||
FLUSHO = 0x2000
|
FLUSHO = 0x2000
|
||||||
FS_IOC_ENABLE_VERITY = 0x80806685
|
FS_IOC_ENABLE_VERITY = 0x80806685
|
||||||
FS_IOC_GETFLAGS = 0x40046601
|
FS_IOC_GETFLAGS = 0x40046601
|
||||||
|
FS_IOC_GET_ENCRYPTION_NONCE = 0x4010661b
|
||||||
FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615
|
FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615
|
||||||
FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614
|
FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614
|
||||||
FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613
|
FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613
|
||||||
|
@ -339,6 +340,8 @@ const (
|
||||||
TCSETSW = 0x540f
|
TCSETSW = 0x540f
|
||||||
TCSETSW2 = 0x8030542c
|
TCSETSW2 = 0x8030542c
|
||||||
TCXONC = 0x5406
|
TCXONC = 0x5406
|
||||||
|
TFD_CLOEXEC = 0x80000
|
||||||
|
TFD_NONBLOCK = 0x80
|
||||||
TIOCCBRK = 0x5428
|
TIOCCBRK = 0x5428
|
||||||
TIOCCONS = 0x80047478
|
TIOCCONS = 0x80047478
|
||||||
TIOCEXCL = 0x740d
|
TIOCEXCL = 0x740d
|
||||||
|
|
3
vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go
generated
vendored
3
vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go
generated
vendored
|
@ -74,6 +74,7 @@ const (
|
||||||
FLUSHO = 0x2000
|
FLUSHO = 0x2000
|
||||||
FS_IOC_ENABLE_VERITY = 0x80806685
|
FS_IOC_ENABLE_VERITY = 0x80806685
|
||||||
FS_IOC_GETFLAGS = 0x40086601
|
FS_IOC_GETFLAGS = 0x40086601
|
||||||
|
FS_IOC_GET_ENCRYPTION_NONCE = 0x4010661b
|
||||||
FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615
|
FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615
|
||||||
FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614
|
FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614
|
||||||
FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613
|
FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613
|
||||||
|
@ -339,6 +340,8 @@ const (
|
||||||
TCSETSW = 0x540f
|
TCSETSW = 0x540f
|
||||||
TCSETSW2 = 0x8030542c
|
TCSETSW2 = 0x8030542c
|
||||||
TCXONC = 0x5406
|
TCXONC = 0x5406
|
||||||
|
TFD_CLOEXEC = 0x80000
|
||||||
|
TFD_NONBLOCK = 0x80
|
||||||
TIOCCBRK = 0x5428
|
TIOCCBRK = 0x5428
|
||||||
TIOCCONS = 0x80047478
|
TIOCCONS = 0x80047478
|
||||||
TIOCEXCL = 0x740d
|
TIOCEXCL = 0x740d
|
||||||
|
|
3
vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go
generated
vendored
3
vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go
generated
vendored
|
@ -74,6 +74,7 @@ const (
|
||||||
FLUSHO = 0x2000
|
FLUSHO = 0x2000
|
||||||
FS_IOC_ENABLE_VERITY = 0x80806685
|
FS_IOC_ENABLE_VERITY = 0x80806685
|
||||||
FS_IOC_GETFLAGS = 0x40086601
|
FS_IOC_GETFLAGS = 0x40086601
|
||||||
|
FS_IOC_GET_ENCRYPTION_NONCE = 0x4010661b
|
||||||
FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615
|
FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615
|
||||||
FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614
|
FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614
|
||||||
FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613
|
FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613
|
||||||
|
@ -339,6 +340,8 @@ const (
|
||||||
TCSETSW = 0x540f
|
TCSETSW = 0x540f
|
||||||
TCSETSW2 = 0x8030542c
|
TCSETSW2 = 0x8030542c
|
||||||
TCXONC = 0x5406
|
TCXONC = 0x5406
|
||||||
|
TFD_CLOEXEC = 0x80000
|
||||||
|
TFD_NONBLOCK = 0x80
|
||||||
TIOCCBRK = 0x5428
|
TIOCCBRK = 0x5428
|
||||||
TIOCCONS = 0x80047478
|
TIOCCONS = 0x80047478
|
||||||
TIOCEXCL = 0x740d
|
TIOCEXCL = 0x740d
|
||||||
|
|
3
vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go
generated
vendored
3
vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go
generated
vendored
|
@ -74,6 +74,7 @@ const (
|
||||||
FLUSHO = 0x2000
|
FLUSHO = 0x2000
|
||||||
FS_IOC_ENABLE_VERITY = 0x80806685
|
FS_IOC_ENABLE_VERITY = 0x80806685
|
||||||
FS_IOC_GETFLAGS = 0x40046601
|
FS_IOC_GETFLAGS = 0x40046601
|
||||||
|
FS_IOC_GET_ENCRYPTION_NONCE = 0x4010661b
|
||||||
FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615
|
FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615
|
||||||
FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614
|
FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614
|
||||||
FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613
|
FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613
|
||||||
|
@ -339,6 +340,8 @@ const (
|
||||||
TCSETSW = 0x540f
|
TCSETSW = 0x540f
|
||||||
TCSETSW2 = 0x8030542c
|
TCSETSW2 = 0x8030542c
|
||||||
TCXONC = 0x5406
|
TCXONC = 0x5406
|
||||||
|
TFD_CLOEXEC = 0x80000
|
||||||
|
TFD_NONBLOCK = 0x80
|
||||||
TIOCCBRK = 0x5428
|
TIOCCBRK = 0x5428
|
||||||
TIOCCONS = 0x80047478
|
TIOCCONS = 0x80047478
|
||||||
TIOCEXCL = 0x740d
|
TIOCEXCL = 0x740d
|
||||||
|
|
3
vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go
generated
vendored
3
vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go
generated
vendored
|
@ -74,6 +74,7 @@ const (
|
||||||
FLUSHO = 0x800000
|
FLUSHO = 0x800000
|
||||||
FS_IOC_ENABLE_VERITY = 0x80806685
|
FS_IOC_ENABLE_VERITY = 0x80806685
|
||||||
FS_IOC_GETFLAGS = 0x40086601
|
FS_IOC_GETFLAGS = 0x40086601
|
||||||
|
FS_IOC_GET_ENCRYPTION_NONCE = 0x4010661b
|
||||||
FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615
|
FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615
|
||||||
FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614
|
FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614
|
||||||
FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613
|
FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613
|
||||||
|
@ -393,6 +394,8 @@ const (
|
||||||
TCSETSF = 0x802c7416
|
TCSETSF = 0x802c7416
|
||||||
TCSETSW = 0x802c7415
|
TCSETSW = 0x802c7415
|
||||||
TCXONC = 0x2000741e
|
TCXONC = 0x2000741e
|
||||||
|
TFD_CLOEXEC = 0x80000
|
||||||
|
TFD_NONBLOCK = 0x800
|
||||||
TIOCCBRK = 0x5428
|
TIOCCBRK = 0x5428
|
||||||
TIOCCONS = 0x541d
|
TIOCCONS = 0x541d
|
||||||
TIOCEXCL = 0x540c
|
TIOCEXCL = 0x540c
|
||||||
|
|
3
vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go
generated
vendored
3
vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go
generated
vendored
|
@ -74,6 +74,7 @@ const (
|
||||||
FLUSHO = 0x800000
|
FLUSHO = 0x800000
|
||||||
FS_IOC_ENABLE_VERITY = 0x80806685
|
FS_IOC_ENABLE_VERITY = 0x80806685
|
||||||
FS_IOC_GETFLAGS = 0x40086601
|
FS_IOC_GETFLAGS = 0x40086601
|
||||||
|
FS_IOC_GET_ENCRYPTION_NONCE = 0x4010661b
|
||||||
FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615
|
FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615
|
||||||
FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614
|
FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614
|
||||||
FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613
|
FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613
|
||||||
|
@ -393,6 +394,8 @@ const (
|
||||||
TCSETSF = 0x802c7416
|
TCSETSF = 0x802c7416
|
||||||
TCSETSW = 0x802c7415
|
TCSETSW = 0x802c7415
|
||||||
TCXONC = 0x2000741e
|
TCXONC = 0x2000741e
|
||||||
|
TFD_CLOEXEC = 0x80000
|
||||||
|
TFD_NONBLOCK = 0x800
|
||||||
TIOCCBRK = 0x5428
|
TIOCCBRK = 0x5428
|
||||||
TIOCCONS = 0x541d
|
TIOCCONS = 0x541d
|
||||||
TIOCEXCL = 0x540c
|
TIOCEXCL = 0x540c
|
||||||
|
|
3
vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go
generated
vendored
3
vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go
generated
vendored
|
@ -74,6 +74,7 @@ const (
|
||||||
FLUSHO = 0x1000
|
FLUSHO = 0x1000
|
||||||
FS_IOC_ENABLE_VERITY = 0x40806685
|
FS_IOC_ENABLE_VERITY = 0x40806685
|
||||||
FS_IOC_GETFLAGS = 0x80086601
|
FS_IOC_GETFLAGS = 0x80086601
|
||||||
|
FS_IOC_GET_ENCRYPTION_NONCE = 0x8010661b
|
||||||
FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615
|
FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615
|
||||||
FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614
|
FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614
|
||||||
FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613
|
FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613
|
||||||
|
@ -330,6 +331,8 @@ const (
|
||||||
TCSETXF = 0x5434
|
TCSETXF = 0x5434
|
||||||
TCSETXW = 0x5435
|
TCSETXW = 0x5435
|
||||||
TCXONC = 0x540a
|
TCXONC = 0x540a
|
||||||
|
TFD_CLOEXEC = 0x80000
|
||||||
|
TFD_NONBLOCK = 0x800
|
||||||
TIOCCBRK = 0x5428
|
TIOCCBRK = 0x5428
|
||||||
TIOCCONS = 0x541d
|
TIOCCONS = 0x541d
|
||||||
TIOCEXCL = 0x540c
|
TIOCEXCL = 0x540c
|
||||||
|
|
3
vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go
generated
vendored
3
vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go
generated
vendored
|
@ -74,6 +74,7 @@ const (
|
||||||
FLUSHO = 0x1000
|
FLUSHO = 0x1000
|
||||||
FS_IOC_ENABLE_VERITY = 0x40806685
|
FS_IOC_ENABLE_VERITY = 0x40806685
|
||||||
FS_IOC_GETFLAGS = 0x80086601
|
FS_IOC_GETFLAGS = 0x80086601
|
||||||
|
FS_IOC_GET_ENCRYPTION_NONCE = 0x8010661b
|
||||||
FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615
|
FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615
|
||||||
FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614
|
FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614
|
||||||
FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613
|
FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613
|
||||||
|
@ -403,6 +404,8 @@ const (
|
||||||
TCSETXF = 0x5434
|
TCSETXF = 0x5434
|
||||||
TCSETXW = 0x5435
|
TCSETXW = 0x5435
|
||||||
TCXONC = 0x540a
|
TCXONC = 0x540a
|
||||||
|
TFD_CLOEXEC = 0x80000
|
||||||
|
TFD_NONBLOCK = 0x800
|
||||||
TIOCCBRK = 0x5428
|
TIOCCBRK = 0x5428
|
||||||
TIOCCONS = 0x541d
|
TIOCCONS = 0x541d
|
||||||
TIOCEXCL = 0x540c
|
TIOCEXCL = 0x540c
|
||||||
|
|
3
vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go
generated
vendored
3
vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go
generated
vendored
|
@ -78,6 +78,7 @@ const (
|
||||||
FLUSHO = 0x1000
|
FLUSHO = 0x1000
|
||||||
FS_IOC_ENABLE_VERITY = 0x80806685
|
FS_IOC_ENABLE_VERITY = 0x80806685
|
||||||
FS_IOC_GETFLAGS = 0x40086601
|
FS_IOC_GETFLAGS = 0x40086601
|
||||||
|
FS_IOC_GET_ENCRYPTION_NONCE = 0x4010661b
|
||||||
FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615
|
FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615
|
||||||
FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614
|
FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614
|
||||||
FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613
|
FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613
|
||||||
|
@ -392,6 +393,8 @@ const (
|
||||||
TCSETSW = 0x8024540a
|
TCSETSW = 0x8024540a
|
||||||
TCSETSW2 = 0x802c540e
|
TCSETSW2 = 0x802c540e
|
||||||
TCXONC = 0x20005406
|
TCXONC = 0x20005406
|
||||||
|
TFD_CLOEXEC = 0x400000
|
||||||
|
TFD_NONBLOCK = 0x4000
|
||||||
TIOCCBRK = 0x2000747a
|
TIOCCBRK = 0x2000747a
|
||||||
TIOCCONS = 0x20007424
|
TIOCCONS = 0x20007424
|
||||||
TIOCEXCL = 0x2000740d
|
TIOCEXCL = 0x2000740d
|
||||||
|
|
22
vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_11.go
generated
vendored
22
vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_11.go
generated
vendored
|
@ -966,6 +966,16 @@ func Getsid(pid int) (sid int, err error) {
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func Gettimeofday(tp *Timeval) (err error) {
|
||||||
|
_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Getuid() (uid int) {
|
func Getuid() (uid int) {
|
||||||
r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
|
r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
|
||||||
uid = int(r0)
|
uid = int(r0)
|
||||||
|
@ -1709,18 +1719,6 @@ func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func gettimeofday(tp *Timeval) (sec int32, usec int32, err error) {
|
|
||||||
r0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
|
|
||||||
sec = int32(r0)
|
|
||||||
usec = int32(r1)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func Fstat(fd int, stat *Stat_t) (err error) {
|
func Fstat(fd int, stat *Stat_t) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
|
_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
|
|
32
vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go
generated
vendored
32
vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go
generated
vendored
|
@ -1376,6 +1376,21 @@ func libc_getsid_trampoline()
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func Gettimeofday(tp *Timeval) (err error) {
|
||||||
|
_, _, e1 := syscall_rawSyscall(funcPC(libc_gettimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func libc_gettimeofday_trampoline()
|
||||||
|
|
||||||
|
//go:linkname libc_gettimeofday libc_gettimeofday
|
||||||
|
//go:cgo_import_dynamic libc_gettimeofday gettimeofday "/usr/lib/libSystem.B.dylib"
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Getuid() (uid int) {
|
func Getuid() (uid int) {
|
||||||
r0, _, _ := syscall_rawSyscall(funcPC(libc_getuid_trampoline), 0, 0, 0)
|
r0, _, _ := syscall_rawSyscall(funcPC(libc_getuid_trampoline), 0, 0, 0)
|
||||||
uid = int(r0)
|
uid = int(r0)
|
||||||
|
@ -2357,23 +2372,6 @@ func libc_ptrace_trampoline()
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func gettimeofday(tp *Timeval) (sec int32, usec int32, err error) {
|
|
||||||
r0, r1, e1 := syscall_rawSyscall(funcPC(libc_gettimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0)
|
|
||||||
sec = int32(r0)
|
|
||||||
usec = int32(r1)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func libc_gettimeofday_trampoline()
|
|
||||||
|
|
||||||
//go:linkname libc_gettimeofday libc_gettimeofday
|
|
||||||
//go:cgo_import_dynamic libc_gettimeofday gettimeofday "/usr/lib/libSystem.B.dylib"
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func Fstat(fd int, stat *Stat_t) (err error) {
|
func Fstat(fd int, stat *Stat_t) (err error) {
|
||||||
_, _, e1 := syscall_syscall(funcPC(libc_fstat64_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
|
_, _, e1 := syscall_syscall(funcPC(libc_fstat64_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
|
|
22
vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_11.go
generated
vendored
22
vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_11.go
generated
vendored
|
@ -966,6 +966,16 @@ func Getsid(pid int) (sid int, err error) {
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func Gettimeofday(tp *Timeval) (err error) {
|
||||||
|
_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Getuid() (uid int) {
|
func Getuid() (uid int) {
|
||||||
r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
|
r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
|
||||||
uid = int(r0)
|
uid = int(r0)
|
||||||
|
@ -1709,18 +1719,6 @@ func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func gettimeofday(tp *Timeval) (sec int64, usec int32, err error) {
|
|
||||||
r0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
|
|
||||||
sec = int64(r0)
|
|
||||||
usec = int32(r1)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func Fstat(fd int, stat *Stat_t) (err error) {
|
func Fstat(fd int, stat *Stat_t) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
|
_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
|
|
32
vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go
generated
vendored
32
vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go
generated
vendored
|
@ -1376,6 +1376,21 @@ func libc_getsid_trampoline()
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func Gettimeofday(tp *Timeval) (err error) {
|
||||||
|
_, _, e1 := syscall_rawSyscall(funcPC(libc_gettimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func libc_gettimeofday_trampoline()
|
||||||
|
|
||||||
|
//go:linkname libc_gettimeofday libc_gettimeofday
|
||||||
|
//go:cgo_import_dynamic libc_gettimeofday gettimeofday "/usr/lib/libSystem.B.dylib"
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Getuid() (uid int) {
|
func Getuid() (uid int) {
|
||||||
r0, _, _ := syscall_rawSyscall(funcPC(libc_getuid_trampoline), 0, 0, 0)
|
r0, _, _ := syscall_rawSyscall(funcPC(libc_getuid_trampoline), 0, 0, 0)
|
||||||
uid = int(r0)
|
uid = int(r0)
|
||||||
|
@ -2357,23 +2372,6 @@ func libc_ptrace_trampoline()
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func gettimeofday(tp *Timeval) (sec int64, usec int32, err error) {
|
|
||||||
r0, r1, e1 := syscall_rawSyscall(funcPC(libc_gettimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0)
|
|
||||||
sec = int64(r0)
|
|
||||||
usec = int32(r1)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func libc_gettimeofday_trampoline()
|
|
||||||
|
|
||||||
//go:linkname libc_gettimeofday libc_gettimeofday
|
|
||||||
//go:cgo_import_dynamic libc_gettimeofday gettimeofday "/usr/lib/libSystem.B.dylib"
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func Fstat(fd int, stat *Stat_t) (err error) {
|
func Fstat(fd int, stat *Stat_t) (err error) {
|
||||||
_, _, e1 := syscall_syscall(funcPC(libc_fstat64_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
|
_, _, e1 := syscall_syscall(funcPC(libc_fstat64_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
|
|
22
vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_11.go
generated
vendored
22
vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_11.go
generated
vendored
|
@ -966,6 +966,16 @@ func Getsid(pid int) (sid int, err error) {
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func Gettimeofday(tp *Timeval) (err error) {
|
||||||
|
_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Getuid() (uid int) {
|
func Getuid() (uid int) {
|
||||||
r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
|
r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
|
||||||
uid = int(r0)
|
uid = int(r0)
|
||||||
|
@ -1682,18 +1692,6 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func gettimeofday(tp *Timeval) (sec int32, usec int32, err error) {
|
|
||||||
r0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
|
|
||||||
sec = int32(r0)
|
|
||||||
usec = int32(r1)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func Fstat(fd int, stat *Stat_t) (err error) {
|
func Fstat(fd int, stat *Stat_t) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
|
_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
|
|
32
vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go
generated
vendored
32
vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go
generated
vendored
|
@ -1376,6 +1376,21 @@ func libc_getsid_trampoline()
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func Gettimeofday(tp *Timeval) (err error) {
|
||||||
|
_, _, e1 := syscall_rawSyscall(funcPC(libc_gettimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func libc_gettimeofday_trampoline()
|
||||||
|
|
||||||
|
//go:linkname libc_gettimeofday libc_gettimeofday
|
||||||
|
//go:cgo_import_dynamic libc_gettimeofday gettimeofday "/usr/lib/libSystem.B.dylib"
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Getuid() (uid int) {
|
func Getuid() (uid int) {
|
||||||
r0, _, _ := syscall_rawSyscall(funcPC(libc_getuid_trampoline), 0, 0, 0)
|
r0, _, _ := syscall_rawSyscall(funcPC(libc_getuid_trampoline), 0, 0, 0)
|
||||||
uid = int(r0)
|
uid = int(r0)
|
||||||
|
@ -2342,23 +2357,6 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func gettimeofday(tp *Timeval) (sec int32, usec int32, err error) {
|
|
||||||
r0, r1, e1 := syscall_rawSyscall(funcPC(libc_gettimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0)
|
|
||||||
sec = int32(r0)
|
|
||||||
usec = int32(r1)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func libc_gettimeofday_trampoline()
|
|
||||||
|
|
||||||
//go:linkname libc_gettimeofday libc_gettimeofday
|
|
||||||
//go:cgo_import_dynamic libc_gettimeofday gettimeofday "/usr/lib/libSystem.B.dylib"
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func Fstat(fd int, stat *Stat_t) (err error) {
|
func Fstat(fd int, stat *Stat_t) (err error) {
|
||||||
_, _, e1 := syscall_syscall(funcPC(libc_fstat_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
|
_, _, e1 := syscall_syscall(funcPC(libc_fstat_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
|
|
22
vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_11.go
generated
vendored
22
vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_11.go
generated
vendored
|
@ -966,6 +966,16 @@ func Getsid(pid int) (sid int, err error) {
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func Gettimeofday(tp *Timeval) (err error) {
|
||||||
|
_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Getuid() (uid int) {
|
func Getuid() (uid int) {
|
||||||
r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
|
r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
|
||||||
uid = int(r0)
|
uid = int(r0)
|
||||||
|
@ -1682,18 +1692,6 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func gettimeofday(tp *Timeval) (sec int64, usec int32, err error) {
|
|
||||||
r0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
|
|
||||||
sec = int64(r0)
|
|
||||||
usec = int32(r1)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func Fstat(fd int, stat *Stat_t) (err error) {
|
func Fstat(fd int, stat *Stat_t) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
|
_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
|
|
32
vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go
generated
vendored
32
vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go
generated
vendored
|
@ -1376,6 +1376,21 @@ func libc_getsid_trampoline()
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func Gettimeofday(tp *Timeval) (err error) {
|
||||||
|
_, _, e1 := syscall_rawSyscall(funcPC(libc_gettimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func libc_gettimeofday_trampoline()
|
||||||
|
|
||||||
|
//go:linkname libc_gettimeofday libc_gettimeofday
|
||||||
|
//go:cgo_import_dynamic libc_gettimeofday gettimeofday "/usr/lib/libSystem.B.dylib"
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Getuid() (uid int) {
|
func Getuid() (uid int) {
|
||||||
r0, _, _ := syscall_rawSyscall(funcPC(libc_getuid_trampoline), 0, 0, 0)
|
r0, _, _ := syscall_rawSyscall(funcPC(libc_getuid_trampoline), 0, 0, 0)
|
||||||
uid = int(r0)
|
uid = int(r0)
|
||||||
|
@ -2342,23 +2357,6 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func gettimeofday(tp *Timeval) (sec int64, usec int32, err error) {
|
|
||||||
r0, r1, e1 := syscall_rawSyscall(funcPC(libc_gettimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0)
|
|
||||||
sec = int64(r0)
|
|
||||||
usec = int32(r1)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func libc_gettimeofday_trampoline()
|
|
||||||
|
|
||||||
//go:linkname libc_gettimeofday libc_gettimeofday
|
|
||||||
//go:cgo_import_dynamic libc_gettimeofday gettimeofday "/usr/lib/libSystem.B.dylib"
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func Fstat(fd int, stat *Stat_t) (err error) {
|
func Fstat(fd int, stat *Stat_t) (err error) {
|
||||||
_, _, e1 := syscall_syscall(funcPC(libc_fstat_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
|
_, _, e1 := syscall_syscall(funcPC(libc_fstat_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
|
|
31
vendor/golang.org/x/sys/unix/zsyscall_linux.go
generated
vendored
31
vendor/golang.org/x/sys/unix/zsyscall_linux.go
generated
vendored
|
@ -1450,6 +1450,37 @@ func Sysinfo(info *Sysinfo_t) (err error) {
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func TimerfdCreate(clockid int, flags int) (fd int, err error) {
|
||||||
|
r0, _, e1 := RawSyscall(SYS_TIMERFD_CREATE, uintptr(clockid), uintptr(flags), 0)
|
||||||
|
fd = int(r0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func TimerfdGettime(fd int, currValue *ItimerSpec) (err error) {
|
||||||
|
_, _, e1 := RawSyscall(SYS_TIMERFD_GETTIME, uintptr(fd), uintptr(unsafe.Pointer(currValue)), 0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func TimerfdSettime(fd int, flags int, newValue *ItimerSpec, oldValue *ItimerSpec) (err error) {
|
||||||
|
_, _, e1 := RawSyscall6(SYS_TIMERFD_SETTIME, uintptr(fd), uintptr(flags), uintptr(unsafe.Pointer(newValue)), uintptr(unsafe.Pointer(oldValue)), 0, 0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {
|
func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {
|
||||||
_, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))
|
_, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
|
|
2
vendor/golang.org/x/sys/unix/zsyscall_linux_386.go
generated
vendored
2
vendor/golang.org/x/sys/unix/zsyscall_linux_386.go
generated
vendored
|
@ -55,7 +55,7 @@ func pipe(p *[2]_C_int) (err error) {
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Dup2(oldfd int, newfd int) (err error) {
|
func dup2(oldfd int, newfd int) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
|
_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
|
|
2
vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go
generated
vendored
2
vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go
generated
vendored
|
@ -45,7 +45,7 @@ func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Dup2(oldfd int, newfd int) (err error) {
|
func dup2(oldfd int, newfd int) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
|
_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
|
|
2
vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go
generated
vendored
2
vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go
generated
vendored
|
@ -234,7 +234,7 @@ func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Dup2(oldfd int, newfd int) (err error) {
|
func dup2(oldfd int, newfd int) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
|
_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
|
|
4
vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go
generated
vendored
4
vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go
generated
vendored
|
@ -151,7 +151,7 @@ func Getgid() (gid int) {
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Getrlimit(resource int, rlim *Rlimit) (err error) {
|
func getrlimit(resource int, rlim *Rlimit) (err error) {
|
||||||
_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
|
_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
|
@ -307,7 +307,7 @@ func Setresuid(ruid int, euid int, suid int) (err error) {
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Setrlimit(resource int, rlim *Rlimit) (err error) {
|
func setrlimit(resource int, rlim *Rlimit) (err error) {
|
||||||
_, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
|
_, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
|
|
2
vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go
generated
vendored
2
vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go
generated
vendored
|
@ -45,7 +45,7 @@ func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Dup2(oldfd int, newfd int) (err error) {
|
func dup2(oldfd int, newfd int) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
|
_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
|
|
2
vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go
generated
vendored
2
vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go
generated
vendored
|
@ -45,7 +45,7 @@ func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Dup2(oldfd int, newfd int) (err error) {
|
func dup2(oldfd int, newfd int) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
|
_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
|
|
2
vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go
generated
vendored
2
vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go
generated
vendored
|
@ -45,7 +45,7 @@ func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Dup2(oldfd int, newfd int) (err error) {
|
func dup2(oldfd int, newfd int) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
|
_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
|
|
2
vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go
generated
vendored
2
vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go
generated
vendored
|
@ -45,7 +45,7 @@ func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Dup2(oldfd int, newfd int) (err error) {
|
func dup2(oldfd int, newfd int) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
|
_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
|
|
2
vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go
generated
vendored
2
vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go
generated
vendored
|
@ -45,7 +45,7 @@ func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Dup2(oldfd int, newfd int) (err error) {
|
func dup2(oldfd int, newfd int) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
|
_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
|
|
2
vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go
generated
vendored
2
vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go
generated
vendored
|
@ -45,7 +45,7 @@ func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Dup2(oldfd int, newfd int) (err error) {
|
func dup2(oldfd int, newfd int) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
|
_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
|
|
2
vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go
generated
vendored
2
vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go
generated
vendored
|
@ -45,7 +45,7 @@ func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Dup2(oldfd int, newfd int) (err error) {
|
func dup2(oldfd int, newfd int) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
|
_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
|
|
2
vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go
generated
vendored
2
vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go
generated
vendored
|
@ -72,7 +72,7 @@ func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Dup2(oldfd int, newfd int) (err error) {
|
func dup2(oldfd int, newfd int) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
|
_, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
|
|
3
vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go
generated
vendored
3
vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go
generated
vendored
|
@ -1,4 +1,4 @@
|
||||||
// mksysctl_openbsd.pl
|
// go run mksysctl_openbsd.go
|
||||||
// Code generated by the command above; DO NOT EDIT.
|
// Code generated by the command above; DO NOT EDIT.
|
||||||
|
|
||||||
// +build 386,openbsd
|
// +build 386,openbsd
|
||||||
|
@ -30,6 +30,7 @@ var sysctlMib = []mibentry{
|
||||||
{"hw.model", []_C_int{6, 2}},
|
{"hw.model", []_C_int{6, 2}},
|
||||||
{"hw.ncpu", []_C_int{6, 3}},
|
{"hw.ncpu", []_C_int{6, 3}},
|
||||||
{"hw.ncpufound", []_C_int{6, 21}},
|
{"hw.ncpufound", []_C_int{6, 21}},
|
||||||
|
{"hw.ncpuonline", []_C_int{6, 25}},
|
||||||
{"hw.pagesize", []_C_int{6, 7}},
|
{"hw.pagesize", []_C_int{6, 7}},
|
||||||
{"hw.physmem", []_C_int{6, 19}},
|
{"hw.physmem", []_C_int{6, 19}},
|
||||||
{"hw.product", []_C_int{6, 15}},
|
{"hw.product", []_C_int{6, 15}},
|
||||||
|
|
1
vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go
generated
vendored
1
vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go
generated
vendored
|
@ -31,6 +31,7 @@ var sysctlMib = []mibentry{
|
||||||
{"hw.model", []_C_int{6, 2}},
|
{"hw.model", []_C_int{6, 2}},
|
||||||
{"hw.ncpu", []_C_int{6, 3}},
|
{"hw.ncpu", []_C_int{6, 3}},
|
||||||
{"hw.ncpufound", []_C_int{6, 21}},
|
{"hw.ncpufound", []_C_int{6, 21}},
|
||||||
|
{"hw.ncpuonline", []_C_int{6, 25}},
|
||||||
{"hw.pagesize", []_C_int{6, 7}},
|
{"hw.pagesize", []_C_int{6, 7}},
|
||||||
{"hw.perfpolicy", []_C_int{6, 23}},
|
{"hw.perfpolicy", []_C_int{6, 23}},
|
||||||
{"hw.physmem", []_C_int{6, 19}},
|
{"hw.physmem", []_C_int{6, 19}},
|
||||||
|
|
1
vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go
generated
vendored
1
vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go
generated
vendored
|
@ -30,6 +30,7 @@ var sysctlMib = []mibentry{
|
||||||
{"hw.model", []_C_int{6, 2}},
|
{"hw.model", []_C_int{6, 2}},
|
||||||
{"hw.ncpu", []_C_int{6, 3}},
|
{"hw.ncpu", []_C_int{6, 3}},
|
||||||
{"hw.ncpufound", []_C_int{6, 21}},
|
{"hw.ncpufound", []_C_int{6, 21}},
|
||||||
|
{"hw.ncpuonline", []_C_int{6, 25}},
|
||||||
{"hw.pagesize", []_C_int{6, 7}},
|
{"hw.pagesize", []_C_int{6, 7}},
|
||||||
{"hw.physmem", []_C_int{6, 19}},
|
{"hw.physmem", []_C_int{6, 19}},
|
||||||
{"hw.product", []_C_int{6, 15}},
|
{"hw.product", []_C_int{6, 15}},
|
||||||
|
|
421
vendor/golang.org/x/sys/unix/ztypes_linux.go
generated
vendored
421
vendor/golang.org/x/sys/unix/ztypes_linux.go
generated
vendored
|
@ -18,6 +18,11 @@ type (
|
||||||
_C_long_long int64
|
_C_long_long int64
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type ItimerSpec struct {
|
||||||
|
Interval Timespec
|
||||||
|
Value Timespec
|
||||||
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
TIME_OK = 0x0
|
TIME_OK = 0x0
|
||||||
TIME_INS = 0x1
|
TIME_INS = 0x1
|
||||||
|
@ -1866,175 +1871,249 @@ const (
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
BPF_REG_0 = 0x0
|
BPF_REG_0 = 0x0
|
||||||
BPF_REG_1 = 0x1
|
BPF_REG_1 = 0x1
|
||||||
BPF_REG_2 = 0x2
|
BPF_REG_2 = 0x2
|
||||||
BPF_REG_3 = 0x3
|
BPF_REG_3 = 0x3
|
||||||
BPF_REG_4 = 0x4
|
BPF_REG_4 = 0x4
|
||||||
BPF_REG_5 = 0x5
|
BPF_REG_5 = 0x5
|
||||||
BPF_REG_6 = 0x6
|
BPF_REG_6 = 0x6
|
||||||
BPF_REG_7 = 0x7
|
BPF_REG_7 = 0x7
|
||||||
BPF_REG_8 = 0x8
|
BPF_REG_8 = 0x8
|
||||||
BPF_REG_9 = 0x9
|
BPF_REG_9 = 0x9
|
||||||
BPF_REG_10 = 0xa
|
BPF_REG_10 = 0xa
|
||||||
BPF_MAP_CREATE = 0x0
|
BPF_MAP_CREATE = 0x0
|
||||||
BPF_MAP_LOOKUP_ELEM = 0x1
|
BPF_MAP_LOOKUP_ELEM = 0x1
|
||||||
BPF_MAP_UPDATE_ELEM = 0x2
|
BPF_MAP_UPDATE_ELEM = 0x2
|
||||||
BPF_MAP_DELETE_ELEM = 0x3
|
BPF_MAP_DELETE_ELEM = 0x3
|
||||||
BPF_MAP_GET_NEXT_KEY = 0x4
|
BPF_MAP_GET_NEXT_KEY = 0x4
|
||||||
BPF_PROG_LOAD = 0x5
|
BPF_PROG_LOAD = 0x5
|
||||||
BPF_OBJ_PIN = 0x6
|
BPF_OBJ_PIN = 0x6
|
||||||
BPF_OBJ_GET = 0x7
|
BPF_OBJ_GET = 0x7
|
||||||
BPF_PROG_ATTACH = 0x8
|
BPF_PROG_ATTACH = 0x8
|
||||||
BPF_PROG_DETACH = 0x9
|
BPF_PROG_DETACH = 0x9
|
||||||
BPF_PROG_TEST_RUN = 0xa
|
BPF_PROG_TEST_RUN = 0xa
|
||||||
BPF_PROG_GET_NEXT_ID = 0xb
|
BPF_PROG_GET_NEXT_ID = 0xb
|
||||||
BPF_MAP_GET_NEXT_ID = 0xc
|
BPF_MAP_GET_NEXT_ID = 0xc
|
||||||
BPF_PROG_GET_FD_BY_ID = 0xd
|
BPF_PROG_GET_FD_BY_ID = 0xd
|
||||||
BPF_MAP_GET_FD_BY_ID = 0xe
|
BPF_MAP_GET_FD_BY_ID = 0xe
|
||||||
BPF_OBJ_GET_INFO_BY_FD = 0xf
|
BPF_OBJ_GET_INFO_BY_FD = 0xf
|
||||||
BPF_PROG_QUERY = 0x10
|
BPF_PROG_QUERY = 0x10
|
||||||
BPF_RAW_TRACEPOINT_OPEN = 0x11
|
BPF_RAW_TRACEPOINT_OPEN = 0x11
|
||||||
BPF_BTF_LOAD = 0x12
|
BPF_BTF_LOAD = 0x12
|
||||||
BPF_BTF_GET_FD_BY_ID = 0x13
|
BPF_BTF_GET_FD_BY_ID = 0x13
|
||||||
BPF_TASK_FD_QUERY = 0x14
|
BPF_TASK_FD_QUERY = 0x14
|
||||||
BPF_MAP_LOOKUP_AND_DELETE_ELEM = 0x15
|
BPF_MAP_LOOKUP_AND_DELETE_ELEM = 0x15
|
||||||
BPF_MAP_FREEZE = 0x16
|
BPF_MAP_FREEZE = 0x16
|
||||||
BPF_BTF_GET_NEXT_ID = 0x17
|
BPF_BTF_GET_NEXT_ID = 0x17
|
||||||
BPF_MAP_TYPE_UNSPEC = 0x0
|
BPF_MAP_LOOKUP_BATCH = 0x18
|
||||||
BPF_MAP_TYPE_HASH = 0x1
|
BPF_MAP_LOOKUP_AND_DELETE_BATCH = 0x19
|
||||||
BPF_MAP_TYPE_ARRAY = 0x2
|
BPF_MAP_UPDATE_BATCH = 0x1a
|
||||||
BPF_MAP_TYPE_PROG_ARRAY = 0x3
|
BPF_MAP_DELETE_BATCH = 0x1b
|
||||||
BPF_MAP_TYPE_PERF_EVENT_ARRAY = 0x4
|
BPF_LINK_CREATE = 0x1c
|
||||||
BPF_MAP_TYPE_PERCPU_HASH = 0x5
|
BPF_LINK_UPDATE = 0x1d
|
||||||
BPF_MAP_TYPE_PERCPU_ARRAY = 0x6
|
BPF_MAP_TYPE_UNSPEC = 0x0
|
||||||
BPF_MAP_TYPE_STACK_TRACE = 0x7
|
BPF_MAP_TYPE_HASH = 0x1
|
||||||
BPF_MAP_TYPE_CGROUP_ARRAY = 0x8
|
BPF_MAP_TYPE_ARRAY = 0x2
|
||||||
BPF_MAP_TYPE_LRU_HASH = 0x9
|
BPF_MAP_TYPE_PROG_ARRAY = 0x3
|
||||||
BPF_MAP_TYPE_LRU_PERCPU_HASH = 0xa
|
BPF_MAP_TYPE_PERF_EVENT_ARRAY = 0x4
|
||||||
BPF_MAP_TYPE_LPM_TRIE = 0xb
|
BPF_MAP_TYPE_PERCPU_HASH = 0x5
|
||||||
BPF_MAP_TYPE_ARRAY_OF_MAPS = 0xc
|
BPF_MAP_TYPE_PERCPU_ARRAY = 0x6
|
||||||
BPF_MAP_TYPE_HASH_OF_MAPS = 0xd
|
BPF_MAP_TYPE_STACK_TRACE = 0x7
|
||||||
BPF_MAP_TYPE_DEVMAP = 0xe
|
BPF_MAP_TYPE_CGROUP_ARRAY = 0x8
|
||||||
BPF_MAP_TYPE_SOCKMAP = 0xf
|
BPF_MAP_TYPE_LRU_HASH = 0x9
|
||||||
BPF_MAP_TYPE_CPUMAP = 0x10
|
BPF_MAP_TYPE_LRU_PERCPU_HASH = 0xa
|
||||||
BPF_MAP_TYPE_XSKMAP = 0x11
|
BPF_MAP_TYPE_LPM_TRIE = 0xb
|
||||||
BPF_MAP_TYPE_SOCKHASH = 0x12
|
BPF_MAP_TYPE_ARRAY_OF_MAPS = 0xc
|
||||||
BPF_MAP_TYPE_CGROUP_STORAGE = 0x13
|
BPF_MAP_TYPE_HASH_OF_MAPS = 0xd
|
||||||
BPF_MAP_TYPE_REUSEPORT_SOCKARRAY = 0x14
|
BPF_MAP_TYPE_DEVMAP = 0xe
|
||||||
BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = 0x15
|
BPF_MAP_TYPE_SOCKMAP = 0xf
|
||||||
BPF_MAP_TYPE_QUEUE = 0x16
|
BPF_MAP_TYPE_CPUMAP = 0x10
|
||||||
BPF_MAP_TYPE_STACK = 0x17
|
BPF_MAP_TYPE_XSKMAP = 0x11
|
||||||
BPF_MAP_TYPE_SK_STORAGE = 0x18
|
BPF_MAP_TYPE_SOCKHASH = 0x12
|
||||||
BPF_MAP_TYPE_DEVMAP_HASH = 0x19
|
BPF_MAP_TYPE_CGROUP_STORAGE = 0x13
|
||||||
BPF_PROG_TYPE_UNSPEC = 0x0
|
BPF_MAP_TYPE_REUSEPORT_SOCKARRAY = 0x14
|
||||||
BPF_PROG_TYPE_SOCKET_FILTER = 0x1
|
BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = 0x15
|
||||||
BPF_PROG_TYPE_KPROBE = 0x2
|
BPF_MAP_TYPE_QUEUE = 0x16
|
||||||
BPF_PROG_TYPE_SCHED_CLS = 0x3
|
BPF_MAP_TYPE_STACK = 0x17
|
||||||
BPF_PROG_TYPE_SCHED_ACT = 0x4
|
BPF_MAP_TYPE_SK_STORAGE = 0x18
|
||||||
BPF_PROG_TYPE_TRACEPOINT = 0x5
|
BPF_MAP_TYPE_DEVMAP_HASH = 0x19
|
||||||
BPF_PROG_TYPE_XDP = 0x6
|
BPF_MAP_TYPE_STRUCT_OPS = 0x1a
|
||||||
BPF_PROG_TYPE_PERF_EVENT = 0x7
|
BPF_PROG_TYPE_UNSPEC = 0x0
|
||||||
BPF_PROG_TYPE_CGROUP_SKB = 0x8
|
BPF_PROG_TYPE_SOCKET_FILTER = 0x1
|
||||||
BPF_PROG_TYPE_CGROUP_SOCK = 0x9
|
BPF_PROG_TYPE_KPROBE = 0x2
|
||||||
BPF_PROG_TYPE_LWT_IN = 0xa
|
BPF_PROG_TYPE_SCHED_CLS = 0x3
|
||||||
BPF_PROG_TYPE_LWT_OUT = 0xb
|
BPF_PROG_TYPE_SCHED_ACT = 0x4
|
||||||
BPF_PROG_TYPE_LWT_XMIT = 0xc
|
BPF_PROG_TYPE_TRACEPOINT = 0x5
|
||||||
BPF_PROG_TYPE_SOCK_OPS = 0xd
|
BPF_PROG_TYPE_XDP = 0x6
|
||||||
BPF_PROG_TYPE_SK_SKB = 0xe
|
BPF_PROG_TYPE_PERF_EVENT = 0x7
|
||||||
BPF_PROG_TYPE_CGROUP_DEVICE = 0xf
|
BPF_PROG_TYPE_CGROUP_SKB = 0x8
|
||||||
BPF_PROG_TYPE_SK_MSG = 0x10
|
BPF_PROG_TYPE_CGROUP_SOCK = 0x9
|
||||||
BPF_PROG_TYPE_RAW_TRACEPOINT = 0x11
|
BPF_PROG_TYPE_LWT_IN = 0xa
|
||||||
BPF_PROG_TYPE_CGROUP_SOCK_ADDR = 0x12
|
BPF_PROG_TYPE_LWT_OUT = 0xb
|
||||||
BPF_PROG_TYPE_LWT_SEG6LOCAL = 0x13
|
BPF_PROG_TYPE_LWT_XMIT = 0xc
|
||||||
BPF_PROG_TYPE_LIRC_MODE2 = 0x14
|
BPF_PROG_TYPE_SOCK_OPS = 0xd
|
||||||
BPF_PROG_TYPE_SK_REUSEPORT = 0x15
|
BPF_PROG_TYPE_SK_SKB = 0xe
|
||||||
BPF_PROG_TYPE_FLOW_DISSECTOR = 0x16
|
BPF_PROG_TYPE_CGROUP_DEVICE = 0xf
|
||||||
BPF_PROG_TYPE_CGROUP_SYSCTL = 0x17
|
BPF_PROG_TYPE_SK_MSG = 0x10
|
||||||
BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE = 0x18
|
BPF_PROG_TYPE_RAW_TRACEPOINT = 0x11
|
||||||
BPF_PROG_TYPE_CGROUP_SOCKOPT = 0x19
|
BPF_PROG_TYPE_CGROUP_SOCK_ADDR = 0x12
|
||||||
BPF_PROG_TYPE_TRACING = 0x1a
|
BPF_PROG_TYPE_LWT_SEG6LOCAL = 0x13
|
||||||
BPF_CGROUP_INET_INGRESS = 0x0
|
BPF_PROG_TYPE_LIRC_MODE2 = 0x14
|
||||||
BPF_CGROUP_INET_EGRESS = 0x1
|
BPF_PROG_TYPE_SK_REUSEPORT = 0x15
|
||||||
BPF_CGROUP_INET_SOCK_CREATE = 0x2
|
BPF_PROG_TYPE_FLOW_DISSECTOR = 0x16
|
||||||
BPF_CGROUP_SOCK_OPS = 0x3
|
BPF_PROG_TYPE_CGROUP_SYSCTL = 0x17
|
||||||
BPF_SK_SKB_STREAM_PARSER = 0x4
|
BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE = 0x18
|
||||||
BPF_SK_SKB_STREAM_VERDICT = 0x5
|
BPF_PROG_TYPE_CGROUP_SOCKOPT = 0x19
|
||||||
BPF_CGROUP_DEVICE = 0x6
|
BPF_PROG_TYPE_TRACING = 0x1a
|
||||||
BPF_SK_MSG_VERDICT = 0x7
|
BPF_PROG_TYPE_STRUCT_OPS = 0x1b
|
||||||
BPF_CGROUP_INET4_BIND = 0x8
|
BPF_PROG_TYPE_EXT = 0x1c
|
||||||
BPF_CGROUP_INET6_BIND = 0x9
|
BPF_PROG_TYPE_LSM = 0x1d
|
||||||
BPF_CGROUP_INET4_CONNECT = 0xa
|
BPF_CGROUP_INET_INGRESS = 0x0
|
||||||
BPF_CGROUP_INET6_CONNECT = 0xb
|
BPF_CGROUP_INET_EGRESS = 0x1
|
||||||
BPF_CGROUP_INET4_POST_BIND = 0xc
|
BPF_CGROUP_INET_SOCK_CREATE = 0x2
|
||||||
BPF_CGROUP_INET6_POST_BIND = 0xd
|
BPF_CGROUP_SOCK_OPS = 0x3
|
||||||
BPF_CGROUP_UDP4_SENDMSG = 0xe
|
BPF_SK_SKB_STREAM_PARSER = 0x4
|
||||||
BPF_CGROUP_UDP6_SENDMSG = 0xf
|
BPF_SK_SKB_STREAM_VERDICT = 0x5
|
||||||
BPF_LIRC_MODE2 = 0x10
|
BPF_CGROUP_DEVICE = 0x6
|
||||||
BPF_FLOW_DISSECTOR = 0x11
|
BPF_SK_MSG_VERDICT = 0x7
|
||||||
BPF_CGROUP_SYSCTL = 0x12
|
BPF_CGROUP_INET4_BIND = 0x8
|
||||||
BPF_CGROUP_UDP4_RECVMSG = 0x13
|
BPF_CGROUP_INET6_BIND = 0x9
|
||||||
BPF_CGROUP_UDP6_RECVMSG = 0x14
|
BPF_CGROUP_INET4_CONNECT = 0xa
|
||||||
BPF_CGROUP_GETSOCKOPT = 0x15
|
BPF_CGROUP_INET6_CONNECT = 0xb
|
||||||
BPF_CGROUP_SETSOCKOPT = 0x16
|
BPF_CGROUP_INET4_POST_BIND = 0xc
|
||||||
BPF_TRACE_RAW_TP = 0x17
|
BPF_CGROUP_INET6_POST_BIND = 0xd
|
||||||
BPF_TRACE_FENTRY = 0x18
|
BPF_CGROUP_UDP4_SENDMSG = 0xe
|
||||||
BPF_TRACE_FEXIT = 0x19
|
BPF_CGROUP_UDP6_SENDMSG = 0xf
|
||||||
BPF_STACK_BUILD_ID_EMPTY = 0x0
|
BPF_LIRC_MODE2 = 0x10
|
||||||
BPF_STACK_BUILD_ID_VALID = 0x1
|
BPF_FLOW_DISSECTOR = 0x11
|
||||||
BPF_STACK_BUILD_ID_IP = 0x2
|
BPF_CGROUP_SYSCTL = 0x12
|
||||||
BPF_ADJ_ROOM_NET = 0x0
|
BPF_CGROUP_UDP4_RECVMSG = 0x13
|
||||||
BPF_ADJ_ROOM_MAC = 0x1
|
BPF_CGROUP_UDP6_RECVMSG = 0x14
|
||||||
BPF_HDR_START_MAC = 0x0
|
BPF_CGROUP_GETSOCKOPT = 0x15
|
||||||
BPF_HDR_START_NET = 0x1
|
BPF_CGROUP_SETSOCKOPT = 0x16
|
||||||
BPF_LWT_ENCAP_SEG6 = 0x0
|
BPF_TRACE_RAW_TP = 0x17
|
||||||
BPF_LWT_ENCAP_SEG6_INLINE = 0x1
|
BPF_TRACE_FENTRY = 0x18
|
||||||
BPF_LWT_ENCAP_IP = 0x2
|
BPF_TRACE_FEXIT = 0x19
|
||||||
BPF_OK = 0x0
|
BPF_MODIFY_RETURN = 0x1a
|
||||||
BPF_DROP = 0x2
|
BPF_LSM_MAC = 0x1b
|
||||||
BPF_REDIRECT = 0x7
|
BPF_ANY = 0x0
|
||||||
BPF_LWT_REROUTE = 0x80
|
BPF_NOEXIST = 0x1
|
||||||
BPF_SOCK_OPS_VOID = 0x0
|
BPF_EXIST = 0x2
|
||||||
BPF_SOCK_OPS_TIMEOUT_INIT = 0x1
|
BPF_F_LOCK = 0x4
|
||||||
BPF_SOCK_OPS_RWND_INIT = 0x2
|
BPF_F_NO_PREALLOC = 0x1
|
||||||
BPF_SOCK_OPS_TCP_CONNECT_CB = 0x3
|
BPF_F_NO_COMMON_LRU = 0x2
|
||||||
BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB = 0x4
|
BPF_F_NUMA_NODE = 0x4
|
||||||
BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB = 0x5
|
BPF_F_RDONLY = 0x8
|
||||||
BPF_SOCK_OPS_NEEDS_ECN = 0x6
|
BPF_F_WRONLY = 0x10
|
||||||
BPF_SOCK_OPS_BASE_RTT = 0x7
|
BPF_F_STACK_BUILD_ID = 0x20
|
||||||
BPF_SOCK_OPS_RTO_CB = 0x8
|
BPF_F_ZERO_SEED = 0x40
|
||||||
BPF_SOCK_OPS_RETRANS_CB = 0x9
|
BPF_F_RDONLY_PROG = 0x80
|
||||||
BPF_SOCK_OPS_STATE_CB = 0xa
|
BPF_F_WRONLY_PROG = 0x100
|
||||||
BPF_SOCK_OPS_TCP_LISTEN_CB = 0xb
|
BPF_F_CLONE = 0x200
|
||||||
BPF_SOCK_OPS_RTT_CB = 0xc
|
BPF_F_MMAPABLE = 0x400
|
||||||
BPF_TCP_ESTABLISHED = 0x1
|
BPF_STACK_BUILD_ID_EMPTY = 0x0
|
||||||
BPF_TCP_SYN_SENT = 0x2
|
BPF_STACK_BUILD_ID_VALID = 0x1
|
||||||
BPF_TCP_SYN_RECV = 0x3
|
BPF_STACK_BUILD_ID_IP = 0x2
|
||||||
BPF_TCP_FIN_WAIT1 = 0x4
|
BPF_F_RECOMPUTE_CSUM = 0x1
|
||||||
BPF_TCP_FIN_WAIT2 = 0x5
|
BPF_F_INVALIDATE_HASH = 0x2
|
||||||
BPF_TCP_TIME_WAIT = 0x6
|
BPF_F_HDR_FIELD_MASK = 0xf
|
||||||
BPF_TCP_CLOSE = 0x7
|
BPF_F_PSEUDO_HDR = 0x10
|
||||||
BPF_TCP_CLOSE_WAIT = 0x8
|
BPF_F_MARK_MANGLED_0 = 0x20
|
||||||
BPF_TCP_LAST_ACK = 0x9
|
BPF_F_MARK_ENFORCE = 0x40
|
||||||
BPF_TCP_LISTEN = 0xa
|
BPF_F_INGRESS = 0x1
|
||||||
BPF_TCP_CLOSING = 0xb
|
BPF_F_TUNINFO_IPV6 = 0x1
|
||||||
BPF_TCP_NEW_SYN_RECV = 0xc
|
BPF_F_SKIP_FIELD_MASK = 0xff
|
||||||
BPF_TCP_MAX_STATES = 0xd
|
BPF_F_USER_STACK = 0x100
|
||||||
BPF_FIB_LKUP_RET_SUCCESS = 0x0
|
BPF_F_FAST_STACK_CMP = 0x200
|
||||||
BPF_FIB_LKUP_RET_BLACKHOLE = 0x1
|
BPF_F_REUSE_STACKID = 0x400
|
||||||
BPF_FIB_LKUP_RET_UNREACHABLE = 0x2
|
BPF_F_USER_BUILD_ID = 0x800
|
||||||
BPF_FIB_LKUP_RET_PROHIBIT = 0x3
|
BPF_F_ZERO_CSUM_TX = 0x2
|
||||||
BPF_FIB_LKUP_RET_NOT_FWDED = 0x4
|
BPF_F_DONT_FRAGMENT = 0x4
|
||||||
BPF_FIB_LKUP_RET_FWD_DISABLED = 0x5
|
BPF_F_SEQ_NUMBER = 0x8
|
||||||
BPF_FIB_LKUP_RET_UNSUPP_LWT = 0x6
|
BPF_F_INDEX_MASK = 0xffffffff
|
||||||
BPF_FIB_LKUP_RET_NO_NEIGH = 0x7
|
BPF_F_CURRENT_CPU = 0xffffffff
|
||||||
BPF_FIB_LKUP_RET_FRAG_NEEDED = 0x8
|
BPF_F_CTXLEN_MASK = 0xfffff00000000
|
||||||
BPF_FD_TYPE_RAW_TRACEPOINT = 0x0
|
BPF_F_CURRENT_NETNS = -0x1
|
||||||
BPF_FD_TYPE_TRACEPOINT = 0x1
|
BPF_F_ADJ_ROOM_FIXED_GSO = 0x1
|
||||||
BPF_FD_TYPE_KPROBE = 0x2
|
BPF_F_ADJ_ROOM_ENCAP_L3_IPV4 = 0x2
|
||||||
BPF_FD_TYPE_KRETPROBE = 0x3
|
BPF_F_ADJ_ROOM_ENCAP_L3_IPV6 = 0x4
|
||||||
BPF_FD_TYPE_UPROBE = 0x4
|
BPF_F_ADJ_ROOM_ENCAP_L4_GRE = 0x8
|
||||||
BPF_FD_TYPE_URETPROBE = 0x5
|
BPF_F_ADJ_ROOM_ENCAP_L4_UDP = 0x10
|
||||||
|
BPF_ADJ_ROOM_ENCAP_L2_MASK = 0xff
|
||||||
|
BPF_ADJ_ROOM_ENCAP_L2_SHIFT = 0x38
|
||||||
|
BPF_F_SYSCTL_BASE_NAME = 0x1
|
||||||
|
BPF_SK_STORAGE_GET_F_CREATE = 0x1
|
||||||
|
BPF_F_GET_BRANCH_RECORDS_SIZE = 0x1
|
||||||
|
BPF_ADJ_ROOM_NET = 0x0
|
||||||
|
BPF_ADJ_ROOM_MAC = 0x1
|
||||||
|
BPF_HDR_START_MAC = 0x0
|
||||||
|
BPF_HDR_START_NET = 0x1
|
||||||
|
BPF_LWT_ENCAP_SEG6 = 0x0
|
||||||
|
BPF_LWT_ENCAP_SEG6_INLINE = 0x1
|
||||||
|
BPF_LWT_ENCAP_IP = 0x2
|
||||||
|
BPF_OK = 0x0
|
||||||
|
BPF_DROP = 0x2
|
||||||
|
BPF_REDIRECT = 0x7
|
||||||
|
BPF_LWT_REROUTE = 0x80
|
||||||
|
BPF_SOCK_OPS_RTO_CB_FLAG = 0x1
|
||||||
|
BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2
|
||||||
|
BPF_SOCK_OPS_STATE_CB_FLAG = 0x4
|
||||||
|
BPF_SOCK_OPS_RTT_CB_FLAG = 0x8
|
||||||
|
BPF_SOCK_OPS_ALL_CB_FLAGS = 0xf
|
||||||
|
BPF_SOCK_OPS_VOID = 0x0
|
||||||
|
BPF_SOCK_OPS_TIMEOUT_INIT = 0x1
|
||||||
|
BPF_SOCK_OPS_RWND_INIT = 0x2
|
||||||
|
BPF_SOCK_OPS_TCP_CONNECT_CB = 0x3
|
||||||
|
BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB = 0x4
|
||||||
|
BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB = 0x5
|
||||||
|
BPF_SOCK_OPS_NEEDS_ECN = 0x6
|
||||||
|
BPF_SOCK_OPS_BASE_RTT = 0x7
|
||||||
|
BPF_SOCK_OPS_RTO_CB = 0x8
|
||||||
|
BPF_SOCK_OPS_RETRANS_CB = 0x9
|
||||||
|
BPF_SOCK_OPS_STATE_CB = 0xa
|
||||||
|
BPF_SOCK_OPS_TCP_LISTEN_CB = 0xb
|
||||||
|
BPF_SOCK_OPS_RTT_CB = 0xc
|
||||||
|
BPF_TCP_ESTABLISHED = 0x1
|
||||||
|
BPF_TCP_SYN_SENT = 0x2
|
||||||
|
BPF_TCP_SYN_RECV = 0x3
|
||||||
|
BPF_TCP_FIN_WAIT1 = 0x4
|
||||||
|
BPF_TCP_FIN_WAIT2 = 0x5
|
||||||
|
BPF_TCP_TIME_WAIT = 0x6
|
||||||
|
BPF_TCP_CLOSE = 0x7
|
||||||
|
BPF_TCP_CLOSE_WAIT = 0x8
|
||||||
|
BPF_TCP_LAST_ACK = 0x9
|
||||||
|
BPF_TCP_LISTEN = 0xa
|
||||||
|
BPF_TCP_CLOSING = 0xb
|
||||||
|
BPF_TCP_NEW_SYN_RECV = 0xc
|
||||||
|
BPF_TCP_MAX_STATES = 0xd
|
||||||
|
TCP_BPF_IW = 0x3e9
|
||||||
|
TCP_BPF_SNDCWND_CLAMP = 0x3ea
|
||||||
|
BPF_DEVCG_ACC_MKNOD = 0x1
|
||||||
|
BPF_DEVCG_ACC_READ = 0x2
|
||||||
|
BPF_DEVCG_ACC_WRITE = 0x4
|
||||||
|
BPF_DEVCG_DEV_BLOCK = 0x1
|
||||||
|
BPF_DEVCG_DEV_CHAR = 0x2
|
||||||
|
BPF_FIB_LOOKUP_DIRECT = 0x1
|
||||||
|
BPF_FIB_LOOKUP_OUTPUT = 0x2
|
||||||
|
BPF_FIB_LKUP_RET_SUCCESS = 0x0
|
||||||
|
BPF_FIB_LKUP_RET_BLACKHOLE = 0x1
|
||||||
|
BPF_FIB_LKUP_RET_UNREACHABLE = 0x2
|
||||||
|
BPF_FIB_LKUP_RET_PROHIBIT = 0x3
|
||||||
|
BPF_FIB_LKUP_RET_NOT_FWDED = 0x4
|
||||||
|
BPF_FIB_LKUP_RET_FWD_DISABLED = 0x5
|
||||||
|
BPF_FIB_LKUP_RET_UNSUPP_LWT = 0x6
|
||||||
|
BPF_FIB_LKUP_RET_NO_NEIGH = 0x7
|
||||||
|
BPF_FIB_LKUP_RET_FRAG_NEEDED = 0x8
|
||||||
|
BPF_FD_TYPE_RAW_TRACEPOINT = 0x0
|
||||||
|
BPF_FD_TYPE_TRACEPOINT = 0x1
|
||||||
|
BPF_FD_TYPE_KPROBE = 0x2
|
||||||
|
BPF_FD_TYPE_KRETPROBE = 0x3
|
||||||
|
BPF_FD_TYPE_UPROBE = 0x4
|
||||||
|
BPF_FD_TYPE_URETPROBE = 0x5
|
||||||
|
BPF_FLOW_DISSECTOR_F_PARSE_1ST_FRAG = 0x1
|
||||||
|
BPF_FLOW_DISSECTOR_F_STOP_AT_FLOW_LABEL = 0x2
|
||||||
|
BPF_FLOW_DISSECTOR_F_STOP_AT_ENCAP = 0x4
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -2200,7 +2279,7 @@ const (
|
||||||
DEVLINK_CMD_DPIPE_ENTRIES_GET = 0x20
|
DEVLINK_CMD_DPIPE_ENTRIES_GET = 0x20
|
||||||
DEVLINK_CMD_DPIPE_HEADERS_GET = 0x21
|
DEVLINK_CMD_DPIPE_HEADERS_GET = 0x21
|
||||||
DEVLINK_CMD_DPIPE_TABLE_COUNTERS_SET = 0x22
|
DEVLINK_CMD_DPIPE_TABLE_COUNTERS_SET = 0x22
|
||||||
DEVLINK_CMD_MAX = 0x44
|
DEVLINK_CMD_MAX = 0x48
|
||||||
DEVLINK_PORT_TYPE_NOTSET = 0x0
|
DEVLINK_PORT_TYPE_NOTSET = 0x0
|
||||||
DEVLINK_PORT_TYPE_AUTO = 0x1
|
DEVLINK_PORT_TYPE_AUTO = 0x1
|
||||||
DEVLINK_PORT_TYPE_ETH = 0x2
|
DEVLINK_PORT_TYPE_ETH = 0x2
|
||||||
|
@ -2280,7 +2359,7 @@ const (
|
||||||
DEVLINK_ATTR_DPIPE_FIELD_MAPPING_TYPE = 0x3c
|
DEVLINK_ATTR_DPIPE_FIELD_MAPPING_TYPE = 0x3c
|
||||||
DEVLINK_ATTR_PAD = 0x3d
|
DEVLINK_ATTR_PAD = 0x3d
|
||||||
DEVLINK_ATTR_ESWITCH_ENCAP_MODE = 0x3e
|
DEVLINK_ATTR_ESWITCH_ENCAP_MODE = 0x3e
|
||||||
DEVLINK_ATTR_MAX = 0x8c
|
DEVLINK_ATTR_MAX = 0x90
|
||||||
DEVLINK_DPIPE_FIELD_MAPPING_TYPE_NONE = 0x0
|
DEVLINK_DPIPE_FIELD_MAPPING_TYPE_NONE = 0x0
|
||||||
DEVLINK_DPIPE_FIELD_MAPPING_TYPE_IFINDEX = 0x1
|
DEVLINK_DPIPE_FIELD_MAPPING_TYPE_IFINDEX = 0x1
|
||||||
DEVLINK_DPIPE_MATCH_TYPE_FIELD_EXACT = 0x0
|
DEVLINK_DPIPE_MATCH_TYPE_FIELD_EXACT = 0x0
|
||||||
|
|
29
vendor/golang.org/x/sys/windows/dll_windows.go
generated
vendored
29
vendor/golang.org/x/sys/windows/dll_windows.go
generated
vendored
|
@ -104,6 +104,35 @@ func (d *DLL) MustFindProc(name string) *Proc {
|
||||||
return p
|
return p
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FindProcByOrdinal searches DLL d for procedure by ordinal and returns *Proc
|
||||||
|
// if found. It returns an error if search fails.
|
||||||
|
func (d *DLL) FindProcByOrdinal(ordinal uintptr) (proc *Proc, err error) {
|
||||||
|
a, e := GetProcAddressByOrdinal(d.Handle, ordinal)
|
||||||
|
name := "#" + itoa(int(ordinal))
|
||||||
|
if e != nil {
|
||||||
|
return nil, &DLLError{
|
||||||
|
Err: e,
|
||||||
|
ObjName: name,
|
||||||
|
Msg: "Failed to find " + name + " procedure in " + d.Name + ": " + e.Error(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
p := &Proc{
|
||||||
|
Dll: d,
|
||||||
|
Name: name,
|
||||||
|
addr: a,
|
||||||
|
}
|
||||||
|
return p, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// MustFindProcByOrdinal is like FindProcByOrdinal but panics if search fails.
|
||||||
|
func (d *DLL) MustFindProcByOrdinal(ordinal uintptr) *Proc {
|
||||||
|
p, e := d.FindProcByOrdinal(ordinal)
|
||||||
|
if e != nil {
|
||||||
|
panic(e)
|
||||||
|
}
|
||||||
|
return p
|
||||||
|
}
|
||||||
|
|
||||||
// Release unloads DLL d from memory.
|
// Release unloads DLL d from memory.
|
||||||
func (d *DLL) Release() (err error) {
|
func (d *DLL) Release() (err error) {
|
||||||
return FreeLibrary(d.Handle)
|
return FreeLibrary(d.Handle)
|
||||||
|
|
11
vendor/golang.org/x/sys/windows/env_windows.go
generated
vendored
11
vendor/golang.org/x/sys/windows/env_windows.go
generated
vendored
|
@ -8,7 +8,6 @@ package windows
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"syscall"
|
"syscall"
|
||||||
"unicode/utf16"
|
|
||||||
"unsafe"
|
"unsafe"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -40,17 +39,11 @@ func (token Token) Environ(inheritExisting bool) (env []string, err error) {
|
||||||
defer DestroyEnvironmentBlock(block)
|
defer DestroyEnvironmentBlock(block)
|
||||||
blockp := uintptr(unsafe.Pointer(block))
|
blockp := uintptr(unsafe.Pointer(block))
|
||||||
for {
|
for {
|
||||||
entry := (*[(1 << 30) - 1]uint16)(unsafe.Pointer(blockp))[:]
|
entry := UTF16PtrToString((*uint16)(unsafe.Pointer(blockp)))
|
||||||
for i, v := range entry {
|
|
||||||
if v == 0 {
|
|
||||||
entry = entry[:i]
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if len(entry) == 0 {
|
if len(entry) == 0 {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
env = append(env, string(utf16.Decode(entry)))
|
env = append(env, entry)
|
||||||
blockp += 2 * (uintptr(len(entry)) + 1)
|
blockp += 2 * (uintptr(len(entry)) + 1)
|
||||||
}
|
}
|
||||||
return env, nil
|
return env, nil
|
||||||
|
|
20
vendor/golang.org/x/sys/windows/security_windows.go
generated
vendored
20
vendor/golang.org/x/sys/windows/security_windows.go
generated
vendored
|
@ -7,6 +7,8 @@ package windows
|
||||||
import (
|
import (
|
||||||
"syscall"
|
"syscall"
|
||||||
"unsafe"
|
"unsafe"
|
||||||
|
|
||||||
|
"golang.org/x/sys/internal/unsafeheader"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -1229,7 +1231,7 @@ func (sd *SECURITY_DESCRIPTOR) String() string {
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
defer LocalFree(Handle(unsafe.Pointer(sddl)))
|
defer LocalFree(Handle(unsafe.Pointer(sddl)))
|
||||||
return UTF16ToString((*[(1 << 30) - 1]uint16)(unsafe.Pointer(sddl))[:])
|
return UTF16PtrToString(sddl)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ToAbsolute converts a self-relative security descriptor into an absolute one.
|
// ToAbsolute converts a self-relative security descriptor into an absolute one.
|
||||||
|
@ -1307,9 +1309,17 @@ func (absoluteSD *SECURITY_DESCRIPTOR) ToSelfRelative() (selfRelativeSD *SECURIT
|
||||||
}
|
}
|
||||||
|
|
||||||
func (selfRelativeSD *SECURITY_DESCRIPTOR) copySelfRelativeSecurityDescriptor() *SECURITY_DESCRIPTOR {
|
func (selfRelativeSD *SECURITY_DESCRIPTOR) copySelfRelativeSecurityDescriptor() *SECURITY_DESCRIPTOR {
|
||||||
sdBytes := make([]byte, selfRelativeSD.Length())
|
sdLen := (int)(selfRelativeSD.Length())
|
||||||
copy(sdBytes, (*[(1 << 31) - 1]byte)(unsafe.Pointer(selfRelativeSD))[:len(sdBytes)])
|
|
||||||
return (*SECURITY_DESCRIPTOR)(unsafe.Pointer(&sdBytes[0]))
|
var src []byte
|
||||||
|
h := (*unsafeheader.Slice)(unsafe.Pointer(&src))
|
||||||
|
h.Data = unsafe.Pointer(selfRelativeSD)
|
||||||
|
h.Len = sdLen
|
||||||
|
h.Cap = sdLen
|
||||||
|
|
||||||
|
dst := make([]byte, sdLen)
|
||||||
|
copy(dst, src)
|
||||||
|
return (*SECURITY_DESCRIPTOR)(unsafe.Pointer(&dst[0]))
|
||||||
}
|
}
|
||||||
|
|
||||||
// SecurityDescriptorFromString converts an SDDL string describing a security descriptor into a
|
// SecurityDescriptorFromString converts an SDDL string describing a security descriptor into a
|
||||||
|
@ -1391,6 +1401,6 @@ func ACLFromEntries(explicitEntries []EXPLICIT_ACCESS, mergedACL *ACL) (acl *ACL
|
||||||
}
|
}
|
||||||
defer LocalFree(Handle(unsafe.Pointer(winHeapACL)))
|
defer LocalFree(Handle(unsafe.Pointer(winHeapACL)))
|
||||||
aclBytes := make([]byte, winHeapACL.aclSize)
|
aclBytes := make([]byte, winHeapACL.aclSize)
|
||||||
copy(aclBytes, (*[(1 << 31) - 1]byte)(unsafe.Pointer(winHeapACL))[:len(aclBytes)])
|
copy(aclBytes, (*[(1 << 31) - 1]byte)(unsafe.Pointer(winHeapACL))[:len(aclBytes):len(aclBytes)])
|
||||||
return (*ACL)(unsafe.Pointer(&aclBytes[0])), nil
|
return (*ACL)(unsafe.Pointer(&aclBytes[0])), nil
|
||||||
}
|
}
|
||||||
|
|
40
vendor/golang.org/x/sys/windows/svc/mgr/config.go
generated
vendored
40
vendor/golang.org/x/sys/windows/svc/mgr/config.go
generated
vendored
|
@ -8,7 +8,6 @@ package mgr
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"syscall"
|
"syscall"
|
||||||
"unicode/utf16"
|
|
||||||
"unsafe"
|
"unsafe"
|
||||||
|
|
||||||
"golang.org/x/sys/windows"
|
"golang.org/x/sys/windows"
|
||||||
|
@ -46,28 +45,21 @@ type Config struct {
|
||||||
DelayedAutoStart bool // the service is started after other auto-start services are started plus a short delay
|
DelayedAutoStart bool // the service is started after other auto-start services are started plus a short delay
|
||||||
}
|
}
|
||||||
|
|
||||||
func toString(p *uint16) string {
|
|
||||||
if p == nil {
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
return syscall.UTF16ToString((*[4096]uint16)(unsafe.Pointer(p))[:])
|
|
||||||
}
|
|
||||||
|
|
||||||
func toStringSlice(ps *uint16) []string {
|
func toStringSlice(ps *uint16) []string {
|
||||||
if ps == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
r := make([]string, 0)
|
r := make([]string, 0)
|
||||||
for from, i, p := 0, 0, (*[1 << 24]uint16)(unsafe.Pointer(ps)); true; i++ {
|
p := unsafe.Pointer(ps)
|
||||||
if p[i] == 0 {
|
|
||||||
// empty string marks the end
|
for {
|
||||||
if i <= from {
|
s := windows.UTF16PtrToString((*uint16)(p))
|
||||||
break
|
if len(s) == 0 {
|
||||||
}
|
break
|
||||||
r = append(r, string(utf16.Decode(p[from:i])))
|
|
||||||
from = i + 1
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
r = append(r, s)
|
||||||
|
offset := unsafe.Sizeof(uint16(0)) * (uintptr)(len(s)+1)
|
||||||
|
p = unsafe.Pointer(uintptr(p) + offset)
|
||||||
}
|
}
|
||||||
|
|
||||||
return r
|
return r
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -110,13 +102,13 @@ func (s *Service) Config() (Config, error) {
|
||||||
ServiceType: p.ServiceType,
|
ServiceType: p.ServiceType,
|
||||||
StartType: p.StartType,
|
StartType: p.StartType,
|
||||||
ErrorControl: p.ErrorControl,
|
ErrorControl: p.ErrorControl,
|
||||||
BinaryPathName: toString(p.BinaryPathName),
|
BinaryPathName: windows.UTF16PtrToString(p.BinaryPathName),
|
||||||
LoadOrderGroup: toString(p.LoadOrderGroup),
|
LoadOrderGroup: windows.UTF16PtrToString(p.LoadOrderGroup),
|
||||||
TagId: p.TagId,
|
TagId: p.TagId,
|
||||||
Dependencies: toStringSlice(p.Dependencies),
|
Dependencies: toStringSlice(p.Dependencies),
|
||||||
ServiceStartName: toString(p.ServiceStartName),
|
ServiceStartName: windows.UTF16PtrToString(p.ServiceStartName),
|
||||||
DisplayName: toString(p.DisplayName),
|
DisplayName: windows.UTF16PtrToString(p.DisplayName),
|
||||||
Description: toString(p2.Description),
|
Description: windows.UTF16PtrToString(p2.Description),
|
||||||
DelayedAutoStart: delayedStart,
|
DelayedAutoStart: delayedStart,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
13
vendor/golang.org/x/sys/windows/svc/mgr/mgr.go
generated
vendored
13
vendor/golang.org/x/sys/windows/svc/mgr/mgr.go
generated
vendored
|
@ -17,6 +17,7 @@ import (
|
||||||
"unicode/utf16"
|
"unicode/utf16"
|
||||||
"unsafe"
|
"unsafe"
|
||||||
|
|
||||||
|
"golang.org/x/sys/internal/unsafeheader"
|
||||||
"golang.org/x/sys/windows"
|
"golang.org/x/sys/windows"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -73,7 +74,7 @@ func (m *Mgr) LockStatus() (*LockStatus, error) {
|
||||||
status := &LockStatus{
|
status := &LockStatus{
|
||||||
IsLocked: lockStatus.IsLocked != 0,
|
IsLocked: lockStatus.IsLocked != 0,
|
||||||
Age: time.Duration(lockStatus.LockDuration) * time.Second,
|
Age: time.Duration(lockStatus.LockDuration) * time.Second,
|
||||||
Owner: windows.UTF16ToString((*[(1 << 30) - 1]uint16)(unsafe.Pointer(lockStatus.LockOwner))[:]),
|
Owner: windows.UTF16PtrToString(lockStatus.LockOwner),
|
||||||
}
|
}
|
||||||
return status, nil
|
return status, nil
|
||||||
}
|
}
|
||||||
|
@ -201,10 +202,16 @@ func (m *Mgr) ListServices() ([]string, error) {
|
||||||
if servicesReturned == 0 {
|
if servicesReturned == 0 {
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
services := (*[1 << 20]windows.ENUM_SERVICE_STATUS_PROCESS)(unsafe.Pointer(&buf[0]))[:servicesReturned]
|
|
||||||
|
var services []windows.ENUM_SERVICE_STATUS_PROCESS
|
||||||
|
hdr := (*unsafeheader.Slice)(unsafe.Pointer(&services))
|
||||||
|
hdr.Data = unsafe.Pointer(&buf[0])
|
||||||
|
hdr.Len = int(servicesReturned)
|
||||||
|
hdr.Cap = int(servicesReturned)
|
||||||
|
|
||||||
var names []string
|
var names []string
|
||||||
for _, s := range services {
|
for _, s := range services {
|
||||||
name := syscall.UTF16ToString((*[1 << 20]uint16)(unsafe.Pointer(s.ServiceName))[:])
|
name := windows.UTF16PtrToString(s.ServiceName)
|
||||||
names = append(names, name)
|
names = append(names, name)
|
||||||
}
|
}
|
||||||
return names, nil
|
return names, nil
|
||||||
|
|
12
vendor/golang.org/x/sys/windows/svc/mgr/recovery.go
generated
vendored
12
vendor/golang.org/x/sys/windows/svc/mgr/recovery.go
generated
vendored
|
@ -12,6 +12,7 @@ import (
|
||||||
"time"
|
"time"
|
||||||
"unsafe"
|
"unsafe"
|
||||||
|
|
||||||
|
"golang.org/x/sys/internal/unsafeheader"
|
||||||
"golang.org/x/sys/windows"
|
"golang.org/x/sys/windows"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -68,8 +69,13 @@ func (s *Service) RecoveryActions() ([]RecoveryAction, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var actions []windows.SC_ACTION
|
||||||
|
hdr := (*unsafeheader.Slice)(unsafe.Pointer(&actions))
|
||||||
|
hdr.Data = unsafe.Pointer(p.Actions)
|
||||||
|
hdr.Len = int(p.ActionsCount)
|
||||||
|
hdr.Cap = int(p.ActionsCount)
|
||||||
|
|
||||||
var recoveryActions []RecoveryAction
|
var recoveryActions []RecoveryAction
|
||||||
actions := (*[1024]windows.SC_ACTION)(unsafe.Pointer(p.Actions))[:p.ActionsCount]
|
|
||||||
for _, action := range actions {
|
for _, action := range actions {
|
||||||
recoveryActions = append(recoveryActions, RecoveryAction{Type: int(action.Type), Delay: time.Duration(action.Delay) * time.Millisecond})
|
recoveryActions = append(recoveryActions, RecoveryAction{Type: int(action.Type), Delay: time.Duration(action.Delay) * time.Millisecond})
|
||||||
}
|
}
|
||||||
|
@ -112,7 +118,7 @@ func (s *Service) RebootMessage() (string, error) {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
p := (*windows.SERVICE_FAILURE_ACTIONS)(unsafe.Pointer(&b[0]))
|
p := (*windows.SERVICE_FAILURE_ACTIONS)(unsafe.Pointer(&b[0]))
|
||||||
return toString(p.RebootMsg), nil
|
return windows.UTF16PtrToString(p.RebootMsg), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetRecoveryCommand sets the command line of the process to execute in response to the RunCommand service controller action.
|
// SetRecoveryCommand sets the command line of the process to execute in response to the RunCommand service controller action.
|
||||||
|
@ -131,5 +137,5 @@ func (s *Service) RecoveryCommand() (string, error) {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
p := (*windows.SERVICE_FAILURE_ACTIONS)(unsafe.Pointer(&b[0]))
|
p := (*windows.SERVICE_FAILURE_ACTIONS)(unsafe.Pointer(&b[0]))
|
||||||
return toString(p.Command), nil
|
return windows.UTF16PtrToString(p.Command), nil
|
||||||
}
|
}
|
||||||
|
|
7
vendor/golang.org/x/sys/windows/svc/security.go
generated
vendored
7
vendor/golang.org/x/sys/windows/svc/security.go
generated
vendored
|
@ -7,8 +7,6 @@
|
||||||
package svc
|
package svc
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"unsafe"
|
|
||||||
|
|
||||||
"golang.org/x/sys/windows"
|
"golang.org/x/sys/windows"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -48,9 +46,8 @@ func IsAnInteractiveSession() (bool, error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, err
|
return false, err
|
||||||
}
|
}
|
||||||
p := unsafe.Pointer(&gs.Groups[0])
|
|
||||||
groups := (*[2 << 20]windows.SIDAndAttributes)(p)[:gs.GroupCount]
|
for _, g := range gs.AllGroups() {
|
||||||
for _, g := range groups {
|
|
||||||
if windows.EqualSid(g.Sid, interSid) {
|
if windows.EqualSid(g.Sid, interSid) {
|
||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
|
|
11
vendor/golang.org/x/sys/windows/svc/service.go
generated
vendored
11
vendor/golang.org/x/sys/windows/svc/service.go
generated
vendored
|
@ -14,6 +14,7 @@ import (
|
||||||
"syscall"
|
"syscall"
|
||||||
"unsafe"
|
"unsafe"
|
||||||
|
|
||||||
|
"golang.org/x/sys/internal/unsafeheader"
|
||||||
"golang.org/x/sys/windows"
|
"golang.org/x/sys/windows"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -224,10 +225,16 @@ const (
|
||||||
func (s *service) run() {
|
func (s *service) run() {
|
||||||
s.goWaits.Wait()
|
s.goWaits.Wait()
|
||||||
s.h = windows.Handle(ssHandle)
|
s.h = windows.Handle(ssHandle)
|
||||||
argv := (*[100]*int16)(unsafe.Pointer(sArgv))[:sArgc]
|
|
||||||
|
var argv []*uint16
|
||||||
|
hdr := (*unsafeheader.Slice)(unsafe.Pointer(&argv))
|
||||||
|
hdr.Data = unsafe.Pointer(sArgv)
|
||||||
|
hdr.Len = int(sArgc)
|
||||||
|
hdr.Cap = int(sArgc)
|
||||||
|
|
||||||
args := make([]string, len(argv))
|
args := make([]string, len(argv))
|
||||||
for i, a := range argv {
|
for i, a := range argv {
|
||||||
args[i] = syscall.UTF16ToString((*[1 << 20]uint16)(unsafe.Pointer(a))[:])
|
args[i] = windows.UTF16PtrToString(a)
|
||||||
}
|
}
|
||||||
|
|
||||||
cmdsToHandler := make(chan ChangeRequest)
|
cmdsToHandler := make(chan ChangeRequest)
|
||||||
|
|
37
vendor/golang.org/x/sys/windows/syscall_windows.go
generated
vendored
37
vendor/golang.org/x/sys/windows/syscall_windows.go
generated
vendored
|
@ -13,6 +13,8 @@ import (
|
||||||
"time"
|
"time"
|
||||||
"unicode/utf16"
|
"unicode/utf16"
|
||||||
"unsafe"
|
"unsafe"
|
||||||
|
|
||||||
|
"golang.org/x/sys/internal/unsafeheader"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Handle uintptr
|
type Handle uintptr
|
||||||
|
@ -117,6 +119,32 @@ func UTF16PtrFromString(s string) (*uint16, error) {
|
||||||
return &a[0], nil
|
return &a[0], nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// UTF16PtrToString takes a pointer to a UTF-16 sequence and returns the corresponding UTF-8 encoded string.
|
||||||
|
// If the pointer is nil, this returns the empty string. This assumes that the UTF-16 sequence is terminated
|
||||||
|
// at a zero word; if the zero word is not present, the program may crash.
|
||||||
|
func UTF16PtrToString(p *uint16) string {
|
||||||
|
if p == nil {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
if *p == 0 {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
// Find NUL terminator.
|
||||||
|
n := 0
|
||||||
|
for ptr := unsafe.Pointer(p); *(*uint16)(ptr) != 0; n++ {
|
||||||
|
ptr = unsafe.Pointer(uintptr(ptr) + unsafe.Sizeof(*p))
|
||||||
|
}
|
||||||
|
|
||||||
|
var s []uint16
|
||||||
|
h := (*unsafeheader.Slice)(unsafe.Pointer(&s))
|
||||||
|
h.Data = unsafe.Pointer(p)
|
||||||
|
h.Len = n
|
||||||
|
h.Cap = n
|
||||||
|
|
||||||
|
return string(utf16.Decode(s))
|
||||||
|
}
|
||||||
|
|
||||||
func Getpagesize() int { return 4096 }
|
func Getpagesize() int { return 4096 }
|
||||||
|
|
||||||
// NewCallback converts a Go function to a function pointer conforming to the stdcall calling convention.
|
// NewCallback converts a Go function to a function pointer conforming to the stdcall calling convention.
|
||||||
|
@ -1181,7 +1209,12 @@ type IPv6Mreq struct {
|
||||||
Interface uint32
|
Interface uint32
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetsockoptInt(fd Handle, level, opt int) (int, error) { return -1, syscall.EWINDOWS }
|
func GetsockoptInt(fd Handle, level, opt int) (int, error) {
|
||||||
|
v := int32(0)
|
||||||
|
l := int32(unsafe.Sizeof(v))
|
||||||
|
err := Getsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(&v)), &l)
|
||||||
|
return int(v), err
|
||||||
|
}
|
||||||
|
|
||||||
func SetsockoptLinger(fd Handle, level, opt int, l *Linger) (err error) {
|
func SetsockoptLinger(fd Handle, level, opt int, l *Linger) (err error) {
|
||||||
sys := sysLinger{Onoff: uint16(l.Onoff), Linger: uint16(l.Linger)}
|
sys := sysLinger{Onoff: uint16(l.Onoff), Linger: uint16(l.Linger)}
|
||||||
|
@ -1378,7 +1411,7 @@ func (t Token) KnownFolderPath(folderID *KNOWNFOLDERID, flags uint32) (string, e
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
defer CoTaskMemFree(unsafe.Pointer(p))
|
defer CoTaskMemFree(unsafe.Pointer(p))
|
||||||
return UTF16ToString((*[(1 << 30) - 1]uint16)(unsafe.Pointer(p))[:]), nil
|
return UTF16PtrToString(p), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// RtlGetVersion returns the version of the underlying operating system, ignoring
|
// RtlGetVersion returns the version of the underlying operating system, ignoring
|
||||||
|
|
7
vendor/modules.txt
vendored
7
vendor/modules.txt
vendored
|
@ -55,7 +55,7 @@ github.com/powerman/check
|
||||||
# github.com/smartystreets/goconvey v1.6.4
|
# github.com/smartystreets/goconvey v1.6.4
|
||||||
github.com/smartystreets/goconvey/convey/gotest
|
github.com/smartystreets/goconvey/convey/gotest
|
||||||
github.com/smartystreets/goconvey/convey/reporting
|
github.com/smartystreets/goconvey/convey/reporting
|
||||||
# golang.org/x/crypto v0.0.0-20200423211502-4bdfaf469ed5
|
# golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37
|
||||||
golang.org/x/crypto/blake2b
|
golang.org/x/crypto/blake2b
|
||||||
golang.org/x/crypto/curve25519
|
golang.org/x/crypto/curve25519
|
||||||
golang.org/x/crypto/ed25519
|
golang.org/x/crypto/ed25519
|
||||||
|
@ -65,7 +65,7 @@ golang.org/x/crypto/nacl/box
|
||||||
golang.org/x/crypto/nacl/secretbox
|
golang.org/x/crypto/nacl/secretbox
|
||||||
golang.org/x/crypto/poly1305
|
golang.org/x/crypto/poly1305
|
||||||
golang.org/x/crypto/salsa20/salsa
|
golang.org/x/crypto/salsa20/salsa
|
||||||
# golang.org/x/net v0.0.0-20200425230154-ff2c4b7c35a0
|
# golang.org/x/net v0.0.0-20200602114024-627f9648deb9
|
||||||
golang.org/x/net/bpf
|
golang.org/x/net/bpf
|
||||||
golang.org/x/net/http/httpguts
|
golang.org/x/net/http/httpguts
|
||||||
golang.org/x/net/http2
|
golang.org/x/net/http2
|
||||||
|
@ -77,8 +77,9 @@ golang.org/x/net/internal/socks
|
||||||
golang.org/x/net/ipv4
|
golang.org/x/net/ipv4
|
||||||
golang.org/x/net/ipv6
|
golang.org/x/net/ipv6
|
||||||
golang.org/x/net/proxy
|
golang.org/x/net/proxy
|
||||||
# golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f
|
# golang.org/x/sys v0.0.0-20200602100848-8d3cce7afc34
|
||||||
golang.org/x/sys/cpu
|
golang.org/x/sys/cpu
|
||||||
|
golang.org/x/sys/internal/unsafeheader
|
||||||
golang.org/x/sys/unix
|
golang.org/x/sys/unix
|
||||||
golang.org/x/sys/windows
|
golang.org/x/sys/windows
|
||||||
golang.org/x/sys/windows/registry
|
golang.org/x/sys/windows/registry
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue