Merge pull request #19514 from hashicorp/jbardin/computed-nil
expression with a computed nil
This commit is contained in:
commit
92e83e3bcf
|
@ -26,6 +26,11 @@ func testDataSource() *schema.Resource {
|
||||||
Type: schema.TypeString,
|
Type: schema.TypeString,
|
||||||
Computed: true,
|
Computed: true,
|
||||||
},
|
},
|
||||||
|
// this attribute is computed, but never set by the provider
|
||||||
|
"nil": {
|
||||||
|
Type: schema.TypeString,
|
||||||
|
Computed: true,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -155,3 +155,37 @@ data "test_data_source" "baz" {
|
||||||
input = "${data.test_data_source.bar.*.output[count.index]}"
|
input = "${data.test_data_source.bar.*.output[count.index]}"
|
||||||
}
|
}
|
||||||
`
|
`
|
||||||
|
|
||||||
|
func TestDataSource_nilComputedValues(t *testing.T) {
|
||||||
|
check := func(s *terraform.State) error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
resource.UnitTest(t, resource.TestCase{
|
||||||
|
Providers: testAccProviders,
|
||||||
|
Steps: []resource.TestStep{
|
||||||
|
{
|
||||||
|
Check: check,
|
||||||
|
Config: `
|
||||||
|
variable "index" {
|
||||||
|
default = "d"
|
||||||
|
}
|
||||||
|
|
||||||
|
locals {
|
||||||
|
name = {
|
||||||
|
a = "something"
|
||||||
|
b = "else"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
data "test_data_source" "x" {
|
||||||
|
input = "${lookup(local.name, var.index, local.name["a"])}"
|
||||||
|
}
|
||||||
|
|
||||||
|
data "test_data_source" "y" {
|
||||||
|
input = data.test_data_source.x.nil == "something" ? "something" : "else"
|
||||||
|
}`,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
15
go.mod
15
go.mod
|
@ -73,7 +73,7 @@ require (
|
||||||
github.com/hashicorp/go-version v0.0.0-20180322230233-23480c066577
|
github.com/hashicorp/go-version v0.0.0-20180322230233-23480c066577
|
||||||
github.com/hashicorp/golang-lru v0.5.0 // indirect
|
github.com/hashicorp/golang-lru v0.5.0 // indirect
|
||||||
github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f
|
github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f
|
||||||
github.com/hashicorp/hcl2 v0.0.0-20181126233546-67424e43b184
|
github.com/hashicorp/hcl2 v0.0.0-20181129202151-4d82d52bfa49
|
||||||
github.com/hashicorp/hil v0.0.0-20170627220502-fa9f258a9250
|
github.com/hashicorp/hil v0.0.0-20170627220502-fa9f258a9250
|
||||||
github.com/hashicorp/logutils v0.0.0-20150609070431-0dc08b1671f3
|
github.com/hashicorp/logutils v0.0.0-20150609070431-0dc08b1671f3
|
||||||
github.com/hashicorp/memberlist v0.1.0 // indirect
|
github.com/hashicorp/memberlist v0.1.0 // indirect
|
||||||
|
@ -115,7 +115,6 @@ require (
|
||||||
github.com/pkg/errors v0.0.0-20170505043639-c605e284fe17 // indirect
|
github.com/pkg/errors v0.0.0-20170505043639-c605e284fe17 // indirect
|
||||||
github.com/posener/complete v0.0.0-20171219111128-6bee943216c8
|
github.com/posener/complete v0.0.0-20171219111128-6bee943216c8
|
||||||
github.com/satori/go.uuid v0.0.0-20160927100844-b061729afc07 // indirect
|
github.com/satori/go.uuid v0.0.0-20160927100844-b061729afc07 // indirect
|
||||||
github.com/satori/uuid v0.0.0-20160927100844-b061729afc07 // indirect
|
|
||||||
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 // indirect
|
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 // indirect
|
||||||
github.com/sirupsen/logrus v1.1.1 // indirect
|
github.com/sirupsen/logrus v1.1.1 // indirect
|
||||||
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d // indirect
|
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d // indirect
|
||||||
|
@ -129,21 +128,21 @@ require (
|
||||||
github.com/tmc/grpc-websocket-proxy v0.0.0-20171017195756-830351dc03c6 // indirect
|
github.com/tmc/grpc-websocket-proxy v0.0.0-20171017195756-830351dc03c6 // indirect
|
||||||
github.com/ugorji/go v0.0.0-20180813092308-00b869d2f4a5 // indirect
|
github.com/ugorji/go v0.0.0-20180813092308-00b869d2f4a5 // indirect
|
||||||
github.com/ulikunitz/xz v0.5.4 // indirect
|
github.com/ulikunitz/xz v0.5.4 // indirect
|
||||||
github.com/vmihailenco/msgpack v4.0.0+incompatible // indirect
|
github.com/vmihailenco/msgpack v4.0.1+incompatible // indirect
|
||||||
github.com/xanzy/ssh-agent v0.2.0
|
github.com/xanzy/ssh-agent v0.2.0
|
||||||
github.com/xiang90/probing v0.0.0-20160813154853-07dd2e8dfe18 // indirect
|
github.com/xiang90/probing v0.0.0-20160813154853-07dd2e8dfe18 // indirect
|
||||||
github.com/xlab/treeprint v0.0.0-20161029104018-1d6e34225557
|
github.com/xlab/treeprint v0.0.0-20161029104018-1d6e34225557
|
||||||
github.com/zclconf/go-cty v0.0.0-20181017232614-01c5aba823a6
|
github.com/zclconf/go-cty v0.0.0-20181129180422-88fbe721e0f8
|
||||||
go.opencensus.io v0.17.0 // indirect
|
go.opencensus.io v0.17.0 // indirect
|
||||||
go.uber.org/atomic v1.3.2 // indirect
|
go.uber.org/atomic v1.3.2 // indirect
|
||||||
go.uber.org/multierr v1.1.0 // indirect
|
go.uber.org/multierr v1.1.0 // indirect
|
||||||
go.uber.org/zap v1.9.1 // indirect
|
go.uber.org/zap v1.9.1 // indirect
|
||||||
golang.org/x/crypto v0.0.0-20181112202954-3d3f9f413869
|
golang.org/x/crypto v0.0.0-20181127143415-eb0de9b17e85
|
||||||
golang.org/x/net v0.0.0-20181017193950-04a2e542c03f
|
golang.org/x/net v0.0.0-20181129055619-fae4c4e3ad76
|
||||||
golang.org/x/oauth2 v0.0.0-20181003184128-c57b0facaced
|
golang.org/x/oauth2 v0.0.0-20181003184128-c57b0facaced
|
||||||
golang.org/x/sys v0.0.0-20180925112736-b09afc3d579e // indirect
|
golang.org/x/sys v0.0.0-20181128092732-4ed8d59d0b35 // indirect
|
||||||
google.golang.org/api v0.0.0-20181015145326-625cd1887957
|
google.golang.org/api v0.0.0-20181015145326-625cd1887957
|
||||||
google.golang.org/appengine v1.2.0 // indirect
|
google.golang.org/appengine v1.3.0 // indirect
|
||||||
google.golang.org/grpc v1.14.0
|
google.golang.org/grpc v1.14.0
|
||||||
gopkg.in/vmihailenco/msgpack.v2 v2.9.1 // indirect
|
gopkg.in/vmihailenco/msgpack.v2 v2.9.1 // indirect
|
||||||
)
|
)
|
||||||
|
|
56
go.sum
56
go.sum
|
@ -3,15 +3,12 @@ cloud.google.com/go v0.15.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT
|
||||||
git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg=
|
git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg=
|
||||||
github.com/Azure/azure-sdk-for-go v21.3.0+incompatible h1:YFvAka2WKAl2xnJkYV1e1b7E2z88AgFszDzWU18ejMY=
|
github.com/Azure/azure-sdk-for-go v21.3.0+incompatible h1:YFvAka2WKAl2xnJkYV1e1b7E2z88AgFszDzWU18ejMY=
|
||||||
github.com/Azure/azure-sdk-for-go v21.3.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
|
github.com/Azure/azure-sdk-for-go v21.3.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
|
||||||
github.com/Azure/azure-sdk-for-go v22.2.2+incompatible h1:dnM65i68vx79S5ugocLMoJB6As2U1IXxa995LdjIQ28=
|
|
||||||
github.com/Azure/go-autorest v10.15.4+incompatible h1:q+DRrRdbCnkY7f2WxQBx58TwCGkEdMAK/hkZ10g0Pzk=
|
github.com/Azure/go-autorest v10.15.4+incompatible h1:q+DRrRdbCnkY7f2WxQBx58TwCGkEdMAK/hkZ10g0Pzk=
|
||||||
github.com/Azure/go-autorest v10.15.4+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24=
|
github.com/Azure/go-autorest v10.15.4+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24=
|
||||||
github.com/Azure/go-ntlmssp v0.0.0-20170803034930-c92175d54006 h1:dVyNL14dq1500JomYVzJTVi0XEcZFCYwwiNpDeCfoes=
|
github.com/Azure/go-ntlmssp v0.0.0-20170803034930-c92175d54006 h1:dVyNL14dq1500JomYVzJTVi0XEcZFCYwwiNpDeCfoes=
|
||||||
github.com/Azure/go-ntlmssp v0.0.0-20170803034930-c92175d54006/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU=
|
github.com/Azure/go-ntlmssp v0.0.0-20170803034930-c92175d54006/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU=
|
||||||
github.com/ChrisTrenkamp/goxpath v0.0.0-20170625215350-4fe035839290 h1:K9I21XUHNbYD3GNMmJBN0UKJCpdP+glftwNZ7Bo8kqY=
|
github.com/ChrisTrenkamp/goxpath v0.0.0-20170625215350-4fe035839290 h1:K9I21XUHNbYD3GNMmJBN0UKJCpdP+glftwNZ7Bo8kqY=
|
||||||
github.com/ChrisTrenkamp/goxpath v0.0.0-20170625215350-4fe035839290/go.mod h1:nuWgzSkT5PnyOd+272uUmV0dnAnAn42Mk7PiQC5VzN4=
|
github.com/ChrisTrenkamp/goxpath v0.0.0-20170625215350-4fe035839290/go.mod h1:nuWgzSkT5PnyOd+272uUmV0dnAnAn42Mk7PiQC5VzN4=
|
||||||
github.com/DHowett/go-plist v0.0.0-20180609054337-500bd5b9081b h1:WFNhl1+1ofCWWdNFEhut77cmuMXjJYYvkEVloDdaUCI=
|
|
||||||
github.com/DHowett/go-plist v0.0.0-20180609054337-500bd5b9081b/go.mod h1:5paT5ZDrOm8eAJPem2Bd+q3FTi3Gxm/U4tb2tH8YIUQ=
|
|
||||||
github.com/Unknwon/com v0.0.0-20151008135407-28b053d5a292 h1:tuQ7w+my8a8mkwN7x2TSd7OzTjkZ7rAeSyH4xncuAMI=
|
github.com/Unknwon/com v0.0.0-20151008135407-28b053d5a292 h1:tuQ7w+my8a8mkwN7x2TSd7OzTjkZ7rAeSyH4xncuAMI=
|
||||||
github.com/Unknwon/com v0.0.0-20151008135407-28b053d5a292/go.mod h1:KYCjqMOeHpNuTOiFQU6WEcTG7poCJrUs0YgyHNtn1no=
|
github.com/Unknwon/com v0.0.0-20151008135407-28b053d5a292/go.mod h1:KYCjqMOeHpNuTOiFQU6WEcTG7poCJrUs0YgyHNtn1no=
|
||||||
github.com/abdullin/seq v0.0.0-20160510034733-d5467c17e7af h1:DBNMBMuMiWYu0b+8KMJuWmfCkcxl09JwdlqwDZZ6U14=
|
github.com/abdullin/seq v0.0.0-20160510034733-d5467c17e7af h1:DBNMBMuMiWYu0b+8KMJuWmfCkcxl09JwdlqwDZZ6U14=
|
||||||
|
@ -80,6 +77,7 @@ github.com/dylanmei/iso8601 v0.1.0 h1:812NGQDBcqquTfH5Yeo7lwR0nzx/cKdsmf3qMjPURU
|
||||||
github.com/dylanmei/iso8601 v0.1.0/go.mod h1:w9KhXSgIyROl1DefbMYIE7UVSIvELTbMrCfx+QkYnoQ=
|
github.com/dylanmei/iso8601 v0.1.0/go.mod h1:w9KhXSgIyROl1DefbMYIE7UVSIvELTbMrCfx+QkYnoQ=
|
||||||
github.com/dylanmei/winrmtest v0.0.0-20170819153634-c2fbb09e6c08 h1:0bp6/GrNOrTDtSXe9YYGCwf8jp5Fb/b+4a6MTRm4qzY=
|
github.com/dylanmei/winrmtest v0.0.0-20170819153634-c2fbb09e6c08 h1:0bp6/GrNOrTDtSXe9YYGCwf8jp5Fb/b+4a6MTRm4qzY=
|
||||||
github.com/dylanmei/winrmtest v0.0.0-20170819153634-c2fbb09e6c08/go.mod h1:VBVDFSBXCIW8JaHQpI8lldSKfYaLMzP9oyq6IJ4fhzY=
|
github.com/dylanmei/winrmtest v0.0.0-20170819153634-c2fbb09e6c08/go.mod h1:VBVDFSBXCIW8JaHQpI8lldSKfYaLMzP9oyq6IJ4fhzY=
|
||||||
|
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
||||||
github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk=
|
github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk=
|
||||||
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
|
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
|
||||||
github.com/go-ini/ini v1.25.4 h1:Mujh4R/dH6YL8bxuISne3xX2+qcQ9p0IxKAP6ExWoUo=
|
github.com/go-ini/ini v1.25.4 h1:Mujh4R/dH6YL8bxuISne3xX2+qcQ9p0IxKAP6ExWoUo=
|
||||||
|
@ -124,8 +122,6 @@ github.com/hashicorp/errwrap v0.0.0-20180715044906-d6c0cd880357 h1:Rem2+U35z1QtP
|
||||||
github.com/hashicorp/errwrap v0.0.0-20180715044906-d6c0cd880357/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
|
github.com/hashicorp/errwrap v0.0.0-20180715044906-d6c0cd880357/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
|
||||||
github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA=
|
github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA=
|
||||||
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
|
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
|
||||||
github.com/hashicorp/go-azure-helpers v0.0.0-20181120094008-dd1e326c8888 h1:QdenIfqH8llhlVDlGQWVUhg+L8pDT9VteOlMstWRl+w=
|
|
||||||
github.com/hashicorp/go-azure-helpers v0.0.0-20181120094008-dd1e326c8888/go.mod h1:e+GPy2nvD+spqsdjUyw5tbo73rBbu955QBaV9GZoBEA=
|
|
||||||
github.com/hashicorp/go-azure-helpers v0.0.0-20181122151743-c51a3103be3b h1:AJjRaIeZiWlhYVf2skNYOjooaaIOcQzS94a3iSKnXKE=
|
github.com/hashicorp/go-azure-helpers v0.0.0-20181122151743-c51a3103be3b h1:AJjRaIeZiWlhYVf2skNYOjooaaIOcQzS94a3iSKnXKE=
|
||||||
github.com/hashicorp/go-azure-helpers v0.0.0-20181122151743-c51a3103be3b/go.mod h1:e+GPy2nvD+spqsdjUyw5tbo73rBbu955QBaV9GZoBEA=
|
github.com/hashicorp/go-azure-helpers v0.0.0-20181122151743-c51a3103be3b/go.mod h1:e+GPy2nvD+spqsdjUyw5tbo73rBbu955QBaV9GZoBEA=
|
||||||
github.com/hashicorp/go-checkpoint v0.0.0-20171009173528-1545e56e46de h1:XDCSythtg8aWSRSO29uwhgh7b127fWr+m5SemqjSUL8=
|
github.com/hashicorp/go-checkpoint v0.0.0-20171009173528-1545e56e46de h1:XDCSythtg8aWSRSO29uwhgh7b127fWr+m5SemqjSUL8=
|
||||||
|
@ -166,12 +162,8 @@ github.com/hashicorp/golang-lru v0.5.0 h1:CL2msUPvZTLb5O648aiLNJw3hnBxN2+1Jq8rCO
|
||||||
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
||||||
github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f h1:UdxlrJz4JOnY8W+DbLISwf2B8WXEolNRA8BGCwI9jws=
|
github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f h1:UdxlrJz4JOnY8W+DbLISwf2B8WXEolNRA8BGCwI9jws=
|
||||||
github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f/go.mod h1:oZtUIOe8dh44I2q6ScRibXws4Ajl+d+nod3AaR9vL5w=
|
github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f/go.mod h1:oZtUIOe8dh44I2q6ScRibXws4Ajl+d+nod3AaR9vL5w=
|
||||||
github.com/hashicorp/hcl2 v0.0.0-20180925175540-3f1c5474d4f7 h1:lNBI8nmNlIpLl8Lqf+9JLBmNGrU91Nlt71q7cGpZi+k=
|
github.com/hashicorp/hcl2 v0.0.0-20181129202151-4d82d52bfa49 h1:UqG3UFffzppM6DPfYORZXUzG9ETZ4RDcT+Aq3MkdrLI=
|
||||||
github.com/hashicorp/hcl2 v0.0.0-20180925175540-3f1c5474d4f7/go.mod h1:hrRmgPTdXWuNLpHcv7cRXL+ofoFsY76vDylTzH8eu3E=
|
github.com/hashicorp/hcl2 v0.0.0-20181129202151-4d82d52bfa49/go.mod h1:ShfpTh661oAaxo7VcNxg0zcZW6jvMa7Moy2oFx7e5dE=
|
||||||
github.com/hashicorp/hcl2 v0.0.0-20181123160133-f901b36da204 h1:/rUVBMdrcpWOwNw5KFhqrbMVnbgsN1zJOp5sAEx2XXQ=
|
|
||||||
github.com/hashicorp/hcl2 v0.0.0-20181123160133-f901b36da204/go.mod h1:4nBvwJRETsbpa0LQ7FbXXVFmo0Crvhya1Dmpbm7cVow=
|
|
||||||
github.com/hashicorp/hcl2 v0.0.0-20181126233546-67424e43b184 h1:cBDzEsx+Tm9vHp9WiUeBlhPazwbbKJxOiRAT+pVLuag=
|
|
||||||
github.com/hashicorp/hcl2 v0.0.0-20181126233546-67424e43b184/go.mod h1:4nBvwJRETsbpa0LQ7FbXXVFmo0Crvhya1Dmpbm7cVow=
|
|
||||||
github.com/hashicorp/hil v0.0.0-20170627220502-fa9f258a9250 h1:fooK5IvDL/KIsi4LxF/JH68nVdrBSiGNPhS2JAQjtjo=
|
github.com/hashicorp/hil v0.0.0-20170627220502-fa9f258a9250 h1:fooK5IvDL/KIsi4LxF/JH68nVdrBSiGNPhS2JAQjtjo=
|
||||||
github.com/hashicorp/hil v0.0.0-20170627220502-fa9f258a9250/go.mod h1:KHvg/R2/dPtaePb16oW4qIyzkMxXOL38xjRN64adsts=
|
github.com/hashicorp/hil v0.0.0-20170627220502-fa9f258a9250/go.mod h1:KHvg/R2/dPtaePb16oW4qIyzkMxXOL38xjRN64adsts=
|
||||||
github.com/hashicorp/logutils v0.0.0-20150609070431-0dc08b1671f3 h1:oD64EFjELI9RY9yoWlfua58r+etdnoIC871z+rr6lkA=
|
github.com/hashicorp/logutils v0.0.0-20150609070431-0dc08b1671f3 h1:oD64EFjELI9RY9yoWlfua58r+etdnoIC871z+rr6lkA=
|
||||||
|
@ -184,8 +176,10 @@ github.com/hashicorp/vault v0.0.0-20161029210149-9a60bf2a50e4 h1:SGDekHLK2IRoVS7
|
||||||
github.com/hashicorp/vault v0.0.0-20161029210149-9a60bf2a50e4/go.mod h1:KfSyffbKxoVyspOdlaGVjIuwLobi07qD1bAbosPMpP0=
|
github.com/hashicorp/vault v0.0.0-20161029210149-9a60bf2a50e4/go.mod h1:KfSyffbKxoVyspOdlaGVjIuwLobi07qD1bAbosPMpP0=
|
||||||
github.com/hashicorp/yamux v0.0.0-20160720233140-d1caa6c97c9f h1:K4RDeor/qhbs5ETM85SN8xekXkk+KkOBclNXXM8+UR0=
|
github.com/hashicorp/yamux v0.0.0-20160720233140-d1caa6c97c9f h1:K4RDeor/qhbs5ETM85SN8xekXkk+KkOBclNXXM8+UR0=
|
||||||
github.com/hashicorp/yamux v0.0.0-20160720233140-d1caa6c97c9f/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM=
|
github.com/hashicorp/yamux v0.0.0-20160720233140-d1caa6c97c9f/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM=
|
||||||
|
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
|
||||||
github.com/jen20/awspolicyequivalence v0.0.0-20170831201602-3d48364a137a h1:FyS/ubzBR5xJlnJGRTwe7GUHpJOR4ukYK3y+LFNffuA=
|
github.com/jen20/awspolicyequivalence v0.0.0-20170831201602-3d48364a137a h1:FyS/ubzBR5xJlnJGRTwe7GUHpJOR4ukYK3y+LFNffuA=
|
||||||
github.com/jen20/awspolicyequivalence v0.0.0-20170831201602-3d48364a137a/go.mod h1:uoIMjNxUfXi48Ci40IXkPRbghZ1vbti6v9LCbNqRgHY=
|
github.com/jen20/awspolicyequivalence v0.0.0-20170831201602-3d48364a137a/go.mod h1:uoIMjNxUfXi48Ci40IXkPRbghZ1vbti6v9LCbNqRgHY=
|
||||||
|
github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
|
||||||
github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
|
github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
|
||||||
github.com/jmespath/go-jmespath v0.0.0-20160803190731-bd40a432e4c7 h1:SMvOWPJCES2GdFracYbBQh93GXac8fq7HeN6JnpduB8=
|
github.com/jmespath/go-jmespath v0.0.0-20160803190731-bd40a432e4c7 h1:SMvOWPJCES2GdFracYbBQh93GXac8fq7HeN6JnpduB8=
|
||||||
github.com/jmespath/go-jmespath v0.0.0-20160803190731-bd40a432e4c7/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
|
github.com/jmespath/go-jmespath v0.0.0-20160803190731-bd40a432e4c7/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
|
||||||
|
@ -258,6 +252,9 @@ github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d h1:VhgPp6v9qf9Agr/
|
||||||
github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d/go.mod h1:YUTz3bUH2ZwIWBy3CJBeOBEugqcmXREj14T+iG/4k4U=
|
github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d/go.mod h1:YUTz3bUH2ZwIWBy3CJBeOBEugqcmXREj14T+iG/4k4U=
|
||||||
github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw=
|
github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw=
|
||||||
github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA=
|
github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA=
|
||||||
|
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
||||||
|
github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
||||||
|
github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
|
||||||
github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8=
|
github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8=
|
||||||
github.com/packer-community/winrmcp v0.0.0-20180102160824-81144009af58 h1:m3CEgv3ah1Rhy82L+c0QG/U3VyY1UsvsIdkh0/rU97Y=
|
github.com/packer-community/winrmcp v0.0.0-20180102160824-81144009af58 h1:m3CEgv3ah1Rhy82L+c0QG/U3VyY1UsvsIdkh0/rU97Y=
|
||||||
github.com/packer-community/winrmcp v0.0.0-20180102160824-81144009af58/go.mod h1:f6Izs6JvFTdnRbziASagjZ2vmf55NSIkC/weStxCHqk=
|
github.com/packer-community/winrmcp v0.0.0-20180102160824-81144009af58/go.mod h1:f6Izs6JvFTdnRbziASagjZ2vmf55NSIkC/weStxCHqk=
|
||||||
|
@ -279,8 +276,6 @@ github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273 h1:agujYaXJSxSo1
|
||||||
github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
|
github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
|
||||||
github.com/satori/go.uuid v0.0.0-20160927100844-b061729afc07 h1:DEZDfcCVq3xDJrjqdCgyN/dHYVoqR92MCsdqCdxmnhM=
|
github.com/satori/go.uuid v0.0.0-20160927100844-b061729afc07 h1:DEZDfcCVq3xDJrjqdCgyN/dHYVoqR92MCsdqCdxmnhM=
|
||||||
github.com/satori/go.uuid v0.0.0-20160927100844-b061729afc07/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0=
|
github.com/satori/go.uuid v0.0.0-20160927100844-b061729afc07/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0=
|
||||||
github.com/satori/uuid v0.0.0-20160927100844-b061729afc07 h1:81vvGlnI/AZ1/TxGDirw3ofUoS64TyjmPQt5C9XODTw=
|
|
||||||
github.com/satori/uuid v0.0.0-20160927100844-b061729afc07/go.mod h1:B8HLsPLik/YNn6KKWVMDJ8nzCL8RP5WyfsnmvnAEwIU=
|
|
||||||
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I=
|
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I=
|
||||||
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
|
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
|
||||||
github.com/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ=
|
github.com/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ=
|
||||||
|
@ -316,17 +311,16 @@ github.com/ulikunitz/xz v0.5.4 h1:zATC2OoZ8H1TZll3FpbX+ikwmadbO699PE06cIkm9oU=
|
||||||
github.com/ulikunitz/xz v0.5.4/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8=
|
github.com/ulikunitz/xz v0.5.4/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8=
|
||||||
github.com/vmihailenco/msgpack v3.3.3+incompatible h1:wapg9xDUZDzGCNFlwc5SqI1rvcciqcxEHac4CYj89xI=
|
github.com/vmihailenco/msgpack v3.3.3+incompatible h1:wapg9xDUZDzGCNFlwc5SqI1rvcciqcxEHac4CYj89xI=
|
||||||
github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk=
|
github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk=
|
||||||
github.com/vmihailenco/msgpack v4.0.0+incompatible h1:R/ftCULcY/r0SLpalySUSd8QV4fVABi/h0D/IjlYJzg=
|
github.com/vmihailenco/msgpack v4.0.1+incompatible h1:RMF1enSPeKTlXrXdOcqjFUElywVZjjC6pqse21bKbEU=
|
||||||
github.com/vmihailenco/msgpack v4.0.0+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk=
|
github.com/vmihailenco/msgpack v4.0.1+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk=
|
||||||
github.com/xanzy/ssh-agent v0.2.0 h1:Adglfbi5p9Z0BmK2oKU9nTG+zKfniSfnaMYB+ULd+Ro=
|
github.com/xanzy/ssh-agent v0.2.0 h1:Adglfbi5p9Z0BmK2oKU9nTG+zKfniSfnaMYB+ULd+Ro=
|
||||||
github.com/xanzy/ssh-agent v0.2.0/go.mod h1:0NyE30eGUDliuLEHJgYte/zncp2zdTStcOnWhgSqHD8=
|
github.com/xanzy/ssh-agent v0.2.0/go.mod h1:0NyE30eGUDliuLEHJgYte/zncp2zdTStcOnWhgSqHD8=
|
||||||
github.com/xiang90/probing v0.0.0-20160813154853-07dd2e8dfe18 h1:MPPkRncZLN9Kh4MEFmbnK4h3BD7AUmskWv2+EeZJCCs=
|
github.com/xiang90/probing v0.0.0-20160813154853-07dd2e8dfe18 h1:MPPkRncZLN9Kh4MEFmbnK4h3BD7AUmskWv2+EeZJCCs=
|
||||||
github.com/xiang90/probing v0.0.0-20160813154853-07dd2e8dfe18/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
|
github.com/xiang90/probing v0.0.0-20160813154853-07dd2e8dfe18/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
|
||||||
github.com/xlab/treeprint v0.0.0-20161029104018-1d6e34225557 h1:Jpn2j6wHkC9wJv5iMfJhKqrZJx3TahFx+7sbZ7zQdxs=
|
github.com/xlab/treeprint v0.0.0-20161029104018-1d6e34225557 h1:Jpn2j6wHkC9wJv5iMfJhKqrZJx3TahFx+7sbZ7zQdxs=
|
||||||
github.com/xlab/treeprint v0.0.0-20161029104018-1d6e34225557/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg=
|
github.com/xlab/treeprint v0.0.0-20161029104018-1d6e34225557/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg=
|
||||||
github.com/zclconf/go-cty v0.0.0-20180815031001-58bb2bc0302a/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s=
|
github.com/zclconf/go-cty v0.0.0-20181129180422-88fbe721e0f8 h1:imQXpaIqhN70pkpZ/a4ZMCiIi9CpaYE34f5/CAKWRs8=
|
||||||
github.com/zclconf/go-cty v0.0.0-20181017232614-01c5aba823a6 h1:Y9SzKuDy2J5QLFPmFk7/ZIzbu4/FrQK9Zwv4vjivNiM=
|
github.com/zclconf/go-cty v0.0.0-20181129180422-88fbe721e0f8/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s=
|
||||||
github.com/zclconf/go-cty v0.0.0-20181017232614-01c5aba823a6/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s=
|
|
||||||
go.opencensus.io v0.17.0 h1:2Cu88MYg+1LU+WVD+NWwYhyP0kKgRlN9QjWGaX0jKTE=
|
go.opencensus.io v0.17.0 h1:2Cu88MYg+1LU+WVD+NWwYhyP0kKgRlN9QjWGaX0jKTE=
|
||||||
go.opencensus.io v0.17.0/go.mod h1:mp1VrMQxhlqqDpKvH4UcQUa4YwlzNmymAjPrDdfxNpI=
|
go.opencensus.io v0.17.0/go.mod h1:mp1VrMQxhlqqDpKvH4UcQUa4YwlzNmymAjPrDdfxNpI=
|
||||||
go.uber.org/atomic v1.3.2 h1:2Oa65PReHzfn29GpvgsYwloV9AVFHPDk8tYxt2c2tr4=
|
go.uber.org/atomic v1.3.2 h1:2Oa65PReHzfn29GpvgsYwloV9AVFHPDk8tYxt2c2tr4=
|
||||||
|
@ -338,26 +332,26 @@ go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
|
||||||
golang.org/x/crypto v0.0.0-20180816225734-aabede6cba87 h1:gCHhzI+1R9peHIMyiWVxoVaWlk1cYK7VThX5ptLtbXY=
|
golang.org/x/crypto v0.0.0-20180816225734-aabede6cba87 h1:gCHhzI+1R9peHIMyiWVxoVaWlk1cYK7VThX5ptLtbXY=
|
||||||
golang.org/x/crypto v0.0.0-20180816225734-aabede6cba87/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
golang.org/x/crypto v0.0.0-20180816225734-aabede6cba87/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||||
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||||
golang.org/x/crypto v0.0.0-20180910181607-0e37d006457b h1:2b9XGzhjiYsYPnKXoEfL7klWZQIt8IfyRCz62gCqqlQ=
|
|
||||||
golang.org/x/crypto v0.0.0-20180910181607-0e37d006457b/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
|
||||||
golang.org/x/crypto v0.0.0-20181112202954-3d3f9f413869 h1:kkXA53yGe04D0adEYJwEVQjeBppL01Exg+fnMjfUraU=
|
golang.org/x/crypto v0.0.0-20181112202954-3d3f9f413869 h1:kkXA53yGe04D0adEYJwEVQjeBppL01Exg+fnMjfUraU=
|
||||||
golang.org/x/crypto v0.0.0-20181112202954-3d3f9f413869/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
golang.org/x/crypto v0.0.0-20181112202954-3d3f9f413869/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||||
|
golang.org/x/crypto v0.0.0-20181127143415-eb0de9b17e85 h1:et7+NAX3lLIk5qUCTA9QelBjGE/NkhzYw/mhnr0s7nI=
|
||||||
|
golang.org/x/crypto v0.0.0-20181127143415-eb0de9b17e85/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||||
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
golang.org/x/net v0.0.0-20180811021610-c39426892332 h1:efGso+ep0DjyCBJPjvoz0HI6UldX4Md2F1rZFe1ir0E=
|
golang.org/x/net v0.0.0-20180811021610-c39426892332 h1:efGso+ep0DjyCBJPjvoz0HI6UldX4Md2F1rZFe1ir0E=
|
||||||
golang.org/x/net v0.0.0-20180811021610-c39426892332/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20180811021610-c39426892332/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
golang.org/x/net v0.0.0-20181017193950-04a2e542c03f h1:4pRM7zYwpBjCnfA1jRmhItLxYJkaEnsmuAcRtA347DA=
|
golang.org/x/net v0.0.0-20181129055619-fae4c4e3ad76 h1:xx5MUFyRQRbPk6VjWjIE1epE/K5AoDD8QUN116NCy8k=
|
||||||
golang.org/x/net v0.0.0-20181017193950-04a2e542c03f/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20181129055619-fae4c4e3ad76/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
golang.org/x/oauth2 v0.0.0-20181003184128-c57b0facaced h1:4oqSq7eft7MdPKBGQK11X9WYUxmj6ZLgGTqYIbY1kyw=
|
golang.org/x/oauth2 v0.0.0-20181003184128-c57b0facaced h1:4oqSq7eft7MdPKBGQK11X9WYUxmj6ZLgGTqYIbY1kyw=
|
||||||
golang.org/x/oauth2 v0.0.0-20181003184128-c57b0facaced/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
golang.org/x/oauth2 v0.0.0-20181003184128-c57b0facaced/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f h1:wMNYb4v58l5UBM7MYRLPG6ZhfOqbKu7X5eyFl8ZhKvA=
|
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f h1:wMNYb4v58l5UBM7MYRLPG6ZhfOqbKu7X5eyFl8ZhKvA=
|
||||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sys v0.0.0-20180816055513-1c9583448a9c h1:uHnKXcvx6SNkuwC+nrzxkJ+TpPwZOtumbhWrrOYN5YA=
|
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f h1:Bl/8QSvNqXvPGPGXa2z5xUTmV7VDcZyvRZ+QQXkXTZQ=
|
||||||
golang.org/x/sys v0.0.0-20180816055513-1c9583448a9c/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20180925112736-b09afc3d579e h1:LSlw/Dbj0MkNvPYAAkGinYmGliq+aqS7eKPYlE4oWC4=
|
golang.org/x/sys v0.0.0-20181128092732-4ed8d59d0b35 h1:YAFjXN64LMvktoUZH9zgY4lGc/msGN7HQfoSuKCgaDU=
|
||||||
golang.org/x/sys v0.0.0-20180925112736-b09afc3d579e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20181128092732-4ed8d59d0b35/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
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/time v0.0.0-20181108054448-85acf8d2951c h1:fqgJT0MGcGpPgpWU7VRdRjuArfcOvC4AoJmILihzhDg=
|
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c h1:fqgJT0MGcGpPgpWU7VRdRjuArfcOvC4AoJmILihzhDg=
|
||||||
|
@ -367,8 +361,8 @@ google.golang.org/api v0.0.0-20181015145326-625cd1887957 h1:jwCmWUTrTFfjsobRuGur
|
||||||
google.golang.org/api v0.0.0-20181015145326-625cd1887957/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0=
|
google.golang.org/api v0.0.0-20181015145326-625cd1887957/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0=
|
||||||
google.golang.org/appengine v1.1.0 h1:igQkv0AAhEIvTEpD5LIpAfav2eeVO9HBTjvKHVJPRSs=
|
google.golang.org/appengine v1.1.0 h1:igQkv0AAhEIvTEpD5LIpAfav2eeVO9HBTjvKHVJPRSs=
|
||||||
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
|
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
|
||||||
google.golang.org/appengine v1.2.0 h1:S0iUepdCWODXRvtE+gcRDd15L+k+k1AiHlMiMjefH24=
|
google.golang.org/appengine v1.3.0 h1:FBSsiFRMz3LBeXIomRnVzrQwSDj4ibvcRexLG0LZGQk=
|
||||||
google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
||||||
google.golang.org/genproto v0.0.0-20180831171423-11092d34479b h1:lohp5blsw53GBXtLyLNaTXPXS9pJ1tiTw61ZHUoE9Qw=
|
google.golang.org/genproto v0.0.0-20180831171423-11092d34479b h1:lohp5blsw53GBXtLyLNaTXPXS9pJ1tiTw61ZHUoE9Qw=
|
||||||
google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
|
google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
|
||||||
google.golang.org/grpc v1.14.0 h1:ArxJuB1NWfPY6r9Gp9gqwplT0Ge7nqv9msgu03lHLmo=
|
google.golang.org/grpc v1.14.0 h1:ArxJuB1NWfPY6r9Gp9gqwplT0Ge7nqv9msgu03lHLmo=
|
||||||
|
@ -376,8 +370,12 @@ google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmE
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
|
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
|
||||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
|
||||||
|
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
|
||||||
gopkg.in/vmihailenco/msgpack.v2 v2.9.1 h1:kb0VV7NuIojvRfzwslQeP3yArBqJHW9tOl4t38VS1jM=
|
gopkg.in/vmihailenco/msgpack.v2 v2.9.1 h1:kb0VV7NuIojvRfzwslQeP3yArBqJHW9tOl4t38VS1jM=
|
||||||
gopkg.in/vmihailenco/msgpack.v2 v2.9.1/go.mod h1:/3Dn1Npt9+MYyLpYYXjInO/5jvMLamn+AEGwNEOatn8=
|
gopkg.in/vmihailenco/msgpack.v2 v2.9.1/go.mod h1:/3Dn1Npt9+MYyLpYYXjInO/5jvMLamn+AEGwNEOatn8=
|
||||||
gopkg.in/yaml.v2 v2.2.1 h1:mUhvW9EsL+naU5Q3cakzfE91YhliOondGd6ZrsDBHQE=
|
gopkg.in/yaml.v2 v2.2.1 h1:mUhvW9EsL+naU5Q3cakzfE91YhliOondGd6ZrsDBHQE=
|
||||||
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
howett.net/plist v0.0.0-20180609054337-500bd5b9081b/go.mod h1:jInWmjR7JRkkon4jlLXDZGVEeY/wo3kOOJEWYhNE+9Y=
|
gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
|
||||||
|
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
|
howett.net/plist v0.0.0-20181124034731-591f970eefbb/go.mod h1:vMygbs4qMhSZSc4lCUl2OEE+rDiIIJAIdR4m7MiMcm0=
|
||||||
|
|
|
@ -6,6 +6,7 @@ go:
|
||||||
- 1.8.x
|
- 1.8.x
|
||||||
- 1.9.x
|
- 1.9.x
|
||||||
- 1.10.x
|
- 1.10.x
|
||||||
|
- 1.11.x
|
||||||
- tip
|
- tip
|
||||||
|
|
||||||
matrix:
|
matrix:
|
||||||
|
|
|
@ -287,7 +287,10 @@ func (d *Decoder) DecodeInterface() (interface{}, error) {
|
||||||
return int8(c), nil
|
return int8(c), nil
|
||||||
}
|
}
|
||||||
if codes.IsFixedMap(c) {
|
if codes.IsFixedMap(c) {
|
||||||
_ = d.s.UnreadByte()
|
err = d.s.UnreadByte()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
return d.DecodeMap()
|
return d.DecodeMap()
|
||||||
}
|
}
|
||||||
if codes.IsFixedArray(c) {
|
if codes.IsFixedArray(c) {
|
||||||
|
@ -329,7 +332,10 @@ func (d *Decoder) DecodeInterface() (interface{}, error) {
|
||||||
case codes.Array16, codes.Array32:
|
case codes.Array16, codes.Array32:
|
||||||
return d.decodeSlice(c)
|
return d.decodeSlice(c)
|
||||||
case codes.Map16, codes.Map32:
|
case codes.Map16, codes.Map32:
|
||||||
d.s.UnreadByte()
|
err = d.s.UnreadByte()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
return d.DecodeMap()
|
return d.DecodeMap()
|
||||||
case codes.FixExt1, codes.FixExt2, codes.FixExt4, codes.FixExt8, codes.FixExt16,
|
case codes.FixExt1, codes.FixExt2, codes.FixExt4, codes.FixExt8, codes.FixExt16,
|
||||||
codes.Ext8, codes.Ext16, codes.Ext32:
|
codes.Ext8, codes.Ext16, codes.Ext32:
|
||||||
|
@ -353,7 +359,10 @@ func (d *Decoder) DecodeInterfaceLoose() (interface{}, error) {
|
||||||
return int64(c), nil
|
return int64(c), nil
|
||||||
}
|
}
|
||||||
if codes.IsFixedMap(c) {
|
if codes.IsFixedMap(c) {
|
||||||
d.s.UnreadByte()
|
err = d.s.UnreadByte()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
return d.DecodeMap()
|
return d.DecodeMap()
|
||||||
}
|
}
|
||||||
if codes.IsFixedArray(c) {
|
if codes.IsFixedArray(c) {
|
||||||
|
@ -381,7 +390,10 @@ func (d *Decoder) DecodeInterfaceLoose() (interface{}, error) {
|
||||||
case codes.Array16, codes.Array32:
|
case codes.Array16, codes.Array32:
|
||||||
return d.decodeSlice(c)
|
return d.decodeSlice(c)
|
||||||
case codes.Map16, codes.Map32:
|
case codes.Map16, codes.Map32:
|
||||||
d.s.UnreadByte()
|
err = d.s.UnreadByte()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
return d.DecodeMap()
|
return d.DecodeMap()
|
||||||
case codes.FixExt1, codes.FixExt2, codes.FixExt4, codes.FixExt8, codes.FixExt16,
|
case codes.FixExt1, codes.FixExt2, codes.FixExt4, codes.FixExt8, codes.FixExt16,
|
||||||
codes.Ext8, codes.Ext16, codes.Ext32:
|
codes.Ext8, codes.Ext16, codes.Ext32:
|
||||||
|
|
|
@ -4,8 +4,6 @@ import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"reflect"
|
"reflect"
|
||||||
|
|
||||||
"github.com/vmihailenco/msgpack/codes"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var interfaceType = reflect.TypeOf((*interface{})(nil)).Elem()
|
var interfaceType = reflect.TypeOf((*interface{})(nil)).Elem()
|
||||||
|
@ -53,7 +51,8 @@ func mustSet(v reflect.Value) error {
|
||||||
func getDecoder(typ reflect.Type) decoderFunc {
|
func getDecoder(typ reflect.Type) decoderFunc {
|
||||||
kind := typ.Kind()
|
kind := typ.Kind()
|
||||||
|
|
||||||
if decoder, ok := typDecMap[typ]; ok {
|
decoder, ok := typDecMap[typ]
|
||||||
|
if ok {
|
||||||
return decoder
|
return decoder
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -112,7 +111,9 @@ func ptrDecoderFunc(typ reflect.Type) decoderFunc {
|
||||||
if err := mustSet(v); err != nil {
|
if err := mustSet(v); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
v.Set(reflect.Zero(v.Type()))
|
if !v.IsNil() {
|
||||||
|
v.Set(reflect.Zero(v.Type()))
|
||||||
|
}
|
||||||
return d.DecodeNil()
|
return d.DecodeNil()
|
||||||
}
|
}
|
||||||
if v.IsNil() {
|
if v.IsNil() {
|
||||||
|
@ -133,36 +134,7 @@ func decodeCustomValueAddr(d *Decoder, v reflect.Value) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func decodeCustomValue(d *Decoder, v reflect.Value) error {
|
func decodeCustomValue(d *Decoder, v reflect.Value) error {
|
||||||
c, err := d.PeekCode()
|
if d.hasNilCode() {
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
if codes.IsExt(c) {
|
|
||||||
c, err = d.readCode()
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
extLen, err := d.parseExtLen(c)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
_, err = d.readCode()
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
c, err = d.PeekCode()
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
d.extLen = extLen
|
|
||||||
}
|
|
||||||
|
|
||||||
if c == codes.Nil {
|
|
||||||
return d.decodeNilValue(v)
|
return d.decodeNilValue(v)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -182,37 +154,7 @@ func unmarshalValueAddr(d *Decoder, v reflect.Value) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func unmarshalValue(d *Decoder, v reflect.Value) error {
|
func unmarshalValue(d *Decoder, v reflect.Value) error {
|
||||||
c, err := d.PeekCode()
|
if d.hasNilCode() {
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
extLen := d.extLen
|
|
||||||
d.extLen = 0
|
|
||||||
|
|
||||||
if extLen == 0 && codes.IsExt(c) {
|
|
||||||
c, err = d.readCode()
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
extLen, err = d.parseExtLen(c)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
_, err = d.readCode()
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
c, err = d.PeekCode()
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if c == codes.Nil {
|
|
||||||
return d.decodeNilValue(v)
|
return d.decodeNilValue(v)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -220,8 +162,8 @@ func unmarshalValue(d *Decoder, v reflect.Value) error {
|
||||||
v.Set(reflect.New(v.Type().Elem()))
|
v.Set(reflect.New(v.Type().Elem()))
|
||||||
}
|
}
|
||||||
|
|
||||||
if extLen != 0 {
|
if d.extLen != 0 {
|
||||||
b, err := d.readN(extLen)
|
b, err := d.readN(d.extLen)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -234,7 +176,7 @@ func unmarshalValue(d *Decoder, v reflect.Value) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
unmarshaler := v.Interface().(Unmarshaler)
|
unmarshaler := v.Interface().(Unmarshaler)
|
||||||
err = unmarshaler.UnmarshalMsgpack(d.rec)
|
err := unmarshaler.UnmarshalMsgpack(d.rec)
|
||||||
d.rec = nil
|
d.rec = nil
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,7 +34,7 @@ func RegisterExt(id int8, value interface{}) {
|
||||||
panic(fmt.Errorf("msgpack: ext with id=%d is already registered", id))
|
panic(fmt.Errorf("msgpack: ext with id=%d is already registered", id))
|
||||||
}
|
}
|
||||||
|
|
||||||
registerExt(id, ptr, getEncoder(ptr), nil)
|
registerExt(id, ptr, getEncoder(ptr), getDecoder(ptr))
|
||||||
registerExt(id, typ, getEncoder(typ), getDecoder(typ))
|
registerExt(id, typ, getEncoder(typ), getDecoder(typ))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -46,7 +46,7 @@ func registerExt(id int8, typ reflect.Type, enc encoderFunc, dec decoderFunc) {
|
||||||
typEncMap[typ] = makeExtEncoder(id, enc)
|
typEncMap[typ] = makeExtEncoder(id, enc)
|
||||||
}
|
}
|
||||||
if dec != nil {
|
if dec != nil {
|
||||||
typDecMap[typ] = dec
|
typDecMap[typ] = makeExtDecoder(id, dec)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -75,13 +75,39 @@ func makeExtEncoder(typeId int8, enc encoderFunc) encoderFunc {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := e.EncodeExtHeader(typeId, buf.Len()); err != nil {
|
err = e.EncodeExtHeader(typeId, buf.Len())
|
||||||
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return e.write(buf.Bytes())
|
return e.write(buf.Bytes())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func makeExtDecoder(typeId int8, dec decoderFunc) decoderFunc {
|
||||||
|
return func(d *Decoder, v reflect.Value) error {
|
||||||
|
c, err := d.PeekCode()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if !codes.IsExt(c) {
|
||||||
|
return dec(d, v)
|
||||||
|
}
|
||||||
|
|
||||||
|
id, extLen, err := d.DecodeExtHeader()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if id != typeId {
|
||||||
|
return fmt.Errorf("msgpack: got ext type=%d, wanted %d", int8(c), typeId)
|
||||||
|
}
|
||||||
|
|
||||||
|
d.extLen = extLen
|
||||||
|
return dec(d, v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (e *Encoder) encodeExtLen(l int) error {
|
func (e *Encoder) encodeExtLen(l int) error {
|
||||||
switch l {
|
switch l {
|
||||||
case 1:
|
case 1:
|
||||||
|
|
|
@ -179,12 +179,15 @@ func getFields(typ reflect.Type, useJSONTag bool) *fields {
|
||||||
field.name = f.Name
|
field.name = f.Name
|
||||||
}
|
}
|
||||||
|
|
||||||
if f.Anonymous {
|
if f.Anonymous && !opt.Contains("noinline") {
|
||||||
if opt.Contains("inline") {
|
inline := opt.Contains("inline")
|
||||||
|
if inline {
|
||||||
inlineFields(fs, f.Type, field, useJSONTag)
|
inlineFields(fs, f.Type, field, useJSONTag)
|
||||||
continue
|
} else {
|
||||||
|
inline = autoinlineFields(fs, f.Type, field, useJSONTag)
|
||||||
}
|
}
|
||||||
if autoinlineFields(fs, f.Type, field, useJSONTag) {
|
if inline {
|
||||||
|
fs.Table[field.name] = field
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -242,7 +245,7 @@ func autoinlineFields(fs *fields, typ reflect.Type, f *field, useJSONTag bool) b
|
||||||
inlinedFields := getFields(typ, useJSONTag).List
|
inlinedFields := getFields(typ, useJSONTag).List
|
||||||
for _, field := range inlinedFields {
|
for _, field := range inlinedFields {
|
||||||
if _, ok := fs.Table[field.name]; ok {
|
if _, ok := fs.Table[field.name]; ok {
|
||||||
// Don't inline shadowed fields.
|
// Don't auto inline if there are shadowed fields.
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,6 +21,11 @@ func getConversion(in cty.Type, out cty.Type, unsafe bool) conversion {
|
||||||
return cty.UnknownVal(out), nil
|
return cty.UnknownVal(out), nil
|
||||||
}
|
}
|
||||||
if in.IsNull() {
|
if in.IsNull() {
|
||||||
|
// If the output is a DynamicPseudoType, the type doesn't matter,
|
||||||
|
// so retain the type for proper null comparison.
|
||||||
|
if out == cty.DynamicPseudoType {
|
||||||
|
return in, nil
|
||||||
|
}
|
||||||
// We'll pass through nulls, albeit type converted, and let
|
// We'll pass through nulls, albeit type converted, and let
|
||||||
// the caller deal with whatever handling they want to do in
|
// the caller deal with whatever handling they want to do in
|
||||||
// case null values are considered valid in some applications.
|
// case null values are considered valid in some applications.
|
||||||
|
|
|
@ -138,7 +138,7 @@ func impliedObjectType(dec *json.Decoder) (cty.Type, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func impliedTupleType(dec *json.Decoder) (cty.Type, error) {
|
func impliedTupleType(dec *json.Decoder) (cty.Type, error) {
|
||||||
// By the time we get in here, we've already consumed the { delimiter
|
// By the time we get in here, we've already consumed the [ delimiter
|
||||||
// and so our next token should be the first value.
|
// and so our next token should be the first value.
|
||||||
|
|
||||||
var etys []cty.Type
|
var etys []cty.Type
|
||||||
|
@ -150,10 +150,9 @@ func impliedTupleType(dec *json.Decoder) (cty.Type, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if ttok, ok := tok.(json.Delim); ok {
|
if ttok, ok := tok.(json.Delim); ok {
|
||||||
if rune(ttok) != ']' {
|
if rune(ttok) == ']' {
|
||||||
return cty.NilType, fmt.Errorf("unexpected delimiter %q", ttok)
|
break
|
||||||
}
|
}
|
||||||
break
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ety, err := impliedTypeForTok(tok, dec)
|
ety, err := impliedTypeForTok(tok, dec)
|
||||||
|
|
|
@ -70,10 +70,62 @@ func (val Value) GoString() string {
|
||||||
// Equals returns True if the receiver and the given other value have the
|
// Equals returns True if the receiver and the given other value have the
|
||||||
// same type and are exactly equal in value.
|
// same type and are exactly equal in value.
|
||||||
//
|
//
|
||||||
// The usual short-circuit rules apply, so the result can be unknown or typed
|
// As a special case, two null values are always equal regardless of type.
|
||||||
// as dynamic if either of the given values are. Use RawEquals to compare
|
//
|
||||||
// if two values are equal *ignoring* the short-circuit rules.
|
// The usual short-circuit rules apply, so the result will be unknown if
|
||||||
|
// either of the given values are.
|
||||||
|
//
|
||||||
|
// Use RawEquals to compare if two values are equal *ignoring* the
|
||||||
|
// short-circuit rules and the exception for null values.
|
||||||
func (val Value) Equals(other Value) Value {
|
func (val Value) Equals(other Value) Value {
|
||||||
|
// Start by handling Unknown values before considering types.
|
||||||
|
// This needs to be done since Null values are always equal regardless of
|
||||||
|
// type.
|
||||||
|
switch {
|
||||||
|
case !val.IsKnown() && !other.IsKnown():
|
||||||
|
// both unknown
|
||||||
|
return UnknownVal(Bool)
|
||||||
|
case val.IsKnown() && !other.IsKnown():
|
||||||
|
switch {
|
||||||
|
case val.IsNull(), other.ty.HasDynamicTypes():
|
||||||
|
// If known is Null, we need to wait for the unkown value since
|
||||||
|
// nulls of any type are equal.
|
||||||
|
// An unkown with a dynamic type compares as unknown, which we need
|
||||||
|
// to check before the type comparison below.
|
||||||
|
return UnknownVal(Bool)
|
||||||
|
case !val.ty.Equals(other.ty):
|
||||||
|
// There is no null comparison or dynamic types, so unequal types
|
||||||
|
// will never be equal.
|
||||||
|
return False
|
||||||
|
default:
|
||||||
|
return UnknownVal(Bool)
|
||||||
|
}
|
||||||
|
case other.IsKnown() && !val.IsKnown():
|
||||||
|
switch {
|
||||||
|
case other.IsNull(), val.ty.HasDynamicTypes():
|
||||||
|
// If known is Null, we need to wait for the unkown value since
|
||||||
|
// nulls of any type are equal.
|
||||||
|
// An unkown with a dynamic type compares as unknown, which we need
|
||||||
|
// to check before the type comparison below.
|
||||||
|
return UnknownVal(Bool)
|
||||||
|
case !other.ty.Equals(val.ty):
|
||||||
|
// There's no null comparison or dynamic types, so unequal types
|
||||||
|
// will never be equal.
|
||||||
|
return False
|
||||||
|
default:
|
||||||
|
return UnknownVal(Bool)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
switch {
|
||||||
|
case val.IsNull() && other.IsNull():
|
||||||
|
// Nulls are always equal, regardless of type
|
||||||
|
return BoolVal(true)
|
||||||
|
case val.IsNull() || other.IsNull():
|
||||||
|
// If only one is null then the result must be false
|
||||||
|
return BoolVal(false)
|
||||||
|
}
|
||||||
|
|
||||||
if val.ty.HasDynamicTypes() || other.ty.HasDynamicTypes() {
|
if val.ty.HasDynamicTypes() || other.ty.HasDynamicTypes() {
|
||||||
return UnknownVal(Bool)
|
return UnknownVal(Bool)
|
||||||
}
|
}
|
||||||
|
@ -82,17 +134,6 @@ func (val Value) Equals(other Value) Value {
|
||||||
return BoolVal(false)
|
return BoolVal(false)
|
||||||
}
|
}
|
||||||
|
|
||||||
if !(val.IsKnown() && other.IsKnown()) {
|
|
||||||
return UnknownVal(Bool)
|
|
||||||
}
|
|
||||||
|
|
||||||
if val.IsNull() || other.IsNull() {
|
|
||||||
if val.IsNull() && other.IsNull() {
|
|
||||||
return BoolVal(true)
|
|
||||||
}
|
|
||||||
return BoolVal(false)
|
|
||||||
}
|
|
||||||
|
|
||||||
ty := val.ty
|
ty := val.ty
|
||||||
result := false
|
result := false
|
||||||
|
|
||||||
|
|
|
@ -2,18 +2,15 @@
|
||||||
// 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.7
|
|
||||||
|
|
||||||
// Package ctxhttp provides helper functions for performing context-aware HTTP requests.
|
// Package ctxhttp provides helper functions for performing context-aware HTTP requests.
|
||||||
package ctxhttp // import "golang.org/x/net/context/ctxhttp"
|
package ctxhttp // import "golang.org/x/net/context/ctxhttp"
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"io"
|
"io"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"golang.org/x/net/context"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Do sends an HTTP request with the provided http.Client and returns
|
// Do sends an HTTP request with the provided http.Client and returns
|
||||||
|
|
|
@ -1,147 +0,0 @@
|
||||||
// Copyright 2015 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.7
|
|
||||||
|
|
||||||
package ctxhttp // import "golang.org/x/net/context/ctxhttp"
|
|
||||||
|
|
||||||
import (
|
|
||||||
"io"
|
|
||||||
"net/http"
|
|
||||||
"net/url"
|
|
||||||
"strings"
|
|
||||||
|
|
||||||
"golang.org/x/net/context"
|
|
||||||
)
|
|
||||||
|
|
||||||
func nop() {}
|
|
||||||
|
|
||||||
var (
|
|
||||||
testHookContextDoneBeforeHeaders = nop
|
|
||||||
testHookDoReturned = nop
|
|
||||||
testHookDidBodyClose = nop
|
|
||||||
)
|
|
||||||
|
|
||||||
// Do sends an HTTP request with the provided http.Client and returns an HTTP response.
|
|
||||||
// If the client is nil, http.DefaultClient is used.
|
|
||||||
// If the context is canceled or times out, ctx.Err() will be returned.
|
|
||||||
func Do(ctx context.Context, client *http.Client, req *http.Request) (*http.Response, error) {
|
|
||||||
if client == nil {
|
|
||||||
client = http.DefaultClient
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO(djd): Respect any existing value of req.Cancel.
|
|
||||||
cancel := make(chan struct{})
|
|
||||||
req.Cancel = cancel
|
|
||||||
|
|
||||||
type responseAndError struct {
|
|
||||||
resp *http.Response
|
|
||||||
err error
|
|
||||||
}
|
|
||||||
result := make(chan responseAndError, 1)
|
|
||||||
|
|
||||||
// Make local copies of test hooks closed over by goroutines below.
|
|
||||||
// Prevents data races in tests.
|
|
||||||
testHookDoReturned := testHookDoReturned
|
|
||||||
testHookDidBodyClose := testHookDidBodyClose
|
|
||||||
|
|
||||||
go func() {
|
|
||||||
resp, err := client.Do(req)
|
|
||||||
testHookDoReturned()
|
|
||||||
result <- responseAndError{resp, err}
|
|
||||||
}()
|
|
||||||
|
|
||||||
var resp *http.Response
|
|
||||||
|
|
||||||
select {
|
|
||||||
case <-ctx.Done():
|
|
||||||
testHookContextDoneBeforeHeaders()
|
|
||||||
close(cancel)
|
|
||||||
// Clean up after the goroutine calling client.Do:
|
|
||||||
go func() {
|
|
||||||
if r := <-result; r.resp != nil {
|
|
||||||
testHookDidBodyClose()
|
|
||||||
r.resp.Body.Close()
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
return nil, ctx.Err()
|
|
||||||
case r := <-result:
|
|
||||||
var err error
|
|
||||||
resp, err = r.resp, r.err
|
|
||||||
if err != nil {
|
|
||||||
return resp, err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
c := make(chan struct{})
|
|
||||||
go func() {
|
|
||||||
select {
|
|
||||||
case <-ctx.Done():
|
|
||||||
close(cancel)
|
|
||||||
case <-c:
|
|
||||||
// The response's Body is closed.
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
resp.Body = ¬ifyingReader{resp.Body, c}
|
|
||||||
|
|
||||||
return resp, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get issues a GET request via the Do function.
|
|
||||||
func Get(ctx context.Context, client *http.Client, url string) (*http.Response, error) {
|
|
||||||
req, err := http.NewRequest("GET", url, nil)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return Do(ctx, client, req)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Head issues a HEAD request via the Do function.
|
|
||||||
func Head(ctx context.Context, client *http.Client, url string) (*http.Response, error) {
|
|
||||||
req, err := http.NewRequest("HEAD", url, nil)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return Do(ctx, client, req)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Post issues a POST request via the Do function.
|
|
||||||
func Post(ctx context.Context, client *http.Client, url string, bodyType string, body io.Reader) (*http.Response, error) {
|
|
||||||
req, err := http.NewRequest("POST", url, body)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
req.Header.Set("Content-Type", bodyType)
|
|
||||||
return Do(ctx, client, req)
|
|
||||||
}
|
|
||||||
|
|
||||||
// PostForm issues a POST request via the Do function.
|
|
||||||
func PostForm(ctx context.Context, client *http.Client, url string, data url.Values) (*http.Response, error) {
|
|
||||||
return Post(ctx, client, url, "application/x-www-form-urlencoded", strings.NewReader(data.Encode()))
|
|
||||||
}
|
|
||||||
|
|
||||||
// notifyingReader is an io.ReadCloser that closes the notify channel after
|
|
||||||
// Close is called or a Read fails on the underlying ReadCloser.
|
|
||||||
type notifyingReader struct {
|
|
||||||
io.ReadCloser
|
|
||||||
notify chan<- struct{}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r *notifyingReader) Read(p []byte) (int, error) {
|
|
||||||
n, err := r.ReadCloser.Read(p)
|
|
||||||
if err != nil && r.notify != nil {
|
|
||||||
close(r.notify)
|
|
||||||
r.notify = nil
|
|
||||||
}
|
|
||||||
return n, err
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r *notifyingReader) Close() error {
|
|
||||||
err := r.ReadCloser.Close()
|
|
||||||
if r.notify != nil {
|
|
||||||
close(r.notify)
|
|
||||||
r.notify = nil
|
|
||||||
}
|
|
||||||
return err
|
|
||||||
}
|
|
|
@ -1,82 +0,0 @@
|
||||||
// Copyright 2015 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.6
|
|
||||||
|
|
||||||
package http2
|
|
||||||
|
|
||||||
import (
|
|
||||||
"crypto/tls"
|
|
||||||
"fmt"
|
|
||||||
"net/http"
|
|
||||||
)
|
|
||||||
|
|
||||||
func configureTransport(t1 *http.Transport) (*Transport, error) {
|
|
||||||
connPool := new(clientConnPool)
|
|
||||||
t2 := &Transport{
|
|
||||||
ConnPool: noDialClientConnPool{connPool},
|
|
||||||
t1: t1,
|
|
||||||
}
|
|
||||||
connPool.t = t2
|
|
||||||
if err := registerHTTPSProtocol(t1, noDialH2RoundTripper{t2}); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
if t1.TLSClientConfig == nil {
|
|
||||||
t1.TLSClientConfig = new(tls.Config)
|
|
||||||
}
|
|
||||||
if !strSliceContains(t1.TLSClientConfig.NextProtos, "h2") {
|
|
||||||
t1.TLSClientConfig.NextProtos = append([]string{"h2"}, t1.TLSClientConfig.NextProtos...)
|
|
||||||
}
|
|
||||||
if !strSliceContains(t1.TLSClientConfig.NextProtos, "http/1.1") {
|
|
||||||
t1.TLSClientConfig.NextProtos = append(t1.TLSClientConfig.NextProtos, "http/1.1")
|
|
||||||
}
|
|
||||||
upgradeFn := func(authority string, c *tls.Conn) http.RoundTripper {
|
|
||||||
addr := authorityAddr("https", authority)
|
|
||||||
if used, err := connPool.addConnIfNeeded(addr, t2, c); err != nil {
|
|
||||||
go c.Close()
|
|
||||||
return erringRoundTripper{err}
|
|
||||||
} else if !used {
|
|
||||||
// Turns out we don't need this c.
|
|
||||||
// For example, two goroutines made requests to the same host
|
|
||||||
// at the same time, both kicking off TCP dials. (since protocol
|
|
||||||
// was unknown)
|
|
||||||
go c.Close()
|
|
||||||
}
|
|
||||||
return t2
|
|
||||||
}
|
|
||||||
if m := t1.TLSNextProto; len(m) == 0 {
|
|
||||||
t1.TLSNextProto = map[string]func(string, *tls.Conn) http.RoundTripper{
|
|
||||||
"h2": upgradeFn,
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
m["h2"] = upgradeFn
|
|
||||||
}
|
|
||||||
return t2, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// registerHTTPSProtocol calls Transport.RegisterProtocol but
|
|
||||||
// converting panics into errors.
|
|
||||||
func registerHTTPSProtocol(t *http.Transport, rt noDialH2RoundTripper) (err error) {
|
|
||||||
defer func() {
|
|
||||||
if e := recover(); e != nil {
|
|
||||||
err = fmt.Errorf("%v", e)
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
t.RegisterProtocol("https", rt)
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// noDialH2RoundTripper is a RoundTripper which only tries to complete the request
|
|
||||||
// if there's already has a cached connection to the host.
|
|
||||||
// (The field is exported so it can be accessed via reflect from net/http; tested
|
|
||||||
// by TestNoDialH2RoundTripperType)
|
|
||||||
type noDialH2RoundTripper struct{ *Transport }
|
|
||||||
|
|
||||||
func (rt noDialH2RoundTripper) RoundTrip(req *http.Request) (*http.Response, error) {
|
|
||||||
res, err := rt.Transport.RoundTrip(req)
|
|
||||||
if isNoCachedConnError(err) {
|
|
||||||
return nil, http.ErrSkipAltProtocol
|
|
||||||
}
|
|
||||||
return res, err
|
|
||||||
}
|
|
|
@ -1477,7 +1477,7 @@ func (fr *Framer) maxHeaderStringLen() int {
|
||||||
}
|
}
|
||||||
|
|
||||||
// readMetaFrame returns 0 or more CONTINUATION frames from fr and
|
// readMetaFrame returns 0 or more CONTINUATION frames from fr and
|
||||||
// merge them into into the provided hf and returns a MetaHeadersFrame
|
// merge them into the provided hf and returns a MetaHeadersFrame
|
||||||
// with the decoded hpack values.
|
// with the decoded hpack values.
|
||||||
func (fr *Framer) readMetaFrame(hf *HeadersFrame) (*MetaHeadersFrame, error) {
|
func (fr *Framer) readMetaFrame(hf *HeadersFrame) (*MetaHeadersFrame, error) {
|
||||||
if fr.AllowIllegalReads {
|
if fr.AllowIllegalReads {
|
||||||
|
|
|
@ -6,19 +6,22 @@
|
||||||
|
|
||||||
package http2
|
package http2
|
||||||
|
|
||||||
import "net/textproto"
|
import (
|
||||||
|
"net/http/httptrace"
|
||||||
|
"net/textproto"
|
||||||
|
)
|
||||||
|
|
||||||
func traceHasWroteHeaderField(trace *clientTrace) bool {
|
func traceHasWroteHeaderField(trace *httptrace.ClientTrace) bool {
|
||||||
return trace != nil && trace.WroteHeaderField != nil
|
return trace != nil && trace.WroteHeaderField != nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func traceWroteHeaderField(trace *clientTrace, k, v string) {
|
func traceWroteHeaderField(trace *httptrace.ClientTrace, k, v string) {
|
||||||
if trace != nil && trace.WroteHeaderField != nil {
|
if trace != nil && trace.WroteHeaderField != nil {
|
||||||
trace.WroteHeaderField(k, []string{v})
|
trace.WroteHeaderField(k, []string{v})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func traceGot1xxResponseFunc(trace *clientTrace) func(int, textproto.MIMEHeader) error {
|
func traceGot1xxResponseFunc(trace *httptrace.ClientTrace) func(int, textproto.MIMEHeader) error {
|
||||||
if trace != nil {
|
if trace != nil {
|
||||||
return trace.Got1xxResponse
|
return trace.Got1xxResponse
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,16 +0,0 @@
|
||||||
// Copyright 2016 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.6
|
|
||||||
|
|
||||||
package http2
|
|
||||||
|
|
||||||
import (
|
|
||||||
"net/http"
|
|
||||||
"time"
|
|
||||||
)
|
|
||||||
|
|
||||||
func transportExpectContinueTimeout(t1 *http.Transport) time.Duration {
|
|
||||||
return t1.ExpectContinueTimeout
|
|
||||||
}
|
|
|
@ -1,121 +0,0 @@
|
||||||
// Copyright 2016 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.7
|
|
||||||
|
|
||||||
package http2
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"net"
|
|
||||||
"net/http"
|
|
||||||
"net/http/httptrace"
|
|
||||||
"time"
|
|
||||||
)
|
|
||||||
|
|
||||||
type contextContext interface {
|
|
||||||
context.Context
|
|
||||||
}
|
|
||||||
|
|
||||||
var errCanceled = context.Canceled
|
|
||||||
|
|
||||||
func serverConnBaseContext(c net.Conn, opts *ServeConnOpts) (ctx contextContext, cancel func()) {
|
|
||||||
ctx, cancel = context.WithCancel(context.Background())
|
|
||||||
ctx = context.WithValue(ctx, http.LocalAddrContextKey, c.LocalAddr())
|
|
||||||
if hs := opts.baseConfig(); hs != nil {
|
|
||||||
ctx = context.WithValue(ctx, http.ServerContextKey, hs)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func contextWithCancel(ctx contextContext) (_ contextContext, cancel func()) {
|
|
||||||
return context.WithCancel(ctx)
|
|
||||||
}
|
|
||||||
|
|
||||||
func requestWithContext(req *http.Request, ctx contextContext) *http.Request {
|
|
||||||
return req.WithContext(ctx)
|
|
||||||
}
|
|
||||||
|
|
||||||
type clientTrace httptrace.ClientTrace
|
|
||||||
|
|
||||||
func reqContext(r *http.Request) context.Context { return r.Context() }
|
|
||||||
|
|
||||||
func (t *Transport) idleConnTimeout() time.Duration {
|
|
||||||
if t.t1 != nil {
|
|
||||||
return t.t1.IdleConnTimeout
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
func setResponseUncompressed(res *http.Response) { res.Uncompressed = true }
|
|
||||||
|
|
||||||
func traceGetConn(req *http.Request, hostPort string) {
|
|
||||||
trace := httptrace.ContextClientTrace(req.Context())
|
|
||||||
if trace == nil || trace.GetConn == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
trace.GetConn(hostPort)
|
|
||||||
}
|
|
||||||
|
|
||||||
func traceGotConn(req *http.Request, cc *ClientConn) {
|
|
||||||
trace := httptrace.ContextClientTrace(req.Context())
|
|
||||||
if trace == nil || trace.GotConn == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
ci := httptrace.GotConnInfo{Conn: cc.tconn}
|
|
||||||
cc.mu.Lock()
|
|
||||||
ci.Reused = cc.nextStreamID > 1
|
|
||||||
ci.WasIdle = len(cc.streams) == 0 && ci.Reused
|
|
||||||
if ci.WasIdle && !cc.lastActive.IsZero() {
|
|
||||||
ci.IdleTime = time.Now().Sub(cc.lastActive)
|
|
||||||
}
|
|
||||||
cc.mu.Unlock()
|
|
||||||
|
|
||||||
trace.GotConn(ci)
|
|
||||||
}
|
|
||||||
|
|
||||||
func traceWroteHeaders(trace *clientTrace) {
|
|
||||||
if trace != nil && trace.WroteHeaders != nil {
|
|
||||||
trace.WroteHeaders()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func traceGot100Continue(trace *clientTrace) {
|
|
||||||
if trace != nil && trace.Got100Continue != nil {
|
|
||||||
trace.Got100Continue()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func traceWait100Continue(trace *clientTrace) {
|
|
||||||
if trace != nil && trace.Wait100Continue != nil {
|
|
||||||
trace.Wait100Continue()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func traceWroteRequest(trace *clientTrace, err error) {
|
|
||||||
if trace != nil && trace.WroteRequest != nil {
|
|
||||||
trace.WroteRequest(httptrace.WroteRequestInfo{Err: err})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func traceFirstResponseByte(trace *clientTrace) {
|
|
||||||
if trace != nil && trace.GotFirstResponseByte != nil {
|
|
||||||
trace.GotFirstResponseByte()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func requestTrace(req *http.Request) *clientTrace {
|
|
||||||
trace := httptrace.ContextClientTrace(req.Context())
|
|
||||||
return (*clientTrace)(trace)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Ping sends a PING frame to the server and waits for the ack.
|
|
||||||
func (cc *ClientConn) Ping(ctx context.Context) error {
|
|
||||||
return cc.ping(ctx)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Shutdown gracefully closes the client connection, waiting for running streams to complete.
|
|
||||||
func (cc *ClientConn) Shutdown(ctx context.Context) error {
|
|
||||||
return cc.shutdown(ctx)
|
|
||||||
}
|
|
|
@ -1,36 +0,0 @@
|
||||||
// Copyright 2016 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.7,!go1.8
|
|
||||||
|
|
||||||
package http2
|
|
||||||
|
|
||||||
import "crypto/tls"
|
|
||||||
|
|
||||||
// temporary copy of Go 1.7's private tls.Config.clone:
|
|
||||||
func cloneTLSConfig(c *tls.Config) *tls.Config {
|
|
||||||
return &tls.Config{
|
|
||||||
Rand: c.Rand,
|
|
||||||
Time: c.Time,
|
|
||||||
Certificates: c.Certificates,
|
|
||||||
NameToCertificate: c.NameToCertificate,
|
|
||||||
GetCertificate: c.GetCertificate,
|
|
||||||
RootCAs: c.RootCAs,
|
|
||||||
NextProtos: c.NextProtos,
|
|
||||||
ServerName: c.ServerName,
|
|
||||||
ClientAuth: c.ClientAuth,
|
|
||||||
ClientCAs: c.ClientCAs,
|
|
||||||
InsecureSkipVerify: c.InsecureSkipVerify,
|
|
||||||
CipherSuites: c.CipherSuites,
|
|
||||||
PreferServerCipherSuites: c.PreferServerCipherSuites,
|
|
||||||
SessionTicketsDisabled: c.SessionTicketsDisabled,
|
|
||||||
SessionTicketKey: c.SessionTicketKey,
|
|
||||||
ClientSessionCache: c.ClientSessionCache,
|
|
||||||
MinVersion: c.MinVersion,
|
|
||||||
MaxVersion: c.MaxVersion,
|
|
||||||
CurvePreferences: c.CurvePreferences,
|
|
||||||
DynamicRecordSizingDisabled: c.DynamicRecordSizingDisabled,
|
|
||||||
Renegotiation: c.Renegotiation,
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,56 +0,0 @@
|
||||||
// Copyright 2015 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.8
|
|
||||||
|
|
||||||
package http2
|
|
||||||
|
|
||||||
import (
|
|
||||||
"crypto/tls"
|
|
||||||
"io"
|
|
||||||
"net/http"
|
|
||||||
)
|
|
||||||
|
|
||||||
func cloneTLSConfig(c *tls.Config) *tls.Config {
|
|
||||||
c2 := c.Clone()
|
|
||||||
c2.GetClientCertificate = c.GetClientCertificate // golang.org/issue/19264
|
|
||||||
return c2
|
|
||||||
}
|
|
||||||
|
|
||||||
var _ http.Pusher = (*responseWriter)(nil)
|
|
||||||
|
|
||||||
// Push implements http.Pusher.
|
|
||||||
func (w *responseWriter) Push(target string, opts *http.PushOptions) error {
|
|
||||||
internalOpts := pushOptions{}
|
|
||||||
if opts != nil {
|
|
||||||
internalOpts.Method = opts.Method
|
|
||||||
internalOpts.Header = opts.Header
|
|
||||||
}
|
|
||||||
return w.push(target, internalOpts)
|
|
||||||
}
|
|
||||||
|
|
||||||
func configureServer18(h1 *http.Server, h2 *Server) error {
|
|
||||||
if h2.IdleTimeout == 0 {
|
|
||||||
if h1.IdleTimeout != 0 {
|
|
||||||
h2.IdleTimeout = h1.IdleTimeout
|
|
||||||
} else {
|
|
||||||
h2.IdleTimeout = h1.ReadTimeout
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func shouldLogPanic(panicValue interface{}) bool {
|
|
||||||
return panicValue != nil && panicValue != http.ErrAbortHandler
|
|
||||||
}
|
|
||||||
|
|
||||||
func reqGetBody(req *http.Request) func() (io.ReadCloser, error) {
|
|
||||||
return req.GetBody
|
|
||||||
}
|
|
||||||
|
|
||||||
func reqBodyIsNoBody(body io.ReadCloser) bool {
|
|
||||||
return body == http.NoBody
|
|
||||||
}
|
|
||||||
|
|
||||||
func go18httpNoBody() io.ReadCloser { return http.NoBody } // for tests only
|
|
|
@ -1,16 +0,0 @@
|
||||||
// Copyright 2015 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.9
|
|
||||||
|
|
||||||
package http2
|
|
||||||
|
|
||||||
import (
|
|
||||||
"net/http"
|
|
||||||
)
|
|
||||||
|
|
||||||
func configureServer19(s *http.Server, conf *Server) error {
|
|
||||||
s.RegisterOnShutdown(conf.state.startGracefulShutdown)
|
|
||||||
return nil
|
|
||||||
}
|
|
|
@ -6,12 +6,15 @@
|
||||||
|
|
||||||
package http2
|
package http2
|
||||||
|
|
||||||
import "net/textproto"
|
import (
|
||||||
|
"net/http/httptrace"
|
||||||
|
"net/textproto"
|
||||||
|
)
|
||||||
|
|
||||||
func traceHasWroteHeaderField(trace *clientTrace) bool { return false }
|
func traceHasWroteHeaderField(trace *httptrace.ClientTrace) bool { return false }
|
||||||
|
|
||||||
func traceWroteHeaderField(trace *clientTrace, k, v string) {}
|
func traceWroteHeaderField(trace *httptrace.ClientTrace, k, v string) {}
|
||||||
|
|
||||||
func traceGot1xxResponseFunc(trace *clientTrace) func(int, textproto.MIMEHeader) error {
|
func traceGot1xxResponseFunc(trace *httptrace.ClientTrace) func(int, textproto.MIMEHeader) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,21 +0,0 @@
|
||||||
// Copyright 2015 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.6
|
|
||||||
|
|
||||||
package http2
|
|
||||||
|
|
||||||
import (
|
|
||||||
"net/http"
|
|
||||||
"time"
|
|
||||||
)
|
|
||||||
|
|
||||||
func configureTransport(t1 *http.Transport) (*Transport, error) {
|
|
||||||
return nil, errTransportVersion
|
|
||||||
}
|
|
||||||
|
|
||||||
func transportExpectContinueTimeout(t1 *http.Transport) time.Duration {
|
|
||||||
return 0
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,95 +0,0 @@
|
||||||
// Copyright 2016 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.7
|
|
||||||
|
|
||||||
package http2
|
|
||||||
|
|
||||||
import (
|
|
||||||
"crypto/tls"
|
|
||||||
"errors"
|
|
||||||
"net"
|
|
||||||
"net/http"
|
|
||||||
"time"
|
|
||||||
)
|
|
||||||
|
|
||||||
type contextContext interface {
|
|
||||||
Done() <-chan struct{}
|
|
||||||
Err() error
|
|
||||||
}
|
|
||||||
|
|
||||||
var errCanceled = errors.New("canceled")
|
|
||||||
|
|
||||||
type fakeContext struct{}
|
|
||||||
|
|
||||||
func (fakeContext) Done() <-chan struct{} { return nil }
|
|
||||||
func (fakeContext) Err() error { panic("should not be called") }
|
|
||||||
|
|
||||||
func reqContext(r *http.Request) fakeContext {
|
|
||||||
return fakeContext{}
|
|
||||||
}
|
|
||||||
|
|
||||||
func setResponseUncompressed(res *http.Response) {
|
|
||||||
// Nothing.
|
|
||||||
}
|
|
||||||
|
|
||||||
type clientTrace struct{}
|
|
||||||
|
|
||||||
func requestTrace(*http.Request) *clientTrace { return nil }
|
|
||||||
func traceGetConn(*http.Request, string) {}
|
|
||||||
func traceGotConn(*http.Request, *ClientConn) {}
|
|
||||||
func traceFirstResponseByte(*clientTrace) {}
|
|
||||||
func traceWroteHeaders(*clientTrace) {}
|
|
||||||
func traceWroteRequest(*clientTrace, error) {}
|
|
||||||
func traceGot100Continue(trace *clientTrace) {}
|
|
||||||
func traceWait100Continue(trace *clientTrace) {}
|
|
||||||
|
|
||||||
func nop() {}
|
|
||||||
|
|
||||||
func serverConnBaseContext(c net.Conn, opts *ServeConnOpts) (ctx contextContext, cancel func()) {
|
|
||||||
return nil, nop
|
|
||||||
}
|
|
||||||
|
|
||||||
func contextWithCancel(ctx contextContext) (_ contextContext, cancel func()) {
|
|
||||||
return ctx, nop
|
|
||||||
}
|
|
||||||
|
|
||||||
func requestWithContext(req *http.Request, ctx contextContext) *http.Request {
|
|
||||||
return req
|
|
||||||
}
|
|
||||||
|
|
||||||
// temporary copy of Go 1.6's private tls.Config.clone:
|
|
||||||
func cloneTLSConfig(c *tls.Config) *tls.Config {
|
|
||||||
return &tls.Config{
|
|
||||||
Rand: c.Rand,
|
|
||||||
Time: c.Time,
|
|
||||||
Certificates: c.Certificates,
|
|
||||||
NameToCertificate: c.NameToCertificate,
|
|
||||||
GetCertificate: c.GetCertificate,
|
|
||||||
RootCAs: c.RootCAs,
|
|
||||||
NextProtos: c.NextProtos,
|
|
||||||
ServerName: c.ServerName,
|
|
||||||
ClientAuth: c.ClientAuth,
|
|
||||||
ClientCAs: c.ClientCAs,
|
|
||||||
InsecureSkipVerify: c.InsecureSkipVerify,
|
|
||||||
CipherSuites: c.CipherSuites,
|
|
||||||
PreferServerCipherSuites: c.PreferServerCipherSuites,
|
|
||||||
SessionTicketsDisabled: c.SessionTicketsDisabled,
|
|
||||||
SessionTicketKey: c.SessionTicketKey,
|
|
||||||
ClientSessionCache: c.ClientSessionCache,
|
|
||||||
MinVersion: c.MinVersion,
|
|
||||||
MaxVersion: c.MaxVersion,
|
|
||||||
CurvePreferences: c.CurvePreferences,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (cc *ClientConn) Ping(ctx contextContext) error {
|
|
||||||
return cc.ping(ctx)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (cc *ClientConn) Shutdown(ctx contextContext) error {
|
|
||||||
return cc.shutdown(ctx)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (t *Transport) idleConnTimeout() time.Duration { return 0 }
|
|
|
@ -1,29 +0,0 @@
|
||||||
// Copyright 2016 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.8
|
|
||||||
|
|
||||||
package http2
|
|
||||||
|
|
||||||
import (
|
|
||||||
"io"
|
|
||||||
"net/http"
|
|
||||||
)
|
|
||||||
|
|
||||||
func configureServer18(h1 *http.Server, h2 *Server) error {
|
|
||||||
// No IdleTimeout to sync prior to Go 1.8.
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func shouldLogPanic(panicValue interface{}) bool {
|
|
||||||
return panicValue != nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func reqGetBody(req *http.Request) func() (io.ReadCloser, error) {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func reqBodyIsNoBody(io.ReadCloser) bool { return false }
|
|
||||||
|
|
||||||
func go18httpNoBody() io.ReadCloser { return nil } // for tests only
|
|
|
@ -1,16 +0,0 @@
|
||||||
// Copyright 2016 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.9
|
|
||||||
|
|
||||||
package http2
|
|
||||||
|
|
||||||
import (
|
|
||||||
"net/http"
|
|
||||||
)
|
|
||||||
|
|
||||||
func configureServer19(s *http.Server, conf *Server) error {
|
|
||||||
// not supported prior to go1.9
|
|
||||||
return nil
|
|
||||||
}
|
|
|
@ -28,6 +28,7 @@ package http2
|
||||||
import (
|
import (
|
||||||
"bufio"
|
"bufio"
|
||||||
"bytes"
|
"bytes"
|
||||||
|
"context"
|
||||||
"crypto/tls"
|
"crypto/tls"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
@ -209,12 +210,14 @@ func ConfigureServer(s *http.Server, conf *Server) error {
|
||||||
conf = new(Server)
|
conf = new(Server)
|
||||||
}
|
}
|
||||||
conf.state = &serverInternalState{activeConns: make(map[*serverConn]struct{})}
|
conf.state = &serverInternalState{activeConns: make(map[*serverConn]struct{})}
|
||||||
if err := configureServer18(s, conf); err != nil {
|
if h1, h2 := s, conf; h2.IdleTimeout == 0 {
|
||||||
return err
|
if h1.IdleTimeout != 0 {
|
||||||
}
|
h2.IdleTimeout = h1.IdleTimeout
|
||||||
if err := configureServer19(s, conf); err != nil {
|
} else {
|
||||||
return err
|
h2.IdleTimeout = h1.ReadTimeout
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
s.RegisterOnShutdown(conf.state.startGracefulShutdown)
|
||||||
|
|
||||||
if s.TLSConfig == nil {
|
if s.TLSConfig == nil {
|
||||||
s.TLSConfig = new(tls.Config)
|
s.TLSConfig = new(tls.Config)
|
||||||
|
@ -435,6 +438,15 @@ func (s *Server) ServeConn(c net.Conn, opts *ServeConnOpts) {
|
||||||
sc.serve()
|
sc.serve()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func serverConnBaseContext(c net.Conn, opts *ServeConnOpts) (ctx context.Context, cancel func()) {
|
||||||
|
ctx, cancel = context.WithCancel(context.Background())
|
||||||
|
ctx = context.WithValue(ctx, http.LocalAddrContextKey, c.LocalAddr())
|
||||||
|
if hs := opts.baseConfig(); hs != nil {
|
||||||
|
ctx = context.WithValue(ctx, http.ServerContextKey, hs)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func (sc *serverConn) rejectConn(err ErrCode, debug string) {
|
func (sc *serverConn) rejectConn(err ErrCode, debug string) {
|
||||||
sc.vlogf("http2: server rejecting conn: %v, %s", err, debug)
|
sc.vlogf("http2: server rejecting conn: %v, %s", err, debug)
|
||||||
// ignoring errors. hanging up anyway.
|
// ignoring errors. hanging up anyway.
|
||||||
|
@ -450,7 +462,7 @@ type serverConn struct {
|
||||||
conn net.Conn
|
conn net.Conn
|
||||||
bw *bufferedWriter // writing to conn
|
bw *bufferedWriter // writing to conn
|
||||||
handler http.Handler
|
handler http.Handler
|
||||||
baseCtx contextContext
|
baseCtx context.Context
|
||||||
framer *Framer
|
framer *Framer
|
||||||
doneServing chan struct{} // closed when serverConn.serve ends
|
doneServing chan struct{} // closed when serverConn.serve ends
|
||||||
readFrameCh chan readFrameResult // written by serverConn.readFrames
|
readFrameCh chan readFrameResult // written by serverConn.readFrames
|
||||||
|
@ -530,7 +542,7 @@ type stream struct {
|
||||||
id uint32
|
id uint32
|
||||||
body *pipe // non-nil if expecting DATA frames
|
body *pipe // non-nil if expecting DATA frames
|
||||||
cw closeWaiter // closed wait stream transitions to closed state
|
cw closeWaiter // closed wait stream transitions to closed state
|
||||||
ctx contextContext
|
ctx context.Context
|
||||||
cancelCtx func()
|
cancelCtx func()
|
||||||
|
|
||||||
// owned by serverConn's serve loop:
|
// owned by serverConn's serve loop:
|
||||||
|
@ -1110,7 +1122,7 @@ func (sc *serverConn) startFrameWrite(wr FrameWriteRequest) {
|
||||||
|
|
||||||
// errHandlerPanicked is the error given to any callers blocked in a read from
|
// errHandlerPanicked is the error given to any callers blocked in a read from
|
||||||
// Request.Body when the main goroutine panics. Since most handlers read in the
|
// Request.Body when the main goroutine panics. Since most handlers read in the
|
||||||
// the main ServeHTTP goroutine, this will show up rarely.
|
// main ServeHTTP goroutine, this will show up rarely.
|
||||||
var errHandlerPanicked = errors.New("http2: handler panicked")
|
var errHandlerPanicked = errors.New("http2: handler panicked")
|
||||||
|
|
||||||
// wroteFrame is called on the serve goroutine with the result of
|
// wroteFrame is called on the serve goroutine with the result of
|
||||||
|
@ -1882,7 +1894,7 @@ func (sc *serverConn) newStream(id, pusherID uint32, state streamState) *stream
|
||||||
panic("internal error: cannot create stream with id 0")
|
panic("internal error: cannot create stream with id 0")
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx, cancelCtx := contextWithCancel(sc.baseCtx)
|
ctx, cancelCtx := context.WithCancel(sc.baseCtx)
|
||||||
st := &stream{
|
st := &stream{
|
||||||
sc: sc,
|
sc: sc,
|
||||||
id: id,
|
id: id,
|
||||||
|
@ -2048,7 +2060,7 @@ func (sc *serverConn) newWriterAndRequestNoBody(st *stream, rp requestParam) (*r
|
||||||
Body: body,
|
Body: body,
|
||||||
Trailer: trailer,
|
Trailer: trailer,
|
||||||
}
|
}
|
||||||
req = requestWithContext(req, st.ctx)
|
req = req.WithContext(st.ctx)
|
||||||
|
|
||||||
rws := responseWriterStatePool.Get().(*responseWriterState)
|
rws := responseWriterStatePool.Get().(*responseWriterState)
|
||||||
bwSave := rws.bw
|
bwSave := rws.bw
|
||||||
|
@ -2076,7 +2088,7 @@ func (sc *serverConn) runHandler(rw *responseWriter, req *http.Request, handler
|
||||||
stream: rw.rws.stream,
|
stream: rw.rws.stream,
|
||||||
})
|
})
|
||||||
// Same as net/http:
|
// Same as net/http:
|
||||||
if shouldLogPanic(e) {
|
if e != nil && e != http.ErrAbortHandler {
|
||||||
const size = 64 << 10
|
const size = 64 << 10
|
||||||
buf := make([]byte, size)
|
buf := make([]byte, size)
|
||||||
buf = buf[:runtime.Stack(buf, false)]
|
buf = buf[:runtime.Stack(buf, false)]
|
||||||
|
@ -2638,14 +2650,9 @@ var (
|
||||||
ErrPushLimitReached = errors.New("http2: push would exceed peer's SETTINGS_MAX_CONCURRENT_STREAMS")
|
ErrPushLimitReached = errors.New("http2: push would exceed peer's SETTINGS_MAX_CONCURRENT_STREAMS")
|
||||||
)
|
)
|
||||||
|
|
||||||
// pushOptions is the internal version of http.PushOptions, which we
|
var _ http.Pusher = (*responseWriter)(nil)
|
||||||
// cannot include here because it's only defined in Go 1.8 and later.
|
|
||||||
type pushOptions struct {
|
|
||||||
Method string
|
|
||||||
Header http.Header
|
|
||||||
}
|
|
||||||
|
|
||||||
func (w *responseWriter) push(target string, opts pushOptions) error {
|
func (w *responseWriter) Push(target string, opts *http.PushOptions) error {
|
||||||
st := w.rws.stream
|
st := w.rws.stream
|
||||||
sc := st.sc
|
sc := st.sc
|
||||||
sc.serveG.checkNotOn()
|
sc.serveG.checkNotOn()
|
||||||
|
@ -2656,6 +2663,10 @@ func (w *responseWriter) push(target string, opts pushOptions) error {
|
||||||
return ErrRecursivePush
|
return ErrRecursivePush
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if opts == nil {
|
||||||
|
opts = new(http.PushOptions)
|
||||||
|
}
|
||||||
|
|
||||||
// Default options.
|
// Default options.
|
||||||
if opts.Method == "" {
|
if opts.Method == "" {
|
||||||
opts.Method = "GET"
|
opts.Method = "GET"
|
||||||
|
|
|
@ -10,6 +10,7 @@ import (
|
||||||
"bufio"
|
"bufio"
|
||||||
"bytes"
|
"bytes"
|
||||||
"compress/gzip"
|
"compress/gzip"
|
||||||
|
"context"
|
||||||
"crypto/rand"
|
"crypto/rand"
|
||||||
"crypto/tls"
|
"crypto/tls"
|
||||||
"errors"
|
"errors"
|
||||||
|
@ -21,6 +22,7 @@ import (
|
||||||
mathrand "math/rand"
|
mathrand "math/rand"
|
||||||
"net"
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"net/http/httptrace"
|
||||||
"net/textproto"
|
"net/textproto"
|
||||||
"sort"
|
"sort"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
@ -118,16 +120,56 @@ func (t *Transport) disableCompression() bool {
|
||||||
return t.DisableCompression || (t.t1 != nil && t.t1.DisableCompression)
|
return t.DisableCompression || (t.t1 != nil && t.t1.DisableCompression)
|
||||||
}
|
}
|
||||||
|
|
||||||
var errTransportVersion = errors.New("http2: ConfigureTransport is only supported starting at Go 1.6")
|
|
||||||
|
|
||||||
// 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 requires Go 1.6 or later and returns an error if the net/http package is too old
|
// It returns an error if t1 has already been HTTP/2-enabled.
|
||||||
// or if t1 has already been HTTP/2-enabled.
|
|
||||||
func ConfigureTransport(t1 *http.Transport) error {
|
func ConfigureTransport(t1 *http.Transport) error {
|
||||||
_, err := configureTransport(t1) // in configure_transport.go (go1.6) or not_go16.go
|
_, err := configureTransport(t1)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func configureTransport(t1 *http.Transport) (*Transport, error) {
|
||||||
|
connPool := new(clientConnPool)
|
||||||
|
t2 := &Transport{
|
||||||
|
ConnPool: noDialClientConnPool{connPool},
|
||||||
|
t1: t1,
|
||||||
|
}
|
||||||
|
connPool.t = t2
|
||||||
|
if err := registerHTTPSProtocol(t1, noDialH2RoundTripper{t2}); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if t1.TLSClientConfig == nil {
|
||||||
|
t1.TLSClientConfig = new(tls.Config)
|
||||||
|
}
|
||||||
|
if !strSliceContains(t1.TLSClientConfig.NextProtos, "h2") {
|
||||||
|
t1.TLSClientConfig.NextProtos = append([]string{"h2"}, t1.TLSClientConfig.NextProtos...)
|
||||||
|
}
|
||||||
|
if !strSliceContains(t1.TLSClientConfig.NextProtos, "http/1.1") {
|
||||||
|
t1.TLSClientConfig.NextProtos = append(t1.TLSClientConfig.NextProtos, "http/1.1")
|
||||||
|
}
|
||||||
|
upgradeFn := func(authority string, c *tls.Conn) http.RoundTripper {
|
||||||
|
addr := authorityAddr("https", authority)
|
||||||
|
if used, err := connPool.addConnIfNeeded(addr, t2, c); err != nil {
|
||||||
|
go c.Close()
|
||||||
|
return erringRoundTripper{err}
|
||||||
|
} else if !used {
|
||||||
|
// Turns out we don't need this c.
|
||||||
|
// For example, two goroutines made requests to the same host
|
||||||
|
// at the same time, both kicking off TCP dials. (since protocol
|
||||||
|
// was unknown)
|
||||||
|
go c.Close()
|
||||||
|
}
|
||||||
|
return t2
|
||||||
|
}
|
||||||
|
if m := t1.TLSNextProto; len(m) == 0 {
|
||||||
|
t1.TLSNextProto = map[string]func(string, *tls.Conn) http.RoundTripper{
|
||||||
|
"h2": upgradeFn,
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
m["h2"] = upgradeFn
|
||||||
|
}
|
||||||
|
return t2, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (t *Transport) connPool() ClientConnPool {
|
func (t *Transport) connPool() ClientConnPool {
|
||||||
t.connPoolOnce.Do(t.initConnPool)
|
t.connPoolOnce.Do(t.initConnPool)
|
||||||
return t.connPoolOrDef
|
return t.connPoolOrDef
|
||||||
|
@ -192,7 +234,7 @@ type ClientConn struct {
|
||||||
type clientStream struct {
|
type clientStream struct {
|
||||||
cc *ClientConn
|
cc *ClientConn
|
||||||
req *http.Request
|
req *http.Request
|
||||||
trace *clientTrace // or nil
|
trace *httptrace.ClientTrace // or nil
|
||||||
ID uint32
|
ID uint32
|
||||||
resc chan resAndError
|
resc chan resAndError
|
||||||
bufPipe pipe // buffered pipe with the flow-controlled response payload
|
bufPipe pipe // buffered pipe with the flow-controlled response payload
|
||||||
|
@ -226,7 +268,7 @@ type clientStream struct {
|
||||||
// channel to be signaled. A non-nil error is returned only if the request was
|
// channel to be signaled. A non-nil error is returned only if the request was
|
||||||
// canceled.
|
// canceled.
|
||||||
func awaitRequestCancel(req *http.Request, done <-chan struct{}) error {
|
func awaitRequestCancel(req *http.Request, done <-chan struct{}) error {
|
||||||
ctx := reqContext(req)
|
ctx := req.Context()
|
||||||
if req.Cancel == nil && ctx.Done() == nil {
|
if req.Cancel == nil && ctx.Done() == nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -401,8 +443,8 @@ func (t *Transport) RoundTripOpt(req *http.Request, opt RoundTripOpt) (*http.Res
|
||||||
select {
|
select {
|
||||||
case <-time.After(time.Second * time.Duration(backoff)):
|
case <-time.After(time.Second * time.Duration(backoff)):
|
||||||
continue
|
continue
|
||||||
case <-reqContext(req).Done():
|
case <-req.Context().Done():
|
||||||
return nil, reqContext(req).Err()
|
return nil, req.Context().Err()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -439,16 +481,15 @@ func shouldRetryRequest(req *http.Request, err error, afterBodyWrite bool) (*htt
|
||||||
}
|
}
|
||||||
// If the Body is nil (or http.NoBody), it's safe to reuse
|
// If the Body is nil (or http.NoBody), it's safe to reuse
|
||||||
// this request and its Body.
|
// this request and its Body.
|
||||||
if req.Body == nil || reqBodyIsNoBody(req.Body) {
|
if req.Body == nil || req.Body == http.NoBody {
|
||||||
return req, nil
|
return req, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// If the request body can be reset back to its original
|
// If the request body can be reset back to its original
|
||||||
// state via the optional req.GetBody, do that.
|
// state via the optional req.GetBody, do that.
|
||||||
getBody := reqGetBody(req) // Go 1.8: getBody = req.GetBody
|
if req.GetBody != nil {
|
||||||
if getBody != nil {
|
|
||||||
// TODO: consider a req.Body.Close here? or audit that all caller paths do?
|
// TODO: consider a req.Body.Close here? or audit that all caller paths do?
|
||||||
body, err := getBody()
|
body, err := req.GetBody()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -494,7 +535,7 @@ func (t *Transport) dialClientConn(addr string, singleUse bool) (*ClientConn, er
|
||||||
func (t *Transport) newTLSConfig(host string) *tls.Config {
|
func (t *Transport) newTLSConfig(host string) *tls.Config {
|
||||||
cfg := new(tls.Config)
|
cfg := new(tls.Config)
|
||||||
if t.TLSClientConfig != nil {
|
if t.TLSClientConfig != nil {
|
||||||
*cfg = *cloneTLSConfig(t.TLSClientConfig)
|
*cfg = *t.TLSClientConfig.Clone()
|
||||||
}
|
}
|
||||||
if !strSliceContains(cfg.NextProtos, NextProtoTLS) {
|
if !strSliceContains(cfg.NextProtos, NextProtoTLS) {
|
||||||
cfg.NextProtos = append([]string{NextProtoTLS}, cfg.NextProtos...)
|
cfg.NextProtos = append([]string{NextProtoTLS}, cfg.NextProtos...)
|
||||||
|
@ -545,7 +586,7 @@ func (t *Transport) expectContinueTimeout() time.Duration {
|
||||||
if t.t1 == nil {
|
if t.t1 == nil {
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
return transportExpectContinueTimeout(t.t1)
|
return t.t1.ExpectContinueTimeout
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *Transport) NewClientConn(c net.Conn) (*ClientConn, error) {
|
func (t *Transport) NewClientConn(c net.Conn) (*ClientConn, error) {
|
||||||
|
@ -711,8 +752,7 @@ func (cc *ClientConn) closeIfIdle() {
|
||||||
var shutdownEnterWaitStateHook = func() {}
|
var shutdownEnterWaitStateHook = func() {}
|
||||||
|
|
||||||
// Shutdown gracefully close the client connection, waiting for running streams to complete.
|
// Shutdown gracefully close the client connection, waiting for running streams to complete.
|
||||||
// Public implementation is in go17.go and not_go17.go
|
func (cc *ClientConn) Shutdown(ctx context.Context) error {
|
||||||
func (cc *ClientConn) shutdown(ctx contextContext) error {
|
|
||||||
if err := cc.sendGoAway(); err != nil {
|
if err := cc.sendGoAway(); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -882,7 +922,7 @@ func checkConnHeaders(req *http.Request) error {
|
||||||
// req.ContentLength, where 0 actually means zero (not unknown) and -1
|
// req.ContentLength, where 0 actually means zero (not unknown) and -1
|
||||||
// means unknown.
|
// means unknown.
|
||||||
func actualContentLength(req *http.Request) int64 {
|
func actualContentLength(req *http.Request) int64 {
|
||||||
if req.Body == nil || reqBodyIsNoBody(req.Body) {
|
if req.Body == nil || req.Body == http.NoBody {
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
if req.ContentLength != 0 {
|
if req.ContentLength != 0 {
|
||||||
|
@ -952,7 +992,7 @@ func (cc *ClientConn) roundTrip(req *http.Request) (res *http.Response, gotErrAf
|
||||||
|
|
||||||
cs := cc.newStream()
|
cs := cc.newStream()
|
||||||
cs.req = req
|
cs.req = req
|
||||||
cs.trace = requestTrace(req)
|
cs.trace = httptrace.ContextClientTrace(req.Context())
|
||||||
cs.requestedGzip = requestedGzip
|
cs.requestedGzip = requestedGzip
|
||||||
bodyWriter := cc.t.getBodyWriterState(cs, body)
|
bodyWriter := cc.t.getBodyWriterState(cs, body)
|
||||||
cs.on100 = bodyWriter.on100
|
cs.on100 = bodyWriter.on100
|
||||||
|
@ -990,7 +1030,7 @@ func (cc *ClientConn) roundTrip(req *http.Request) (res *http.Response, gotErrAf
|
||||||
|
|
||||||
readLoopResCh := cs.resc
|
readLoopResCh := cs.resc
|
||||||
bodyWritten := false
|
bodyWritten := false
|
||||||
ctx := reqContext(req)
|
ctx := req.Context()
|
||||||
|
|
||||||
handleReadLoopResponse := func(re resAndError) (*http.Response, bool, error) {
|
handleReadLoopResponse := func(re resAndError) (*http.Response, bool, error) {
|
||||||
res := re.res
|
res := re.res
|
||||||
|
@ -1060,6 +1100,7 @@ func (cc *ClientConn) roundTrip(req *http.Request) (res *http.Response, gotErrAf
|
||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
cc.forgetStreamID(cs.ID)
|
||||||
return nil, cs.getStartedWrite(), err
|
return nil, cs.getStartedWrite(), err
|
||||||
}
|
}
|
||||||
bodyWritten = true
|
bodyWritten = true
|
||||||
|
@ -1181,6 +1222,7 @@ func (cs *clientStream) writeRequestBody(body io.Reader, bodyCloser io.Closer) (
|
||||||
sawEOF = true
|
sawEOF = true
|
||||||
err = nil
|
err = nil
|
||||||
} else if err != nil {
|
} else if err != nil {
|
||||||
|
cc.writeStreamReset(cs.ID, ErrCodeCancel, err)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1416,7 +1458,7 @@ func (cc *ClientConn) encodeHeaders(req *http.Request, addGzipHeader bool, trail
|
||||||
return nil, errRequestHeaderListSize
|
return nil, errRequestHeaderListSize
|
||||||
}
|
}
|
||||||
|
|
||||||
trace := requestTrace(req)
|
trace := httptrace.ContextClientTrace(req.Context())
|
||||||
traceHeaders := traceHasWroteHeaderField(trace)
|
traceHeaders := traceHasWroteHeaderField(trace)
|
||||||
|
|
||||||
// Header list size is ok. Write the headers.
|
// Header list size is ok. Write the headers.
|
||||||
|
@ -1839,7 +1881,7 @@ func (rl *clientConnReadLoop) handleResponse(cs *clientStream, f *MetaHeadersFra
|
||||||
res.Header.Del("Content-Length")
|
res.Header.Del("Content-Length")
|
||||||
res.ContentLength = -1
|
res.ContentLength = -1
|
||||||
res.Body = &gzipReader{body: res.Body}
|
res.Body = &gzipReader{body: res.Body}
|
||||||
setResponseUncompressed(res)
|
res.Uncompressed = true
|
||||||
}
|
}
|
||||||
return res, nil
|
return res, nil
|
||||||
}
|
}
|
||||||
|
@ -2216,8 +2258,7 @@ func (rl *clientConnReadLoop) processResetStream(f *RSTStreamFrame) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ping sends a PING frame to the server and waits for the ack.
|
// Ping sends a PING frame to the server and waits for the ack.
|
||||||
// Public implementation is in go17.go and not_go17.go
|
func (cc *ClientConn) Ping(ctx context.Context) error {
|
||||||
func (cc *ClientConn) ping(ctx contextContext) error {
|
|
||||||
c := make(chan struct{})
|
c := make(chan struct{})
|
||||||
// Generate a random payload
|
// Generate a random payload
|
||||||
var p [8]byte
|
var p [8]byte
|
||||||
|
@ -2451,3 +2492,91 @@ func (s bodyWriterState) scheduleBodyWrite() {
|
||||||
func isConnectionCloseRequest(req *http.Request) bool {
|
func isConnectionCloseRequest(req *http.Request) bool {
|
||||||
return req.Close || httpguts.HeaderValuesContainsToken(req.Header["Connection"], "close")
|
return req.Close || httpguts.HeaderValuesContainsToken(req.Header["Connection"], "close")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// registerHTTPSProtocol calls Transport.RegisterProtocol but
|
||||||
|
// converting panics into errors.
|
||||||
|
func registerHTTPSProtocol(t *http.Transport, rt noDialH2RoundTripper) (err error) {
|
||||||
|
defer func() {
|
||||||
|
if e := recover(); e != nil {
|
||||||
|
err = fmt.Errorf("%v", e)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
t.RegisterProtocol("https", rt)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// noDialH2RoundTripper is a RoundTripper which only tries to complete the request
|
||||||
|
// if there's already has a cached connection to the host.
|
||||||
|
// (The field is exported so it can be accessed via reflect from net/http; tested
|
||||||
|
// by TestNoDialH2RoundTripperType)
|
||||||
|
type noDialH2RoundTripper struct{ *Transport }
|
||||||
|
|
||||||
|
func (rt noDialH2RoundTripper) RoundTrip(req *http.Request) (*http.Response, error) {
|
||||||
|
res, err := rt.Transport.RoundTrip(req)
|
||||||
|
if isNoCachedConnError(err) {
|
||||||
|
return nil, http.ErrSkipAltProtocol
|
||||||
|
}
|
||||||
|
return res, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t *Transport) idleConnTimeout() time.Duration {
|
||||||
|
if t.t1 != nil {
|
||||||
|
return t.t1.IdleConnTimeout
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func traceGetConn(req *http.Request, hostPort string) {
|
||||||
|
trace := httptrace.ContextClientTrace(req.Context())
|
||||||
|
if trace == nil || trace.GetConn == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
trace.GetConn(hostPort)
|
||||||
|
}
|
||||||
|
|
||||||
|
func traceGotConn(req *http.Request, cc *ClientConn) {
|
||||||
|
trace := httptrace.ContextClientTrace(req.Context())
|
||||||
|
if trace == nil || trace.GotConn == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ci := httptrace.GotConnInfo{Conn: cc.tconn}
|
||||||
|
cc.mu.Lock()
|
||||||
|
ci.Reused = cc.nextStreamID > 1
|
||||||
|
ci.WasIdle = len(cc.streams) == 0 && ci.Reused
|
||||||
|
if ci.WasIdle && !cc.lastActive.IsZero() {
|
||||||
|
ci.IdleTime = time.Now().Sub(cc.lastActive)
|
||||||
|
}
|
||||||
|
cc.mu.Unlock()
|
||||||
|
|
||||||
|
trace.GotConn(ci)
|
||||||
|
}
|
||||||
|
|
||||||
|
func traceWroteHeaders(trace *httptrace.ClientTrace) {
|
||||||
|
if trace != nil && trace.WroteHeaders != nil {
|
||||||
|
trace.WroteHeaders()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func traceGot100Continue(trace *httptrace.ClientTrace) {
|
||||||
|
if trace != nil && trace.Got100Continue != nil {
|
||||||
|
trace.Got100Continue()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func traceWait100Continue(trace *httptrace.ClientTrace) {
|
||||||
|
if trace != nil && trace.Wait100Continue != nil {
|
||||||
|
trace.Wait100Continue()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func traceWroteRequest(trace *httptrace.ClientTrace, err error) {
|
||||||
|
if trace != nil && trace.WroteRequest != nil {
|
||||||
|
trace.WroteRequest(httptrace.WroteRequestInfo{Err: err})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func traceFirstResponseByte(trace *httptrace.ClientTrace) {
|
||||||
|
if trace != nil && trace.GotFirstResponseByte != nil {
|
||||||
|
trace.GotFirstResponseByte()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -329,7 +329,7 @@ func (wu writeWindowUpdate) writeFrame(ctx writeContext) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
// encodeHeaders encodes an http.Header. If keys is not nil, then (k, h[k])
|
// encodeHeaders encodes an http.Header. If keys is not nil, then (k, h[k])
|
||||||
// is encoded only only if k is in keys.
|
// is encoded only if k is in keys.
|
||||||
func encodeHeaders(enc *hpack.Encoder, h http.Header, keys []string) {
|
func encodeHeaders(enc *hpack.Encoder, h http.Header, keys []string) {
|
||||||
if keys == nil {
|
if keys == nil {
|
||||||
sorter := sorterPool.Get().(*sorter)
|
sorter := sorterPool.Get().(*sorter)
|
||||||
|
|
|
@ -64,6 +64,7 @@ package trace // import "golang.org/x/net/trace"
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"html/template"
|
"html/template"
|
||||||
"io"
|
"io"
|
||||||
|
@ -124,6 +125,18 @@ func init() {
|
||||||
http.HandleFunc("/debug/events", Events)
|
http.HandleFunc("/debug/events", Events)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NewContext returns a copy of the parent context
|
||||||
|
// and associates it with a Trace.
|
||||||
|
func NewContext(ctx context.Context, tr Trace) context.Context {
|
||||||
|
return context.WithValue(ctx, contextKey, tr)
|
||||||
|
}
|
||||||
|
|
||||||
|
// FromContext returns the Trace bound to the context, if any.
|
||||||
|
func FromContext(ctx context.Context) (tr Trace, ok bool) {
|
||||||
|
tr, ok = ctx.Value(contextKey).(Trace)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// Traces responds with traces from the program.
|
// Traces responds with traces from the program.
|
||||||
// The package initialization registers it in http.DefaultServeMux
|
// The package initialization registers it in http.DefaultServeMux
|
||||||
// at /debug/requests.
|
// at /debug/requests.
|
||||||
|
|
|
@ -1,21 +0,0 @@
|
||||||
// Copyright 2017 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.7
|
|
||||||
|
|
||||||
package trace
|
|
||||||
|
|
||||||
import "golang.org/x/net/context"
|
|
||||||
|
|
||||||
// NewContext returns a copy of the parent context
|
|
||||||
// and associates it with a Trace.
|
|
||||||
func NewContext(ctx context.Context, tr Trace) context.Context {
|
|
||||||
return context.WithValue(ctx, contextKey, tr)
|
|
||||||
}
|
|
||||||
|
|
||||||
// FromContext returns the Trace bound to the context, if any.
|
|
||||||
func FromContext(ctx context.Context) (tr Trace, ok bool) {
|
|
||||||
tr, ok = ctx.Value(contextKey).(Trace)
|
|
||||||
return
|
|
||||||
}
|
|
|
@ -1,21 +0,0 @@
|
||||||
// Copyright 2017 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.7
|
|
||||||
|
|
||||||
package trace
|
|
||||||
|
|
||||||
import "context"
|
|
||||||
|
|
||||||
// NewContext returns a copy of the parent context
|
|
||||||
// and associates it with a Trace.
|
|
||||||
func NewContext(ctx context.Context, tr Trace) context.Context {
|
|
||||||
return context.WithValue(ctx, contextKey, tr)
|
|
||||||
}
|
|
||||||
|
|
||||||
// FromContext returns the Trace bound to the context, if any.
|
|
||||||
func FromContext(ctx context.Context) (tr Trace, ok bool) {
|
|
||||||
tr, ok = ctx.Value(contextKey).(Trace)
|
|
||||||
return
|
|
||||||
}
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
// 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 !gccgo
|
||||||
|
|
||||||
|
#include "textflag.h"
|
||||||
|
|
||||||
|
//
|
||||||
|
// System calls for ppc64, AIX are implemented in runtime/syscall_aix.go
|
||||||
|
//
|
||||||
|
|
||||||
|
TEXT ·syscall6(SB),NOSPLIT,$0-88
|
||||||
|
JMP syscall·syscall6(SB)
|
||||||
|
|
||||||
|
TEXT ·rawSyscall6(SB),NOSPLIT,$0-88
|
||||||
|
JMP syscall·rawSyscall6(SB)
|
|
@ -15,12 +15,6 @@
|
||||||
// Just jump to package syscall's implementation for all these functions.
|
// Just jump to package syscall's implementation for all these functions.
|
||||||
// The runtime may know about them.
|
// The runtime may know about them.
|
||||||
|
|
||||||
TEXT ·Syscall(SB),NOSPLIT,$0-56
|
|
||||||
BR syscall·Syscall(SB)
|
|
||||||
|
|
||||||
TEXT ·Syscall6(SB),NOSPLIT,$0-80
|
|
||||||
BR syscall·Syscall6(SB)
|
|
||||||
|
|
||||||
TEXT ·SyscallNoError(SB),NOSPLIT,$0-48
|
TEXT ·SyscallNoError(SB),NOSPLIT,$0-48
|
||||||
BL runtime·entersyscall(SB)
|
BL runtime·entersyscall(SB)
|
||||||
MOVD a1+8(FP), R3
|
MOVD a1+8(FP), R3
|
||||||
|
@ -36,12 +30,6 @@ TEXT ·SyscallNoError(SB),NOSPLIT,$0-48
|
||||||
BL runtime·exitsyscall(SB)
|
BL runtime·exitsyscall(SB)
|
||||||
RET
|
RET
|
||||||
|
|
||||||
TEXT ·RawSyscall(SB),NOSPLIT,$0-56
|
|
||||||
BR syscall·RawSyscall(SB)
|
|
||||||
|
|
||||||
TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
|
|
||||||
BR syscall·RawSyscall6(SB)
|
|
||||||
|
|
||||||
TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48
|
TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48
|
||||||
MOVD a1+8(FP), R3
|
MOVD a1+8(FP), R3
|
||||||
MOVD a2+16(FP), R4
|
MOVD a2+16(FP), R4
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
GOOSARCH="${GOOS}_${GOARCH}"
|
GOOSARCH="${GOOS}_${GOARCH}"
|
||||||
|
|
||||||
# defaults
|
# defaults
|
||||||
mksyscall="./mksyscall.pl"
|
mksyscall="go run mksyscall.go"
|
||||||
mkerrors="./mkerrors.sh"
|
mkerrors="./mkerrors.sh"
|
||||||
zerrors="zerrors_$GOOSARCH.go"
|
zerrors="zerrors_$GOOSARCH.go"
|
||||||
mksysctl=""
|
mksysctl=""
|
||||||
|
@ -61,17 +61,17 @@ _* | *_ | _)
|
||||||
;;
|
;;
|
||||||
aix_ppc)
|
aix_ppc)
|
||||||
mkerrors="$mkerrors -maix32"
|
mkerrors="$mkerrors -maix32"
|
||||||
mksyscall="perl mksyscall_aix.pl -aix"
|
mksyscall="./mksyscall_aix_ppc.pl -aix"
|
||||||
mktypes="GOARCH=$GOARCH go tool cgo -godefs"
|
mktypes="GOARCH=$GOARCH go tool cgo -godefs"
|
||||||
;;
|
;;
|
||||||
aix_ppc64)
|
aix_ppc64)
|
||||||
mkerrors="$mkerrors -maix64"
|
mkerrors="$mkerrors -maix64"
|
||||||
mksyscall="perl mksyscall_aix.pl -aix"
|
mksyscall="./mksyscall_aix_ppc64.pl -aix"
|
||||||
mktypes="GOARCH=$GOARCH go tool cgo -godefs"
|
mktypes="GOARCH=$GOARCH go tool cgo -godefs"
|
||||||
;;
|
;;
|
||||||
darwin_386)
|
darwin_386)
|
||||||
mkerrors="$mkerrors -m32"
|
mkerrors="$mkerrors -m32"
|
||||||
mksyscall="./mksyscall.pl -l32"
|
mksyscall="go run mksyscall.go -l32"
|
||||||
mksysnum="./mksysnum_darwin.pl $(xcrun --show-sdk-path --sdk macosx)/usr/include/sys/syscall.h"
|
mksysnum="./mksysnum_darwin.pl $(xcrun --show-sdk-path --sdk macosx)/usr/include/sys/syscall.h"
|
||||||
mktypes="GOARCH=$GOARCH go tool cgo -godefs"
|
mktypes="GOARCH=$GOARCH go tool cgo -godefs"
|
||||||
;;
|
;;
|
||||||
|
@ -92,13 +92,13 @@ darwin_arm64)
|
||||||
;;
|
;;
|
||||||
dragonfly_amd64)
|
dragonfly_amd64)
|
||||||
mkerrors="$mkerrors -m64"
|
mkerrors="$mkerrors -m64"
|
||||||
mksyscall="./mksyscall.pl -dragonfly"
|
mksyscall="go run mksyscall.go -dragonfly"
|
||||||
mksysnum="curl -s 'http://gitweb.dragonflybsd.org/dragonfly.git/blob_plain/HEAD:/sys/kern/syscalls.master' | ./mksysnum_dragonfly.pl"
|
mksysnum="curl -s 'http://gitweb.dragonflybsd.org/dragonfly.git/blob_plain/HEAD:/sys/kern/syscalls.master' | ./mksysnum_dragonfly.pl"
|
||||||
mktypes="GOARCH=$GOARCH go tool cgo -godefs"
|
mktypes="GOARCH=$GOARCH go tool cgo -godefs"
|
||||||
;;
|
;;
|
||||||
freebsd_386)
|
freebsd_386)
|
||||||
mkerrors="$mkerrors -m32"
|
mkerrors="$mkerrors -m32"
|
||||||
mksyscall="./mksyscall.pl -l32"
|
mksyscall="go run mksyscall.go -l32"
|
||||||
mksysnum="curl -s 'http://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master' | ./mksysnum_freebsd.pl"
|
mksysnum="curl -s 'http://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master' | ./mksysnum_freebsd.pl"
|
||||||
mktypes="GOARCH=$GOARCH go tool cgo -godefs"
|
mktypes="GOARCH=$GOARCH go tool cgo -godefs"
|
||||||
;;
|
;;
|
||||||
|
@ -109,7 +109,7 @@ freebsd_amd64)
|
||||||
;;
|
;;
|
||||||
freebsd_arm)
|
freebsd_arm)
|
||||||
mkerrors="$mkerrors"
|
mkerrors="$mkerrors"
|
||||||
mksyscall="./mksyscall.pl -l32 -arm"
|
mksyscall="go run mksyscall.go -l32 -arm"
|
||||||
mksysnum="curl -s 'http://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master' | ./mksysnum_freebsd.pl"
|
mksysnum="curl -s 'http://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master' | ./mksysnum_freebsd.pl"
|
||||||
# Let the type of C char be signed for making the bare syscall
|
# Let the type of C char be signed for making the bare syscall
|
||||||
# API consistent across platforms.
|
# API consistent across platforms.
|
||||||
|
@ -124,19 +124,19 @@ linux_sparc64)
|
||||||
;;
|
;;
|
||||||
netbsd_386)
|
netbsd_386)
|
||||||
mkerrors="$mkerrors -m32"
|
mkerrors="$mkerrors -m32"
|
||||||
mksyscall="./mksyscall.pl -l32 -netbsd"
|
mksyscall="go run mksyscall.go -l32 -netbsd"
|
||||||
mksysnum="curl -s 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_netbsd.pl"
|
mksysnum="curl -s 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_netbsd.pl"
|
||||||
mktypes="GOARCH=$GOARCH go tool cgo -godefs"
|
mktypes="GOARCH=$GOARCH go tool cgo -godefs"
|
||||||
;;
|
;;
|
||||||
netbsd_amd64)
|
netbsd_amd64)
|
||||||
mkerrors="$mkerrors -m64"
|
mkerrors="$mkerrors -m64"
|
||||||
mksyscall="./mksyscall.pl -netbsd"
|
mksyscall="go run mksyscall.go -netbsd"
|
||||||
mksysnum="curl -s 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_netbsd.pl"
|
mksysnum="curl -s 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_netbsd.pl"
|
||||||
mktypes="GOARCH=$GOARCH go tool cgo -godefs"
|
mktypes="GOARCH=$GOARCH go tool cgo -godefs"
|
||||||
;;
|
;;
|
||||||
netbsd_arm)
|
netbsd_arm)
|
||||||
mkerrors="$mkerrors"
|
mkerrors="$mkerrors"
|
||||||
mksyscall="./mksyscall.pl -l32 -netbsd -arm"
|
mksyscall="go run mksyscall.go -l32 -netbsd -arm"
|
||||||
mksysnum="curl -s 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_netbsd.pl"
|
mksysnum="curl -s 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_netbsd.pl"
|
||||||
# Let the type of C char be signed for making the bare syscall
|
# Let the type of C char be signed for making the bare syscall
|
||||||
# API consistent across platforms.
|
# API consistent across platforms.
|
||||||
|
@ -144,21 +144,21 @@ netbsd_arm)
|
||||||
;;
|
;;
|
||||||
openbsd_386)
|
openbsd_386)
|
||||||
mkerrors="$mkerrors -m32"
|
mkerrors="$mkerrors -m32"
|
||||||
mksyscall="./mksyscall.pl -l32 -openbsd"
|
mksyscall="go run mksyscall.go -l32 -openbsd"
|
||||||
mksysctl="./mksysctl_openbsd.pl"
|
mksysctl="./mksysctl_openbsd.pl"
|
||||||
mksysnum="curl -s 'http://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_openbsd.pl"
|
mksysnum="curl -s 'http://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_openbsd.pl"
|
||||||
mktypes="GOARCH=$GOARCH go tool cgo -godefs"
|
mktypes="GOARCH=$GOARCH go tool cgo -godefs"
|
||||||
;;
|
;;
|
||||||
openbsd_amd64)
|
openbsd_amd64)
|
||||||
mkerrors="$mkerrors -m64"
|
mkerrors="$mkerrors -m64"
|
||||||
mksyscall="./mksyscall.pl -openbsd"
|
mksyscall="go run mksyscall.go -openbsd"
|
||||||
mksysctl="./mksysctl_openbsd.pl"
|
mksysctl="./mksysctl_openbsd.pl"
|
||||||
mksysnum="curl -s 'http://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_openbsd.pl"
|
mksysnum="curl -s 'http://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_openbsd.pl"
|
||||||
mktypes="GOARCH=$GOARCH go tool cgo -godefs"
|
mktypes="GOARCH=$GOARCH go tool cgo -godefs"
|
||||||
;;
|
;;
|
||||||
openbsd_arm)
|
openbsd_arm)
|
||||||
mkerrors="$mkerrors"
|
mkerrors="$mkerrors"
|
||||||
mksyscall="./mksyscall.pl -l32 -openbsd -arm"
|
mksyscall="go run mksyscall.go -l32 -openbsd -arm"
|
||||||
mksysctl="./mksysctl_openbsd.pl"
|
mksysctl="./mksysctl_openbsd.pl"
|
||||||
mksysnum="curl -s 'http://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_openbsd.pl"
|
mksysnum="curl -s 'http://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_openbsd.pl"
|
||||||
# Let the type of C char be signed for making the bare syscall
|
# Let the type of C char be signed for making the bare syscall
|
||||||
|
@ -187,8 +187,14 @@ esac
|
||||||
syscall_goos="syscall_bsd.go $syscall_goos"
|
syscall_goos="syscall_bsd.go $syscall_goos"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
if [ -n "$mksyscall" ]; then echo "$mksyscall -tags $GOOS,$GOARCH $syscall_goos $GOOSARCH_in |gofmt >zsyscall_$GOOSARCH.go"; fi
|
if [ -n "$mksyscall" ]; then
|
||||||
;;
|
if [ "$GOOSARCH" == "aix_ppc64" ]; then
|
||||||
|
# aix/ppc64 script generates files instead of writing to stdin.
|
||||||
|
echo "$mksyscall -tags $GOOS,$GOARCH $syscall_goos $GOOSARCH_in && gofmt -w zsyscall_$GOOSARCH.go && gofmt -w zsyscall_"$GOOSARCH"_gccgo.go && gofmt -w zsyscall_"$GOOSARCH"_gc.go " ;
|
||||||
|
else
|
||||||
|
echo "$mksyscall -tags $GOOS,$GOARCH $syscall_goos $GOOSARCH_in |gofmt >zsyscall_$GOOSARCH.go";
|
||||||
|
fi
|
||||||
|
fi
|
||||||
esac
|
esac
|
||||||
if [ -n "$mksysctl" ]; then echo "$mksysctl |gofmt >$zsysctl"; fi
|
if [ -n "$mksysctl" ]; then echo "$mksysctl |gofmt >$zsysctl"; fi
|
||||||
if [ -n "$mksysnum" ]; then echo "$mksysnum |gofmt >zsysnum_$GOOSARCH.go"; fi
|
if [ -n "$mksysnum" ]; then echo "$mksysnum |gofmt >zsysnum_$GOOSARCH.go"; fi
|
||||||
|
|
|
@ -101,7 +101,7 @@ includes_DragonFly='
|
||||||
'
|
'
|
||||||
|
|
||||||
includes_FreeBSD='
|
includes_FreeBSD='
|
||||||
#include <sys/capability.h>
|
#include <sys/capsicum.h>
|
||||||
#include <sys/param.h>
|
#include <sys/param.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <sys/event.h>
|
#include <sys/event.h>
|
||||||
|
@ -187,15 +187,18 @@ struct ltchars {
|
||||||
#include <linux/if_alg.h>
|
#include <linux/if_alg.h>
|
||||||
#include <linux/if_arp.h>
|
#include <linux/if_arp.h>
|
||||||
#include <linux/if_ether.h>
|
#include <linux/if_ether.h>
|
||||||
|
#include <linux/if_ppp.h>
|
||||||
#include <linux/if_tun.h>
|
#include <linux/if_tun.h>
|
||||||
#include <linux/if_packet.h>
|
#include <linux/if_packet.h>
|
||||||
#include <linux/if_addr.h>
|
#include <linux/if_addr.h>
|
||||||
#include <linux/falloc.h>
|
#include <linux/falloc.h>
|
||||||
#include <linux/filter.h>
|
#include <linux/filter.h>
|
||||||
#include <linux/fs.h>
|
#include <linux/fs.h>
|
||||||
|
#include <linux/kexec.h>
|
||||||
#include <linux/keyctl.h>
|
#include <linux/keyctl.h>
|
||||||
#include <linux/magic.h>
|
#include <linux/magic.h>
|
||||||
#include <linux/memfd.h>
|
#include <linux/memfd.h>
|
||||||
|
#include <linux/module.h>
|
||||||
#include <linux/netfilter/nfnetlink.h>
|
#include <linux/netfilter/nfnetlink.h>
|
||||||
#include <linux/netlink.h>
|
#include <linux/netlink.h>
|
||||||
#include <linux/net_namespace.h>
|
#include <linux/net_namespace.h>
|
||||||
|
@ -445,8 +448,10 @@ ccflags="$@"
|
||||||
$2 ~ /^(MS|MNT|UMOUNT)_/ ||
|
$2 ~ /^(MS|MNT|UMOUNT)_/ ||
|
||||||
$2 ~ /^TUN(SET|GET|ATTACH|DETACH)/ ||
|
$2 ~ /^TUN(SET|GET|ATTACH|DETACH)/ ||
|
||||||
$2 ~ /^(O|F|E?FD|NAME|S|PTRACE|PT)_/ ||
|
$2 ~ /^(O|F|E?FD|NAME|S|PTRACE|PT)_/ ||
|
||||||
|
$2 ~ /^KEXEC_/ ||
|
||||||
$2 ~ /^LINUX_REBOOT_CMD_/ ||
|
$2 ~ /^LINUX_REBOOT_CMD_/ ||
|
||||||
$2 ~ /^LINUX_REBOOT_MAGIC[12]$/ ||
|
$2 ~ /^LINUX_REBOOT_MAGIC[12]$/ ||
|
||||||
|
$2 ~ /^MODULE_INIT_/ ||
|
||||||
$2 !~ "NLA_TYPE_MASK" &&
|
$2 !~ "NLA_TYPE_MASK" &&
|
||||||
$2 ~ /^(NETLINK|NLM|NLMSG|NLA|IFA|IFAN|RT|RTC|RTCF|RTN|RTPROT|RTNH|ARPHRD|ETH_P|NETNSA)_/ ||
|
$2 ~ /^(NETLINK|NLM|NLMSG|NLA|IFA|IFAN|RT|RTC|RTCF|RTN|RTPROT|RTNH|ARPHRD|ETH_P|NETNSA)_/ ||
|
||||||
$2 ~ /^SIOC/ ||
|
$2 ~ /^SIOC/ ||
|
||||||
|
@ -496,6 +501,7 @@ ccflags="$@"
|
||||||
$2 ~ /^(HDIO|WIN|SMART)_/ ||
|
$2 ~ /^(HDIO|WIN|SMART)_/ ||
|
||||||
$2 !~ "WMESGLEN" &&
|
$2 !~ "WMESGLEN" &&
|
||||||
$2 ~ /^W[A-Z0-9]+$/ ||
|
$2 ~ /^W[A-Z0-9]+$/ ||
|
||||||
|
$2 ~/^PPPIOC/ ||
|
||||||
$2 ~ /^BLK[A-Z]*(GET$|SET$|BUF$|PART$|SIZE)/ {printf("\t%s = C.%s\n", $2, $2)}
|
$2 ~ /^BLK[A-Z]*(GET$|SET$|BUF$|PART$|SIZE)/ {printf("\t%s = C.%s\n", $2, $2)}
|
||||||
$2 ~ /^__WCOREFLAG$/ {next}
|
$2 ~ /^__WCOREFLAG$/ {next}
|
||||||
$2 ~ /^__W[A-Z0-9]+$/ {printf("\t%s = C.%s\n", substr($2,3), $2)}
|
$2 ~ /^__W[A-Z0-9]+$/ {printf("\t%s = C.%s\n", substr($2,3), $2)}
|
||||||
|
|
|
@ -46,6 +46,10 @@ func main() {
|
||||||
valRegex := regexp.MustCompile(`type (Fsid|Sigset_t) struct {(\s+)X__val(\s+\S+\s+)}`)
|
valRegex := regexp.MustCompile(`type (Fsid|Sigset_t) struct {(\s+)X__val(\s+\S+\s+)}`)
|
||||||
b = valRegex.ReplaceAll(b, []byte("type $1 struct {${2}Val$3}"))
|
b = valRegex.ReplaceAll(b, []byte("type $1 struct {${2}Val$3}"))
|
||||||
|
|
||||||
|
// Intentionally export __fds_bits field in FdSet
|
||||||
|
fdSetRegex := regexp.MustCompile(`type (FdSet) struct {(\s+)X__fds_bits(\s+\S+\s+)}`)
|
||||||
|
b = fdSetRegex.ReplaceAll(b, []byte("type $1 struct {${2}Bits$3}"))
|
||||||
|
|
||||||
// If we have empty Ptrace structs, we should delete them. Only s390x emits
|
// If we have empty Ptrace structs, we should delete them. Only s390x emits
|
||||||
// nonempty Ptrace structs.
|
// nonempty Ptrace structs.
|
||||||
ptraceRexexp := regexp.MustCompile(`type Ptrace((Psw|Fpregs|Per) struct {\s*})`)
|
ptraceRexexp := regexp.MustCompile(`type Ptrace((Psw|Fpregs|Per) struct {\s*})`)
|
||||||
|
@ -65,6 +69,10 @@ func main() {
|
||||||
convertUtsnameRegex := regexp.MustCompile(`((Sys|Node|Domain)name|Release|Version|Machine)(\s+)\[(\d+)\]u?int8`)
|
convertUtsnameRegex := regexp.MustCompile(`((Sys|Node|Domain)name|Release|Version|Machine)(\s+)\[(\d+)\]u?int8`)
|
||||||
b = convertUtsnameRegex.ReplaceAll(b, []byte("$1$3[$4]byte"))
|
b = convertUtsnameRegex.ReplaceAll(b, []byte("$1$3[$4]byte"))
|
||||||
|
|
||||||
|
// Convert [1024]int8 to [1024]byte in Ptmget members
|
||||||
|
convertPtmget := regexp.MustCompile(`([SC]n)(\s+)\[(\d+)\]u?int8`)
|
||||||
|
b = convertPtmget.ReplaceAll(b, []byte("$1[$3]byte"))
|
||||||
|
|
||||||
// Remove spare fields (e.g. in Statx_t)
|
// Remove spare fields (e.g. in Statx_t)
|
||||||
spareFieldsRegex := regexp.MustCompile(`X__spare\S*`)
|
spareFieldsRegex := regexp.MustCompile(`X__spare\S*`)
|
||||||
b = spareFieldsRegex.ReplaceAll(b, []byte("_"))
|
b = spareFieldsRegex.ReplaceAll(b, []byte("_"))
|
||||||
|
|
|
@ -0,0 +1,367 @@
|
||||||
|
// 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 ignore
|
||||||
|
|
||||||
|
/*
|
||||||
|
This program reads a file containing function prototypes
|
||||||
|
(like syscall_darwin.go) and generates system call bodies.
|
||||||
|
The prototypes are marked by lines beginning with "//sys"
|
||||||
|
and read like func declarations if //sys is replaced by func, but:
|
||||||
|
* The parameter lists must give a name for each argument.
|
||||||
|
This includes return parameters.
|
||||||
|
* The parameter lists must give a type for each argument:
|
||||||
|
the (x, y, z int) shorthand is not allowed.
|
||||||
|
* If the return parameter is an error number, it must be named errno.
|
||||||
|
|
||||||
|
A line beginning with //sysnb is like //sys, except that the
|
||||||
|
goroutine will not be suspended during the execution of the system
|
||||||
|
call. This must only be used for system calls which can never
|
||||||
|
block, as otherwise the system call could cause all goroutines to
|
||||||
|
hang.
|
||||||
|
*/
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bufio"
|
||||||
|
"flag"
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"regexp"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
b32 = flag.Bool("b32", false, "32bit big-endian")
|
||||||
|
l32 = flag.Bool("l32", false, "32bit little-endian")
|
||||||
|
plan9 = flag.Bool("plan9", false, "plan9")
|
||||||
|
openbsd = flag.Bool("openbsd", false, "openbsd")
|
||||||
|
netbsd = flag.Bool("netbsd", false, "netbsd")
|
||||||
|
dragonfly = flag.Bool("dragonfly", false, "dragonfly")
|
||||||
|
arm = flag.Bool("arm", false, "arm") // 64-bit value should use (even, odd)-pair
|
||||||
|
tags = flag.String("tags", "", "build tags")
|
||||||
|
filename = flag.String("output", "", "output file name (standard output if omitted)")
|
||||||
|
)
|
||||||
|
|
||||||
|
// cmdLine returns this programs's commandline arguments
|
||||||
|
func cmdLine() string {
|
||||||
|
return "go run mksyscall.go " + strings.Join(os.Args[1:], " ")
|
||||||
|
}
|
||||||
|
|
||||||
|
// buildTags returns build tags
|
||||||
|
func buildTags() string {
|
||||||
|
return *tags
|
||||||
|
}
|
||||||
|
|
||||||
|
// Param is function parameter
|
||||||
|
type Param struct {
|
||||||
|
Name string
|
||||||
|
Type string
|
||||||
|
}
|
||||||
|
|
||||||
|
// usage prints the program usage
|
||||||
|
func usage() {
|
||||||
|
fmt.Fprintf(os.Stderr, "usage: go run mksyscall.go [-b32 | -l32] [-tags x,y] [file ...]\n")
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
// parseParamList parses parameter list and returns a slice of parameters
|
||||||
|
func parseParamList(list string) []string {
|
||||||
|
list = strings.TrimSpace(list)
|
||||||
|
if list == "" {
|
||||||
|
return []string{}
|
||||||
|
}
|
||||||
|
return regexp.MustCompile(`\s*,\s*`).Split(list, -1)
|
||||||
|
}
|
||||||
|
|
||||||
|
// parseParam splits a parameter into name and type
|
||||||
|
func parseParam(p string) Param {
|
||||||
|
ps := regexp.MustCompile(`^(\S*) (\S*)$`).FindStringSubmatch(p)
|
||||||
|
if ps == nil {
|
||||||
|
fmt.Fprintf(os.Stderr, "malformed parameter: %s\n", p)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
return Param{ps[1], ps[2]}
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
// Get the OS and architecture (using GOARCH_TARGET if it exists)
|
||||||
|
goos := os.Getenv("GOOS")
|
||||||
|
goarch := os.Getenv("GOARCH_TARGET")
|
||||||
|
if goarch == "" {
|
||||||
|
goarch = os.Getenv("GOARCH")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check that we are using the new build system if we should
|
||||||
|
if goos == "linux" && goarch != "sparc64" {
|
||||||
|
if os.Getenv("GOLANG_SYS_BUILD") != "docker" {
|
||||||
|
fmt.Fprintf(os.Stderr, "In the new build system, mksyscall should not be called directly.\n")
|
||||||
|
fmt.Fprintf(os.Stderr, "See README.md\n")
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
flag.Usage = usage
|
||||||
|
flag.Parse()
|
||||||
|
if len(flag.Args()) <= 0 {
|
||||||
|
fmt.Fprintf(os.Stderr, "no files to parse provided\n")
|
||||||
|
usage()
|
||||||
|
}
|
||||||
|
|
||||||
|
endianness := ""
|
||||||
|
if *b32 {
|
||||||
|
endianness = "big-endian"
|
||||||
|
} else if *l32 {
|
||||||
|
endianness = "little-endian"
|
||||||
|
}
|
||||||
|
|
||||||
|
text := ""
|
||||||
|
for _, path := range flag.Args() {
|
||||||
|
file, err := os.Open(path)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Fprintf(os.Stderr, err.Error())
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
s := bufio.NewScanner(file)
|
||||||
|
for s.Scan() {
|
||||||
|
t := s.Text()
|
||||||
|
t = strings.TrimSpace(t)
|
||||||
|
t = regexp.MustCompile(`\s+`).ReplaceAllString(t, ` `)
|
||||||
|
nonblock := regexp.MustCompile(`^\/\/sysnb `).FindStringSubmatch(t)
|
||||||
|
if regexp.MustCompile(`^\/\/sys `).FindStringSubmatch(t) == nil && nonblock == nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
// Line must be of the form
|
||||||
|
// func Open(path string, mode int, perm int) (fd int, errno error)
|
||||||
|
// Split into name, in params, out params.
|
||||||
|
f := regexp.MustCompile(`^\/\/sys(nb)? (\w+)\(([^()]*)\)\s*(?:\(([^()]+)\))?\s*(?:=\s*((?i)SYS_[A-Z0-9_]+))?$`).FindStringSubmatch(t)
|
||||||
|
if f == nil {
|
||||||
|
fmt.Fprintf(os.Stderr, "%s:%s\nmalformed //sys declaration\n", path, t)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
funct, inps, outps, sysname := f[2], f[3], f[4], f[5]
|
||||||
|
|
||||||
|
// Split argument lists on comma.
|
||||||
|
in := parseParamList(inps)
|
||||||
|
out := parseParamList(outps)
|
||||||
|
|
||||||
|
// Try in vain to keep people from editing this file.
|
||||||
|
// The theory is that they jump into the middle of the file
|
||||||
|
// without reading the header.
|
||||||
|
text += "// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\n"
|
||||||
|
|
||||||
|
// Go function header.
|
||||||
|
outDecl := ""
|
||||||
|
if len(out) > 0 {
|
||||||
|
outDecl = fmt.Sprintf(" (%s)", strings.Join(out, ", "))
|
||||||
|
}
|
||||||
|
text += fmt.Sprintf("func %s(%s)%s {\n", funct, strings.Join(in, ", "), outDecl)
|
||||||
|
|
||||||
|
// Check if err return available
|
||||||
|
errvar := ""
|
||||||
|
for _, param := range out {
|
||||||
|
p := parseParam(param)
|
||||||
|
if p.Type == "error" {
|
||||||
|
errvar = p.Name
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Prepare arguments to Syscall.
|
||||||
|
var args []string
|
||||||
|
n := 0
|
||||||
|
for _, param := range in {
|
||||||
|
p := parseParam(param)
|
||||||
|
if regexp.MustCompile(`^\*`).FindStringSubmatch(p.Type) != nil {
|
||||||
|
args = append(args, "uintptr(unsafe.Pointer("+p.Name+"))")
|
||||||
|
} else if p.Type == "string" && errvar != "" {
|
||||||
|
text += fmt.Sprintf("\tvar _p%d *byte\n", n)
|
||||||
|
text += fmt.Sprintf("\t_p%d, %s = BytePtrFromString(%s)\n", n, errvar, p.Name)
|
||||||
|
text += fmt.Sprintf("\tif %s != nil {\n\t\treturn\n\t}\n", errvar)
|
||||||
|
args = append(args, fmt.Sprintf("uintptr(unsafe.Pointer(_p%d))", n))
|
||||||
|
n++
|
||||||
|
} else if p.Type == "string" {
|
||||||
|
fmt.Fprintf(os.Stderr, path+":"+funct+" uses string arguments, but has no error return\n")
|
||||||
|
text += fmt.Sprintf("\tvar _p%d *byte\n", n)
|
||||||
|
text += fmt.Sprintf("\t_p%d, _ = BytePtrFromString(%s)\n", n, p.Name)
|
||||||
|
args = append(args, fmt.Sprintf("uintptr(unsafe.Pointer(_p%d))", n))
|
||||||
|
n++
|
||||||
|
} else if regexp.MustCompile(`^\[\](.*)`).FindStringSubmatch(p.Type) != nil {
|
||||||
|
// Convert slice into pointer, length.
|
||||||
|
// Have to be careful not to take address of &a[0] if len == 0:
|
||||||
|
// pass dummy pointer in that case.
|
||||||
|
// Used to pass nil, but some OSes or simulators reject write(fd, nil, 0).
|
||||||
|
text += fmt.Sprintf("\tvar _p%d unsafe.Pointer\n", n)
|
||||||
|
text += fmt.Sprintf("\tif len(%s) > 0 {\n\t\t_p%d = unsafe.Pointer(&%s[0])\n\t}", p.Name, n, p.Name)
|
||||||
|
text += fmt.Sprintf(" else {\n\t\t_p%d = unsafe.Pointer(&_zero)\n\t}\n", n)
|
||||||
|
args = append(args, fmt.Sprintf("uintptr(_p%d)", n), fmt.Sprintf("uintptr(len(%s))", p.Name))
|
||||||
|
n++
|
||||||
|
} else if p.Type == "int64" && (*openbsd || *netbsd) {
|
||||||
|
args = append(args, "0")
|
||||||
|
if endianness == "big-endian" {
|
||||||
|
args = append(args, fmt.Sprintf("uintptr(%s>>32)", p.Name), fmt.Sprintf("uintptr(%s)", p.Name))
|
||||||
|
} else if endianness == "little-endian" {
|
||||||
|
args = append(args, fmt.Sprintf("uintptr(%s)", p.Name), fmt.Sprintf("uintptr(%s>>32)", p.Name))
|
||||||
|
} else {
|
||||||
|
args = append(args, fmt.Sprintf("uintptr(%s)", p.Name))
|
||||||
|
}
|
||||||
|
} else if p.Type == "int64" && *dragonfly {
|
||||||
|
if regexp.MustCompile(`^(?i)extp(read|write)`).FindStringSubmatch(funct) == nil {
|
||||||
|
args = append(args, "0")
|
||||||
|
}
|
||||||
|
if endianness == "big-endian" {
|
||||||
|
args = append(args, fmt.Sprintf("uintptr(%s>>32)", p.Name), fmt.Sprintf("uintptr(%s)", p.Name))
|
||||||
|
} else if endianness == "little-endian" {
|
||||||
|
args = append(args, fmt.Sprintf("uintptr(%s)", p.Name), fmt.Sprintf("uintptr(%s>>32)", p.Name))
|
||||||
|
} else {
|
||||||
|
args = append(args, fmt.Sprintf("uintptr(%s)", p.Name))
|
||||||
|
}
|
||||||
|
} else if p.Type == "int64" && endianness != "" {
|
||||||
|
if len(args)%2 == 1 && *arm {
|
||||||
|
// arm abi specifies 64-bit argument uses
|
||||||
|
// (even, odd) pair
|
||||||
|
args = append(args, "0")
|
||||||
|
}
|
||||||
|
if endianness == "big-endian" {
|
||||||
|
args = append(args, fmt.Sprintf("uintptr(%s>>32)", p.Name), fmt.Sprintf("uintptr(%s)", p.Name))
|
||||||
|
} else {
|
||||||
|
args = append(args, fmt.Sprintf("uintptr(%s)", p.Name), fmt.Sprintf("uintptr(%s>>32)", p.Name))
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
args = append(args, fmt.Sprintf("uintptr(%s)", p.Name))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Determine which form to use; pad args with zeros.
|
||||||
|
asm := "Syscall"
|
||||||
|
if nonblock != nil {
|
||||||
|
if errvar == "" && goos == "linux" {
|
||||||
|
asm = "RawSyscallNoError"
|
||||||
|
} else {
|
||||||
|
asm = "RawSyscall"
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if errvar == "" && goos == "linux" {
|
||||||
|
asm = "SyscallNoError"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if len(args) <= 3 {
|
||||||
|
for len(args) < 3 {
|
||||||
|
args = append(args, "0")
|
||||||
|
}
|
||||||
|
} else if len(args) <= 6 {
|
||||||
|
asm += "6"
|
||||||
|
for len(args) < 6 {
|
||||||
|
args = append(args, "0")
|
||||||
|
}
|
||||||
|
} else if len(args) <= 9 {
|
||||||
|
asm += "9"
|
||||||
|
for len(args) < 9 {
|
||||||
|
args = append(args, "0")
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
fmt.Fprintf(os.Stderr, "%s:%s too many arguments to system call\n", path, funct)
|
||||||
|
}
|
||||||
|
|
||||||
|
// System call number.
|
||||||
|
if sysname == "" {
|
||||||
|
sysname = "SYS_" + funct
|
||||||
|
sysname = regexp.MustCompile(`([a-z])([A-Z])`).ReplaceAllString(sysname, `${1}_$2`)
|
||||||
|
sysname = strings.ToUpper(sysname)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Actual call.
|
||||||
|
arglist := strings.Join(args, ", ")
|
||||||
|
call := fmt.Sprintf("%s(%s, %s)", asm, sysname, arglist)
|
||||||
|
|
||||||
|
// Assign return values.
|
||||||
|
body := ""
|
||||||
|
ret := []string{"_", "_", "_"}
|
||||||
|
doErrno := false
|
||||||
|
for i := 0; i < len(out); i++ {
|
||||||
|
p := parseParam(out[i])
|
||||||
|
reg := ""
|
||||||
|
if p.Name == "err" && !*plan9 {
|
||||||
|
reg = "e1"
|
||||||
|
ret[2] = reg
|
||||||
|
doErrno = true
|
||||||
|
} else if p.Name == "err" && *plan9 {
|
||||||
|
ret[0] = "r0"
|
||||||
|
ret[2] = "e1"
|
||||||
|
break
|
||||||
|
} else {
|
||||||
|
reg = fmt.Sprintf("r%d", i)
|
||||||
|
ret[i] = reg
|
||||||
|
}
|
||||||
|
if p.Type == "bool" {
|
||||||
|
reg = fmt.Sprintf("%s != 0", reg)
|
||||||
|
}
|
||||||
|
if p.Type == "int64" && endianness != "" {
|
||||||
|
// 64-bit number in r1:r0 or r0:r1.
|
||||||
|
if i+2 > len(out) {
|
||||||
|
fmt.Fprintf(os.Stderr, "%s:%s not enough registers for int64 return\n", path, funct)
|
||||||
|
}
|
||||||
|
if endianness == "big-endian" {
|
||||||
|
reg = fmt.Sprintf("int64(r%d)<<32 | int64(r%d)", i, i+1)
|
||||||
|
} else {
|
||||||
|
reg = fmt.Sprintf("int64(r%d)<<32 | int64(r%d)", i+1, i)
|
||||||
|
}
|
||||||
|
ret[i] = fmt.Sprintf("r%d", i)
|
||||||
|
ret[i+1] = fmt.Sprintf("r%d", i+1)
|
||||||
|
}
|
||||||
|
if reg != "e1" || *plan9 {
|
||||||
|
body += fmt.Sprintf("\t%s = %s(%s)\n", p.Name, p.Type, reg)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ret[0] == "_" && ret[1] == "_" && ret[2] == "_" {
|
||||||
|
text += fmt.Sprintf("\t%s\n", call)
|
||||||
|
} else {
|
||||||
|
if errvar == "" && goos == "linux" {
|
||||||
|
// raw syscall without error on Linux, see golang.org/issue/22924
|
||||||
|
text += fmt.Sprintf("\t%s, %s := %s\n", ret[0], ret[1], call)
|
||||||
|
} else {
|
||||||
|
text += fmt.Sprintf("\t%s, %s, %s := %s\n", ret[0], ret[1], ret[2], call)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
text += body
|
||||||
|
|
||||||
|
if *plan9 && ret[2] == "e1" {
|
||||||
|
text += "\tif int32(r0) == -1 {\n"
|
||||||
|
text += "\t\terr = e1\n"
|
||||||
|
text += "\t}\n"
|
||||||
|
} else if doErrno {
|
||||||
|
text += "\tif e1 != 0 {\n"
|
||||||
|
text += "\t\terr = errnoErr(e1)\n"
|
||||||
|
text += "\t}\n"
|
||||||
|
}
|
||||||
|
text += "\treturn\n"
|
||||||
|
text += "}\n\n"
|
||||||
|
|
||||||
|
}
|
||||||
|
if err := s.Err(); err != nil {
|
||||||
|
fmt.Fprintf(os.Stderr, err.Error())
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
file.Close()
|
||||||
|
}
|
||||||
|
fmt.Printf(srcTemplate, cmdLine(), buildTags(), text)
|
||||||
|
}
|
||||||
|
|
||||||
|
const srcTemplate = `// %s
|
||||||
|
// Code generated by the command above; see README.md. DO NOT EDIT.
|
||||||
|
|
||||||
|
// +build %s
|
||||||
|
|
||||||
|
package unix
|
||||||
|
|
||||||
|
import (
|
||||||
|
"syscall"
|
||||||
|
"unsafe"
|
||||||
|
)
|
||||||
|
|
||||||
|
var _ syscall.Errno
|
||||||
|
|
||||||
|
%s
|
||||||
|
`
|
|
@ -1,341 +0,0 @@
|
||||||
#!/usr/bin/env perl
|
|
||||||
# Copyright 2009 The Go Authors. All rights reserved.
|
|
||||||
# Use of this source code is governed by a BSD-style
|
|
||||||
# license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
# This program reads a file containing function prototypes
|
|
||||||
# (like syscall_darwin.go) and generates system call bodies.
|
|
||||||
# The prototypes are marked by lines beginning with "//sys"
|
|
||||||
# and read like func declarations if //sys is replaced by func, but:
|
|
||||||
# * The parameter lists must give a name for each argument.
|
|
||||||
# This includes return parameters.
|
|
||||||
# * The parameter lists must give a type for each argument:
|
|
||||||
# the (x, y, z int) shorthand is not allowed.
|
|
||||||
# * If the return parameter is an error number, it must be named errno.
|
|
||||||
|
|
||||||
# A line beginning with //sysnb is like //sys, except that the
|
|
||||||
# goroutine will not be suspended during the execution of the system
|
|
||||||
# call. This must only be used for system calls which can never
|
|
||||||
# block, as otherwise the system call could cause all goroutines to
|
|
||||||
# hang.
|
|
||||||
|
|
||||||
use strict;
|
|
||||||
|
|
||||||
my $cmdline = "mksyscall.pl " . join(' ', @ARGV);
|
|
||||||
my $errors = 0;
|
|
||||||
my $_32bit = "";
|
|
||||||
my $plan9 = 0;
|
|
||||||
my $openbsd = 0;
|
|
||||||
my $netbsd = 0;
|
|
||||||
my $dragonfly = 0;
|
|
||||||
my $arm = 0; # 64-bit value should use (even, odd)-pair
|
|
||||||
my $tags = ""; # build tags
|
|
||||||
|
|
||||||
if($ARGV[0] eq "-b32") {
|
|
||||||
$_32bit = "big-endian";
|
|
||||||
shift;
|
|
||||||
} elsif($ARGV[0] eq "-l32") {
|
|
||||||
$_32bit = "little-endian";
|
|
||||||
shift;
|
|
||||||
}
|
|
||||||
if($ARGV[0] eq "-plan9") {
|
|
||||||
$plan9 = 1;
|
|
||||||
shift;
|
|
||||||
}
|
|
||||||
if($ARGV[0] eq "-openbsd") {
|
|
||||||
$openbsd = 1;
|
|
||||||
shift;
|
|
||||||
}
|
|
||||||
if($ARGV[0] eq "-netbsd") {
|
|
||||||
$netbsd = 1;
|
|
||||||
shift;
|
|
||||||
}
|
|
||||||
if($ARGV[0] eq "-dragonfly") {
|
|
||||||
$dragonfly = 1;
|
|
||||||
shift;
|
|
||||||
}
|
|
||||||
if($ARGV[0] eq "-arm") {
|
|
||||||
$arm = 1;
|
|
||||||
shift;
|
|
||||||
}
|
|
||||||
if($ARGV[0] eq "-tags") {
|
|
||||||
shift;
|
|
||||||
$tags = $ARGV[0];
|
|
||||||
shift;
|
|
||||||
}
|
|
||||||
|
|
||||||
if($ARGV[0] =~ /^-/) {
|
|
||||||
print STDERR "usage: mksyscall.pl [-b32 | -l32] [-tags x,y] [file ...]\n";
|
|
||||||
exit 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
# Check that we are using the new build system if we should
|
|
||||||
if($ENV{'GOOS'} eq "linux" && $ENV{'GOARCH'} ne "sparc64") {
|
|
||||||
if($ENV{'GOLANG_SYS_BUILD'} ne "docker") {
|
|
||||||
print STDERR "In the new build system, mksyscall should not be called directly.\n";
|
|
||||||
print STDERR "See README.md\n";
|
|
||||||
exit 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
sub parseparamlist($) {
|
|
||||||
my ($list) = @_;
|
|
||||||
$list =~ s/^\s*//;
|
|
||||||
$list =~ s/\s*$//;
|
|
||||||
if($list eq "") {
|
|
||||||
return ();
|
|
||||||
}
|
|
||||||
return split(/\s*,\s*/, $list);
|
|
||||||
}
|
|
||||||
|
|
||||||
sub parseparam($) {
|
|
||||||
my ($p) = @_;
|
|
||||||
if($p !~ /^(\S*) (\S*)$/) {
|
|
||||||
print STDERR "$ARGV:$.: malformed parameter: $p\n";
|
|
||||||
$errors = 1;
|
|
||||||
return ("xx", "int");
|
|
||||||
}
|
|
||||||
return ($1, $2);
|
|
||||||
}
|
|
||||||
|
|
||||||
my $text = "";
|
|
||||||
while(<>) {
|
|
||||||
chomp;
|
|
||||||
s/\s+/ /g;
|
|
||||||
s/^\s+//;
|
|
||||||
s/\s+$//;
|
|
||||||
my $nonblock = /^\/\/sysnb /;
|
|
||||||
next if !/^\/\/sys / && !$nonblock;
|
|
||||||
|
|
||||||
# Line must be of the form
|
|
||||||
# func Open(path string, mode int, perm int) (fd int, errno error)
|
|
||||||
# Split into name, in params, out params.
|
|
||||||
if(!/^\/\/sys(nb)? (\w+)\(([^()]*)\)\s*(?:\(([^()]+)\))?\s*(?:=\s*((?i)SYS_[A-Z0-9_]+))?$/) {
|
|
||||||
print STDERR "$ARGV:$.: malformed //sys declaration\n";
|
|
||||||
$errors = 1;
|
|
||||||
next;
|
|
||||||
}
|
|
||||||
my ($func, $in, $out, $sysname) = ($2, $3, $4, $5);
|
|
||||||
|
|
||||||
# Split argument lists on comma.
|
|
||||||
my @in = parseparamlist($in);
|
|
||||||
my @out = parseparamlist($out);
|
|
||||||
|
|
||||||
# Try in vain to keep people from editing this file.
|
|
||||||
# The theory is that they jump into the middle of the file
|
|
||||||
# without reading the header.
|
|
||||||
$text .= "// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\n";
|
|
||||||
|
|
||||||
# Go function header.
|
|
||||||
my $out_decl = @out ? sprintf(" (%s)", join(', ', @out)) : "";
|
|
||||||
$text .= sprintf "func %s(%s)%s {\n", $func, join(', ', @in), $out_decl;
|
|
||||||
|
|
||||||
# Check if err return available
|
|
||||||
my $errvar = "";
|
|
||||||
foreach my $p (@out) {
|
|
||||||
my ($name, $type) = parseparam($p);
|
|
||||||
if($type eq "error") {
|
|
||||||
$errvar = $name;
|
|
||||||
last;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# Prepare arguments to Syscall.
|
|
||||||
my @args = ();
|
|
||||||
my $n = 0;
|
|
||||||
foreach my $p (@in) {
|
|
||||||
my ($name, $type) = parseparam($p);
|
|
||||||
if($type =~ /^\*/) {
|
|
||||||
push @args, "uintptr(unsafe.Pointer($name))";
|
|
||||||
} elsif($type eq "string" && $errvar ne "") {
|
|
||||||
$text .= "\tvar _p$n *byte\n";
|
|
||||||
$text .= "\t_p$n, $errvar = BytePtrFromString($name)\n";
|
|
||||||
$text .= "\tif $errvar != nil {\n\t\treturn\n\t}\n";
|
|
||||||
push @args, "uintptr(unsafe.Pointer(_p$n))";
|
|
||||||
$n++;
|
|
||||||
} elsif($type eq "string") {
|
|
||||||
print STDERR "$ARGV:$.: $func uses string arguments, but has no error return\n";
|
|
||||||
$text .= "\tvar _p$n *byte\n";
|
|
||||||
$text .= "\t_p$n, _ = BytePtrFromString($name)\n";
|
|
||||||
push @args, "uintptr(unsafe.Pointer(_p$n))";
|
|
||||||
$n++;
|
|
||||||
} elsif($type =~ /^\[\](.*)/) {
|
|
||||||
# Convert slice into pointer, length.
|
|
||||||
# Have to be careful not to take address of &a[0] if len == 0:
|
|
||||||
# pass dummy pointer in that case.
|
|
||||||
# Used to pass nil, but some OSes or simulators reject write(fd, nil, 0).
|
|
||||||
$text .= "\tvar _p$n unsafe.Pointer\n";
|
|
||||||
$text .= "\tif len($name) > 0 {\n\t\t_p$n = unsafe.Pointer(\&${name}[0])\n\t}";
|
|
||||||
$text .= " else {\n\t\t_p$n = unsafe.Pointer(&_zero)\n\t}";
|
|
||||||
$text .= "\n";
|
|
||||||
push @args, "uintptr(_p$n)", "uintptr(len($name))";
|
|
||||||
$n++;
|
|
||||||
} elsif($type eq "int64" && ($openbsd || $netbsd)) {
|
|
||||||
push @args, "0";
|
|
||||||
if($_32bit eq "big-endian") {
|
|
||||||
push @args, "uintptr($name>>32)", "uintptr($name)";
|
|
||||||
} elsif($_32bit eq "little-endian") {
|
|
||||||
push @args, "uintptr($name)", "uintptr($name>>32)";
|
|
||||||
} else {
|
|
||||||
push @args, "uintptr($name)";
|
|
||||||
}
|
|
||||||
} elsif($type eq "int64" && $dragonfly) {
|
|
||||||
if ($func !~ /^extp(read|write)/i) {
|
|
||||||
push @args, "0";
|
|
||||||
}
|
|
||||||
if($_32bit eq "big-endian") {
|
|
||||||
push @args, "uintptr($name>>32)", "uintptr($name)";
|
|
||||||
} elsif($_32bit eq "little-endian") {
|
|
||||||
push @args, "uintptr($name)", "uintptr($name>>32)";
|
|
||||||
} else {
|
|
||||||
push @args, "uintptr($name)";
|
|
||||||
}
|
|
||||||
} elsif($type eq "int64" && $_32bit ne "") {
|
|
||||||
if(@args % 2 && $arm) {
|
|
||||||
# arm abi specifies 64-bit argument uses
|
|
||||||
# (even, odd) pair
|
|
||||||
push @args, "0"
|
|
||||||
}
|
|
||||||
if($_32bit eq "big-endian") {
|
|
||||||
push @args, "uintptr($name>>32)", "uintptr($name)";
|
|
||||||
} else {
|
|
||||||
push @args, "uintptr($name)", "uintptr($name>>32)";
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
push @args, "uintptr($name)";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# Determine which form to use; pad args with zeros.
|
|
||||||
my $asm = "Syscall";
|
|
||||||
if ($nonblock) {
|
|
||||||
if ($errvar eq "" && $ENV{'GOOS'} eq "linux") {
|
|
||||||
$asm = "RawSyscallNoError";
|
|
||||||
} else {
|
|
||||||
$asm = "RawSyscall";
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if ($errvar eq "" && $ENV{'GOOS'} eq "linux") {
|
|
||||||
$asm = "SyscallNoError";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(@args <= 3) {
|
|
||||||
while(@args < 3) {
|
|
||||||
push @args, "0";
|
|
||||||
}
|
|
||||||
} elsif(@args <= 6) {
|
|
||||||
$asm .= "6";
|
|
||||||
while(@args < 6) {
|
|
||||||
push @args, "0";
|
|
||||||
}
|
|
||||||
} elsif(@args <= 9) {
|
|
||||||
$asm .= "9";
|
|
||||||
while(@args < 9) {
|
|
||||||
push @args, "0";
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
print STDERR "$ARGV:$.: too many arguments to system call\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
# System call number.
|
|
||||||
if($sysname eq "") {
|
|
||||||
$sysname = "SYS_$func";
|
|
||||||
$sysname =~ s/([a-z])([A-Z])/${1}_$2/g; # turn FooBar into Foo_Bar
|
|
||||||
$sysname =~ y/a-z/A-Z/;
|
|
||||||
}
|
|
||||||
|
|
||||||
# Actual call.
|
|
||||||
my $args = join(', ', @args);
|
|
||||||
my $call = "$asm($sysname, $args)";
|
|
||||||
|
|
||||||
# Assign return values.
|
|
||||||
my $body = "";
|
|
||||||
my @ret = ("_", "_", "_");
|
|
||||||
my $do_errno = 0;
|
|
||||||
for(my $i=0; $i<@out; $i++) {
|
|
||||||
my $p = $out[$i];
|
|
||||||
my ($name, $type) = parseparam($p);
|
|
||||||
my $reg = "";
|
|
||||||
if($name eq "err" && !$plan9) {
|
|
||||||
$reg = "e1";
|
|
||||||
$ret[2] = $reg;
|
|
||||||
$do_errno = 1;
|
|
||||||
} elsif($name eq "err" && $plan9) {
|
|
||||||
$ret[0] = "r0";
|
|
||||||
$ret[2] = "e1";
|
|
||||||
next;
|
|
||||||
} else {
|
|
||||||
$reg = sprintf("r%d", $i);
|
|
||||||
$ret[$i] = $reg;
|
|
||||||
}
|
|
||||||
if($type eq "bool") {
|
|
||||||
$reg = "$reg != 0";
|
|
||||||
}
|
|
||||||
if($type eq "int64" && $_32bit ne "") {
|
|
||||||
# 64-bit number in r1:r0 or r0:r1.
|
|
||||||
if($i+2 > @out) {
|
|
||||||
print STDERR "$ARGV:$.: not enough registers for int64 return\n";
|
|
||||||
}
|
|
||||||
if($_32bit eq "big-endian") {
|
|
||||||
$reg = sprintf("int64(r%d)<<32 | int64(r%d)", $i, $i+1);
|
|
||||||
} else {
|
|
||||||
$reg = sprintf("int64(r%d)<<32 | int64(r%d)", $i+1, $i);
|
|
||||||
}
|
|
||||||
$ret[$i] = sprintf("r%d", $i);
|
|
||||||
$ret[$i+1] = sprintf("r%d", $i+1);
|
|
||||||
}
|
|
||||||
if($reg ne "e1" || $plan9) {
|
|
||||||
$body .= "\t$name = $type($reg)\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ($ret[0] eq "_" && $ret[1] eq "_" && $ret[2] eq "_") {
|
|
||||||
$text .= "\t$call\n";
|
|
||||||
} else {
|
|
||||||
if ($errvar eq "" && $ENV{'GOOS'} eq "linux") {
|
|
||||||
# raw syscall without error on Linux, see golang.org/issue/22924
|
|
||||||
$text .= "\t$ret[0], $ret[1] := $call\n";
|
|
||||||
} else {
|
|
||||||
$text .= "\t$ret[0], $ret[1], $ret[2] := $call\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$text .= $body;
|
|
||||||
|
|
||||||
if ($plan9 && $ret[2] eq "e1") {
|
|
||||||
$text .= "\tif int32(r0) == -1 {\n";
|
|
||||||
$text .= "\t\terr = e1\n";
|
|
||||||
$text .= "\t}\n";
|
|
||||||
} elsif ($do_errno) {
|
|
||||||
$text .= "\tif e1 != 0 {\n";
|
|
||||||
$text .= "\t\terr = errnoErr(e1)\n";
|
|
||||||
$text .= "\t}\n";
|
|
||||||
}
|
|
||||||
$text .= "\treturn\n";
|
|
||||||
$text .= "}\n\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
chomp $text;
|
|
||||||
chomp $text;
|
|
||||||
|
|
||||||
if($errors) {
|
|
||||||
exit 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
print <<EOF;
|
|
||||||
// $cmdline
|
|
||||||
// Code generated by the command above; see README.md. DO NOT EDIT.
|
|
||||||
|
|
||||||
// +build $tags
|
|
||||||
|
|
||||||
package unix
|
|
||||||
|
|
||||||
import (
|
|
||||||
"syscall"
|
|
||||||
"unsafe"
|
|
||||||
)
|
|
||||||
|
|
||||||
var _ syscall.Errno
|
|
||||||
|
|
||||||
$text
|
|
||||||
EOF
|
|
||||||
exit 0;
|
|
|
@ -19,7 +19,7 @@
|
||||||
|
|
||||||
use strict;
|
use strict;
|
||||||
|
|
||||||
my $cmdline = "mksyscall_aix.pl " . join(' ', @ARGV);
|
my $cmdline = "mksyscall_aix_ppc.pl " . join(' ', @ARGV);
|
||||||
my $errors = 0;
|
my $errors = 0;
|
||||||
my $_32bit = "";
|
my $_32bit = "";
|
||||||
my $tags = ""; # build tags
|
my $tags = ""; # build tags
|
||||||
|
@ -72,7 +72,7 @@ sub parseparam($) {
|
||||||
|
|
||||||
my $package = "";
|
my $package = "";
|
||||||
my $text = "";
|
my $text = "";
|
||||||
my $c_extern = "/*\n#include <stdint.h>\n";
|
my $c_extern = "/*\n#include <stdint.h>\n#include <stddef.h>\n";
|
||||||
my @vars = ();
|
my @vars = ();
|
||||||
while(<>) {
|
while(<>) {
|
||||||
chomp;
|
chomp;
|
||||||
|
@ -369,7 +369,6 @@ $c_extern
|
||||||
import "C"
|
import "C"
|
||||||
import (
|
import (
|
||||||
"unsafe"
|
"unsafe"
|
||||||
"syscall"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,579 @@
|
||||||
|
#!/usr/bin/env perl
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
# This program reads a file containing function prototypes
|
||||||
|
# (like syscall_aix.go) and generates system call bodies.
|
||||||
|
# The prototypes are marked by lines beginning with "//sys"
|
||||||
|
# and read like func declarations if //sys is replaced by func, but:
|
||||||
|
# * The parameter lists must give a name for each argument.
|
||||||
|
# This includes return parameters.
|
||||||
|
# * The parameter lists must give a type for each argument:
|
||||||
|
# the (x, y, z int) shorthand is not allowed.
|
||||||
|
# * If the return parameter is an error number, it must be named err.
|
||||||
|
# * If go func name needs to be different than its libc name,
|
||||||
|
# * or the function is not in libc, name could be specified
|
||||||
|
# * at the end, after "=" sign, like
|
||||||
|
# //sys getsockopt(s int, level int, name int, val uintptr, vallen *_Socklen) (err error) = libsocket.getsockopt
|
||||||
|
|
||||||
|
# This program will generate three files and handle both gc and gccgo implementation:
|
||||||
|
# - zsyscall_aix_ppc64.go: the common part of each implementation (error handler, pointer creation)
|
||||||
|
# - zsyscall_aix_ppc64_gc.go: gc part with //go_cgo_import_dynamic and a call to syscall6
|
||||||
|
# - zsyscall_aix_ppc64_gccgo.go: gccgo part with C function and conversion to C type.
|
||||||
|
|
||||||
|
# The generated code looks like this
|
||||||
|
#
|
||||||
|
# zsyscall_aix_ppc64.go
|
||||||
|
# func asyscall(...) (n int, err error) {
|
||||||
|
# // Pointer Creation
|
||||||
|
# r1, e1 := callasyscall(...)
|
||||||
|
# // Type Conversion
|
||||||
|
# // Error Handler
|
||||||
|
# return
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
# zsyscall_aix_ppc64_gc.go
|
||||||
|
# //go:cgo_import_dynamic libc_asyscall asyscall "libc.a/shr_64.o"
|
||||||
|
# //go:linkname libc_asyscall libc_asyscall
|
||||||
|
# var asyscall syscallFunc
|
||||||
|
#
|
||||||
|
# func callasyscall(...) (r1 uintptr, e1 Errno) {
|
||||||
|
# r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_asyscall)), "nb_args", ... )
|
||||||
|
# return
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
# zsyscall_aix_ppc64_ggcgo.go
|
||||||
|
# /*
|
||||||
|
# int asyscall(...)
|
||||||
|
#
|
||||||
|
# */
|
||||||
|
# import "C"
|
||||||
|
#
|
||||||
|
# func callasyscall(...) (r1 uintptr, e1 Errno) {
|
||||||
|
# r1 = uintptr(C.asyscall(...))
|
||||||
|
# e1 = syscall.GetErrno()
|
||||||
|
# return
|
||||||
|
# }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
|
||||||
|
my $cmdline = "mksyscall_aix_ppc64.pl " . join(' ', @ARGV);
|
||||||
|
my $errors = 0;
|
||||||
|
my $_32bit = "";
|
||||||
|
my $tags = ""; # build tags
|
||||||
|
my $aix = 0;
|
||||||
|
my $solaris = 0;
|
||||||
|
|
||||||
|
binmode STDOUT;
|
||||||
|
|
||||||
|
if($ARGV[0] eq "-b32") {
|
||||||
|
$_32bit = "big-endian";
|
||||||
|
shift;
|
||||||
|
} elsif($ARGV[0] eq "-l32") {
|
||||||
|
$_32bit = "little-endian";
|
||||||
|
shift;
|
||||||
|
}
|
||||||
|
if($ARGV[0] eq "-aix") {
|
||||||
|
$aix = 1;
|
||||||
|
shift;
|
||||||
|
}
|
||||||
|
if($ARGV[0] eq "-tags") {
|
||||||
|
shift;
|
||||||
|
$tags = $ARGV[0];
|
||||||
|
shift;
|
||||||
|
}
|
||||||
|
|
||||||
|
if($ARGV[0] =~ /^-/) {
|
||||||
|
print STDERR "usage: mksyscall_aix.pl [-b32 | -l32] [-tags x,y] [file ...]\n";
|
||||||
|
exit 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub parseparamlist($) {
|
||||||
|
my ($list) = @_;
|
||||||
|
$list =~ s/^\s*//;
|
||||||
|
$list =~ s/\s*$//;
|
||||||
|
if($list eq "") {
|
||||||
|
return ();
|
||||||
|
}
|
||||||
|
return split(/\s*,\s*/, $list);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub parseparam($) {
|
||||||
|
my ($p) = @_;
|
||||||
|
if($p !~ /^(\S*) (\S*)$/) {
|
||||||
|
print STDERR "$ARGV:$.: malformed parameter: $p\n";
|
||||||
|
$errors = 1;
|
||||||
|
return ("xx", "int");
|
||||||
|
}
|
||||||
|
return ($1, $2);
|
||||||
|
}
|
||||||
|
|
||||||
|
my $package = "";
|
||||||
|
# GCCGO
|
||||||
|
my $textgccgo = "";
|
||||||
|
my $c_extern = "/*\n#include <stdint.h>\n";
|
||||||
|
# GC
|
||||||
|
my $textgc = "";
|
||||||
|
my $dynimports = "";
|
||||||
|
my $linknames = "";
|
||||||
|
my @vars = ();
|
||||||
|
# COMMUN
|
||||||
|
my $textcommon = "";
|
||||||
|
|
||||||
|
while(<>) {
|
||||||
|
chomp;
|
||||||
|
s/\s+/ /g;
|
||||||
|
s/^\s+//;
|
||||||
|
s/\s+$//;
|
||||||
|
$package = $1 if !$package && /^package (\S+)$/;
|
||||||
|
my $nonblock = /^\/\/sysnb /;
|
||||||
|
next if !/^\/\/sys / && !$nonblock;
|
||||||
|
|
||||||
|
# Line must be of the form
|
||||||
|
# func Open(path string, mode int, perm int) (fd int, err error)
|
||||||
|
# Split into name, in params, out params.
|
||||||
|
if(!/^\/\/sys(nb)? (\w+)\(([^()]*)\)\s*(?:\(([^()]+)\))?\s*(?:=\s*(?:(\w*)\.)?(\w*))?$/) {
|
||||||
|
print STDERR "$ARGV:$.: malformed //sys declaration\n";
|
||||||
|
$errors = 1;
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
my ($nb, $func, $in, $out, $modname, $sysname) = ($1, $2, $3, $4, $5, $6);
|
||||||
|
|
||||||
|
# Split argument lists on comma.
|
||||||
|
my @in = parseparamlist($in);
|
||||||
|
my @out = parseparamlist($out);
|
||||||
|
|
||||||
|
$in = join(', ', @in);
|
||||||
|
$out = join(', ', @out);
|
||||||
|
|
||||||
|
if($sysname eq "") {
|
||||||
|
$sysname = "$func";
|
||||||
|
}
|
||||||
|
|
||||||
|
my $onlyCommon = 0;
|
||||||
|
if ($func eq "readlen" || $func eq "writelen" || $func eq "FcntlInt" || $func eq "FcntlFlock") {
|
||||||
|
# This function call another syscall which is already implemented.
|
||||||
|
# Therefore, the gc and gccgo part must not be generated.
|
||||||
|
$onlyCommon = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Try in vain to keep people from editing this file.
|
||||||
|
# The theory is that they jump into the middle of the file
|
||||||
|
# without reading the header.
|
||||||
|
|
||||||
|
$textcommon .= "// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\n";
|
||||||
|
if (!$onlyCommon) {
|
||||||
|
$textgccgo .= "// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\n";
|
||||||
|
$textgc .= "// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Check if value return, err return available
|
||||||
|
my $errvar = "";
|
||||||
|
my $retvar = "";
|
||||||
|
my $rettype = "";
|
||||||
|
foreach my $p (@out) {
|
||||||
|
my ($name, $type) = parseparam($p);
|
||||||
|
if($type eq "error") {
|
||||||
|
$errvar = $name;
|
||||||
|
} else {
|
||||||
|
$retvar = $name;
|
||||||
|
$rettype = $type;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$sysname =~ s/([a-z])([A-Z])/${1}_$2/g;
|
||||||
|
$sysname =~ y/A-Z/a-z/; # All libc functions are lowercase.
|
||||||
|
|
||||||
|
# GCCGO Prototype return type
|
||||||
|
my $C_rettype = "";
|
||||||
|
if($rettype eq "unsafe.Pointer") {
|
||||||
|
$C_rettype = "uintptr_t";
|
||||||
|
} elsif($rettype eq "uintptr") {
|
||||||
|
$C_rettype = "uintptr_t";
|
||||||
|
} elsif($rettype =~ /^_/) {
|
||||||
|
$C_rettype = "uintptr_t";
|
||||||
|
} elsif($rettype eq "int") {
|
||||||
|
$C_rettype = "int";
|
||||||
|
} elsif($rettype eq "int32") {
|
||||||
|
$C_rettype = "int";
|
||||||
|
} elsif($rettype eq "int64") {
|
||||||
|
$C_rettype = "long long";
|
||||||
|
} elsif($rettype eq "uint32") {
|
||||||
|
$C_rettype = "unsigned int";
|
||||||
|
} elsif($rettype eq "uint64") {
|
||||||
|
$C_rettype = "unsigned long long";
|
||||||
|
} else {
|
||||||
|
$C_rettype = "int";
|
||||||
|
}
|
||||||
|
if($sysname eq "exit") {
|
||||||
|
$C_rettype = "void";
|
||||||
|
}
|
||||||
|
|
||||||
|
# GCCGO Prototype arguments type
|
||||||
|
my @c_in = ();
|
||||||
|
foreach my $i (0 .. $#in) {
|
||||||
|
my ($name, $type) = parseparam($in[$i]);
|
||||||
|
if($type =~ /^\*/) {
|
||||||
|
push @c_in, "uintptr_t";
|
||||||
|
} elsif($type eq "string") {
|
||||||
|
push @c_in, "uintptr_t";
|
||||||
|
} elsif($type =~ /^\[\](.*)/) {
|
||||||
|
push @c_in, "uintptr_t", "size_t";
|
||||||
|
} elsif($type eq "unsafe.Pointer") {
|
||||||
|
push @c_in, "uintptr_t";
|
||||||
|
} elsif($type eq "uintptr") {
|
||||||
|
push @c_in, "uintptr_t";
|
||||||
|
} elsif($type =~ /^_/) {
|
||||||
|
push @c_in, "uintptr_t";
|
||||||
|
} elsif($type eq "int") {
|
||||||
|
if (($i == 0 || $i == 2) && $func eq "fcntl"){
|
||||||
|
# These fcntl arguments needs to be uintptr to be able to call FcntlInt and FcntlFlock
|
||||||
|
push @c_in, "uintptr_t";
|
||||||
|
} else {
|
||||||
|
push @c_in, "int";
|
||||||
|
}
|
||||||
|
} elsif($type eq "int32") {
|
||||||
|
push @c_in, "int";
|
||||||
|
} elsif($type eq "int64") {
|
||||||
|
push @c_in, "long long";
|
||||||
|
} elsif($type eq "uint32") {
|
||||||
|
push @c_in, "unsigned int";
|
||||||
|
} elsif($type eq "uint64") {
|
||||||
|
push @c_in, "unsigned long long";
|
||||||
|
} else {
|
||||||
|
push @c_in, "int";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$onlyCommon){
|
||||||
|
# GCCGO Prototype Generation
|
||||||
|
# Imports of system calls from libc
|
||||||
|
$c_extern .= "$C_rettype $sysname";
|
||||||
|
my $c_in = join(', ', @c_in);
|
||||||
|
$c_extern .= "($c_in);\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
# GC Library name
|
||||||
|
if($modname eq "") {
|
||||||
|
$modname = "libc.a/shr_64.o";
|
||||||
|
} else {
|
||||||
|
print STDERR "$func: only syscall using libc are available\n";
|
||||||
|
$errors = 1;
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
my $sysvarname = "libc_${sysname}";
|
||||||
|
|
||||||
|
if (!$onlyCommon){
|
||||||
|
# GC Runtime import of function to allow cross-platform builds.
|
||||||
|
$dynimports .= "//go:cgo_import_dynamic ${sysvarname} ${sysname} \"$modname\"\n";
|
||||||
|
# GC Link symbol to proc address variable.
|
||||||
|
$linknames .= "//go:linkname ${sysvarname} ${sysvarname}\n";
|
||||||
|
# GC Library proc address variable.
|
||||||
|
push @vars, $sysvarname;
|
||||||
|
}
|
||||||
|
|
||||||
|
my $strconvfunc ="BytePtrFromString";
|
||||||
|
my $strconvtype = "*byte";
|
||||||
|
|
||||||
|
# Go function header.
|
||||||
|
if($out ne "") {
|
||||||
|
$out = " ($out)";
|
||||||
|
}
|
||||||
|
if($textcommon ne "") {
|
||||||
|
$textcommon .= "\n"
|
||||||
|
}
|
||||||
|
|
||||||
|
$textcommon .= sprintf "func %s(%s)%s {\n", $func, join(', ', @in), $out ;
|
||||||
|
|
||||||
|
# Prepare arguments to call.
|
||||||
|
my @argscommun = (); # Arguments in the commun part
|
||||||
|
my @argscall = (); # Arguments for call prototype
|
||||||
|
my @argsgc = (); # Arguments for gc call (with syscall6)
|
||||||
|
my @argsgccgo = (); # Arguments for gccgo call (with C.name_of_syscall)
|
||||||
|
my $n = 0;
|
||||||
|
my $arg_n = 0;
|
||||||
|
foreach my $p (@in) {
|
||||||
|
my ($name, $type) = parseparam($p);
|
||||||
|
if($type =~ /^\*/) {
|
||||||
|
push @argscommun, "uintptr(unsafe.Pointer($name))";
|
||||||
|
push @argscall, "$name uintptr";
|
||||||
|
push @argsgc, "$name";
|
||||||
|
push @argsgccgo, "C.uintptr_t($name)";
|
||||||
|
} elsif($type eq "string" && $errvar ne "") {
|
||||||
|
$textcommon .= "\tvar _p$n $strconvtype\n";
|
||||||
|
$textcommon .= "\t_p$n, $errvar = $strconvfunc($name)\n";
|
||||||
|
$textcommon .= "\tif $errvar != nil {\n\t\treturn\n\t}\n";
|
||||||
|
|
||||||
|
push @argscommun, "uintptr(unsafe.Pointer(_p$n))";
|
||||||
|
push @argscall, "_p$n uintptr ";
|
||||||
|
push @argsgc, "_p$n";
|
||||||
|
push @argsgccgo, "C.uintptr_t(_p$n)";
|
||||||
|
$n++;
|
||||||
|
} elsif($type eq "string") {
|
||||||
|
print STDERR "$ARGV:$.: $func uses string arguments, but has no error return\n";
|
||||||
|
$textcommon .= "\tvar _p$n $strconvtype\n";
|
||||||
|
$textcommon .= "\t_p$n, $errvar = $strconvfunc($name)\n";
|
||||||
|
$textcommon .= "\tif $errvar != nil {\n\t\treturn\n\t}\n";
|
||||||
|
|
||||||
|
push @argscommun, "uintptr(unsafe.Pointer(_p$n))";
|
||||||
|
push @argscall, "_p$n uintptr";
|
||||||
|
push @argsgc, "_p$n";
|
||||||
|
push @argsgccgo, "C.uintptr_t(_p$n)";
|
||||||
|
$n++;
|
||||||
|
} elsif($type =~ /^\[\](.*)/) {
|
||||||
|
# Convert slice into pointer, length.
|
||||||
|
# Have to be careful not to take address of &a[0] if len == 0:
|
||||||
|
# pass nil in that case.
|
||||||
|
$textcommon .= "\tvar _p$n *$1\n";
|
||||||
|
$textcommon .= "\tif len($name) > 0 {\n\t\t_p$n = \&$name\[0]\n\t}\n";
|
||||||
|
push @argscommun, "uintptr(unsafe.Pointer(_p$n))", "len($name)";
|
||||||
|
push @argscall, "_p$n uintptr", "_lenp$n int";
|
||||||
|
push @argsgc, "_p$n", "uintptr(_lenp$n)";
|
||||||
|
push @argsgccgo, "C.uintptr_t(_p$n)", "C.size_t(_lenp$n)";
|
||||||
|
$n++;
|
||||||
|
} elsif($type eq "int64" && $_32bit ne "") {
|
||||||
|
print STDERR "$ARGV:$.: $func uses int64 with 32 bits mode. Case not yet implemented\n";
|
||||||
|
# if($_32bit eq "big-endian") {
|
||||||
|
# push @args, "uintptr($name >> 32)", "uintptr($name)";
|
||||||
|
# } else {
|
||||||
|
# push @args, "uintptr($name)", "uintptr($name >> 32)";
|
||||||
|
# }
|
||||||
|
# $n++;
|
||||||
|
} elsif($type eq "bool") {
|
||||||
|
print STDERR "$ARGV:$.: $func uses bool. Case not yet implemented\n";
|
||||||
|
# $text .= "\tvar _p$n uint32\n";
|
||||||
|
# $text .= "\tif $name {\n\t\t_p$n = 1\n\t} else {\n\t\t_p$n = 0\n\t}\n";
|
||||||
|
# push @args, "_p$n";
|
||||||
|
# $n++;
|
||||||
|
} elsif($type =~ /^_/ ||$type eq "unsafe.Pointer") {
|
||||||
|
push @argscommun, "uintptr($name)";
|
||||||
|
push @argscall, "$name uintptr";
|
||||||
|
push @argsgc, "$name";
|
||||||
|
push @argsgccgo, "C.uintptr_t($name)";
|
||||||
|
} elsif($type eq "int") {
|
||||||
|
if (($arg_n == 0 || $arg_n == 2) && ($func eq "fcntl" || $func eq "FcntlInt" || $func eq "FcntlFlock")) {
|
||||||
|
# These fcntl arguments need to be uintptr to be able to call FcntlInt and FcntlFlock
|
||||||
|
push @argscommun, "uintptr($name)";
|
||||||
|
push @argscall, "$name uintptr";
|
||||||
|
push @argsgc, "$name";
|
||||||
|
push @argsgccgo, "C.uintptr_t($name)";
|
||||||
|
} else {
|
||||||
|
push @argscommun, "$name";
|
||||||
|
push @argscall, "$name int";
|
||||||
|
push @argsgc, "uintptr($name)";
|
||||||
|
push @argsgccgo, "C.int($name)";
|
||||||
|
}
|
||||||
|
} elsif($type eq "int32") {
|
||||||
|
push @argscommun, "$name";
|
||||||
|
push @argscall, "$name int32";
|
||||||
|
push @argsgc, "uintptr($name)";
|
||||||
|
push @argsgccgo, "C.int($name)";
|
||||||
|
} elsif($type eq "int64") {
|
||||||
|
push @argscommun, "$name";
|
||||||
|
push @argscall, "$name int64";
|
||||||
|
push @argsgc, "uintptr($name)";
|
||||||
|
push @argsgccgo, "C.longlong($name)";
|
||||||
|
} elsif($type eq "uint32") {
|
||||||
|
push @argscommun, "$name";
|
||||||
|
push @argscall, "$name uint32";
|
||||||
|
push @argsgc, "uintptr($name)";
|
||||||
|
push @argsgccgo, "C.uint($name)";
|
||||||
|
} elsif($type eq "uint64") {
|
||||||
|
push @argscommun, "$name";
|
||||||
|
push @argscall, "$name uint64";
|
||||||
|
push @argsgc, "uintptr($name)";
|
||||||
|
push @argsgccgo, "C.ulonglong($name)";
|
||||||
|
} elsif($type eq "uintptr") {
|
||||||
|
push @argscommun, "$name";
|
||||||
|
push @argscall, "$name uintptr";
|
||||||
|
push @argsgc, "$name";
|
||||||
|
push @argsgccgo, "C.uintptr_t($name)";
|
||||||
|
} else {
|
||||||
|
push @argscommun, "int($name)";
|
||||||
|
push @argscall, "$name int";
|
||||||
|
push @argsgc, "uintptr($name)";
|
||||||
|
push @argsgccgo, "C.int($name)";
|
||||||
|
}
|
||||||
|
$arg_n++;
|
||||||
|
}
|
||||||
|
my $nargs = @argsgc;
|
||||||
|
|
||||||
|
# COMMUN function generation
|
||||||
|
my $argscommun = join(', ', @argscommun);
|
||||||
|
my $callcommun = "call$sysname($argscommun)";
|
||||||
|
my @ret = ("_", "_");
|
||||||
|
my $body = "";
|
||||||
|
my $do_errno = 0;
|
||||||
|
for(my $i=0; $i<@out; $i++) {
|
||||||
|
my $p = $out[$i];
|
||||||
|
my ($name, $type) = parseparam($p);
|
||||||
|
my $reg = "";
|
||||||
|
if($name eq "err") {
|
||||||
|
$reg = "e1";
|
||||||
|
$ret[1] = $reg;
|
||||||
|
$do_errno = 1;
|
||||||
|
} else {
|
||||||
|
$reg = "r0";
|
||||||
|
$ret[0] = $reg;
|
||||||
|
}
|
||||||
|
if($type eq "bool") {
|
||||||
|
$reg = "$reg != 0";
|
||||||
|
}
|
||||||
|
if($reg ne "e1") {
|
||||||
|
$body .= "\t$name = $type($reg)\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($ret[0] eq "_" && $ret[1] eq "_") {
|
||||||
|
$textcommon .= "\t$callcommun\n";
|
||||||
|
} else {
|
||||||
|
$textcommon .= "\t$ret[0], $ret[1] := $callcommun\n";
|
||||||
|
}
|
||||||
|
$textcommon .= $body;
|
||||||
|
|
||||||
|
if ($do_errno) {
|
||||||
|
$textcommon .= "\tif e1 != 0 {\n";
|
||||||
|
$textcommon .= "\t\terr = errnoErr(e1)\n";
|
||||||
|
$textcommon .= "\t}\n";
|
||||||
|
}
|
||||||
|
$textcommon .= "\treturn\n";
|
||||||
|
$textcommon .= "}\n";
|
||||||
|
|
||||||
|
if ($onlyCommon){
|
||||||
|
next
|
||||||
|
}
|
||||||
|
# CALL Prototype
|
||||||
|
my $callProto = sprintf "func call%s(%s) (r1 uintptr, e1 Errno) {\n", $sysname, join(', ', @argscall);
|
||||||
|
|
||||||
|
# GC function generation
|
||||||
|
my $asm = "syscall6";
|
||||||
|
if ($nonblock) {
|
||||||
|
$asm = "rawSyscall6";
|
||||||
|
}
|
||||||
|
|
||||||
|
if(@argsgc <= 6) {
|
||||||
|
while(@argsgc < 6) {
|
||||||
|
push @argsgc, "0";
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
print STDERR "$ARGV:$.: too many arguments to system call\n";
|
||||||
|
}
|
||||||
|
my $argsgc = join(', ', @argsgc);
|
||||||
|
my $callgc = "$asm(uintptr(unsafe.Pointer(&$sysvarname)), $nargs, $argsgc)";
|
||||||
|
|
||||||
|
$textgc .= $callProto;
|
||||||
|
$textgc .= "\tr1, _, e1 = $callgc\n";
|
||||||
|
$textgc .= "\treturn\n}\n";
|
||||||
|
|
||||||
|
# GCCGO function generation
|
||||||
|
my $argsgccgo = join(', ', @argsgccgo);
|
||||||
|
my $callgccgo = "C.$sysname($argsgccgo)";
|
||||||
|
$textgccgo .= $callProto;
|
||||||
|
$textgccgo .= "\tr1 = uintptr($callgccgo)\n";
|
||||||
|
$textgccgo .= "\te1 = syscall.GetErrno()\n";
|
||||||
|
$textgccgo .= "\treturn\n}\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
if($errors) {
|
||||||
|
exit 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Print zsyscall_aix_ppc64.go
|
||||||
|
open(my $fcommun, '>', 'zsyscall_aix_ppc64.go');
|
||||||
|
my $tofcommun = <<EOF;
|
||||||
|
// $cmdline
|
||||||
|
// Code generated by the command above; see README.md. DO NOT EDIT.
|
||||||
|
|
||||||
|
// +build $tags
|
||||||
|
|
||||||
|
package $package
|
||||||
|
|
||||||
|
import (
|
||||||
|
"unsafe"
|
||||||
|
)
|
||||||
|
|
||||||
|
EOF
|
||||||
|
|
||||||
|
$tofcommun .= "import \"golang.org/x/sys/unix\"\n" if $package ne "unix";
|
||||||
|
|
||||||
|
$tofcommun .=<<EOF;
|
||||||
|
|
||||||
|
$textcommon
|
||||||
|
EOF
|
||||||
|
print $fcommun $tofcommun;
|
||||||
|
|
||||||
|
|
||||||
|
# Print zsyscall_aix_ppc64_gc.go
|
||||||
|
open(my $fgc, '>', 'zsyscall_aix_ppc64_gc.go');
|
||||||
|
my $tofgc = <<EOF;
|
||||||
|
// $cmdline
|
||||||
|
// Code generated by the command above; see README.md. DO NOT EDIT.
|
||||||
|
|
||||||
|
// +build $tags
|
||||||
|
// +build !gccgo
|
||||||
|
|
||||||
|
package $package
|
||||||
|
|
||||||
|
import (
|
||||||
|
"unsafe"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
EOF
|
||||||
|
|
||||||
|
$tofgc .= "import \"golang.org/x/sys/unix\"\n" if $package ne "unix";
|
||||||
|
|
||||||
|
my $vardecls = "\t" . join(",\n\t", @vars);
|
||||||
|
$vardecls .= " syscallFunc";
|
||||||
|
|
||||||
|
$tofgc .=<<EOF;
|
||||||
|
$dynimports
|
||||||
|
$linknames
|
||||||
|
type syscallFunc uintptr
|
||||||
|
|
||||||
|
var (
|
||||||
|
$vardecls
|
||||||
|
)
|
||||||
|
|
||||||
|
// Implemented in runtime/syscall_aix.go.
|
||||||
|
func rawSyscall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)
|
||||||
|
func syscall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)
|
||||||
|
|
||||||
|
$textgc
|
||||||
|
EOF
|
||||||
|
print $fgc $tofgc;
|
||||||
|
|
||||||
|
# Print zsyscall_aix_ppc64_gc.go
|
||||||
|
open(my $fgccgo, '>', 'zsyscall_aix_ppc64_gccgo.go');
|
||||||
|
my $tofgccgo = <<EOF;
|
||||||
|
// $cmdline
|
||||||
|
// Code generated by the command above; see README.md. DO NOT EDIT.
|
||||||
|
|
||||||
|
// +build $tags
|
||||||
|
// +build gccgo
|
||||||
|
|
||||||
|
package $package
|
||||||
|
|
||||||
|
|
||||||
|
$c_extern
|
||||||
|
*/
|
||||||
|
import "C"
|
||||||
|
import (
|
||||||
|
"syscall"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
EOF
|
||||||
|
|
||||||
|
$tofgccgo .= "import \"golang.org/x/sys/unix\"\n" if $package ne "unix";
|
||||||
|
|
||||||
|
$tofgccgo .=<<EOF;
|
||||||
|
|
||||||
|
$textgccgo
|
||||||
|
EOF
|
||||||
|
print $fgccgo $tofgccgo;
|
||||||
|
exit 0;
|
|
@ -92,6 +92,11 @@ while(<>) {
|
||||||
my @in = parseparamlist($in);
|
my @in = parseparamlist($in);
|
||||||
my @out = parseparamlist($out);
|
my @out = parseparamlist($out);
|
||||||
|
|
||||||
|
# Try in vain to keep people from editing this file.
|
||||||
|
# The theory is that they jump into the middle of the file
|
||||||
|
# without reading the header.
|
||||||
|
$text .= "// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\n";
|
||||||
|
|
||||||
# So file name.
|
# So file name.
|
||||||
if($modname eq "") {
|
if($modname eq "") {
|
||||||
$modname = "libc";
|
$modname = "libc";
|
||||||
|
|
|
@ -32,6 +32,7 @@ my @headers = qw (
|
||||||
sys/sem.h
|
sys/sem.h
|
||||||
sys/shm.h
|
sys/shm.h
|
||||||
sys/vmmeter.h
|
sys/vmmeter.h
|
||||||
|
uvm/uvmexp.h
|
||||||
uvm/uvm_param.h
|
uvm/uvm_param.h
|
||||||
uvm/uvm_swap_encrypt.h
|
uvm/uvm_swap_encrypt.h
|
||||||
ddb/db_var.h
|
ddb/db_var.h
|
||||||
|
|
|
@ -15,10 +15,6 @@ import (
|
||||||
"unsafe"
|
"unsafe"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
|
||||||
_SYS_PLEDGE = 108
|
|
||||||
)
|
|
||||||
|
|
||||||
// Pledge implements the pledge syscall.
|
// Pledge implements the pledge syscall.
|
||||||
//
|
//
|
||||||
// The pledge syscall does not accept execpromises on OpenBSD releases
|
// The pledge syscall does not accept execpromises on OpenBSD releases
|
||||||
|
@ -34,15 +30,9 @@ func Pledge(promises, execpromises string) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// If OpenBSD <= 5.9, pledge is not available.
|
err = pledgeAvailable(maj, min, execpromises)
|
||||||
if (maj == 5 && min != 9) || maj < 5 {
|
if err != nil {
|
||||||
return fmt.Errorf("pledge syscall is not available on OpenBSD %d.%d", maj, min)
|
return err
|
||||||
}
|
|
||||||
|
|
||||||
// If OpenBSD <= 6.2 and execpromises is not empty
|
|
||||||
// return an error - execpromises is not available before 6.3
|
|
||||||
if (maj < 6 || (maj == 6 && min <= 2)) && execpromises != "" {
|
|
||||||
return fmt.Errorf("cannot use execpromises on OpenBSD %d.%d", maj, min)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pptr, err := syscall.BytePtrFromString(promises)
|
pptr, err := syscall.BytePtrFromString(promises)
|
||||||
|
@ -63,7 +53,71 @@ func Pledge(promises, execpromises string) error {
|
||||||
expr = unsafe.Pointer(exptr)
|
expr = unsafe.Pointer(exptr)
|
||||||
}
|
}
|
||||||
|
|
||||||
_, _, e := syscall.Syscall(_SYS_PLEDGE, uintptr(unsafe.Pointer(pptr)), uintptr(expr), 0)
|
_, _, e := syscall.Syscall(SYS_PLEDGE, uintptr(unsafe.Pointer(pptr)), uintptr(expr), 0)
|
||||||
|
if e != 0 {
|
||||||
|
return e
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// PledgePromises implements the pledge syscall.
|
||||||
|
//
|
||||||
|
// This changes the promises and leaves the execpromises untouched.
|
||||||
|
//
|
||||||
|
// For more information see pledge(2).
|
||||||
|
func PledgePromises(promises string) error {
|
||||||
|
maj, min, err := majmin()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = pledgeAvailable(maj, min, "")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// This variable holds the execpromises and is always nil.
|
||||||
|
var expr unsafe.Pointer
|
||||||
|
|
||||||
|
pptr, err := syscall.BytePtrFromString(promises)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
_, _, e := syscall.Syscall(SYS_PLEDGE, uintptr(unsafe.Pointer(pptr)), uintptr(expr), 0)
|
||||||
|
if e != 0 {
|
||||||
|
return e
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// PledgeExecpromises implements the pledge syscall.
|
||||||
|
//
|
||||||
|
// This changes the execpromises and leaves the promises untouched.
|
||||||
|
//
|
||||||
|
// For more information see pledge(2).
|
||||||
|
func PledgeExecpromises(execpromises string) error {
|
||||||
|
maj, min, err := majmin()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = pledgeAvailable(maj, min, execpromises)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// This variable holds the promises and is always nil.
|
||||||
|
var pptr unsafe.Pointer
|
||||||
|
|
||||||
|
exptr, err := syscall.BytePtrFromString(execpromises)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
_, _, e := syscall.Syscall(SYS_PLEDGE, uintptr(pptr), uintptr(unsafe.Pointer(exptr)), 0)
|
||||||
if e != 0 {
|
if e != 0 {
|
||||||
return e
|
return e
|
||||||
}
|
}
|
||||||
|
@ -93,3 +147,20 @@ func majmin() (major int, minor int, err error) {
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// pledgeAvailable checks for availability of the pledge(2) syscall
|
||||||
|
// based on the running OpenBSD version.
|
||||||
|
func pledgeAvailable(maj, min int, execpromises string) error {
|
||||||
|
// If OpenBSD <= 5.9, pledge is not available.
|
||||||
|
if (maj == 5 && min != 9) || maj < 5 {
|
||||||
|
return fmt.Errorf("pledge syscall is not available on OpenBSD %d.%d", maj, min)
|
||||||
|
}
|
||||||
|
|
||||||
|
// If OpenBSD <= 6.2 and execpromises is not empty,
|
||||||
|
// return an error - execpromises is not available before 6.3
|
||||||
|
if (maj < 6 || (maj == 6 && min <= 2)) && execpromises != "" {
|
||||||
|
return fmt.Errorf("cannot use execpromises on OpenBSD %d.%d", maj, min)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,44 @@
|
||||||
|
// 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 openbsd
|
||||||
|
|
||||||
|
package unix
|
||||||
|
|
||||||
|
import (
|
||||||
|
"syscall"
|
||||||
|
"unsafe"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Unveil implements the unveil syscall.
|
||||||
|
// For more information see unveil(2).
|
||||||
|
// Note that the special case of blocking further
|
||||||
|
// unveil calls is handled by UnveilBlock.
|
||||||
|
func Unveil(path string, flags string) error {
|
||||||
|
pathPtr, err := syscall.BytePtrFromString(path)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
flagsPtr, err := syscall.BytePtrFromString(flags)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
_, _, e := syscall.Syscall(SYS_UNVEIL, uintptr(unsafe.Pointer(pathPtr)), uintptr(unsafe.Pointer(flagsPtr)), 0)
|
||||||
|
if e != 0 {
|
||||||
|
return e
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// UnveilBlock blocks future unveil calls.
|
||||||
|
// For more information see unveil(2).
|
||||||
|
func UnveilBlock() error {
|
||||||
|
// Both pointers must be nil.
|
||||||
|
var pathUnsafe, flagsUnsafe unsafe.Pointer
|
||||||
|
_, _, e := syscall.Syscall(SYS_UNVEIL, uintptr(pathUnsafe), uintptr(flagsUnsafe), 0)
|
||||||
|
if e != 0 {
|
||||||
|
return e
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
|
@ -12,7 +12,7 @@ import "unsafe"
|
||||||
|
|
||||||
// Round the length of a raw sockaddr up to align it properly.
|
// Round the length of a raw sockaddr up to align it properly.
|
||||||
func cmsgAlignOf(salen int) int {
|
func cmsgAlignOf(salen int) int {
|
||||||
salign := sizeofPtr
|
salign := SizeofPtr
|
||||||
// NOTE: It seems like 64-bit Darwin, DragonFly BSD and
|
// NOTE: It seems like 64-bit Darwin, DragonFly BSD and
|
||||||
// Solaris kernels still require 32-bit aligned access to
|
// Solaris kernels still require 32-bit aligned access to
|
||||||
// network subsystem.
|
// network subsystem.
|
||||||
|
|
|
@ -305,11 +305,11 @@ func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int,
|
||||||
type WaitStatus uint32
|
type WaitStatus uint32
|
||||||
|
|
||||||
func (w WaitStatus) Stopped() bool { return w&0x40 != 0 }
|
func (w WaitStatus) Stopped() bool { return w&0x40 != 0 }
|
||||||
func (w WaitStatus) StopSignal() syscall.Signal {
|
func (w WaitStatus) StopSignal() Signal {
|
||||||
if !w.Stopped() {
|
if !w.Stopped() {
|
||||||
return -1
|
return -1
|
||||||
}
|
}
|
||||||
return syscall.Signal(w>>8) & 0xFF
|
return Signal(w>>8) & 0xFF
|
||||||
}
|
}
|
||||||
|
|
||||||
func (w WaitStatus) Exited() bool { return w&0xFF == 0 }
|
func (w WaitStatus) Exited() bool { return w&0xFF == 0 }
|
||||||
|
@ -321,11 +321,11 @@ func (w WaitStatus) ExitStatus() int {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (w WaitStatus) Signaled() bool { return w&0x40 == 0 && w&0xFF != 0 }
|
func (w WaitStatus) Signaled() bool { return w&0x40 == 0 && w&0xFF != 0 }
|
||||||
func (w WaitStatus) Signal() syscall.Signal {
|
func (w WaitStatus) Signal() Signal {
|
||||||
if !w.Signaled() {
|
if !w.Signaled() {
|
||||||
return -1
|
return -1
|
||||||
}
|
}
|
||||||
return syscall.Signal(w>>16) & 0xFF
|
return Signal(w>>16) & 0xFF
|
||||||
}
|
}
|
||||||
|
|
||||||
func (w WaitStatus) Continued() bool { return w&0x01000000 != 0 }
|
func (w WaitStatus) Continued() bool { return w&0x01000000 != 0 }
|
||||||
|
@ -383,6 +383,8 @@ func IoctlGetTermios(fd int, req uint) (*Termios, error) {
|
||||||
// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.
|
// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.
|
||||||
//sys FcntlFlock(fd uintptr, cmd int, lk *Flock_t) (err error) = fcntl
|
//sys FcntlFlock(fd uintptr, cmd int, lk *Flock_t) (err error) = fcntl
|
||||||
|
|
||||||
|
//sys fcntl(fd int, cmd int, arg int) (val int, err error)
|
||||||
|
|
||||||
func Flock(fd int, how int) (err error) {
|
func Flock(fd int, how int) (err error) {
|
||||||
return syscall.Flock(fd, how)
|
return syscall.Flock(fd, how)
|
||||||
}
|
}
|
||||||
|
@ -396,15 +398,12 @@ func Flock(fd int, how int) (err error) {
|
||||||
//sys Chroot(path string) (err error)
|
//sys Chroot(path string) (err error)
|
||||||
//sys Close(fd int) (err error)
|
//sys Close(fd int) (err error)
|
||||||
//sys Dup(oldfd int) (fd int, err error)
|
//sys Dup(oldfd int) (fd int, err error)
|
||||||
//sys Dup3(oldfd int, newfd int, flags int) (err error)
|
|
||||||
//sys Exit(code int)
|
//sys Exit(code int)
|
||||||
//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error)
|
//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error)
|
||||||
//sys Fallocate(fd int, mode uint32, off int64, len int64) (err error)
|
|
||||||
//sys Fchdir(fd int) (err error)
|
//sys Fchdir(fd int) (err error)
|
||||||
//sys Fchmod(fd int, mode uint32) (err error)
|
//sys Fchmod(fd int, mode uint32) (err error)
|
||||||
//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error)
|
//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error)
|
||||||
//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error)
|
//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error)
|
||||||
//sys fcntl(fd int, cmd int, arg int) (val int, err error)
|
|
||||||
//sys Fdatasync(fd int) (err error)
|
//sys Fdatasync(fd int) (err error)
|
||||||
//sys Fsync(fd int) (err error)
|
//sys Fsync(fd int) (err error)
|
||||||
// readdir_r
|
// readdir_r
|
||||||
|
@ -417,7 +416,7 @@ func Flock(fd int, how int) (err error) {
|
||||||
//sys Getpriority(which int, who int) (prio int, err error)
|
//sys Getpriority(which int, who int) (prio int, 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 Kill(pid int, sig syscall.Signal) (err error)
|
//sysnb Kill(pid int, sig Signal) (err error)
|
||||||
//sys Klogctl(typ int, buf []byte) (n int, err error) = syslog
|
//sys Klogctl(typ int, buf []byte) (n int, err error) = syslog
|
||||||
//sys Mkdir(dirfd int, path string, mode uint32) (err error)
|
//sys Mkdir(dirfd int, path string, mode uint32) (err error)
|
||||||
//sys Mkdirat(dirfd int, path string, mode uint32) (err error)
|
//sys Mkdirat(dirfd int, path string, mode uint32) (err error)
|
||||||
|
@ -429,7 +428,6 @@ func Flock(fd int, how int) (err error) {
|
||||||
//sys Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error)
|
//sys Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error)
|
||||||
//sys read(fd int, p []byte) (n int, err error)
|
//sys read(fd int, p []byte) (n int, err error)
|
||||||
//sys Readlink(path string, buf []byte) (n int, err error)
|
//sys Readlink(path string, buf []byte) (n int, err error)
|
||||||
//sys Removexattr(path string, attr string) (err error)
|
|
||||||
//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)
|
//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)
|
||||||
//sys Setdomainname(p []byte) (err error)
|
//sys Setdomainname(p []byte) (err error)
|
||||||
//sys Sethostname(p []byte) (err error)
|
//sys Sethostname(p []byte) (err error)
|
||||||
|
@ -443,7 +441,6 @@ func Flock(fd int, how int) (err error) {
|
||||||
//sys Setpriority(which int, who int, prio int) (err error)
|
//sys Setpriority(which int, who int, prio int) (err error)
|
||||||
//sys Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error)
|
//sys Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error)
|
||||||
//sys Sync()
|
//sys Sync()
|
||||||
//sys Tee(rfd int, wfd int, len int, flags int) (n int64, 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)
|
||||||
//sysnb Uname(buf *Utsname) (err error)
|
//sysnb Uname(buf *Utsname) (err error)
|
||||||
|
@ -451,7 +448,6 @@ func Flock(fd int, how int) (err error) {
|
||||||
// //sys Unmount(target string, flags int) (err error) = umount
|
// //sys Unmount(target string, flags int) (err error) = umount
|
||||||
//sys Unlink(path string) (err error)
|
//sys Unlink(path string) (err error)
|
||||||
//sys Unlinkat(dirfd int, path string, flags int) (err error)
|
//sys Unlinkat(dirfd int, path string, flags int) (err error)
|
||||||
//sys Unshare(flags int) (err error)
|
|
||||||
//sys Ustat(dev int, ubuf *Ustat_t) (err error)
|
//sys Ustat(dev int, ubuf *Ustat_t) (err error)
|
||||||
//sys write(fd int, p []byte) (n int, err error)
|
//sys write(fd int, p []byte) (n int, err error)
|
||||||
//sys readlen(fd int, p *byte, np int) (n int, err error) = read
|
//sys readlen(fd int, p *byte, np int) (n int, err error) = read
|
||||||
|
@ -537,19 +533,6 @@ func Pipe(p []int) (err error) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
//sysnb pipe2(p *[2]_C_int, flags int) (err error)
|
|
||||||
|
|
||||||
func Pipe2(p []int, flags int) (err error) {
|
|
||||||
if len(p) != 2 {
|
|
||||||
return EINVAL
|
|
||||||
}
|
|
||||||
var pp [2]_C_int
|
|
||||||
err = pipe2(&pp, flags)
|
|
||||||
p[0] = int(pp[0])
|
|
||||||
p[1] = int(pp[1])
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error)
|
//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error)
|
||||||
|
|
||||||
func Poll(fds []PollFd, timeout int) (n int, err error) {
|
func Poll(fds []PollFd, timeout int) (n int, err error) {
|
||||||
|
|
|
@ -248,11 +248,13 @@ func Uname(uname *Utsname) error {
|
||||||
//sys Dup(fd int) (nfd int, err error)
|
//sys Dup(fd int) (nfd int, err error)
|
||||||
//sys Dup2(from int, to int) (err error)
|
//sys Dup2(from int, to int) (err error)
|
||||||
//sys Exit(code int)
|
//sys Exit(code int)
|
||||||
|
//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error)
|
||||||
//sys Fchdir(fd int) (err error)
|
//sys Fchdir(fd int) (err error)
|
||||||
//sys Fchflags(fd int, flags int) (err error)
|
//sys Fchflags(fd int, flags int) (err error)
|
||||||
//sys Fchmod(fd int, mode uint32) (err error)
|
//sys Fchmod(fd int, mode uint32) (err error)
|
||||||
//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error)
|
//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error)
|
||||||
//sys Fchown(fd int, uid int, gid int) (err error)
|
//sys Fchown(fd int, uid int, gid int) (err error)
|
||||||
|
//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error)
|
||||||
//sys Flock(fd int, how int) (err error)
|
//sys Flock(fd int, how int) (err error)
|
||||||
//sys Fpathconf(fd int, name int) (val int, err error)
|
//sys Fpathconf(fd int, name int) (val int, err error)
|
||||||
//sys Fstat(fd int, stat *Stat_t) (err error)
|
//sys Fstat(fd int, stat *Stat_t) (err error)
|
||||||
|
@ -280,13 +282,17 @@ func Uname(uname *Utsname) error {
|
||||||
//sys Kqueue() (fd int, err error)
|
//sys Kqueue() (fd int, err error)
|
||||||
//sys Lchown(path string, uid int, gid int) (err error)
|
//sys Lchown(path string, uid int, gid int) (err error)
|
||||||
//sys Link(path string, link string) (err error)
|
//sys Link(path string, link string) (err error)
|
||||||
|
//sys Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error)
|
||||||
//sys Listen(s int, backlog int) (err error)
|
//sys Listen(s int, backlog int) (err error)
|
||||||
//sys Lstat(path string, stat *Stat_t) (err error)
|
//sys Lstat(path string, stat *Stat_t) (err error)
|
||||||
//sys Mkdir(path string, mode uint32) (err error)
|
//sys Mkdir(path string, mode uint32) (err error)
|
||||||
|
//sys Mkdirat(dirfd int, path string, mode uint32) (err error)
|
||||||
//sys Mkfifo(path string, mode uint32) (err error)
|
//sys Mkfifo(path string, mode uint32) (err error)
|
||||||
//sys Mknod(path string, mode uint32, dev int) (err error)
|
//sys Mknod(path string, mode uint32, dev int) (err error)
|
||||||
|
//sys Mknodat(fd int, path string, mode uint32, dev int) (err error)
|
||||||
//sys Nanosleep(time *Timespec, leftover *Timespec) (err error)
|
//sys Nanosleep(time *Timespec, leftover *Timespec) (err error)
|
||||||
//sys Open(path string, mode int, perm uint32) (fd int, err error)
|
//sys Open(path string, mode int, perm uint32) (fd int, err error)
|
||||||
|
//sys Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error)
|
||||||
//sys Pathconf(path string, name int) (val int, err error)
|
//sys Pathconf(path string, name int) (val int, err error)
|
||||||
//sys read(fd int, p []byte) (n int, err error)
|
//sys read(fd int, p []byte) (n int, err error)
|
||||||
//sys Readlink(path string, buf []byte) (n int, err error)
|
//sys Readlink(path string, buf []byte) (n int, err error)
|
||||||
|
@ -312,11 +318,13 @@ func Uname(uname *Utsname) error {
|
||||||
//sys Stat(path string, stat *Stat_t) (err error)
|
//sys Stat(path string, stat *Stat_t) (err error)
|
||||||
//sys Statfs(path string, stat *Statfs_t) (err error)
|
//sys Statfs(path string, stat *Statfs_t) (err error)
|
||||||
//sys Symlink(path string, link string) (err error)
|
//sys Symlink(path string, link string) (err error)
|
||||||
|
//sys Symlinkat(oldpath string, newdirfd int, newpath string) (err error)
|
||||||
//sys Sync() (err error)
|
//sys Sync() (err error)
|
||||||
//sys Truncate(path string, length int64) (err error)
|
//sys Truncate(path string, length int64) (err error)
|
||||||
//sys Umask(newmask int) (oldmask int)
|
//sys Umask(newmask int) (oldmask int)
|
||||||
//sys Undelete(path string) (err error)
|
//sys Undelete(path string) (err error)
|
||||||
//sys Unlink(path string) (err error)
|
//sys Unlink(path string) (err error)
|
||||||
|
//sys Unlinkat(dirfd int, path string, flags int) (err error)
|
||||||
//sys Unmount(path string, flags int) (err error)
|
//sys Unmount(path string, flags int) (err error)
|
||||||
//sys write(fd int, p []byte) (n int, err error)
|
//sys write(fd int, p []byte) (n int, err error)
|
||||||
//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)
|
//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)
|
||||||
|
|
|
@ -13,9 +13,34 @@
|
||||||
package unix
|
package unix
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"sync"
|
||||||
"unsafe"
|
"unsafe"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
SYS_FSTAT_FREEBSD12 = 551 // { int fstat(int fd, _Out_ struct stat *sb); }
|
||||||
|
SYS_FSTATAT_FREEBSD12 = 552 // { int fstatat(int fd, _In_z_ char *path, \
|
||||||
|
SYS_GETDIRENTRIES_FREEBSD12 = 554 // { ssize_t getdirentries(int fd, \
|
||||||
|
SYS_STATFS_FREEBSD12 = 555 // { int statfs(_In_z_ char *path, \
|
||||||
|
SYS_FSTATFS_FREEBSD12 = 556 // { int fstatfs(int fd, \
|
||||||
|
SYS_GETFSSTAT_FREEBSD12 = 557 // { int getfsstat( \
|
||||||
|
SYS_MKNODAT_FREEBSD12 = 559 // { int mknodat(int fd, _In_z_ char *path, \
|
||||||
|
)
|
||||||
|
|
||||||
|
// See https://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/versions.html.
|
||||||
|
var (
|
||||||
|
osreldateOnce sync.Once
|
||||||
|
osreldate uint32
|
||||||
|
)
|
||||||
|
|
||||||
|
// INO64_FIRST from /usr/src/lib/libc/sys/compat-ino64.h
|
||||||
|
const _ino64First = 1200031
|
||||||
|
|
||||||
|
func supportsABI(ver uint32) bool {
|
||||||
|
osreldateOnce.Do(func() { osreldate, _ = SysctlUint32("kern.osreldate") })
|
||||||
|
return osreldate >= ver
|
||||||
|
}
|
||||||
|
|
||||||
// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.
|
// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.
|
||||||
type SockaddrDatalink struct {
|
type SockaddrDatalink struct {
|
||||||
Len uint8
|
Len uint8
|
||||||
|
@ -121,17 +146,39 @@ func Getwd() (string, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
|
func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
|
||||||
var _p0 unsafe.Pointer
|
var (
|
||||||
var bufsize uintptr
|
_p0 unsafe.Pointer
|
||||||
|
bufsize uintptr
|
||||||
|
oldBuf []statfs_freebsd11_t
|
||||||
|
needsConvert bool
|
||||||
|
)
|
||||||
|
|
||||||
if len(buf) > 0 {
|
if len(buf) > 0 {
|
||||||
_p0 = unsafe.Pointer(&buf[0])
|
if supportsABI(_ino64First) {
|
||||||
bufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf))
|
_p0 = unsafe.Pointer(&buf[0])
|
||||||
|
bufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf))
|
||||||
|
} else {
|
||||||
|
n := len(buf)
|
||||||
|
oldBuf = make([]statfs_freebsd11_t, n)
|
||||||
|
_p0 = unsafe.Pointer(&oldBuf[0])
|
||||||
|
bufsize = unsafe.Sizeof(statfs_freebsd11_t{}) * uintptr(n)
|
||||||
|
needsConvert = true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
r0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(_p0), bufsize, uintptr(flags))
|
var sysno uintptr = SYS_GETFSSTAT
|
||||||
|
if supportsABI(_ino64First) {
|
||||||
|
sysno = SYS_GETFSSTAT_FREEBSD12
|
||||||
|
}
|
||||||
|
r0, _, e1 := Syscall(sysno, uintptr(_p0), bufsize, uintptr(flags))
|
||||||
n = int(r0)
|
n = int(r0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = e1
|
err = e1
|
||||||
}
|
}
|
||||||
|
if e1 == 0 && needsConvert {
|
||||||
|
for i := range oldBuf {
|
||||||
|
buf[i].convertFrom(&oldBuf[i])
|
||||||
|
}
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -225,6 +272,234 @@ func Uname(uname *Utsname) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func Stat(path string, st *Stat_t) (err error) {
|
||||||
|
var oldStat stat_freebsd11_t
|
||||||
|
if supportsABI(_ino64First) {
|
||||||
|
return fstatat_freebsd12(AT_FDCWD, path, st, 0)
|
||||||
|
}
|
||||||
|
err = stat(path, &oldStat)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
st.convertFrom(&oldStat)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func Lstat(path string, st *Stat_t) (err error) {
|
||||||
|
var oldStat stat_freebsd11_t
|
||||||
|
if supportsABI(_ino64First) {
|
||||||
|
return fstatat_freebsd12(AT_FDCWD, path, st, AT_SYMLINK_NOFOLLOW)
|
||||||
|
}
|
||||||
|
err = lstat(path, &oldStat)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
st.convertFrom(&oldStat)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func Fstat(fd int, st *Stat_t) (err error) {
|
||||||
|
var oldStat stat_freebsd11_t
|
||||||
|
if supportsABI(_ino64First) {
|
||||||
|
return fstat_freebsd12(fd, st)
|
||||||
|
}
|
||||||
|
err = fstat(fd, &oldStat)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
st.convertFrom(&oldStat)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func Fstatat(fd int, path string, st *Stat_t, flags int) (err error) {
|
||||||
|
var oldStat stat_freebsd11_t
|
||||||
|
if supportsABI(_ino64First) {
|
||||||
|
return fstatat_freebsd12(fd, path, st, flags)
|
||||||
|
}
|
||||||
|
err = fstatat(fd, path, &oldStat, flags)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
st.convertFrom(&oldStat)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func Statfs(path string, st *Statfs_t) (err error) {
|
||||||
|
var oldStatfs statfs_freebsd11_t
|
||||||
|
if supportsABI(_ino64First) {
|
||||||
|
return statfs_freebsd12(path, st)
|
||||||
|
}
|
||||||
|
err = statfs(path, &oldStatfs)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
st.convertFrom(&oldStatfs)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func Fstatfs(fd int, st *Statfs_t) (err error) {
|
||||||
|
var oldStatfs statfs_freebsd11_t
|
||||||
|
if supportsABI(_ino64First) {
|
||||||
|
return fstatfs_freebsd12(fd, st)
|
||||||
|
}
|
||||||
|
err = fstatfs(fd, &oldStatfs)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
st.convertFrom(&oldStatfs)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func Getdents(fd int, buf []byte) (n int, err error) {
|
||||||
|
return Getdirentries(fd, buf, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
|
||||||
|
if supportsABI(_ino64First) {
|
||||||
|
return getdirentries_freebsd12(fd, buf, basep)
|
||||||
|
}
|
||||||
|
|
||||||
|
// The old syscall entries are smaller than the new. Use 1/4 of the original
|
||||||
|
// buffer size rounded up to DIRBLKSIZ (see /usr/src/lib/libc/sys/getdirentries.c).
|
||||||
|
oldBufLen := roundup(len(buf)/4, _dirblksiz)
|
||||||
|
oldBuf := make([]byte, oldBufLen)
|
||||||
|
n, err = getdirentries(fd, oldBuf, basep)
|
||||||
|
if err == nil && n > 0 {
|
||||||
|
n = convertFromDirents11(buf, oldBuf[:n])
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func Mknod(path string, mode uint32, dev uint64) (err error) {
|
||||||
|
var oldDev int
|
||||||
|
if supportsABI(_ino64First) {
|
||||||
|
return mknodat_freebsd12(AT_FDCWD, path, mode, dev)
|
||||||
|
}
|
||||||
|
oldDev = int(dev)
|
||||||
|
return mknod(path, mode, oldDev)
|
||||||
|
}
|
||||||
|
|
||||||
|
func Mknodat(fd int, path string, mode uint32, dev uint64) (err error) {
|
||||||
|
var oldDev int
|
||||||
|
if supportsABI(_ino64First) {
|
||||||
|
return mknodat_freebsd12(fd, path, mode, dev)
|
||||||
|
}
|
||||||
|
oldDev = int(dev)
|
||||||
|
return mknodat(fd, path, mode, oldDev)
|
||||||
|
}
|
||||||
|
|
||||||
|
// round x to the nearest multiple of y, larger or equal to x.
|
||||||
|
//
|
||||||
|
// from /usr/include/sys/param.h Macros for counting and rounding.
|
||||||
|
// #define roundup(x, y) ((((x)+((y)-1))/(y))*(y))
|
||||||
|
func roundup(x, y int) int {
|
||||||
|
return ((x + y - 1) / y) * y
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Stat_t) convertFrom(old *stat_freebsd11_t) {
|
||||||
|
*s = Stat_t{
|
||||||
|
Dev: uint64(old.Dev),
|
||||||
|
Ino: uint64(old.Ino),
|
||||||
|
Nlink: uint64(old.Nlink),
|
||||||
|
Mode: old.Mode,
|
||||||
|
Uid: old.Uid,
|
||||||
|
Gid: old.Gid,
|
||||||
|
Rdev: uint64(old.Rdev),
|
||||||
|
Atim: old.Atim,
|
||||||
|
Mtim: old.Mtim,
|
||||||
|
Ctim: old.Ctim,
|
||||||
|
Birthtim: old.Birthtim,
|
||||||
|
Size: old.Size,
|
||||||
|
Blocks: old.Blocks,
|
||||||
|
Blksize: old.Blksize,
|
||||||
|
Flags: old.Flags,
|
||||||
|
Gen: uint64(old.Gen),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Statfs_t) convertFrom(old *statfs_freebsd11_t) {
|
||||||
|
*s = Statfs_t{
|
||||||
|
Version: _statfsVersion,
|
||||||
|
Type: old.Type,
|
||||||
|
Flags: old.Flags,
|
||||||
|
Bsize: old.Bsize,
|
||||||
|
Iosize: old.Iosize,
|
||||||
|
Blocks: old.Blocks,
|
||||||
|
Bfree: old.Bfree,
|
||||||
|
Bavail: old.Bavail,
|
||||||
|
Files: old.Files,
|
||||||
|
Ffree: old.Ffree,
|
||||||
|
Syncwrites: old.Syncwrites,
|
||||||
|
Asyncwrites: old.Asyncwrites,
|
||||||
|
Syncreads: old.Syncreads,
|
||||||
|
Asyncreads: old.Asyncreads,
|
||||||
|
// Spare
|
||||||
|
Namemax: old.Namemax,
|
||||||
|
Owner: old.Owner,
|
||||||
|
Fsid: old.Fsid,
|
||||||
|
// Charspare
|
||||||
|
// Fstypename
|
||||||
|
// Mntfromname
|
||||||
|
// Mntonname
|
||||||
|
}
|
||||||
|
|
||||||
|
sl := old.Fstypename[:]
|
||||||
|
n := clen(*(*[]byte)(unsafe.Pointer(&sl)))
|
||||||
|
copy(s.Fstypename[:], old.Fstypename[:n])
|
||||||
|
|
||||||
|
sl = old.Mntfromname[:]
|
||||||
|
n = clen(*(*[]byte)(unsafe.Pointer(&sl)))
|
||||||
|
copy(s.Mntfromname[:], old.Mntfromname[:n])
|
||||||
|
|
||||||
|
sl = old.Mntonname[:]
|
||||||
|
n = clen(*(*[]byte)(unsafe.Pointer(&sl)))
|
||||||
|
copy(s.Mntonname[:], old.Mntonname[:n])
|
||||||
|
}
|
||||||
|
|
||||||
|
func convertFromDirents11(buf []byte, old []byte) int {
|
||||||
|
const (
|
||||||
|
fixedSize = int(unsafe.Offsetof(Dirent{}.Name))
|
||||||
|
oldFixedSize = int(unsafe.Offsetof(dirent_freebsd11{}.Name))
|
||||||
|
)
|
||||||
|
|
||||||
|
dstPos := 0
|
||||||
|
srcPos := 0
|
||||||
|
for dstPos+fixedSize < len(buf) && srcPos+oldFixedSize < len(old) {
|
||||||
|
dstDirent := (*Dirent)(unsafe.Pointer(&buf[dstPos]))
|
||||||
|
srcDirent := (*dirent_freebsd11)(unsafe.Pointer(&old[srcPos]))
|
||||||
|
|
||||||
|
reclen := roundup(fixedSize+int(srcDirent.Namlen)+1, 8)
|
||||||
|
if dstPos+reclen > len(buf) {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
dstDirent.Fileno = uint64(srcDirent.Fileno)
|
||||||
|
dstDirent.Off = 0
|
||||||
|
dstDirent.Reclen = uint16(reclen)
|
||||||
|
dstDirent.Type = srcDirent.Type
|
||||||
|
dstDirent.Pad0 = 0
|
||||||
|
dstDirent.Namlen = uint16(srcDirent.Namlen)
|
||||||
|
dstDirent.Pad1 = 0
|
||||||
|
|
||||||
|
copy(dstDirent.Name[:], srcDirent.Name[:srcDirent.Namlen])
|
||||||
|
padding := buf[dstPos+fixedSize+int(dstDirent.Namlen) : dstPos+reclen]
|
||||||
|
for i := range padding {
|
||||||
|
padding[i] = 0
|
||||||
|
}
|
||||||
|
|
||||||
|
dstPos += int(dstDirent.Reclen)
|
||||||
|
srcPos += int(srcDirent.Reclen)
|
||||||
|
}
|
||||||
|
|
||||||
|
return dstPos
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Exposed directly
|
* Exposed directly
|
||||||
*/
|
*/
|
||||||
|
@ -264,13 +539,16 @@ func Uname(uname *Utsname) error {
|
||||||
//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error)
|
//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error)
|
||||||
//sys Flock(fd int, how int) (err error)
|
//sys Flock(fd int, how int) (err error)
|
||||||
//sys Fpathconf(fd int, name int) (val int, err error)
|
//sys Fpathconf(fd int, name int) (val int, err error)
|
||||||
//sys Fstat(fd int, stat *Stat_t) (err error)
|
//sys fstat(fd int, stat *stat_freebsd11_t) (err error)
|
||||||
//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error)
|
//sys fstat_freebsd12(fd int, stat *Stat_t) (err error)
|
||||||
//sys Fstatfs(fd int, stat *Statfs_t) (err error)
|
//sys fstatat(fd int, path string, stat *stat_freebsd11_t, flags int) (err error)
|
||||||
|
//sys fstatat_freebsd12(fd int, path string, stat *Stat_t, flags int) (err error)
|
||||||
|
//sys fstatfs(fd int, stat *statfs_freebsd11_t) (err error)
|
||||||
|
//sys fstatfs_freebsd12(fd int, stat *Statfs_t) (err error)
|
||||||
//sys Fsync(fd int) (err error)
|
//sys Fsync(fd int) (err error)
|
||||||
//sys Ftruncate(fd int, length int64) (err error)
|
//sys Ftruncate(fd int, length int64) (err error)
|
||||||
//sys Getdents(fd int, buf []byte) (n int, err error)
|
//sys getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error)
|
||||||
//sys Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error)
|
//sys getdirentries_freebsd12(fd int, buf []byte, basep *uintptr) (n int, err error)
|
||||||
//sys Getdtablesize() (size int)
|
//sys Getdtablesize() (size int)
|
||||||
//sysnb Getegid() (egid int)
|
//sysnb Getegid() (egid int)
|
||||||
//sysnb Geteuid() (uid int)
|
//sysnb Geteuid() (uid int)
|
||||||
|
@ -292,11 +570,13 @@ func Uname(uname *Utsname) error {
|
||||||
//sys Link(path string, link string) (err error)
|
//sys Link(path string, link string) (err error)
|
||||||
//sys Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error)
|
//sys Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error)
|
||||||
//sys Listen(s int, backlog int) (err error)
|
//sys Listen(s int, backlog int) (err error)
|
||||||
//sys Lstat(path string, stat *Stat_t) (err error)
|
//sys lstat(path string, stat *stat_freebsd11_t) (err error)
|
||||||
//sys Mkdir(path string, mode uint32) (err error)
|
//sys Mkdir(path string, mode uint32) (err error)
|
||||||
//sys Mkdirat(dirfd int, path string, mode uint32) (err error)
|
//sys Mkdirat(dirfd int, path string, mode uint32) (err error)
|
||||||
//sys Mkfifo(path string, mode uint32) (err error)
|
//sys Mkfifo(path string, mode uint32) (err error)
|
||||||
//sys Mknod(path string, mode uint32, dev int) (err error)
|
//sys mknod(path string, mode uint32, dev int) (err error)
|
||||||
|
//sys mknodat(fd int, path string, mode uint32, dev int) (err error)
|
||||||
|
//sys mknodat_freebsd12(fd int, path string, mode uint32, dev uint64) (err error)
|
||||||
//sys Nanosleep(time *Timespec, leftover *Timespec) (err error)
|
//sys Nanosleep(time *Timespec, leftover *Timespec) (err error)
|
||||||
//sys Open(path string, mode int, perm uint32) (fd int, err error)
|
//sys Open(path string, mode int, perm uint32) (fd int, err error)
|
||||||
//sys Openat(fdat int, path string, mode int, perm uint32) (fd int, err error)
|
//sys Openat(fdat int, path string, mode int, perm uint32) (fd int, err error)
|
||||||
|
@ -326,8 +606,9 @@ func Uname(uname *Utsname) error {
|
||||||
//sysnb Setsid() (pid int, err error)
|
//sysnb Setsid() (pid int, err error)
|
||||||
//sysnb Settimeofday(tp *Timeval) (err error)
|
//sysnb Settimeofday(tp *Timeval) (err error)
|
||||||
//sysnb Setuid(uid int) (err error)
|
//sysnb Setuid(uid int) (err error)
|
||||||
//sys Stat(path string, stat *Stat_t) (err error)
|
//sys stat(path string, stat *stat_freebsd11_t) (err error)
|
||||||
//sys Statfs(path string, stat *Statfs_t) (err error)
|
//sys statfs(path string, stat *statfs_freebsd11_t) (err error)
|
||||||
|
//sys statfs_freebsd12(path string, stat *Statfs_t) (err error)
|
||||||
//sys Symlink(path string, link string) (err error)
|
//sys Symlink(path string, link string) (err error)
|
||||||
//sys Symlinkat(oldpath string, newdirfd int, newpath string) (err error)
|
//sys Symlinkat(oldpath string, newdirfd int, newpath string) (err error)
|
||||||
//sys Sync() (err error)
|
//sys Sync() (err error)
|
||||||
|
@ -382,6 +663,7 @@ func Uname(uname *Utsname) error {
|
||||||
// Kqueue_portset
|
// Kqueue_portset
|
||||||
// Getattrlist
|
// Getattrlist
|
||||||
// Setattrlist
|
// Setattrlist
|
||||||
|
// Getdents
|
||||||
// Getdirentriesattr
|
// Getdirentriesattr
|
||||||
// Searchfs
|
// Searchfs
|
||||||
// Delete
|
// Delete
|
||||||
|
|
|
@ -12,6 +12,8 @@
|
||||||
package unix
|
package unix
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/binary"
|
||||||
|
"net"
|
||||||
"syscall"
|
"syscall"
|
||||||
"unsafe"
|
"unsafe"
|
||||||
)
|
)
|
||||||
|
@ -55,6 +57,15 @@ func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
|
||||||
// ioctl itself should not be exposed directly, but additional get/set
|
// ioctl itself should not be exposed directly, but additional get/set
|
||||||
// functions for specific types are permissible.
|
// functions for specific types are permissible.
|
||||||
|
|
||||||
|
// IoctlSetPointerInt performs an ioctl operation which sets an
|
||||||
|
// integer value on fd, using the specified request number. The ioctl
|
||||||
|
// argument is called with a pointer to the integer value, rather than
|
||||||
|
// passing the integer value directly.
|
||||||
|
func IoctlSetPointerInt(fd int, req uint, value int) error {
|
||||||
|
v := int32(value)
|
||||||
|
return ioctl(fd, req, uintptr(unsafe.Pointer(&v)))
|
||||||
|
}
|
||||||
|
|
||||||
// IoctlSetInt performs an ioctl operation which sets an integer value
|
// IoctlSetInt performs an ioctl operation which sets an integer value
|
||||||
// on fd, using the specified request number.
|
// on fd, using the specified request number.
|
||||||
func IoctlSetInt(fd int, req uint, value int) error {
|
func IoctlSetInt(fd int, req uint, value int) error {
|
||||||
|
@ -710,6 +721,51 @@ func (sa *SockaddrXDP) sockaddr() (unsafe.Pointer, _Socklen, error) {
|
||||||
return unsafe.Pointer(&sa.raw), SizeofSockaddrXDP, nil
|
return unsafe.Pointer(&sa.raw), SizeofSockaddrXDP, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// This constant mirrors the #define of PX_PROTO_OE in
|
||||||
|
// linux/if_pppox.h. We're defining this by hand here instead of
|
||||||
|
// autogenerating through mkerrors.sh because including
|
||||||
|
// linux/if_pppox.h causes some declaration conflicts with other
|
||||||
|
// includes (linux/if_pppox.h includes linux/in.h, which conflicts
|
||||||
|
// with netinet/in.h). Given that we only need a single zero constant
|
||||||
|
// out of that file, it's cleaner to just define it by hand here.
|
||||||
|
const px_proto_oe = 0
|
||||||
|
|
||||||
|
type SockaddrPPPoE struct {
|
||||||
|
SID uint16
|
||||||
|
Remote net.HardwareAddr
|
||||||
|
Dev string
|
||||||
|
raw RawSockaddrPPPoX
|
||||||
|
}
|
||||||
|
|
||||||
|
func (sa *SockaddrPPPoE) sockaddr() (unsafe.Pointer, _Socklen, error) {
|
||||||
|
if len(sa.Remote) != 6 {
|
||||||
|
return nil, 0, EINVAL
|
||||||
|
}
|
||||||
|
if len(sa.Dev) > IFNAMSIZ-1 {
|
||||||
|
return nil, 0, EINVAL
|
||||||
|
}
|
||||||
|
|
||||||
|
*(*uint16)(unsafe.Pointer(&sa.raw[0])) = AF_PPPOX
|
||||||
|
// This next field is in host-endian byte order. We can't use the
|
||||||
|
// same unsafe pointer cast as above, because this value is not
|
||||||
|
// 32-bit aligned and some architectures don't allow unaligned
|
||||||
|
// access.
|
||||||
|
//
|
||||||
|
// However, the value of px_proto_oe is 0, so we can use
|
||||||
|
// encoding/binary helpers to write the bytes without worrying
|
||||||
|
// about the ordering.
|
||||||
|
binary.BigEndian.PutUint32(sa.raw[2:6], px_proto_oe)
|
||||||
|
// This field is deliberately big-endian, unlike the previous
|
||||||
|
// one. The kernel expects SID to be in network byte order.
|
||||||
|
binary.BigEndian.PutUint16(sa.raw[6:8], sa.SID)
|
||||||
|
copy(sa.raw[8:14], sa.Remote)
|
||||||
|
for i := 14; i < 14+IFNAMSIZ; i++ {
|
||||||
|
sa.raw[i] = 0
|
||||||
|
}
|
||||||
|
copy(sa.raw[14:], sa.Dev)
|
||||||
|
return unsafe.Pointer(&sa.raw), SizeofSockaddrPPPoX, nil
|
||||||
|
}
|
||||||
|
|
||||||
func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {
|
func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {
|
||||||
switch rsa.Addr.Family {
|
switch rsa.Addr.Family {
|
||||||
case AF_NETLINK:
|
case AF_NETLINK:
|
||||||
|
@ -820,6 +876,22 @@ func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {
|
||||||
SharedUmemFD: pp.Shared_umem_fd,
|
SharedUmemFD: pp.Shared_umem_fd,
|
||||||
}
|
}
|
||||||
return sa, nil
|
return sa, nil
|
||||||
|
case AF_PPPOX:
|
||||||
|
pp := (*RawSockaddrPPPoX)(unsafe.Pointer(rsa))
|
||||||
|
if binary.BigEndian.Uint32(pp[2:6]) != px_proto_oe {
|
||||||
|
return nil, EINVAL
|
||||||
|
}
|
||||||
|
sa := &SockaddrPPPoE{
|
||||||
|
SID: binary.BigEndian.Uint16(pp[6:8]),
|
||||||
|
Remote: net.HardwareAddr(pp[8:14]),
|
||||||
|
}
|
||||||
|
for i := 14; i < 14+IFNAMSIZ; i++ {
|
||||||
|
if pp[i] == 0 {
|
||||||
|
sa.Dev = string(pp[14:i])
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return sa, nil
|
||||||
}
|
}
|
||||||
return nil, EAFNOSUPPORT
|
return nil, EAFNOSUPPORT
|
||||||
}
|
}
|
||||||
|
@ -1122,7 +1194,7 @@ func ptracePeek(req int, pid int, addr uintptr, out []byte) (count int, err erro
|
||||||
// The ptrace syscall differs from glibc's ptrace.
|
// The ptrace syscall differs from glibc's ptrace.
|
||||||
// Peeks returns the word in *data, not as the return value.
|
// Peeks returns the word in *data, not as the return value.
|
||||||
|
|
||||||
var buf [sizeofPtr]byte
|
var buf [SizeofPtr]byte
|
||||||
|
|
||||||
// Leading edge. PEEKTEXT/PEEKDATA don't require aligned
|
// Leading edge. PEEKTEXT/PEEKDATA don't require aligned
|
||||||
// access (PEEKUSER warns that it might), but if we don't
|
// access (PEEKUSER warns that it might), but if we don't
|
||||||
|
@ -1130,12 +1202,12 @@ func ptracePeek(req int, pid int, addr uintptr, out []byte) (count int, err erro
|
||||||
// boundary and not get the bytes leading up to the page
|
// boundary and not get the bytes leading up to the page
|
||||||
// boundary.
|
// boundary.
|
||||||
n := 0
|
n := 0
|
||||||
if addr%sizeofPtr != 0 {
|
if addr%SizeofPtr != 0 {
|
||||||
err = ptrace(req, pid, addr-addr%sizeofPtr, uintptr(unsafe.Pointer(&buf[0])))
|
err = ptrace(req, pid, addr-addr%SizeofPtr, uintptr(unsafe.Pointer(&buf[0])))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
n += copy(out, buf[addr%sizeofPtr:])
|
n += copy(out, buf[addr%SizeofPtr:])
|
||||||
out = out[n:]
|
out = out[n:]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1173,15 +1245,15 @@ func ptracePoke(pokeReq int, peekReq int, pid int, addr uintptr, data []byte) (c
|
||||||
|
|
||||||
// Leading edge.
|
// Leading edge.
|
||||||
n := 0
|
n := 0
|
||||||
if addr%sizeofPtr != 0 {
|
if addr%SizeofPtr != 0 {
|
||||||
var buf [sizeofPtr]byte
|
var buf [SizeofPtr]byte
|
||||||
err = ptrace(peekReq, pid, addr-addr%sizeofPtr, uintptr(unsafe.Pointer(&buf[0])))
|
err = ptrace(peekReq, pid, addr-addr%SizeofPtr, uintptr(unsafe.Pointer(&buf[0])))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
n += copy(buf[addr%sizeofPtr:], data)
|
n += copy(buf[addr%SizeofPtr:], data)
|
||||||
word := *((*uintptr)(unsafe.Pointer(&buf[0])))
|
word := *((*uintptr)(unsafe.Pointer(&buf[0])))
|
||||||
err = ptrace(pokeReq, pid, addr-addr%sizeofPtr, word)
|
err = ptrace(pokeReq, pid, addr-addr%SizeofPtr, word)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
|
@ -1189,19 +1261,19 @@ func ptracePoke(pokeReq int, peekReq int, pid int, addr uintptr, data []byte) (c
|
||||||
}
|
}
|
||||||
|
|
||||||
// Interior.
|
// Interior.
|
||||||
for len(data) > sizeofPtr {
|
for len(data) > SizeofPtr {
|
||||||
word := *((*uintptr)(unsafe.Pointer(&data[0])))
|
word := *((*uintptr)(unsafe.Pointer(&data[0])))
|
||||||
err = ptrace(pokeReq, pid, addr+uintptr(n), word)
|
err = ptrace(pokeReq, pid, addr+uintptr(n), word)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return n, err
|
return n, err
|
||||||
}
|
}
|
||||||
n += sizeofPtr
|
n += SizeofPtr
|
||||||
data = data[sizeofPtr:]
|
data = data[SizeofPtr:]
|
||||||
}
|
}
|
||||||
|
|
||||||
// Trailing edge.
|
// Trailing edge.
|
||||||
if len(data) > 0 {
|
if len(data) > 0 {
|
||||||
var buf [sizeofPtr]byte
|
var buf [SizeofPtr]byte
|
||||||
err = ptrace(peekReq, pid, addr+uintptr(n), uintptr(unsafe.Pointer(&buf[0])))
|
err = ptrace(peekReq, pid, addr+uintptr(n), uintptr(unsafe.Pointer(&buf[0])))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return n, err
|
return n, err
|
||||||
|
@ -1300,9 +1372,11 @@ func Mount(source string, target string, fstype string, flags uintptr, data stri
|
||||||
//sys Adjtimex(buf *Timex) (state int, err error)
|
//sys Adjtimex(buf *Timex) (state int, err error)
|
||||||
//sys Chdir(path string) (err error)
|
//sys Chdir(path string) (err error)
|
||||||
//sys Chroot(path string) (err error)
|
//sys Chroot(path string) (err error)
|
||||||
|
//sys ClockGetres(clockid int32, res *Timespec) (err error)
|
||||||
//sys ClockGettime(clockid int32, time *Timespec) (err error)
|
//sys ClockGettime(clockid int32, time *Timespec) (err error)
|
||||||
//sys Close(fd int) (err error)
|
//sys Close(fd int) (err error)
|
||||||
//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 Dup(oldfd int) (fd int, err error)
|
//sys Dup(oldfd int) (fd int, err error)
|
||||||
//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)
|
||||||
|
@ -1316,6 +1390,7 @@ func Mount(source string, target string, fstype string, flags uintptr, data stri
|
||||||
//sys fcntl(fd int, cmd int, arg int) (val int, err error)
|
//sys fcntl(fd int, cmd int, arg int) (val int, err error)
|
||||||
//sys Fdatasync(fd int) (err error)
|
//sys Fdatasync(fd int) (err error)
|
||||||
//sys Fgetxattr(fd int, attr string, dest []byte) (sz int, err error)
|
//sys Fgetxattr(fd int, attr string, dest []byte) (sz int, err error)
|
||||||
|
//sys FinitModule(fd int, params string, flags int) (err error)
|
||||||
//sys Flistxattr(fd int, dest []byte) (sz int, err error)
|
//sys Flistxattr(fd int, dest []byte) (sz int, err error)
|
||||||
//sys Flock(fd int, how int) (err error)
|
//sys Flock(fd int, how int) (err error)
|
||||||
//sys Fremovexattr(fd int, attr string) (err error)
|
//sys Fremovexattr(fd int, attr string) (err error)
|
||||||
|
@ -1337,6 +1412,7 @@ func Getpgrp() (pid int) {
|
||||||
//sysnb Getsid(pid int) (sid int, err error)
|
//sysnb Getsid(pid int) (sid int, err error)
|
||||||
//sysnb Gettid() (tid int)
|
//sysnb Gettid() (tid int)
|
||||||
//sys Getxattr(path string, attr string, dest []byte) (sz int, err error)
|
//sys Getxattr(path string, attr string, dest []byte) (sz int, err error)
|
||||||
|
//sys InitModule(moduleImage []byte, params string) (err error)
|
||||||
//sys InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error)
|
//sys InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error)
|
||||||
//sysnb InotifyInit1(flags int) (fd int, err error)
|
//sysnb InotifyInit1(flags int) (fd int, err error)
|
||||||
//sysnb InotifyRmWatch(fd int, watchdesc uint32) (success int, err error)
|
//sysnb InotifyRmWatch(fd int, watchdesc uint32) (success int, err error)
|
||||||
|
@ -1523,12 +1599,9 @@ func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
|
||||||
// Brk
|
// Brk
|
||||||
// Capget
|
// Capget
|
||||||
// Capset
|
// Capset
|
||||||
// ClockGetres
|
|
||||||
// ClockNanosleep
|
// ClockNanosleep
|
||||||
// ClockSettime
|
// ClockSettime
|
||||||
// Clone
|
// Clone
|
||||||
// CreateModule
|
|
||||||
// DeleteModule
|
|
||||||
// EpollCtlOld
|
// EpollCtlOld
|
||||||
// EpollPwait
|
// EpollPwait
|
||||||
// EpollWaitOld
|
// EpollWaitOld
|
||||||
|
@ -1572,7 +1645,6 @@ func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
|
||||||
// Pselect6
|
// Pselect6
|
||||||
// Ptrace
|
// Ptrace
|
||||||
// Putpmsg
|
// Putpmsg
|
||||||
// QueryModule
|
|
||||||
// Quotactl
|
// Quotactl
|
||||||
// Readahead
|
// Readahead
|
||||||
// Readv
|
// Readv
|
||||||
|
|
|
@ -160,3 +160,16 @@ func Poll(fds []PollFd, timeout int) (n int, err error) {
|
||||||
}
|
}
|
||||||
return poll(&fds[0], len(fds), timeout)
|
return poll(&fds[0], len(fds), timeout)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//sys kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)
|
||||||
|
|
||||||
|
func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {
|
||||||
|
cmdlineLen := len(cmdline)
|
||||||
|
if cmdlineLen > 0 {
|
||||||
|
// Account for the additional NULL byte added by
|
||||||
|
// BytePtrFromString in kexecFileLoad. The kexec_file_load
|
||||||
|
// syscall expects a NULL-terminated string.
|
||||||
|
cmdlineLen++
|
||||||
|
}
|
||||||
|
return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)
|
||||||
|
}
|
||||||
|
|
|
@ -191,12 +191,9 @@ func Dup2(oldfd int, newfd int) (err error) {
|
||||||
return Dup3(oldfd, newfd, 0)
|
return Dup3(oldfd, newfd, 0)
|
||||||
}
|
}
|
||||||
|
|
||||||
func Pause() (err error) {
|
func Pause() error {
|
||||||
_, _, e1 := Syscall6(SYS_PPOLL, 0, 0, 0, 0, 0, 0)
|
_, err := ppoll(nil, 0, nil, nil)
|
||||||
if e1 != 0 {
|
return err
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func Poll(fds []PollFd, timeout int) (n int, err error) {
|
func Poll(fds []PollFd, timeout int) (n int, err error) {
|
||||||
|
|
|
@ -136,3 +136,16 @@ func SyncFileRange(fd int, off int64, n int64, flags int) error {
|
||||||
// order of their arguments.
|
// order of their arguments.
|
||||||
return syncFileRange2(fd, flags, off, n)
|
return syncFileRange2(fd, flags, off, n)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//sys kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)
|
||||||
|
|
||||||
|
func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {
|
||||||
|
cmdlineLen := len(cmdline)
|
||||||
|
if cmdlineLen > 0 {
|
||||||
|
// Account for the additional NULL byte added by
|
||||||
|
// BytePtrFromString in kexecFileLoad. The kexec_file_load
|
||||||
|
// syscall expects a NULL-terminated string.
|
||||||
|
cmdlineLen++
|
||||||
|
}
|
||||||
|
return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)
|
||||||
|
}
|
||||||
|
|
|
@ -191,12 +191,9 @@ func Dup2(oldfd int, newfd int) (err error) {
|
||||||
return Dup3(oldfd, newfd, 0)
|
return Dup3(oldfd, newfd, 0)
|
||||||
}
|
}
|
||||||
|
|
||||||
func Pause() (err error) {
|
func Pause() error {
|
||||||
_, _, e1 := Syscall6(SYS_PPOLL, 0, 0, 0, 0, 0, 0)
|
_, err := ppoll(nil, 0, nil, nil)
|
||||||
if e1 != 0 {
|
return err
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func Poll(fds []PollFd, timeout int) (n int, err error) {
|
func Poll(fds []PollFd, timeout int) (n int, err error) {
|
||||||
|
|
|
@ -322,3 +322,16 @@ func Poll(fds []PollFd, timeout int) (n int, err error) {
|
||||||
}
|
}
|
||||||
return poll(&fds[0], len(fds), timeout)
|
return poll(&fds[0], len(fds), timeout)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//sys kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)
|
||||||
|
|
||||||
|
func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {
|
||||||
|
cmdlineLen := len(cmdline)
|
||||||
|
if cmdlineLen > 0 {
|
||||||
|
// Account for the additional NULL byte added by
|
||||||
|
// BytePtrFromString in kexecFileLoad. The kexec_file_load
|
||||||
|
// syscall expects a NULL-terminated string.
|
||||||
|
cmdlineLen++
|
||||||
|
}
|
||||||
|
return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)
|
||||||
|
}
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
package unix
|
package unix
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"runtime"
|
||||||
"syscall"
|
"syscall"
|
||||||
"unsafe"
|
"unsafe"
|
||||||
)
|
)
|
||||||
|
@ -93,6 +94,23 @@ func nametomib(name string) (mib []_C_int, err error) {
|
||||||
return mib, nil
|
return mib, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func SysctlClockinfo(name string) (*Clockinfo, error) {
|
||||||
|
mib, err := sysctlmib(name)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
n := uintptr(SizeofClockinfo)
|
||||||
|
var ci Clockinfo
|
||||||
|
if err := sysctl(mib, (*byte)(unsafe.Pointer(&ci)), &n, nil, 0); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if n != SizeofClockinfo {
|
||||||
|
return nil, EIO
|
||||||
|
}
|
||||||
|
return &ci, nil
|
||||||
|
}
|
||||||
|
|
||||||
//sysnb pipe() (fd1 int, fd2 int, err error)
|
//sysnb pipe() (fd1 int, fd2 int, err error)
|
||||||
func Pipe(p []int) (err error) {
|
func Pipe(p []int) (err error) {
|
||||||
if len(p) != 2 {
|
if len(p) != 2 {
|
||||||
|
@ -173,6 +191,13 @@ func IoctlGetTermios(fd int, req uint) (*Termios, error) {
|
||||||
return &value, err
|
return &value, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func IoctlGetPtmget(fd int, req uint) (*Ptmget, error) {
|
||||||
|
var value Ptmget
|
||||||
|
err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
|
||||||
|
runtime.KeepAlive(value)
|
||||||
|
return &value, err
|
||||||
|
}
|
||||||
|
|
||||||
func Uname(uname *Utsname) error {
|
func Uname(uname *Utsname) error {
|
||||||
mib := []_C_int{CTL_KERN, KERN_OSTYPE}
|
mib := []_C_int{CTL_KERN, KERN_OSTYPE}
|
||||||
n := unsafe.Sizeof(uname.Sysname)
|
n := unsafe.Sizeof(uname.Sysname)
|
||||||
|
@ -252,6 +277,7 @@ func Uname(uname *Utsname) error {
|
||||||
//sys Fchmod(fd int, mode uint32) (err error)
|
//sys Fchmod(fd int, mode uint32) (err error)
|
||||||
//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error)
|
//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error)
|
||||||
//sys Fchown(fd int, uid int, gid int) (err error)
|
//sys Fchown(fd int, uid int, gid int) (err error)
|
||||||
|
//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error)
|
||||||
//sys Flock(fd int, how int) (err error)
|
//sys Flock(fd int, how int) (err error)
|
||||||
//sys Fpathconf(fd int, name int) (val int, err error)
|
//sys Fpathconf(fd int, name int) (val int, err error)
|
||||||
//sys Fstat(fd int, stat *Stat_t) (err error)
|
//sys Fstat(fd int, stat *Stat_t) (err error)
|
||||||
|
@ -276,19 +302,26 @@ func Uname(uname *Utsname) error {
|
||||||
//sys Kqueue() (fd int, err error)
|
//sys Kqueue() (fd int, err error)
|
||||||
//sys Lchown(path string, uid int, gid int) (err error)
|
//sys Lchown(path string, uid int, gid int) (err error)
|
||||||
//sys Link(path string, link string) (err error)
|
//sys Link(path string, link string) (err error)
|
||||||
|
//sys Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error)
|
||||||
//sys Listen(s int, backlog int) (err error)
|
//sys Listen(s int, backlog int) (err error)
|
||||||
//sys Lstat(path string, stat *Stat_t) (err error)
|
//sys Lstat(path string, stat *Stat_t) (err error)
|
||||||
//sys Mkdir(path string, mode uint32) (err error)
|
//sys Mkdir(path string, mode uint32) (err error)
|
||||||
|
//sys Mkdirat(dirfd int, path string, mode uint32) (err error)
|
||||||
//sys Mkfifo(path string, mode uint32) (err error)
|
//sys Mkfifo(path string, mode uint32) (err error)
|
||||||
|
//sys Mkfifoat(dirfd int, path string, mode uint32) (err error)
|
||||||
//sys Mknod(path string, mode uint32, dev int) (err error)
|
//sys Mknod(path string, mode uint32, dev int) (err error)
|
||||||
|
//sys Mknodat(dirfd int, path string, mode uint32, dev int) (err error)
|
||||||
//sys Nanosleep(time *Timespec, leftover *Timespec) (err error)
|
//sys Nanosleep(time *Timespec, leftover *Timespec) (err error)
|
||||||
//sys Open(path string, mode int, perm uint32) (fd int, err error)
|
//sys Open(path string, mode int, perm uint32) (fd int, err error)
|
||||||
|
//sys Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error)
|
||||||
//sys Pathconf(path string, name int) (val int, err error)
|
//sys Pathconf(path string, name int) (val int, err error)
|
||||||
//sys Pread(fd int, p []byte, offset int64) (n int, err error)
|
//sys Pread(fd int, p []byte, offset int64) (n int, err error)
|
||||||
//sys Pwrite(fd int, p []byte, offset int64) (n int, err error)
|
//sys Pwrite(fd int, p []byte, offset int64) (n int, err error)
|
||||||
//sys read(fd int, p []byte) (n int, err error)
|
//sys read(fd int, p []byte) (n int, err error)
|
||||||
//sys Readlink(path string, buf []byte) (n int, err error)
|
//sys Readlink(path string, buf []byte) (n int, err error)
|
||||||
|
//sys Readlinkat(dirfd int, path string, buf []byte) (n int, err error)
|
||||||
//sys Rename(from string, to string) (err error)
|
//sys Rename(from string, to string) (err error)
|
||||||
|
//sys Renameat(fromfd int, from string, tofd int, to string) (err error)
|
||||||
//sys Revoke(path string) (err error)
|
//sys Revoke(path string) (err error)
|
||||||
//sys Rmdir(path string) (err error)
|
//sys Rmdir(path string) (err error)
|
||||||
//sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK
|
//sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK
|
||||||
|
@ -306,10 +339,12 @@ func Uname(uname *Utsname) error {
|
||||||
//sysnb Setuid(uid int) (err error)
|
//sysnb Setuid(uid int) (err error)
|
||||||
//sys Stat(path string, stat *Stat_t) (err error)
|
//sys Stat(path string, stat *Stat_t) (err error)
|
||||||
//sys Symlink(path string, link string) (err error)
|
//sys Symlink(path string, link string) (err error)
|
||||||
|
//sys Symlinkat(oldpath string, newdirfd int, newpath string) (err error)
|
||||||
//sys Sync() (err error)
|
//sys Sync() (err error)
|
||||||
//sys Truncate(path string, length int64) (err error)
|
//sys Truncate(path string, length int64) (err error)
|
||||||
//sys Umask(newmask int) (oldmask int)
|
//sys Umask(newmask int) (oldmask int)
|
||||||
//sys Unlink(path string) (err error)
|
//sys Unlink(path string) (err error)
|
||||||
|
//sys Unlinkat(dirfd int, path string, flags int) (err error)
|
||||||
//sys Unmount(path string, flags int) (err error)
|
//sys Unmount(path string, flags int) (err error)
|
||||||
//sys write(fd int, p []byte) (n int, err error)
|
//sys write(fd int, p []byte) (n int, err error)
|
||||||
//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)
|
//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)
|
||||||
|
|
|
@ -43,6 +43,23 @@ func nametomib(name string) (mib []_C_int, err error) {
|
||||||
return nil, EINVAL
|
return nil, EINVAL
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func SysctlUvmexp(name string) (*Uvmexp, error) {
|
||||||
|
mib, err := sysctlmib(name)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
n := uintptr(SizeofUvmexp)
|
||||||
|
var u Uvmexp
|
||||||
|
if err := sysctl(mib, (*byte)(unsafe.Pointer(&u)), &n, nil, 0); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if n != SizeofUvmexp {
|
||||||
|
return nil, EIO
|
||||||
|
}
|
||||||
|
return &u, nil
|
||||||
|
}
|
||||||
|
|
||||||
//sysnb pipe(p *[2]_C_int) (err error)
|
//sysnb pipe(p *[2]_C_int) (err error)
|
||||||
func Pipe(p []int) (err error) {
|
func Pipe(p []int) (err error) {
|
||||||
if len(p) != 2 {
|
if len(p) != 2 {
|
||||||
|
@ -141,6 +158,15 @@ func IoctlGetTermios(fd int, req uint) (*Termios, error) {
|
||||||
return &value, err
|
return &value, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//sys ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error)
|
||||||
|
|
||||||
|
func Ppoll(fds []PollFd, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
|
||||||
|
if len(fds) == 0 {
|
||||||
|
return ppoll(nil, 0, timeout, sigmask)
|
||||||
|
}
|
||||||
|
return ppoll(&fds[0], len(fds), timeout, sigmask)
|
||||||
|
}
|
||||||
|
|
||||||
func Uname(uname *Utsname) error {
|
func Uname(uname *Utsname) error {
|
||||||
mib := []_C_int{CTL_KERN, KERN_OSTYPE}
|
mib := []_C_int{CTL_KERN, KERN_OSTYPE}
|
||||||
n := unsafe.Sizeof(uname.Sysname)
|
n := unsafe.Sizeof(uname.Sysname)
|
||||||
|
@ -207,6 +233,7 @@ func Uname(uname *Utsname) error {
|
||||||
//sys Fchmod(fd int, mode uint32) (err error)
|
//sys Fchmod(fd int, mode uint32) (err error)
|
||||||
//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error)
|
//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error)
|
||||||
//sys Fchown(fd int, uid int, gid int) (err error)
|
//sys Fchown(fd int, uid int, gid int) (err error)
|
||||||
|
//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error)
|
||||||
//sys Flock(fd int, how int) (err error)
|
//sys Flock(fd int, how int) (err error)
|
||||||
//sys Fpathconf(fd int, name int) (val int, err error)
|
//sys Fpathconf(fd int, name int) (val int, err error)
|
||||||
//sys Fstat(fd int, stat *Stat_t) (err error)
|
//sys Fstat(fd int, stat *Stat_t) (err error)
|
||||||
|
@ -233,19 +260,26 @@ func Uname(uname *Utsname) error {
|
||||||
//sys Kqueue() (fd int, err error)
|
//sys Kqueue() (fd int, err error)
|
||||||
//sys Lchown(path string, uid int, gid int) (err error)
|
//sys Lchown(path string, uid int, gid int) (err error)
|
||||||
//sys Link(path string, link string) (err error)
|
//sys Link(path string, link string) (err error)
|
||||||
|
//sys Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error)
|
||||||
//sys Listen(s int, backlog int) (err error)
|
//sys Listen(s int, backlog int) (err error)
|
||||||
//sys Lstat(path string, stat *Stat_t) (err error)
|
//sys Lstat(path string, stat *Stat_t) (err error)
|
||||||
//sys Mkdir(path string, mode uint32) (err error)
|
//sys Mkdir(path string, mode uint32) (err error)
|
||||||
|
//sys Mkdirat(dirfd int, path string, mode uint32) (err error)
|
||||||
//sys Mkfifo(path string, mode uint32) (err error)
|
//sys Mkfifo(path string, mode uint32) (err error)
|
||||||
|
//sys Mkfifoat(dirfd int, path string, mode uint32) (err error)
|
||||||
//sys Mknod(path string, mode uint32, dev int) (err error)
|
//sys Mknod(path string, mode uint32, dev int) (err error)
|
||||||
|
//sys Mknodat(dirfd int, path string, mode uint32, dev int) (err error)
|
||||||
//sys Nanosleep(time *Timespec, leftover *Timespec) (err error)
|
//sys Nanosleep(time *Timespec, leftover *Timespec) (err error)
|
||||||
//sys Open(path string, mode int, perm uint32) (fd int, err error)
|
//sys Open(path string, mode int, perm uint32) (fd int, err error)
|
||||||
|
//sys Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error)
|
||||||
//sys Pathconf(path string, name int) (val int, err error)
|
//sys Pathconf(path string, name int) (val int, err error)
|
||||||
//sys Pread(fd int, p []byte, offset int64) (n int, err error)
|
//sys Pread(fd int, p []byte, offset int64) (n int, err error)
|
||||||
//sys Pwrite(fd int, p []byte, offset int64) (n int, err error)
|
//sys Pwrite(fd int, p []byte, offset int64) (n int, err error)
|
||||||
//sys read(fd int, p []byte) (n int, err error)
|
//sys read(fd int, p []byte) (n int, err error)
|
||||||
//sys Readlink(path string, buf []byte) (n int, err error)
|
//sys Readlink(path string, buf []byte) (n int, err error)
|
||||||
|
//sys Readlinkat(dirfd int, path string, buf []byte) (n int, err error)
|
||||||
//sys Rename(from string, to string) (err error)
|
//sys Rename(from string, to string) (err error)
|
||||||
|
//sys Renameat(fromfd int, from string, tofd int, to string) (err error)
|
||||||
//sys Revoke(path string) (err error)
|
//sys Revoke(path string) (err error)
|
||||||
//sys Rmdir(path string) (err error)
|
//sys Rmdir(path string) (err error)
|
||||||
//sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK
|
//sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK
|
||||||
|
@ -268,10 +302,12 @@ func Uname(uname *Utsname) error {
|
||||||
//sys Stat(path string, stat *Stat_t) (err error)
|
//sys Stat(path string, stat *Stat_t) (err error)
|
||||||
//sys Statfs(path string, stat *Statfs_t) (err error)
|
//sys Statfs(path string, stat *Statfs_t) (err error)
|
||||||
//sys Symlink(path string, link string) (err error)
|
//sys Symlink(path string, link string) (err error)
|
||||||
|
//sys Symlinkat(oldpath string, newdirfd int, newpath string) (err error)
|
||||||
//sys Sync() (err error)
|
//sys Sync() (err error)
|
||||||
//sys Truncate(path string, length int64) (err error)
|
//sys Truncate(path string, length int64) (err error)
|
||||||
//sys Umask(newmask int) (oldmask int)
|
//sys Umask(newmask int) (oldmask int)
|
||||||
//sys Unlink(path string) (err error)
|
//sys Unlink(path string) (err error)
|
||||||
|
//sys Unlinkat(dirfd int, path string, flags int) (err error)
|
||||||
//sys Unmount(path string, flags int) (err error)
|
//sys Unmount(path string, flags int) (err error)
|
||||||
//sys write(fd int, p []byte) (n int, err error)
|
//sys write(fd int, p []byte) (n int, err error)
|
||||||
//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)
|
//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)
|
||||||
|
@ -294,15 +330,11 @@ func Uname(uname *Utsname) error {
|
||||||
// clock_settime
|
// clock_settime
|
||||||
// closefrom
|
// closefrom
|
||||||
// execve
|
// execve
|
||||||
// faccessat
|
|
||||||
// fchmodat
|
|
||||||
// fchownat
|
|
||||||
// fcntl
|
// fcntl
|
||||||
// fhopen
|
// fhopen
|
||||||
// fhstat
|
// fhstat
|
||||||
// fhstatfs
|
// fhstatfs
|
||||||
// fork
|
// fork
|
||||||
// fstatat
|
|
||||||
// futimens
|
// futimens
|
||||||
// getfh
|
// getfh
|
||||||
// getgid
|
// getgid
|
||||||
|
@ -316,12 +348,8 @@ func Uname(uname *Utsname) error {
|
||||||
// lfs_markv
|
// lfs_markv
|
||||||
// lfs_segclean
|
// lfs_segclean
|
||||||
// lfs_segwait
|
// lfs_segwait
|
||||||
// linkat
|
|
||||||
// mincore
|
// mincore
|
||||||
// minherit
|
// minherit
|
||||||
// mkdirat
|
|
||||||
// mkfifoat
|
|
||||||
// mknodat
|
|
||||||
// mount
|
// mount
|
||||||
// mquery
|
// mquery
|
||||||
// msgctl
|
// msgctl
|
||||||
|
@ -330,12 +358,10 @@ func Uname(uname *Utsname) error {
|
||||||
// msgsnd
|
// msgsnd
|
||||||
// nfssvc
|
// nfssvc
|
||||||
// nnpfspioctl
|
// nnpfspioctl
|
||||||
// openat
|
|
||||||
// preadv
|
// preadv
|
||||||
// profil
|
// profil
|
||||||
// pwritev
|
// pwritev
|
||||||
// quotactl
|
// quotactl
|
||||||
// readlinkat
|
|
||||||
// readv
|
// readv
|
||||||
// reboot
|
// reboot
|
||||||
// renameat
|
// renameat
|
||||||
|
@ -356,13 +382,11 @@ func Uname(uname *Utsname) error {
|
||||||
// sigprocmask
|
// sigprocmask
|
||||||
// sigreturn
|
// sigreturn
|
||||||
// sigsuspend
|
// sigsuspend
|
||||||
// symlinkat
|
|
||||||
// sysarch
|
// sysarch
|
||||||
// syscall
|
// syscall
|
||||||
// threxit
|
// threxit
|
||||||
// thrsigdivert
|
// thrsigdivert
|
||||||
// thrsleep
|
// thrsleep
|
||||||
// thrwakeup
|
// thrwakeup
|
||||||
// unlinkat
|
|
||||||
// vfork
|
// vfork
|
||||||
// writev
|
// writev
|
||||||
|
|
|
@ -31,3 +31,7 @@ func (msghdr *Msghdr) SetControllen(length int) {
|
||||||
func (cmsg *Cmsghdr) SetLen(length int) {
|
func (cmsg *Cmsghdr) SetLen(length int) {
|
||||||
cmsg.Len = uint32(length)
|
cmsg.Len = uint32(length)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions
|
||||||
|
// of openbsd/386 the syscall is called sysctl instead of __sysctl.
|
||||||
|
const SYS___SYSCTL = SYS_SYSCTL
|
||||||
|
|
|
@ -31,3 +31,7 @@ func (msghdr *Msghdr) SetControllen(length int) {
|
||||||
func (cmsg *Cmsghdr) SetLen(length int) {
|
func (cmsg *Cmsghdr) SetLen(length int) {
|
||||||
cmsg.Len = uint32(length)
|
cmsg.Len = uint32(length)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions
|
||||||
|
// of openbsd/arm the syscall is called sysctl instead of __sysctl.
|
||||||
|
const SYS___SYSCTL = SYS_SYSCTL
|
||||||
|
|
|
@ -22,10 +22,10 @@ var (
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
darwin64Bit = runtime.GOOS == "darwin" && sizeofPtr == 8
|
darwin64Bit = runtime.GOOS == "darwin" && SizeofPtr == 8
|
||||||
dragonfly64Bit = runtime.GOOS == "dragonfly" && sizeofPtr == 8
|
dragonfly64Bit = runtime.GOOS == "dragonfly" && SizeofPtr == 8
|
||||||
netbsd32Bit = runtime.GOOS == "netbsd" && sizeofPtr == 4
|
netbsd32Bit = runtime.GOOS == "netbsd" && SizeofPtr == 4
|
||||||
solaris64Bit = runtime.GOOS == "solaris" && sizeofPtr == 8
|
solaris64Bit = runtime.GOOS == "solaris" && SizeofPtr == 8
|
||||||
)
|
)
|
||||||
|
|
||||||
// Do the interface allocations only once for common
|
// Do the interface allocations only once for common
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build darwin dragonfly freebsd linux netbsd openbsd solaris
|
// +build darwin dragonfly freebsd linux netbsd openbsd solaris
|
||||||
// +build !gccgo
|
// +build !gccgo,!ppc64le,!ppc64
|
||||||
|
|
||||||
package unix
|
package unix
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
// 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 linux
|
||||||
|
// +build ppc64le ppc64
|
||||||
|
// +build !gccgo
|
||||||
|
|
||||||
|
package unix
|
||||||
|
|
||||||
|
import "syscall"
|
||||||
|
|
||||||
|
func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {
|
||||||
|
return syscall.Syscall(trap, a1, a2, a3)
|
||||||
|
}
|
||||||
|
func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) {
|
||||||
|
return syscall.Syscall6(trap, a1, a2, a3, a4, a5, a6)
|
||||||
|
}
|
||||||
|
func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {
|
||||||
|
return syscall.RawSyscall(trap, a1, a2, a3)
|
||||||
|
}
|
||||||
|
func RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) {
|
||||||
|
return syscall.RawSyscall6(trap, a1, a2, a3, a4, a5, a6)
|
||||||
|
}
|
|
@ -59,14 +59,14 @@ struct sockaddr_any {
|
||||||
*/
|
*/
|
||||||
import "C"
|
import "C"
|
||||||
|
|
||||||
// Machine characteristics; for internal use.
|
// Machine characteristics
|
||||||
|
|
||||||
const (
|
const (
|
||||||
sizeofPtr = C.sizeofPtr
|
SizeofPtr = C.sizeofPtr
|
||||||
sizeofShort = C.sizeof_short
|
SizeofShort = C.sizeof_short
|
||||||
sizeofInt = C.sizeof_int
|
SizeofInt = C.sizeof_int
|
||||||
sizeofLong = C.sizeof_long
|
SizeofLong = C.sizeof_long
|
||||||
sizeofLongLong = C.sizeof_longlong
|
SizeofLongLong = C.sizeof_longlong
|
||||||
PathMax = C.PATH_MAX
|
PathMax = C.PATH_MAX
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -70,14 +70,14 @@ struct sockaddr_any {
|
||||||
*/
|
*/
|
||||||
import "C"
|
import "C"
|
||||||
|
|
||||||
// Machine characteristics; for internal use.
|
// Machine characteristics
|
||||||
|
|
||||||
const (
|
const (
|
||||||
sizeofPtr = C.sizeofPtr
|
SizeofPtr = C.sizeofPtr
|
||||||
sizeofShort = C.sizeof_short
|
SizeofShort = C.sizeof_short
|
||||||
sizeofInt = C.sizeof_int
|
SizeofInt = C.sizeof_int
|
||||||
sizeofLong = C.sizeof_long
|
SizeofLong = C.sizeof_long
|
||||||
sizeofLongLong = C.sizeof_longlong
|
SizeofLongLong = C.sizeof_longlong
|
||||||
)
|
)
|
||||||
|
|
||||||
// Basic types
|
// Basic types
|
||||||
|
|
|
@ -65,14 +65,14 @@ struct sockaddr_any {
|
||||||
*/
|
*/
|
||||||
import "C"
|
import "C"
|
||||||
|
|
||||||
// Machine characteristics; for internal use.
|
// Machine characteristics
|
||||||
|
|
||||||
const (
|
const (
|
||||||
sizeofPtr = C.sizeofPtr
|
SizeofPtr = C.sizeofPtr
|
||||||
sizeofShort = C.sizeof_short
|
SizeofShort = C.sizeof_short
|
||||||
sizeofInt = C.sizeof_int
|
SizeofInt = C.sizeof_int
|
||||||
sizeofLong = C.sizeof_long
|
SizeofLong = C.sizeof_long
|
||||||
sizeofLongLong = C.sizeof_longlong
|
SizeofLongLong = C.sizeof_longlong
|
||||||
)
|
)
|
||||||
|
|
||||||
// Basic types
|
// Basic types
|
||||||
|
|
|
@ -14,7 +14,11 @@ Input to cgo -godefs. See README.md
|
||||||
package unix
|
package unix
|
||||||
|
|
||||||
/*
|
/*
|
||||||
#define KERNEL
|
#define _WANT_FREEBSD11_STAT 1
|
||||||
|
#define _WANT_FREEBSD11_STATFS 1
|
||||||
|
#define _WANT_FREEBSD11_DIRENT 1
|
||||||
|
#define _WANT_FREEBSD11_KEVENT 1
|
||||||
|
|
||||||
#include <dirent.h>
|
#include <dirent.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <poll.h>
|
#include <poll.h>
|
||||||
|
@ -22,7 +26,7 @@ package unix
|
||||||
#include <termios.h>
|
#include <termios.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <sys/capability.h>
|
#include <sys/capsicum.h>
|
||||||
#include <sys/event.h>
|
#include <sys/event.h>
|
||||||
#include <sys/mman.h>
|
#include <sys/mman.h>
|
||||||
#include <sys/mount.h>
|
#include <sys/mount.h>
|
||||||
|
@ -63,50 +67,6 @@ struct sockaddr_any {
|
||||||
char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)];
|
char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)];
|
||||||
};
|
};
|
||||||
|
|
||||||
// This structure is a duplicate of stat on FreeBSD 8-STABLE.
|
|
||||||
// See /usr/include/sys/stat.h.
|
|
||||||
struct stat8 {
|
|
||||||
#undef st_atimespec st_atim
|
|
||||||
#undef st_mtimespec st_mtim
|
|
||||||
#undef st_ctimespec st_ctim
|
|
||||||
#undef st_birthtimespec st_birthtim
|
|
||||||
__dev_t st_dev;
|
|
||||||
ino_t st_ino;
|
|
||||||
mode_t st_mode;
|
|
||||||
nlink_t st_nlink;
|
|
||||||
uid_t st_uid;
|
|
||||||
gid_t st_gid;
|
|
||||||
__dev_t st_rdev;
|
|
||||||
#if __BSD_VISIBLE
|
|
||||||
struct timespec st_atimespec;
|
|
||||||
struct timespec st_mtimespec;
|
|
||||||
struct timespec st_ctimespec;
|
|
||||||
#else
|
|
||||||
time_t st_atime;
|
|
||||||
long __st_atimensec;
|
|
||||||
time_t st_mtime;
|
|
||||||
long __st_mtimensec;
|
|
||||||
time_t st_ctime;
|
|
||||||
long __st_ctimensec;
|
|
||||||
#endif
|
|
||||||
off_t st_size;
|
|
||||||
blkcnt_t st_blocks;
|
|
||||||
blksize_t st_blksize;
|
|
||||||
fflags_t st_flags;
|
|
||||||
__uint32_t st_gen;
|
|
||||||
__int32_t st_lspare;
|
|
||||||
#if __BSD_VISIBLE
|
|
||||||
struct timespec st_birthtimespec;
|
|
||||||
unsigned int :(8 / 2) * (16 - (int)sizeof(struct timespec));
|
|
||||||
unsigned int :(8 / 2) * (16 - (int)sizeof(struct timespec));
|
|
||||||
#else
|
|
||||||
time_t st_birthtime;
|
|
||||||
long st_birthtimensec;
|
|
||||||
unsigned int :(8 / 2) * (16 - (int)sizeof(struct __timespec));
|
|
||||||
unsigned int :(8 / 2) * (16 - (int)sizeof(struct __timespec));
|
|
||||||
#endif
|
|
||||||
};
|
|
||||||
|
|
||||||
// This structure is a duplicate of if_data on FreeBSD 8-STABLE.
|
// This structure is a duplicate of if_data on FreeBSD 8-STABLE.
|
||||||
// See /usr/include/net/if.h.
|
// See /usr/include/net/if.h.
|
||||||
struct if_data8 {
|
struct if_data8 {
|
||||||
|
@ -154,14 +114,14 @@ struct if_msghdr8 {
|
||||||
*/
|
*/
|
||||||
import "C"
|
import "C"
|
||||||
|
|
||||||
// Machine characteristics; for internal use.
|
// Machine characteristics
|
||||||
|
|
||||||
const (
|
const (
|
||||||
sizeofPtr = C.sizeofPtr
|
SizeofPtr = C.sizeofPtr
|
||||||
sizeofShort = C.sizeof_short
|
SizeofShort = C.sizeof_short
|
||||||
sizeofInt = C.sizeof_int
|
SizeofInt = C.sizeof_int
|
||||||
sizeofLong = C.sizeof_long
|
SizeofLong = C.sizeof_long
|
||||||
sizeofLongLong = C.sizeof_longlong
|
SizeofLongLong = C.sizeof_longlong
|
||||||
)
|
)
|
||||||
|
|
||||||
// Basic types
|
// Basic types
|
||||||
|
@ -189,14 +149,25 @@ type _Gid_t C.gid_t
|
||||||
|
|
||||||
// Files
|
// Files
|
||||||
|
|
||||||
type Stat_t C.struct_stat8
|
const (
|
||||||
|
_statfsVersion = C.STATFS_VERSION
|
||||||
|
_dirblksiz = C.DIRBLKSIZ
|
||||||
|
)
|
||||||
|
|
||||||
|
type Stat_t C.struct_stat
|
||||||
|
|
||||||
|
type stat_freebsd11_t C.struct_freebsd11_stat
|
||||||
|
|
||||||
type Statfs_t C.struct_statfs
|
type Statfs_t C.struct_statfs
|
||||||
|
|
||||||
|
type statfs_freebsd11_t C.struct_freebsd11_statfs
|
||||||
|
|
||||||
type Flock_t C.struct_flock
|
type Flock_t C.struct_flock
|
||||||
|
|
||||||
type Dirent C.struct_dirent
|
type Dirent C.struct_dirent
|
||||||
|
|
||||||
|
type dirent_freebsd11 C.struct_freebsd11_dirent
|
||||||
|
|
||||||
type Fsid C.struct_fsid
|
type Fsid C.struct_fsid
|
||||||
|
|
||||||
// File system limits
|
// File system limits
|
||||||
|
@ -279,7 +250,7 @@ const (
|
||||||
|
|
||||||
// Events (kqueue, kevent)
|
// Events (kqueue, kevent)
|
||||||
|
|
||||||
type Kevent_t C.struct_kevent
|
type Kevent_t C.struct_kevent_freebsd11
|
||||||
|
|
||||||
// Select
|
// Select
|
||||||
|
|
||||||
|
|
|
@ -67,14 +67,14 @@ struct sockaddr_any {
|
||||||
*/
|
*/
|
||||||
import "C"
|
import "C"
|
||||||
|
|
||||||
// Machine characteristics; for internal use.
|
// Machine characteristics
|
||||||
|
|
||||||
const (
|
const (
|
||||||
sizeofPtr = C.sizeofPtr
|
SizeofPtr = C.sizeofPtr
|
||||||
sizeofShort = C.sizeof_short
|
SizeofShort = C.sizeof_short
|
||||||
sizeofInt = C.sizeof_int
|
SizeofInt = C.sizeof_int
|
||||||
sizeofLong = C.sizeof_long
|
SizeofLong = C.sizeof_long
|
||||||
sizeofLongLong = C.sizeof_longlong
|
SizeofLongLong = C.sizeof_longlong
|
||||||
)
|
)
|
||||||
|
|
||||||
// Basic types
|
// Basic types
|
||||||
|
@ -248,6 +248,8 @@ type Termios C.struct_termios
|
||||||
|
|
||||||
type Winsize C.struct_winsize
|
type Winsize C.struct_winsize
|
||||||
|
|
||||||
|
type Ptmget C.struct_ptmget
|
||||||
|
|
||||||
// fchmodat-like syscalls.
|
// fchmodat-like syscalls.
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -279,3 +281,9 @@ type Sysctlnode C.struct_sysctlnode
|
||||||
// Uname
|
// Uname
|
||||||
|
|
||||||
type Utsname C.struct_utsname
|
type Utsname C.struct_utsname
|
||||||
|
|
||||||
|
// Clockinfo
|
||||||
|
|
||||||
|
const SizeofClockinfo = C.sizeof_struct_clockinfo
|
||||||
|
|
||||||
|
type Clockinfo C.struct_clockinfo
|
||||||
|
|
|
@ -38,6 +38,7 @@ package unix
|
||||||
#include <sys/un.h>
|
#include <sys/un.h>
|
||||||
#include <sys/utsname.h>
|
#include <sys/utsname.h>
|
||||||
#include <sys/wait.h>
|
#include <sys/wait.h>
|
||||||
|
#include <uvm/uvmexp.h>
|
||||||
#include <net/bpf.h>
|
#include <net/bpf.h>
|
||||||
#include <net/if.h>
|
#include <net/if.h>
|
||||||
#include <net/if_dl.h>
|
#include <net/if_dl.h>
|
||||||
|
@ -66,14 +67,14 @@ struct sockaddr_any {
|
||||||
*/
|
*/
|
||||||
import "C"
|
import "C"
|
||||||
|
|
||||||
// Machine characteristics; for internal use.
|
// Machine characteristics
|
||||||
|
|
||||||
const (
|
const (
|
||||||
sizeofPtr = C.sizeofPtr
|
SizeofPtr = C.sizeofPtr
|
||||||
sizeofShort = C.sizeof_short
|
SizeofShort = C.sizeof_short
|
||||||
sizeofInt = C.sizeof_int
|
SizeofInt = C.sizeof_int
|
||||||
sizeofLong = C.sizeof_long
|
SizeofLong = C.sizeof_long
|
||||||
sizeofLongLong = C.sizeof_longlong
|
SizeofLongLong = C.sizeof_longlong
|
||||||
)
|
)
|
||||||
|
|
||||||
// Basic types
|
// Basic types
|
||||||
|
@ -260,6 +261,16 @@ const (
|
||||||
POLLWRNORM = C.POLLWRNORM
|
POLLWRNORM = C.POLLWRNORM
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Signal Sets
|
||||||
|
|
||||||
|
type Sigset_t C.sigset_t
|
||||||
|
|
||||||
// Uname
|
// Uname
|
||||||
|
|
||||||
type Utsname C.struct_utsname
|
type Utsname C.struct_utsname
|
||||||
|
|
||||||
|
// Uvmexp
|
||||||
|
|
||||||
|
const SizeofUvmexp = C.sizeof_struct_uvmexp
|
||||||
|
|
||||||
|
type Uvmexp C.struct_uvmexp
|
||||||
|
|
|
@ -75,14 +75,14 @@ struct sockaddr_any {
|
||||||
*/
|
*/
|
||||||
import "C"
|
import "C"
|
||||||
|
|
||||||
// Machine characteristics; for internal use.
|
// Machine characteristics
|
||||||
|
|
||||||
const (
|
const (
|
||||||
sizeofPtr = C.sizeofPtr
|
SizeofPtr = C.sizeofPtr
|
||||||
sizeofShort = C.sizeof_short
|
SizeofShort = C.sizeof_short
|
||||||
sizeofInt = C.sizeof_int
|
SizeofInt = C.sizeof_int
|
||||||
sizeofLong = C.sizeof_long
|
SizeofLong = C.sizeof_long
|
||||||
sizeofLongLong = C.sizeof_longlong
|
SizeofLongLong = C.sizeof_longlong
|
||||||
PathMax = C.PATH_MAX
|
PathMax = C.PATH_MAX
|
||||||
MaxHostNameLen = C.MAXHOSTNAMELEN
|
MaxHostNameLen = C.MAXHOSTNAMELEN
|
||||||
)
|
)
|
||||||
|
|
|
@ -81,7 +81,10 @@ func Lgetxattr(link string, attr string, dest []byte) (sz int, err error) {
|
||||||
// flags are unused on FreeBSD
|
// flags are unused on FreeBSD
|
||||||
|
|
||||||
func Fsetxattr(fd int, attr string, data []byte, flags int) (err error) {
|
func Fsetxattr(fd int, attr string, data []byte, flags int) (err error) {
|
||||||
d := unsafe.Pointer(&data[0])
|
var d unsafe.Pointer
|
||||||
|
if len(data) > 0 {
|
||||||
|
d = unsafe.Pointer(&data[0])
|
||||||
|
}
|
||||||
datasiz := len(data)
|
datasiz := len(data)
|
||||||
|
|
||||||
nsid, a, err := xattrnamespace(attr)
|
nsid, a, err := xattrnamespace(attr)
|
||||||
|
@ -94,7 +97,10 @@ func Fsetxattr(fd int, attr string, data []byte, flags int) (err error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func Setxattr(file string, attr string, data []byte, flags int) (err error) {
|
func Setxattr(file string, attr string, data []byte, flags int) (err error) {
|
||||||
d := unsafe.Pointer(&data[0])
|
var d unsafe.Pointer
|
||||||
|
if len(data) > 0 {
|
||||||
|
d = unsafe.Pointer(&data[0])
|
||||||
|
}
|
||||||
datasiz := len(data)
|
datasiz := len(data)
|
||||||
|
|
||||||
nsid, a, err := xattrnamespace(attr)
|
nsid, a, err := xattrnamespace(attr)
|
||||||
|
@ -107,7 +113,10 @@ func Setxattr(file string, attr string, data []byte, flags int) (err error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func Lsetxattr(link string, attr string, data []byte, flags int) (err error) {
|
func Lsetxattr(link string, attr string, data []byte, flags int) (err error) {
|
||||||
d := unsafe.Pointer(&data[0])
|
var d unsafe.Pointer
|
||||||
|
if len(data) > 0 {
|
||||||
|
d = unsafe.Pointer(&data[0])
|
||||||
|
}
|
||||||
datasiz := len(data)
|
datasiz := len(data)
|
||||||
|
|
||||||
nsid, a, err := xattrnamespace(attr)
|
nsid, a, err := xattrnamespace(attr)
|
||||||
|
|
|
@ -879,6 +879,26 @@ const (
|
||||||
IXOFF = 0x1000
|
IXOFF = 0x1000
|
||||||
IXON = 0x400
|
IXON = 0x400
|
||||||
JFFS2_SUPER_MAGIC = 0x72b6
|
JFFS2_SUPER_MAGIC = 0x72b6
|
||||||
|
KEXEC_ARCH_386 = 0x30000
|
||||||
|
KEXEC_ARCH_68K = 0x40000
|
||||||
|
KEXEC_ARCH_AARCH64 = 0xb70000
|
||||||
|
KEXEC_ARCH_ARM = 0x280000
|
||||||
|
KEXEC_ARCH_DEFAULT = 0x0
|
||||||
|
KEXEC_ARCH_IA_64 = 0x320000
|
||||||
|
KEXEC_ARCH_MASK = 0xffff0000
|
||||||
|
KEXEC_ARCH_MIPS = 0x80000
|
||||||
|
KEXEC_ARCH_MIPS_LE = 0xa0000
|
||||||
|
KEXEC_ARCH_PPC = 0x140000
|
||||||
|
KEXEC_ARCH_PPC64 = 0x150000
|
||||||
|
KEXEC_ARCH_S390 = 0x160000
|
||||||
|
KEXEC_ARCH_SH = 0x2a0000
|
||||||
|
KEXEC_ARCH_X86_64 = 0x3e0000
|
||||||
|
KEXEC_FILE_NO_INITRAMFS = 0x4
|
||||||
|
KEXEC_FILE_ON_CRASH = 0x2
|
||||||
|
KEXEC_FILE_UNLOAD = 0x1
|
||||||
|
KEXEC_ON_CRASH = 0x1
|
||||||
|
KEXEC_PRESERVE_CONTEXT = 0x2
|
||||||
|
KEXEC_SEGMENT_MAX = 0x10
|
||||||
KEYCTL_ASSUME_AUTHORITY = 0x10
|
KEYCTL_ASSUME_AUTHORITY = 0x10
|
||||||
KEYCTL_CHOWN = 0x4
|
KEYCTL_CHOWN = 0x4
|
||||||
KEYCTL_CLEAR = 0x7
|
KEYCTL_CLEAR = 0x7
|
||||||
|
@ -988,7 +1008,9 @@ const (
|
||||||
MFD_HUGE_256MB = 0x70000000
|
MFD_HUGE_256MB = 0x70000000
|
||||||
MFD_HUGE_2GB = 0x7c000000
|
MFD_HUGE_2GB = 0x7c000000
|
||||||
MFD_HUGE_2MB = 0x54000000
|
MFD_HUGE_2MB = 0x54000000
|
||||||
|
MFD_HUGE_32MB = 0x64000000
|
||||||
MFD_HUGE_512KB = 0x4c000000
|
MFD_HUGE_512KB = 0x4c000000
|
||||||
|
MFD_HUGE_512MB = 0x74000000
|
||||||
MFD_HUGE_64KB = 0x40000000
|
MFD_HUGE_64KB = 0x40000000
|
||||||
MFD_HUGE_8MB = 0x5c000000
|
MFD_HUGE_8MB = 0x5c000000
|
||||||
MFD_HUGE_MASK = 0x3f
|
MFD_HUGE_MASK = 0x3f
|
||||||
|
@ -1001,6 +1023,8 @@ const (
|
||||||
MNT_DETACH = 0x2
|
MNT_DETACH = 0x2
|
||||||
MNT_EXPIRE = 0x4
|
MNT_EXPIRE = 0x4
|
||||||
MNT_FORCE = 0x1
|
MNT_FORCE = 0x1
|
||||||
|
MODULE_INIT_IGNORE_MODVERSIONS = 0x1
|
||||||
|
MODULE_INIT_IGNORE_VERMAGIC = 0x2
|
||||||
MSDOS_SUPER_MAGIC = 0x4d44
|
MSDOS_SUPER_MAGIC = 0x4d44
|
||||||
MSG_BATCH = 0x40000
|
MSG_BATCH = 0x40000
|
||||||
MSG_CMSG_CLOEXEC = 0x40000000
|
MSG_CMSG_CLOEXEC = 0x40000000
|
||||||
|
@ -1269,6 +1293,36 @@ const (
|
||||||
PERF_EVENT_IOC_SET_FILTER = 0x40042406
|
PERF_EVENT_IOC_SET_FILTER = 0x40042406
|
||||||
PERF_EVENT_IOC_SET_OUTPUT = 0x2405
|
PERF_EVENT_IOC_SET_OUTPUT = 0x2405
|
||||||
PIPEFS_MAGIC = 0x50495045
|
PIPEFS_MAGIC = 0x50495045
|
||||||
|
PPPIOCATTACH = 0x4004743d
|
||||||
|
PPPIOCATTCHAN = 0x40047438
|
||||||
|
PPPIOCCONNECT = 0x4004743a
|
||||||
|
PPPIOCDETACH = 0x4004743c
|
||||||
|
PPPIOCDISCONN = 0x7439
|
||||||
|
PPPIOCGASYNCMAP = 0x80047458
|
||||||
|
PPPIOCGCHAN = 0x80047437
|
||||||
|
PPPIOCGDEBUG = 0x80047441
|
||||||
|
PPPIOCGFLAGS = 0x8004745a
|
||||||
|
PPPIOCGIDLE = 0x8008743f
|
||||||
|
PPPIOCGL2TPSTATS = 0x80487436
|
||||||
|
PPPIOCGMRU = 0x80047453
|
||||||
|
PPPIOCGNPMODE = 0xc008744c
|
||||||
|
PPPIOCGRASYNCMAP = 0x80047455
|
||||||
|
PPPIOCGUNIT = 0x80047456
|
||||||
|
PPPIOCGXASYNCMAP = 0x80207450
|
||||||
|
PPPIOCNEWUNIT = 0xc004743e
|
||||||
|
PPPIOCSACTIVE = 0x40087446
|
||||||
|
PPPIOCSASYNCMAP = 0x40047457
|
||||||
|
PPPIOCSCOMPRESS = 0x400c744d
|
||||||
|
PPPIOCSDEBUG = 0x40047440
|
||||||
|
PPPIOCSFLAGS = 0x40047459
|
||||||
|
PPPIOCSMAXCID = 0x40047451
|
||||||
|
PPPIOCSMRRU = 0x4004743b
|
||||||
|
PPPIOCSMRU = 0x40047452
|
||||||
|
PPPIOCSNPMODE = 0x4008744b
|
||||||
|
PPPIOCSPASS = 0x40087447
|
||||||
|
PPPIOCSRASYNCMAP = 0x40047454
|
||||||
|
PPPIOCSXASYNCMAP = 0x4020744f
|
||||||
|
PPPIOCXFERUNIT = 0x744e
|
||||||
PRIO_PGRP = 0x1
|
PRIO_PGRP = 0x1
|
||||||
PRIO_PROCESS = 0x0
|
PRIO_PROCESS = 0x0
|
||||||
PRIO_USER = 0x2
|
PRIO_USER = 0x2
|
||||||
|
@ -1564,6 +1618,7 @@ const (
|
||||||
RTM_DELACTION = 0x31
|
RTM_DELACTION = 0x31
|
||||||
RTM_DELADDR = 0x15
|
RTM_DELADDR = 0x15
|
||||||
RTM_DELADDRLABEL = 0x49
|
RTM_DELADDRLABEL = 0x49
|
||||||
|
RTM_DELCHAIN = 0x65
|
||||||
RTM_DELLINK = 0x11
|
RTM_DELLINK = 0x11
|
||||||
RTM_DELMDB = 0x55
|
RTM_DELMDB = 0x55
|
||||||
RTM_DELNEIGH = 0x1d
|
RTM_DELNEIGH = 0x1d
|
||||||
|
@ -1584,6 +1639,7 @@ const (
|
||||||
RTM_GETADDR = 0x16
|
RTM_GETADDR = 0x16
|
||||||
RTM_GETADDRLABEL = 0x4a
|
RTM_GETADDRLABEL = 0x4a
|
||||||
RTM_GETANYCAST = 0x3e
|
RTM_GETANYCAST = 0x3e
|
||||||
|
RTM_GETCHAIN = 0x66
|
||||||
RTM_GETDCB = 0x4e
|
RTM_GETDCB = 0x4e
|
||||||
RTM_GETLINK = 0x12
|
RTM_GETLINK = 0x12
|
||||||
RTM_GETMDB = 0x56
|
RTM_GETMDB = 0x56
|
||||||
|
@ -1598,11 +1654,12 @@ const (
|
||||||
RTM_GETSTATS = 0x5e
|
RTM_GETSTATS = 0x5e
|
||||||
RTM_GETTCLASS = 0x2a
|
RTM_GETTCLASS = 0x2a
|
||||||
RTM_GETTFILTER = 0x2e
|
RTM_GETTFILTER = 0x2e
|
||||||
RTM_MAX = 0x63
|
RTM_MAX = 0x67
|
||||||
RTM_NEWACTION = 0x30
|
RTM_NEWACTION = 0x30
|
||||||
RTM_NEWADDR = 0x14
|
RTM_NEWADDR = 0x14
|
||||||
RTM_NEWADDRLABEL = 0x48
|
RTM_NEWADDRLABEL = 0x48
|
||||||
RTM_NEWCACHEREPORT = 0x60
|
RTM_NEWCACHEREPORT = 0x60
|
||||||
|
RTM_NEWCHAIN = 0x64
|
||||||
RTM_NEWLINK = 0x10
|
RTM_NEWLINK = 0x10
|
||||||
RTM_NEWMDB = 0x54
|
RTM_NEWMDB = 0x54
|
||||||
RTM_NEWNDUSEROPT = 0x44
|
RTM_NEWNDUSEROPT = 0x44
|
||||||
|
@ -1617,8 +1674,8 @@ const (
|
||||||
RTM_NEWSTATS = 0x5c
|
RTM_NEWSTATS = 0x5c
|
||||||
RTM_NEWTCLASS = 0x28
|
RTM_NEWTCLASS = 0x28
|
||||||
RTM_NEWTFILTER = 0x2c
|
RTM_NEWTFILTER = 0x2c
|
||||||
RTM_NR_FAMILIES = 0x15
|
RTM_NR_FAMILIES = 0x16
|
||||||
RTM_NR_MSGTYPES = 0x54
|
RTM_NR_MSGTYPES = 0x58
|
||||||
RTM_SETDCB = 0x4f
|
RTM_SETDCB = 0x4f
|
||||||
RTM_SETLINK = 0x13
|
RTM_SETLINK = 0x13
|
||||||
RTM_SETNEIGHTBL = 0x43
|
RTM_SETNEIGHTBL = 0x43
|
||||||
|
@ -1667,7 +1724,9 @@ const (
|
||||||
SCM_TIMESTAMPING_OPT_STATS = 0x36
|
SCM_TIMESTAMPING_OPT_STATS = 0x36
|
||||||
SCM_TIMESTAMPING_PKTINFO = 0x3a
|
SCM_TIMESTAMPING_PKTINFO = 0x3a
|
||||||
SCM_TIMESTAMPNS = 0x23
|
SCM_TIMESTAMPNS = 0x23
|
||||||
|
SCM_TXTIME = 0x3d
|
||||||
SCM_WIFI_STATUS = 0x29
|
SCM_WIFI_STATUS = 0x29
|
||||||
|
SC_LOG_FLUSH = 0x100000
|
||||||
SECCOMP_MODE_DISABLED = 0x0
|
SECCOMP_MODE_DISABLED = 0x0
|
||||||
SECCOMP_MODE_FILTER = 0x2
|
SECCOMP_MODE_FILTER = 0x2
|
||||||
SECCOMP_MODE_STRICT = 0x1
|
SECCOMP_MODE_STRICT = 0x1
|
||||||
|
@ -1723,6 +1782,9 @@ const (
|
||||||
SIOCGMIIPHY = 0x8947
|
SIOCGMIIPHY = 0x8947
|
||||||
SIOCGMIIREG = 0x8948
|
SIOCGMIIREG = 0x8948
|
||||||
SIOCGPGRP = 0x8904
|
SIOCGPGRP = 0x8904
|
||||||
|
SIOCGPPPCSTATS = 0x89f2
|
||||||
|
SIOCGPPPSTATS = 0x89f0
|
||||||
|
SIOCGPPPVER = 0x89f1
|
||||||
SIOCGRARP = 0x8961
|
SIOCGRARP = 0x8961
|
||||||
SIOCGSKNS = 0x894c
|
SIOCGSKNS = 0x894c
|
||||||
SIOCGSTAMP = 0x8906
|
SIOCGSTAMP = 0x8906
|
||||||
|
@ -1871,6 +1933,7 @@ const (
|
||||||
SO_TIMESTAMP = 0x1d
|
SO_TIMESTAMP = 0x1d
|
||||||
SO_TIMESTAMPING = 0x25
|
SO_TIMESTAMPING = 0x25
|
||||||
SO_TIMESTAMPNS = 0x23
|
SO_TIMESTAMPNS = 0x23
|
||||||
|
SO_TXTIME = 0x3d
|
||||||
SO_TYPE = 0x3
|
SO_TYPE = 0x3
|
||||||
SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2
|
SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2
|
||||||
SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1
|
SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1
|
||||||
|
|
|
@ -879,6 +879,26 @@ const (
|
||||||
IXOFF = 0x1000
|
IXOFF = 0x1000
|
||||||
IXON = 0x400
|
IXON = 0x400
|
||||||
JFFS2_SUPER_MAGIC = 0x72b6
|
JFFS2_SUPER_MAGIC = 0x72b6
|
||||||
|
KEXEC_ARCH_386 = 0x30000
|
||||||
|
KEXEC_ARCH_68K = 0x40000
|
||||||
|
KEXEC_ARCH_AARCH64 = 0xb70000
|
||||||
|
KEXEC_ARCH_ARM = 0x280000
|
||||||
|
KEXEC_ARCH_DEFAULT = 0x0
|
||||||
|
KEXEC_ARCH_IA_64 = 0x320000
|
||||||
|
KEXEC_ARCH_MASK = 0xffff0000
|
||||||
|
KEXEC_ARCH_MIPS = 0x80000
|
||||||
|
KEXEC_ARCH_MIPS_LE = 0xa0000
|
||||||
|
KEXEC_ARCH_PPC = 0x140000
|
||||||
|
KEXEC_ARCH_PPC64 = 0x150000
|
||||||
|
KEXEC_ARCH_S390 = 0x160000
|
||||||
|
KEXEC_ARCH_SH = 0x2a0000
|
||||||
|
KEXEC_ARCH_X86_64 = 0x3e0000
|
||||||
|
KEXEC_FILE_NO_INITRAMFS = 0x4
|
||||||
|
KEXEC_FILE_ON_CRASH = 0x2
|
||||||
|
KEXEC_FILE_UNLOAD = 0x1
|
||||||
|
KEXEC_ON_CRASH = 0x1
|
||||||
|
KEXEC_PRESERVE_CONTEXT = 0x2
|
||||||
|
KEXEC_SEGMENT_MAX = 0x10
|
||||||
KEYCTL_ASSUME_AUTHORITY = 0x10
|
KEYCTL_ASSUME_AUTHORITY = 0x10
|
||||||
KEYCTL_CHOWN = 0x4
|
KEYCTL_CHOWN = 0x4
|
||||||
KEYCTL_CLEAR = 0x7
|
KEYCTL_CLEAR = 0x7
|
||||||
|
@ -988,7 +1008,9 @@ const (
|
||||||
MFD_HUGE_256MB = 0x70000000
|
MFD_HUGE_256MB = 0x70000000
|
||||||
MFD_HUGE_2GB = 0x7c000000
|
MFD_HUGE_2GB = 0x7c000000
|
||||||
MFD_HUGE_2MB = 0x54000000
|
MFD_HUGE_2MB = 0x54000000
|
||||||
|
MFD_HUGE_32MB = 0x64000000
|
||||||
MFD_HUGE_512KB = 0x4c000000
|
MFD_HUGE_512KB = 0x4c000000
|
||||||
|
MFD_HUGE_512MB = 0x74000000
|
||||||
MFD_HUGE_64KB = 0x40000000
|
MFD_HUGE_64KB = 0x40000000
|
||||||
MFD_HUGE_8MB = 0x5c000000
|
MFD_HUGE_8MB = 0x5c000000
|
||||||
MFD_HUGE_MASK = 0x3f
|
MFD_HUGE_MASK = 0x3f
|
||||||
|
@ -1001,6 +1023,8 @@ const (
|
||||||
MNT_DETACH = 0x2
|
MNT_DETACH = 0x2
|
||||||
MNT_EXPIRE = 0x4
|
MNT_EXPIRE = 0x4
|
||||||
MNT_FORCE = 0x1
|
MNT_FORCE = 0x1
|
||||||
|
MODULE_INIT_IGNORE_MODVERSIONS = 0x1
|
||||||
|
MODULE_INIT_IGNORE_VERMAGIC = 0x2
|
||||||
MSDOS_SUPER_MAGIC = 0x4d44
|
MSDOS_SUPER_MAGIC = 0x4d44
|
||||||
MSG_BATCH = 0x40000
|
MSG_BATCH = 0x40000
|
||||||
MSG_CMSG_CLOEXEC = 0x40000000
|
MSG_CMSG_CLOEXEC = 0x40000000
|
||||||
|
@ -1269,6 +1293,36 @@ const (
|
||||||
PERF_EVENT_IOC_SET_FILTER = 0x40082406
|
PERF_EVENT_IOC_SET_FILTER = 0x40082406
|
||||||
PERF_EVENT_IOC_SET_OUTPUT = 0x2405
|
PERF_EVENT_IOC_SET_OUTPUT = 0x2405
|
||||||
PIPEFS_MAGIC = 0x50495045
|
PIPEFS_MAGIC = 0x50495045
|
||||||
|
PPPIOCATTACH = 0x4004743d
|
||||||
|
PPPIOCATTCHAN = 0x40047438
|
||||||
|
PPPIOCCONNECT = 0x4004743a
|
||||||
|
PPPIOCDETACH = 0x4004743c
|
||||||
|
PPPIOCDISCONN = 0x7439
|
||||||
|
PPPIOCGASYNCMAP = 0x80047458
|
||||||
|
PPPIOCGCHAN = 0x80047437
|
||||||
|
PPPIOCGDEBUG = 0x80047441
|
||||||
|
PPPIOCGFLAGS = 0x8004745a
|
||||||
|
PPPIOCGIDLE = 0x8010743f
|
||||||
|
PPPIOCGL2TPSTATS = 0x80487436
|
||||||
|
PPPIOCGMRU = 0x80047453
|
||||||
|
PPPIOCGNPMODE = 0xc008744c
|
||||||
|
PPPIOCGRASYNCMAP = 0x80047455
|
||||||
|
PPPIOCGUNIT = 0x80047456
|
||||||
|
PPPIOCGXASYNCMAP = 0x80207450
|
||||||
|
PPPIOCNEWUNIT = 0xc004743e
|
||||||
|
PPPIOCSACTIVE = 0x40107446
|
||||||
|
PPPIOCSASYNCMAP = 0x40047457
|
||||||
|
PPPIOCSCOMPRESS = 0x4010744d
|
||||||
|
PPPIOCSDEBUG = 0x40047440
|
||||||
|
PPPIOCSFLAGS = 0x40047459
|
||||||
|
PPPIOCSMAXCID = 0x40047451
|
||||||
|
PPPIOCSMRRU = 0x4004743b
|
||||||
|
PPPIOCSMRU = 0x40047452
|
||||||
|
PPPIOCSNPMODE = 0x4008744b
|
||||||
|
PPPIOCSPASS = 0x40107447
|
||||||
|
PPPIOCSRASYNCMAP = 0x40047454
|
||||||
|
PPPIOCSXASYNCMAP = 0x4020744f
|
||||||
|
PPPIOCXFERUNIT = 0x744e
|
||||||
PRIO_PGRP = 0x1
|
PRIO_PGRP = 0x1
|
||||||
PRIO_PROCESS = 0x0
|
PRIO_PROCESS = 0x0
|
||||||
PRIO_USER = 0x2
|
PRIO_USER = 0x2
|
||||||
|
@ -1565,6 +1619,7 @@ const (
|
||||||
RTM_DELACTION = 0x31
|
RTM_DELACTION = 0x31
|
||||||
RTM_DELADDR = 0x15
|
RTM_DELADDR = 0x15
|
||||||
RTM_DELADDRLABEL = 0x49
|
RTM_DELADDRLABEL = 0x49
|
||||||
|
RTM_DELCHAIN = 0x65
|
||||||
RTM_DELLINK = 0x11
|
RTM_DELLINK = 0x11
|
||||||
RTM_DELMDB = 0x55
|
RTM_DELMDB = 0x55
|
||||||
RTM_DELNEIGH = 0x1d
|
RTM_DELNEIGH = 0x1d
|
||||||
|
@ -1585,6 +1640,7 @@ const (
|
||||||
RTM_GETADDR = 0x16
|
RTM_GETADDR = 0x16
|
||||||
RTM_GETADDRLABEL = 0x4a
|
RTM_GETADDRLABEL = 0x4a
|
||||||
RTM_GETANYCAST = 0x3e
|
RTM_GETANYCAST = 0x3e
|
||||||
|
RTM_GETCHAIN = 0x66
|
||||||
RTM_GETDCB = 0x4e
|
RTM_GETDCB = 0x4e
|
||||||
RTM_GETLINK = 0x12
|
RTM_GETLINK = 0x12
|
||||||
RTM_GETMDB = 0x56
|
RTM_GETMDB = 0x56
|
||||||
|
@ -1599,11 +1655,12 @@ const (
|
||||||
RTM_GETSTATS = 0x5e
|
RTM_GETSTATS = 0x5e
|
||||||
RTM_GETTCLASS = 0x2a
|
RTM_GETTCLASS = 0x2a
|
||||||
RTM_GETTFILTER = 0x2e
|
RTM_GETTFILTER = 0x2e
|
||||||
RTM_MAX = 0x63
|
RTM_MAX = 0x67
|
||||||
RTM_NEWACTION = 0x30
|
RTM_NEWACTION = 0x30
|
||||||
RTM_NEWADDR = 0x14
|
RTM_NEWADDR = 0x14
|
||||||
RTM_NEWADDRLABEL = 0x48
|
RTM_NEWADDRLABEL = 0x48
|
||||||
RTM_NEWCACHEREPORT = 0x60
|
RTM_NEWCACHEREPORT = 0x60
|
||||||
|
RTM_NEWCHAIN = 0x64
|
||||||
RTM_NEWLINK = 0x10
|
RTM_NEWLINK = 0x10
|
||||||
RTM_NEWMDB = 0x54
|
RTM_NEWMDB = 0x54
|
||||||
RTM_NEWNDUSEROPT = 0x44
|
RTM_NEWNDUSEROPT = 0x44
|
||||||
|
@ -1618,8 +1675,8 @@ const (
|
||||||
RTM_NEWSTATS = 0x5c
|
RTM_NEWSTATS = 0x5c
|
||||||
RTM_NEWTCLASS = 0x28
|
RTM_NEWTCLASS = 0x28
|
||||||
RTM_NEWTFILTER = 0x2c
|
RTM_NEWTFILTER = 0x2c
|
||||||
RTM_NR_FAMILIES = 0x15
|
RTM_NR_FAMILIES = 0x16
|
||||||
RTM_NR_MSGTYPES = 0x54
|
RTM_NR_MSGTYPES = 0x58
|
||||||
RTM_SETDCB = 0x4f
|
RTM_SETDCB = 0x4f
|
||||||
RTM_SETLINK = 0x13
|
RTM_SETLINK = 0x13
|
||||||
RTM_SETNEIGHTBL = 0x43
|
RTM_SETNEIGHTBL = 0x43
|
||||||
|
@ -1668,7 +1725,9 @@ const (
|
||||||
SCM_TIMESTAMPING_OPT_STATS = 0x36
|
SCM_TIMESTAMPING_OPT_STATS = 0x36
|
||||||
SCM_TIMESTAMPING_PKTINFO = 0x3a
|
SCM_TIMESTAMPING_PKTINFO = 0x3a
|
||||||
SCM_TIMESTAMPNS = 0x23
|
SCM_TIMESTAMPNS = 0x23
|
||||||
|
SCM_TXTIME = 0x3d
|
||||||
SCM_WIFI_STATUS = 0x29
|
SCM_WIFI_STATUS = 0x29
|
||||||
|
SC_LOG_FLUSH = 0x100000
|
||||||
SECCOMP_MODE_DISABLED = 0x0
|
SECCOMP_MODE_DISABLED = 0x0
|
||||||
SECCOMP_MODE_FILTER = 0x2
|
SECCOMP_MODE_FILTER = 0x2
|
||||||
SECCOMP_MODE_STRICT = 0x1
|
SECCOMP_MODE_STRICT = 0x1
|
||||||
|
@ -1724,6 +1783,9 @@ const (
|
||||||
SIOCGMIIPHY = 0x8947
|
SIOCGMIIPHY = 0x8947
|
||||||
SIOCGMIIREG = 0x8948
|
SIOCGMIIREG = 0x8948
|
||||||
SIOCGPGRP = 0x8904
|
SIOCGPGRP = 0x8904
|
||||||
|
SIOCGPPPCSTATS = 0x89f2
|
||||||
|
SIOCGPPPSTATS = 0x89f0
|
||||||
|
SIOCGPPPVER = 0x89f1
|
||||||
SIOCGRARP = 0x8961
|
SIOCGRARP = 0x8961
|
||||||
SIOCGSKNS = 0x894c
|
SIOCGSKNS = 0x894c
|
||||||
SIOCGSTAMP = 0x8906
|
SIOCGSTAMP = 0x8906
|
||||||
|
@ -1872,6 +1934,7 @@ const (
|
||||||
SO_TIMESTAMP = 0x1d
|
SO_TIMESTAMP = 0x1d
|
||||||
SO_TIMESTAMPING = 0x25
|
SO_TIMESTAMPING = 0x25
|
||||||
SO_TIMESTAMPNS = 0x23
|
SO_TIMESTAMPNS = 0x23
|
||||||
|
SO_TXTIME = 0x3d
|
||||||
SO_TYPE = 0x3
|
SO_TYPE = 0x3
|
||||||
SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2
|
SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2
|
||||||
SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1
|
SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1
|
||||||
|
|
|
@ -878,6 +878,26 @@ const (
|
||||||
IXOFF = 0x1000
|
IXOFF = 0x1000
|
||||||
IXON = 0x400
|
IXON = 0x400
|
||||||
JFFS2_SUPER_MAGIC = 0x72b6
|
JFFS2_SUPER_MAGIC = 0x72b6
|
||||||
|
KEXEC_ARCH_386 = 0x30000
|
||||||
|
KEXEC_ARCH_68K = 0x40000
|
||||||
|
KEXEC_ARCH_AARCH64 = 0xb70000
|
||||||
|
KEXEC_ARCH_ARM = 0x280000
|
||||||
|
KEXEC_ARCH_DEFAULT = 0x0
|
||||||
|
KEXEC_ARCH_IA_64 = 0x320000
|
||||||
|
KEXEC_ARCH_MASK = 0xffff0000
|
||||||
|
KEXEC_ARCH_MIPS = 0x80000
|
||||||
|
KEXEC_ARCH_MIPS_LE = 0xa0000
|
||||||
|
KEXEC_ARCH_PPC = 0x140000
|
||||||
|
KEXEC_ARCH_PPC64 = 0x150000
|
||||||
|
KEXEC_ARCH_S390 = 0x160000
|
||||||
|
KEXEC_ARCH_SH = 0x2a0000
|
||||||
|
KEXEC_ARCH_X86_64 = 0x3e0000
|
||||||
|
KEXEC_FILE_NO_INITRAMFS = 0x4
|
||||||
|
KEXEC_FILE_ON_CRASH = 0x2
|
||||||
|
KEXEC_FILE_UNLOAD = 0x1
|
||||||
|
KEXEC_ON_CRASH = 0x1
|
||||||
|
KEXEC_PRESERVE_CONTEXT = 0x2
|
||||||
|
KEXEC_SEGMENT_MAX = 0x10
|
||||||
KEYCTL_ASSUME_AUTHORITY = 0x10
|
KEYCTL_ASSUME_AUTHORITY = 0x10
|
||||||
KEYCTL_CHOWN = 0x4
|
KEYCTL_CHOWN = 0x4
|
||||||
KEYCTL_CLEAR = 0x7
|
KEYCTL_CLEAR = 0x7
|
||||||
|
@ -986,7 +1006,9 @@ const (
|
||||||
MFD_HUGE_256MB = 0x70000000
|
MFD_HUGE_256MB = 0x70000000
|
||||||
MFD_HUGE_2GB = 0x7c000000
|
MFD_HUGE_2GB = 0x7c000000
|
||||||
MFD_HUGE_2MB = 0x54000000
|
MFD_HUGE_2MB = 0x54000000
|
||||||
|
MFD_HUGE_32MB = 0x64000000
|
||||||
MFD_HUGE_512KB = 0x4c000000
|
MFD_HUGE_512KB = 0x4c000000
|
||||||
|
MFD_HUGE_512MB = 0x74000000
|
||||||
MFD_HUGE_64KB = 0x40000000
|
MFD_HUGE_64KB = 0x40000000
|
||||||
MFD_HUGE_8MB = 0x5c000000
|
MFD_HUGE_8MB = 0x5c000000
|
||||||
MFD_HUGE_MASK = 0x3f
|
MFD_HUGE_MASK = 0x3f
|
||||||
|
@ -999,6 +1021,8 @@ const (
|
||||||
MNT_DETACH = 0x2
|
MNT_DETACH = 0x2
|
||||||
MNT_EXPIRE = 0x4
|
MNT_EXPIRE = 0x4
|
||||||
MNT_FORCE = 0x1
|
MNT_FORCE = 0x1
|
||||||
|
MODULE_INIT_IGNORE_MODVERSIONS = 0x1
|
||||||
|
MODULE_INIT_IGNORE_VERMAGIC = 0x2
|
||||||
MSDOS_SUPER_MAGIC = 0x4d44
|
MSDOS_SUPER_MAGIC = 0x4d44
|
||||||
MSG_BATCH = 0x40000
|
MSG_BATCH = 0x40000
|
||||||
MSG_CMSG_CLOEXEC = 0x40000000
|
MSG_CMSG_CLOEXEC = 0x40000000
|
||||||
|
@ -1267,6 +1291,36 @@ const (
|
||||||
PERF_EVENT_IOC_SET_FILTER = 0x40042406
|
PERF_EVENT_IOC_SET_FILTER = 0x40042406
|
||||||
PERF_EVENT_IOC_SET_OUTPUT = 0x2405
|
PERF_EVENT_IOC_SET_OUTPUT = 0x2405
|
||||||
PIPEFS_MAGIC = 0x50495045
|
PIPEFS_MAGIC = 0x50495045
|
||||||
|
PPPIOCATTACH = 0x4004743d
|
||||||
|
PPPIOCATTCHAN = 0x40047438
|
||||||
|
PPPIOCCONNECT = 0x4004743a
|
||||||
|
PPPIOCDETACH = 0x4004743c
|
||||||
|
PPPIOCDISCONN = 0x7439
|
||||||
|
PPPIOCGASYNCMAP = 0x80047458
|
||||||
|
PPPIOCGCHAN = 0x80047437
|
||||||
|
PPPIOCGDEBUG = 0x80047441
|
||||||
|
PPPIOCGFLAGS = 0x8004745a
|
||||||
|
PPPIOCGIDLE = 0x8008743f
|
||||||
|
PPPIOCGL2TPSTATS = 0x80487436
|
||||||
|
PPPIOCGMRU = 0x80047453
|
||||||
|
PPPIOCGNPMODE = 0xc008744c
|
||||||
|
PPPIOCGRASYNCMAP = 0x80047455
|
||||||
|
PPPIOCGUNIT = 0x80047456
|
||||||
|
PPPIOCGXASYNCMAP = 0x80207450
|
||||||
|
PPPIOCNEWUNIT = 0xc004743e
|
||||||
|
PPPIOCSACTIVE = 0x40087446
|
||||||
|
PPPIOCSASYNCMAP = 0x40047457
|
||||||
|
PPPIOCSCOMPRESS = 0x400c744d
|
||||||
|
PPPIOCSDEBUG = 0x40047440
|
||||||
|
PPPIOCSFLAGS = 0x40047459
|
||||||
|
PPPIOCSMAXCID = 0x40047451
|
||||||
|
PPPIOCSMRRU = 0x4004743b
|
||||||
|
PPPIOCSMRU = 0x40047452
|
||||||
|
PPPIOCSNPMODE = 0x4008744b
|
||||||
|
PPPIOCSPASS = 0x40087447
|
||||||
|
PPPIOCSRASYNCMAP = 0x40047454
|
||||||
|
PPPIOCSXASYNCMAP = 0x4020744f
|
||||||
|
PPPIOCXFERUNIT = 0x744e
|
||||||
PRIO_PGRP = 0x1
|
PRIO_PGRP = 0x1
|
||||||
PRIO_PROCESS = 0x0
|
PRIO_PROCESS = 0x0
|
||||||
PRIO_USER = 0x2
|
PRIO_USER = 0x2
|
||||||
|
@ -1571,6 +1625,7 @@ const (
|
||||||
RTM_DELACTION = 0x31
|
RTM_DELACTION = 0x31
|
||||||
RTM_DELADDR = 0x15
|
RTM_DELADDR = 0x15
|
||||||
RTM_DELADDRLABEL = 0x49
|
RTM_DELADDRLABEL = 0x49
|
||||||
|
RTM_DELCHAIN = 0x65
|
||||||
RTM_DELLINK = 0x11
|
RTM_DELLINK = 0x11
|
||||||
RTM_DELMDB = 0x55
|
RTM_DELMDB = 0x55
|
||||||
RTM_DELNEIGH = 0x1d
|
RTM_DELNEIGH = 0x1d
|
||||||
|
@ -1591,6 +1646,7 @@ const (
|
||||||
RTM_GETADDR = 0x16
|
RTM_GETADDR = 0x16
|
||||||
RTM_GETADDRLABEL = 0x4a
|
RTM_GETADDRLABEL = 0x4a
|
||||||
RTM_GETANYCAST = 0x3e
|
RTM_GETANYCAST = 0x3e
|
||||||
|
RTM_GETCHAIN = 0x66
|
||||||
RTM_GETDCB = 0x4e
|
RTM_GETDCB = 0x4e
|
||||||
RTM_GETLINK = 0x12
|
RTM_GETLINK = 0x12
|
||||||
RTM_GETMDB = 0x56
|
RTM_GETMDB = 0x56
|
||||||
|
@ -1605,11 +1661,12 @@ const (
|
||||||
RTM_GETSTATS = 0x5e
|
RTM_GETSTATS = 0x5e
|
||||||
RTM_GETTCLASS = 0x2a
|
RTM_GETTCLASS = 0x2a
|
||||||
RTM_GETTFILTER = 0x2e
|
RTM_GETTFILTER = 0x2e
|
||||||
RTM_MAX = 0x63
|
RTM_MAX = 0x67
|
||||||
RTM_NEWACTION = 0x30
|
RTM_NEWACTION = 0x30
|
||||||
RTM_NEWADDR = 0x14
|
RTM_NEWADDR = 0x14
|
||||||
RTM_NEWADDRLABEL = 0x48
|
RTM_NEWADDRLABEL = 0x48
|
||||||
RTM_NEWCACHEREPORT = 0x60
|
RTM_NEWCACHEREPORT = 0x60
|
||||||
|
RTM_NEWCHAIN = 0x64
|
||||||
RTM_NEWLINK = 0x10
|
RTM_NEWLINK = 0x10
|
||||||
RTM_NEWMDB = 0x54
|
RTM_NEWMDB = 0x54
|
||||||
RTM_NEWNDUSEROPT = 0x44
|
RTM_NEWNDUSEROPT = 0x44
|
||||||
|
@ -1624,8 +1681,8 @@ const (
|
||||||
RTM_NEWSTATS = 0x5c
|
RTM_NEWSTATS = 0x5c
|
||||||
RTM_NEWTCLASS = 0x28
|
RTM_NEWTCLASS = 0x28
|
||||||
RTM_NEWTFILTER = 0x2c
|
RTM_NEWTFILTER = 0x2c
|
||||||
RTM_NR_FAMILIES = 0x15
|
RTM_NR_FAMILIES = 0x16
|
||||||
RTM_NR_MSGTYPES = 0x54
|
RTM_NR_MSGTYPES = 0x58
|
||||||
RTM_SETDCB = 0x4f
|
RTM_SETDCB = 0x4f
|
||||||
RTM_SETLINK = 0x13
|
RTM_SETLINK = 0x13
|
||||||
RTM_SETNEIGHTBL = 0x43
|
RTM_SETNEIGHTBL = 0x43
|
||||||
|
@ -1674,7 +1731,9 @@ const (
|
||||||
SCM_TIMESTAMPING_OPT_STATS = 0x36
|
SCM_TIMESTAMPING_OPT_STATS = 0x36
|
||||||
SCM_TIMESTAMPING_PKTINFO = 0x3a
|
SCM_TIMESTAMPING_PKTINFO = 0x3a
|
||||||
SCM_TIMESTAMPNS = 0x23
|
SCM_TIMESTAMPNS = 0x23
|
||||||
|
SCM_TXTIME = 0x3d
|
||||||
SCM_WIFI_STATUS = 0x29
|
SCM_WIFI_STATUS = 0x29
|
||||||
|
SC_LOG_FLUSH = 0x100000
|
||||||
SECCOMP_MODE_DISABLED = 0x0
|
SECCOMP_MODE_DISABLED = 0x0
|
||||||
SECCOMP_MODE_FILTER = 0x2
|
SECCOMP_MODE_FILTER = 0x2
|
||||||
SECCOMP_MODE_STRICT = 0x1
|
SECCOMP_MODE_STRICT = 0x1
|
||||||
|
@ -1730,6 +1789,9 @@ const (
|
||||||
SIOCGMIIPHY = 0x8947
|
SIOCGMIIPHY = 0x8947
|
||||||
SIOCGMIIREG = 0x8948
|
SIOCGMIIREG = 0x8948
|
||||||
SIOCGPGRP = 0x8904
|
SIOCGPGRP = 0x8904
|
||||||
|
SIOCGPPPCSTATS = 0x89f2
|
||||||
|
SIOCGPPPSTATS = 0x89f0
|
||||||
|
SIOCGPPPVER = 0x89f1
|
||||||
SIOCGRARP = 0x8961
|
SIOCGRARP = 0x8961
|
||||||
SIOCGSKNS = 0x894c
|
SIOCGSKNS = 0x894c
|
||||||
SIOCGSTAMP = 0x8906
|
SIOCGSTAMP = 0x8906
|
||||||
|
@ -1878,6 +1940,7 @@ const (
|
||||||
SO_TIMESTAMP = 0x1d
|
SO_TIMESTAMP = 0x1d
|
||||||
SO_TIMESTAMPING = 0x25
|
SO_TIMESTAMPING = 0x25
|
||||||
SO_TIMESTAMPNS = 0x23
|
SO_TIMESTAMPNS = 0x23
|
||||||
|
SO_TXTIME = 0x3d
|
||||||
SO_TYPE = 0x3
|
SO_TYPE = 0x3
|
||||||
SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2
|
SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2
|
||||||
SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1
|
SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1
|
||||||
|
|
|
@ -881,6 +881,26 @@ const (
|
||||||
IXOFF = 0x1000
|
IXOFF = 0x1000
|
||||||
IXON = 0x400
|
IXON = 0x400
|
||||||
JFFS2_SUPER_MAGIC = 0x72b6
|
JFFS2_SUPER_MAGIC = 0x72b6
|
||||||
|
KEXEC_ARCH_386 = 0x30000
|
||||||
|
KEXEC_ARCH_68K = 0x40000
|
||||||
|
KEXEC_ARCH_AARCH64 = 0xb70000
|
||||||
|
KEXEC_ARCH_ARM = 0x280000
|
||||||
|
KEXEC_ARCH_DEFAULT = 0x0
|
||||||
|
KEXEC_ARCH_IA_64 = 0x320000
|
||||||
|
KEXEC_ARCH_MASK = 0xffff0000
|
||||||
|
KEXEC_ARCH_MIPS = 0x80000
|
||||||
|
KEXEC_ARCH_MIPS_LE = 0xa0000
|
||||||
|
KEXEC_ARCH_PPC = 0x140000
|
||||||
|
KEXEC_ARCH_PPC64 = 0x150000
|
||||||
|
KEXEC_ARCH_S390 = 0x160000
|
||||||
|
KEXEC_ARCH_SH = 0x2a0000
|
||||||
|
KEXEC_ARCH_X86_64 = 0x3e0000
|
||||||
|
KEXEC_FILE_NO_INITRAMFS = 0x4
|
||||||
|
KEXEC_FILE_ON_CRASH = 0x2
|
||||||
|
KEXEC_FILE_UNLOAD = 0x1
|
||||||
|
KEXEC_ON_CRASH = 0x1
|
||||||
|
KEXEC_PRESERVE_CONTEXT = 0x2
|
||||||
|
KEXEC_SEGMENT_MAX = 0x10
|
||||||
KEYCTL_ASSUME_AUTHORITY = 0x10
|
KEYCTL_ASSUME_AUTHORITY = 0x10
|
||||||
KEYCTL_CHOWN = 0x4
|
KEYCTL_CHOWN = 0x4
|
||||||
KEYCTL_CLEAR = 0x7
|
KEYCTL_CLEAR = 0x7
|
||||||
|
@ -989,7 +1009,9 @@ const (
|
||||||
MFD_HUGE_256MB = 0x70000000
|
MFD_HUGE_256MB = 0x70000000
|
||||||
MFD_HUGE_2GB = 0x7c000000
|
MFD_HUGE_2GB = 0x7c000000
|
||||||
MFD_HUGE_2MB = 0x54000000
|
MFD_HUGE_2MB = 0x54000000
|
||||||
|
MFD_HUGE_32MB = 0x64000000
|
||||||
MFD_HUGE_512KB = 0x4c000000
|
MFD_HUGE_512KB = 0x4c000000
|
||||||
|
MFD_HUGE_512MB = 0x74000000
|
||||||
MFD_HUGE_64KB = 0x40000000
|
MFD_HUGE_64KB = 0x40000000
|
||||||
MFD_HUGE_8MB = 0x5c000000
|
MFD_HUGE_8MB = 0x5c000000
|
||||||
MFD_HUGE_MASK = 0x3f
|
MFD_HUGE_MASK = 0x3f
|
||||||
|
@ -1002,6 +1024,8 @@ const (
|
||||||
MNT_DETACH = 0x2
|
MNT_DETACH = 0x2
|
||||||
MNT_EXPIRE = 0x4
|
MNT_EXPIRE = 0x4
|
||||||
MNT_FORCE = 0x1
|
MNT_FORCE = 0x1
|
||||||
|
MODULE_INIT_IGNORE_MODVERSIONS = 0x1
|
||||||
|
MODULE_INIT_IGNORE_VERMAGIC = 0x2
|
||||||
MSDOS_SUPER_MAGIC = 0x4d44
|
MSDOS_SUPER_MAGIC = 0x4d44
|
||||||
MSG_BATCH = 0x40000
|
MSG_BATCH = 0x40000
|
||||||
MSG_CMSG_CLOEXEC = 0x40000000
|
MSG_CMSG_CLOEXEC = 0x40000000
|
||||||
|
@ -1270,6 +1294,36 @@ const (
|
||||||
PERF_EVENT_IOC_SET_FILTER = 0x40082406
|
PERF_EVENT_IOC_SET_FILTER = 0x40082406
|
||||||
PERF_EVENT_IOC_SET_OUTPUT = 0x2405
|
PERF_EVENT_IOC_SET_OUTPUT = 0x2405
|
||||||
PIPEFS_MAGIC = 0x50495045
|
PIPEFS_MAGIC = 0x50495045
|
||||||
|
PPPIOCATTACH = 0x4004743d
|
||||||
|
PPPIOCATTCHAN = 0x40047438
|
||||||
|
PPPIOCCONNECT = 0x4004743a
|
||||||
|
PPPIOCDETACH = 0x4004743c
|
||||||
|
PPPIOCDISCONN = 0x7439
|
||||||
|
PPPIOCGASYNCMAP = 0x80047458
|
||||||
|
PPPIOCGCHAN = 0x80047437
|
||||||
|
PPPIOCGDEBUG = 0x80047441
|
||||||
|
PPPIOCGFLAGS = 0x8004745a
|
||||||
|
PPPIOCGIDLE = 0x8010743f
|
||||||
|
PPPIOCGL2TPSTATS = 0x80487436
|
||||||
|
PPPIOCGMRU = 0x80047453
|
||||||
|
PPPIOCGNPMODE = 0xc008744c
|
||||||
|
PPPIOCGRASYNCMAP = 0x80047455
|
||||||
|
PPPIOCGUNIT = 0x80047456
|
||||||
|
PPPIOCGXASYNCMAP = 0x80207450
|
||||||
|
PPPIOCNEWUNIT = 0xc004743e
|
||||||
|
PPPIOCSACTIVE = 0x40107446
|
||||||
|
PPPIOCSASYNCMAP = 0x40047457
|
||||||
|
PPPIOCSCOMPRESS = 0x4010744d
|
||||||
|
PPPIOCSDEBUG = 0x40047440
|
||||||
|
PPPIOCSFLAGS = 0x40047459
|
||||||
|
PPPIOCSMAXCID = 0x40047451
|
||||||
|
PPPIOCSMRRU = 0x4004743b
|
||||||
|
PPPIOCSMRU = 0x40047452
|
||||||
|
PPPIOCSNPMODE = 0x4008744b
|
||||||
|
PPPIOCSPASS = 0x40107447
|
||||||
|
PPPIOCSRASYNCMAP = 0x40047454
|
||||||
|
PPPIOCSXASYNCMAP = 0x4020744f
|
||||||
|
PPPIOCXFERUNIT = 0x744e
|
||||||
PRIO_PGRP = 0x1
|
PRIO_PGRP = 0x1
|
||||||
PRIO_PROCESS = 0x0
|
PRIO_PROCESS = 0x0
|
||||||
PRIO_USER = 0x2
|
PRIO_USER = 0x2
|
||||||
|
@ -1555,6 +1609,7 @@ const (
|
||||||
RTM_DELACTION = 0x31
|
RTM_DELACTION = 0x31
|
||||||
RTM_DELADDR = 0x15
|
RTM_DELADDR = 0x15
|
||||||
RTM_DELADDRLABEL = 0x49
|
RTM_DELADDRLABEL = 0x49
|
||||||
|
RTM_DELCHAIN = 0x65
|
||||||
RTM_DELLINK = 0x11
|
RTM_DELLINK = 0x11
|
||||||
RTM_DELMDB = 0x55
|
RTM_DELMDB = 0x55
|
||||||
RTM_DELNEIGH = 0x1d
|
RTM_DELNEIGH = 0x1d
|
||||||
|
@ -1575,6 +1630,7 @@ const (
|
||||||
RTM_GETADDR = 0x16
|
RTM_GETADDR = 0x16
|
||||||
RTM_GETADDRLABEL = 0x4a
|
RTM_GETADDRLABEL = 0x4a
|
||||||
RTM_GETANYCAST = 0x3e
|
RTM_GETANYCAST = 0x3e
|
||||||
|
RTM_GETCHAIN = 0x66
|
||||||
RTM_GETDCB = 0x4e
|
RTM_GETDCB = 0x4e
|
||||||
RTM_GETLINK = 0x12
|
RTM_GETLINK = 0x12
|
||||||
RTM_GETMDB = 0x56
|
RTM_GETMDB = 0x56
|
||||||
|
@ -1589,11 +1645,12 @@ const (
|
||||||
RTM_GETSTATS = 0x5e
|
RTM_GETSTATS = 0x5e
|
||||||
RTM_GETTCLASS = 0x2a
|
RTM_GETTCLASS = 0x2a
|
||||||
RTM_GETTFILTER = 0x2e
|
RTM_GETTFILTER = 0x2e
|
||||||
RTM_MAX = 0x63
|
RTM_MAX = 0x67
|
||||||
RTM_NEWACTION = 0x30
|
RTM_NEWACTION = 0x30
|
||||||
RTM_NEWADDR = 0x14
|
RTM_NEWADDR = 0x14
|
||||||
RTM_NEWADDRLABEL = 0x48
|
RTM_NEWADDRLABEL = 0x48
|
||||||
RTM_NEWCACHEREPORT = 0x60
|
RTM_NEWCACHEREPORT = 0x60
|
||||||
|
RTM_NEWCHAIN = 0x64
|
||||||
RTM_NEWLINK = 0x10
|
RTM_NEWLINK = 0x10
|
||||||
RTM_NEWMDB = 0x54
|
RTM_NEWMDB = 0x54
|
||||||
RTM_NEWNDUSEROPT = 0x44
|
RTM_NEWNDUSEROPT = 0x44
|
||||||
|
@ -1608,8 +1665,8 @@ const (
|
||||||
RTM_NEWSTATS = 0x5c
|
RTM_NEWSTATS = 0x5c
|
||||||
RTM_NEWTCLASS = 0x28
|
RTM_NEWTCLASS = 0x28
|
||||||
RTM_NEWTFILTER = 0x2c
|
RTM_NEWTFILTER = 0x2c
|
||||||
RTM_NR_FAMILIES = 0x15
|
RTM_NR_FAMILIES = 0x16
|
||||||
RTM_NR_MSGTYPES = 0x54
|
RTM_NR_MSGTYPES = 0x58
|
||||||
RTM_SETDCB = 0x4f
|
RTM_SETDCB = 0x4f
|
||||||
RTM_SETLINK = 0x13
|
RTM_SETLINK = 0x13
|
||||||
RTM_SETNEIGHTBL = 0x43
|
RTM_SETNEIGHTBL = 0x43
|
||||||
|
@ -1658,7 +1715,9 @@ const (
|
||||||
SCM_TIMESTAMPING_OPT_STATS = 0x36
|
SCM_TIMESTAMPING_OPT_STATS = 0x36
|
||||||
SCM_TIMESTAMPING_PKTINFO = 0x3a
|
SCM_TIMESTAMPING_PKTINFO = 0x3a
|
||||||
SCM_TIMESTAMPNS = 0x23
|
SCM_TIMESTAMPNS = 0x23
|
||||||
|
SCM_TXTIME = 0x3d
|
||||||
SCM_WIFI_STATUS = 0x29
|
SCM_WIFI_STATUS = 0x29
|
||||||
|
SC_LOG_FLUSH = 0x100000
|
||||||
SECCOMP_MODE_DISABLED = 0x0
|
SECCOMP_MODE_DISABLED = 0x0
|
||||||
SECCOMP_MODE_FILTER = 0x2
|
SECCOMP_MODE_FILTER = 0x2
|
||||||
SECCOMP_MODE_STRICT = 0x1
|
SECCOMP_MODE_STRICT = 0x1
|
||||||
|
@ -1714,6 +1773,9 @@ const (
|
||||||
SIOCGMIIPHY = 0x8947
|
SIOCGMIIPHY = 0x8947
|
||||||
SIOCGMIIREG = 0x8948
|
SIOCGMIIREG = 0x8948
|
||||||
SIOCGPGRP = 0x8904
|
SIOCGPGRP = 0x8904
|
||||||
|
SIOCGPPPCSTATS = 0x89f2
|
||||||
|
SIOCGPPPSTATS = 0x89f0
|
||||||
|
SIOCGPPPVER = 0x89f1
|
||||||
SIOCGRARP = 0x8961
|
SIOCGRARP = 0x8961
|
||||||
SIOCGSKNS = 0x894c
|
SIOCGSKNS = 0x894c
|
||||||
SIOCGSTAMP = 0x8906
|
SIOCGSTAMP = 0x8906
|
||||||
|
@ -1862,6 +1924,7 @@ const (
|
||||||
SO_TIMESTAMP = 0x1d
|
SO_TIMESTAMP = 0x1d
|
||||||
SO_TIMESTAMPING = 0x25
|
SO_TIMESTAMPING = 0x25
|
||||||
SO_TIMESTAMPNS = 0x23
|
SO_TIMESTAMPNS = 0x23
|
||||||
|
SO_TXTIME = 0x3d
|
||||||
SO_TYPE = 0x3
|
SO_TYPE = 0x3
|
||||||
SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2
|
SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2
|
||||||
SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1
|
SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1
|
||||||
|
|
|
@ -878,6 +878,26 @@ const (
|
||||||
IXOFF = 0x1000
|
IXOFF = 0x1000
|
||||||
IXON = 0x400
|
IXON = 0x400
|
||||||
JFFS2_SUPER_MAGIC = 0x72b6
|
JFFS2_SUPER_MAGIC = 0x72b6
|
||||||
|
KEXEC_ARCH_386 = 0x30000
|
||||||
|
KEXEC_ARCH_68K = 0x40000
|
||||||
|
KEXEC_ARCH_AARCH64 = 0xb70000
|
||||||
|
KEXEC_ARCH_ARM = 0x280000
|
||||||
|
KEXEC_ARCH_DEFAULT = 0x0
|
||||||
|
KEXEC_ARCH_IA_64 = 0x320000
|
||||||
|
KEXEC_ARCH_MASK = 0xffff0000
|
||||||
|
KEXEC_ARCH_MIPS = 0x80000
|
||||||
|
KEXEC_ARCH_MIPS_LE = 0xa0000
|
||||||
|
KEXEC_ARCH_PPC = 0x140000
|
||||||
|
KEXEC_ARCH_PPC64 = 0x150000
|
||||||
|
KEXEC_ARCH_S390 = 0x160000
|
||||||
|
KEXEC_ARCH_SH = 0x2a0000
|
||||||
|
KEXEC_ARCH_X86_64 = 0x3e0000
|
||||||
|
KEXEC_FILE_NO_INITRAMFS = 0x4
|
||||||
|
KEXEC_FILE_ON_CRASH = 0x2
|
||||||
|
KEXEC_FILE_UNLOAD = 0x1
|
||||||
|
KEXEC_ON_CRASH = 0x1
|
||||||
|
KEXEC_PRESERVE_CONTEXT = 0x2
|
||||||
|
KEXEC_SEGMENT_MAX = 0x10
|
||||||
KEYCTL_ASSUME_AUTHORITY = 0x10
|
KEYCTL_ASSUME_AUTHORITY = 0x10
|
||||||
KEYCTL_CHOWN = 0x4
|
KEYCTL_CHOWN = 0x4
|
||||||
KEYCTL_CLEAR = 0x7
|
KEYCTL_CLEAR = 0x7
|
||||||
|
@ -986,7 +1006,9 @@ const (
|
||||||
MFD_HUGE_256MB = 0x70000000
|
MFD_HUGE_256MB = 0x70000000
|
||||||
MFD_HUGE_2GB = 0x7c000000
|
MFD_HUGE_2GB = 0x7c000000
|
||||||
MFD_HUGE_2MB = 0x54000000
|
MFD_HUGE_2MB = 0x54000000
|
||||||
|
MFD_HUGE_32MB = 0x64000000
|
||||||
MFD_HUGE_512KB = 0x4c000000
|
MFD_HUGE_512KB = 0x4c000000
|
||||||
|
MFD_HUGE_512MB = 0x74000000
|
||||||
MFD_HUGE_64KB = 0x40000000
|
MFD_HUGE_64KB = 0x40000000
|
||||||
MFD_HUGE_8MB = 0x5c000000
|
MFD_HUGE_8MB = 0x5c000000
|
||||||
MFD_HUGE_MASK = 0x3f
|
MFD_HUGE_MASK = 0x3f
|
||||||
|
@ -999,6 +1021,8 @@ const (
|
||||||
MNT_DETACH = 0x2
|
MNT_DETACH = 0x2
|
||||||
MNT_EXPIRE = 0x4
|
MNT_EXPIRE = 0x4
|
||||||
MNT_FORCE = 0x1
|
MNT_FORCE = 0x1
|
||||||
|
MODULE_INIT_IGNORE_MODVERSIONS = 0x1
|
||||||
|
MODULE_INIT_IGNORE_VERMAGIC = 0x2
|
||||||
MSDOS_SUPER_MAGIC = 0x4d44
|
MSDOS_SUPER_MAGIC = 0x4d44
|
||||||
MSG_BATCH = 0x40000
|
MSG_BATCH = 0x40000
|
||||||
MSG_CMSG_CLOEXEC = 0x40000000
|
MSG_CMSG_CLOEXEC = 0x40000000
|
||||||
|
@ -1267,6 +1291,36 @@ const (
|
||||||
PERF_EVENT_IOC_SET_FILTER = 0x80042406
|
PERF_EVENT_IOC_SET_FILTER = 0x80042406
|
||||||
PERF_EVENT_IOC_SET_OUTPUT = 0x20002405
|
PERF_EVENT_IOC_SET_OUTPUT = 0x20002405
|
||||||
PIPEFS_MAGIC = 0x50495045
|
PIPEFS_MAGIC = 0x50495045
|
||||||
|
PPPIOCATTACH = 0x8004743d
|
||||||
|
PPPIOCATTCHAN = 0x80047438
|
||||||
|
PPPIOCCONNECT = 0x8004743a
|
||||||
|
PPPIOCDETACH = 0x8004743c
|
||||||
|
PPPIOCDISCONN = 0x20007439
|
||||||
|
PPPIOCGASYNCMAP = 0x40047458
|
||||||
|
PPPIOCGCHAN = 0x40047437
|
||||||
|
PPPIOCGDEBUG = 0x40047441
|
||||||
|
PPPIOCGFLAGS = 0x4004745a
|
||||||
|
PPPIOCGIDLE = 0x4008743f
|
||||||
|
PPPIOCGL2TPSTATS = 0x40487436
|
||||||
|
PPPIOCGMRU = 0x40047453
|
||||||
|
PPPIOCGNPMODE = 0xc008744c
|
||||||
|
PPPIOCGRASYNCMAP = 0x40047455
|
||||||
|
PPPIOCGUNIT = 0x40047456
|
||||||
|
PPPIOCGXASYNCMAP = 0x40207450
|
||||||
|
PPPIOCNEWUNIT = 0xc004743e
|
||||||
|
PPPIOCSACTIVE = 0x80087446
|
||||||
|
PPPIOCSASYNCMAP = 0x80047457
|
||||||
|
PPPIOCSCOMPRESS = 0x800c744d
|
||||||
|
PPPIOCSDEBUG = 0x80047440
|
||||||
|
PPPIOCSFLAGS = 0x80047459
|
||||||
|
PPPIOCSMAXCID = 0x80047451
|
||||||
|
PPPIOCSMRRU = 0x8004743b
|
||||||
|
PPPIOCSMRU = 0x80047452
|
||||||
|
PPPIOCSNPMODE = 0x8008744b
|
||||||
|
PPPIOCSPASS = 0x80087447
|
||||||
|
PPPIOCSRASYNCMAP = 0x80047454
|
||||||
|
PPPIOCSXASYNCMAP = 0x8020744f
|
||||||
|
PPPIOCXFERUNIT = 0x2000744e
|
||||||
PRIO_PGRP = 0x1
|
PRIO_PGRP = 0x1
|
||||||
PRIO_PROCESS = 0x0
|
PRIO_PROCESS = 0x0
|
||||||
PRIO_USER = 0x2
|
PRIO_USER = 0x2
|
||||||
|
@ -1564,6 +1618,7 @@ const (
|
||||||
RTM_DELACTION = 0x31
|
RTM_DELACTION = 0x31
|
||||||
RTM_DELADDR = 0x15
|
RTM_DELADDR = 0x15
|
||||||
RTM_DELADDRLABEL = 0x49
|
RTM_DELADDRLABEL = 0x49
|
||||||
|
RTM_DELCHAIN = 0x65
|
||||||
RTM_DELLINK = 0x11
|
RTM_DELLINK = 0x11
|
||||||
RTM_DELMDB = 0x55
|
RTM_DELMDB = 0x55
|
||||||
RTM_DELNEIGH = 0x1d
|
RTM_DELNEIGH = 0x1d
|
||||||
|
@ -1584,6 +1639,7 @@ const (
|
||||||
RTM_GETADDR = 0x16
|
RTM_GETADDR = 0x16
|
||||||
RTM_GETADDRLABEL = 0x4a
|
RTM_GETADDRLABEL = 0x4a
|
||||||
RTM_GETANYCAST = 0x3e
|
RTM_GETANYCAST = 0x3e
|
||||||
|
RTM_GETCHAIN = 0x66
|
||||||
RTM_GETDCB = 0x4e
|
RTM_GETDCB = 0x4e
|
||||||
RTM_GETLINK = 0x12
|
RTM_GETLINK = 0x12
|
||||||
RTM_GETMDB = 0x56
|
RTM_GETMDB = 0x56
|
||||||
|
@ -1598,11 +1654,12 @@ const (
|
||||||
RTM_GETSTATS = 0x5e
|
RTM_GETSTATS = 0x5e
|
||||||
RTM_GETTCLASS = 0x2a
|
RTM_GETTCLASS = 0x2a
|
||||||
RTM_GETTFILTER = 0x2e
|
RTM_GETTFILTER = 0x2e
|
||||||
RTM_MAX = 0x63
|
RTM_MAX = 0x67
|
||||||
RTM_NEWACTION = 0x30
|
RTM_NEWACTION = 0x30
|
||||||
RTM_NEWADDR = 0x14
|
RTM_NEWADDR = 0x14
|
||||||
RTM_NEWADDRLABEL = 0x48
|
RTM_NEWADDRLABEL = 0x48
|
||||||
RTM_NEWCACHEREPORT = 0x60
|
RTM_NEWCACHEREPORT = 0x60
|
||||||
|
RTM_NEWCHAIN = 0x64
|
||||||
RTM_NEWLINK = 0x10
|
RTM_NEWLINK = 0x10
|
||||||
RTM_NEWMDB = 0x54
|
RTM_NEWMDB = 0x54
|
||||||
RTM_NEWNDUSEROPT = 0x44
|
RTM_NEWNDUSEROPT = 0x44
|
||||||
|
@ -1617,8 +1674,8 @@ const (
|
||||||
RTM_NEWSTATS = 0x5c
|
RTM_NEWSTATS = 0x5c
|
||||||
RTM_NEWTCLASS = 0x28
|
RTM_NEWTCLASS = 0x28
|
||||||
RTM_NEWTFILTER = 0x2c
|
RTM_NEWTFILTER = 0x2c
|
||||||
RTM_NR_FAMILIES = 0x15
|
RTM_NR_FAMILIES = 0x16
|
||||||
RTM_NR_MSGTYPES = 0x54
|
RTM_NR_MSGTYPES = 0x58
|
||||||
RTM_SETDCB = 0x4f
|
RTM_SETDCB = 0x4f
|
||||||
RTM_SETLINK = 0x13
|
RTM_SETLINK = 0x13
|
||||||
RTM_SETNEIGHTBL = 0x43
|
RTM_SETNEIGHTBL = 0x43
|
||||||
|
@ -1667,7 +1724,9 @@ const (
|
||||||
SCM_TIMESTAMPING_OPT_STATS = 0x36
|
SCM_TIMESTAMPING_OPT_STATS = 0x36
|
||||||
SCM_TIMESTAMPING_PKTINFO = 0x3a
|
SCM_TIMESTAMPING_PKTINFO = 0x3a
|
||||||
SCM_TIMESTAMPNS = 0x23
|
SCM_TIMESTAMPNS = 0x23
|
||||||
|
SCM_TXTIME = 0x3d
|
||||||
SCM_WIFI_STATUS = 0x29
|
SCM_WIFI_STATUS = 0x29
|
||||||
|
SC_LOG_FLUSH = 0x100000
|
||||||
SECCOMP_MODE_DISABLED = 0x0
|
SECCOMP_MODE_DISABLED = 0x0
|
||||||
SECCOMP_MODE_FILTER = 0x2
|
SECCOMP_MODE_FILTER = 0x2
|
||||||
SECCOMP_MODE_STRICT = 0x1
|
SECCOMP_MODE_STRICT = 0x1
|
||||||
|
@ -1723,6 +1782,9 @@ const (
|
||||||
SIOCGMIIPHY = 0x8947
|
SIOCGMIIPHY = 0x8947
|
||||||
SIOCGMIIREG = 0x8948
|
SIOCGMIIREG = 0x8948
|
||||||
SIOCGPGRP = 0x40047309
|
SIOCGPGRP = 0x40047309
|
||||||
|
SIOCGPPPCSTATS = 0x89f2
|
||||||
|
SIOCGPPPSTATS = 0x89f0
|
||||||
|
SIOCGPPPVER = 0x89f1
|
||||||
SIOCGRARP = 0x8961
|
SIOCGRARP = 0x8961
|
||||||
SIOCGSKNS = 0x894c
|
SIOCGSKNS = 0x894c
|
||||||
SIOCGSTAMP = 0x8906
|
SIOCGSTAMP = 0x8906
|
||||||
|
@ -1872,6 +1934,7 @@ const (
|
||||||
SO_TIMESTAMP = 0x1d
|
SO_TIMESTAMP = 0x1d
|
||||||
SO_TIMESTAMPING = 0x25
|
SO_TIMESTAMPING = 0x25
|
||||||
SO_TIMESTAMPNS = 0x23
|
SO_TIMESTAMPNS = 0x23
|
||||||
|
SO_TXTIME = 0x3d
|
||||||
SO_TYPE = 0x1008
|
SO_TYPE = 0x1008
|
||||||
SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2
|
SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2
|
||||||
SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1
|
SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1
|
||||||
|
|
|
@ -878,6 +878,26 @@ const (
|
||||||
IXOFF = 0x1000
|
IXOFF = 0x1000
|
||||||
IXON = 0x400
|
IXON = 0x400
|
||||||
JFFS2_SUPER_MAGIC = 0x72b6
|
JFFS2_SUPER_MAGIC = 0x72b6
|
||||||
|
KEXEC_ARCH_386 = 0x30000
|
||||||
|
KEXEC_ARCH_68K = 0x40000
|
||||||
|
KEXEC_ARCH_AARCH64 = 0xb70000
|
||||||
|
KEXEC_ARCH_ARM = 0x280000
|
||||||
|
KEXEC_ARCH_DEFAULT = 0x0
|
||||||
|
KEXEC_ARCH_IA_64 = 0x320000
|
||||||
|
KEXEC_ARCH_MASK = 0xffff0000
|
||||||
|
KEXEC_ARCH_MIPS = 0x80000
|
||||||
|
KEXEC_ARCH_MIPS_LE = 0xa0000
|
||||||
|
KEXEC_ARCH_PPC = 0x140000
|
||||||
|
KEXEC_ARCH_PPC64 = 0x150000
|
||||||
|
KEXEC_ARCH_S390 = 0x160000
|
||||||
|
KEXEC_ARCH_SH = 0x2a0000
|
||||||
|
KEXEC_ARCH_X86_64 = 0x3e0000
|
||||||
|
KEXEC_FILE_NO_INITRAMFS = 0x4
|
||||||
|
KEXEC_FILE_ON_CRASH = 0x2
|
||||||
|
KEXEC_FILE_UNLOAD = 0x1
|
||||||
|
KEXEC_ON_CRASH = 0x1
|
||||||
|
KEXEC_PRESERVE_CONTEXT = 0x2
|
||||||
|
KEXEC_SEGMENT_MAX = 0x10
|
||||||
KEYCTL_ASSUME_AUTHORITY = 0x10
|
KEYCTL_ASSUME_AUTHORITY = 0x10
|
||||||
KEYCTL_CHOWN = 0x4
|
KEYCTL_CHOWN = 0x4
|
||||||
KEYCTL_CLEAR = 0x7
|
KEYCTL_CLEAR = 0x7
|
||||||
|
@ -986,7 +1006,9 @@ const (
|
||||||
MFD_HUGE_256MB = 0x70000000
|
MFD_HUGE_256MB = 0x70000000
|
||||||
MFD_HUGE_2GB = 0x7c000000
|
MFD_HUGE_2GB = 0x7c000000
|
||||||
MFD_HUGE_2MB = 0x54000000
|
MFD_HUGE_2MB = 0x54000000
|
||||||
|
MFD_HUGE_32MB = 0x64000000
|
||||||
MFD_HUGE_512KB = 0x4c000000
|
MFD_HUGE_512KB = 0x4c000000
|
||||||
|
MFD_HUGE_512MB = 0x74000000
|
||||||
MFD_HUGE_64KB = 0x40000000
|
MFD_HUGE_64KB = 0x40000000
|
||||||
MFD_HUGE_8MB = 0x5c000000
|
MFD_HUGE_8MB = 0x5c000000
|
||||||
MFD_HUGE_MASK = 0x3f
|
MFD_HUGE_MASK = 0x3f
|
||||||
|
@ -999,6 +1021,8 @@ const (
|
||||||
MNT_DETACH = 0x2
|
MNT_DETACH = 0x2
|
||||||
MNT_EXPIRE = 0x4
|
MNT_EXPIRE = 0x4
|
||||||
MNT_FORCE = 0x1
|
MNT_FORCE = 0x1
|
||||||
|
MODULE_INIT_IGNORE_MODVERSIONS = 0x1
|
||||||
|
MODULE_INIT_IGNORE_VERMAGIC = 0x2
|
||||||
MSDOS_SUPER_MAGIC = 0x4d44
|
MSDOS_SUPER_MAGIC = 0x4d44
|
||||||
MSG_BATCH = 0x40000
|
MSG_BATCH = 0x40000
|
||||||
MSG_CMSG_CLOEXEC = 0x40000000
|
MSG_CMSG_CLOEXEC = 0x40000000
|
||||||
|
@ -1267,6 +1291,36 @@ const (
|
||||||
PERF_EVENT_IOC_SET_FILTER = 0x80082406
|
PERF_EVENT_IOC_SET_FILTER = 0x80082406
|
||||||
PERF_EVENT_IOC_SET_OUTPUT = 0x20002405
|
PERF_EVENT_IOC_SET_OUTPUT = 0x20002405
|
||||||
PIPEFS_MAGIC = 0x50495045
|
PIPEFS_MAGIC = 0x50495045
|
||||||
|
PPPIOCATTACH = 0x8004743d
|
||||||
|
PPPIOCATTCHAN = 0x80047438
|
||||||
|
PPPIOCCONNECT = 0x8004743a
|
||||||
|
PPPIOCDETACH = 0x8004743c
|
||||||
|
PPPIOCDISCONN = 0x20007439
|
||||||
|
PPPIOCGASYNCMAP = 0x40047458
|
||||||
|
PPPIOCGCHAN = 0x40047437
|
||||||
|
PPPIOCGDEBUG = 0x40047441
|
||||||
|
PPPIOCGFLAGS = 0x4004745a
|
||||||
|
PPPIOCGIDLE = 0x4010743f
|
||||||
|
PPPIOCGL2TPSTATS = 0x40487436
|
||||||
|
PPPIOCGMRU = 0x40047453
|
||||||
|
PPPIOCGNPMODE = 0xc008744c
|
||||||
|
PPPIOCGRASYNCMAP = 0x40047455
|
||||||
|
PPPIOCGUNIT = 0x40047456
|
||||||
|
PPPIOCGXASYNCMAP = 0x40207450
|
||||||
|
PPPIOCNEWUNIT = 0xc004743e
|
||||||
|
PPPIOCSACTIVE = 0x80107446
|
||||||
|
PPPIOCSASYNCMAP = 0x80047457
|
||||||
|
PPPIOCSCOMPRESS = 0x8010744d
|
||||||
|
PPPIOCSDEBUG = 0x80047440
|
||||||
|
PPPIOCSFLAGS = 0x80047459
|
||||||
|
PPPIOCSMAXCID = 0x80047451
|
||||||
|
PPPIOCSMRRU = 0x8004743b
|
||||||
|
PPPIOCSMRU = 0x80047452
|
||||||
|
PPPIOCSNPMODE = 0x8008744b
|
||||||
|
PPPIOCSPASS = 0x80107447
|
||||||
|
PPPIOCSRASYNCMAP = 0x80047454
|
||||||
|
PPPIOCSXASYNCMAP = 0x8020744f
|
||||||
|
PPPIOCXFERUNIT = 0x2000744e
|
||||||
PRIO_PGRP = 0x1
|
PRIO_PGRP = 0x1
|
||||||
PRIO_PROCESS = 0x0
|
PRIO_PROCESS = 0x0
|
||||||
PRIO_USER = 0x2
|
PRIO_USER = 0x2
|
||||||
|
@ -1564,6 +1618,7 @@ const (
|
||||||
RTM_DELACTION = 0x31
|
RTM_DELACTION = 0x31
|
||||||
RTM_DELADDR = 0x15
|
RTM_DELADDR = 0x15
|
||||||
RTM_DELADDRLABEL = 0x49
|
RTM_DELADDRLABEL = 0x49
|
||||||
|
RTM_DELCHAIN = 0x65
|
||||||
RTM_DELLINK = 0x11
|
RTM_DELLINK = 0x11
|
||||||
RTM_DELMDB = 0x55
|
RTM_DELMDB = 0x55
|
||||||
RTM_DELNEIGH = 0x1d
|
RTM_DELNEIGH = 0x1d
|
||||||
|
@ -1584,6 +1639,7 @@ const (
|
||||||
RTM_GETADDR = 0x16
|
RTM_GETADDR = 0x16
|
||||||
RTM_GETADDRLABEL = 0x4a
|
RTM_GETADDRLABEL = 0x4a
|
||||||
RTM_GETANYCAST = 0x3e
|
RTM_GETANYCAST = 0x3e
|
||||||
|
RTM_GETCHAIN = 0x66
|
||||||
RTM_GETDCB = 0x4e
|
RTM_GETDCB = 0x4e
|
||||||
RTM_GETLINK = 0x12
|
RTM_GETLINK = 0x12
|
||||||
RTM_GETMDB = 0x56
|
RTM_GETMDB = 0x56
|
||||||
|
@ -1598,11 +1654,12 @@ const (
|
||||||
RTM_GETSTATS = 0x5e
|
RTM_GETSTATS = 0x5e
|
||||||
RTM_GETTCLASS = 0x2a
|
RTM_GETTCLASS = 0x2a
|
||||||
RTM_GETTFILTER = 0x2e
|
RTM_GETTFILTER = 0x2e
|
||||||
RTM_MAX = 0x63
|
RTM_MAX = 0x67
|
||||||
RTM_NEWACTION = 0x30
|
RTM_NEWACTION = 0x30
|
||||||
RTM_NEWADDR = 0x14
|
RTM_NEWADDR = 0x14
|
||||||
RTM_NEWADDRLABEL = 0x48
|
RTM_NEWADDRLABEL = 0x48
|
||||||
RTM_NEWCACHEREPORT = 0x60
|
RTM_NEWCACHEREPORT = 0x60
|
||||||
|
RTM_NEWCHAIN = 0x64
|
||||||
RTM_NEWLINK = 0x10
|
RTM_NEWLINK = 0x10
|
||||||
RTM_NEWMDB = 0x54
|
RTM_NEWMDB = 0x54
|
||||||
RTM_NEWNDUSEROPT = 0x44
|
RTM_NEWNDUSEROPT = 0x44
|
||||||
|
@ -1617,8 +1674,8 @@ const (
|
||||||
RTM_NEWSTATS = 0x5c
|
RTM_NEWSTATS = 0x5c
|
||||||
RTM_NEWTCLASS = 0x28
|
RTM_NEWTCLASS = 0x28
|
||||||
RTM_NEWTFILTER = 0x2c
|
RTM_NEWTFILTER = 0x2c
|
||||||
RTM_NR_FAMILIES = 0x15
|
RTM_NR_FAMILIES = 0x16
|
||||||
RTM_NR_MSGTYPES = 0x54
|
RTM_NR_MSGTYPES = 0x58
|
||||||
RTM_SETDCB = 0x4f
|
RTM_SETDCB = 0x4f
|
||||||
RTM_SETLINK = 0x13
|
RTM_SETLINK = 0x13
|
||||||
RTM_SETNEIGHTBL = 0x43
|
RTM_SETNEIGHTBL = 0x43
|
||||||
|
@ -1667,7 +1724,9 @@ const (
|
||||||
SCM_TIMESTAMPING_OPT_STATS = 0x36
|
SCM_TIMESTAMPING_OPT_STATS = 0x36
|
||||||
SCM_TIMESTAMPING_PKTINFO = 0x3a
|
SCM_TIMESTAMPING_PKTINFO = 0x3a
|
||||||
SCM_TIMESTAMPNS = 0x23
|
SCM_TIMESTAMPNS = 0x23
|
||||||
|
SCM_TXTIME = 0x3d
|
||||||
SCM_WIFI_STATUS = 0x29
|
SCM_WIFI_STATUS = 0x29
|
||||||
|
SC_LOG_FLUSH = 0x100000
|
||||||
SECCOMP_MODE_DISABLED = 0x0
|
SECCOMP_MODE_DISABLED = 0x0
|
||||||
SECCOMP_MODE_FILTER = 0x2
|
SECCOMP_MODE_FILTER = 0x2
|
||||||
SECCOMP_MODE_STRICT = 0x1
|
SECCOMP_MODE_STRICT = 0x1
|
||||||
|
@ -1723,6 +1782,9 @@ const (
|
||||||
SIOCGMIIPHY = 0x8947
|
SIOCGMIIPHY = 0x8947
|
||||||
SIOCGMIIREG = 0x8948
|
SIOCGMIIREG = 0x8948
|
||||||
SIOCGPGRP = 0x40047309
|
SIOCGPGRP = 0x40047309
|
||||||
|
SIOCGPPPCSTATS = 0x89f2
|
||||||
|
SIOCGPPPSTATS = 0x89f0
|
||||||
|
SIOCGPPPVER = 0x89f1
|
||||||
SIOCGRARP = 0x8961
|
SIOCGRARP = 0x8961
|
||||||
SIOCGSKNS = 0x894c
|
SIOCGSKNS = 0x894c
|
||||||
SIOCGSTAMP = 0x8906
|
SIOCGSTAMP = 0x8906
|
||||||
|
@ -1872,6 +1934,7 @@ const (
|
||||||
SO_TIMESTAMP = 0x1d
|
SO_TIMESTAMP = 0x1d
|
||||||
SO_TIMESTAMPING = 0x25
|
SO_TIMESTAMPING = 0x25
|
||||||
SO_TIMESTAMPNS = 0x23
|
SO_TIMESTAMPNS = 0x23
|
||||||
|
SO_TXTIME = 0x3d
|
||||||
SO_TYPE = 0x1008
|
SO_TYPE = 0x1008
|
||||||
SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2
|
SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2
|
||||||
SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1
|
SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1
|
||||||
|
|
|
@ -878,6 +878,26 @@ const (
|
||||||
IXOFF = 0x1000
|
IXOFF = 0x1000
|
||||||
IXON = 0x400
|
IXON = 0x400
|
||||||
JFFS2_SUPER_MAGIC = 0x72b6
|
JFFS2_SUPER_MAGIC = 0x72b6
|
||||||
|
KEXEC_ARCH_386 = 0x30000
|
||||||
|
KEXEC_ARCH_68K = 0x40000
|
||||||
|
KEXEC_ARCH_AARCH64 = 0xb70000
|
||||||
|
KEXEC_ARCH_ARM = 0x280000
|
||||||
|
KEXEC_ARCH_DEFAULT = 0x0
|
||||||
|
KEXEC_ARCH_IA_64 = 0x320000
|
||||||
|
KEXEC_ARCH_MASK = 0xffff0000
|
||||||
|
KEXEC_ARCH_MIPS = 0x80000
|
||||||
|
KEXEC_ARCH_MIPS_LE = 0xa0000
|
||||||
|
KEXEC_ARCH_PPC = 0x140000
|
||||||
|
KEXEC_ARCH_PPC64 = 0x150000
|
||||||
|
KEXEC_ARCH_S390 = 0x160000
|
||||||
|
KEXEC_ARCH_SH = 0x2a0000
|
||||||
|
KEXEC_ARCH_X86_64 = 0x3e0000
|
||||||
|
KEXEC_FILE_NO_INITRAMFS = 0x4
|
||||||
|
KEXEC_FILE_ON_CRASH = 0x2
|
||||||
|
KEXEC_FILE_UNLOAD = 0x1
|
||||||
|
KEXEC_ON_CRASH = 0x1
|
||||||
|
KEXEC_PRESERVE_CONTEXT = 0x2
|
||||||
|
KEXEC_SEGMENT_MAX = 0x10
|
||||||
KEYCTL_ASSUME_AUTHORITY = 0x10
|
KEYCTL_ASSUME_AUTHORITY = 0x10
|
||||||
KEYCTL_CHOWN = 0x4
|
KEYCTL_CHOWN = 0x4
|
||||||
KEYCTL_CLEAR = 0x7
|
KEYCTL_CLEAR = 0x7
|
||||||
|
@ -986,7 +1006,9 @@ const (
|
||||||
MFD_HUGE_256MB = 0x70000000
|
MFD_HUGE_256MB = 0x70000000
|
||||||
MFD_HUGE_2GB = 0x7c000000
|
MFD_HUGE_2GB = 0x7c000000
|
||||||
MFD_HUGE_2MB = 0x54000000
|
MFD_HUGE_2MB = 0x54000000
|
||||||
|
MFD_HUGE_32MB = 0x64000000
|
||||||
MFD_HUGE_512KB = 0x4c000000
|
MFD_HUGE_512KB = 0x4c000000
|
||||||
|
MFD_HUGE_512MB = 0x74000000
|
||||||
MFD_HUGE_64KB = 0x40000000
|
MFD_HUGE_64KB = 0x40000000
|
||||||
MFD_HUGE_8MB = 0x5c000000
|
MFD_HUGE_8MB = 0x5c000000
|
||||||
MFD_HUGE_MASK = 0x3f
|
MFD_HUGE_MASK = 0x3f
|
||||||
|
@ -999,6 +1021,8 @@ const (
|
||||||
MNT_DETACH = 0x2
|
MNT_DETACH = 0x2
|
||||||
MNT_EXPIRE = 0x4
|
MNT_EXPIRE = 0x4
|
||||||
MNT_FORCE = 0x1
|
MNT_FORCE = 0x1
|
||||||
|
MODULE_INIT_IGNORE_MODVERSIONS = 0x1
|
||||||
|
MODULE_INIT_IGNORE_VERMAGIC = 0x2
|
||||||
MSDOS_SUPER_MAGIC = 0x4d44
|
MSDOS_SUPER_MAGIC = 0x4d44
|
||||||
MSG_BATCH = 0x40000
|
MSG_BATCH = 0x40000
|
||||||
MSG_CMSG_CLOEXEC = 0x40000000
|
MSG_CMSG_CLOEXEC = 0x40000000
|
||||||
|
@ -1267,6 +1291,36 @@ const (
|
||||||
PERF_EVENT_IOC_SET_FILTER = 0x80082406
|
PERF_EVENT_IOC_SET_FILTER = 0x80082406
|
||||||
PERF_EVENT_IOC_SET_OUTPUT = 0x20002405
|
PERF_EVENT_IOC_SET_OUTPUT = 0x20002405
|
||||||
PIPEFS_MAGIC = 0x50495045
|
PIPEFS_MAGIC = 0x50495045
|
||||||
|
PPPIOCATTACH = 0x8004743d
|
||||||
|
PPPIOCATTCHAN = 0x80047438
|
||||||
|
PPPIOCCONNECT = 0x8004743a
|
||||||
|
PPPIOCDETACH = 0x8004743c
|
||||||
|
PPPIOCDISCONN = 0x20007439
|
||||||
|
PPPIOCGASYNCMAP = 0x40047458
|
||||||
|
PPPIOCGCHAN = 0x40047437
|
||||||
|
PPPIOCGDEBUG = 0x40047441
|
||||||
|
PPPIOCGFLAGS = 0x4004745a
|
||||||
|
PPPIOCGIDLE = 0x4010743f
|
||||||
|
PPPIOCGL2TPSTATS = 0x40487436
|
||||||
|
PPPIOCGMRU = 0x40047453
|
||||||
|
PPPIOCGNPMODE = 0xc008744c
|
||||||
|
PPPIOCGRASYNCMAP = 0x40047455
|
||||||
|
PPPIOCGUNIT = 0x40047456
|
||||||
|
PPPIOCGXASYNCMAP = 0x40207450
|
||||||
|
PPPIOCNEWUNIT = 0xc004743e
|
||||||
|
PPPIOCSACTIVE = 0x80107446
|
||||||
|
PPPIOCSASYNCMAP = 0x80047457
|
||||||
|
PPPIOCSCOMPRESS = 0x8010744d
|
||||||
|
PPPIOCSDEBUG = 0x80047440
|
||||||
|
PPPIOCSFLAGS = 0x80047459
|
||||||
|
PPPIOCSMAXCID = 0x80047451
|
||||||
|
PPPIOCSMRRU = 0x8004743b
|
||||||
|
PPPIOCSMRU = 0x80047452
|
||||||
|
PPPIOCSNPMODE = 0x8008744b
|
||||||
|
PPPIOCSPASS = 0x80107447
|
||||||
|
PPPIOCSRASYNCMAP = 0x80047454
|
||||||
|
PPPIOCSXASYNCMAP = 0x8020744f
|
||||||
|
PPPIOCXFERUNIT = 0x2000744e
|
||||||
PRIO_PGRP = 0x1
|
PRIO_PGRP = 0x1
|
||||||
PRIO_PROCESS = 0x0
|
PRIO_PROCESS = 0x0
|
||||||
PRIO_USER = 0x2
|
PRIO_USER = 0x2
|
||||||
|
@ -1564,6 +1618,7 @@ const (
|
||||||
RTM_DELACTION = 0x31
|
RTM_DELACTION = 0x31
|
||||||
RTM_DELADDR = 0x15
|
RTM_DELADDR = 0x15
|
||||||
RTM_DELADDRLABEL = 0x49
|
RTM_DELADDRLABEL = 0x49
|
||||||
|
RTM_DELCHAIN = 0x65
|
||||||
RTM_DELLINK = 0x11
|
RTM_DELLINK = 0x11
|
||||||
RTM_DELMDB = 0x55
|
RTM_DELMDB = 0x55
|
||||||
RTM_DELNEIGH = 0x1d
|
RTM_DELNEIGH = 0x1d
|
||||||
|
@ -1584,6 +1639,7 @@ const (
|
||||||
RTM_GETADDR = 0x16
|
RTM_GETADDR = 0x16
|
||||||
RTM_GETADDRLABEL = 0x4a
|
RTM_GETADDRLABEL = 0x4a
|
||||||
RTM_GETANYCAST = 0x3e
|
RTM_GETANYCAST = 0x3e
|
||||||
|
RTM_GETCHAIN = 0x66
|
||||||
RTM_GETDCB = 0x4e
|
RTM_GETDCB = 0x4e
|
||||||
RTM_GETLINK = 0x12
|
RTM_GETLINK = 0x12
|
||||||
RTM_GETMDB = 0x56
|
RTM_GETMDB = 0x56
|
||||||
|
@ -1598,11 +1654,12 @@ const (
|
||||||
RTM_GETSTATS = 0x5e
|
RTM_GETSTATS = 0x5e
|
||||||
RTM_GETTCLASS = 0x2a
|
RTM_GETTCLASS = 0x2a
|
||||||
RTM_GETTFILTER = 0x2e
|
RTM_GETTFILTER = 0x2e
|
||||||
RTM_MAX = 0x63
|
RTM_MAX = 0x67
|
||||||
RTM_NEWACTION = 0x30
|
RTM_NEWACTION = 0x30
|
||||||
RTM_NEWADDR = 0x14
|
RTM_NEWADDR = 0x14
|
||||||
RTM_NEWADDRLABEL = 0x48
|
RTM_NEWADDRLABEL = 0x48
|
||||||
RTM_NEWCACHEREPORT = 0x60
|
RTM_NEWCACHEREPORT = 0x60
|
||||||
|
RTM_NEWCHAIN = 0x64
|
||||||
RTM_NEWLINK = 0x10
|
RTM_NEWLINK = 0x10
|
||||||
RTM_NEWMDB = 0x54
|
RTM_NEWMDB = 0x54
|
||||||
RTM_NEWNDUSEROPT = 0x44
|
RTM_NEWNDUSEROPT = 0x44
|
||||||
|
@ -1617,8 +1674,8 @@ const (
|
||||||
RTM_NEWSTATS = 0x5c
|
RTM_NEWSTATS = 0x5c
|
||||||
RTM_NEWTCLASS = 0x28
|
RTM_NEWTCLASS = 0x28
|
||||||
RTM_NEWTFILTER = 0x2c
|
RTM_NEWTFILTER = 0x2c
|
||||||
RTM_NR_FAMILIES = 0x15
|
RTM_NR_FAMILIES = 0x16
|
||||||
RTM_NR_MSGTYPES = 0x54
|
RTM_NR_MSGTYPES = 0x58
|
||||||
RTM_SETDCB = 0x4f
|
RTM_SETDCB = 0x4f
|
||||||
RTM_SETLINK = 0x13
|
RTM_SETLINK = 0x13
|
||||||
RTM_SETNEIGHTBL = 0x43
|
RTM_SETNEIGHTBL = 0x43
|
||||||
|
@ -1667,7 +1724,9 @@ const (
|
||||||
SCM_TIMESTAMPING_OPT_STATS = 0x36
|
SCM_TIMESTAMPING_OPT_STATS = 0x36
|
||||||
SCM_TIMESTAMPING_PKTINFO = 0x3a
|
SCM_TIMESTAMPING_PKTINFO = 0x3a
|
||||||
SCM_TIMESTAMPNS = 0x23
|
SCM_TIMESTAMPNS = 0x23
|
||||||
|
SCM_TXTIME = 0x3d
|
||||||
SCM_WIFI_STATUS = 0x29
|
SCM_WIFI_STATUS = 0x29
|
||||||
|
SC_LOG_FLUSH = 0x100000
|
||||||
SECCOMP_MODE_DISABLED = 0x0
|
SECCOMP_MODE_DISABLED = 0x0
|
||||||
SECCOMP_MODE_FILTER = 0x2
|
SECCOMP_MODE_FILTER = 0x2
|
||||||
SECCOMP_MODE_STRICT = 0x1
|
SECCOMP_MODE_STRICT = 0x1
|
||||||
|
@ -1723,6 +1782,9 @@ const (
|
||||||
SIOCGMIIPHY = 0x8947
|
SIOCGMIIPHY = 0x8947
|
||||||
SIOCGMIIREG = 0x8948
|
SIOCGMIIREG = 0x8948
|
||||||
SIOCGPGRP = 0x40047309
|
SIOCGPGRP = 0x40047309
|
||||||
|
SIOCGPPPCSTATS = 0x89f2
|
||||||
|
SIOCGPPPSTATS = 0x89f0
|
||||||
|
SIOCGPPPVER = 0x89f1
|
||||||
SIOCGRARP = 0x8961
|
SIOCGRARP = 0x8961
|
||||||
SIOCGSKNS = 0x894c
|
SIOCGSKNS = 0x894c
|
||||||
SIOCGSTAMP = 0x8906
|
SIOCGSTAMP = 0x8906
|
||||||
|
@ -1872,6 +1934,7 @@ const (
|
||||||
SO_TIMESTAMP = 0x1d
|
SO_TIMESTAMP = 0x1d
|
||||||
SO_TIMESTAMPING = 0x25
|
SO_TIMESTAMPING = 0x25
|
||||||
SO_TIMESTAMPNS = 0x23
|
SO_TIMESTAMPNS = 0x23
|
||||||
|
SO_TXTIME = 0x3d
|
||||||
SO_TYPE = 0x1008
|
SO_TYPE = 0x1008
|
||||||
SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2
|
SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2
|
||||||
SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1
|
SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1
|
||||||
|
|
|
@ -878,6 +878,26 @@ const (
|
||||||
IXOFF = 0x1000
|
IXOFF = 0x1000
|
||||||
IXON = 0x400
|
IXON = 0x400
|
||||||
JFFS2_SUPER_MAGIC = 0x72b6
|
JFFS2_SUPER_MAGIC = 0x72b6
|
||||||
|
KEXEC_ARCH_386 = 0x30000
|
||||||
|
KEXEC_ARCH_68K = 0x40000
|
||||||
|
KEXEC_ARCH_AARCH64 = 0xb70000
|
||||||
|
KEXEC_ARCH_ARM = 0x280000
|
||||||
|
KEXEC_ARCH_DEFAULT = 0x0
|
||||||
|
KEXEC_ARCH_IA_64 = 0x320000
|
||||||
|
KEXEC_ARCH_MASK = 0xffff0000
|
||||||
|
KEXEC_ARCH_MIPS = 0x80000
|
||||||
|
KEXEC_ARCH_MIPS_LE = 0xa0000
|
||||||
|
KEXEC_ARCH_PPC = 0x140000
|
||||||
|
KEXEC_ARCH_PPC64 = 0x150000
|
||||||
|
KEXEC_ARCH_S390 = 0x160000
|
||||||
|
KEXEC_ARCH_SH = 0x2a0000
|
||||||
|
KEXEC_ARCH_X86_64 = 0x3e0000
|
||||||
|
KEXEC_FILE_NO_INITRAMFS = 0x4
|
||||||
|
KEXEC_FILE_ON_CRASH = 0x2
|
||||||
|
KEXEC_FILE_UNLOAD = 0x1
|
||||||
|
KEXEC_ON_CRASH = 0x1
|
||||||
|
KEXEC_PRESERVE_CONTEXT = 0x2
|
||||||
|
KEXEC_SEGMENT_MAX = 0x10
|
||||||
KEYCTL_ASSUME_AUTHORITY = 0x10
|
KEYCTL_ASSUME_AUTHORITY = 0x10
|
||||||
KEYCTL_CHOWN = 0x4
|
KEYCTL_CHOWN = 0x4
|
||||||
KEYCTL_CLEAR = 0x7
|
KEYCTL_CLEAR = 0x7
|
||||||
|
@ -986,7 +1006,9 @@ const (
|
||||||
MFD_HUGE_256MB = 0x70000000
|
MFD_HUGE_256MB = 0x70000000
|
||||||
MFD_HUGE_2GB = 0x7c000000
|
MFD_HUGE_2GB = 0x7c000000
|
||||||
MFD_HUGE_2MB = 0x54000000
|
MFD_HUGE_2MB = 0x54000000
|
||||||
|
MFD_HUGE_32MB = 0x64000000
|
||||||
MFD_HUGE_512KB = 0x4c000000
|
MFD_HUGE_512KB = 0x4c000000
|
||||||
|
MFD_HUGE_512MB = 0x74000000
|
||||||
MFD_HUGE_64KB = 0x40000000
|
MFD_HUGE_64KB = 0x40000000
|
||||||
MFD_HUGE_8MB = 0x5c000000
|
MFD_HUGE_8MB = 0x5c000000
|
||||||
MFD_HUGE_MASK = 0x3f
|
MFD_HUGE_MASK = 0x3f
|
||||||
|
@ -999,6 +1021,8 @@ const (
|
||||||
MNT_DETACH = 0x2
|
MNT_DETACH = 0x2
|
||||||
MNT_EXPIRE = 0x4
|
MNT_EXPIRE = 0x4
|
||||||
MNT_FORCE = 0x1
|
MNT_FORCE = 0x1
|
||||||
|
MODULE_INIT_IGNORE_MODVERSIONS = 0x1
|
||||||
|
MODULE_INIT_IGNORE_VERMAGIC = 0x2
|
||||||
MSDOS_SUPER_MAGIC = 0x4d44
|
MSDOS_SUPER_MAGIC = 0x4d44
|
||||||
MSG_BATCH = 0x40000
|
MSG_BATCH = 0x40000
|
||||||
MSG_CMSG_CLOEXEC = 0x40000000
|
MSG_CMSG_CLOEXEC = 0x40000000
|
||||||
|
@ -1267,6 +1291,36 @@ const (
|
||||||
PERF_EVENT_IOC_SET_FILTER = 0x80042406
|
PERF_EVENT_IOC_SET_FILTER = 0x80042406
|
||||||
PERF_EVENT_IOC_SET_OUTPUT = 0x20002405
|
PERF_EVENT_IOC_SET_OUTPUT = 0x20002405
|
||||||
PIPEFS_MAGIC = 0x50495045
|
PIPEFS_MAGIC = 0x50495045
|
||||||
|
PPPIOCATTACH = 0x8004743d
|
||||||
|
PPPIOCATTCHAN = 0x80047438
|
||||||
|
PPPIOCCONNECT = 0x8004743a
|
||||||
|
PPPIOCDETACH = 0x8004743c
|
||||||
|
PPPIOCDISCONN = 0x20007439
|
||||||
|
PPPIOCGASYNCMAP = 0x40047458
|
||||||
|
PPPIOCGCHAN = 0x40047437
|
||||||
|
PPPIOCGDEBUG = 0x40047441
|
||||||
|
PPPIOCGFLAGS = 0x4004745a
|
||||||
|
PPPIOCGIDLE = 0x4008743f
|
||||||
|
PPPIOCGL2TPSTATS = 0x40487436
|
||||||
|
PPPIOCGMRU = 0x40047453
|
||||||
|
PPPIOCGNPMODE = 0xc008744c
|
||||||
|
PPPIOCGRASYNCMAP = 0x40047455
|
||||||
|
PPPIOCGUNIT = 0x40047456
|
||||||
|
PPPIOCGXASYNCMAP = 0x40207450
|
||||||
|
PPPIOCNEWUNIT = 0xc004743e
|
||||||
|
PPPIOCSACTIVE = 0x80087446
|
||||||
|
PPPIOCSASYNCMAP = 0x80047457
|
||||||
|
PPPIOCSCOMPRESS = 0x800c744d
|
||||||
|
PPPIOCSDEBUG = 0x80047440
|
||||||
|
PPPIOCSFLAGS = 0x80047459
|
||||||
|
PPPIOCSMAXCID = 0x80047451
|
||||||
|
PPPIOCSMRRU = 0x8004743b
|
||||||
|
PPPIOCSMRU = 0x80047452
|
||||||
|
PPPIOCSNPMODE = 0x8008744b
|
||||||
|
PPPIOCSPASS = 0x80087447
|
||||||
|
PPPIOCSRASYNCMAP = 0x80047454
|
||||||
|
PPPIOCSXASYNCMAP = 0x8020744f
|
||||||
|
PPPIOCXFERUNIT = 0x2000744e
|
||||||
PRIO_PGRP = 0x1
|
PRIO_PGRP = 0x1
|
||||||
PRIO_PROCESS = 0x0
|
PRIO_PROCESS = 0x0
|
||||||
PRIO_USER = 0x2
|
PRIO_USER = 0x2
|
||||||
|
@ -1564,6 +1618,7 @@ const (
|
||||||
RTM_DELACTION = 0x31
|
RTM_DELACTION = 0x31
|
||||||
RTM_DELADDR = 0x15
|
RTM_DELADDR = 0x15
|
||||||
RTM_DELADDRLABEL = 0x49
|
RTM_DELADDRLABEL = 0x49
|
||||||
|
RTM_DELCHAIN = 0x65
|
||||||
RTM_DELLINK = 0x11
|
RTM_DELLINK = 0x11
|
||||||
RTM_DELMDB = 0x55
|
RTM_DELMDB = 0x55
|
||||||
RTM_DELNEIGH = 0x1d
|
RTM_DELNEIGH = 0x1d
|
||||||
|
@ -1584,6 +1639,7 @@ const (
|
||||||
RTM_GETADDR = 0x16
|
RTM_GETADDR = 0x16
|
||||||
RTM_GETADDRLABEL = 0x4a
|
RTM_GETADDRLABEL = 0x4a
|
||||||
RTM_GETANYCAST = 0x3e
|
RTM_GETANYCAST = 0x3e
|
||||||
|
RTM_GETCHAIN = 0x66
|
||||||
RTM_GETDCB = 0x4e
|
RTM_GETDCB = 0x4e
|
||||||
RTM_GETLINK = 0x12
|
RTM_GETLINK = 0x12
|
||||||
RTM_GETMDB = 0x56
|
RTM_GETMDB = 0x56
|
||||||
|
@ -1598,11 +1654,12 @@ const (
|
||||||
RTM_GETSTATS = 0x5e
|
RTM_GETSTATS = 0x5e
|
||||||
RTM_GETTCLASS = 0x2a
|
RTM_GETTCLASS = 0x2a
|
||||||
RTM_GETTFILTER = 0x2e
|
RTM_GETTFILTER = 0x2e
|
||||||
RTM_MAX = 0x63
|
RTM_MAX = 0x67
|
||||||
RTM_NEWACTION = 0x30
|
RTM_NEWACTION = 0x30
|
||||||
RTM_NEWADDR = 0x14
|
RTM_NEWADDR = 0x14
|
||||||
RTM_NEWADDRLABEL = 0x48
|
RTM_NEWADDRLABEL = 0x48
|
||||||
RTM_NEWCACHEREPORT = 0x60
|
RTM_NEWCACHEREPORT = 0x60
|
||||||
|
RTM_NEWCHAIN = 0x64
|
||||||
RTM_NEWLINK = 0x10
|
RTM_NEWLINK = 0x10
|
||||||
RTM_NEWMDB = 0x54
|
RTM_NEWMDB = 0x54
|
||||||
RTM_NEWNDUSEROPT = 0x44
|
RTM_NEWNDUSEROPT = 0x44
|
||||||
|
@ -1617,8 +1674,8 @@ const (
|
||||||
RTM_NEWSTATS = 0x5c
|
RTM_NEWSTATS = 0x5c
|
||||||
RTM_NEWTCLASS = 0x28
|
RTM_NEWTCLASS = 0x28
|
||||||
RTM_NEWTFILTER = 0x2c
|
RTM_NEWTFILTER = 0x2c
|
||||||
RTM_NR_FAMILIES = 0x15
|
RTM_NR_FAMILIES = 0x16
|
||||||
RTM_NR_MSGTYPES = 0x54
|
RTM_NR_MSGTYPES = 0x58
|
||||||
RTM_SETDCB = 0x4f
|
RTM_SETDCB = 0x4f
|
||||||
RTM_SETLINK = 0x13
|
RTM_SETLINK = 0x13
|
||||||
RTM_SETNEIGHTBL = 0x43
|
RTM_SETNEIGHTBL = 0x43
|
||||||
|
@ -1667,7 +1724,9 @@ const (
|
||||||
SCM_TIMESTAMPING_OPT_STATS = 0x36
|
SCM_TIMESTAMPING_OPT_STATS = 0x36
|
||||||
SCM_TIMESTAMPING_PKTINFO = 0x3a
|
SCM_TIMESTAMPING_PKTINFO = 0x3a
|
||||||
SCM_TIMESTAMPNS = 0x23
|
SCM_TIMESTAMPNS = 0x23
|
||||||
|
SCM_TXTIME = 0x3d
|
||||||
SCM_WIFI_STATUS = 0x29
|
SCM_WIFI_STATUS = 0x29
|
||||||
|
SC_LOG_FLUSH = 0x100000
|
||||||
SECCOMP_MODE_DISABLED = 0x0
|
SECCOMP_MODE_DISABLED = 0x0
|
||||||
SECCOMP_MODE_FILTER = 0x2
|
SECCOMP_MODE_FILTER = 0x2
|
||||||
SECCOMP_MODE_STRICT = 0x1
|
SECCOMP_MODE_STRICT = 0x1
|
||||||
|
@ -1723,6 +1782,9 @@ const (
|
||||||
SIOCGMIIPHY = 0x8947
|
SIOCGMIIPHY = 0x8947
|
||||||
SIOCGMIIREG = 0x8948
|
SIOCGMIIREG = 0x8948
|
||||||
SIOCGPGRP = 0x40047309
|
SIOCGPGRP = 0x40047309
|
||||||
|
SIOCGPPPCSTATS = 0x89f2
|
||||||
|
SIOCGPPPSTATS = 0x89f0
|
||||||
|
SIOCGPPPVER = 0x89f1
|
||||||
SIOCGRARP = 0x8961
|
SIOCGRARP = 0x8961
|
||||||
SIOCGSKNS = 0x894c
|
SIOCGSKNS = 0x894c
|
||||||
SIOCGSTAMP = 0x8906
|
SIOCGSTAMP = 0x8906
|
||||||
|
@ -1872,6 +1934,7 @@ const (
|
||||||
SO_TIMESTAMP = 0x1d
|
SO_TIMESTAMP = 0x1d
|
||||||
SO_TIMESTAMPING = 0x25
|
SO_TIMESTAMPING = 0x25
|
||||||
SO_TIMESTAMPNS = 0x23
|
SO_TIMESTAMPNS = 0x23
|
||||||
|
SO_TXTIME = 0x3d
|
||||||
SO_TYPE = 0x1008
|
SO_TYPE = 0x1008
|
||||||
SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2
|
SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2
|
||||||
SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1
|
SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1
|
||||||
|
|
|
@ -878,6 +878,26 @@ const (
|
||||||
IXOFF = 0x400
|
IXOFF = 0x400
|
||||||
IXON = 0x200
|
IXON = 0x200
|
||||||
JFFS2_SUPER_MAGIC = 0x72b6
|
JFFS2_SUPER_MAGIC = 0x72b6
|
||||||
|
KEXEC_ARCH_386 = 0x30000
|
||||||
|
KEXEC_ARCH_68K = 0x40000
|
||||||
|
KEXEC_ARCH_AARCH64 = 0xb70000
|
||||||
|
KEXEC_ARCH_ARM = 0x280000
|
||||||
|
KEXEC_ARCH_DEFAULT = 0x0
|
||||||
|
KEXEC_ARCH_IA_64 = 0x320000
|
||||||
|
KEXEC_ARCH_MASK = 0xffff0000
|
||||||
|
KEXEC_ARCH_MIPS = 0x80000
|
||||||
|
KEXEC_ARCH_MIPS_LE = 0xa0000
|
||||||
|
KEXEC_ARCH_PPC = 0x140000
|
||||||
|
KEXEC_ARCH_PPC64 = 0x150000
|
||||||
|
KEXEC_ARCH_S390 = 0x160000
|
||||||
|
KEXEC_ARCH_SH = 0x2a0000
|
||||||
|
KEXEC_ARCH_X86_64 = 0x3e0000
|
||||||
|
KEXEC_FILE_NO_INITRAMFS = 0x4
|
||||||
|
KEXEC_FILE_ON_CRASH = 0x2
|
||||||
|
KEXEC_FILE_UNLOAD = 0x1
|
||||||
|
KEXEC_ON_CRASH = 0x1
|
||||||
|
KEXEC_PRESERVE_CONTEXT = 0x2
|
||||||
|
KEXEC_SEGMENT_MAX = 0x10
|
||||||
KEYCTL_ASSUME_AUTHORITY = 0x10
|
KEYCTL_ASSUME_AUTHORITY = 0x10
|
||||||
KEYCTL_CHOWN = 0x4
|
KEYCTL_CHOWN = 0x4
|
||||||
KEYCTL_CLEAR = 0x7
|
KEYCTL_CLEAR = 0x7
|
||||||
|
@ -985,7 +1005,9 @@ const (
|
||||||
MFD_HUGE_256MB = 0x70000000
|
MFD_HUGE_256MB = 0x70000000
|
||||||
MFD_HUGE_2GB = 0x7c000000
|
MFD_HUGE_2GB = 0x7c000000
|
||||||
MFD_HUGE_2MB = 0x54000000
|
MFD_HUGE_2MB = 0x54000000
|
||||||
|
MFD_HUGE_32MB = 0x64000000
|
||||||
MFD_HUGE_512KB = 0x4c000000
|
MFD_HUGE_512KB = 0x4c000000
|
||||||
|
MFD_HUGE_512MB = 0x74000000
|
||||||
MFD_HUGE_64KB = 0x40000000
|
MFD_HUGE_64KB = 0x40000000
|
||||||
MFD_HUGE_8MB = 0x5c000000
|
MFD_HUGE_8MB = 0x5c000000
|
||||||
MFD_HUGE_MASK = 0x3f
|
MFD_HUGE_MASK = 0x3f
|
||||||
|
@ -998,6 +1020,8 @@ const (
|
||||||
MNT_DETACH = 0x2
|
MNT_DETACH = 0x2
|
||||||
MNT_EXPIRE = 0x4
|
MNT_EXPIRE = 0x4
|
||||||
MNT_FORCE = 0x1
|
MNT_FORCE = 0x1
|
||||||
|
MODULE_INIT_IGNORE_MODVERSIONS = 0x1
|
||||||
|
MODULE_INIT_IGNORE_VERMAGIC = 0x2
|
||||||
MSDOS_SUPER_MAGIC = 0x4d44
|
MSDOS_SUPER_MAGIC = 0x4d44
|
||||||
MSG_BATCH = 0x40000
|
MSG_BATCH = 0x40000
|
||||||
MSG_CMSG_CLOEXEC = 0x40000000
|
MSG_CMSG_CLOEXEC = 0x40000000
|
||||||
|
@ -1268,6 +1292,36 @@ const (
|
||||||
PERF_EVENT_IOC_SET_FILTER = 0x80082406
|
PERF_EVENT_IOC_SET_FILTER = 0x80082406
|
||||||
PERF_EVENT_IOC_SET_OUTPUT = 0x20002405
|
PERF_EVENT_IOC_SET_OUTPUT = 0x20002405
|
||||||
PIPEFS_MAGIC = 0x50495045
|
PIPEFS_MAGIC = 0x50495045
|
||||||
|
PPPIOCATTACH = 0x8004743d
|
||||||
|
PPPIOCATTCHAN = 0x80047438
|
||||||
|
PPPIOCCONNECT = 0x8004743a
|
||||||
|
PPPIOCDETACH = 0x8004743c
|
||||||
|
PPPIOCDISCONN = 0x20007439
|
||||||
|
PPPIOCGASYNCMAP = 0x40047458
|
||||||
|
PPPIOCGCHAN = 0x40047437
|
||||||
|
PPPIOCGDEBUG = 0x40047441
|
||||||
|
PPPIOCGFLAGS = 0x4004745a
|
||||||
|
PPPIOCGIDLE = 0x4010743f
|
||||||
|
PPPIOCGL2TPSTATS = 0x40487436
|
||||||
|
PPPIOCGMRU = 0x40047453
|
||||||
|
PPPIOCGNPMODE = 0xc008744c
|
||||||
|
PPPIOCGRASYNCMAP = 0x40047455
|
||||||
|
PPPIOCGUNIT = 0x40047456
|
||||||
|
PPPIOCGXASYNCMAP = 0x40207450
|
||||||
|
PPPIOCNEWUNIT = 0xc004743e
|
||||||
|
PPPIOCSACTIVE = 0x80107446
|
||||||
|
PPPIOCSASYNCMAP = 0x80047457
|
||||||
|
PPPIOCSCOMPRESS = 0x8010744d
|
||||||
|
PPPIOCSDEBUG = 0x80047440
|
||||||
|
PPPIOCSFLAGS = 0x80047459
|
||||||
|
PPPIOCSMAXCID = 0x80047451
|
||||||
|
PPPIOCSMRRU = 0x8004743b
|
||||||
|
PPPIOCSMRU = 0x80047452
|
||||||
|
PPPIOCSNPMODE = 0x8008744b
|
||||||
|
PPPIOCSPASS = 0x80107447
|
||||||
|
PPPIOCSRASYNCMAP = 0x80047454
|
||||||
|
PPPIOCSXASYNCMAP = 0x8020744f
|
||||||
|
PPPIOCXFERUNIT = 0x2000744e
|
||||||
PRIO_PGRP = 0x1
|
PRIO_PGRP = 0x1
|
||||||
PRIO_PROCESS = 0x0
|
PRIO_PROCESS = 0x0
|
||||||
PRIO_USER = 0x2
|
PRIO_USER = 0x2
|
||||||
|
@ -1620,6 +1674,7 @@ const (
|
||||||
RTM_DELACTION = 0x31
|
RTM_DELACTION = 0x31
|
||||||
RTM_DELADDR = 0x15
|
RTM_DELADDR = 0x15
|
||||||
RTM_DELADDRLABEL = 0x49
|
RTM_DELADDRLABEL = 0x49
|
||||||
|
RTM_DELCHAIN = 0x65
|
||||||
RTM_DELLINK = 0x11
|
RTM_DELLINK = 0x11
|
||||||
RTM_DELMDB = 0x55
|
RTM_DELMDB = 0x55
|
||||||
RTM_DELNEIGH = 0x1d
|
RTM_DELNEIGH = 0x1d
|
||||||
|
@ -1640,6 +1695,7 @@ const (
|
||||||
RTM_GETADDR = 0x16
|
RTM_GETADDR = 0x16
|
||||||
RTM_GETADDRLABEL = 0x4a
|
RTM_GETADDRLABEL = 0x4a
|
||||||
RTM_GETANYCAST = 0x3e
|
RTM_GETANYCAST = 0x3e
|
||||||
|
RTM_GETCHAIN = 0x66
|
||||||
RTM_GETDCB = 0x4e
|
RTM_GETDCB = 0x4e
|
||||||
RTM_GETLINK = 0x12
|
RTM_GETLINK = 0x12
|
||||||
RTM_GETMDB = 0x56
|
RTM_GETMDB = 0x56
|
||||||
|
@ -1654,11 +1710,12 @@ const (
|
||||||
RTM_GETSTATS = 0x5e
|
RTM_GETSTATS = 0x5e
|
||||||
RTM_GETTCLASS = 0x2a
|
RTM_GETTCLASS = 0x2a
|
||||||
RTM_GETTFILTER = 0x2e
|
RTM_GETTFILTER = 0x2e
|
||||||
RTM_MAX = 0x63
|
RTM_MAX = 0x67
|
||||||
RTM_NEWACTION = 0x30
|
RTM_NEWACTION = 0x30
|
||||||
RTM_NEWADDR = 0x14
|
RTM_NEWADDR = 0x14
|
||||||
RTM_NEWADDRLABEL = 0x48
|
RTM_NEWADDRLABEL = 0x48
|
||||||
RTM_NEWCACHEREPORT = 0x60
|
RTM_NEWCACHEREPORT = 0x60
|
||||||
|
RTM_NEWCHAIN = 0x64
|
||||||
RTM_NEWLINK = 0x10
|
RTM_NEWLINK = 0x10
|
||||||
RTM_NEWMDB = 0x54
|
RTM_NEWMDB = 0x54
|
||||||
RTM_NEWNDUSEROPT = 0x44
|
RTM_NEWNDUSEROPT = 0x44
|
||||||
|
@ -1673,8 +1730,8 @@ const (
|
||||||
RTM_NEWSTATS = 0x5c
|
RTM_NEWSTATS = 0x5c
|
||||||
RTM_NEWTCLASS = 0x28
|
RTM_NEWTCLASS = 0x28
|
||||||
RTM_NEWTFILTER = 0x2c
|
RTM_NEWTFILTER = 0x2c
|
||||||
RTM_NR_FAMILIES = 0x15
|
RTM_NR_FAMILIES = 0x16
|
||||||
RTM_NR_MSGTYPES = 0x54
|
RTM_NR_MSGTYPES = 0x58
|
||||||
RTM_SETDCB = 0x4f
|
RTM_SETDCB = 0x4f
|
||||||
RTM_SETLINK = 0x13
|
RTM_SETLINK = 0x13
|
||||||
RTM_SETNEIGHTBL = 0x43
|
RTM_SETNEIGHTBL = 0x43
|
||||||
|
@ -1723,7 +1780,9 @@ const (
|
||||||
SCM_TIMESTAMPING_OPT_STATS = 0x36
|
SCM_TIMESTAMPING_OPT_STATS = 0x36
|
||||||
SCM_TIMESTAMPING_PKTINFO = 0x3a
|
SCM_TIMESTAMPING_PKTINFO = 0x3a
|
||||||
SCM_TIMESTAMPNS = 0x23
|
SCM_TIMESTAMPNS = 0x23
|
||||||
|
SCM_TXTIME = 0x3d
|
||||||
SCM_WIFI_STATUS = 0x29
|
SCM_WIFI_STATUS = 0x29
|
||||||
|
SC_LOG_FLUSH = 0x100000
|
||||||
SECCOMP_MODE_DISABLED = 0x0
|
SECCOMP_MODE_DISABLED = 0x0
|
||||||
SECCOMP_MODE_FILTER = 0x2
|
SECCOMP_MODE_FILTER = 0x2
|
||||||
SECCOMP_MODE_STRICT = 0x1
|
SECCOMP_MODE_STRICT = 0x1
|
||||||
|
@ -1779,6 +1838,9 @@ const (
|
||||||
SIOCGMIIPHY = 0x8947
|
SIOCGMIIPHY = 0x8947
|
||||||
SIOCGMIIREG = 0x8948
|
SIOCGMIIREG = 0x8948
|
||||||
SIOCGPGRP = 0x8904
|
SIOCGPGRP = 0x8904
|
||||||
|
SIOCGPPPCSTATS = 0x89f2
|
||||||
|
SIOCGPPPSTATS = 0x89f0
|
||||||
|
SIOCGPPPVER = 0x89f1
|
||||||
SIOCGRARP = 0x8961
|
SIOCGRARP = 0x8961
|
||||||
SIOCGSKNS = 0x894c
|
SIOCGSKNS = 0x894c
|
||||||
SIOCGSTAMP = 0x8906
|
SIOCGSTAMP = 0x8906
|
||||||
|
@ -1927,6 +1989,7 @@ const (
|
||||||
SO_TIMESTAMP = 0x1d
|
SO_TIMESTAMP = 0x1d
|
||||||
SO_TIMESTAMPING = 0x25
|
SO_TIMESTAMPING = 0x25
|
||||||
SO_TIMESTAMPNS = 0x23
|
SO_TIMESTAMPNS = 0x23
|
||||||
|
SO_TXTIME = 0x3d
|
||||||
SO_TYPE = 0x3
|
SO_TYPE = 0x3
|
||||||
SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2
|
SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2
|
||||||
SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1
|
SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1
|
||||||
|
|
|
@ -878,6 +878,26 @@ const (
|
||||||
IXOFF = 0x400
|
IXOFF = 0x400
|
||||||
IXON = 0x200
|
IXON = 0x200
|
||||||
JFFS2_SUPER_MAGIC = 0x72b6
|
JFFS2_SUPER_MAGIC = 0x72b6
|
||||||
|
KEXEC_ARCH_386 = 0x30000
|
||||||
|
KEXEC_ARCH_68K = 0x40000
|
||||||
|
KEXEC_ARCH_AARCH64 = 0xb70000
|
||||||
|
KEXEC_ARCH_ARM = 0x280000
|
||||||
|
KEXEC_ARCH_DEFAULT = 0x0
|
||||||
|
KEXEC_ARCH_IA_64 = 0x320000
|
||||||
|
KEXEC_ARCH_MASK = 0xffff0000
|
||||||
|
KEXEC_ARCH_MIPS = 0x80000
|
||||||
|
KEXEC_ARCH_MIPS_LE = 0xa0000
|
||||||
|
KEXEC_ARCH_PPC = 0x140000
|
||||||
|
KEXEC_ARCH_PPC64 = 0x150000
|
||||||
|
KEXEC_ARCH_S390 = 0x160000
|
||||||
|
KEXEC_ARCH_SH = 0x2a0000
|
||||||
|
KEXEC_ARCH_X86_64 = 0x3e0000
|
||||||
|
KEXEC_FILE_NO_INITRAMFS = 0x4
|
||||||
|
KEXEC_FILE_ON_CRASH = 0x2
|
||||||
|
KEXEC_FILE_UNLOAD = 0x1
|
||||||
|
KEXEC_ON_CRASH = 0x1
|
||||||
|
KEXEC_PRESERVE_CONTEXT = 0x2
|
||||||
|
KEXEC_SEGMENT_MAX = 0x10
|
||||||
KEYCTL_ASSUME_AUTHORITY = 0x10
|
KEYCTL_ASSUME_AUTHORITY = 0x10
|
||||||
KEYCTL_CHOWN = 0x4
|
KEYCTL_CHOWN = 0x4
|
||||||
KEYCTL_CLEAR = 0x7
|
KEYCTL_CLEAR = 0x7
|
||||||
|
@ -985,7 +1005,9 @@ const (
|
||||||
MFD_HUGE_256MB = 0x70000000
|
MFD_HUGE_256MB = 0x70000000
|
||||||
MFD_HUGE_2GB = 0x7c000000
|
MFD_HUGE_2GB = 0x7c000000
|
||||||
MFD_HUGE_2MB = 0x54000000
|
MFD_HUGE_2MB = 0x54000000
|
||||||
|
MFD_HUGE_32MB = 0x64000000
|
||||||
MFD_HUGE_512KB = 0x4c000000
|
MFD_HUGE_512KB = 0x4c000000
|
||||||
|
MFD_HUGE_512MB = 0x74000000
|
||||||
MFD_HUGE_64KB = 0x40000000
|
MFD_HUGE_64KB = 0x40000000
|
||||||
MFD_HUGE_8MB = 0x5c000000
|
MFD_HUGE_8MB = 0x5c000000
|
||||||
MFD_HUGE_MASK = 0x3f
|
MFD_HUGE_MASK = 0x3f
|
||||||
|
@ -998,6 +1020,8 @@ const (
|
||||||
MNT_DETACH = 0x2
|
MNT_DETACH = 0x2
|
||||||
MNT_EXPIRE = 0x4
|
MNT_EXPIRE = 0x4
|
||||||
MNT_FORCE = 0x1
|
MNT_FORCE = 0x1
|
||||||
|
MODULE_INIT_IGNORE_MODVERSIONS = 0x1
|
||||||
|
MODULE_INIT_IGNORE_VERMAGIC = 0x2
|
||||||
MSDOS_SUPER_MAGIC = 0x4d44
|
MSDOS_SUPER_MAGIC = 0x4d44
|
||||||
MSG_BATCH = 0x40000
|
MSG_BATCH = 0x40000
|
||||||
MSG_CMSG_CLOEXEC = 0x40000000
|
MSG_CMSG_CLOEXEC = 0x40000000
|
||||||
|
@ -1268,6 +1292,36 @@ const (
|
||||||
PERF_EVENT_IOC_SET_FILTER = 0x80082406
|
PERF_EVENT_IOC_SET_FILTER = 0x80082406
|
||||||
PERF_EVENT_IOC_SET_OUTPUT = 0x20002405
|
PERF_EVENT_IOC_SET_OUTPUT = 0x20002405
|
||||||
PIPEFS_MAGIC = 0x50495045
|
PIPEFS_MAGIC = 0x50495045
|
||||||
|
PPPIOCATTACH = 0x8004743d
|
||||||
|
PPPIOCATTCHAN = 0x80047438
|
||||||
|
PPPIOCCONNECT = 0x8004743a
|
||||||
|
PPPIOCDETACH = 0x8004743c
|
||||||
|
PPPIOCDISCONN = 0x20007439
|
||||||
|
PPPIOCGASYNCMAP = 0x40047458
|
||||||
|
PPPIOCGCHAN = 0x40047437
|
||||||
|
PPPIOCGDEBUG = 0x40047441
|
||||||
|
PPPIOCGFLAGS = 0x4004745a
|
||||||
|
PPPIOCGIDLE = 0x4010743f
|
||||||
|
PPPIOCGL2TPSTATS = 0x40487436
|
||||||
|
PPPIOCGMRU = 0x40047453
|
||||||
|
PPPIOCGNPMODE = 0xc008744c
|
||||||
|
PPPIOCGRASYNCMAP = 0x40047455
|
||||||
|
PPPIOCGUNIT = 0x40047456
|
||||||
|
PPPIOCGXASYNCMAP = 0x40207450
|
||||||
|
PPPIOCNEWUNIT = 0xc004743e
|
||||||
|
PPPIOCSACTIVE = 0x80107446
|
||||||
|
PPPIOCSASYNCMAP = 0x80047457
|
||||||
|
PPPIOCSCOMPRESS = 0x8010744d
|
||||||
|
PPPIOCSDEBUG = 0x80047440
|
||||||
|
PPPIOCSFLAGS = 0x80047459
|
||||||
|
PPPIOCSMAXCID = 0x80047451
|
||||||
|
PPPIOCSMRRU = 0x8004743b
|
||||||
|
PPPIOCSMRU = 0x80047452
|
||||||
|
PPPIOCSNPMODE = 0x8008744b
|
||||||
|
PPPIOCSPASS = 0x80107447
|
||||||
|
PPPIOCSRASYNCMAP = 0x80047454
|
||||||
|
PPPIOCSXASYNCMAP = 0x8020744f
|
||||||
|
PPPIOCXFERUNIT = 0x2000744e
|
||||||
PRIO_PGRP = 0x1
|
PRIO_PGRP = 0x1
|
||||||
PRIO_PROCESS = 0x0
|
PRIO_PROCESS = 0x0
|
||||||
PRIO_USER = 0x2
|
PRIO_USER = 0x2
|
||||||
|
@ -1620,6 +1674,7 @@ const (
|
||||||
RTM_DELACTION = 0x31
|
RTM_DELACTION = 0x31
|
||||||
RTM_DELADDR = 0x15
|
RTM_DELADDR = 0x15
|
||||||
RTM_DELADDRLABEL = 0x49
|
RTM_DELADDRLABEL = 0x49
|
||||||
|
RTM_DELCHAIN = 0x65
|
||||||
RTM_DELLINK = 0x11
|
RTM_DELLINK = 0x11
|
||||||
RTM_DELMDB = 0x55
|
RTM_DELMDB = 0x55
|
||||||
RTM_DELNEIGH = 0x1d
|
RTM_DELNEIGH = 0x1d
|
||||||
|
@ -1640,6 +1695,7 @@ const (
|
||||||
RTM_GETADDR = 0x16
|
RTM_GETADDR = 0x16
|
||||||
RTM_GETADDRLABEL = 0x4a
|
RTM_GETADDRLABEL = 0x4a
|
||||||
RTM_GETANYCAST = 0x3e
|
RTM_GETANYCAST = 0x3e
|
||||||
|
RTM_GETCHAIN = 0x66
|
||||||
RTM_GETDCB = 0x4e
|
RTM_GETDCB = 0x4e
|
||||||
RTM_GETLINK = 0x12
|
RTM_GETLINK = 0x12
|
||||||
RTM_GETMDB = 0x56
|
RTM_GETMDB = 0x56
|
||||||
|
@ -1654,11 +1710,12 @@ const (
|
||||||
RTM_GETSTATS = 0x5e
|
RTM_GETSTATS = 0x5e
|
||||||
RTM_GETTCLASS = 0x2a
|
RTM_GETTCLASS = 0x2a
|
||||||
RTM_GETTFILTER = 0x2e
|
RTM_GETTFILTER = 0x2e
|
||||||
RTM_MAX = 0x63
|
RTM_MAX = 0x67
|
||||||
RTM_NEWACTION = 0x30
|
RTM_NEWACTION = 0x30
|
||||||
RTM_NEWADDR = 0x14
|
RTM_NEWADDR = 0x14
|
||||||
RTM_NEWADDRLABEL = 0x48
|
RTM_NEWADDRLABEL = 0x48
|
||||||
RTM_NEWCACHEREPORT = 0x60
|
RTM_NEWCACHEREPORT = 0x60
|
||||||
|
RTM_NEWCHAIN = 0x64
|
||||||
RTM_NEWLINK = 0x10
|
RTM_NEWLINK = 0x10
|
||||||
RTM_NEWMDB = 0x54
|
RTM_NEWMDB = 0x54
|
||||||
RTM_NEWNDUSEROPT = 0x44
|
RTM_NEWNDUSEROPT = 0x44
|
||||||
|
@ -1673,8 +1730,8 @@ const (
|
||||||
RTM_NEWSTATS = 0x5c
|
RTM_NEWSTATS = 0x5c
|
||||||
RTM_NEWTCLASS = 0x28
|
RTM_NEWTCLASS = 0x28
|
||||||
RTM_NEWTFILTER = 0x2c
|
RTM_NEWTFILTER = 0x2c
|
||||||
RTM_NR_FAMILIES = 0x15
|
RTM_NR_FAMILIES = 0x16
|
||||||
RTM_NR_MSGTYPES = 0x54
|
RTM_NR_MSGTYPES = 0x58
|
||||||
RTM_SETDCB = 0x4f
|
RTM_SETDCB = 0x4f
|
||||||
RTM_SETLINK = 0x13
|
RTM_SETLINK = 0x13
|
||||||
RTM_SETNEIGHTBL = 0x43
|
RTM_SETNEIGHTBL = 0x43
|
||||||
|
@ -1723,7 +1780,9 @@ const (
|
||||||
SCM_TIMESTAMPING_OPT_STATS = 0x36
|
SCM_TIMESTAMPING_OPT_STATS = 0x36
|
||||||
SCM_TIMESTAMPING_PKTINFO = 0x3a
|
SCM_TIMESTAMPING_PKTINFO = 0x3a
|
||||||
SCM_TIMESTAMPNS = 0x23
|
SCM_TIMESTAMPNS = 0x23
|
||||||
|
SCM_TXTIME = 0x3d
|
||||||
SCM_WIFI_STATUS = 0x29
|
SCM_WIFI_STATUS = 0x29
|
||||||
|
SC_LOG_FLUSH = 0x100000
|
||||||
SECCOMP_MODE_DISABLED = 0x0
|
SECCOMP_MODE_DISABLED = 0x0
|
||||||
SECCOMP_MODE_FILTER = 0x2
|
SECCOMP_MODE_FILTER = 0x2
|
||||||
SECCOMP_MODE_STRICT = 0x1
|
SECCOMP_MODE_STRICT = 0x1
|
||||||
|
@ -1779,6 +1838,9 @@ const (
|
||||||
SIOCGMIIPHY = 0x8947
|
SIOCGMIIPHY = 0x8947
|
||||||
SIOCGMIIREG = 0x8948
|
SIOCGMIIREG = 0x8948
|
||||||
SIOCGPGRP = 0x8904
|
SIOCGPGRP = 0x8904
|
||||||
|
SIOCGPPPCSTATS = 0x89f2
|
||||||
|
SIOCGPPPSTATS = 0x89f0
|
||||||
|
SIOCGPPPVER = 0x89f1
|
||||||
SIOCGRARP = 0x8961
|
SIOCGRARP = 0x8961
|
||||||
SIOCGSKNS = 0x894c
|
SIOCGSKNS = 0x894c
|
||||||
SIOCGSTAMP = 0x8906
|
SIOCGSTAMP = 0x8906
|
||||||
|
@ -1927,6 +1989,7 @@ const (
|
||||||
SO_TIMESTAMP = 0x1d
|
SO_TIMESTAMP = 0x1d
|
||||||
SO_TIMESTAMPING = 0x25
|
SO_TIMESTAMPING = 0x25
|
||||||
SO_TIMESTAMPNS = 0x23
|
SO_TIMESTAMPNS = 0x23
|
||||||
|
SO_TXTIME = 0x3d
|
||||||
SO_TYPE = 0x3
|
SO_TYPE = 0x3
|
||||||
SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2
|
SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2
|
||||||
SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1
|
SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1
|
||||||
|
|
|
@ -878,6 +878,26 @@ const (
|
||||||
IXOFF = 0x1000
|
IXOFF = 0x1000
|
||||||
IXON = 0x400
|
IXON = 0x400
|
||||||
JFFS2_SUPER_MAGIC = 0x72b6
|
JFFS2_SUPER_MAGIC = 0x72b6
|
||||||
|
KEXEC_ARCH_386 = 0x30000
|
||||||
|
KEXEC_ARCH_68K = 0x40000
|
||||||
|
KEXEC_ARCH_AARCH64 = 0xb70000
|
||||||
|
KEXEC_ARCH_ARM = 0x280000
|
||||||
|
KEXEC_ARCH_DEFAULT = 0x0
|
||||||
|
KEXEC_ARCH_IA_64 = 0x320000
|
||||||
|
KEXEC_ARCH_MASK = 0xffff0000
|
||||||
|
KEXEC_ARCH_MIPS = 0x80000
|
||||||
|
KEXEC_ARCH_MIPS_LE = 0xa0000
|
||||||
|
KEXEC_ARCH_PPC = 0x140000
|
||||||
|
KEXEC_ARCH_PPC64 = 0x150000
|
||||||
|
KEXEC_ARCH_S390 = 0x160000
|
||||||
|
KEXEC_ARCH_SH = 0x2a0000
|
||||||
|
KEXEC_ARCH_X86_64 = 0x3e0000
|
||||||
|
KEXEC_FILE_NO_INITRAMFS = 0x4
|
||||||
|
KEXEC_FILE_ON_CRASH = 0x2
|
||||||
|
KEXEC_FILE_UNLOAD = 0x1
|
||||||
|
KEXEC_ON_CRASH = 0x1
|
||||||
|
KEXEC_PRESERVE_CONTEXT = 0x2
|
||||||
|
KEXEC_SEGMENT_MAX = 0x10
|
||||||
KEYCTL_ASSUME_AUTHORITY = 0x10
|
KEYCTL_ASSUME_AUTHORITY = 0x10
|
||||||
KEYCTL_CHOWN = 0x4
|
KEYCTL_CHOWN = 0x4
|
||||||
KEYCTL_CLEAR = 0x7
|
KEYCTL_CLEAR = 0x7
|
||||||
|
@ -986,7 +1006,9 @@ const (
|
||||||
MFD_HUGE_256MB = 0x70000000
|
MFD_HUGE_256MB = 0x70000000
|
||||||
MFD_HUGE_2GB = 0x7c000000
|
MFD_HUGE_2GB = 0x7c000000
|
||||||
MFD_HUGE_2MB = 0x54000000
|
MFD_HUGE_2MB = 0x54000000
|
||||||
|
MFD_HUGE_32MB = 0x64000000
|
||||||
MFD_HUGE_512KB = 0x4c000000
|
MFD_HUGE_512KB = 0x4c000000
|
||||||
|
MFD_HUGE_512MB = 0x74000000
|
||||||
MFD_HUGE_64KB = 0x40000000
|
MFD_HUGE_64KB = 0x40000000
|
||||||
MFD_HUGE_8MB = 0x5c000000
|
MFD_HUGE_8MB = 0x5c000000
|
||||||
MFD_HUGE_MASK = 0x3f
|
MFD_HUGE_MASK = 0x3f
|
||||||
|
@ -999,6 +1021,8 @@ const (
|
||||||
MNT_DETACH = 0x2
|
MNT_DETACH = 0x2
|
||||||
MNT_EXPIRE = 0x4
|
MNT_EXPIRE = 0x4
|
||||||
MNT_FORCE = 0x1
|
MNT_FORCE = 0x1
|
||||||
|
MODULE_INIT_IGNORE_MODVERSIONS = 0x1
|
||||||
|
MODULE_INIT_IGNORE_VERMAGIC = 0x2
|
||||||
MSDOS_SUPER_MAGIC = 0x4d44
|
MSDOS_SUPER_MAGIC = 0x4d44
|
||||||
MSG_BATCH = 0x40000
|
MSG_BATCH = 0x40000
|
||||||
MSG_CMSG_CLOEXEC = 0x40000000
|
MSG_CMSG_CLOEXEC = 0x40000000
|
||||||
|
@ -1267,6 +1291,36 @@ const (
|
||||||
PERF_EVENT_IOC_SET_FILTER = 0x40082406
|
PERF_EVENT_IOC_SET_FILTER = 0x40082406
|
||||||
PERF_EVENT_IOC_SET_OUTPUT = 0x2405
|
PERF_EVENT_IOC_SET_OUTPUT = 0x2405
|
||||||
PIPEFS_MAGIC = 0x50495045
|
PIPEFS_MAGIC = 0x50495045
|
||||||
|
PPPIOCATTACH = 0x4004743d
|
||||||
|
PPPIOCATTCHAN = 0x40047438
|
||||||
|
PPPIOCCONNECT = 0x4004743a
|
||||||
|
PPPIOCDETACH = 0x4004743c
|
||||||
|
PPPIOCDISCONN = 0x7439
|
||||||
|
PPPIOCGASYNCMAP = 0x80047458
|
||||||
|
PPPIOCGCHAN = 0x80047437
|
||||||
|
PPPIOCGDEBUG = 0x80047441
|
||||||
|
PPPIOCGFLAGS = 0x8004745a
|
||||||
|
PPPIOCGIDLE = 0x8010743f
|
||||||
|
PPPIOCGL2TPSTATS = 0x80487436
|
||||||
|
PPPIOCGMRU = 0x80047453
|
||||||
|
PPPIOCGNPMODE = 0xc008744c
|
||||||
|
PPPIOCGRASYNCMAP = 0x80047455
|
||||||
|
PPPIOCGUNIT = 0x80047456
|
||||||
|
PPPIOCGXASYNCMAP = 0x80207450
|
||||||
|
PPPIOCNEWUNIT = 0xc004743e
|
||||||
|
PPPIOCSACTIVE = 0x40107446
|
||||||
|
PPPIOCSASYNCMAP = 0x40047457
|
||||||
|
PPPIOCSCOMPRESS = 0x4010744d
|
||||||
|
PPPIOCSDEBUG = 0x40047440
|
||||||
|
PPPIOCSFLAGS = 0x40047459
|
||||||
|
PPPIOCSMAXCID = 0x40047451
|
||||||
|
PPPIOCSMRRU = 0x4004743b
|
||||||
|
PPPIOCSMRU = 0x40047452
|
||||||
|
PPPIOCSNPMODE = 0x4008744b
|
||||||
|
PPPIOCSPASS = 0x40107447
|
||||||
|
PPPIOCSRASYNCMAP = 0x40047454
|
||||||
|
PPPIOCSXASYNCMAP = 0x4020744f
|
||||||
|
PPPIOCXFERUNIT = 0x744e
|
||||||
PRIO_PGRP = 0x1
|
PRIO_PGRP = 0x1
|
||||||
PRIO_PROCESS = 0x0
|
PRIO_PROCESS = 0x0
|
||||||
PRIO_USER = 0x2
|
PRIO_USER = 0x2
|
||||||
|
@ -1552,6 +1606,7 @@ const (
|
||||||
RTM_DELACTION = 0x31
|
RTM_DELACTION = 0x31
|
||||||
RTM_DELADDR = 0x15
|
RTM_DELADDR = 0x15
|
||||||
RTM_DELADDRLABEL = 0x49
|
RTM_DELADDRLABEL = 0x49
|
||||||
|
RTM_DELCHAIN = 0x65
|
||||||
RTM_DELLINK = 0x11
|
RTM_DELLINK = 0x11
|
||||||
RTM_DELMDB = 0x55
|
RTM_DELMDB = 0x55
|
||||||
RTM_DELNEIGH = 0x1d
|
RTM_DELNEIGH = 0x1d
|
||||||
|
@ -1572,6 +1627,7 @@ const (
|
||||||
RTM_GETADDR = 0x16
|
RTM_GETADDR = 0x16
|
||||||
RTM_GETADDRLABEL = 0x4a
|
RTM_GETADDRLABEL = 0x4a
|
||||||
RTM_GETANYCAST = 0x3e
|
RTM_GETANYCAST = 0x3e
|
||||||
|
RTM_GETCHAIN = 0x66
|
||||||
RTM_GETDCB = 0x4e
|
RTM_GETDCB = 0x4e
|
||||||
RTM_GETLINK = 0x12
|
RTM_GETLINK = 0x12
|
||||||
RTM_GETMDB = 0x56
|
RTM_GETMDB = 0x56
|
||||||
|
@ -1586,11 +1642,12 @@ const (
|
||||||
RTM_GETSTATS = 0x5e
|
RTM_GETSTATS = 0x5e
|
||||||
RTM_GETTCLASS = 0x2a
|
RTM_GETTCLASS = 0x2a
|
||||||
RTM_GETTFILTER = 0x2e
|
RTM_GETTFILTER = 0x2e
|
||||||
RTM_MAX = 0x63
|
RTM_MAX = 0x67
|
||||||
RTM_NEWACTION = 0x30
|
RTM_NEWACTION = 0x30
|
||||||
RTM_NEWADDR = 0x14
|
RTM_NEWADDR = 0x14
|
||||||
RTM_NEWADDRLABEL = 0x48
|
RTM_NEWADDRLABEL = 0x48
|
||||||
RTM_NEWCACHEREPORT = 0x60
|
RTM_NEWCACHEREPORT = 0x60
|
||||||
|
RTM_NEWCHAIN = 0x64
|
||||||
RTM_NEWLINK = 0x10
|
RTM_NEWLINK = 0x10
|
||||||
RTM_NEWMDB = 0x54
|
RTM_NEWMDB = 0x54
|
||||||
RTM_NEWNDUSEROPT = 0x44
|
RTM_NEWNDUSEROPT = 0x44
|
||||||
|
@ -1605,8 +1662,8 @@ const (
|
||||||
RTM_NEWSTATS = 0x5c
|
RTM_NEWSTATS = 0x5c
|
||||||
RTM_NEWTCLASS = 0x28
|
RTM_NEWTCLASS = 0x28
|
||||||
RTM_NEWTFILTER = 0x2c
|
RTM_NEWTFILTER = 0x2c
|
||||||
RTM_NR_FAMILIES = 0x15
|
RTM_NR_FAMILIES = 0x16
|
||||||
RTM_NR_MSGTYPES = 0x54
|
RTM_NR_MSGTYPES = 0x58
|
||||||
RTM_SETDCB = 0x4f
|
RTM_SETDCB = 0x4f
|
||||||
RTM_SETLINK = 0x13
|
RTM_SETLINK = 0x13
|
||||||
RTM_SETNEIGHTBL = 0x43
|
RTM_SETNEIGHTBL = 0x43
|
||||||
|
@ -1655,7 +1712,9 @@ const (
|
||||||
SCM_TIMESTAMPING_OPT_STATS = 0x36
|
SCM_TIMESTAMPING_OPT_STATS = 0x36
|
||||||
SCM_TIMESTAMPING_PKTINFO = 0x3a
|
SCM_TIMESTAMPING_PKTINFO = 0x3a
|
||||||
SCM_TIMESTAMPNS = 0x23
|
SCM_TIMESTAMPNS = 0x23
|
||||||
|
SCM_TXTIME = 0x3d
|
||||||
SCM_WIFI_STATUS = 0x29
|
SCM_WIFI_STATUS = 0x29
|
||||||
|
SC_LOG_FLUSH = 0x100000
|
||||||
SECCOMP_MODE_DISABLED = 0x0
|
SECCOMP_MODE_DISABLED = 0x0
|
||||||
SECCOMP_MODE_FILTER = 0x2
|
SECCOMP_MODE_FILTER = 0x2
|
||||||
SECCOMP_MODE_STRICT = 0x1
|
SECCOMP_MODE_STRICT = 0x1
|
||||||
|
@ -1711,6 +1770,9 @@ const (
|
||||||
SIOCGMIIPHY = 0x8947
|
SIOCGMIIPHY = 0x8947
|
||||||
SIOCGMIIREG = 0x8948
|
SIOCGMIIREG = 0x8948
|
||||||
SIOCGPGRP = 0x8904
|
SIOCGPGRP = 0x8904
|
||||||
|
SIOCGPPPCSTATS = 0x89f2
|
||||||
|
SIOCGPPPSTATS = 0x89f0
|
||||||
|
SIOCGPPPVER = 0x89f1
|
||||||
SIOCGRARP = 0x8961
|
SIOCGRARP = 0x8961
|
||||||
SIOCGSKNS = 0x894c
|
SIOCGSKNS = 0x894c
|
||||||
SIOCGSTAMP = 0x8906
|
SIOCGSTAMP = 0x8906
|
||||||
|
@ -1859,6 +1921,7 @@ const (
|
||||||
SO_TIMESTAMP = 0x1d
|
SO_TIMESTAMP = 0x1d
|
||||||
SO_TIMESTAMPING = 0x25
|
SO_TIMESTAMPING = 0x25
|
||||||
SO_TIMESTAMPNS = 0x23
|
SO_TIMESTAMPNS = 0x23
|
||||||
|
SO_TXTIME = 0x3d
|
||||||
SO_TYPE = 0x3
|
SO_TYPE = 0x3
|
||||||
SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2
|
SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2
|
||||||
SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1
|
SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1
|
||||||
|
|
|
@ -878,6 +878,26 @@ const (
|
||||||
IXOFF = 0x1000
|
IXOFF = 0x1000
|
||||||
IXON = 0x400
|
IXON = 0x400
|
||||||
JFFS2_SUPER_MAGIC = 0x72b6
|
JFFS2_SUPER_MAGIC = 0x72b6
|
||||||
|
KEXEC_ARCH_386 = 0x30000
|
||||||
|
KEXEC_ARCH_68K = 0x40000
|
||||||
|
KEXEC_ARCH_AARCH64 = 0xb70000
|
||||||
|
KEXEC_ARCH_ARM = 0x280000
|
||||||
|
KEXEC_ARCH_DEFAULT = 0x0
|
||||||
|
KEXEC_ARCH_IA_64 = 0x320000
|
||||||
|
KEXEC_ARCH_MASK = 0xffff0000
|
||||||
|
KEXEC_ARCH_MIPS = 0x80000
|
||||||
|
KEXEC_ARCH_MIPS_LE = 0xa0000
|
||||||
|
KEXEC_ARCH_PPC = 0x140000
|
||||||
|
KEXEC_ARCH_PPC64 = 0x150000
|
||||||
|
KEXEC_ARCH_S390 = 0x160000
|
||||||
|
KEXEC_ARCH_SH = 0x2a0000
|
||||||
|
KEXEC_ARCH_X86_64 = 0x3e0000
|
||||||
|
KEXEC_FILE_NO_INITRAMFS = 0x4
|
||||||
|
KEXEC_FILE_ON_CRASH = 0x2
|
||||||
|
KEXEC_FILE_UNLOAD = 0x1
|
||||||
|
KEXEC_ON_CRASH = 0x1
|
||||||
|
KEXEC_PRESERVE_CONTEXT = 0x2
|
||||||
|
KEXEC_SEGMENT_MAX = 0x10
|
||||||
KEYCTL_ASSUME_AUTHORITY = 0x10
|
KEYCTL_ASSUME_AUTHORITY = 0x10
|
||||||
KEYCTL_CHOWN = 0x4
|
KEYCTL_CHOWN = 0x4
|
||||||
KEYCTL_CLEAR = 0x7
|
KEYCTL_CLEAR = 0x7
|
||||||
|
@ -986,7 +1006,9 @@ const (
|
||||||
MFD_HUGE_256MB = 0x70000000
|
MFD_HUGE_256MB = 0x70000000
|
||||||
MFD_HUGE_2GB = 0x7c000000
|
MFD_HUGE_2GB = 0x7c000000
|
||||||
MFD_HUGE_2MB = 0x54000000
|
MFD_HUGE_2MB = 0x54000000
|
||||||
|
MFD_HUGE_32MB = 0x64000000
|
||||||
MFD_HUGE_512KB = 0x4c000000
|
MFD_HUGE_512KB = 0x4c000000
|
||||||
|
MFD_HUGE_512MB = 0x74000000
|
||||||
MFD_HUGE_64KB = 0x40000000
|
MFD_HUGE_64KB = 0x40000000
|
||||||
MFD_HUGE_8MB = 0x5c000000
|
MFD_HUGE_8MB = 0x5c000000
|
||||||
MFD_HUGE_MASK = 0x3f
|
MFD_HUGE_MASK = 0x3f
|
||||||
|
@ -999,6 +1021,8 @@ const (
|
||||||
MNT_DETACH = 0x2
|
MNT_DETACH = 0x2
|
||||||
MNT_EXPIRE = 0x4
|
MNT_EXPIRE = 0x4
|
||||||
MNT_FORCE = 0x1
|
MNT_FORCE = 0x1
|
||||||
|
MODULE_INIT_IGNORE_MODVERSIONS = 0x1
|
||||||
|
MODULE_INIT_IGNORE_VERMAGIC = 0x2
|
||||||
MSDOS_SUPER_MAGIC = 0x4d44
|
MSDOS_SUPER_MAGIC = 0x4d44
|
||||||
MSG_BATCH = 0x40000
|
MSG_BATCH = 0x40000
|
||||||
MSG_CMSG_CLOEXEC = 0x40000000
|
MSG_CMSG_CLOEXEC = 0x40000000
|
||||||
|
@ -1267,6 +1291,36 @@ const (
|
||||||
PERF_EVENT_IOC_SET_FILTER = 0x40082406
|
PERF_EVENT_IOC_SET_FILTER = 0x40082406
|
||||||
PERF_EVENT_IOC_SET_OUTPUT = 0x2405
|
PERF_EVENT_IOC_SET_OUTPUT = 0x2405
|
||||||
PIPEFS_MAGIC = 0x50495045
|
PIPEFS_MAGIC = 0x50495045
|
||||||
|
PPPIOCATTACH = 0x4004743d
|
||||||
|
PPPIOCATTCHAN = 0x40047438
|
||||||
|
PPPIOCCONNECT = 0x4004743a
|
||||||
|
PPPIOCDETACH = 0x4004743c
|
||||||
|
PPPIOCDISCONN = 0x7439
|
||||||
|
PPPIOCGASYNCMAP = 0x80047458
|
||||||
|
PPPIOCGCHAN = 0x80047437
|
||||||
|
PPPIOCGDEBUG = 0x80047441
|
||||||
|
PPPIOCGFLAGS = 0x8004745a
|
||||||
|
PPPIOCGIDLE = 0x8010743f
|
||||||
|
PPPIOCGL2TPSTATS = 0x80487436
|
||||||
|
PPPIOCGMRU = 0x80047453
|
||||||
|
PPPIOCGNPMODE = 0xc008744c
|
||||||
|
PPPIOCGRASYNCMAP = 0x80047455
|
||||||
|
PPPIOCGUNIT = 0x80047456
|
||||||
|
PPPIOCGXASYNCMAP = 0x80207450
|
||||||
|
PPPIOCNEWUNIT = 0xc004743e
|
||||||
|
PPPIOCSACTIVE = 0x40107446
|
||||||
|
PPPIOCSASYNCMAP = 0x40047457
|
||||||
|
PPPIOCSCOMPRESS = 0x4010744d
|
||||||
|
PPPIOCSDEBUG = 0x40047440
|
||||||
|
PPPIOCSFLAGS = 0x40047459
|
||||||
|
PPPIOCSMAXCID = 0x40047451
|
||||||
|
PPPIOCSMRRU = 0x4004743b
|
||||||
|
PPPIOCSMRU = 0x40047452
|
||||||
|
PPPIOCSNPMODE = 0x4008744b
|
||||||
|
PPPIOCSPASS = 0x40107447
|
||||||
|
PPPIOCSRASYNCMAP = 0x40047454
|
||||||
|
PPPIOCSXASYNCMAP = 0x4020744f
|
||||||
|
PPPIOCXFERUNIT = 0x744e
|
||||||
PRIO_PGRP = 0x1
|
PRIO_PGRP = 0x1
|
||||||
PRIO_PROCESS = 0x0
|
PRIO_PROCESS = 0x0
|
||||||
PRIO_USER = 0x2
|
PRIO_USER = 0x2
|
||||||
|
@ -1625,6 +1679,7 @@ const (
|
||||||
RTM_DELACTION = 0x31
|
RTM_DELACTION = 0x31
|
||||||
RTM_DELADDR = 0x15
|
RTM_DELADDR = 0x15
|
||||||
RTM_DELADDRLABEL = 0x49
|
RTM_DELADDRLABEL = 0x49
|
||||||
|
RTM_DELCHAIN = 0x65
|
||||||
RTM_DELLINK = 0x11
|
RTM_DELLINK = 0x11
|
||||||
RTM_DELMDB = 0x55
|
RTM_DELMDB = 0x55
|
||||||
RTM_DELNEIGH = 0x1d
|
RTM_DELNEIGH = 0x1d
|
||||||
|
@ -1645,6 +1700,7 @@ const (
|
||||||
RTM_GETADDR = 0x16
|
RTM_GETADDR = 0x16
|
||||||
RTM_GETADDRLABEL = 0x4a
|
RTM_GETADDRLABEL = 0x4a
|
||||||
RTM_GETANYCAST = 0x3e
|
RTM_GETANYCAST = 0x3e
|
||||||
|
RTM_GETCHAIN = 0x66
|
||||||
RTM_GETDCB = 0x4e
|
RTM_GETDCB = 0x4e
|
||||||
RTM_GETLINK = 0x12
|
RTM_GETLINK = 0x12
|
||||||
RTM_GETMDB = 0x56
|
RTM_GETMDB = 0x56
|
||||||
|
@ -1659,11 +1715,12 @@ const (
|
||||||
RTM_GETSTATS = 0x5e
|
RTM_GETSTATS = 0x5e
|
||||||
RTM_GETTCLASS = 0x2a
|
RTM_GETTCLASS = 0x2a
|
||||||
RTM_GETTFILTER = 0x2e
|
RTM_GETTFILTER = 0x2e
|
||||||
RTM_MAX = 0x63
|
RTM_MAX = 0x67
|
||||||
RTM_NEWACTION = 0x30
|
RTM_NEWACTION = 0x30
|
||||||
RTM_NEWADDR = 0x14
|
RTM_NEWADDR = 0x14
|
||||||
RTM_NEWADDRLABEL = 0x48
|
RTM_NEWADDRLABEL = 0x48
|
||||||
RTM_NEWCACHEREPORT = 0x60
|
RTM_NEWCACHEREPORT = 0x60
|
||||||
|
RTM_NEWCHAIN = 0x64
|
||||||
RTM_NEWLINK = 0x10
|
RTM_NEWLINK = 0x10
|
||||||
RTM_NEWMDB = 0x54
|
RTM_NEWMDB = 0x54
|
||||||
RTM_NEWNDUSEROPT = 0x44
|
RTM_NEWNDUSEROPT = 0x44
|
||||||
|
@ -1678,8 +1735,8 @@ const (
|
||||||
RTM_NEWSTATS = 0x5c
|
RTM_NEWSTATS = 0x5c
|
||||||
RTM_NEWTCLASS = 0x28
|
RTM_NEWTCLASS = 0x28
|
||||||
RTM_NEWTFILTER = 0x2c
|
RTM_NEWTFILTER = 0x2c
|
||||||
RTM_NR_FAMILIES = 0x15
|
RTM_NR_FAMILIES = 0x16
|
||||||
RTM_NR_MSGTYPES = 0x54
|
RTM_NR_MSGTYPES = 0x58
|
||||||
RTM_SETDCB = 0x4f
|
RTM_SETDCB = 0x4f
|
||||||
RTM_SETLINK = 0x13
|
RTM_SETLINK = 0x13
|
||||||
RTM_SETNEIGHTBL = 0x43
|
RTM_SETNEIGHTBL = 0x43
|
||||||
|
@ -1728,7 +1785,9 @@ const (
|
||||||
SCM_TIMESTAMPING_OPT_STATS = 0x36
|
SCM_TIMESTAMPING_OPT_STATS = 0x36
|
||||||
SCM_TIMESTAMPING_PKTINFO = 0x3a
|
SCM_TIMESTAMPING_PKTINFO = 0x3a
|
||||||
SCM_TIMESTAMPNS = 0x23
|
SCM_TIMESTAMPNS = 0x23
|
||||||
|
SCM_TXTIME = 0x3d
|
||||||
SCM_WIFI_STATUS = 0x29
|
SCM_WIFI_STATUS = 0x29
|
||||||
|
SC_LOG_FLUSH = 0x100000
|
||||||
SECCOMP_MODE_DISABLED = 0x0
|
SECCOMP_MODE_DISABLED = 0x0
|
||||||
SECCOMP_MODE_FILTER = 0x2
|
SECCOMP_MODE_FILTER = 0x2
|
||||||
SECCOMP_MODE_STRICT = 0x1
|
SECCOMP_MODE_STRICT = 0x1
|
||||||
|
@ -1784,6 +1843,9 @@ const (
|
||||||
SIOCGMIIPHY = 0x8947
|
SIOCGMIIPHY = 0x8947
|
||||||
SIOCGMIIREG = 0x8948
|
SIOCGMIIREG = 0x8948
|
||||||
SIOCGPGRP = 0x8904
|
SIOCGPGRP = 0x8904
|
||||||
|
SIOCGPPPCSTATS = 0x89f2
|
||||||
|
SIOCGPPPSTATS = 0x89f0
|
||||||
|
SIOCGPPPVER = 0x89f1
|
||||||
SIOCGRARP = 0x8961
|
SIOCGRARP = 0x8961
|
||||||
SIOCGSKNS = 0x894c
|
SIOCGSKNS = 0x894c
|
||||||
SIOCGSTAMP = 0x8906
|
SIOCGSTAMP = 0x8906
|
||||||
|
@ -1932,6 +1994,7 @@ const (
|
||||||
SO_TIMESTAMP = 0x1d
|
SO_TIMESTAMP = 0x1d
|
||||||
SO_TIMESTAMPING = 0x25
|
SO_TIMESTAMPING = 0x25
|
||||||
SO_TIMESTAMPNS = 0x23
|
SO_TIMESTAMPNS = 0x23
|
||||||
|
SO_TXTIME = 0x3d
|
||||||
SO_TYPE = 0x3
|
SO_TYPE = 0x3
|
||||||
SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2
|
SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2
|
||||||
SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1
|
SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
// mkerrors.sh -m64
|
// mkerrors.sh -Wall -Werror -static -I/tmp/include
|
||||||
// Code generated by the command above; DO NOT EDIT.
|
// Code generated by the command above; see README.md. DO NOT EDIT.
|
||||||
|
|
||||||
// +build sparc64,linux
|
// +build sparc64,linux
|
||||||
|
|
||||||
// Created by cgo -godefs - DO NOT EDIT
|
// Code generated by cmd/cgo -godefs; DO NOT EDIT.
|
||||||
// cgo -godefs -- -m64 _const.go
|
// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go
|
||||||
|
|
||||||
package unix
|
package unix
|
||||||
|
|
||||||
|
@ -1969,174 +1969,182 @@ const (
|
||||||
)
|
)
|
||||||
|
|
||||||
// Error table
|
// Error table
|
||||||
var errors = [...]string{
|
var errorList = [...]struct {
|
||||||
1: "operation not permitted",
|
num syscall.Errno
|
||||||
2: "no such file or directory",
|
name string
|
||||||
3: "no such process",
|
desc string
|
||||||
4: "interrupted system call",
|
}{
|
||||||
5: "input/output error",
|
{1, "EPERM", "operation not permitted"},
|
||||||
6: "no such device or address",
|
{2, "ENOENT", "no such file or directory"},
|
||||||
7: "argument list too long",
|
{3, "ESRCH", "no such process"},
|
||||||
8: "exec format error",
|
{4, "EINTR", "interrupted system call"},
|
||||||
9: "bad file descriptor",
|
{5, "EIO", "input/output error"},
|
||||||
10: "no child processes",
|
{6, "ENXIO", "no such device or address"},
|
||||||
11: "resource temporarily unavailable",
|
{7, "E2BIG", "argument list too long"},
|
||||||
12: "cannot allocate memory",
|
{8, "ENOEXEC", "exec format error"},
|
||||||
13: "permission denied",
|
{9, "EBADF", "bad file descriptor"},
|
||||||
14: "bad address",
|
{10, "ECHILD", "no child processes"},
|
||||||
15: "block device required",
|
{11, "EAGAIN", "resource temporarily unavailable"},
|
||||||
16: "device or resource busy",
|
{12, "ENOMEM", "cannot allocate memory"},
|
||||||
17: "file exists",
|
{13, "EACCES", "permission denied"},
|
||||||
18: "invalid cross-device link",
|
{14, "EFAULT", "bad address"},
|
||||||
19: "no such device",
|
{15, "ENOTBLK", "block device required"},
|
||||||
20: "not a directory",
|
{16, "EBUSY", "device or resource busy"},
|
||||||
21: "is a directory",
|
{17, "EEXIST", "file exists"},
|
||||||
22: "invalid argument",
|
{18, "EXDEV", "invalid cross-device link"},
|
||||||
23: "too many open files in system",
|
{19, "ENODEV", "no such device"},
|
||||||
24: "too many open files",
|
{20, "ENOTDIR", "not a directory"},
|
||||||
25: "inappropriate ioctl for device",
|
{21, "EISDIR", "is a directory"},
|
||||||
26: "text file busy",
|
{22, "EINVAL", "invalid argument"},
|
||||||
27: "file too large",
|
{23, "ENFILE", "too many open files in system"},
|
||||||
28: "no space left on device",
|
{24, "EMFILE", "too many open files"},
|
||||||
29: "illegal seek",
|
{25, "ENOTTY", "inappropriate ioctl for device"},
|
||||||
30: "read-only file system",
|
{26, "ETXTBSY", "text file busy"},
|
||||||
31: "too many links",
|
{27, "EFBIG", "file too large"},
|
||||||
32: "broken pipe",
|
{28, "ENOSPC", "no space left on device"},
|
||||||
33: "numerical argument out of domain",
|
{29, "ESPIPE", "illegal seek"},
|
||||||
34: "numerical result out of range",
|
{30, "EROFS", "read-only file system"},
|
||||||
36: "operation now in progress",
|
{31, "EMLINK", "too many links"},
|
||||||
37: "operation already in progress",
|
{32, "EPIPE", "broken pipe"},
|
||||||
38: "socket operation on non-socket",
|
{33, "EDOM", "numerical argument out of domain"},
|
||||||
39: "destination address required",
|
{34, "ERANGE", "numerical result out of range"},
|
||||||
40: "message too long",
|
{36, "EINPROGRESS", "operation now in progress"},
|
||||||
41: "protocol wrong type for socket",
|
{37, "EALREADY", "operation already in progress"},
|
||||||
42: "protocol not available",
|
{38, "ENOTSOCK", "socket operation on non-socket"},
|
||||||
43: "protocol not supported",
|
{39, "EDESTADDRREQ", "destination address required"},
|
||||||
44: "socket type not supported",
|
{40, "EMSGSIZE", "message too long"},
|
||||||
45: "operation not supported",
|
{41, "EPROTOTYPE", "protocol wrong type for socket"},
|
||||||
46: "protocol family not supported",
|
{42, "ENOPROTOOPT", "protocol not available"},
|
||||||
47: "address family not supported by protocol",
|
{43, "EPROTONOSUPPORT", "protocol not supported"},
|
||||||
48: "address already in use",
|
{44, "ESOCKTNOSUPPORT", "socket type not supported"},
|
||||||
49: "cannot assign requested address",
|
{45, "ENOTSUP", "operation not supported"},
|
||||||
50: "network is down",
|
{46, "EPFNOSUPPORT", "protocol family not supported"},
|
||||||
51: "network is unreachable",
|
{47, "EAFNOSUPPORT", "address family not supported by protocol"},
|
||||||
52: "network dropped connection on reset",
|
{48, "EADDRINUSE", "address already in use"},
|
||||||
53: "software caused connection abort",
|
{49, "EADDRNOTAVAIL", "cannot assign requested address"},
|
||||||
54: "connection reset by peer",
|
{50, "ENETDOWN", "network is down"},
|
||||||
55: "no buffer space available",
|
{51, "ENETUNREACH", "network is unreachable"},
|
||||||
56: "transport endpoint is already connected",
|
{52, "ENETRESET", "network dropped connection on reset"},
|
||||||
57: "transport endpoint is not connected",
|
{53, "ECONNABORTED", "software caused connection abort"},
|
||||||
58: "cannot send after transport endpoint shutdown",
|
{54, "ECONNRESET", "connection reset by peer"},
|
||||||
59: "too many references: cannot splice",
|
{55, "ENOBUFS", "no buffer space available"},
|
||||||
60: "connection timed out",
|
{56, "EISCONN", "transport endpoint is already connected"},
|
||||||
61: "connection refused",
|
{57, "ENOTCONN", "transport endpoint is not connected"},
|
||||||
62: "too many levels of symbolic links",
|
{58, "ESHUTDOWN", "cannot send after transport endpoint shutdown"},
|
||||||
63: "file name too long",
|
{59, "ETOOMANYREFS", "too many references: cannot splice"},
|
||||||
64: "host is down",
|
{60, "ETIMEDOUT", "connection timed out"},
|
||||||
65: "no route to host",
|
{61, "ECONNREFUSED", "connection refused"},
|
||||||
66: "directory not empty",
|
{62, "ELOOP", "too many levels of symbolic links"},
|
||||||
67: "too many processes",
|
{63, "ENAMETOOLONG", "file name too long"},
|
||||||
68: "too many users",
|
{64, "EHOSTDOWN", "host is down"},
|
||||||
69: "disk quota exceeded",
|
{65, "EHOSTUNREACH", "no route to host"},
|
||||||
70: "stale file handle",
|
{66, "ENOTEMPTY", "directory not empty"},
|
||||||
71: "object is remote",
|
{67, "EPROCLIM", "too many processes"},
|
||||||
72: "device not a stream",
|
{68, "EUSERS", "too many users"},
|
||||||
73: "timer expired",
|
{69, "EDQUOT", "disk quota exceeded"},
|
||||||
74: "out of streams resources",
|
{70, "ESTALE", "stale file handle"},
|
||||||
75: "no message of desired type",
|
{71, "EREMOTE", "object is remote"},
|
||||||
76: "bad message",
|
{72, "ENOSTR", "device not a stream"},
|
||||||
77: "identifier removed",
|
{73, "ETIME", "timer expired"},
|
||||||
78: "resource deadlock avoided",
|
{74, "ENOSR", "out of streams resources"},
|
||||||
79: "no locks available",
|
{75, "ENOMSG", "no message of desired type"},
|
||||||
80: "machine is not on the network",
|
{76, "EBADMSG", "bad message"},
|
||||||
81: "unknown error 81",
|
{77, "EIDRM", "identifier removed"},
|
||||||
82: "link has been severed",
|
{78, "EDEADLK", "resource deadlock avoided"},
|
||||||
83: "advertise error",
|
{79, "ENOLCK", "no locks available"},
|
||||||
84: "srmount error",
|
{80, "ENONET", "machine is not on the network"},
|
||||||
85: "communication error on send",
|
{81, "ERREMOTE", "unknown error 81"},
|
||||||
86: "protocol error",
|
{82, "ENOLINK", "link has been severed"},
|
||||||
87: "multihop attempted",
|
{83, "EADV", "advertise error"},
|
||||||
88: "RFS specific error",
|
{84, "ESRMNT", "srmount error"},
|
||||||
89: "remote address changed",
|
{85, "ECOMM", "communication error on send"},
|
||||||
90: "function not implemented",
|
{86, "EPROTO", "protocol error"},
|
||||||
91: "streams pipe error",
|
{87, "EMULTIHOP", "multihop attempted"},
|
||||||
92: "value too large for defined data type",
|
{88, "EDOTDOT", "RFS specific error"},
|
||||||
93: "file descriptor in bad state",
|
{89, "EREMCHG", "remote address changed"},
|
||||||
94: "channel number out of range",
|
{90, "ENOSYS", "function not implemented"},
|
||||||
95: "level 2 not synchronized",
|
{91, "ESTRPIPE", "streams pipe error"},
|
||||||
96: "level 3 halted",
|
{92, "EOVERFLOW", "value too large for defined data type"},
|
||||||
97: "level 3 reset",
|
{93, "EBADFD", "file descriptor in bad state"},
|
||||||
98: "link number out of range",
|
{94, "ECHRNG", "channel number out of range"},
|
||||||
99: "protocol driver not attached",
|
{95, "EL2NSYNC", "level 2 not synchronized"},
|
||||||
100: "no CSI structure available",
|
{96, "EL3HLT", "level 3 halted"},
|
||||||
101: "level 2 halted",
|
{97, "EL3RST", "level 3 reset"},
|
||||||
102: "invalid exchange",
|
{98, "ELNRNG", "link number out of range"},
|
||||||
103: "invalid request descriptor",
|
{99, "EUNATCH", "protocol driver not attached"},
|
||||||
104: "exchange full",
|
{100, "ENOCSI", "no CSI structure available"},
|
||||||
105: "no anode",
|
{101, "EL2HLT", "level 2 halted"},
|
||||||
106: "invalid request code",
|
{102, "EBADE", "invalid exchange"},
|
||||||
107: "invalid slot",
|
{103, "EBADR", "invalid request descriptor"},
|
||||||
108: "file locking deadlock error",
|
{104, "EXFULL", "exchange full"},
|
||||||
109: "bad font file format",
|
{105, "ENOANO", "no anode"},
|
||||||
110: "cannot exec a shared library directly",
|
{106, "EBADRQC", "invalid request code"},
|
||||||
111: "no data available",
|
{107, "EBADSLT", "invalid slot"},
|
||||||
112: "accessing a corrupted shared library",
|
{108, "EDEADLOCK", "file locking deadlock error"},
|
||||||
113: "package not installed",
|
{109, "EBFONT", "bad font file format"},
|
||||||
114: "can not access a needed shared library",
|
{110, "ELIBEXEC", "cannot exec a shared library directly"},
|
||||||
115: "name not unique on network",
|
{111, "ENODATA", "no data available"},
|
||||||
116: "interrupted system call should be restarted",
|
{112, "ELIBBAD", "accessing a corrupted shared library"},
|
||||||
117: "structure needs cleaning",
|
{113, "ENOPKG", "package not installed"},
|
||||||
118: "not a XENIX named type file",
|
{114, "ELIBACC", "can not access a needed shared library"},
|
||||||
119: "no XENIX semaphores available",
|
{115, "ENOTUNIQ", "name not unique on network"},
|
||||||
120: "is a named type file",
|
{116, "ERESTART", "interrupted system call should be restarted"},
|
||||||
121: "remote I/O error",
|
{117, "EUCLEAN", "structure needs cleaning"},
|
||||||
122: "invalid or incomplete multibyte or wide character",
|
{118, "ENOTNAM", "not a XENIX named type file"},
|
||||||
123: "attempting to link in too many shared libraries",
|
{119, "ENAVAIL", "no XENIX semaphores available"},
|
||||||
124: ".lib section in a.out corrupted",
|
{120, "EISNAM", "is a named type file"},
|
||||||
125: "no medium found",
|
{121, "EREMOTEIO", "remote I/O error"},
|
||||||
126: "wrong medium type",
|
{122, "EILSEQ", "invalid or incomplete multibyte or wide character"},
|
||||||
127: "operation canceled",
|
{123, "ELIBMAX", "attempting to link in too many shared libraries"},
|
||||||
128: "required key not available",
|
{124, "ELIBSCN", ".lib section in a.out corrupted"},
|
||||||
129: "key has expired",
|
{125, "ENOMEDIUM", "no medium found"},
|
||||||
130: "key has been revoked",
|
{126, "EMEDIUMTYPE", "wrong medium type"},
|
||||||
131: "key was rejected by service",
|
{127, "ECANCELED", "operation canceled"},
|
||||||
132: "owner died",
|
{128, "ENOKEY", "required key not available"},
|
||||||
133: "state not recoverable",
|
{129, "EKEYEXPIRED", "key has expired"},
|
||||||
134: "operation not possible due to RF-kill",
|
{130, "EKEYREVOKED", "key has been revoked"},
|
||||||
135: "memory page has hardware error",
|
{131, "EKEYREJECTED", "key was rejected by service"},
|
||||||
|
{132, "EOWNERDEAD", "owner died"},
|
||||||
|
{133, "ENOTRECOVERABLE", "state not recoverable"},
|
||||||
|
{134, "ERFKILL", "operation not possible due to RF-kill"},
|
||||||
|
{135, "EHWPOISON", "memory page has hardware error"},
|
||||||
}
|
}
|
||||||
|
|
||||||
// Signal table
|
// Signal table
|
||||||
var signals = [...]string{
|
var signalList = [...]struct {
|
||||||
1: "hangup",
|
num syscall.Signal
|
||||||
2: "interrupt",
|
name string
|
||||||
3: "quit",
|
desc string
|
||||||
4: "illegal instruction",
|
}{
|
||||||
5: "trace/breakpoint trap",
|
{1, "SIGHUP", "hangup"},
|
||||||
6: "aborted",
|
{2, "SIGINT", "interrupt"},
|
||||||
7: "EMT trap",
|
{3, "SIGQUIT", "quit"},
|
||||||
8: "floating point exception",
|
{4, "SIGILL", "illegal instruction"},
|
||||||
9: "killed",
|
{5, "SIGTRAP", "trace/breakpoint trap"},
|
||||||
10: "bus error",
|
{6, "SIGABRT", "aborted"},
|
||||||
11: "segmentation fault",
|
{7, "SIGEMT", "EMT trap"},
|
||||||
12: "bad system call",
|
{8, "SIGFPE", "floating point exception"},
|
||||||
13: "broken pipe",
|
{9, "SIGKILL", "killed"},
|
||||||
14: "alarm clock",
|
{10, "SIGBUS", "bus error"},
|
||||||
15: "terminated",
|
{11, "SIGSEGV", "segmentation fault"},
|
||||||
16: "urgent I/O condition",
|
{12, "SIGSYS", "bad system call"},
|
||||||
17: "stopped (signal)",
|
{13, "SIGPIPE", "broken pipe"},
|
||||||
18: "stopped",
|
{14, "SIGALRM", "alarm clock"},
|
||||||
19: "continued",
|
{15, "SIGTERM", "terminated"},
|
||||||
20: "child exited",
|
{16, "SIGURG", "urgent I/O condition"},
|
||||||
21: "stopped (tty input)",
|
{17, "SIGSTOP", "stopped (signal)"},
|
||||||
22: "stopped (tty output)",
|
{18, "SIGTSTP", "stopped"},
|
||||||
23: "I/O possible",
|
{19, "SIGCONT", "continued"},
|
||||||
24: "CPU time limit exceeded",
|
{20, "SIGCHLD", "child exited"},
|
||||||
25: "file size limit exceeded",
|
{21, "SIGTTIN", "stopped (tty input)"},
|
||||||
26: "virtual timer expired",
|
{22, "SIGTTOU", "stopped (tty output)"},
|
||||||
27: "profiling timer expired",
|
{23, "SIGIO", "I/O possible"},
|
||||||
28: "window changed",
|
{24, "SIGXCPU", "CPU time limit exceeded"},
|
||||||
29: "resource lost",
|
{25, "SIGXFSZ", "file size limit exceeded"},
|
||||||
30: "user defined signal 1",
|
{26, "SIGVTALRM", "virtual timer expired"},
|
||||||
31: "user defined signal 2",
|
{27, "SIGPROF", "profiling timer expired"},
|
||||||
|
{28, "SIGWINCH", "window changed"},
|
||||||
|
{29, "SIGLOST", "power failure"},
|
||||||
|
{30, "SIGUSR1", "user defined signal 1"},
|
||||||
|
{31, "SIGUSR2", "user defined signal 2"},
|
||||||
}
|
}
|
||||||
|
|
|
@ -1150,7 +1150,10 @@ const (
|
||||||
RLIMIT_CPU = 0x0
|
RLIMIT_CPU = 0x0
|
||||||
RLIMIT_DATA = 0x2
|
RLIMIT_DATA = 0x2
|
||||||
RLIMIT_FSIZE = 0x1
|
RLIMIT_FSIZE = 0x1
|
||||||
|
RLIMIT_MEMLOCK = 0x6
|
||||||
RLIMIT_NOFILE = 0x8
|
RLIMIT_NOFILE = 0x8
|
||||||
|
RLIMIT_NPROC = 0x7
|
||||||
|
RLIMIT_RSS = 0x5
|
||||||
RLIMIT_STACK = 0x3
|
RLIMIT_STACK = 0x3
|
||||||
RLIM_INFINITY = 0x7fffffffffffffff
|
RLIM_INFINITY = 0x7fffffffffffffff
|
||||||
RTAX_AUTHOR = 0x6
|
RTAX_AUTHOR = 0x6
|
||||||
|
|
|
@ -1140,7 +1140,10 @@ const (
|
||||||
RLIMIT_CPU = 0x0
|
RLIMIT_CPU = 0x0
|
||||||
RLIMIT_DATA = 0x2
|
RLIMIT_DATA = 0x2
|
||||||
RLIMIT_FSIZE = 0x1
|
RLIMIT_FSIZE = 0x1
|
||||||
|
RLIMIT_MEMLOCK = 0x6
|
||||||
RLIMIT_NOFILE = 0x8
|
RLIMIT_NOFILE = 0x8
|
||||||
|
RLIMIT_NPROC = 0x7
|
||||||
|
RLIMIT_RSS = 0x5
|
||||||
RLIMIT_STACK = 0x3
|
RLIMIT_STACK = 0x3
|
||||||
RLIM_INFINITY = 0x7fffffffffffffff
|
RLIM_INFINITY = 0x7fffffffffffffff
|
||||||
RTAX_AUTHOR = 0x6
|
RTAX_AUTHOR = 0x6
|
||||||
|
|
|
@ -1130,7 +1130,10 @@ const (
|
||||||
RLIMIT_CPU = 0x0
|
RLIMIT_CPU = 0x0
|
||||||
RLIMIT_DATA = 0x2
|
RLIMIT_DATA = 0x2
|
||||||
RLIMIT_FSIZE = 0x1
|
RLIMIT_FSIZE = 0x1
|
||||||
|
RLIMIT_MEMLOCK = 0x6
|
||||||
RLIMIT_NOFILE = 0x8
|
RLIMIT_NOFILE = 0x8
|
||||||
|
RLIMIT_NPROC = 0x7
|
||||||
|
RLIMIT_RSS = 0x5
|
||||||
RLIMIT_STACK = 0x3
|
RLIMIT_STACK = 0x3
|
||||||
RLIM_INFINITY = 0x7fffffffffffffff
|
RLIM_INFINITY = 0x7fffffffffffffff
|
||||||
RTAX_AUTHOR = 0x6
|
RTAX_AUTHOR = 0x6
|
||||||
|
|
|
@ -952,6 +952,7 @@ const (
|
||||||
MNT_NOATIME = 0x8000
|
MNT_NOATIME = 0x8000
|
||||||
MNT_NODEV = 0x10
|
MNT_NODEV = 0x10
|
||||||
MNT_NOEXEC = 0x4
|
MNT_NOEXEC = 0x4
|
||||||
|
MNT_NOPERM = 0x20
|
||||||
MNT_NOSUID = 0x8
|
MNT_NOSUID = 0x8
|
||||||
MNT_NOWAIT = 0x2
|
MNT_NOWAIT = 0x2
|
||||||
MNT_QUOTA = 0x2000
|
MNT_QUOTA = 0x2000
|
||||||
|
@ -959,6 +960,7 @@ const (
|
||||||
MNT_RELOAD = 0x40000
|
MNT_RELOAD = 0x40000
|
||||||
MNT_ROOTFS = 0x4000
|
MNT_ROOTFS = 0x4000
|
||||||
MNT_SOFTDEP = 0x4000000
|
MNT_SOFTDEP = 0x4000000
|
||||||
|
MNT_STALLED = 0x100000
|
||||||
MNT_SYNCHRONOUS = 0x2
|
MNT_SYNCHRONOUS = 0x2
|
||||||
MNT_UPDATE = 0x10000
|
MNT_UPDATE = 0x10000
|
||||||
MNT_VISFLAGMASK = 0x400ffff
|
MNT_VISFLAGMASK = 0x400ffff
|
||||||
|
@ -1441,6 +1443,8 @@ const (
|
||||||
TIOCUCNTL_CBRK = 0x7a
|
TIOCUCNTL_CBRK = 0x7a
|
||||||
TIOCUCNTL_SBRK = 0x7b
|
TIOCUCNTL_SBRK = 0x7b
|
||||||
TOSTOP = 0x400000
|
TOSTOP = 0x400000
|
||||||
|
UTIME_NOW = -0x2
|
||||||
|
UTIME_OMIT = -0x1
|
||||||
VDISCARD = 0xf
|
VDISCARD = 0xf
|
||||||
VDSUSP = 0xb
|
VDSUSP = 0xb
|
||||||
VEOF = 0x0
|
VEOF = 0x0
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// mksyscall_aix.pl -aix -tags aix,ppc syscall_aix.go syscall_aix_ppc.go
|
// mksyscall_aix_ppc.pl -aix -tags aix,ppc syscall_aix.go syscall_aix_ppc.go
|
||||||
// Code generated by the command above; see README.md. DO NOT EDIT.
|
// Code generated by the command above; see README.md. DO NOT EDIT.
|
||||||
|
|
||||||
// +build aix,ppc
|
// +build aix,ppc
|
||||||
|
@ -7,6 +7,7 @@ package unix
|
||||||
|
|
||||||
/*
|
/*
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
#include <stddef.h>
|
||||||
int utimes(uintptr_t, uintptr_t);
|
int utimes(uintptr_t, uintptr_t);
|
||||||
int utimensat(int, uintptr_t, uintptr_t, int);
|
int utimensat(int, uintptr_t, uintptr_t, int);
|
||||||
int getcwd(uintptr_t, size_t);
|
int getcwd(uintptr_t, size_t);
|
||||||
|
@ -20,10 +21,8 @@ int chdir(uintptr_t);
|
||||||
int chroot(uintptr_t);
|
int chroot(uintptr_t);
|
||||||
int close(int);
|
int close(int);
|
||||||
int dup(int);
|
int dup(int);
|
||||||
int dup3(int, int, int);
|
|
||||||
void exit(int);
|
void exit(int);
|
||||||
int faccessat(int, uintptr_t, unsigned int, int);
|
int faccessat(int, uintptr_t, unsigned int, int);
|
||||||
int fallocate(int, unsigned int, long long, long long);
|
|
||||||
int fchdir(int);
|
int fchdir(int);
|
||||||
int fchmod(int, unsigned int);
|
int fchmod(int, unsigned int);
|
||||||
int fchmodat(int, uintptr_t, unsigned int, int);
|
int fchmodat(int, uintptr_t, unsigned int, int);
|
||||||
|
@ -49,7 +48,6 @@ int open64(uintptr_t, int, unsigned int);
|
||||||
int openat(int, uintptr_t, int, unsigned int);
|
int openat(int, uintptr_t, int, unsigned int);
|
||||||
int read(int, uintptr_t, size_t);
|
int read(int, uintptr_t, size_t);
|
||||||
int readlink(uintptr_t, uintptr_t, size_t);
|
int readlink(uintptr_t, uintptr_t, size_t);
|
||||||
int removexattr(uintptr_t, uintptr_t);
|
|
||||||
int renameat(int, uintptr_t, int, uintptr_t);
|
int renameat(int, uintptr_t, int, uintptr_t);
|
||||||
int setdomainname(uintptr_t, size_t);
|
int setdomainname(uintptr_t, size_t);
|
||||||
int sethostname(uintptr_t, size_t);
|
int sethostname(uintptr_t, size_t);
|
||||||
|
@ -61,13 +59,11 @@ int setgid(int);
|
||||||
int setpriority(int, int, int);
|
int setpriority(int, int, int);
|
||||||
int statx(int, uintptr_t, int, int, uintptr_t);
|
int statx(int, uintptr_t, int, int, uintptr_t);
|
||||||
int sync();
|
int sync();
|
||||||
long long tee(int, int, int, int);
|
|
||||||
uintptr_t times(uintptr_t);
|
uintptr_t times(uintptr_t);
|
||||||
int umask(int);
|
int umask(int);
|
||||||
int uname(uintptr_t);
|
int uname(uintptr_t);
|
||||||
int unlink(uintptr_t);
|
int unlink(uintptr_t);
|
||||||
int unlinkat(int, uintptr_t, int);
|
int unlinkat(int, uintptr_t, int);
|
||||||
int unshare(int);
|
|
||||||
int ustat(int, uintptr_t);
|
int ustat(int, uintptr_t);
|
||||||
int write(int, uintptr_t, size_t);
|
int write(int, uintptr_t, size_t);
|
||||||
int dup2(int, int);
|
int dup2(int, int);
|
||||||
|
@ -118,7 +114,6 @@ int msync(uintptr_t, size_t, int);
|
||||||
int munlock(uintptr_t, size_t);
|
int munlock(uintptr_t, size_t);
|
||||||
int munlockall();
|
int munlockall();
|
||||||
int pipe(uintptr_t);
|
int pipe(uintptr_t);
|
||||||
int pipe2(uintptr_t, int);
|
|
||||||
int poll(uintptr_t, int, int);
|
int poll(uintptr_t, int, int);
|
||||||
int gettimeofday(uintptr_t, uintptr_t);
|
int gettimeofday(uintptr_t, uintptr_t);
|
||||||
int time(uintptr_t);
|
int time(uintptr_t);
|
||||||
|
@ -131,7 +126,6 @@ uintptr_t mmap(uintptr_t, uintptr_t, int, int, int, long long);
|
||||||
*/
|
*/
|
||||||
import "C"
|
import "C"
|
||||||
import (
|
import (
|
||||||
"syscall"
|
|
||||||
"unsafe"
|
"unsafe"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -245,6 +239,17 @@ func FcntlFlock(fd uintptr, cmd int, lk *Flock_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 fcntl(fd int, cmd int, arg int) (val int, err error) {
|
||||||
|
r0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(arg))
|
||||||
|
val = int(r0)
|
||||||
|
if r0 == -1 && er != nil {
|
||||||
|
err = er
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Acct(path string) (err error) {
|
func Acct(path string) (err error) {
|
||||||
_p0 := uintptr(unsafe.Pointer(C.CString(path)))
|
_p0 := uintptr(unsafe.Pointer(C.CString(path)))
|
||||||
r0, er := C.acct(C.uintptr_t(_p0))
|
r0, er := C.acct(C.uintptr_t(_p0))
|
||||||
|
@ -299,16 +304,6 @@ func Dup(oldfd int) (fd 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 Dup3(oldfd int, newfd int, flags int) (err error) {
|
|
||||||
r0, er := C.dup3(C.int(oldfd), C.int(newfd), C.int(flags))
|
|
||||||
if r0 == -1 && er != nil {
|
|
||||||
err = er
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func Exit(code int) {
|
func Exit(code int) {
|
||||||
C.exit(C.int(code))
|
C.exit(C.int(code))
|
||||||
return
|
return
|
||||||
|
@ -327,16 +322,6 @@ func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
|
|
||||||
r0, er := C.fallocate(C.int(fd), C.uint(mode), C.longlong(off), C.longlong(len))
|
|
||||||
if r0 == -1 && er != nil {
|
|
||||||
err = er
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func Fchdir(fd int) (err error) {
|
func Fchdir(fd int) (err error) {
|
||||||
r0, er := C.fchdir(C.int(fd))
|
r0, er := C.fchdir(C.int(fd))
|
||||||
if r0 == -1 && er != nil {
|
if r0 == -1 && er != nil {
|
||||||
|
@ -379,17 +364,6 @@ func Fchownat(dirfd int, path string, uid int, gid int, flags 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 fcntl(fd int, cmd int, arg int) (val int, err error) {
|
|
||||||
r0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(arg))
|
|
||||||
val = int(r0)
|
|
||||||
if r0 == -1 && er != nil {
|
|
||||||
err = er
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func Fdatasync(fd int) (err error) {
|
func Fdatasync(fd int) (err error) {
|
||||||
r0, er := C.fdatasync(C.int(fd))
|
r0, er := C.fdatasync(C.int(fd))
|
||||||
if r0 == -1 && er != nil {
|
if r0 == -1 && er != nil {
|
||||||
|
@ -477,7 +451,7 @@ 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 Kill(pid int, sig syscall.Signal) (err error) {
|
func Kill(pid int, sig Signal) (err error) {
|
||||||
r0, er := C.kill(C.int(pid), C.int(sig))
|
r0, er := C.kill(C.int(pid), C.int(sig))
|
||||||
if r0 == -1 && er != nil {
|
if r0 == -1 && er != nil {
|
||||||
err = er
|
err = er
|
||||||
|
@ -628,18 +602,6 @@ func Readlink(path string, buf []byte) (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 Removexattr(path string, attr string) (err error) {
|
|
||||||
_p0 := uintptr(unsafe.Pointer(C.CString(path)))
|
|
||||||
_p1 := uintptr(unsafe.Pointer(C.CString(attr)))
|
|
||||||
r0, er := C.removexattr(C.uintptr_t(_p0), C.uintptr_t(_p1))
|
|
||||||
if r0 == -1 && er != nil {
|
|
||||||
err = er
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
|
func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
|
||||||
_p0 := uintptr(unsafe.Pointer(C.CString(oldpath)))
|
_p0 := uintptr(unsafe.Pointer(C.CString(oldpath)))
|
||||||
_p1 := uintptr(unsafe.Pointer(C.CString(newpath)))
|
_p1 := uintptr(unsafe.Pointer(C.CString(newpath)))
|
||||||
|
@ -763,17 +725,6 @@ func Sync() {
|
||||||
|
|
||||||
// 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 Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
|
|
||||||
r0, er := C.tee(C.int(rfd), C.int(wfd), C.int(len), C.int(flags))
|
|
||||||
n = int64(r0)
|
|
||||||
if r0 == -1 && er != nil {
|
|
||||||
err = er
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func Times(tms *Tms) (ticks uintptr, err error) {
|
func Times(tms *Tms) (ticks uintptr, err error) {
|
||||||
r0, er := C.times(C.uintptr_t(uintptr(unsafe.Pointer(tms))))
|
r0, er := C.times(C.uintptr_t(uintptr(unsafe.Pointer(tms))))
|
||||||
ticks = uintptr(r0)
|
ticks = uintptr(r0)
|
||||||
|
@ -825,16 +776,6 @@ func Unlinkat(dirfd int, path string, flags 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 Unshare(flags int) (err error) {
|
|
||||||
r0, er := C.unshare(C.int(flags))
|
|
||||||
if r0 == -1 && er != nil {
|
|
||||||
err = er
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func Ustat(dev int, ubuf *Ustat_t) (err error) {
|
func Ustat(dev int, ubuf *Ustat_t) (err error) {
|
||||||
r0, er := C.ustat(C.int(dev), C.uintptr_t(uintptr(unsafe.Pointer(ubuf))))
|
r0, er := C.ustat(C.int(dev), C.uintptr_t(uintptr(unsafe.Pointer(ubuf))))
|
||||||
if r0 == -1 && er != nil {
|
if r0 == -1 && er != nil {
|
||||||
|
@ -1425,16 +1366,6 @@ 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 pipe2(p *[2]_C_int, flags int) (err error) {
|
|
||||||
r0, er := C.pipe2(C.uintptr_t(uintptr(unsafe.Pointer(p))), C.int(flags))
|
|
||||||
if r0 == -1 && er != nil {
|
|
||||||
err = er
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
|
func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
|
||||||
r0, er := C.poll(C.uintptr_t(uintptr(unsafe.Pointer(fds))), C.int(nfds), C.int(timeout))
|
r0, er := C.poll(C.uintptr_t(uintptr(unsafe.Pointer(fds))), C.int(nfds), C.int(timeout))
|
||||||
n = int(r0)
|
n = int(r0)
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,4 +1,4 @@
|
||||||
// mksyscall.pl -l32 -tags darwin,386 syscall_bsd.go syscall_darwin.go syscall_darwin_386.go
|
// go run mksyscall.go -l32 -tags darwin,386 syscall_bsd.go syscall_darwin.go syscall_darwin_386.go
|
||||||
// Code generated by the command above; see README.md. DO NOT EDIT.
|
// Code generated by the command above; see README.md. DO NOT EDIT.
|
||||||
|
|
||||||
// +build darwin,386
|
// +build darwin,386
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// mksyscall.pl -tags darwin,amd64 syscall_bsd.go syscall_darwin.go syscall_darwin_amd64.go
|
// go run mksyscall.go -tags darwin,amd64 syscall_bsd.go syscall_darwin.go syscall_darwin_amd64.go
|
||||||
// Code generated by the command above; see README.md. DO NOT EDIT.
|
// Code generated by the command above; see README.md. DO NOT EDIT.
|
||||||
|
|
||||||
// +build darwin,amd64
|
// +build darwin,amd64
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// mksyscall.pl -l32 -tags darwin,arm syscall_bsd.go syscall_darwin.go syscall_darwin_arm.go
|
// go run mksyscall.go -l32 -tags darwin,arm syscall_bsd.go syscall_darwin.go syscall_darwin_arm.go
|
||||||
// Code generated by the command above; see README.md. DO NOT EDIT.
|
// Code generated by the command above; see README.md. DO NOT EDIT.
|
||||||
|
|
||||||
// +build darwin,arm
|
// +build darwin,arm
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// mksyscall.pl -tags darwin,arm64 syscall_bsd.go syscall_darwin.go syscall_darwin_arm64.go
|
// go run mksyscall.go -tags darwin,arm64 syscall_bsd.go syscall_darwin.go syscall_darwin_arm64.go
|
||||||
// Code generated by the command above; see README.md. DO NOT EDIT.
|
// Code generated by the command above; see README.md. DO NOT EDIT.
|
||||||
|
|
||||||
// +build darwin,arm64
|
// +build darwin,arm64
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// mksyscall.pl -dragonfly -tags dragonfly,amd64 syscall_bsd.go syscall_dragonfly.go syscall_dragonfly_amd64.go
|
// go run mksyscall.go -dragonfly -tags dragonfly,amd64 syscall_bsd.go syscall_dragonfly.go syscall_dragonfly_amd64.go
|
||||||
// Code generated by the command above; see README.md. DO NOT EDIT.
|
// Code generated by the command above; see README.md. DO NOT EDIT.
|
||||||
|
|
||||||
// +build dragonfly,amd64
|
// +build dragonfly,amd64
|
||||||
|
@ -588,6 +588,21 @@ func Exit(code 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 Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
|
||||||
|
var _p0 *byte
|
||||||
|
_p0, err = BytePtrFromString(path)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Fchdir(fd int) (err error) {
|
func Fchdir(fd int) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
|
_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
|
@ -643,6 +658,21 @@ func Fchown(fd int, uid int, gid 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 Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
|
||||||
|
var _p0 *byte
|
||||||
|
_p0, err = BytePtrFromString(path)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Flock(fd int, how int) (err error) {
|
func Flock(fd int, how int) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
|
_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
|
@ -927,6 +957,26 @@ func Link(path string, link string) (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 Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {
|
||||||
|
var _p0 *byte
|
||||||
|
_p0, err = BytePtrFromString(path)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
var _p1 *byte
|
||||||
|
_p1, err = BytePtrFromString(link)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Listen(s int, backlog int) (err error) {
|
func Listen(s int, backlog int) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
|
_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
|
@ -967,6 +1017,21 @@ func Mkdir(path string, mode uint32) (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 Mkdirat(dirfd int, path string, mode uint32) (err error) {
|
||||||
|
var _p0 *byte
|
||||||
|
_p0, err = BytePtrFromString(path)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Mkfifo(path string, mode uint32) (err error) {
|
func Mkfifo(path string, mode uint32) (err error) {
|
||||||
var _p0 *byte
|
var _p0 *byte
|
||||||
_p0, err = BytePtrFromString(path)
|
_p0, err = BytePtrFromString(path)
|
||||||
|
@ -997,6 +1062,21 @@ func Mknod(path string, mode uint32, dev 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 Mknodat(fd int, path string, mode uint32, dev int) (err error) {
|
||||||
|
var _p0 *byte
|
||||||
|
_p0, err = BytePtrFromString(path)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
|
func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
|
_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
|
@ -1023,6 +1103,22 @@ func Open(path string, mode int, perm uint32) (fd 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 Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {
|
||||||
|
var _p0 *byte
|
||||||
|
_p0, err = BytePtrFromString(path)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 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 Pathconf(path string, name int) (val int, err error) {
|
func Pathconf(path string, name int) (val int, err error) {
|
||||||
var _p0 *byte
|
var _p0 *byte
|
||||||
_p0, err = BytePtrFromString(path)
|
_p0, err = BytePtrFromString(path)
|
||||||
|
@ -1345,6 +1441,26 @@ func Symlink(path string, link string) (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 Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
|
||||||
|
var _p0 *byte
|
||||||
|
_p0, err = BytePtrFromString(oldpath)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
var _p1 *byte
|
||||||
|
_p1, err = BytePtrFromString(newpath)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Sync() (err error) {
|
func Sync() (err error) {
|
||||||
_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
|
_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
|
@ -1408,6 +1524,21 @@ func Unlink(path string) (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 Unlinkat(dirfd int, path string, flags int) (err error) {
|
||||||
|
var _p0 *byte
|
||||||
|
_p0, err = BytePtrFromString(path)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Unmount(path string, flags int) (err error) {
|
func Unmount(path string, flags int) (err error) {
|
||||||
var _p0 *byte
|
var _p0 *byte
|
||||||
_p0, err = BytePtrFromString(path)
|
_p0, err = BytePtrFromString(path)
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// mksyscall.pl -l32 -tags freebsd,386 syscall_bsd.go syscall_freebsd.go syscall_freebsd_386.go
|
// go run mksyscall.go -l32 -tags freebsd,386 syscall_bsd.go syscall_freebsd.go syscall_freebsd_386.go
|
||||||
// Code generated by the command above; see README.md. DO NOT EDIT.
|
// Code generated by the command above; see README.md. DO NOT EDIT.
|
||||||
|
|
||||||
// +build freebsd,386
|
// +build freebsd,386
|
||||||
|
@ -912,7 +912,7 @@ func Fpathconf(fd int, name int) (val 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 Fstat(fd int, stat *Stat_t) (err error) {
|
func fstat(fd int, stat *stat_freebsd11_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 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
|
@ -922,7 +922,17 @@ func Fstat(fd int, stat *Stat_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 Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {
|
func fstat_freebsd12(fd int, stat *Stat_t) (err error) {
|
||||||
|
_, _, e1 := Syscall(SYS_FSTAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func fstatat(fd int, path string, stat *stat_freebsd11_t, flags int) (err error) {
|
||||||
var _p0 *byte
|
var _p0 *byte
|
||||||
_p0, err = BytePtrFromString(path)
|
_p0, err = BytePtrFromString(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -937,7 +947,22 @@ func Fstatat(fd int, path string, stat *Stat_t, flags 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 Fstatfs(fd int, stat *Statfs_t) (err error) {
|
func fstatat_freebsd12(fd int, path string, stat *Stat_t, flags int) (err error) {
|
||||||
|
var _p0 *byte
|
||||||
|
_p0, err = BytePtrFromString(path)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
_, _, e1 := Syscall6(SYS_FSTATAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func fstatfs(fd int, stat *statfs_freebsd11_t) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
|
_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
|
@ -947,6 +972,16 @@ func Fstatfs(fd int, stat *Statfs_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 fstatfs_freebsd12(fd int, stat *Statfs_t) (err error) {
|
||||||
|
_, _, e1 := Syscall(SYS_FSTATFS_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Fsync(fd int) (err error) {
|
func Fsync(fd int) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
|
_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
|
@ -967,14 +1002,14 @@ func Ftruncate(fd int, length 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 Getdents(fd int, buf []byte) (n int, err error) {
|
func getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
|
||||||
var _p0 unsafe.Pointer
|
var _p0 unsafe.Pointer
|
||||||
if len(buf) > 0 {
|
if len(buf) > 0 {
|
||||||
_p0 = unsafe.Pointer(&buf[0])
|
_p0 = unsafe.Pointer(&buf[0])
|
||||||
} else {
|
} else {
|
||||||
_p0 = unsafe.Pointer(&_zero)
|
_p0 = unsafe.Pointer(&_zero)
|
||||||
}
|
}
|
||||||
r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
|
r0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
|
||||||
n = int(r0)
|
n = int(r0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
|
@ -984,14 +1019,14 @@ func Getdents(fd int, buf []byte) (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 Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
|
func getdirentries_freebsd12(fd int, buf []byte, basep *uintptr) (n int, err error) {
|
||||||
var _p0 unsafe.Pointer
|
var _p0 unsafe.Pointer
|
||||||
if len(buf) > 0 {
|
if len(buf) > 0 {
|
||||||
_p0 = unsafe.Pointer(&buf[0])
|
_p0 = unsafe.Pointer(&buf[0])
|
||||||
} else {
|
} else {
|
||||||
_p0 = unsafe.Pointer(&_zero)
|
_p0 = unsafe.Pointer(&_zero)
|
||||||
}
|
}
|
||||||
r0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
|
r0, _, e1 := Syscall6(SYS_GETDIRENTRIES_FREEBSD12, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
|
||||||
n = int(r0)
|
n = int(r0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
|
@ -1222,7 +1257,7 @@ func Listen(s int, backlog 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 Lstat(path string, stat *Stat_t) (err error) {
|
func lstat(path string, stat *stat_freebsd11_t) (err error) {
|
||||||
var _p0 *byte
|
var _p0 *byte
|
||||||
_p0, err = BytePtrFromString(path)
|
_p0, err = BytePtrFromString(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -1282,7 +1317,7 @@ func Mkfifo(path string, mode uint32) (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 Mknod(path string, mode uint32, dev int) (err error) {
|
func mknod(path string, mode uint32, dev int) (err error) {
|
||||||
var _p0 *byte
|
var _p0 *byte
|
||||||
_p0, err = BytePtrFromString(path)
|
_p0, err = BytePtrFromString(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -1297,6 +1332,36 @@ func Mknod(path string, mode uint32, dev 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 mknodat(fd int, path string, mode uint32, dev int) (err error) {
|
||||||
|
var _p0 *byte
|
||||||
|
_p0, err = BytePtrFromString(path)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func mknodat_freebsd12(fd int, path string, mode uint32, dev uint64) (err error) {
|
||||||
|
var _p0 *byte
|
||||||
|
_p0, err = BytePtrFromString(path)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
_, _, e1 := Syscall6(SYS_MKNODAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
|
func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
|
_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
|
@ -1687,7 +1752,7 @@ func Setuid(uid 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 Stat(path string, stat *Stat_t) (err error) {
|
func stat(path string, stat *stat_freebsd11_t) (err error) {
|
||||||
var _p0 *byte
|
var _p0 *byte
|
||||||
_p0, err = BytePtrFromString(path)
|
_p0, err = BytePtrFromString(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -1702,7 +1767,7 @@ func Stat(path string, stat *Stat_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 Statfs(path string, stat *Statfs_t) (err error) {
|
func statfs(path string, stat *statfs_freebsd11_t) (err error) {
|
||||||
var _p0 *byte
|
var _p0 *byte
|
||||||
_p0, err = BytePtrFromString(path)
|
_p0, err = BytePtrFromString(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -1717,6 +1782,21 @@ func Statfs(path string, stat *Statfs_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 statfs_freebsd12(path string, stat *Statfs_t) (err error) {
|
||||||
|
var _p0 *byte
|
||||||
|
_p0, err = BytePtrFromString(path)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
_, _, e1 := Syscall(SYS_STATFS_FREEBSD12, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Symlink(path string, link string) (err error) {
|
func Symlink(path string, link string) (err error) {
|
||||||
var _p0 *byte
|
var _p0 *byte
|
||||||
_p0, err = BytePtrFromString(path)
|
_p0, err = BytePtrFromString(path)
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// mksyscall.pl -tags freebsd,amd64 syscall_bsd.go syscall_freebsd.go syscall_freebsd_amd64.go
|
// go run mksyscall.go -tags freebsd,amd64 syscall_bsd.go syscall_freebsd.go syscall_freebsd_amd64.go
|
||||||
// Code generated by the command above; see README.md. DO NOT EDIT.
|
// Code generated by the command above; see README.md. DO NOT EDIT.
|
||||||
|
|
||||||
// +build freebsd,amd64
|
// +build freebsd,amd64
|
||||||
|
@ -912,7 +912,7 @@ func Fpathconf(fd int, name int) (val 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 Fstat(fd int, stat *Stat_t) (err error) {
|
func fstat(fd int, stat *stat_freebsd11_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 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
|
@ -922,7 +922,17 @@ func Fstat(fd int, stat *Stat_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 Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {
|
func fstat_freebsd12(fd int, stat *Stat_t) (err error) {
|
||||||
|
_, _, e1 := Syscall(SYS_FSTAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func fstatat(fd int, path string, stat *stat_freebsd11_t, flags int) (err error) {
|
||||||
var _p0 *byte
|
var _p0 *byte
|
||||||
_p0, err = BytePtrFromString(path)
|
_p0, err = BytePtrFromString(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -937,7 +947,22 @@ func Fstatat(fd int, path string, stat *Stat_t, flags 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 Fstatfs(fd int, stat *Statfs_t) (err error) {
|
func fstatat_freebsd12(fd int, path string, stat *Stat_t, flags int) (err error) {
|
||||||
|
var _p0 *byte
|
||||||
|
_p0, err = BytePtrFromString(path)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
_, _, e1 := Syscall6(SYS_FSTATAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func fstatfs(fd int, stat *statfs_freebsd11_t) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
|
_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
|
@ -947,6 +972,16 @@ func Fstatfs(fd int, stat *Statfs_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 fstatfs_freebsd12(fd int, stat *Statfs_t) (err error) {
|
||||||
|
_, _, e1 := Syscall(SYS_FSTATFS_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Fsync(fd int) (err error) {
|
func Fsync(fd int) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
|
_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
|
@ -967,14 +1002,14 @@ func Ftruncate(fd int, length 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 Getdents(fd int, buf []byte) (n int, err error) {
|
func getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
|
||||||
var _p0 unsafe.Pointer
|
var _p0 unsafe.Pointer
|
||||||
if len(buf) > 0 {
|
if len(buf) > 0 {
|
||||||
_p0 = unsafe.Pointer(&buf[0])
|
_p0 = unsafe.Pointer(&buf[0])
|
||||||
} else {
|
} else {
|
||||||
_p0 = unsafe.Pointer(&_zero)
|
_p0 = unsafe.Pointer(&_zero)
|
||||||
}
|
}
|
||||||
r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
|
r0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
|
||||||
n = int(r0)
|
n = int(r0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
|
@ -984,14 +1019,14 @@ func Getdents(fd int, buf []byte) (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 Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
|
func getdirentries_freebsd12(fd int, buf []byte, basep *uintptr) (n int, err error) {
|
||||||
var _p0 unsafe.Pointer
|
var _p0 unsafe.Pointer
|
||||||
if len(buf) > 0 {
|
if len(buf) > 0 {
|
||||||
_p0 = unsafe.Pointer(&buf[0])
|
_p0 = unsafe.Pointer(&buf[0])
|
||||||
} else {
|
} else {
|
||||||
_p0 = unsafe.Pointer(&_zero)
|
_p0 = unsafe.Pointer(&_zero)
|
||||||
}
|
}
|
||||||
r0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
|
r0, _, e1 := Syscall6(SYS_GETDIRENTRIES_FREEBSD12, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
|
||||||
n = int(r0)
|
n = int(r0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
|
@ -1222,7 +1257,7 @@ func Listen(s int, backlog 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 Lstat(path string, stat *Stat_t) (err error) {
|
func lstat(path string, stat *stat_freebsd11_t) (err error) {
|
||||||
var _p0 *byte
|
var _p0 *byte
|
||||||
_p0, err = BytePtrFromString(path)
|
_p0, err = BytePtrFromString(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -1282,7 +1317,7 @@ func Mkfifo(path string, mode uint32) (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 Mknod(path string, mode uint32, dev int) (err error) {
|
func mknod(path string, mode uint32, dev int) (err error) {
|
||||||
var _p0 *byte
|
var _p0 *byte
|
||||||
_p0, err = BytePtrFromString(path)
|
_p0, err = BytePtrFromString(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -1297,6 +1332,36 @@ func Mknod(path string, mode uint32, dev 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 mknodat(fd int, path string, mode uint32, dev int) (err error) {
|
||||||
|
var _p0 *byte
|
||||||
|
_p0, err = BytePtrFromString(path)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func mknodat_freebsd12(fd int, path string, mode uint32, dev uint64) (err error) {
|
||||||
|
var _p0 *byte
|
||||||
|
_p0, err = BytePtrFromString(path)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
_, _, e1 := Syscall6(SYS_MKNODAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
|
func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
|
_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
|
@ -1687,7 +1752,7 @@ func Setuid(uid 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 Stat(path string, stat *Stat_t) (err error) {
|
func stat(path string, stat *stat_freebsd11_t) (err error) {
|
||||||
var _p0 *byte
|
var _p0 *byte
|
||||||
_p0, err = BytePtrFromString(path)
|
_p0, err = BytePtrFromString(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -1702,7 +1767,7 @@ func Stat(path string, stat *Stat_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 Statfs(path string, stat *Statfs_t) (err error) {
|
func statfs(path string, stat *statfs_freebsd11_t) (err error) {
|
||||||
var _p0 *byte
|
var _p0 *byte
|
||||||
_p0, err = BytePtrFromString(path)
|
_p0, err = BytePtrFromString(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -1717,6 +1782,21 @@ func Statfs(path string, stat *Statfs_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 statfs_freebsd12(path string, stat *Statfs_t) (err error) {
|
||||||
|
var _p0 *byte
|
||||||
|
_p0, err = BytePtrFromString(path)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
_, _, e1 := Syscall(SYS_STATFS_FREEBSD12, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Symlink(path string, link string) (err error) {
|
func Symlink(path string, link string) (err error) {
|
||||||
var _p0 *byte
|
var _p0 *byte
|
||||||
_p0, err = BytePtrFromString(path)
|
_p0, err = BytePtrFromString(path)
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// mksyscall.pl -l32 -arm -tags freebsd,arm syscall_bsd.go syscall_freebsd.go syscall_freebsd_arm.go
|
// go run mksyscall.go -l32 -arm -tags freebsd,arm syscall_bsd.go syscall_freebsd.go syscall_freebsd_arm.go
|
||||||
// Code generated by the command above; see README.md. DO NOT EDIT.
|
// Code generated by the command above; see README.md. DO NOT EDIT.
|
||||||
|
|
||||||
// +build freebsd,arm
|
// +build freebsd,arm
|
||||||
|
@ -912,7 +912,7 @@ func Fpathconf(fd int, name int) (val 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 Fstat(fd int, stat *Stat_t) (err error) {
|
func fstat(fd int, stat *stat_freebsd11_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 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
|
@ -922,7 +922,17 @@ func Fstat(fd int, stat *Stat_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 Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {
|
func fstat_freebsd12(fd int, stat *Stat_t) (err error) {
|
||||||
|
_, _, e1 := Syscall(SYS_FSTAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func fstatat(fd int, path string, stat *stat_freebsd11_t, flags int) (err error) {
|
||||||
var _p0 *byte
|
var _p0 *byte
|
||||||
_p0, err = BytePtrFromString(path)
|
_p0, err = BytePtrFromString(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -937,7 +947,22 @@ func Fstatat(fd int, path string, stat *Stat_t, flags 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 Fstatfs(fd int, stat *Statfs_t) (err error) {
|
func fstatat_freebsd12(fd int, path string, stat *Stat_t, flags int) (err error) {
|
||||||
|
var _p0 *byte
|
||||||
|
_p0, err = BytePtrFromString(path)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
_, _, e1 := Syscall6(SYS_FSTATAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func fstatfs(fd int, stat *statfs_freebsd11_t) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
|
_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
|
@ -947,6 +972,16 @@ func Fstatfs(fd int, stat *Statfs_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 fstatfs_freebsd12(fd int, stat *Statfs_t) (err error) {
|
||||||
|
_, _, e1 := Syscall(SYS_FSTATFS_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Fsync(fd int) (err error) {
|
func Fsync(fd int) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
|
_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
|
@ -967,14 +1002,14 @@ func Ftruncate(fd int, length 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 Getdents(fd int, buf []byte) (n int, err error) {
|
func getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
|
||||||
var _p0 unsafe.Pointer
|
var _p0 unsafe.Pointer
|
||||||
if len(buf) > 0 {
|
if len(buf) > 0 {
|
||||||
_p0 = unsafe.Pointer(&buf[0])
|
_p0 = unsafe.Pointer(&buf[0])
|
||||||
} else {
|
} else {
|
||||||
_p0 = unsafe.Pointer(&_zero)
|
_p0 = unsafe.Pointer(&_zero)
|
||||||
}
|
}
|
||||||
r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
|
r0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
|
||||||
n = int(r0)
|
n = int(r0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
|
@ -984,14 +1019,14 @@ func Getdents(fd int, buf []byte) (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 Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
|
func getdirentries_freebsd12(fd int, buf []byte, basep *uintptr) (n int, err error) {
|
||||||
var _p0 unsafe.Pointer
|
var _p0 unsafe.Pointer
|
||||||
if len(buf) > 0 {
|
if len(buf) > 0 {
|
||||||
_p0 = unsafe.Pointer(&buf[0])
|
_p0 = unsafe.Pointer(&buf[0])
|
||||||
} else {
|
} else {
|
||||||
_p0 = unsafe.Pointer(&_zero)
|
_p0 = unsafe.Pointer(&_zero)
|
||||||
}
|
}
|
||||||
r0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
|
r0, _, e1 := Syscall6(SYS_GETDIRENTRIES_FREEBSD12, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
|
||||||
n = int(r0)
|
n = int(r0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
|
@ -1222,7 +1257,7 @@ func Listen(s int, backlog 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 Lstat(path string, stat *Stat_t) (err error) {
|
func lstat(path string, stat *stat_freebsd11_t) (err error) {
|
||||||
var _p0 *byte
|
var _p0 *byte
|
||||||
_p0, err = BytePtrFromString(path)
|
_p0, err = BytePtrFromString(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -1282,7 +1317,7 @@ func Mkfifo(path string, mode uint32) (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 Mknod(path string, mode uint32, dev int) (err error) {
|
func mknod(path string, mode uint32, dev int) (err error) {
|
||||||
var _p0 *byte
|
var _p0 *byte
|
||||||
_p0, err = BytePtrFromString(path)
|
_p0, err = BytePtrFromString(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -1297,6 +1332,36 @@ func Mknod(path string, mode uint32, dev 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 mknodat(fd int, path string, mode uint32, dev int) (err error) {
|
||||||
|
var _p0 *byte
|
||||||
|
_p0, err = BytePtrFromString(path)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func mknodat_freebsd12(fd int, path string, mode uint32, dev uint64) (err error) {
|
||||||
|
var _p0 *byte
|
||||||
|
_p0, err = BytePtrFromString(path)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
_, _, e1 := Syscall6(SYS_MKNODAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
|
func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
|
||||||
_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
|
_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
|
@ -1687,7 +1752,7 @@ func Setuid(uid 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 Stat(path string, stat *Stat_t) (err error) {
|
func stat(path string, stat *stat_freebsd11_t) (err error) {
|
||||||
var _p0 *byte
|
var _p0 *byte
|
||||||
_p0, err = BytePtrFromString(path)
|
_p0, err = BytePtrFromString(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -1702,7 +1767,7 @@ func Stat(path string, stat *Stat_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 Statfs(path string, stat *Statfs_t) (err error) {
|
func statfs(path string, stat *statfs_freebsd11_t) (err error) {
|
||||||
var _p0 *byte
|
var _p0 *byte
|
||||||
_p0, err = BytePtrFromString(path)
|
_p0, err = BytePtrFromString(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -1717,6 +1782,21 @@ func Statfs(path string, stat *Statfs_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 statfs_freebsd12(path string, stat *Statfs_t) (err error) {
|
||||||
|
var _p0 *byte
|
||||||
|
_p0, err = BytePtrFromString(path)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
_, _, e1 := Syscall(SYS_STATFS_FREEBSD12, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Symlink(path string, link string) (err error) {
|
func Symlink(path string, link string) (err error) {
|
||||||
var _p0 *byte
|
var _p0 *byte
|
||||||
_p0, err = BytePtrFromString(path)
|
_p0, err = BytePtrFromString(path)
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue