mirror of
				https://github.com/therootcompany/telebit.git
				synced 2025-10-26 19:02:48 +00:00 
			
		
		
		
	fix: update x/sys deps for Go 1.18
This commit is contained in:
		
							parent
							
								
									b596338670
								
							
						
					
					
						commit
						78315dfe71
					
				
							
								
								
									
										2
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								go.mod
									
									
									
									
									
								
							| @ -22,7 +22,7 @@ require ( | ||||
| 	github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749 // indirect | ||||
| 	github.com/shurcooL/vfsgen v0.0.0-20181202132449-6a9ea43bcacd | ||||
| 	github.com/stretchr/testify v1.6.1 | ||||
| 	golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae | ||||
| 	golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a | ||||
| 	golang.org/x/text v0.3.3 // indirect | ||||
| 	golang.org/x/tools v0.0.0-20200626171337-aa94e735be7f // indirect | ||||
| 	gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f // indirect | ||||
|  | ||||
							
								
								
									
										4
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								go.sum
									
									
									
									
									
								
							| @ -429,8 +429,8 @@ golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7w | ||||
| golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae h1:Ih9Yo4hSPImZOpfGuA4bR/ORKTAbhZo2AbWNRCnevdo= | ||||
| golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a h1:dGzPydgVsqGcTRVwiLJ1jVbufYwmzD3LfVPLKsKg+0k= | ||||
| golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||
| golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= | ||||
| golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= | ||||
| golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= | ||||
|  | ||||
							
								
								
									
										8
									
								
								vendor/golang.org/x/sys/unix/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								vendor/golang.org/x/sys/unix/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -76,7 +76,7 @@ arguments can be passed to the kernel. The third is for low-level use by the | ||||
| ForkExec wrapper. Unlike the first two, it does not call into the scheduler to | ||||
| let it know that a system call is running. | ||||
| 
 | ||||
| When porting Go to an new architecture/OS, this file must be implemented for | ||||
| When porting Go to a new architecture/OS, this file must be implemented for | ||||
| each GOOS/GOARCH pair. | ||||
| 
 | ||||
| ### mksysnum | ||||
| @ -107,7 +107,7 @@ prototype can be exported (capitalized) or not. | ||||
| Adding a new syscall often just requires adding a new `//sys` function prototype | ||||
| with the desired arguments and a capitalized name so it is exported. However, if | ||||
| you want the interface to the syscall to be different, often one will make an | ||||
| unexported `//sys` prototype, an then write a custom wrapper in | ||||
| unexported `//sys` prototype, and then write a custom wrapper in | ||||
| `syscall_${GOOS}.go`. | ||||
| 
 | ||||
| ### types files | ||||
| @ -137,7 +137,7 @@ some `#if/#elif` macros in your include statements. | ||||
| 
 | ||||
| This script is used to generate the system's various constants. This doesn't | ||||
| just include the error numbers and error strings, but also the signal numbers | ||||
| an a wide variety of miscellaneous constants. The constants come from the list | ||||
| and a wide variety of miscellaneous constants. The constants come from the list | ||||
| of include files in the `includes_${uname}` variable. A regex then picks out | ||||
| the desired `#define` statements, and generates the corresponding Go constants. | ||||
| The error numbers and strings are generated from `#include <errno.h>`, and the | ||||
| @ -149,7 +149,7 @@ To add a constant, add the header that includes it to the appropriate variable. | ||||
| Then, edit the regex (if necessary) to match the desired constant. Avoid making | ||||
| the regex too broad to avoid matching unintended constants. | ||||
| 
 | ||||
| ### mkmerge.go | ||||
| ### internal/mkmerge | ||||
| 
 | ||||
| This program is used to extract duplicate const, func, and type declarations | ||||
| from the generated architecture-specific files listed below, and merge these | ||||
|  | ||||
							
								
								
									
										3
									
								
								vendor/golang.org/x/sys/unix/aliases.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/golang.org/x/sys/unix/aliases.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -2,7 +2,8 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| // +build aix darwin dragonfly freebsd linux netbsd openbsd solaris | ||||
| //go:build (aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos) && go1.9 | ||||
| // +build aix darwin dragonfly freebsd linux netbsd openbsd solaris zos | ||||
| // +build go1.9 | ||||
| 
 | ||||
| package unix | ||||
|  | ||||
							
								
								
									
										3
									
								
								vendor/golang.org/x/sys/unix/asm_aix_ppc64.s
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/golang.org/x/sys/unix/asm_aix_ppc64.s
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -2,7 +2,8 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| // +build !gccgo | ||||
| //go:build gc | ||||
| // +build gc | ||||
| 
 | ||||
| #include "textflag.h" | ||||
| 
 | ||||
|  | ||||
| @ -1,14 +1,14 @@ | ||||
| // Copyright 2009 The Go Authors. All rights reserved. | ||||
| // Copyright 2021 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 | ||||
| //go:build (freebsd || netbsd || openbsd) && gc | ||||
| // +build freebsd netbsd openbsd | ||||
| // +build gc | ||||
| 
 | ||||
| #include "textflag.h" | ||||
| 
 | ||||
| // | ||||
| // System call support for 386, Darwin | ||||
| // | ||||
| // System call support for 386 BSD | ||||
| 
 | ||||
| // Just jump to package syscall's implementation for all these functions. | ||||
| // The runtime may know about them. | ||||
| @ -22,7 +22,7 @@ TEXT	·Syscall6(SB),NOSPLIT,$0-40 | ||||
| TEXT	·Syscall9(SB),NOSPLIT,$0-52 | ||||
| 	JMP	syscall·Syscall9(SB) | ||||
| 
 | ||||
| TEXT ·RawSyscall(SB),NOSPLIT,$0-28 | ||||
| TEXT	·RawSyscall(SB),NOSPLIT,$0-28 | ||||
| 	JMP	syscall·RawSyscall(SB) | ||||
| 
 | ||||
| TEXT	·RawSyscall6(SB),NOSPLIT,$0-40 | ||||
| @ -1,14 +1,14 @@ | ||||
| // Copyright 2009 The Go Authors. All rights reserved. | ||||
| // Copyright 2021 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 | ||||
| //go:build (darwin || dragonfly || freebsd || netbsd || openbsd) && gc | ||||
| // +build darwin dragonfly freebsd netbsd openbsd | ||||
| // +build gc | ||||
| 
 | ||||
| #include "textflag.h" | ||||
| 
 | ||||
| // | ||||
| // System call support for AMD64, Darwin | ||||
| // | ||||
| // System call support for AMD64 BSD | ||||
| 
 | ||||
| // Just jump to package syscall's implementation for all these functions. | ||||
| // The runtime may know about them. | ||||
| @ -1,14 +1,14 @@ | ||||
| // Copyright 2013 The Go Authors. All rights reserved. | ||||
| // Copyright 2021 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 | ||||
| //go:build (freebsd || netbsd || openbsd) && gc | ||||
| // +build freebsd netbsd openbsd | ||||
| // +build gc | ||||
| 
 | ||||
| #include "textflag.h" | ||||
| 
 | ||||
| // | ||||
| // System call support for ARM, NetBSD | ||||
| // | ||||
| // System call support for ARM BSD | ||||
| 
 | ||||
| // Just jump to package syscall's implementation for all these functions. | ||||
| // The runtime may know about them. | ||||
| @ -1,14 +1,14 @@ | ||||
| // Copyright 2009 The Go Authors. All rights reserved. | ||||
| // Copyright 2021 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 | ||||
| //go:build (darwin || freebsd || netbsd || openbsd) && gc | ||||
| // +build darwin freebsd netbsd openbsd | ||||
| // +build gc | ||||
| 
 | ||||
| #include "textflag.h" | ||||
| 
 | ||||
| // | ||||
| // System call support for AMD64, NetBSD | ||||
| // | ||||
| // System call support for ARM64 BSD | ||||
| 
 | ||||
| // Just jump to package syscall's implementation for all these functions. | ||||
| // The runtime may know about them. | ||||
							
								
								
									
										30
									
								
								vendor/golang.org/x/sys/unix/asm_darwin_arm.s
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										30
									
								
								vendor/golang.org/x/sys/unix/asm_darwin_arm.s
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -1,30 +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 !gccgo | ||||
| // +build arm,darwin | ||||
| 
 | ||||
| #include "textflag.h" | ||||
| 
 | ||||
| // | ||||
| // System call support for ARM, Darwin | ||||
| // | ||||
| 
 | ||||
| // Just jump to package syscall's implementation for all these functions. | ||||
| // The runtime may know about them. | ||||
| 
 | ||||
| TEXT	·Syscall(SB),NOSPLIT,$0-28 | ||||
| 	B	syscall·Syscall(SB) | ||||
| 
 | ||||
| TEXT	·Syscall6(SB),NOSPLIT,$0-40 | ||||
| 	B	syscall·Syscall6(SB) | ||||
| 
 | ||||
| TEXT	·Syscall9(SB),NOSPLIT,$0-52 | ||||
| 	B	syscall·Syscall9(SB) | ||||
| 
 | ||||
| TEXT	·RawSyscall(SB),NOSPLIT,$0-28 | ||||
| 	B	syscall·RawSyscall(SB) | ||||
| 
 | ||||
| TEXT	·RawSyscall6(SB),NOSPLIT,$0-40 | ||||
| 	B	syscall·RawSyscall6(SB) | ||||
							
								
								
									
										30
									
								
								vendor/golang.org/x/sys/unix/asm_darwin_arm64.s
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										30
									
								
								vendor/golang.org/x/sys/unix/asm_darwin_arm64.s
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -1,30 +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 !gccgo | ||||
| // +build arm64,darwin | ||||
| 
 | ||||
| #include "textflag.h" | ||||
| 
 | ||||
| // | ||||
| // System call support for AMD64, Darwin | ||||
| // | ||||
| 
 | ||||
| // Just jump to package syscall's implementation for all these functions. | ||||
| // The runtime may know about them. | ||||
| 
 | ||||
| TEXT	·Syscall(SB),NOSPLIT,$0-56 | ||||
| 	B	syscall·Syscall(SB) | ||||
| 
 | ||||
| TEXT	·Syscall6(SB),NOSPLIT,$0-80 | ||||
| 	B	syscall·Syscall6(SB) | ||||
| 
 | ||||
| TEXT	·Syscall9(SB),NOSPLIT,$0-104 | ||||
| 	B	syscall·Syscall9(SB) | ||||
| 
 | ||||
| TEXT	·RawSyscall(SB),NOSPLIT,$0-56 | ||||
| 	B	syscall·RawSyscall(SB) | ||||
| 
 | ||||
| TEXT	·RawSyscall6(SB),NOSPLIT,$0-80 | ||||
| 	B	syscall·RawSyscall6(SB) | ||||
							
								
								
									
										29
									
								
								vendor/golang.org/x/sys/unix/asm_dragonfly_amd64.s
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										29
									
								
								vendor/golang.org/x/sys/unix/asm_dragonfly_amd64.s
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -1,29 +0,0 @@ | ||||
| // Copyright 2009 The Go Authors. All rights reserved. | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| // +build !gccgo | ||||
| 
 | ||||
| #include "textflag.h" | ||||
| 
 | ||||
| // | ||||
| // System call support for AMD64, DragonFly | ||||
| // | ||||
| 
 | ||||
| // Just jump to package syscall's implementation for all these functions. | ||||
| // The runtime may know about them. | ||||
| 
 | ||||
| TEXT	·Syscall(SB),NOSPLIT,$0-56 | ||||
| 	JMP	syscall·Syscall(SB) | ||||
| 
 | ||||
| TEXT	·Syscall6(SB),NOSPLIT,$0-80 | ||||
| 	JMP	syscall·Syscall6(SB) | ||||
| 
 | ||||
| TEXT	·Syscall9(SB),NOSPLIT,$0-104 | ||||
| 	JMP	syscall·Syscall9(SB) | ||||
| 
 | ||||
| TEXT ·RawSyscall(SB),NOSPLIT,$0-56 | ||||
| 	JMP	syscall·RawSyscall(SB) | ||||
| 
 | ||||
| TEXT	·RawSyscall6(SB),NOSPLIT,$0-80 | ||||
| 	JMP	syscall·RawSyscall6(SB) | ||||
							
								
								
									
										29
									
								
								vendor/golang.org/x/sys/unix/asm_freebsd_386.s
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										29
									
								
								vendor/golang.org/x/sys/unix/asm_freebsd_386.s
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -1,29 +0,0 @@ | ||||
| // Copyright 2009 The Go Authors. All rights reserved. | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| // +build !gccgo | ||||
| 
 | ||||
| #include "textflag.h" | ||||
| 
 | ||||
| // | ||||
| // System call support for 386, FreeBSD | ||||
| // | ||||
| 
 | ||||
| // Just jump to package syscall's implementation for all these functions. | ||||
| // The runtime may know about them. | ||||
| 
 | ||||
| TEXT	·Syscall(SB),NOSPLIT,$0-28 | ||||
| 	JMP	syscall·Syscall(SB) | ||||
| 
 | ||||
| TEXT	·Syscall6(SB),NOSPLIT,$0-40 | ||||
| 	JMP	syscall·Syscall6(SB) | ||||
| 
 | ||||
| TEXT	·Syscall9(SB),NOSPLIT,$0-52 | ||||
| 	JMP	syscall·Syscall9(SB) | ||||
| 
 | ||||
| TEXT ·RawSyscall(SB),NOSPLIT,$0-28 | ||||
| 	JMP	syscall·RawSyscall(SB) | ||||
| 
 | ||||
| TEXT	·RawSyscall6(SB),NOSPLIT,$0-40 | ||||
| 	JMP	syscall·RawSyscall6(SB) | ||||
							
								
								
									
										29
									
								
								vendor/golang.org/x/sys/unix/asm_freebsd_amd64.s
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										29
									
								
								vendor/golang.org/x/sys/unix/asm_freebsd_amd64.s
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -1,29 +0,0 @@ | ||||
| // Copyright 2009 The Go Authors. All rights reserved. | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| // +build !gccgo | ||||
| 
 | ||||
| #include "textflag.h" | ||||
| 
 | ||||
| // | ||||
| // System call support for AMD64, FreeBSD | ||||
| // | ||||
| 
 | ||||
| // Just jump to package syscall's implementation for all these functions. | ||||
| // The runtime may know about them. | ||||
| 
 | ||||
| TEXT	·Syscall(SB),NOSPLIT,$0-56 | ||||
| 	JMP	syscall·Syscall(SB) | ||||
| 
 | ||||
| TEXT	·Syscall6(SB),NOSPLIT,$0-80 | ||||
| 	JMP	syscall·Syscall6(SB) | ||||
| 
 | ||||
| TEXT	·Syscall9(SB),NOSPLIT,$0-104 | ||||
| 	JMP	syscall·Syscall9(SB) | ||||
| 
 | ||||
| TEXT ·RawSyscall(SB),NOSPLIT,$0-56 | ||||
| 	JMP	syscall·RawSyscall(SB) | ||||
| 
 | ||||
| TEXT	·RawSyscall6(SB),NOSPLIT,$0-80 | ||||
| 	JMP	syscall·RawSyscall6(SB) | ||||
							
								
								
									
										29
									
								
								vendor/golang.org/x/sys/unix/asm_freebsd_arm.s
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										29
									
								
								vendor/golang.org/x/sys/unix/asm_freebsd_arm.s
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -1,29 +0,0 @@ | ||||
| // Copyright 2012 The Go Authors. All rights reserved. | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| // +build !gccgo | ||||
| 
 | ||||
| #include "textflag.h" | ||||
| 
 | ||||
| // | ||||
| // System call support for ARM, FreeBSD | ||||
| // | ||||
| 
 | ||||
| // Just jump to package syscall's implementation for all these functions. | ||||
| // The runtime may know about them. | ||||
| 
 | ||||
| TEXT	·Syscall(SB),NOSPLIT,$0-28 | ||||
| 	B	syscall·Syscall(SB) | ||||
| 
 | ||||
| TEXT	·Syscall6(SB),NOSPLIT,$0-40 | ||||
| 	B	syscall·Syscall6(SB) | ||||
| 
 | ||||
| TEXT	·Syscall9(SB),NOSPLIT,$0-52 | ||||
| 	B	syscall·Syscall9(SB) | ||||
| 
 | ||||
| TEXT	·RawSyscall(SB),NOSPLIT,$0-28 | ||||
| 	B	syscall·RawSyscall(SB) | ||||
| 
 | ||||
| TEXT	·RawSyscall6(SB),NOSPLIT,$0-40 | ||||
| 	B	syscall·RawSyscall6(SB) | ||||
							
								
								
									
										29
									
								
								vendor/golang.org/x/sys/unix/asm_freebsd_arm64.s
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										29
									
								
								vendor/golang.org/x/sys/unix/asm_freebsd_arm64.s
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -1,29 +0,0 @@ | ||||
| // Copyright 2018 The Go Authors. All rights reserved. | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| // +build !gccgo | ||||
| 
 | ||||
| #include "textflag.h" | ||||
| 
 | ||||
| // | ||||
| // System call support for ARM64, FreeBSD | ||||
| // | ||||
| 
 | ||||
| // Just jump to package syscall's implementation for all these functions. | ||||
| // The runtime may know about them. | ||||
| 
 | ||||
| TEXT	·Syscall(SB),NOSPLIT,$0-56 | ||||
| 	JMP	syscall·Syscall(SB) | ||||
| 
 | ||||
| TEXT	·Syscall6(SB),NOSPLIT,$0-80 | ||||
| 	JMP	syscall·Syscall6(SB) | ||||
| 
 | ||||
| TEXT	·Syscall9(SB),NOSPLIT,$0-104 | ||||
| 	JMP	syscall·Syscall9(SB) | ||||
| 
 | ||||
| TEXT ·RawSyscall(SB),NOSPLIT,$0-56 | ||||
| 	JMP	syscall·RawSyscall(SB) | ||||
| 
 | ||||
| TEXT	·RawSyscall6(SB),NOSPLIT,$0-80 | ||||
| 	JMP	syscall·RawSyscall6(SB) | ||||
							
								
								
									
										3
									
								
								vendor/golang.org/x/sys/unix/asm_linux_386.s
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/golang.org/x/sys/unix/asm_linux_386.s
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -2,7 +2,8 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| // +build !gccgo | ||||
| //go:build gc | ||||
| // +build gc | ||||
| 
 | ||||
| #include "textflag.h" | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										3
									
								
								vendor/golang.org/x/sys/unix/asm_linux_amd64.s
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/golang.org/x/sys/unix/asm_linux_amd64.s
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -2,7 +2,8 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| // +build !gccgo | ||||
| //go:build gc | ||||
| // +build gc | ||||
| 
 | ||||
| #include "textflag.h" | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										3
									
								
								vendor/golang.org/x/sys/unix/asm_linux_arm.s
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/golang.org/x/sys/unix/asm_linux_arm.s
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -2,7 +2,8 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| // +build !gccgo | ||||
| //go:build gc | ||||
| // +build gc | ||||
| 
 | ||||
| #include "textflag.h" | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										3
									
								
								vendor/golang.org/x/sys/unix/asm_linux_arm64.s
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/golang.org/x/sys/unix/asm_linux_arm64.s
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -2,9 +2,10 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| //go:build linux && arm64 && gc | ||||
| // +build linux | ||||
| // +build arm64 | ||||
| // +build !gccgo | ||||
| // +build gc | ||||
| 
 | ||||
| #include "textflag.h" | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										54
									
								
								vendor/golang.org/x/sys/unix/asm_linux_loong64.s
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								vendor/golang.org/x/sys/unix/asm_linux_loong64.s
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,54 @@ | ||||
| // Copyright 2022 The Go Authors. All rights reserved. | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| //go:build linux && loong64 && gc | ||||
| // +build linux | ||||
| // +build loong64 | ||||
| // +build gc | ||||
| 
 | ||||
| #include "textflag.h" | ||||
| 
 | ||||
| 
 | ||||
| // Just jump to package syscall's implementation for all these functions. | ||||
| // The runtime may know about them. | ||||
| 
 | ||||
| TEXT ·Syscall(SB),NOSPLIT,$0-56 | ||||
| 	JMP	syscall·Syscall(SB) | ||||
| 
 | ||||
| TEXT ·Syscall6(SB),NOSPLIT,$0-80 | ||||
| 	JMP	syscall·Syscall6(SB) | ||||
| 
 | ||||
| TEXT ·SyscallNoError(SB),NOSPLIT,$0-48 | ||||
| 	JAL	runtime·entersyscall(SB) | ||||
| 	MOVV	a1+8(FP), R4 | ||||
| 	MOVV	a2+16(FP), R5 | ||||
| 	MOVV	a3+24(FP), R6 | ||||
| 	MOVV	R0, R7 | ||||
| 	MOVV	R0, R8 | ||||
| 	MOVV	R0, R9 | ||||
| 	MOVV	trap+0(FP), R11	// syscall entry | ||||
| 	SYSCALL | ||||
| 	MOVV	R4, r1+32(FP) | ||||
| 	MOVV	R5, r2+40(FP) | ||||
| 	JAL	runtime·exitsyscall(SB) | ||||
| 	RET | ||||
| 
 | ||||
| TEXT ·RawSyscall(SB),NOSPLIT,$0-56 | ||||
| 	JMP	syscall·RawSyscall(SB) | ||||
| 
 | ||||
| TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 | ||||
| 	JMP	syscall·RawSyscall6(SB) | ||||
| 
 | ||||
| TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48 | ||||
| 	MOVV	a1+8(FP), R4 | ||||
| 	MOVV	a2+16(FP), R5 | ||||
| 	MOVV	a3+24(FP), R6 | ||||
| 	MOVV	R0, R7 | ||||
| 	MOVV	R0, R8 | ||||
| 	MOVV	R0, R9 | ||||
| 	MOVV	trap+0(FP), R11	// syscall entry | ||||
| 	SYSCALL | ||||
| 	MOVV	R4, r1+32(FP) | ||||
| 	MOVV	R5, r2+40(FP) | ||||
| 	RET | ||||
							
								
								
									
										3
									
								
								vendor/golang.org/x/sys/unix/asm_linux_mips64x.s
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/golang.org/x/sys/unix/asm_linux_mips64x.s
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -2,9 +2,10 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| //go:build linux && (mips64 || mips64le) && gc | ||||
| // +build linux | ||||
| // +build mips64 mips64le | ||||
| // +build !gccgo | ||||
| // +build gc | ||||
| 
 | ||||
| #include "textflag.h" | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										3
									
								
								vendor/golang.org/x/sys/unix/asm_linux_mipsx.s
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/golang.org/x/sys/unix/asm_linux_mipsx.s
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -2,9 +2,10 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| //go:build linux && (mips || mipsle) && gc | ||||
| // +build linux | ||||
| // +build mips mipsle | ||||
| // +build !gccgo | ||||
| // +build gc | ||||
| 
 | ||||
| #include "textflag.h" | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										3
									
								
								vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -2,9 +2,10 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| //go:build linux && (ppc64 || ppc64le) && gc | ||||
| // +build linux | ||||
| // +build ppc64 ppc64le | ||||
| // +build !gccgo | ||||
| // +build gc | ||||
| 
 | ||||
| #include "textflag.h" | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										4
									
								
								vendor/golang.org/x/sys/unix/asm_linux_riscv64.s
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/golang.org/x/sys/unix/asm_linux_riscv64.s
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -2,7 +2,9 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| // +build riscv64,!gccgo | ||||
| //go:build riscv64 && gc | ||||
| // +build riscv64 | ||||
| // +build gc | ||||
| 
 | ||||
| #include "textflag.h" | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										5
									
								
								vendor/golang.org/x/sys/unix/asm_linux_s390x.s
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								vendor/golang.org/x/sys/unix/asm_linux_s390x.s
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -2,9 +2,10 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| // +build s390x | ||||
| //go:build linux && s390x && gc | ||||
| // +build linux | ||||
| // +build !gccgo | ||||
| // +build s390x | ||||
| // +build gc | ||||
| 
 | ||||
| #include "textflag.h" | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										29
									
								
								vendor/golang.org/x/sys/unix/asm_netbsd_386.s
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										29
									
								
								vendor/golang.org/x/sys/unix/asm_netbsd_386.s
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -1,29 +0,0 @@ | ||||
| // Copyright 2009 The Go Authors. All rights reserved. | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| // +build !gccgo | ||||
| 
 | ||||
| #include "textflag.h" | ||||
| 
 | ||||
| // | ||||
| // System call support for 386, NetBSD | ||||
| // | ||||
| 
 | ||||
| // Just jump to package syscall's implementation for all these functions. | ||||
| // The runtime may know about them. | ||||
| 
 | ||||
| TEXT	·Syscall(SB),NOSPLIT,$0-28 | ||||
| 	JMP	syscall·Syscall(SB) | ||||
| 
 | ||||
| TEXT	·Syscall6(SB),NOSPLIT,$0-40 | ||||
| 	JMP	syscall·Syscall6(SB) | ||||
| 
 | ||||
| TEXT	·Syscall9(SB),NOSPLIT,$0-52 | ||||
| 	JMP	syscall·Syscall9(SB) | ||||
| 
 | ||||
| TEXT ·RawSyscall(SB),NOSPLIT,$0-28 | ||||
| 	JMP	syscall·RawSyscall(SB) | ||||
| 
 | ||||
| TEXT	·RawSyscall6(SB),NOSPLIT,$0-40 | ||||
| 	JMP	syscall·RawSyscall6(SB) | ||||
							
								
								
									
										29
									
								
								vendor/golang.org/x/sys/unix/asm_netbsd_arm64.s
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										29
									
								
								vendor/golang.org/x/sys/unix/asm_netbsd_arm64.s
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -1,29 +0,0 @@ | ||||
| // Copyright 2019 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 call support for ARM64, NetBSD | ||||
| // | ||||
| 
 | ||||
| // Just jump to package syscall's implementation for all these functions. | ||||
| // The runtime may know about them. | ||||
| 
 | ||||
| TEXT	·Syscall(SB),NOSPLIT,$0-56 | ||||
| 	B	syscall·Syscall(SB) | ||||
| 
 | ||||
| TEXT	·Syscall6(SB),NOSPLIT,$0-80 | ||||
| 	B	syscall·Syscall6(SB) | ||||
| 
 | ||||
| TEXT	·Syscall9(SB),NOSPLIT,$0-104 | ||||
| 	B	syscall·Syscall9(SB) | ||||
| 
 | ||||
| TEXT	·RawSyscall(SB),NOSPLIT,$0-56 | ||||
| 	B	syscall·RawSyscall(SB) | ||||
| 
 | ||||
| TEXT	·RawSyscall6(SB),NOSPLIT,$0-80 | ||||
| 	B	syscall·RawSyscall6(SB) | ||||
							
								
								
									
										29
									
								
								vendor/golang.org/x/sys/unix/asm_openbsd_386.s
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										29
									
								
								vendor/golang.org/x/sys/unix/asm_openbsd_386.s
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -1,29 +0,0 @@ | ||||
| // Copyright 2009 The Go Authors. All rights reserved. | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| // +build !gccgo | ||||
| 
 | ||||
| #include "textflag.h" | ||||
| 
 | ||||
| // | ||||
| // System call support for 386, OpenBSD | ||||
| // | ||||
| 
 | ||||
| // Just jump to package syscall's implementation for all these functions. | ||||
| // The runtime may know about them. | ||||
| 
 | ||||
| TEXT	·Syscall(SB),NOSPLIT,$0-28 | ||||
| 	JMP	syscall·Syscall(SB) | ||||
| 
 | ||||
| TEXT	·Syscall6(SB),NOSPLIT,$0-40 | ||||
| 	JMP	syscall·Syscall6(SB) | ||||
| 
 | ||||
| TEXT	·Syscall9(SB),NOSPLIT,$0-52 | ||||
| 	JMP	syscall·Syscall9(SB) | ||||
| 
 | ||||
| TEXT ·RawSyscall(SB),NOSPLIT,$0-28 | ||||
| 	JMP	syscall·RawSyscall(SB) | ||||
| 
 | ||||
| TEXT	·RawSyscall6(SB),NOSPLIT,$0-40 | ||||
| 	JMP	syscall·RawSyscall6(SB) | ||||
							
								
								
									
										29
									
								
								vendor/golang.org/x/sys/unix/asm_openbsd_amd64.s
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										29
									
								
								vendor/golang.org/x/sys/unix/asm_openbsd_amd64.s
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -1,29 +0,0 @@ | ||||
| // Copyright 2009 The Go Authors. All rights reserved. | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| // +build !gccgo | ||||
| 
 | ||||
| #include "textflag.h" | ||||
| 
 | ||||
| // | ||||
| // System call support for AMD64, OpenBSD | ||||
| // | ||||
| 
 | ||||
| // Just jump to package syscall's implementation for all these functions. | ||||
| // The runtime may know about them. | ||||
| 
 | ||||
| TEXT	·Syscall(SB),NOSPLIT,$0-56 | ||||
| 	JMP	syscall·Syscall(SB) | ||||
| 
 | ||||
| TEXT	·Syscall6(SB),NOSPLIT,$0-80 | ||||
| 	JMP	syscall·Syscall6(SB) | ||||
| 
 | ||||
| TEXT	·Syscall9(SB),NOSPLIT,$0-104 | ||||
| 	JMP	syscall·Syscall9(SB) | ||||
| 
 | ||||
| TEXT	·RawSyscall(SB),NOSPLIT,$0-56 | ||||
| 	JMP	syscall·RawSyscall(SB) | ||||
| 
 | ||||
| TEXT	·RawSyscall6(SB),NOSPLIT,$0-80 | ||||
| 	JMP	syscall·RawSyscall6(SB) | ||||
							
								
								
									
										29
									
								
								vendor/golang.org/x/sys/unix/asm_openbsd_arm.s
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										29
									
								
								vendor/golang.org/x/sys/unix/asm_openbsd_arm.s
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -1,29 +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 !gccgo | ||||
| 
 | ||||
| #include "textflag.h" | ||||
| 
 | ||||
| // | ||||
| // System call support for ARM, OpenBSD | ||||
| // | ||||
| 
 | ||||
| // Just jump to package syscall's implementation for all these functions. | ||||
| // The runtime may know about them. | ||||
| 
 | ||||
| TEXT	·Syscall(SB),NOSPLIT,$0-28 | ||||
| 	B	syscall·Syscall(SB) | ||||
| 
 | ||||
| TEXT	·Syscall6(SB),NOSPLIT,$0-40 | ||||
| 	B	syscall·Syscall6(SB) | ||||
| 
 | ||||
| TEXT	·Syscall9(SB),NOSPLIT,$0-52 | ||||
| 	B	syscall·Syscall9(SB) | ||||
| 
 | ||||
| TEXT	·RawSyscall(SB),NOSPLIT,$0-28 | ||||
| 	B	syscall·RawSyscall(SB) | ||||
| 
 | ||||
| TEXT	·RawSyscall6(SB),NOSPLIT,$0-40 | ||||
| 	B	syscall·RawSyscall6(SB) | ||||
| @ -2,12 +2,13 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| // +build !gccgo | ||||
| //go:build gc | ||||
| // +build gc | ||||
| 
 | ||||
| #include "textflag.h" | ||||
| 
 | ||||
| // | ||||
| // System call support for arm64, OpenBSD | ||||
| // System call support for mips64, OpenBSD | ||||
| // | ||||
| 
 | ||||
| // Just jump to package syscall's implementation for all these functions. | ||||
							
								
								
									
										3
									
								
								vendor/golang.org/x/sys/unix/asm_solaris_amd64.s
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/golang.org/x/sys/unix/asm_solaris_amd64.s
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -2,7 +2,8 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| // +build !gccgo | ||||
| //go:build gc | ||||
| // +build gc | ||||
| 
 | ||||
| #include "textflag.h" | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										426
									
								
								vendor/golang.org/x/sys/unix/asm_zos_s390x.s
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										426
									
								
								vendor/golang.org/x/sys/unix/asm_zos_s390x.s
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,426 @@ | ||||
| // Copyright 2020 The Go Authors. All rights reserved. | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| //go:build zos && s390x && gc | ||||
| // +build zos | ||||
| // +build s390x | ||||
| // +build gc | ||||
| 
 | ||||
| #include "textflag.h" | ||||
| 
 | ||||
| #define PSALAA            1208(R0) | ||||
| #define GTAB64(x)           80(x) | ||||
| #define LCA64(x)            88(x) | ||||
| #define CAA(x)               8(x) | ||||
| #define EDCHPXV(x)        1016(x)       // in the CAA | ||||
| #define SAVSTACK_ASYNC(x)  336(x)       // in the LCA | ||||
| 
 | ||||
| // SS_*, where x=SAVSTACK_ASYNC | ||||
| #define SS_LE(x)             0(x) | ||||
| #define SS_GO(x)             8(x) | ||||
| #define SS_ERRNO(x)         16(x) | ||||
| #define SS_ERRNOJR(x)       20(x) | ||||
| 
 | ||||
| #define LE_CALL BYTE $0x0D; BYTE $0x76; // BL R7, R6
 | ||||
| 
 | ||||
| TEXT ·clearErrno(SB),NOSPLIT,$0-0 | ||||
| 	BL	addrerrno<>(SB) | ||||
| 	MOVD	$0, 0(R3) | ||||
| 	RET | ||||
| 
 | ||||
| // Returns the address of errno in R3. | ||||
| TEXT addrerrno<>(SB),NOSPLIT|NOFRAME,$0-0 | ||||
| 	// Get library control area (LCA). | ||||
| 	MOVW	PSALAA, R8 | ||||
| 	MOVD	LCA64(R8), R8 | ||||
| 
 | ||||
| 	// Get __errno FuncDesc. | ||||
| 	MOVD	CAA(R8), R9 | ||||
| 	MOVD	EDCHPXV(R9), R9 | ||||
| 	ADD	$(0x156*16), R9 | ||||
| 	LMG	0(R9), R5, R6 | ||||
| 
 | ||||
| 	// Switch to saved LE stack. | ||||
| 	MOVD	SAVSTACK_ASYNC(R8), R9 | ||||
| 	MOVD	0(R9), R4 | ||||
| 	MOVD	$0, 0(R9) | ||||
| 
 | ||||
| 	// Call __errno function. | ||||
| 	LE_CALL | ||||
| 	NOPH | ||||
| 
 | ||||
| 	// Switch back to Go stack. | ||||
| 	XOR	R0, R0      // Restore R0 to $0. | ||||
| 	MOVD	R4, 0(R9)   // Save stack pointer. | ||||
| 	RET | ||||
| 
 | ||||
| TEXT ·syscall_syscall(SB),NOSPLIT,$0-56 | ||||
| 	BL	runtime·entersyscall(SB) | ||||
| 	MOVD	a1+8(FP), R1 | ||||
| 	MOVD	a2+16(FP), R2 | ||||
| 	MOVD	a3+24(FP), R3 | ||||
| 
 | ||||
| 	// Get library control area (LCA). | ||||
| 	MOVW	PSALAA, R8 | ||||
| 	MOVD	LCA64(R8), R8 | ||||
| 
 | ||||
| 	// Get function. | ||||
| 	MOVD	CAA(R8), R9 | ||||
| 	MOVD	EDCHPXV(R9), R9 | ||||
| 	MOVD	trap+0(FP), R5 | ||||
| 	SLD	$4, R5 | ||||
| 	ADD	R5, R9 | ||||
| 	LMG	0(R9), R5, R6 | ||||
| 
 | ||||
| 	// Restore LE stack. | ||||
| 	MOVD	SAVSTACK_ASYNC(R8), R9 | ||||
| 	MOVD	0(R9), R4 | ||||
| 	MOVD	$0, 0(R9) | ||||
| 
 | ||||
| 	// Call function. | ||||
| 	LE_CALL | ||||
| 	NOPH | ||||
| 	XOR	R0, R0      // Restore R0 to $0. | ||||
| 	MOVD	R4, 0(R9)   // Save stack pointer. | ||||
| 
 | ||||
| 	MOVD	R3, r1+32(FP) | ||||
| 	MOVD	R0, r2+40(FP) | ||||
| 	MOVD	R0, err+48(FP) | ||||
| 	MOVW	R3, R4 | ||||
| 	CMP	R4, $-1 | ||||
| 	BNE	done | ||||
| 	BL	addrerrno<>(SB) | ||||
| 	MOVWZ	0(R3), R3 | ||||
| 	MOVD	R3, err+48(FP) | ||||
| done: | ||||
| 	BL	runtime·exitsyscall(SB) | ||||
| 	RET | ||||
| 
 | ||||
| TEXT ·syscall_rawsyscall(SB),NOSPLIT,$0-56 | ||||
| 	MOVD	a1+8(FP), R1 | ||||
| 	MOVD	a2+16(FP), R2 | ||||
| 	MOVD	a3+24(FP), R3 | ||||
| 
 | ||||
| 	// Get library control area (LCA). | ||||
| 	MOVW	PSALAA, R8 | ||||
| 	MOVD	LCA64(R8), R8 | ||||
| 
 | ||||
| 	// Get function. | ||||
| 	MOVD	CAA(R8), R9 | ||||
| 	MOVD	EDCHPXV(R9), R9 | ||||
| 	MOVD	trap+0(FP), R5 | ||||
| 	SLD	$4, R5 | ||||
| 	ADD	R5, R9 | ||||
| 	LMG	0(R9), R5, R6 | ||||
| 
 | ||||
| 	// Restore LE stack. | ||||
| 	MOVD	SAVSTACK_ASYNC(R8), R9 | ||||
| 	MOVD	0(R9), R4 | ||||
| 	MOVD	$0, 0(R9) | ||||
| 
 | ||||
| 	// Call function. | ||||
| 	LE_CALL | ||||
| 	NOPH | ||||
| 	XOR	R0, R0      // Restore R0 to $0. | ||||
| 	MOVD	R4, 0(R9)   // Save stack pointer. | ||||
| 
 | ||||
| 	MOVD	R3, r1+32(FP) | ||||
| 	MOVD	R0, r2+40(FP) | ||||
| 	MOVD	R0, err+48(FP) | ||||
| 	MOVW	R3, R4 | ||||
| 	CMP	R4, $-1 | ||||
| 	BNE	done | ||||
| 	BL	addrerrno<>(SB) | ||||
| 	MOVWZ	0(R3), R3 | ||||
| 	MOVD	R3, err+48(FP) | ||||
| done: | ||||
| 	RET | ||||
| 
 | ||||
| TEXT ·syscall_syscall6(SB),NOSPLIT,$0-80 | ||||
| 	BL	runtime·entersyscall(SB) | ||||
| 	MOVD	a1+8(FP), R1 | ||||
| 	MOVD	a2+16(FP), R2 | ||||
| 	MOVD	a3+24(FP), R3 | ||||
| 
 | ||||
| 	// Get library control area (LCA). | ||||
| 	MOVW	PSALAA, R8 | ||||
| 	MOVD	LCA64(R8), R8 | ||||
| 
 | ||||
| 	// Get function. | ||||
| 	MOVD	CAA(R8), R9 | ||||
| 	MOVD	EDCHPXV(R9), R9 | ||||
| 	MOVD	trap+0(FP), R5 | ||||
| 	SLD	$4, R5 | ||||
| 	ADD	R5, R9 | ||||
| 	LMG	0(R9), R5, R6 | ||||
| 
 | ||||
| 	// Restore LE stack. | ||||
| 	MOVD	SAVSTACK_ASYNC(R8), R9 | ||||
| 	MOVD	0(R9), R4 | ||||
| 	MOVD	$0, 0(R9) | ||||
| 
 | ||||
| 	// Fill in parameter list. | ||||
| 	MOVD	a4+32(FP), R12 | ||||
| 	MOVD	R12, (2176+24)(R4) | ||||
| 	MOVD	a5+40(FP), R12 | ||||
| 	MOVD	R12, (2176+32)(R4) | ||||
| 	MOVD	a6+48(FP), R12 | ||||
| 	MOVD	R12, (2176+40)(R4) | ||||
| 
 | ||||
| 	// Call function. | ||||
| 	LE_CALL | ||||
| 	NOPH | ||||
| 	XOR	R0, R0      // Restore R0 to $0. | ||||
| 	MOVD	R4, 0(R9)   // Save stack pointer. | ||||
| 
 | ||||
| 	MOVD	R3, r1+56(FP) | ||||
| 	MOVD	R0, r2+64(FP) | ||||
| 	MOVD	R0, err+72(FP) | ||||
| 	MOVW	R3, R4 | ||||
| 	CMP	R4, $-1 | ||||
| 	BNE	done | ||||
| 	BL	addrerrno<>(SB) | ||||
| 	MOVWZ	0(R3), R3 | ||||
| 	MOVD	R3, err+72(FP) | ||||
| done: | ||||
| 	BL	runtime·exitsyscall(SB) | ||||
| 	RET | ||||
| 
 | ||||
| TEXT ·syscall_rawsyscall6(SB),NOSPLIT,$0-80 | ||||
| 	MOVD	a1+8(FP), R1 | ||||
| 	MOVD	a2+16(FP), R2 | ||||
| 	MOVD	a3+24(FP), R3 | ||||
| 
 | ||||
| 	// Get library control area (LCA). | ||||
| 	MOVW	PSALAA, R8 | ||||
| 	MOVD	LCA64(R8), R8 | ||||
| 
 | ||||
| 	// Get function. | ||||
| 	MOVD	CAA(R8), R9 | ||||
| 	MOVD	EDCHPXV(R9), R9 | ||||
| 	MOVD	trap+0(FP), R5 | ||||
| 	SLD	$4, R5 | ||||
| 	ADD	R5, R9 | ||||
| 	LMG	0(R9), R5, R6 | ||||
| 
 | ||||
| 	// Restore LE stack. | ||||
| 	MOVD	SAVSTACK_ASYNC(R8), R9 | ||||
| 	MOVD	0(R9), R4 | ||||
| 	MOVD	$0, 0(R9) | ||||
| 
 | ||||
| 	// Fill in parameter list. | ||||
| 	MOVD	a4+32(FP), R12 | ||||
| 	MOVD	R12, (2176+24)(R4) | ||||
| 	MOVD	a5+40(FP), R12 | ||||
| 	MOVD	R12, (2176+32)(R4) | ||||
| 	MOVD	a6+48(FP), R12 | ||||
| 	MOVD	R12, (2176+40)(R4) | ||||
| 
 | ||||
| 	// Call function. | ||||
| 	LE_CALL | ||||
| 	NOPH | ||||
| 	XOR	R0, R0      // Restore R0 to $0. | ||||
| 	MOVD	R4, 0(R9)   // Save stack pointer. | ||||
| 
 | ||||
| 	MOVD	R3, r1+56(FP) | ||||
| 	MOVD	R0, r2+64(FP) | ||||
| 	MOVD	R0, err+72(FP) | ||||
| 	MOVW	R3, R4 | ||||
| 	CMP	R4, $-1 | ||||
| 	BNE	done | ||||
| 	BL	·rrno<>(SB) | ||||
| 	MOVWZ	0(R3), R3 | ||||
| 	MOVD	R3, err+72(FP) | ||||
| done: | ||||
| 	RET | ||||
| 
 | ||||
| TEXT ·syscall_syscall9(SB),NOSPLIT,$0 | ||||
| 	BL	runtime·entersyscall(SB) | ||||
| 	MOVD	a1+8(FP), R1 | ||||
| 	MOVD	a2+16(FP), R2 | ||||
| 	MOVD	a3+24(FP), R3 | ||||
| 
 | ||||
| 	// Get library control area (LCA). | ||||
| 	MOVW	PSALAA, R8 | ||||
| 	MOVD	LCA64(R8), R8 | ||||
| 
 | ||||
| 	// Get function. | ||||
| 	MOVD	CAA(R8), R9 | ||||
| 	MOVD	EDCHPXV(R9), R9 | ||||
| 	MOVD	trap+0(FP), R5 | ||||
| 	SLD	$4, R5 | ||||
| 	ADD	R5, R9 | ||||
| 	LMG	0(R9), R5, R6 | ||||
| 
 | ||||
| 	// Restore LE stack. | ||||
| 	MOVD	SAVSTACK_ASYNC(R8), R9 | ||||
| 	MOVD	0(R9), R4 | ||||
| 	MOVD	$0, 0(R9) | ||||
| 
 | ||||
| 	// Fill in parameter list. | ||||
| 	MOVD	a4+32(FP), R12 | ||||
| 	MOVD	R12, (2176+24)(R4) | ||||
| 	MOVD	a5+40(FP), R12 | ||||
| 	MOVD	R12, (2176+32)(R4) | ||||
| 	MOVD	a6+48(FP), R12 | ||||
| 	MOVD	R12, (2176+40)(R4) | ||||
| 	MOVD	a7+56(FP), R12 | ||||
| 	MOVD	R12, (2176+48)(R4) | ||||
| 	MOVD	a8+64(FP), R12 | ||||
| 	MOVD	R12, (2176+56)(R4) | ||||
| 	MOVD	a9+72(FP), R12 | ||||
| 	MOVD	R12, (2176+64)(R4) | ||||
| 
 | ||||
| 	// Call function. | ||||
| 	LE_CALL | ||||
| 	NOPH | ||||
| 	XOR	R0, R0      // Restore R0 to $0. | ||||
| 	MOVD	R4, 0(R9)   // Save stack pointer. | ||||
| 
 | ||||
| 	MOVD	R3, r1+80(FP) | ||||
| 	MOVD	R0, r2+88(FP) | ||||
| 	MOVD	R0, err+96(FP) | ||||
| 	MOVW	R3, R4 | ||||
| 	CMP	R4, $-1 | ||||
| 	BNE	done | ||||
| 	BL	addrerrno<>(SB) | ||||
| 	MOVWZ	0(R3), R3 | ||||
| 	MOVD	R3, err+96(FP) | ||||
| done: | ||||
|         BL	runtime·exitsyscall(SB) | ||||
|         RET | ||||
| 
 | ||||
| TEXT ·syscall_rawsyscall9(SB),NOSPLIT,$0 | ||||
| 	MOVD	a1+8(FP), R1 | ||||
| 	MOVD	a2+16(FP), R2 | ||||
| 	MOVD	a3+24(FP), R3 | ||||
| 
 | ||||
| 	// Get library control area (LCA). | ||||
| 	MOVW	PSALAA, R8 | ||||
| 	MOVD	LCA64(R8), R8 | ||||
| 
 | ||||
| 	// Get function. | ||||
| 	MOVD	CAA(R8), R9 | ||||
| 	MOVD	EDCHPXV(R9), R9 | ||||
| 	MOVD	trap+0(FP), R5 | ||||
| 	SLD	$4, R5 | ||||
| 	ADD	R5, R9 | ||||
| 	LMG	0(R9), R5, R6 | ||||
| 
 | ||||
| 	// Restore LE stack. | ||||
| 	MOVD	SAVSTACK_ASYNC(R8), R9 | ||||
| 	MOVD	0(R9), R4 | ||||
| 	MOVD	$0, 0(R9) | ||||
| 
 | ||||
| 	// Fill in parameter list. | ||||
| 	MOVD	a4+32(FP), R12 | ||||
| 	MOVD	R12, (2176+24)(R4) | ||||
| 	MOVD	a5+40(FP), R12 | ||||
| 	MOVD	R12, (2176+32)(R4) | ||||
| 	MOVD	a6+48(FP), R12 | ||||
| 	MOVD	R12, (2176+40)(R4) | ||||
| 	MOVD	a7+56(FP), R12 | ||||
| 	MOVD	R12, (2176+48)(R4) | ||||
| 	MOVD	a8+64(FP), R12 | ||||
| 	MOVD	R12, (2176+56)(R4) | ||||
| 	MOVD	a9+72(FP), R12 | ||||
| 	MOVD	R12, (2176+64)(R4) | ||||
| 
 | ||||
| 	// Call function. | ||||
| 	LE_CALL | ||||
| 	NOPH | ||||
| 	XOR	R0, R0      // Restore R0 to $0. | ||||
| 	MOVD	R4, 0(R9)   // Save stack pointer. | ||||
| 
 | ||||
| 	MOVD	R3, r1+80(FP) | ||||
| 	MOVD	R0, r2+88(FP) | ||||
| 	MOVD	R0, err+96(FP) | ||||
| 	MOVW	R3, R4 | ||||
| 	CMP	R4, $-1 | ||||
| 	BNE	done | ||||
| 	BL	addrerrno<>(SB) | ||||
| 	MOVWZ	0(R3), R3 | ||||
| 	MOVD	R3, err+96(FP) | ||||
| done: | ||||
| 	RET | ||||
| 
 | ||||
| // func svcCall(fnptr unsafe.Pointer, argv *unsafe.Pointer, dsa *uint64) | ||||
| TEXT ·svcCall(SB),NOSPLIT,$0 | ||||
| 	BL	runtime·save_g(SB)   // Save g and stack pointer | ||||
| 	MOVW	PSALAA, R8 | ||||
| 	MOVD	LCA64(R8), R8 | ||||
| 	MOVD	SAVSTACK_ASYNC(R8), R9 | ||||
| 	MOVD	R15, 0(R9) | ||||
| 
 | ||||
| 	MOVD	argv+8(FP), R1       // Move function arguments into registers | ||||
| 	MOVD	dsa+16(FP), g | ||||
| 	MOVD	fnptr+0(FP), R15 | ||||
| 
 | ||||
| 	BYTE	$0x0D                // Branch to function | ||||
| 	BYTE	$0xEF | ||||
| 
 | ||||
| 	BL	runtime·load_g(SB)   // Restore g and stack pointer | ||||
| 	MOVW	PSALAA, R8 | ||||
| 	MOVD	LCA64(R8), R8 | ||||
| 	MOVD	SAVSTACK_ASYNC(R8), R9 | ||||
| 	MOVD	0(R9), R15 | ||||
| 
 | ||||
| 	RET | ||||
| 
 | ||||
| // func svcLoad(name *byte) unsafe.Pointer | ||||
| TEXT ·svcLoad(SB),NOSPLIT,$0 | ||||
| 	MOVD	R15, R2          // Save go stack pointer | ||||
| 	MOVD	name+0(FP), R0   // Move SVC args into registers | ||||
| 	MOVD	$0x80000000, R1 | ||||
| 	MOVD	$0, R15 | ||||
| 	BYTE	$0x0A            // SVC 08 LOAD | ||||
| 	BYTE	$0x08 | ||||
| 	MOVW	R15, R3          // Save return code from SVC | ||||
| 	MOVD	R2, R15          // Restore go stack pointer | ||||
| 	CMP	R3, $0           // Check SVC return code | ||||
| 	BNE	error | ||||
| 
 | ||||
| 	MOVD	$-2, R3          // Reset last bit of entry point to zero | ||||
| 	AND	R0, R3 | ||||
| 	MOVD	R3, addr+8(FP)   // Return entry point returned by SVC | ||||
| 	CMP	R0, R3           // Check if last bit of entry point was set | ||||
| 	BNE	done | ||||
| 
 | ||||
| 	MOVD	R15, R2          // Save go stack pointer | ||||
| 	MOVD	$0, R15          // Move SVC args into registers (entry point still in r0 from SVC 08) | ||||
| 	BYTE	$0x0A            // SVC 09 DELETE | ||||
| 	BYTE	$0x09 | ||||
| 	MOVD	R2, R15          // Restore go stack pointer | ||||
| 
 | ||||
| error: | ||||
| 	MOVD	$0, addr+8(FP)   // Return 0 on failure | ||||
| done: | ||||
| 	XOR	R0, R0           // Reset r0 to 0 | ||||
| 	RET | ||||
| 
 | ||||
| // func svcUnload(name *byte, fnptr unsafe.Pointer) int64 | ||||
| TEXT ·svcUnload(SB),NOSPLIT,$0 | ||||
| 	MOVD	R15, R2          // Save go stack pointer | ||||
| 	MOVD	name+0(FP), R0   // Move SVC args into registers | ||||
| 	MOVD	addr+8(FP), R15 | ||||
| 	BYTE	$0x0A            // SVC 09 | ||||
| 	BYTE	$0x09 | ||||
| 	XOR	R0, R0           // Reset r0 to 0 | ||||
| 	MOVD	R15, R1          // Save SVC return code | ||||
| 	MOVD	R2, R15          // Restore go stack pointer | ||||
| 	MOVD	R1, rc+0(FP)     // Return SVC return code | ||||
| 	RET | ||||
| 
 | ||||
| // func gettid() uint64 | ||||
| TEXT ·gettid(SB), NOSPLIT, $0 | ||||
| 	// Get library control area (LCA). | ||||
| 	MOVW PSALAA, R8 | ||||
| 	MOVD LCA64(R8), R8 | ||||
| 
 | ||||
| 	// Get CEECAATHDID | ||||
| 	MOVD CAA(R8), R9 | ||||
| 	MOVD 0x3D0(R9), R9 | ||||
| 	MOVD R9, ret+0(FP) | ||||
| 
 | ||||
| 	RET | ||||
							
								
								
									
										1
									
								
								vendor/golang.org/x/sys/unix/cap_freebsd.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/sys/unix/cap_freebsd.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -2,6 +2,7 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| //go:build freebsd | ||||
| // +build freebsd | ||||
| 
 | ||||
| package unix | ||||
|  | ||||
							
								
								
									
										3
									
								
								vendor/golang.org/x/sys/unix/constants.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/golang.org/x/sys/unix/constants.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -2,7 +2,8 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| // +build aix darwin dragonfly freebsd linux netbsd openbsd solaris | ||||
| //go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos | ||||
| // +build aix darwin dragonfly freebsd linux netbsd openbsd solaris zos | ||||
| 
 | ||||
| package unix | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										4
									
								
								vendor/golang.org/x/sys/unix/dev_aix_ppc.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/golang.org/x/sys/unix/dev_aix_ppc.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -2,8 +2,8 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| // +build aix | ||||
| // +build ppc | ||||
| //go:build aix && ppc | ||||
| // +build aix,ppc | ||||
| 
 | ||||
| // Functions to access/create device major and minor numbers matching the | ||||
| // encoding used by AIX. | ||||
|  | ||||
							
								
								
									
										4
									
								
								vendor/golang.org/x/sys/unix/dev_aix_ppc64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/golang.org/x/sys/unix/dev_aix_ppc64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -2,8 +2,8 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| // +build aix | ||||
| // +build ppc64 | ||||
| //go:build aix && ppc64 | ||||
| // +build aix,ppc64 | ||||
| 
 | ||||
| // Functions to access/create device major and minor numbers matching the | ||||
| // encoding used AIX. | ||||
|  | ||||
							
								
								
									
										29
									
								
								vendor/golang.org/x/sys/unix/dev_zos.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								vendor/golang.org/x/sys/unix/dev_zos.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,29 @@ | ||||
| // Copyright 2020 The Go Authors. All rights reserved. | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| //go:build zos && s390x | ||||
| // +build zos,s390x | ||||
| 
 | ||||
| // Functions to access/create device major and minor numbers matching the | ||||
| // encoding used by z/OS. | ||||
| // | ||||
| // The information below is extracted and adapted from <sys/stat.h> macros. | ||||
| 
 | ||||
| package unix | ||||
| 
 | ||||
| // Major returns the major component of a z/OS device number. | ||||
| func Major(dev uint64) uint32 { | ||||
| 	return uint32((dev >> 16) & 0x0000FFFF) | ||||
| } | ||||
| 
 | ||||
| // Minor returns the minor component of a z/OS device number. | ||||
| func Minor(dev uint64) uint32 { | ||||
| 	return uint32(dev & 0x0000FFFF) | ||||
| } | ||||
| 
 | ||||
| // Mkdev returns a z/OS device number generated from the given major and minor | ||||
| // components. | ||||
| func Mkdev(major, minor uint32) uint64 { | ||||
| 	return (uint64(major) << 16) | uint64(minor) | ||||
| } | ||||
							
								
								
									
										1
									
								
								vendor/golang.org/x/sys/unix/dirent.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/sys/unix/dirent.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -2,6 +2,7 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| //go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris | ||||
| // +build aix darwin dragonfly freebsd linux netbsd openbsd solaris | ||||
| 
 | ||||
| package unix | ||||
|  | ||||
							
								
								
									
										3
									
								
								vendor/golang.org/x/sys/unix/endian_big.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/golang.org/x/sys/unix/endian_big.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -2,7 +2,8 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| // | ||||
| // +build ppc64 s390x mips mips64 | ||||
| //go:build armbe || arm64be || m68k || mips || mips64 || mips64p32 || ppc || ppc64 || s390 || s390x || shbe || sparc || sparc64 | ||||
| // +build armbe arm64be m68k mips mips64 mips64p32 ppc ppc64 s390 s390x shbe sparc sparc64 | ||||
| 
 | ||||
| package unix | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										3
									
								
								vendor/golang.org/x/sys/unix/endian_little.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/golang.org/x/sys/unix/endian_little.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -2,7 +2,8 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| // | ||||
| // +build 386 amd64 amd64p32 arm arm64 ppc64le mipsle mips64le riscv64 | ||||
| //go:build 386 || amd64 || amd64p32 || alpha || arm || arm64 || loong64 || mipsle || mips64le || mips64p32le || nios2 || ppc64le || riscv || riscv64 || sh | ||||
| // +build 386 amd64 amd64p32 alpha arm arm64 loong64 mipsle mips64le mips64p32le nios2 ppc64le riscv riscv64 sh | ||||
| 
 | ||||
| package unix | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										3
									
								
								vendor/golang.org/x/sys/unix/env_unix.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/golang.org/x/sys/unix/env_unix.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -2,7 +2,8 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| // +build aix darwin dragonfly freebsd linux netbsd openbsd solaris | ||||
| //go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos | ||||
| // +build aix darwin dragonfly freebsd linux netbsd openbsd solaris zos | ||||
| 
 | ||||
| // Unix environment variables. | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										221
									
								
								vendor/golang.org/x/sys/unix/epoll_zos.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										221
									
								
								vendor/golang.org/x/sys/unix/epoll_zos.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,221 @@ | ||||
| // Copyright 2020 The Go Authors. All rights reserved. | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| //go:build zos && s390x | ||||
| // +build zos,s390x | ||||
| 
 | ||||
| package unix | ||||
| 
 | ||||
| import ( | ||||
| 	"sync" | ||||
| ) | ||||
| 
 | ||||
| // This file simulates epoll on z/OS using poll. | ||||
| 
 | ||||
| // Analogous to epoll_event on Linux. | ||||
| // TODO(neeilan): Pad is because the Linux kernel expects a 96-bit struct. We never pass this to the kernel; remove? | ||||
| type EpollEvent struct { | ||||
| 	Events uint32 | ||||
| 	Fd     int32 | ||||
| 	Pad    int32 | ||||
| } | ||||
| 
 | ||||
| const ( | ||||
| 	EPOLLERR      = 0x8 | ||||
| 	EPOLLHUP      = 0x10 | ||||
| 	EPOLLIN       = 0x1 | ||||
| 	EPOLLMSG      = 0x400 | ||||
| 	EPOLLOUT      = 0x4 | ||||
| 	EPOLLPRI      = 0x2 | ||||
| 	EPOLLRDBAND   = 0x80 | ||||
| 	EPOLLRDNORM   = 0x40 | ||||
| 	EPOLLWRBAND   = 0x200 | ||||
| 	EPOLLWRNORM   = 0x100 | ||||
| 	EPOLL_CTL_ADD = 0x1 | ||||
| 	EPOLL_CTL_DEL = 0x2 | ||||
| 	EPOLL_CTL_MOD = 0x3 | ||||
| 	// The following constants are part of the epoll API, but represent | ||||
| 	// currently unsupported functionality on z/OS. | ||||
| 	// EPOLL_CLOEXEC  = 0x80000 | ||||
| 	// EPOLLET        = 0x80000000 | ||||
| 	// EPOLLONESHOT   = 0x40000000 | ||||
| 	// EPOLLRDHUP     = 0x2000     // Typically used with edge-triggered notis | ||||
| 	// EPOLLEXCLUSIVE = 0x10000000 // Exclusive wake-up mode | ||||
| 	// EPOLLWAKEUP    = 0x20000000 // Relies on Linux's BLOCK_SUSPEND capability | ||||
| ) | ||||
| 
 | ||||
| // TODO(neeilan): We can eliminate these epToPoll / pToEpoll calls by using identical mask values for POLL/EPOLL | ||||
| // constants where possible The lower 16 bits of epoll events (uint32) can fit any system poll event (int16). | ||||
| 
 | ||||
| // epToPollEvt converts epoll event field to poll equivalent. | ||||
| // In epoll, Events is a 32-bit field, while poll uses 16 bits. | ||||
| func epToPollEvt(events uint32) int16 { | ||||
| 	var ep2p = map[uint32]int16{ | ||||
| 		EPOLLIN:  POLLIN, | ||||
| 		EPOLLOUT: POLLOUT, | ||||
| 		EPOLLHUP: POLLHUP, | ||||
| 		EPOLLPRI: POLLPRI, | ||||
| 		EPOLLERR: POLLERR, | ||||
| 	} | ||||
| 
 | ||||
| 	var pollEvts int16 = 0 | ||||
| 	for epEvt, pEvt := range ep2p { | ||||
| 		if (events & epEvt) != 0 { | ||||
| 			pollEvts |= pEvt | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	return pollEvts | ||||
| } | ||||
| 
 | ||||
| // pToEpollEvt converts 16 bit poll event bitfields to 32-bit epoll event fields. | ||||
| func pToEpollEvt(revents int16) uint32 { | ||||
| 	var p2ep = map[int16]uint32{ | ||||
| 		POLLIN:  EPOLLIN, | ||||
| 		POLLOUT: EPOLLOUT, | ||||
| 		POLLHUP: EPOLLHUP, | ||||
| 		POLLPRI: EPOLLPRI, | ||||
| 		POLLERR: EPOLLERR, | ||||
| 	} | ||||
| 
 | ||||
| 	var epollEvts uint32 = 0 | ||||
| 	for pEvt, epEvt := range p2ep { | ||||
| 		if (revents & pEvt) != 0 { | ||||
| 			epollEvts |= epEvt | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	return epollEvts | ||||
| } | ||||
| 
 | ||||
| // Per-process epoll implementation. | ||||
| type epollImpl struct { | ||||
| 	mu       sync.Mutex | ||||
| 	epfd2ep  map[int]*eventPoll | ||||
| 	nextEpfd int | ||||
| } | ||||
| 
 | ||||
| // eventPoll holds a set of file descriptors being watched by the process. A process can have multiple epoll instances. | ||||
| // On Linux, this is an in-kernel data structure accessed through a fd. | ||||
| type eventPoll struct { | ||||
| 	mu  sync.Mutex | ||||
| 	fds map[int]*EpollEvent | ||||
| } | ||||
| 
 | ||||
| // epoll impl for this process. | ||||
| var impl epollImpl = epollImpl{ | ||||
| 	epfd2ep:  make(map[int]*eventPoll), | ||||
| 	nextEpfd: 0, | ||||
| } | ||||
| 
 | ||||
| func (e *epollImpl) epollcreate(size int) (epfd int, err error) { | ||||
| 	e.mu.Lock() | ||||
| 	defer e.mu.Unlock() | ||||
| 	epfd = e.nextEpfd | ||||
| 	e.nextEpfd++ | ||||
| 
 | ||||
| 	e.epfd2ep[epfd] = &eventPoll{ | ||||
| 		fds: make(map[int]*EpollEvent), | ||||
| 	} | ||||
| 	return epfd, nil | ||||
| } | ||||
| 
 | ||||
| func (e *epollImpl) epollcreate1(flag int) (fd int, err error) { | ||||
| 	return e.epollcreate(4) | ||||
| } | ||||
| 
 | ||||
| func (e *epollImpl) epollctl(epfd int, op int, fd int, event *EpollEvent) (err error) { | ||||
| 	e.mu.Lock() | ||||
| 	defer e.mu.Unlock() | ||||
| 
 | ||||
| 	ep, ok := e.epfd2ep[epfd] | ||||
| 	if !ok { | ||||
| 
 | ||||
| 		return EBADF | ||||
| 	} | ||||
| 
 | ||||
| 	switch op { | ||||
| 	case EPOLL_CTL_ADD: | ||||
| 		// TODO(neeilan): When we make epfds and fds disjoint, detect epoll | ||||
| 		// loops here (instances watching each other) and return ELOOP. | ||||
| 		if _, ok := ep.fds[fd]; ok { | ||||
| 			return EEXIST | ||||
| 		} | ||||
| 		ep.fds[fd] = event | ||||
| 	case EPOLL_CTL_MOD: | ||||
| 		if _, ok := ep.fds[fd]; !ok { | ||||
| 			return ENOENT | ||||
| 		} | ||||
| 		ep.fds[fd] = event | ||||
| 	case EPOLL_CTL_DEL: | ||||
| 		if _, ok := ep.fds[fd]; !ok { | ||||
| 			return ENOENT | ||||
| 		} | ||||
| 		delete(ep.fds, fd) | ||||
| 
 | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
| 
 | ||||
| // Must be called while holding ep.mu | ||||
| func (ep *eventPoll) getFds() []int { | ||||
| 	fds := make([]int, len(ep.fds)) | ||||
| 	for fd := range ep.fds { | ||||
| 		fds = append(fds, fd) | ||||
| 	} | ||||
| 	return fds | ||||
| } | ||||
| 
 | ||||
| func (e *epollImpl) epollwait(epfd int, events []EpollEvent, msec int) (n int, err error) { | ||||
| 	e.mu.Lock() // in [rare] case of concurrent epollcreate + epollwait | ||||
| 	ep, ok := e.epfd2ep[epfd] | ||||
| 
 | ||||
| 	if !ok { | ||||
| 		e.mu.Unlock() | ||||
| 		return 0, EBADF | ||||
| 	} | ||||
| 
 | ||||
| 	pollfds := make([]PollFd, 4) | ||||
| 	for fd, epollevt := range ep.fds { | ||||
| 		pollfds = append(pollfds, PollFd{Fd: int32(fd), Events: epToPollEvt(epollevt.Events)}) | ||||
| 	} | ||||
| 	e.mu.Unlock() | ||||
| 
 | ||||
| 	n, err = Poll(pollfds, msec) | ||||
| 	if err != nil { | ||||
| 		return n, err | ||||
| 	} | ||||
| 
 | ||||
| 	i := 0 | ||||
| 	for _, pFd := range pollfds { | ||||
| 		if pFd.Revents != 0 { | ||||
| 			events[i] = EpollEvent{Fd: pFd.Fd, Events: pToEpollEvt(pFd.Revents)} | ||||
| 			i++ | ||||
| 		} | ||||
| 
 | ||||
| 		if i == n { | ||||
| 			break | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	return n, nil | ||||
| } | ||||
| 
 | ||||
| func EpollCreate(size int) (fd int, err error) { | ||||
| 	return impl.epollcreate(size) | ||||
| } | ||||
| 
 | ||||
| func EpollCreate1(flag int) (fd int, err error) { | ||||
| 	return impl.epollcreate1(flag) | ||||
| } | ||||
| 
 | ||||
| func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { | ||||
| 	return impl.epollctl(epfd, op, fd, event) | ||||
| } | ||||
| 
 | ||||
| // Because EpollWait mutates events, the caller is expected to coordinate | ||||
| // concurrent access if calling with the same epfd from multiple goroutines. | ||||
| func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { | ||||
| 	return impl.epollwait(epfd, events, msec) | ||||
| } | ||||
							
								
								
									
										1
									
								
								vendor/golang.org/x/sys/unix/fcntl.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/sys/unix/fcntl.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -2,6 +2,7 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| //go:build dragonfly || freebsd || linux || netbsd || openbsd | ||||
| // +build dragonfly freebsd linux netbsd openbsd | ||||
| 
 | ||||
| package unix | ||||
|  | ||||
							
								
								
									
										6
									
								
								vendor/golang.org/x/sys/unix/fcntl_darwin.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								vendor/golang.org/x/sys/unix/fcntl_darwin.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -16,3 +16,9 @@ func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error { | ||||
| 	_, err := fcntl(int(fd), cmd, int(uintptr(unsafe.Pointer(lk)))) | ||||
| 	return err | ||||
| } | ||||
| 
 | ||||
| // FcntlFstore performs a fcntl syscall for the F_PREALLOCATE command. | ||||
| func FcntlFstore(fd uintptr, cmd int, fstore *Fstore_t) error { | ||||
| 	_, err := fcntl(int(fd), cmd, int(uintptr(unsafe.Pointer(fstore)))) | ||||
| 	return err | ||||
| } | ||||
|  | ||||
							
								
								
									
										5
									
								
								vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -1,9 +1,10 @@ | ||||
| // +build linux,386 linux,arm linux,mips linux,mipsle | ||||
| 
 | ||||
| // Copyright 2014 The Go Authors. All rights reserved. | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| //go:build (linux && 386) || (linux && arm) || (linux && mips) || (linux && mipsle) || (linux && ppc) | ||||
| // +build linux,386 linux,arm linux,mips linux,mipsle linux,ppc | ||||
| 
 | ||||
| package unix | ||||
| 
 | ||||
| func init() { | ||||
|  | ||||
							
								
								
									
										3
									
								
								vendor/golang.org/x/sys/unix/fdset.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/golang.org/x/sys/unix/fdset.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -2,7 +2,8 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| // +build aix darwin dragonfly freebsd linux netbsd openbsd solaris | ||||
| //go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos | ||||
| // +build aix darwin dragonfly freebsd linux netbsd openbsd solaris zos | ||||
| 
 | ||||
| package unix | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										164
									
								
								vendor/golang.org/x/sys/unix/fstatfs_zos.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										164
									
								
								vendor/golang.org/x/sys/unix/fstatfs_zos.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,164 @@ | ||||
| // Copyright 2020 The Go Authors. All rights reserved. | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| //go:build zos && s390x | ||||
| // +build zos,s390x | ||||
| 
 | ||||
| package unix | ||||
| 
 | ||||
| import ( | ||||
| 	"unsafe" | ||||
| ) | ||||
| 
 | ||||
| // This file simulates fstatfs on z/OS using fstatvfs and w_getmntent. | ||||
| 
 | ||||
| func Fstatfs(fd int, stat *Statfs_t) (err error) { | ||||
| 	var stat_v Statvfs_t | ||||
| 	err = Fstatvfs(fd, &stat_v) | ||||
| 	if err == nil { | ||||
| 		// populate stat | ||||
| 		stat.Type = 0 | ||||
| 		stat.Bsize = stat_v.Bsize | ||||
| 		stat.Blocks = stat_v.Blocks | ||||
| 		stat.Bfree = stat_v.Bfree | ||||
| 		stat.Bavail = stat_v.Bavail | ||||
| 		stat.Files = stat_v.Files | ||||
| 		stat.Ffree = stat_v.Ffree | ||||
| 		stat.Fsid = stat_v.Fsid | ||||
| 		stat.Namelen = stat_v.Namemax | ||||
| 		stat.Frsize = stat_v.Frsize | ||||
| 		stat.Flags = stat_v.Flag | ||||
| 		for passn := 0; passn < 5; passn++ { | ||||
| 			switch passn { | ||||
| 			case 0: | ||||
| 				err = tryGetmntent64(stat) | ||||
| 				break | ||||
| 			case 1: | ||||
| 				err = tryGetmntent128(stat) | ||||
| 				break | ||||
| 			case 2: | ||||
| 				err = tryGetmntent256(stat) | ||||
| 				break | ||||
| 			case 3: | ||||
| 				err = tryGetmntent512(stat) | ||||
| 				break | ||||
| 			case 4: | ||||
| 				err = tryGetmntent1024(stat) | ||||
| 				break | ||||
| 			default: | ||||
| 				break | ||||
| 			} | ||||
| 			//proceed to return if: err is nil (found), err is nonnil but not ERANGE (another error occurred) | ||||
| 			if err == nil || err != nil && err != ERANGE { | ||||
| 				break | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 	return err | ||||
| } | ||||
| 
 | ||||
| func tryGetmntent64(stat *Statfs_t) (err error) { | ||||
| 	var mnt_ent_buffer struct { | ||||
| 		header       W_Mnth | ||||
| 		filesys_info [64]W_Mntent | ||||
| 	} | ||||
| 	var buffer_size int = int(unsafe.Sizeof(mnt_ent_buffer)) | ||||
| 	fs_count, err := W_Getmntent((*byte)(unsafe.Pointer(&mnt_ent_buffer)), buffer_size) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	err = ERANGE //return ERANGE if no match is found in this batch | ||||
| 	for i := 0; i < fs_count; i++ { | ||||
| 		if stat.Fsid == uint64(mnt_ent_buffer.filesys_info[i].Dev) { | ||||
| 			stat.Type = uint32(mnt_ent_buffer.filesys_info[i].Fstname[0]) | ||||
| 			err = nil | ||||
| 			break | ||||
| 		} | ||||
| 	} | ||||
| 	return err | ||||
| } | ||||
| 
 | ||||
| func tryGetmntent128(stat *Statfs_t) (err error) { | ||||
| 	var mnt_ent_buffer struct { | ||||
| 		header       W_Mnth | ||||
| 		filesys_info [128]W_Mntent | ||||
| 	} | ||||
| 	var buffer_size int = int(unsafe.Sizeof(mnt_ent_buffer)) | ||||
| 	fs_count, err := W_Getmntent((*byte)(unsafe.Pointer(&mnt_ent_buffer)), buffer_size) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	err = ERANGE //return ERANGE if no match is found in this batch | ||||
| 	for i := 0; i < fs_count; i++ { | ||||
| 		if stat.Fsid == uint64(mnt_ent_buffer.filesys_info[i].Dev) { | ||||
| 			stat.Type = uint32(mnt_ent_buffer.filesys_info[i].Fstname[0]) | ||||
| 			err = nil | ||||
| 			break | ||||
| 		} | ||||
| 	} | ||||
| 	return err | ||||
| } | ||||
| 
 | ||||
| func tryGetmntent256(stat *Statfs_t) (err error) { | ||||
| 	var mnt_ent_buffer struct { | ||||
| 		header       W_Mnth | ||||
| 		filesys_info [256]W_Mntent | ||||
| 	} | ||||
| 	var buffer_size int = int(unsafe.Sizeof(mnt_ent_buffer)) | ||||
| 	fs_count, err := W_Getmntent((*byte)(unsafe.Pointer(&mnt_ent_buffer)), buffer_size) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	err = ERANGE //return ERANGE if no match is found in this batch | ||||
| 	for i := 0; i < fs_count; i++ { | ||||
| 		if stat.Fsid == uint64(mnt_ent_buffer.filesys_info[i].Dev) { | ||||
| 			stat.Type = uint32(mnt_ent_buffer.filesys_info[i].Fstname[0]) | ||||
| 			err = nil | ||||
| 			break | ||||
| 		} | ||||
| 	} | ||||
| 	return err | ||||
| } | ||||
| 
 | ||||
| func tryGetmntent512(stat *Statfs_t) (err error) { | ||||
| 	var mnt_ent_buffer struct { | ||||
| 		header       W_Mnth | ||||
| 		filesys_info [512]W_Mntent | ||||
| 	} | ||||
| 	var buffer_size int = int(unsafe.Sizeof(mnt_ent_buffer)) | ||||
| 	fs_count, err := W_Getmntent((*byte)(unsafe.Pointer(&mnt_ent_buffer)), buffer_size) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	err = ERANGE //return ERANGE if no match is found in this batch | ||||
| 	for i := 0; i < fs_count; i++ { | ||||
| 		if stat.Fsid == uint64(mnt_ent_buffer.filesys_info[i].Dev) { | ||||
| 			stat.Type = uint32(mnt_ent_buffer.filesys_info[i].Fstname[0]) | ||||
| 			err = nil | ||||
| 			break | ||||
| 		} | ||||
| 	} | ||||
| 	return err | ||||
| } | ||||
| 
 | ||||
| func tryGetmntent1024(stat *Statfs_t) (err error) { | ||||
| 	var mnt_ent_buffer struct { | ||||
| 		header       W_Mnth | ||||
| 		filesys_info [1024]W_Mntent | ||||
| 	} | ||||
| 	var buffer_size int = int(unsafe.Sizeof(mnt_ent_buffer)) | ||||
| 	fs_count, err := W_Getmntent((*byte)(unsafe.Pointer(&mnt_ent_buffer)), buffer_size) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	err = ERANGE //return ERANGE if no match is found in this batch | ||||
| 	for i := 0; i < fs_count; i++ { | ||||
| 		if stat.Fsid == uint64(mnt_ent_buffer.filesys_info[i].Dev) { | ||||
| 			stat.Type = uint32(mnt_ent_buffer.filesys_info[i].Fstname[0]) | ||||
| 			err = nil | ||||
| 			break | ||||
| 		} | ||||
| 	} | ||||
| 	return err | ||||
| } | ||||
							
								
								
									
										6
									
								
								vendor/golang.org/x/sys/unix/gccgo.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								vendor/golang.org/x/sys/unix/gccgo.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -2,8 +2,8 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| // +build gccgo | ||||
| // +build !aix | ||||
| //go:build gccgo && !aix | ||||
| // +build gccgo,!aix | ||||
| 
 | ||||
| package unix | ||||
| 
 | ||||
| @ -12,10 +12,8 @@ import "syscall" | ||||
| // We can't use the gc-syntax .s files for gccgo. On the plus side | ||||
| // much of the functionality can be written directly in Go. | ||||
| 
 | ||||
| //extern gccgoRealSyscallNoError | ||||
| func realSyscallNoError(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r uintptr) | ||||
| 
 | ||||
| //extern gccgoRealSyscall | ||||
| func realSyscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r, errno uintptr) | ||||
| 
 | ||||
| func SyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) { | ||||
|  | ||||
							
								
								
									
										6
									
								
								vendor/golang.org/x/sys/unix/gccgo_c.c
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								vendor/golang.org/x/sys/unix/gccgo_c.c
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -21,6 +21,9 @@ struct ret { | ||||
| 	uintptr_t err; | ||||
| }; | ||||
| 
 | ||||
| struct ret gccgoRealSyscall(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9) | ||||
|   __asm__(GOSYM_PREFIX GOPKGPATH ".realSyscall"); | ||||
| 
 | ||||
| struct ret | ||||
| gccgoRealSyscall(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9) | ||||
| { | ||||
| @ -32,6 +35,9 @@ gccgoRealSyscall(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintp | ||||
| 	return r; | ||||
| } | ||||
| 
 | ||||
| uintptr_t gccgoRealSyscallNoError(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9) | ||||
|   __asm__(GOSYM_PREFIX GOPKGPATH ".realSyscallNoError"); | ||||
| 
 | ||||
| uintptr_t | ||||
| gccgoRealSyscallNoError(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9) | ||||
| { | ||||
|  | ||||
							
								
								
									
										1
									
								
								vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -2,6 +2,7 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| //go:build gccgo && linux && amd64 | ||||
| // +build gccgo,linux,amd64 | ||||
| 
 | ||||
| package unix | ||||
|  | ||||
							
								
								
									
										142
									
								
								vendor/golang.org/x/sys/unix/ifreq_linux.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										142
									
								
								vendor/golang.org/x/sys/unix/ifreq_linux.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,142 @@ | ||||
| // Copyright 2021 The Go Authors. All rights reserved. | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| //go:build linux | ||||
| // +build linux | ||||
| 
 | ||||
| package unix | ||||
| 
 | ||||
| import ( | ||||
| 	"unsafe" | ||||
| ) | ||||
| 
 | ||||
| // Helpers for dealing with ifreq since it contains a union and thus requires a | ||||
| // lot of unsafe.Pointer casts to use properly. | ||||
| 
 | ||||
| // An Ifreq is a type-safe wrapper around the raw ifreq struct. An Ifreq | ||||
| // contains an interface name and a union of arbitrary data which can be | ||||
| // accessed using the Ifreq's methods. To create an Ifreq, use the NewIfreq | ||||
| // function. | ||||
| // | ||||
| // Use the Name method to access the stored interface name. The union data | ||||
| // fields can be get and set using the following methods: | ||||
| //   - Uint16/SetUint16: flags | ||||
| //   - Uint32/SetUint32: ifindex, metric, mtu | ||||
| type Ifreq struct{ raw ifreq } | ||||
| 
 | ||||
| // NewIfreq creates an Ifreq with the input network interface name after | ||||
| // validating the name does not exceed IFNAMSIZ-1 (trailing NULL required) | ||||
| // bytes. | ||||
| func NewIfreq(name string) (*Ifreq, error) { | ||||
| 	// Leave room for terminating NULL byte. | ||||
| 	if len(name) >= IFNAMSIZ { | ||||
| 		return nil, EINVAL | ||||
| 	} | ||||
| 
 | ||||
| 	var ifr ifreq | ||||
| 	copy(ifr.Ifrn[:], name) | ||||
| 
 | ||||
| 	return &Ifreq{raw: ifr}, nil | ||||
| } | ||||
| 
 | ||||
| // TODO(mdlayher): get/set methods for hardware address sockaddr, char array, etc. | ||||
| 
 | ||||
| // Name returns the interface name associated with the Ifreq. | ||||
| func (ifr *Ifreq) Name() string { | ||||
| 	return ByteSliceToString(ifr.raw.Ifrn[:]) | ||||
| } | ||||
| 
 | ||||
| // According to netdevice(7), only AF_INET addresses are returned for numerous | ||||
| // sockaddr ioctls. For convenience, we expose these as Inet4Addr since the Port | ||||
| // field and other data is always empty. | ||||
| 
 | ||||
| // Inet4Addr returns the Ifreq union data from an embedded sockaddr as a C | ||||
| // in_addr/Go []byte (4-byte IPv4 address) value. If the sockaddr family is not | ||||
| // AF_INET, an error is returned. | ||||
| func (ifr *Ifreq) Inet4Addr() ([]byte, error) { | ||||
| 	raw := *(*RawSockaddrInet4)(unsafe.Pointer(&ifr.raw.Ifru[:SizeofSockaddrInet4][0])) | ||||
| 	if raw.Family != AF_INET { | ||||
| 		// Cannot safely interpret raw.Addr bytes as an IPv4 address. | ||||
| 		return nil, EINVAL | ||||
| 	} | ||||
| 
 | ||||
| 	return raw.Addr[:], nil | ||||
| } | ||||
| 
 | ||||
| // SetInet4Addr sets a C in_addr/Go []byte (4-byte IPv4 address) value in an | ||||
| // embedded sockaddr within the Ifreq's union data. v must be 4 bytes in length | ||||
| // or an error will be returned. | ||||
| func (ifr *Ifreq) SetInet4Addr(v []byte) error { | ||||
| 	if len(v) != 4 { | ||||
| 		return EINVAL | ||||
| 	} | ||||
| 
 | ||||
| 	var addr [4]byte | ||||
| 	copy(addr[:], v) | ||||
| 
 | ||||
| 	ifr.clear() | ||||
| 	*(*RawSockaddrInet4)( | ||||
| 		unsafe.Pointer(&ifr.raw.Ifru[:SizeofSockaddrInet4][0]), | ||||
| 	) = RawSockaddrInet4{ | ||||
| 		// Always set IP family as ioctls would require it anyway. | ||||
| 		Family: AF_INET, | ||||
| 		Addr:   addr, | ||||
| 	} | ||||
| 
 | ||||
| 	return nil | ||||
| } | ||||
| 
 | ||||
| // Uint16 returns the Ifreq union data as a C short/Go uint16 value. | ||||
| func (ifr *Ifreq) Uint16() uint16 { | ||||
| 	return *(*uint16)(unsafe.Pointer(&ifr.raw.Ifru[:2][0])) | ||||
| } | ||||
| 
 | ||||
| // SetUint16 sets a C short/Go uint16 value as the Ifreq's union data. | ||||
| func (ifr *Ifreq) SetUint16(v uint16) { | ||||
| 	ifr.clear() | ||||
| 	*(*uint16)(unsafe.Pointer(&ifr.raw.Ifru[:2][0])) = v | ||||
| } | ||||
| 
 | ||||
| // Uint32 returns the Ifreq union data as a C int/Go uint32 value. | ||||
| func (ifr *Ifreq) Uint32() uint32 { | ||||
| 	return *(*uint32)(unsafe.Pointer(&ifr.raw.Ifru[:4][0])) | ||||
| } | ||||
| 
 | ||||
| // SetUint32 sets a C int/Go uint32 value as the Ifreq's union data. | ||||
| func (ifr *Ifreq) SetUint32(v uint32) { | ||||
| 	ifr.clear() | ||||
| 	*(*uint32)(unsafe.Pointer(&ifr.raw.Ifru[:4][0])) = v | ||||
| } | ||||
| 
 | ||||
| // clear zeroes the ifreq's union field to prevent trailing garbage data from | ||||
| // being sent to the kernel if an ifreq is reused. | ||||
| func (ifr *Ifreq) clear() { | ||||
| 	for i := range ifr.raw.Ifru { | ||||
| 		ifr.raw.Ifru[i] = 0 | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| // TODO(mdlayher): export as IfreqData? For now we can provide helpers such as | ||||
| // IoctlGetEthtoolDrvinfo which use these APIs under the hood. | ||||
| 
 | ||||
| // An ifreqData is an Ifreq which carries pointer data. To produce an ifreqData, | ||||
| // use the Ifreq.withData method. | ||||
| type ifreqData struct { | ||||
| 	name [IFNAMSIZ]byte | ||||
| 	// A type separate from ifreq is required in order to comply with the | ||||
| 	// unsafe.Pointer rules since the "pointer-ness" of data would not be | ||||
| 	// preserved if it were cast into the byte array of a raw ifreq. | ||||
| 	data unsafe.Pointer | ||||
| 	// Pad to the same size as ifreq. | ||||
| 	_ [len(ifreq{}.Ifru) - SizeofPtr]byte | ||||
| } | ||||
| 
 | ||||
| // withData produces an ifreqData with the pointer p set for ioctls which require | ||||
| // arbitrary pointer data. | ||||
| func (ifr Ifreq) withData(p unsafe.Pointer) ifreqData { | ||||
| 	return ifreqData{ | ||||
| 		name: ifr.raw.Ifrn, | ||||
| 		data: p, | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										10
									
								
								vendor/golang.org/x/sys/unix/ioctl.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										10
									
								
								vendor/golang.org/x/sys/unix/ioctl.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -2,6 +2,7 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| //go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris | ||||
| // +build aix darwin dragonfly freebsd linux netbsd openbsd solaris | ||||
| 
 | ||||
| package unix | ||||
| @ -20,6 +21,15 @@ func IoctlSetInt(fd int, req uint, value int) error { | ||||
| 	return ioctl(fd, req, uintptr(value)) | ||||
| } | ||||
| 
 | ||||
| // 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))) | ||||
| } | ||||
| 
 | ||||
| // IoctlSetWinsize performs an ioctl on fd with a *Winsize argument. | ||||
| // | ||||
| // To change fd's window size, the req argument should be TIOCSWINSZ. | ||||
|  | ||||
							
								
								
									
										219
									
								
								vendor/golang.org/x/sys/unix/ioctl_linux.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										219
									
								
								vendor/golang.org/x/sys/unix/ioctl_linux.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,219 @@ | ||||
| // Copyright 2021 The Go Authors. All rights reserved. | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| package unix | ||||
| 
 | ||||
| import ( | ||||
| 	"unsafe" | ||||
| ) | ||||
| 
 | ||||
| // IoctlRetInt performs an ioctl operation specified by req on a device | ||||
| // associated with opened file descriptor fd, and returns a non-negative | ||||
| // integer that is returned by the ioctl syscall. | ||||
| func IoctlRetInt(fd int, req uint) (int, error) { | ||||
| 	ret, _, err := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), 0) | ||||
| 	if err != 0 { | ||||
| 		return 0, err | ||||
| 	} | ||||
| 	return int(ret), nil | ||||
| } | ||||
| 
 | ||||
| func IoctlGetUint32(fd int, req uint) (uint32, error) { | ||||
| 	var value uint32 | ||||
| 	err := ioctlPtr(fd, req, unsafe.Pointer(&value)) | ||||
| 	return value, err | ||||
| } | ||||
| 
 | ||||
| func IoctlGetRTCTime(fd int) (*RTCTime, error) { | ||||
| 	var value RTCTime | ||||
| 	err := ioctlPtr(fd, RTC_RD_TIME, unsafe.Pointer(&value)) | ||||
| 	return &value, err | ||||
| } | ||||
| 
 | ||||
| func IoctlSetRTCTime(fd int, value *RTCTime) error { | ||||
| 	return ioctlPtr(fd, RTC_SET_TIME, unsafe.Pointer(value)) | ||||
| } | ||||
| 
 | ||||
| func IoctlGetRTCWkAlrm(fd int) (*RTCWkAlrm, error) { | ||||
| 	var value RTCWkAlrm | ||||
| 	err := ioctlPtr(fd, RTC_WKALM_RD, unsafe.Pointer(&value)) | ||||
| 	return &value, err | ||||
| } | ||||
| 
 | ||||
| func IoctlSetRTCWkAlrm(fd int, value *RTCWkAlrm) error { | ||||
| 	return ioctlPtr(fd, RTC_WKALM_SET, unsafe.Pointer(value)) | ||||
| } | ||||
| 
 | ||||
| // IoctlGetEthtoolDrvinfo fetches ethtool driver information for the network | ||||
| // device specified by ifname. | ||||
| func IoctlGetEthtoolDrvinfo(fd int, ifname string) (*EthtoolDrvinfo, error) { | ||||
| 	ifr, err := NewIfreq(ifname) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	value := EthtoolDrvinfo{Cmd: ETHTOOL_GDRVINFO} | ||||
| 	ifrd := ifr.withData(unsafe.Pointer(&value)) | ||||
| 
 | ||||
| 	err = ioctlIfreqData(fd, SIOCETHTOOL, &ifrd) | ||||
| 	return &value, err | ||||
| } | ||||
| 
 | ||||
| // IoctlGetWatchdogInfo fetches information about a watchdog device from the | ||||
| // Linux watchdog API. For more information, see: | ||||
| // https://www.kernel.org/doc/html/latest/watchdog/watchdog-api.html. | ||||
| func IoctlGetWatchdogInfo(fd int) (*WatchdogInfo, error) { | ||||
| 	var value WatchdogInfo | ||||
| 	err := ioctlPtr(fd, WDIOC_GETSUPPORT, unsafe.Pointer(&value)) | ||||
| 	return &value, err | ||||
| } | ||||
| 
 | ||||
| // IoctlWatchdogKeepalive issues a keepalive ioctl to a watchdog device. For | ||||
| // more information, see: | ||||
| // https://www.kernel.org/doc/html/latest/watchdog/watchdog-api.html. | ||||
| func IoctlWatchdogKeepalive(fd int) error { | ||||
| 	// arg is ignored and not a pointer, so ioctl is fine instead of ioctlPtr. | ||||
| 	return ioctl(fd, WDIOC_KEEPALIVE, 0) | ||||
| } | ||||
| 
 | ||||
| // IoctlFileCloneRange performs an FICLONERANGE ioctl operation to clone the | ||||
| // range of data conveyed in value to the file associated with the file | ||||
| // descriptor destFd. See the ioctl_ficlonerange(2) man page for details. | ||||
| func IoctlFileCloneRange(destFd int, value *FileCloneRange) error { | ||||
| 	return ioctlPtr(destFd, FICLONERANGE, unsafe.Pointer(value)) | ||||
| } | ||||
| 
 | ||||
| // IoctlFileClone performs an FICLONE ioctl operation to clone the entire file | ||||
| // associated with the file description srcFd to the file associated with the | ||||
| // file descriptor destFd. See the ioctl_ficlone(2) man page for details. | ||||
| func IoctlFileClone(destFd, srcFd int) error { | ||||
| 	return ioctl(destFd, FICLONE, uintptr(srcFd)) | ||||
| } | ||||
| 
 | ||||
| type FileDedupeRange struct { | ||||
| 	Src_offset uint64 | ||||
| 	Src_length uint64 | ||||
| 	Reserved1  uint16 | ||||
| 	Reserved2  uint32 | ||||
| 	Info       []FileDedupeRangeInfo | ||||
| } | ||||
| 
 | ||||
| type FileDedupeRangeInfo struct { | ||||
| 	Dest_fd       int64 | ||||
| 	Dest_offset   uint64 | ||||
| 	Bytes_deduped uint64 | ||||
| 	Status        int32 | ||||
| 	Reserved      uint32 | ||||
| } | ||||
| 
 | ||||
| // IoctlFileDedupeRange performs an FIDEDUPERANGE ioctl operation to share the | ||||
| // range of data conveyed in value from the file associated with the file | ||||
| // descriptor srcFd to the value.Info destinations. See the | ||||
| // ioctl_fideduperange(2) man page for details. | ||||
| func IoctlFileDedupeRange(srcFd int, value *FileDedupeRange) error { | ||||
| 	buf := make([]byte, SizeofRawFileDedupeRange+ | ||||
| 		len(value.Info)*SizeofRawFileDedupeRangeInfo) | ||||
| 	rawrange := (*RawFileDedupeRange)(unsafe.Pointer(&buf[0])) | ||||
| 	rawrange.Src_offset = value.Src_offset | ||||
| 	rawrange.Src_length = value.Src_length | ||||
| 	rawrange.Dest_count = uint16(len(value.Info)) | ||||
| 	rawrange.Reserved1 = value.Reserved1 | ||||
| 	rawrange.Reserved2 = value.Reserved2 | ||||
| 
 | ||||
| 	for i := range value.Info { | ||||
| 		rawinfo := (*RawFileDedupeRangeInfo)(unsafe.Pointer( | ||||
| 			uintptr(unsafe.Pointer(&buf[0])) + uintptr(SizeofRawFileDedupeRange) + | ||||
| 				uintptr(i*SizeofRawFileDedupeRangeInfo))) | ||||
| 		rawinfo.Dest_fd = value.Info[i].Dest_fd | ||||
| 		rawinfo.Dest_offset = value.Info[i].Dest_offset | ||||
| 		rawinfo.Bytes_deduped = value.Info[i].Bytes_deduped | ||||
| 		rawinfo.Status = value.Info[i].Status | ||||
| 		rawinfo.Reserved = value.Info[i].Reserved | ||||
| 	} | ||||
| 
 | ||||
| 	err := ioctlPtr(srcFd, FIDEDUPERANGE, unsafe.Pointer(&buf[0])) | ||||
| 
 | ||||
| 	// Output | ||||
| 	for i := range value.Info { | ||||
| 		rawinfo := (*RawFileDedupeRangeInfo)(unsafe.Pointer( | ||||
| 			uintptr(unsafe.Pointer(&buf[0])) + uintptr(SizeofRawFileDedupeRange) + | ||||
| 				uintptr(i*SizeofRawFileDedupeRangeInfo))) | ||||
| 		value.Info[i].Dest_fd = rawinfo.Dest_fd | ||||
| 		value.Info[i].Dest_offset = rawinfo.Dest_offset | ||||
| 		value.Info[i].Bytes_deduped = rawinfo.Bytes_deduped | ||||
| 		value.Info[i].Status = rawinfo.Status | ||||
| 		value.Info[i].Reserved = rawinfo.Reserved | ||||
| 	} | ||||
| 
 | ||||
| 	return err | ||||
| } | ||||
| 
 | ||||
| func IoctlHIDGetDesc(fd int, value *HIDRawReportDescriptor) error { | ||||
| 	return ioctlPtr(fd, HIDIOCGRDESC, unsafe.Pointer(value)) | ||||
| } | ||||
| 
 | ||||
| func IoctlHIDGetRawInfo(fd int) (*HIDRawDevInfo, error) { | ||||
| 	var value HIDRawDevInfo | ||||
| 	err := ioctlPtr(fd, HIDIOCGRAWINFO, unsafe.Pointer(&value)) | ||||
| 	return &value, err | ||||
| } | ||||
| 
 | ||||
| func IoctlHIDGetRawName(fd int) (string, error) { | ||||
| 	var value [_HIDIOCGRAWNAME_LEN]byte | ||||
| 	err := ioctlPtr(fd, _HIDIOCGRAWNAME, unsafe.Pointer(&value[0])) | ||||
| 	return ByteSliceToString(value[:]), err | ||||
| } | ||||
| 
 | ||||
| func IoctlHIDGetRawPhys(fd int) (string, error) { | ||||
| 	var value [_HIDIOCGRAWPHYS_LEN]byte | ||||
| 	err := ioctlPtr(fd, _HIDIOCGRAWPHYS, unsafe.Pointer(&value[0])) | ||||
| 	return ByteSliceToString(value[:]), err | ||||
| } | ||||
| 
 | ||||
| func IoctlHIDGetRawUniq(fd int) (string, error) { | ||||
| 	var value [_HIDIOCGRAWUNIQ_LEN]byte | ||||
| 	err := ioctlPtr(fd, _HIDIOCGRAWUNIQ, unsafe.Pointer(&value[0])) | ||||
| 	return ByteSliceToString(value[:]), err | ||||
| } | ||||
| 
 | ||||
| // IoctlIfreq performs an ioctl using an Ifreq structure for input and/or | ||||
| // output. See the netdevice(7) man page for details. | ||||
| func IoctlIfreq(fd int, req uint, value *Ifreq) error { | ||||
| 	// It is possible we will add more fields to *Ifreq itself later to prevent | ||||
| 	// misuse, so pass the raw *ifreq directly. | ||||
| 	return ioctlPtr(fd, req, unsafe.Pointer(&value.raw)) | ||||
| } | ||||
| 
 | ||||
| // TODO(mdlayher): export if and when IfreqData is exported. | ||||
| 
 | ||||
| // ioctlIfreqData performs an ioctl using an ifreqData structure for input | ||||
| // and/or output. See the netdevice(7) man page for details. | ||||
| func ioctlIfreqData(fd int, req uint, value *ifreqData) error { | ||||
| 	// The memory layout of IfreqData (type-safe) and ifreq (not type-safe) are | ||||
| 	// identical so pass *IfreqData directly. | ||||
| 	return ioctlPtr(fd, req, unsafe.Pointer(value)) | ||||
| } | ||||
| 
 | ||||
| // IoctlKCMClone attaches a new file descriptor to a multiplexor by cloning an | ||||
| // existing KCM socket, returning a structure containing the file descriptor of | ||||
| // the new socket. | ||||
| func IoctlKCMClone(fd int) (*KCMClone, error) { | ||||
| 	var info KCMClone | ||||
| 	if err := ioctlPtr(fd, SIOCKCMCLONE, unsafe.Pointer(&info)); err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	return &info, nil | ||||
| } | ||||
| 
 | ||||
| // IoctlKCMAttach attaches a TCP socket and associated BPF program file | ||||
| // descriptor to a multiplexor. | ||||
| func IoctlKCMAttach(fd int, info KCMAttach) error { | ||||
| 	return ioctlPtr(fd, SIOCKCMATTACH, unsafe.Pointer(&info)) | ||||
| } | ||||
| 
 | ||||
| // IoctlKCMUnattach unattaches a TCP socket file descriptor from a multiplexor. | ||||
| func IoctlKCMUnattach(fd int, info KCMUnattach) error { | ||||
| 	return ioctlPtr(fd, SIOCKCMUNATTACH, unsafe.Pointer(&info)) | ||||
| } | ||||
							
								
								
									
										74
									
								
								vendor/golang.org/x/sys/unix/ioctl_zos.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										74
									
								
								vendor/golang.org/x/sys/unix/ioctl_zos.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,74 @@ | ||||
| // Copyright 2020 The Go Authors. All rights reserved. | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| //go:build zos && s390x | ||||
| // +build zos,s390x | ||||
| 
 | ||||
| package unix | ||||
| 
 | ||||
| import ( | ||||
| 	"runtime" | ||||
| 	"unsafe" | ||||
| ) | ||||
| 
 | ||||
| // ioctl itself should not be exposed directly, but additional get/set | ||||
| // functions for specific types are permissible. | ||||
| 
 | ||||
| // IoctlSetInt performs an ioctl operation which sets an integer value | ||||
| // on fd, using the specified request number. | ||||
| func IoctlSetInt(fd int, req uint, value int) error { | ||||
| 	return ioctl(fd, req, uintptr(value)) | ||||
| } | ||||
| 
 | ||||
| // IoctlSetWinsize performs an ioctl on fd with a *Winsize argument. | ||||
| // | ||||
| // To change fd's window size, the req argument should be TIOCSWINSZ. | ||||
| func IoctlSetWinsize(fd int, req uint, value *Winsize) error { | ||||
| 	// TODO: if we get the chance, remove the req parameter and | ||||
| 	// hardcode TIOCSWINSZ. | ||||
| 	err := ioctl(fd, req, uintptr(unsafe.Pointer(value))) | ||||
| 	runtime.KeepAlive(value) | ||||
| 	return err | ||||
| } | ||||
| 
 | ||||
| // IoctlSetTermios performs an ioctl on fd with a *Termios. | ||||
| // | ||||
| // The req value is expected to be TCSETS, TCSETSW, or TCSETSF | ||||
| func IoctlSetTermios(fd int, req uint, value *Termios) error { | ||||
| 	if (req != TCSETS) && (req != TCSETSW) && (req != TCSETSF) { | ||||
| 		return ENOSYS | ||||
| 	} | ||||
| 	err := Tcsetattr(fd, int(req), value) | ||||
| 	runtime.KeepAlive(value) | ||||
| 	return err | ||||
| } | ||||
| 
 | ||||
| // IoctlGetInt performs an ioctl operation which gets an integer value | ||||
| // from fd, using the specified request number. | ||||
| // | ||||
| // A few ioctl requests use the return value as an output parameter; | ||||
| // for those, IoctlRetInt should be used instead of this function. | ||||
| func IoctlGetInt(fd int, req uint) (int, error) { | ||||
| 	var value int | ||||
| 	err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) | ||||
| 	return value, err | ||||
| } | ||||
| 
 | ||||
| func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { | ||||
| 	var value Winsize | ||||
| 	err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) | ||||
| 	return &value, err | ||||
| } | ||||
| 
 | ||||
| // IoctlGetTermios performs an ioctl on fd with a *Termios. | ||||
| // | ||||
| // The req value is expected to be TCGETS | ||||
| func IoctlGetTermios(fd int, req uint) (*Termios, error) { | ||||
| 	var value Termios | ||||
| 	if req != TCGETS { | ||||
| 		return &value, ENOSYS | ||||
| 	} | ||||
| 	err := Tcgetattr(fd, &value) | ||||
| 	return &value, err | ||||
| } | ||||
							
								
								
									
										31
									
								
								vendor/golang.org/x/sys/unix/mkall.sh
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										31
									
								
								vendor/golang.org/x/sys/unix/mkall.sh
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -50,7 +50,7 @@ if [[ "$GOOS" = "linux" ]]; then | ||||
| 	# Use the Docker-based build system | ||||
| 	# Files generated through docker (use $cmd so you can Ctl-C the build or run) | ||||
| 	$cmd docker build --tag generate:$GOOS $GOOS | ||||
| 	$cmd docker run --interactive --tty --volume $(cd -- "$(dirname -- "$0")" && /bin/pwd):/build generate:$GOOS | ||||
| 	$cmd docker run --interactive --tty --volume $(cd -- "$(dirname -- "$0")/.." && /bin/pwd):/build generate:$GOOS | ||||
| 	exit | ||||
| fi | ||||
| 
 | ||||
| @ -70,29 +70,13 @@ aix_ppc64) | ||||
| 	mksyscall="go run mksyscall_aix_ppc64.go -aix" | ||||
| 	mktypes="GOARCH=$GOARCH go tool cgo -godefs" | ||||
| 	;; | ||||
| darwin_386) | ||||
| 	mkerrors="$mkerrors -m32" | ||||
| 	mksyscall="go run mksyscall.go -l32" | ||||
| 	mksysnum="go run mksysnum.go $(xcrun --show-sdk-path --sdk macosx)/usr/include/sys/syscall.h" | ||||
| 	mktypes="GOARCH=$GOARCH go tool cgo -godefs" | ||||
| 	mkasm="go run mkasm_darwin.go" | ||||
| 	;; | ||||
| darwin_amd64) | ||||
| 	mkerrors="$mkerrors -m64" | ||||
| 	mksysnum="go run mksysnum.go $(xcrun --show-sdk-path --sdk macosx)/usr/include/sys/syscall.h" | ||||
| 	mktypes="GOARCH=$GOARCH go tool cgo -godefs" | ||||
| 	mkasm="go run mkasm_darwin.go" | ||||
| 	;; | ||||
| darwin_arm) | ||||
| 	mkerrors="$mkerrors" | ||||
| 	mksyscall="go run mksyscall.go -l32" | ||||
| 	mksysnum="go run mksysnum.go $(xcrun --show-sdk-path --sdk iphoneos)/usr/include/sys/syscall.h" | ||||
| 	mktypes="GOARCH=$GOARCH go tool cgo -godefs" | ||||
| 	mkasm="go run mkasm_darwin.go" | ||||
| 	;; | ||||
| darwin_arm64) | ||||
| 	mkerrors="$mkerrors -m64" | ||||
| 	mksysnum="go run mksysnum.go $(xcrun --show-sdk-path --sdk iphoneos)/usr/include/sys/syscall.h" | ||||
| 	mktypes="GOARCH=$GOARCH go tool cgo -godefs" | ||||
| 	mkasm="go run mkasm_darwin.go" | ||||
| 	;; | ||||
| @ -184,6 +168,15 @@ openbsd_arm64) | ||||
| 	# API consistent across platforms. | ||||
| 	mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" | ||||
| 	;; | ||||
| openbsd_mips64) | ||||
| 	mkerrors="$mkerrors -m64" | ||||
| 	mksyscall="go run mksyscall.go -openbsd" | ||||
| 	mksysctl="go run mksysctl_openbsd.go" | ||||
| 	mksysnum="go run mksysnum.go 'https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master'" | ||||
| 	# Let the type of C char be signed for making the bare syscall | ||||
| 	# API consistent across platforms. | ||||
| 	mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" | ||||
| 	;; | ||||
| solaris_amd64) | ||||
| 	mksyscall="go run mksyscall_solaris.go" | ||||
| 	mkerrors="$mkerrors -m64" | ||||
| @ -194,7 +187,7 @@ illumos_amd64) | ||||
|         mksyscall="go run mksyscall_solaris.go" | ||||
| 	mkerrors= | ||||
| 	mksysnum= | ||||
| 	mktypes= | ||||
| 	mktypes="GOARCH=$GOARCH go tool cgo -godefs" | ||||
| 	;; | ||||
| *) | ||||
| 	echo 'unrecognized $GOOS_$GOARCH: ' "$GOOSARCH" 1>&2 | ||||
| @ -217,8 +210,6 @@ esac | ||||
| 				# 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 " ; | ||||
| 			elif [ "$GOOS" == "darwin" ]; then | ||||
| 			        # pre-1.12, direct syscalls | ||||
| 			        echo "$mksyscall -tags $GOOS,$GOARCH,!go1.12 $syscall_goos syscall_darwin_${GOARCH}.1_11.go $GOOSARCH_in |gofmt >zsyscall_$GOOSARCH.1_11.go"; | ||||
| 			        # 1.12 and later, syscalls via libSystem | ||||
| 				echo "$mksyscall -tags $GOOS,$GOARCH,go1.12 $syscall_goos $GOOSARCH_in |gofmt >zsyscall_$GOOSARCH.go"; | ||||
| 				# 1.13 and later, syscalls via libSystem (including syscallPtr) | ||||
|  | ||||
							
								
								
									
										85
									
								
								vendor/golang.org/x/sys/unix/mkerrors.sh
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										85
									
								
								vendor/golang.org/x/sys/unix/mkerrors.sh
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -54,22 +54,28 @@ includes_AIX=' | ||||
| 
 | ||||
| includes_Darwin=' | ||||
| #define _DARWIN_C_SOURCE | ||||
| #define KERNEL | ||||
| #define KERNEL 1 | ||||
| #define _DARWIN_USE_64_BIT_INODE | ||||
| #define __APPLE_USE_RFC_3542 | ||||
| #include <stdint.h> | ||||
| #include <sys/attr.h> | ||||
| #include <sys/clonefile.h> | ||||
| #include <sys/kern_control.h> | ||||
| #include <sys/types.h> | ||||
| #include <sys/event.h> | ||||
| #include <sys/ptrace.h> | ||||
| #include <sys/select.h> | ||||
| #include <sys/socket.h> | ||||
| #include <sys/un.h> | ||||
| #include <sys/sockio.h> | ||||
| #include <sys/sys_domain.h> | ||||
| #include <sys/sysctl.h> | ||||
| #include <sys/mman.h> | ||||
| #include <sys/mount.h> | ||||
| #include <sys/utsname.h> | ||||
| #include <sys/wait.h> | ||||
| #include <sys/xattr.h> | ||||
| #include <sys/vsock.h> | ||||
| #include <net/bpf.h> | ||||
| #include <net/if.h> | ||||
| #include <net/if_types.h> | ||||
| @ -77,6 +83,9 @@ includes_Darwin=' | ||||
| #include <netinet/in.h> | ||||
| #include <netinet/ip.h> | ||||
| #include <termios.h> | ||||
| 
 | ||||
| // for backwards compatibility because moved TIOCREMOTE to Kernel.framework after MacOSX12.0.sdk. | ||||
| #define TIOCREMOTE 0x80047469 | ||||
| ' | ||||
| 
 | ||||
| includes_DragonFly=' | ||||
| @ -93,6 +102,7 @@ includes_DragonFly=' | ||||
| #include <sys/ioctl.h> | ||||
| #include <net/bpf.h> | ||||
| #include <net/if.h> | ||||
| #include <net/if_clone.h> | ||||
| #include <net/if_types.h> | ||||
| #include <net/route.h> | ||||
| #include <netinet/in.h> | ||||
| @ -107,8 +117,10 @@ includes_FreeBSD=' | ||||
| #include <sys/types.h> | ||||
| #include <sys/disk.h> | ||||
| #include <sys/event.h> | ||||
| #include <sys/sched.h> | ||||
| #include <sys/select.h> | ||||
| #include <sys/socket.h> | ||||
| #include <sys/un.h> | ||||
| #include <sys/sockio.h> | ||||
| #include <sys/stat.h> | ||||
| #include <sys/sysctl.h> | ||||
| @ -192,19 +204,25 @@ struct ltchars { | ||||
| #include <sys/xattr.h> | ||||
| #include <linux/bpf.h> | ||||
| #include <linux/can.h> | ||||
| #include <linux/can/error.h> | ||||
| #include <linux/can/netlink.h> | ||||
| #include <linux/can/raw.h> | ||||
| #include <linux/capability.h> | ||||
| #include <linux/cryptouser.h> | ||||
| #include <linux/devlink.h> | ||||
| #include <linux/dm-ioctl.h> | ||||
| #include <linux/errqueue.h> | ||||
| #include <linux/ethtool_netlink.h> | ||||
| #include <linux/falloc.h> | ||||
| #include <linux/fanotify.h> | ||||
| #include <linux/fib_rules.h> | ||||
| #include <linux/filter.h> | ||||
| #include <linux/fs.h> | ||||
| #include <linux/fscrypt.h> | ||||
| #include <linux/fsverity.h> | ||||
| #include <linux/genetlink.h> | ||||
| #include <linux/hdreg.h> | ||||
| #include <linux/icmpv6.h> | ||||
| #include <linux/hidraw.h> | ||||
| #include <linux/if.h> | ||||
| #include <linux/if_addr.h> | ||||
| #include <linux/if_alg.h> | ||||
| @ -214,17 +232,24 @@ struct ltchars { | ||||
| #include <linux/if_tun.h> | ||||
| #include <linux/if_packet.h> | ||||
| #include <linux/if_xdp.h> | ||||
| #include <linux/input.h> | ||||
| #include <linux/kcm.h> | ||||
| #include <linux/kexec.h> | ||||
| #include <linux/keyctl.h> | ||||
| #include <linux/landlock.h> | ||||
| #include <linux/loop.h> | ||||
| #include <linux/lwtunnel.h> | ||||
| #include <linux/magic.h> | ||||
| #include <linux/memfd.h> | ||||
| #include <linux/module.h> | ||||
| #include <linux/mount.h> | ||||
| #include <linux/netfilter/nfnetlink.h> | ||||
| #include <linux/netlink.h> | ||||
| #include <linux/net_namespace.h> | ||||
| #include <linux/nfc.h> | ||||
| #include <linux/nsfs.h> | ||||
| #include <linux/perf_event.h> | ||||
| #include <linux/pps.h> | ||||
| #include <linux/ptrace.h> | ||||
| #include <linux/random.h> | ||||
| #include <linux/reboot.h> | ||||
| @ -239,8 +264,10 @@ struct ltchars { | ||||
| #include <linux/vm_sockets.h> | ||||
| #include <linux/wait.h> | ||||
| #include <linux/watchdog.h> | ||||
| #include <linux/wireguard.h> | ||||
| 
 | ||||
| #include <mtd/ubi-user.h> | ||||
| #include <mtd/mtd-user.h> | ||||
| #include <net/route.h> | ||||
| 
 | ||||
| #if defined(__sparc__) | ||||
| @ -288,6 +315,17 @@ struct ltchars { | ||||
| // Including linux/l2tp.h here causes conflicts between linux/in.h | ||||
| // and netinet/in.h included via net/route.h above. | ||||
| #define IPPROTO_L2TP		115 | ||||
| 
 | ||||
| // Copied from linux/hid.h. | ||||
| // Keep in sync with the size of the referenced fields. | ||||
| #define _HIDIOCGRAWNAME_LEN	128 // sizeof_field(struct hid_device, name) | ||||
| #define _HIDIOCGRAWPHYS_LEN	64  // sizeof_field(struct hid_device, phys) | ||||
| #define _HIDIOCGRAWUNIQ_LEN	64  // sizeof_field(struct hid_device, uniq) | ||||
| 
 | ||||
| #define _HIDIOCGRAWNAME		HIDIOCGRAWNAME(_HIDIOCGRAWNAME_LEN) | ||||
| #define _HIDIOCGRAWPHYS		HIDIOCGRAWPHYS(_HIDIOCGRAWPHYS_LEN) | ||||
| #define _HIDIOCGRAWUNIQ		HIDIOCGRAWUNIQ(_HIDIOCGRAWUNIQ_LEN) | ||||
| 
 | ||||
| ' | ||||
| 
 | ||||
| includes_NetBSD=' | ||||
| @ -297,6 +335,7 @@ includes_NetBSD=' | ||||
| #include <sys/extattr.h> | ||||
| #include <sys/mman.h> | ||||
| #include <sys/mount.h> | ||||
| #include <sys/sched.h> | ||||
| #include <sys/select.h> | ||||
| #include <sys/socket.h> | ||||
| #include <sys/sockio.h> | ||||
| @ -325,6 +364,7 @@ includes_OpenBSD=' | ||||
| #include <sys/mman.h> | ||||
| #include <sys/mount.h> | ||||
| #include <sys/select.h> | ||||
| #include <sys/sched.h> | ||||
| #include <sys/socket.h> | ||||
| #include <sys/sockio.h> | ||||
| #include <sys/stat.h> | ||||
| @ -365,6 +405,7 @@ includes_SunOS=' | ||||
| #include <sys/socket.h> | ||||
| #include <sys/sockio.h> | ||||
| #include <sys/stat.h> | ||||
| #include <sys/stream.h> | ||||
| #include <sys/mman.h> | ||||
| #include <sys/wait.h> | ||||
| #include <sys/ioctl.h> | ||||
| @ -374,10 +415,11 @@ includes_SunOS=' | ||||
| #include <net/if_arp.h> | ||||
| #include <net/if_types.h> | ||||
| #include <net/route.h> | ||||
| #include <netinet/icmp6.h> | ||||
| #include <netinet/in.h> | ||||
| #include <termios.h> | ||||
| #include <netinet/ip.h> | ||||
| #include <netinet/ip_mroute.h> | ||||
| #include <termios.h> | ||||
| ' | ||||
| 
 | ||||
| 
 | ||||
| @ -432,6 +474,7 @@ ccflags="$@" | ||||
| 		$2 !~ /^EPROC_/ && | ||||
| 		$2 !~ /^EQUIV_/ && | ||||
| 		$2 !~ /^EXPR_/ && | ||||
| 		$2 !~ /^EVIOC/ && | ||||
| 		$2 ~ /^E[A-Z0-9_]+$/ || | ||||
| 		$2 ~ /^B[0-9_]+$/ || | ||||
| 		$2 ~ /^(OLD|NEW)DEV$/ || | ||||
| @ -463,13 +506,18 @@ ccflags="$@" | ||||
| 		$2 ~ /^O?XTABS$/ || | ||||
| 		$2 ~ /^TC[IO](ON|OFF)$/ || | ||||
| 		$2 ~ /^IN_/ || | ||||
| 		$2 ~ /^KCM/ || | ||||
| 		$2 ~ /^LANDLOCK_/ || | ||||
| 		$2 ~ /^LOCK_(SH|EX|NB|UN)$/ || | ||||
| 		$2 ~ /^LO_(KEY|NAME)_SIZE$/ || | ||||
| 		$2 ~ /^LOOP_(CLR|CTL|GET|SET)_/ || | ||||
| 		$2 ~ /^(AF|SOCK|SO|SOL|IPPROTO|IP|IPV6|ICMP6|TCP|MCAST|EVFILT|NOTE|EV|SHUT|PROT|MAP|MFD|T?PACKET|MSG|SCM|MCL|DT|MADV|PR)_/ || | ||||
| 		$2 ~ /^(AF|SOCK|SO|SOL|IPPROTO|IP|IPV6|TCP|MCAST|EVFILT|NOTE|SHUT|PROT|MAP|MFD|T?PACKET|MSG|SCM|MCL|DT|MADV|PR|LOCAL|TCPOPT)_/ || | ||||
| 		$2 ~ /^NFC_(GENL|PROTO|COMM|RF|SE|DIRECTION|LLCP|SOCKPROTO)_/ || | ||||
| 		$2 ~ /^NFC_.*_(MAX)?SIZE$/ || | ||||
| 		$2 ~ /^RAW_PAYLOAD_/ || | ||||
| 		$2 ~ /^TP_STATUS_/ || | ||||
| 		$2 ~ /^FALLOC_/ || | ||||
| 		$2 == "ICMPV6_FILTER" || | ||||
| 		$2 ~ /^ICMPV?6?_(FILTER|SEC)/ || | ||||
| 		$2 == "SOMAXCONN" || | ||||
| 		$2 == "NAME_MAX" || | ||||
| 		$2 == "IFNAMSIZ" || | ||||
| @ -478,7 +526,7 @@ ccflags="$@" | ||||
| 		$2 ~ /^HW_MACHINE$/ || | ||||
| 		$2 ~ /^SYSCTL_VERS/ || | ||||
| 		$2 !~ "MNT_BITS" && | ||||
| 		$2 ~ /^(MS|MNT|UMOUNT)_/ || | ||||
| 		$2 ~ /^(MS|MNT|MOUNT|UMOUNT)_/ || | ||||
| 		$2 ~ /^NS_GET_/ || | ||||
| 		$2 ~ /^TUN(SET|GET|ATTACH|DETACH)/ || | ||||
| 		$2 ~ /^(O|F|[ES]?FD|NAME|S|PTRACE|PT|TFD)_/ || | ||||
| @ -489,6 +537,7 @@ ccflags="$@" | ||||
| 		$2 !~ "NLA_TYPE_MASK" && | ||||
| 		$2 !~ /^RTC_VL_(ACCURACY|BACKUP|DATA)/ && | ||||
| 		$2 ~ /^(NETLINK|NLM|NLMSG|NLA|IFA|IFAN|RT|RTC|RTCF|RTN|RTPROT|RTNH|ARPHRD|ETH_P|NETNSA)_/ || | ||||
| 		$2 ~ /^FIORDCHK$/ || | ||||
| 		$2 ~ /^SIOC/ || | ||||
| 		$2 ~ /^TIOC/ || | ||||
| 		$2 ~ /^TCGET/ || | ||||
| @ -507,17 +556,23 @@ ccflags="$@" | ||||
| 		$2 ~ /^(CLOCK|TIMER)_/ || | ||||
| 		$2 ~ /^CAN_/ || | ||||
| 		$2 ~ /^CAP_/ || | ||||
| 		$2 ~ /^CP_/ || | ||||
| 		$2 ~ /^CPUSTATES$/ || | ||||
| 		$2 ~ /^CTLIOCGINFO$/ || | ||||
| 		$2 ~ /^ALG_/ || | ||||
| 		$2 ~ /^FI(CLONE|DEDUPERANGE)/ || | ||||
| 		$2 ~ /^FS_(POLICY_FLAGS|KEY_DESC|ENCRYPTION_MODE|[A-Z0-9_]+_KEY_SIZE)/ || | ||||
| 		$2 ~ /^FS_IOC_.*(ENCRYPTION|VERITY|[GS]ETFLAGS)/ || | ||||
| 		$2 ~ /^FS_VERITY_/ || | ||||
| 		$2 ~ /^FSCRYPT_/ || | ||||
| 		$2 ~ /^DM_/ || | ||||
| 		$2 ~ /^GRND_/ || | ||||
| 		$2 ~ /^RND/ || | ||||
| 		$2 ~ /^KEY_(SPEC|REQKEY_DEFL)_/ || | ||||
| 		$2 ~ /^KEYCTL_/ || | ||||
| 		$2 ~ /^PERF_EVENT_IOC_/ || | ||||
| 		$2 ~ /^PERF_/ || | ||||
| 		$2 ~ /^SECCOMP_MODE_/ || | ||||
| 		$2 ~ /^SEEK_/ || | ||||
| 		$2 ~ /^SPLICE_/ || | ||||
| 		$2 ~ /^SYNC_FILE_RANGE_/ || | ||||
| 		$2 !~ /^AUDIT_RECORD_MAGIC/ && | ||||
| @ -535,18 +590,31 @@ ccflags="$@" | ||||
| 		$2 ~ /^XATTR_(CREATE|REPLACE|NO(DEFAULT|FOLLOW|SECURITY)|SHOWCOMPRESSION)/ || | ||||
| 		$2 ~ /^ATTR_(BIT_MAP_COUNT|(CMN|VOL|FILE)_)/ || | ||||
| 		$2 ~ /^FSOPT_/ || | ||||
| 		$2 ~ /^WDIOC_/ || | ||||
| 		$2 ~ /^WDIO[CFS]_/ || | ||||
| 		$2 ~ /^NFN/ || | ||||
| 		$2 ~ /^XDP_/ || | ||||
| 		$2 ~ /^RWF_/ || | ||||
| 		$2 ~ /^(HDIO|WIN|SMART)_/ || | ||||
| 		$2 ~ /^CRYPTO_/ || | ||||
| 		$2 ~ /^TIPC_/ || | ||||
| 		$2 !~  "DEVLINK_RELOAD_LIMITS_VALID_MASK" && | ||||
| 		$2 ~ /^DEVLINK_/ || | ||||
| 		$2 ~ /^ETHTOOL_/ || | ||||
| 		$2 ~ /^LWTUNNEL_IP/ || | ||||
| 		$2 ~ /^ITIMER_/ || | ||||
| 		$2 !~ "WMESGLEN" && | ||||
| 		$2 ~ /^W[A-Z0-9]+$/ || | ||||
| 		$2 ~ /^P_/ || | ||||
| 		$2 ~/^PPPIOC/ || | ||||
| 		$2 ~ /^FAN_|FANOTIFY_/ || | ||||
| 		$2 == "HID_MAX_DESCRIPTOR_SIZE" || | ||||
| 		$2 ~ /^_?HIDIOC/ || | ||||
| 		$2 ~ /^BUS_(USB|HIL|BLUETOOTH|VIRTUAL)$/ || | ||||
| 		$2 ~ /^MTD/ || | ||||
| 		$2 ~ /^OTP/ || | ||||
| 		$2 ~ /^MEM/ || | ||||
| 		$2 ~ /^WG/ || | ||||
| 		$2 ~ /^FIB_RULE_/ || | ||||
| 		$2 ~ /^BLK[A-Z]*(GET$|SET$|BUF$|PART$|SIZE)/ {printf("\t%s = C.%s\n", $2, $2)} | ||||
| 		$2 ~ /^__WCOREFLAG$/ {next} | ||||
| 		$2 ~ /^__W[A-Z0-9]+$/ {printf("\t%s = C.%s\n", substr($2,3), $2)} | ||||
| @ -584,6 +652,7 @@ echo '#include <signal.h>' | $CC -x c - -E -dM $ccflags | | ||||
| echo '// mkerrors.sh' "$@" | ||||
| echo '// Code generated by the command above; see README.md. DO NOT EDIT.' | ||||
| echo | ||||
| echo "//go:build ${GOARCH} && ${GOOS}" | ||||
| echo "// +build ${GOARCH},${GOOS}" | ||||
| echo | ||||
| go tool cgo -godefs -- "$@" _const.go >_error.out | ||||
|  | ||||
							
								
								
									
										1
									
								
								vendor/golang.org/x/sys/unix/pagesize_unix.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/sys/unix/pagesize_unix.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -2,6 +2,7 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| //go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris | ||||
| // +build aix darwin dragonfly freebsd linux netbsd openbsd solaris | ||||
| 
 | ||||
| // For Unix, get the pagesize from the runtime. | ||||
|  | ||||
							
								
								
									
										12
									
								
								vendor/golang.org/x/sys/unix/ptrace_darwin.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								vendor/golang.org/x/sys/unix/ptrace_darwin.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,12 @@ | ||||
| // Copyright 2020 The Go Authors. All rights reserved. | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| //go:build darwin && !ios | ||||
| // +build darwin,!ios | ||||
| 
 | ||||
| package unix | ||||
| 
 | ||||
| func ptrace(request int, pid int, addr uintptr, data uintptr) error { | ||||
| 	return ptrace1(request, pid, addr, data) | ||||
| } | ||||
							
								
								
									
										12
									
								
								vendor/golang.org/x/sys/unix/ptrace_ios.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								vendor/golang.org/x/sys/unix/ptrace_ios.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,12 @@ | ||||
| // Copyright 2020 The Go Authors. All rights reserved. | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| //go:build ios | ||||
| // +build ios | ||||
| 
 | ||||
| package unix | ||||
| 
 | ||||
| func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { | ||||
| 	return ENOTSUP | ||||
| } | ||||
							
								
								
									
										1
									
								
								vendor/golang.org/x/sys/unix/race.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/sys/unix/race.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -2,6 +2,7 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| //go:build (darwin && race) || (linux && race) || (freebsd && race) | ||||
| // +build darwin,race linux,race freebsd,race | ||||
| 
 | ||||
| package unix | ||||
|  | ||||
							
								
								
									
										3
									
								
								vendor/golang.org/x/sys/unix/race0.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/golang.org/x/sys/unix/race0.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -2,7 +2,8 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| // +build aix darwin,!race linux,!race freebsd,!race netbsd openbsd solaris dragonfly | ||||
| //go:build aix || (darwin && !race) || (linux && !race) || (freebsd && !race) || netbsd || openbsd || solaris || dragonfly || zos | ||||
| // +build aix darwin,!race linux,!race freebsd,!race netbsd openbsd solaris dragonfly zos | ||||
| 
 | ||||
| package unix | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										1
									
								
								vendor/golang.org/x/sys/unix/readdirent_getdents.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/sys/unix/readdirent_getdents.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -2,6 +2,7 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| //go:build aix || dragonfly || freebsd || linux || netbsd || openbsd | ||||
| // +build aix dragonfly freebsd linux netbsd openbsd | ||||
| 
 | ||||
| package unix | ||||
|  | ||||
							
								
								
									
										1
									
								
								vendor/golang.org/x/sys/unix/readdirent_getdirentries.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/sys/unix/readdirent_getdirentries.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -2,6 +2,7 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| //go:build darwin | ||||
| // +build darwin | ||||
| 
 | ||||
| package unix | ||||
|  | ||||
							
								
								
									
										49
									
								
								vendor/golang.org/x/sys/unix/sockcmsg_linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										49
									
								
								vendor/golang.org/x/sys/unix/sockcmsg_linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -34,3 +34,52 @@ func ParseUnixCredentials(m *SocketControlMessage) (*Ucred, error) { | ||||
| 	ucred := *(*Ucred)(unsafe.Pointer(&m.Data[0])) | ||||
| 	return &ucred, nil | ||||
| } | ||||
| 
 | ||||
| // PktInfo4 encodes Inet4Pktinfo into a socket control message of type IP_PKTINFO. | ||||
| func PktInfo4(info *Inet4Pktinfo) []byte { | ||||
| 	b := make([]byte, CmsgSpace(SizeofInet4Pktinfo)) | ||||
| 	h := (*Cmsghdr)(unsafe.Pointer(&b[0])) | ||||
| 	h.Level = SOL_IP | ||||
| 	h.Type = IP_PKTINFO | ||||
| 	h.SetLen(CmsgLen(SizeofInet4Pktinfo)) | ||||
| 	*(*Inet4Pktinfo)(h.data(0)) = *info | ||||
| 	return b | ||||
| } | ||||
| 
 | ||||
| // PktInfo6 encodes Inet6Pktinfo into a socket control message of type IPV6_PKTINFO. | ||||
| func PktInfo6(info *Inet6Pktinfo) []byte { | ||||
| 	b := make([]byte, CmsgSpace(SizeofInet6Pktinfo)) | ||||
| 	h := (*Cmsghdr)(unsafe.Pointer(&b[0])) | ||||
| 	h.Level = SOL_IPV6 | ||||
| 	h.Type = IPV6_PKTINFO | ||||
| 	h.SetLen(CmsgLen(SizeofInet6Pktinfo)) | ||||
| 	*(*Inet6Pktinfo)(h.data(0)) = *info | ||||
| 	return b | ||||
| } | ||||
| 
 | ||||
| // ParseOrigDstAddr decodes a socket control message containing the original | ||||
| // destination address. To receive such a message the IP_RECVORIGDSTADDR or | ||||
| // IPV6_RECVORIGDSTADDR option must be enabled on the socket. | ||||
| func ParseOrigDstAddr(m *SocketControlMessage) (Sockaddr, error) { | ||||
| 	switch { | ||||
| 	case m.Header.Level == SOL_IP && m.Header.Type == IP_ORIGDSTADDR: | ||||
| 		pp := (*RawSockaddrInet4)(unsafe.Pointer(&m.Data[0])) | ||||
| 		sa := new(SockaddrInet4) | ||||
| 		p := (*[2]byte)(unsafe.Pointer(&pp.Port)) | ||||
| 		sa.Port = int(p[0])<<8 + int(p[1]) | ||||
| 		sa.Addr = pp.Addr | ||||
| 		return sa, nil | ||||
| 
 | ||||
| 	case m.Header.Level == SOL_IPV6 && m.Header.Type == IPV6_ORIGDSTADDR: | ||||
| 		pp := (*RawSockaddrInet6)(unsafe.Pointer(&m.Data[0])) | ||||
| 		sa := new(SockaddrInet6) | ||||
| 		p := (*[2]byte)(unsafe.Pointer(&pp.Port)) | ||||
| 		sa.Port = int(p[0])<<8 + int(p[1]) | ||||
| 		sa.ZoneId = pp.Scope_id | ||||
| 		sa.Addr = pp.Addr | ||||
| 		return sa, nil | ||||
| 
 | ||||
| 	default: | ||||
| 		return nil, EINVAL | ||||
| 	} | ||||
| } | ||||
|  | ||||
							
								
								
									
										3
									
								
								vendor/golang.org/x/sys/unix/sockcmsg_unix.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/golang.org/x/sys/unix/sockcmsg_unix.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -2,7 +2,8 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| // +build aix darwin dragonfly freebsd linux netbsd openbsd solaris | ||||
| //go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos | ||||
| // +build aix darwin dragonfly freebsd linux netbsd openbsd solaris zos | ||||
| 
 | ||||
| // Socket control messages | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										13
									
								
								vendor/golang.org/x/sys/unix/sockcmsg_unix_other.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										13
									
								
								vendor/golang.org/x/sys/unix/sockcmsg_unix_other.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -2,7 +2,8 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| // +build aix darwin freebsd linux netbsd openbsd solaris | ||||
| //go:build aix || darwin || freebsd || linux || netbsd || openbsd || solaris || zos | ||||
| // +build aix darwin freebsd linux netbsd openbsd solaris zos | ||||
| 
 | ||||
| package unix | ||||
| 
 | ||||
| @ -20,7 +21,7 @@ func cmsgAlignOf(salen int) int { | ||||
| 	case "aix": | ||||
| 		// There is no alignment on AIX. | ||||
| 		salign = 1 | ||||
| 	case "darwin", "illumos", "solaris": | ||||
| 	case "darwin", "ios", "illumos", "solaris": | ||||
| 		// NOTE: It seems like 64-bit Darwin, Illumos and Solaris | ||||
| 		// kernels still require 32-bit aligned access to network | ||||
| 		// subsystem. | ||||
| @ -32,6 +33,14 @@ func cmsgAlignOf(salen int) int { | ||||
| 		if runtime.GOARCH == "arm" { | ||||
| 			salign = 8 | ||||
| 		} | ||||
| 		// NetBSD aarch64 requires 128-bit alignment. | ||||
| 		if runtime.GOOS == "netbsd" && runtime.GOARCH == "arm64" { | ||||
| 			salign = 16 | ||||
| 		} | ||||
| 	case "zos": | ||||
| 		// z/OS socket macros use [32-bit] sizeof(int) alignment, | ||||
| 		// not pointer width. | ||||
| 		salign = SizeofInt | ||||
| 	} | ||||
| 
 | ||||
| 	return (salen + salign - 1) & ^(salign - 1) | ||||
|  | ||||
							
								
								
									
										1
									
								
								vendor/golang.org/x/sys/unix/str.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/sys/unix/str.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -2,6 +2,7 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| //go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris | ||||
| // +build aix darwin dragonfly freebsd linux netbsd openbsd solaris | ||||
| 
 | ||||
| package unix | ||||
|  | ||||
							
								
								
									
										46
									
								
								vendor/golang.org/x/sys/unix/syscall.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										46
									
								
								vendor/golang.org/x/sys/unix/syscall.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -2,7 +2,8 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| // +build aix darwin dragonfly freebsd linux netbsd openbsd solaris | ||||
| //go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos | ||||
| // +build aix darwin dragonfly freebsd linux netbsd openbsd solaris zos | ||||
| 
 | ||||
| // Package unix contains an interface to the low-level operating system | ||||
| // primitives. OS details vary depending on the underlying system, and | ||||
| @ -24,7 +25,13 @@ | ||||
| // holds a value of type syscall.Errno. | ||||
| package unix // import "golang.org/x/sys/unix" | ||||
| 
 | ||||
| import "strings" | ||||
| import ( | ||||
| 	"bytes" | ||||
| 	"strings" | ||||
| 	"unsafe" | ||||
| 
 | ||||
| 	"golang.org/x/sys/internal/unsafeheader" | ||||
| ) | ||||
| 
 | ||||
| // ByteSliceFromString returns a NUL-terminated slice of bytes | ||||
| // containing the text of s. If s contains a NUL byte at any | ||||
| @ -49,5 +56,40 @@ func BytePtrFromString(s string) (*byte, error) { | ||||
| 	return &a[0], nil | ||||
| } | ||||
| 
 | ||||
| // ByteSliceToString returns a string form of the text represented by the slice s, with a terminating NUL and any | ||||
| // bytes after the NUL removed. | ||||
| func ByteSliceToString(s []byte) string { | ||||
| 	if i := bytes.IndexByte(s, 0); i != -1 { | ||||
| 		s = s[:i] | ||||
| 	} | ||||
| 	return string(s) | ||||
| } | ||||
| 
 | ||||
| // BytePtrToString takes a pointer to a sequence of text and returns the corresponding string. | ||||
| // If the pointer is nil, it returns the empty string. It assumes that the text sequence is terminated | ||||
| // at a zero byte; if the zero byte is not present, the program may crash. | ||||
| func BytePtrToString(p *byte) string { | ||||
| 	if p == nil { | ||||
| 		return "" | ||||
| 	} | ||||
| 	if *p == 0 { | ||||
| 		return "" | ||||
| 	} | ||||
| 
 | ||||
| 	// Find NUL terminator. | ||||
| 	n := 0 | ||||
| 	for ptr := unsafe.Pointer(p); *(*byte)(ptr) != 0; n++ { | ||||
| 		ptr = unsafe.Pointer(uintptr(ptr) + 1) | ||||
| 	} | ||||
| 
 | ||||
| 	var s []byte | ||||
| 	h := (*unsafeheader.Slice)(unsafe.Pointer(&s)) | ||||
| 	h.Data = unsafe.Pointer(p) | ||||
| 	h.Len = n | ||||
| 	h.Cap = n | ||||
| 
 | ||||
| 	return string(s) | ||||
| } | ||||
| 
 | ||||
| // Single-word zero for use when we need a valid pointer to 0 bytes. | ||||
| var _zero uintptr | ||||
|  | ||||
							
								
								
									
										79
									
								
								vendor/golang.org/x/sys/unix/syscall_aix.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										79
									
								
								vendor/golang.org/x/sys/unix/syscall_aix.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -2,6 +2,7 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| //go:build aix | ||||
| // +build aix | ||||
| 
 | ||||
| // Aix system calls. | ||||
| @ -19,7 +20,24 @@ import "unsafe" | ||||
|  * Wrapped | ||||
|  */ | ||||
| 
 | ||||
| func Access(path string, mode uint32) (err error) { | ||||
| 	return Faccessat(AT_FDCWD, path, mode, 0) | ||||
| } | ||||
| 
 | ||||
| func Chmod(path string, mode uint32) (err error) { | ||||
| 	return Fchmodat(AT_FDCWD, path, mode, 0) | ||||
| } | ||||
| 
 | ||||
| func Chown(path string, uid int, gid int) (err error) { | ||||
| 	return Fchownat(AT_FDCWD, path, uid, gid, 0) | ||||
| } | ||||
| 
 | ||||
| func Creat(path string, mode uint32) (fd int, err error) { | ||||
| 	return Open(path, O_CREAT|O_WRONLY|O_TRUNC, mode) | ||||
| } | ||||
| 
 | ||||
| //sys	utimes(path string, times *[2]Timeval) (err error) | ||||
| 
 | ||||
| func Utimes(path string, tv []Timeval) error { | ||||
| 	if len(tv) != 2 { | ||||
| 		return EINVAL | ||||
| @ -28,6 +46,7 @@ func Utimes(path string, tv []Timeval) error { | ||||
| } | ||||
| 
 | ||||
| //sys	utimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error) | ||||
| 
 | ||||
| func UtimesNano(path string, ts []Timespec) error { | ||||
| 	if len(ts) != 2 { | ||||
| 		return EINVAL | ||||
| @ -53,9 +72,7 @@ func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) { | ||||
| 	p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) | ||||
| 	p[0] = byte(sa.Port >> 8) | ||||
| 	p[1] = byte(sa.Port) | ||||
| 	for i := 0; i < len(sa.Addr); i++ { | ||||
| 		sa.raw.Addr[i] = sa.Addr[i] | ||||
| 	} | ||||
| 	sa.raw.Addr = sa.Addr | ||||
| 	return unsafe.Pointer(&sa.raw), SizeofSockaddrInet4, nil | ||||
| } | ||||
| 
 | ||||
| @ -68,9 +85,7 @@ func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) { | ||||
| 	p[0] = byte(sa.Port >> 8) | ||||
| 	p[1] = byte(sa.Port) | ||||
| 	sa.raw.Scope_id = sa.ZoneId | ||||
| 	for i := 0; i < len(sa.Addr); i++ { | ||||
| 		sa.raw.Addr[i] = sa.Addr[i] | ||||
| 	} | ||||
| 	sa.raw.Addr = sa.Addr | ||||
| 	return unsafe.Pointer(&sa.raw), SizeofSockaddrInet6, nil | ||||
| } | ||||
| 
 | ||||
| @ -202,18 +217,12 @@ func Accept(fd int) (nfd int, sa Sockaddr, err error) { | ||||
| 	return | ||||
| } | ||||
| 
 | ||||
| func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) { | ||||
| func recvmsgRaw(fd int, p, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) { | ||||
| 	// Recvmsg not implemented on AIX | ||||
| 	sa := new(SockaddrUnix) | ||||
| 	return -1, -1, -1, sa, ENOSYS | ||||
| 	return -1, -1, -1, ENOSYS | ||||
| } | ||||
| 
 | ||||
| func Sendmsg(fd int, p, oob []byte, to Sockaddr, flags int) (err error) { | ||||
| 	_, err = SendmsgN(fd, p, oob, to, flags) | ||||
| 	return | ||||
| } | ||||
| 
 | ||||
| func SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) { | ||||
| func sendmsgN(fd int, p, oob []byte, ptr unsafe.Pointer, salen _Socklen, flags int) (n int, err error) { | ||||
| 	// SendmsgN not implemented on AIX | ||||
| 	return -1, ENOSYS | ||||
| } | ||||
| @ -235,7 +244,7 @@ func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { | ||||
| 			} | ||||
| 		} | ||||
| 
 | ||||
| 		bytes := (*[10000]byte)(unsafe.Pointer(&pp.Path[0]))[0:n] | ||||
| 		bytes := (*[len(pp.Path)]byte)(unsafe.Pointer(&pp.Path[0]))[0:n] | ||||
| 		sa.Name = string(bytes) | ||||
| 		return sa, nil | ||||
| 
 | ||||
| @ -244,9 +253,7 @@ func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { | ||||
| 		sa := new(SockaddrInet4) | ||||
| 		p := (*[2]byte)(unsafe.Pointer(&pp.Port)) | ||||
| 		sa.Port = int(p[0])<<8 + int(p[1]) | ||||
| 		for i := 0; i < len(sa.Addr); i++ { | ||||
| 			sa.Addr[i] = pp.Addr[i] | ||||
| 		} | ||||
| 		sa.Addr = pp.Addr | ||||
| 		return sa, nil | ||||
| 
 | ||||
| 	case AF_INET6: | ||||
| @ -255,9 +262,7 @@ func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { | ||||
| 		p := (*[2]byte)(unsafe.Pointer(&pp.Port)) | ||||
| 		sa.Port = int(p[0])<<8 + int(p[1]) | ||||
| 		sa.ZoneId = pp.Scope_id | ||||
| 		for i := 0; i < len(sa.Addr); i++ { | ||||
| 			sa.Addr[i] = pp.Addr[i] | ||||
| 		} | ||||
| 		sa.Addr = pp.Addr | ||||
| 		return sa, nil | ||||
| 	} | ||||
| 	return nil, EAFNOSUPPORT | ||||
| @ -297,11 +302,13 @@ func direntNamlen(buf []byte) (uint64, bool) { | ||||
| } | ||||
| 
 | ||||
| //sys	getdirent(fd int, buf []byte) (n int, err error) | ||||
| 
 | ||||
| func Getdents(fd int, buf []byte) (n int, err error) { | ||||
| 	return getdirent(fd, buf) | ||||
| } | ||||
| 
 | ||||
| //sys	wait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, err error) | ||||
| 
 | ||||
| func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) { | ||||
| 	var status _C_int | ||||
| 	var r Pid_t | ||||
| @ -368,6 +375,12 @@ func (w WaitStatus) TrapCause() int { return -1 } | ||||
| 
 | ||||
| //sys	fcntl(fd int, cmd int, arg int) (val int, err error) | ||||
| 
 | ||||
| //sys	fsyncRange(fd int, how int, start int64, length int64) (err error) = fsync_range | ||||
| 
 | ||||
| func Fsync(fd int) error { | ||||
| 	return fsyncRange(fd, O_SYNC, 0, 0) | ||||
| } | ||||
| 
 | ||||
| /* | ||||
|  * Direct access | ||||
|  */ | ||||
| @ -384,7 +397,6 @@ func (w WaitStatus) TrapCause() int { return -1 } | ||||
| //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	Fdatasync(fd int) (err error) | ||||
| //sys	Fsync(fd int) (err error) | ||||
| // readdir_r | ||||
| //sysnb	Getpgid(pid int) (pgid int, err error) | ||||
| 
 | ||||
| @ -403,8 +415,8 @@ func (w WaitStatus) TrapCause() int { return -1 } | ||||
| //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   Open(path string, mode int, perm uint32) (fd int, err error) = open64 | ||||
| //sys   Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) | ||||
| //sys	Open(path string, mode int, perm uint32) (fd int, err error) = open64 | ||||
| //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	Readlink(path string, buf []byte) (n int, err error) | ||||
| //sys	Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) | ||||
| @ -423,8 +435,8 @@ func (w WaitStatus) TrapCause() int { return -1 } | ||||
| //sysnb	Times(tms *Tms) (ticks uintptr, err error) | ||||
| //sysnb	Umask(mask int) (oldmask int) | ||||
| //sysnb	Uname(buf *Utsname) (err error) | ||||
| //sys   Unlink(path string) (err error) | ||||
| //sys   Unlinkat(dirfd int, path string, flags int) (err error) | ||||
| //sys	Unlink(path string) (err error) | ||||
| //sys	Unlinkat(dirfd int, path string, flags int) (err error) | ||||
| //sys	Ustat(dev int, ubuf *Ustat_t) (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 | ||||
| @ -445,8 +457,8 @@ func (w WaitStatus) TrapCause() int { return -1 } | ||||
| //sys	Listen(s int, n int) (err error) | ||||
| //sys	lstat(path string, stat *Stat_t) (err error) | ||||
| //sys	Pause() (err error) | ||||
| //sys	Pread(fd int, p []byte, offset int64) (n int, err error) = pread64 | ||||
| //sys	Pwrite(fd int, p []byte, offset int64) (n int, err error) = pwrite64 | ||||
| //sys	pread(fd int, p []byte, offset int64) (n int, err error) = pread64 | ||||
| //sys	pwrite(fd int, p []byte, offset int64) (n int, err error) = pwrite64 | ||||
| //sys	Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) | ||||
| //sys	Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) | ||||
| //sysnb	Setregid(rgid int, egid int) (err error) | ||||
| @ -498,7 +510,7 @@ func Munmap(b []byte) (err error) { | ||||
| //sys	Munlock(b []byte) (err error) | ||||
| //sys	Munlockall() (err error) | ||||
| 
 | ||||
| //sysnb pipe(p *[2]_C_int) (err error) | ||||
| //sysnb	pipe(p *[2]_C_int) (err error) | ||||
| 
 | ||||
| func Pipe(p []int) (err error) { | ||||
| 	if len(p) != 2 { | ||||
| @ -506,8 +518,10 @@ func Pipe(p []int) (err error) { | ||||
| 	} | ||||
| 	var pp [2]_C_int | ||||
| 	err = pipe(&pp) | ||||
| 	p[0] = int(pp[0]) | ||||
| 	p[1] = int(pp[1]) | ||||
| 	if err == nil { | ||||
| 		p[0] = int(pp[0]) | ||||
| 		p[1] = int(pp[1]) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
| 
 | ||||
| @ -527,6 +541,7 @@ func Poll(fds []PollFd, timeout int) (n int, err error) { | ||||
| //sys	Getsystemcfg(label int) (n uint64) | ||||
| 
 | ||||
| //sys	umount(target string) (err error) | ||||
| 
 | ||||
| func Unmount(target string, flags int) (err error) { | ||||
| 	if flags != 0 { | ||||
| 		// AIX doesn't have any flags for umount. | ||||
|  | ||||
							
								
								
									
										4
									
								
								vendor/golang.org/x/sys/unix/syscall_aix_ppc.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/golang.org/x/sys/unix/syscall_aix_ppc.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -2,8 +2,8 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| // +build aix | ||||
| // +build ppc | ||||
| //go:build aix && ppc | ||||
| // +build aix,ppc | ||||
| 
 | ||||
| package unix | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										4
									
								
								vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -2,8 +2,8 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| // +build aix | ||||
| // +build ppc64 | ||||
| //go:build aix && ppc64 | ||||
| // +build aix,ppc64 | ||||
| 
 | ||||
| package unix | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										104
									
								
								vendor/golang.org/x/sys/unix/syscall_bsd.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										104
									
								
								vendor/golang.org/x/sys/unix/syscall_bsd.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -2,6 +2,7 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| //go:build darwin || dragonfly || freebsd || netbsd || openbsd | ||||
| // +build darwin dragonfly freebsd netbsd openbsd | ||||
| 
 | ||||
| // BSD system call wrappers shared by *BSD based systems | ||||
| @ -18,6 +19,21 @@ import ( | ||||
| 	"unsafe" | ||||
| ) | ||||
| 
 | ||||
| const ImplementsGetwd = true | ||||
| 
 | ||||
| func Getwd() (string, error) { | ||||
| 	var buf [PathMax]byte | ||||
| 	_, err := Getcwd(buf[0:]) | ||||
| 	if err != nil { | ||||
| 		return "", err | ||||
| 	} | ||||
| 	n := clen(buf[:]) | ||||
| 	if n < 1 { | ||||
| 		return "", EINVAL | ||||
| 	} | ||||
| 	return string(buf[:n]), nil | ||||
| } | ||||
| 
 | ||||
| /* | ||||
|  * Wrapped | ||||
|  */ | ||||
| @ -147,9 +163,7 @@ func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) { | ||||
| 	p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) | ||||
| 	p[0] = byte(sa.Port >> 8) | ||||
| 	p[1] = byte(sa.Port) | ||||
| 	for i := 0; i < len(sa.Addr); i++ { | ||||
| 		sa.raw.Addr[i] = sa.Addr[i] | ||||
| 	} | ||||
| 	sa.raw.Addr = sa.Addr | ||||
| 	return unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil | ||||
| } | ||||
| 
 | ||||
| @ -163,9 +177,7 @@ func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) { | ||||
| 	p[0] = byte(sa.Port >> 8) | ||||
| 	p[1] = byte(sa.Port) | ||||
| 	sa.raw.Scope_id = sa.ZoneId | ||||
| 	for i := 0; i < len(sa.Addr); i++ { | ||||
| 		sa.raw.Addr[i] = sa.Addr[i] | ||||
| 	} | ||||
| 	sa.raw.Addr = sa.Addr | ||||
| 	return unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil | ||||
| } | ||||
| 
 | ||||
| @ -194,9 +206,7 @@ func (sa *SockaddrDatalink) sockaddr() (unsafe.Pointer, _Socklen, error) { | ||||
| 	sa.raw.Nlen = sa.Nlen | ||||
| 	sa.raw.Alen = sa.Alen | ||||
| 	sa.raw.Slen = sa.Slen | ||||
| 	for i := 0; i < len(sa.raw.Data); i++ { | ||||
| 		sa.raw.Data[i] = sa.Data[i] | ||||
| 	} | ||||
| 	sa.raw.Data = sa.Data | ||||
| 	return unsafe.Pointer(&sa.raw), SizeofSockaddrDatalink, nil | ||||
| } | ||||
| 
 | ||||
| @ -212,9 +222,7 @@ func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { | ||||
| 		sa.Nlen = pp.Nlen | ||||
| 		sa.Alen = pp.Alen | ||||
| 		sa.Slen = pp.Slen | ||||
| 		for i := 0; i < len(sa.Data); i++ { | ||||
| 			sa.Data[i] = pp.Data[i] | ||||
| 		} | ||||
| 		sa.Data = pp.Data | ||||
| 		return sa, nil | ||||
| 
 | ||||
| 	case AF_UNIX: | ||||
| @ -246,9 +254,7 @@ func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { | ||||
| 		sa := new(SockaddrInet4) | ||||
| 		p := (*[2]byte)(unsafe.Pointer(&pp.Port)) | ||||
| 		sa.Port = int(p[0])<<8 + int(p[1]) | ||||
| 		for i := 0; i < len(sa.Addr); i++ { | ||||
| 			sa.Addr[i] = pp.Addr[i] | ||||
| 		} | ||||
| 		sa.Addr = pp.Addr | ||||
| 		return sa, nil | ||||
| 
 | ||||
| 	case AF_INET6: | ||||
| @ -257,12 +263,10 @@ func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { | ||||
| 		p := (*[2]byte)(unsafe.Pointer(&pp.Port)) | ||||
| 		sa.Port = int(p[0])<<8 + int(p[1]) | ||||
| 		sa.ZoneId = pp.Scope_id | ||||
| 		for i := 0; i < len(sa.Addr); i++ { | ||||
| 			sa.Addr[i] = pp.Addr[i] | ||||
| 		} | ||||
| 		sa.Addr = pp.Addr | ||||
| 		return sa, nil | ||||
| 	} | ||||
| 	return nil, EAFNOSUPPORT | ||||
| 	return anyToSockaddrGOOS(fd, rsa) | ||||
| } | ||||
| 
 | ||||
| func Accept(fd int) (nfd int, sa Sockaddr, err error) { | ||||
| @ -272,7 +276,7 @@ func Accept(fd int) (nfd int, sa Sockaddr, err error) { | ||||
| 	if err != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	if runtime.GOOS == "darwin" && len == 0 { | ||||
| 	if (runtime.GOOS == "darwin" || runtime.GOOS == "ios") && len == 0 { | ||||
| 		// Accepted socket has no address. | ||||
| 		// This is likely due to a bug in xnu kernels, | ||||
| 		// where instead of ECONNABORTED error socket | ||||
| @ -303,7 +307,7 @@ func Getsockname(fd int) (sa Sockaddr, err error) { | ||||
| 	return anyToSockaddr(fd, &rsa) | ||||
| } | ||||
| 
 | ||||
| //sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) | ||||
| //sysnb	socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) | ||||
| 
 | ||||
| // GetsockoptString returns the string value of the socket option opt for the | ||||
| // socket associated with fd at the given socket level. | ||||
| @ -317,14 +321,13 @@ func GetsockoptString(fd, level, opt int) (string, error) { | ||||
| 	return string(buf[:vallen-1]), nil | ||||
| } | ||||
| 
 | ||||
| //sys   recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) | ||||
| //sys   sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) | ||||
| //sys	recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) | ||||
| //sys	sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) | ||||
| //sys	recvmsg(s int, msg *Msghdr, flags int) (n int, err error) | ||||
| 
 | ||||
| func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) { | ||||
| func recvmsgRaw(fd int, p, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) { | ||||
| 	var msg Msghdr | ||||
| 	var rsa RawSockaddrAny | ||||
| 	msg.Name = (*byte)(unsafe.Pointer(&rsa)) | ||||
| 	msg.Name = (*byte)(unsafe.Pointer(rsa)) | ||||
| 	msg.Namelen = uint32(SizeofSockaddrAny) | ||||
| 	var iov Iovec | ||||
| 	if len(p) > 0 { | ||||
| @ -348,29 +351,12 @@ func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from | ||||
| 	} | ||||
| 	oobn = int(msg.Controllen) | ||||
| 	recvflags = int(msg.Flags) | ||||
| 	// source address is only specified if the socket is unconnected | ||||
| 	if rsa.Addr.Family != AF_UNSPEC { | ||||
| 		from, err = anyToSockaddr(fd, &rsa) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
| 
 | ||||
| //sys	sendmsg(s int, msg *Msghdr, flags int) (n int, err error) | ||||
| 
 | ||||
| func Sendmsg(fd int, p, oob []byte, to Sockaddr, flags int) (err error) { | ||||
| 	_, err = SendmsgN(fd, p, oob, to, flags) | ||||
| 	return | ||||
| } | ||||
| 
 | ||||
| func SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) { | ||||
| 	var ptr unsafe.Pointer | ||||
| 	var salen _Socklen | ||||
| 	if to != nil { | ||||
| 		ptr, salen, err = to.sockaddr() | ||||
| 		if err != nil { | ||||
| 			return 0, err | ||||
| 		} | ||||
| 	} | ||||
| func sendmsgN(fd int, p, oob []byte, ptr unsafe.Pointer, salen _Socklen, flags int) (n int, err error) { | ||||
| 	var msg Msghdr | ||||
| 	msg.Name = (*byte)(unsafe.Pointer(ptr)) | ||||
| 	msg.Namelen = uint32(salen) | ||||
| @ -527,6 +513,23 @@ func SysctlClockinfo(name string) (*Clockinfo, error) { | ||||
| 	return &ci, nil | ||||
| } | ||||
| 
 | ||||
| func SysctlTimeval(name string) (*Timeval, error) { | ||||
| 	mib, err := sysctlmib(name) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	var tv Timeval | ||||
| 	n := uintptr(unsafe.Sizeof(tv)) | ||||
| 	if err := sysctl(mib, (*byte)(unsafe.Pointer(&tv)), &n, nil, 0); err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	if n != unsafe.Sizeof(tv) { | ||||
| 		return nil, EIO | ||||
| 	} | ||||
| 	return &tv, nil | ||||
| } | ||||
| 
 | ||||
| //sys	utimes(path string, timeval *[2]Timeval) (err error) | ||||
| 
 | ||||
| func Utimes(path string, tv []Timeval) error { | ||||
| @ -550,12 +553,7 @@ func UtimesNano(path string, ts []Timespec) error { | ||||
| 	if len(ts) != 2 { | ||||
| 		return EINVAL | ||||
| 	} | ||||
| 	// Darwin setattrlist can set nanosecond timestamps | ||||
| 	err := setattrlistTimes(path, ts, 0) | ||||
| 	if err != ENOSYS { | ||||
| 		return err | ||||
| 	} | ||||
| 	err = utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) | ||||
| 	err := utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) | ||||
| 	if err != ENOSYS { | ||||
| 		return err | ||||
| 	} | ||||
| @ -575,10 +573,6 @@ func UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error { | ||||
| 	if len(ts) != 2 { | ||||
| 		return EINVAL | ||||
| 	} | ||||
| 	err := setattrlistTimes(path, ts, flags) | ||||
| 	if err != ENOSYS { | ||||
| 		return err | ||||
| 	} | ||||
| 	return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags) | ||||
| } | ||||
| 
 | ||||
| @ -594,7 +588,7 @@ func Futimes(fd int, tv []Timeval) error { | ||||
| 	return futimes(fd, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) | ||||
| } | ||||
| 
 | ||||
| //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) { | ||||
| 	if len(fds) == 0 { | ||||
|  | ||||
							
								
								
									
										5
									
								
								vendor/golang.org/x/sys/unix/syscall_darwin.1_12.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								vendor/golang.org/x/sys/unix/syscall_darwin.1_12.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -2,6 +2,7 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| //go:build darwin && go1.12 && !go1.13 | ||||
| // +build darwin,go1.12,!go1.13 | ||||
| 
 | ||||
| package unix | ||||
| @ -10,6 +11,8 @@ import ( | ||||
| 	"unsafe" | ||||
| ) | ||||
| 
 | ||||
| const _SYS_GETDIRENTRIES64 = 344 | ||||
| 
 | ||||
| func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { | ||||
| 	// To implement this using libSystem we'd need syscall_syscallPtr for | ||||
| 	// fdopendir. However, syscallPtr was only added in Go 1.13, so we fall | ||||
| @ -20,7 +23,7 @@ func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { | ||||
| 	} else { | ||||
| 		p = unsafe.Pointer(&_zero) | ||||
| 	} | ||||
| 	r0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(p), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) | ||||
| 	r0, _, e1 := Syscall6(_SYS_GETDIRENTRIES64, uintptr(fd), uintptr(p), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) | ||||
| 	n = int(r0) | ||||
| 	if e1 != 0 { | ||||
| 		return n, errnoErr(e1) | ||||
|  | ||||
							
								
								
									
										6
									
								
								vendor/golang.org/x/sys/unix/syscall_darwin.1_13.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								vendor/golang.org/x/sys/unix/syscall_darwin.1_13.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -2,6 +2,7 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| //go:build darwin && go1.13 | ||||
| // +build darwin,go1.13 | ||||
| 
 | ||||
| package unix | ||||
| @ -16,7 +17,7 @@ import ( | ||||
| //sys	readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno) | ||||
| 
 | ||||
| func fdopendir(fd int) (dir uintptr, err error) { | ||||
| 	r0, _, e1 := syscall_syscallPtr(funcPC(libc_fdopendir_trampoline), uintptr(fd), 0, 0) | ||||
| 	r0, _, e1 := syscall_syscallPtr(libc_fdopendir_trampoline_addr, uintptr(fd), 0, 0) | ||||
| 	dir = uintptr(r0) | ||||
| 	if e1 != 0 { | ||||
| 		err = errnoErr(e1) | ||||
| @ -24,9 +25,8 @@ func fdopendir(fd int) (dir uintptr, err error) { | ||||
| 	return | ||||
| } | ||||
| 
 | ||||
| func libc_fdopendir_trampoline() | ||||
| var libc_fdopendir_trampoline_addr uintptr | ||||
| 
 | ||||
| //go:linkname libc_fdopendir libc_fdopendir | ||||
| //go:cgo_import_dynamic libc_fdopendir fdopendir "/usr/lib/libSystem.B.dylib" | ||||
| 
 | ||||
| func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { | ||||
|  | ||||
							
								
								
									
										313
									
								
								vendor/golang.org/x/sys/unix/syscall_darwin.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										313
									
								
								vendor/golang.org/x/sys/unix/syscall_darwin.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -13,29 +13,12 @@ | ||||
| package unix | ||||
| 
 | ||||
| import ( | ||||
| 	"errors" | ||||
| 	"fmt" | ||||
| 	"runtime" | ||||
| 	"syscall" | ||||
| 	"unsafe" | ||||
| ) | ||||
| 
 | ||||
| const ImplementsGetwd = true | ||||
| 
 | ||||
| func Getwd() (string, error) { | ||||
| 	buf := make([]byte, 2048) | ||||
| 	attrs, err := getAttrList(".", attrList{CommonAttr: attrCmnFullpath}, buf, 0) | ||||
| 	if err == nil && len(attrs) == 1 && len(attrs[0]) >= 2 { | ||||
| 		wd := string(attrs[0]) | ||||
| 		// Sanity check that it's an absolute path and ends | ||||
| 		// in a null byte, which we then strip. | ||||
| 		if wd[0] == '/' && wd[len(wd)-1] == 0 { | ||||
| 			return wd[:len(wd)-1], nil | ||||
| 		} | ||||
| 	} | ||||
| 	// If pkg/os/getwd.go gets ENOTSUP, it will fall back to the | ||||
| 	// slow algorithm. | ||||
| 	return "", ENOTSUP | ||||
| } | ||||
| 
 | ||||
| // SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets. | ||||
| type SockaddrDatalink struct { | ||||
| 	Len    uint8 | ||||
| @ -49,6 +32,72 @@ type SockaddrDatalink struct { | ||||
| 	raw    RawSockaddrDatalink | ||||
| } | ||||
| 
 | ||||
| // SockaddrCtl implements the Sockaddr interface for AF_SYSTEM type sockets. | ||||
| type SockaddrCtl struct { | ||||
| 	ID   uint32 | ||||
| 	Unit uint32 | ||||
| 	raw  RawSockaddrCtl | ||||
| } | ||||
| 
 | ||||
| func (sa *SockaddrCtl) sockaddr() (unsafe.Pointer, _Socklen, error) { | ||||
| 	sa.raw.Sc_len = SizeofSockaddrCtl | ||||
| 	sa.raw.Sc_family = AF_SYSTEM | ||||
| 	sa.raw.Ss_sysaddr = AF_SYS_CONTROL | ||||
| 	sa.raw.Sc_id = sa.ID | ||||
| 	sa.raw.Sc_unit = sa.Unit | ||||
| 	return unsafe.Pointer(&sa.raw), SizeofSockaddrCtl, nil | ||||
| } | ||||
| 
 | ||||
| // SockaddrVM implements the Sockaddr interface for AF_VSOCK type sockets. | ||||
| // SockaddrVM provides access to Darwin VM sockets: a mechanism that enables | ||||
| // bidirectional communication between a hypervisor and its guest virtual | ||||
| // machines. | ||||
| type SockaddrVM struct { | ||||
| 	// CID and Port specify a context ID and port address for a VM socket. | ||||
| 	// Guests have a unique CID, and hosts may have a well-known CID of: | ||||
| 	//  - VMADDR_CID_HYPERVISOR: refers to the hypervisor process. | ||||
| 	//  - VMADDR_CID_LOCAL: refers to local communication (loopback). | ||||
| 	//  - VMADDR_CID_HOST: refers to other processes on the host. | ||||
| 	CID  uint32 | ||||
| 	Port uint32 | ||||
| 	raw  RawSockaddrVM | ||||
| } | ||||
| 
 | ||||
| func (sa *SockaddrVM) sockaddr() (unsafe.Pointer, _Socklen, error) { | ||||
| 	sa.raw.Len = SizeofSockaddrVM | ||||
| 	sa.raw.Family = AF_VSOCK | ||||
| 	sa.raw.Port = sa.Port | ||||
| 	sa.raw.Cid = sa.CID | ||||
| 
 | ||||
| 	return unsafe.Pointer(&sa.raw), SizeofSockaddrVM, nil | ||||
| } | ||||
| 
 | ||||
| func anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { | ||||
| 	switch rsa.Addr.Family { | ||||
| 	case AF_SYSTEM: | ||||
| 		pp := (*RawSockaddrCtl)(unsafe.Pointer(rsa)) | ||||
| 		if pp.Ss_sysaddr == AF_SYS_CONTROL { | ||||
| 			sa := new(SockaddrCtl) | ||||
| 			sa.ID = pp.Sc_id | ||||
| 			sa.Unit = pp.Sc_unit | ||||
| 			return sa, nil | ||||
| 		} | ||||
| 	case AF_VSOCK: | ||||
| 		pp := (*RawSockaddrVM)(unsafe.Pointer(rsa)) | ||||
| 		sa := &SockaddrVM{ | ||||
| 			CID:  pp.Cid, | ||||
| 			Port: pp.Port, | ||||
| 		} | ||||
| 		return sa, nil | ||||
| 	} | ||||
| 	return nil, EAFNOSUPPORT | ||||
| } | ||||
| 
 | ||||
| // Some external packages rely on SYS___SYSCTL being defined to implement their | ||||
| // own sysctl wrappers. Provide it here, even though direct syscalls are no | ||||
| // longer supported on darwin. | ||||
| const SYS___SYSCTL = SYS_SYSCTL | ||||
| 
 | ||||
| // Translate "kern.hostname" to []_C_int{0,1,2,3}. | ||||
| func nametomib(name string) (mib []_C_int, err error) { | ||||
| 	const siz = unsafe.Sizeof(mib[0]) | ||||
| @ -92,76 +141,18 @@ func direntNamlen(buf []byte) (uint64, bool) { | ||||
| func PtraceAttach(pid int) (err error) { return ptrace(PT_ATTACH, pid, 0, 0) } | ||||
| func PtraceDetach(pid int) (err error) { return ptrace(PT_DETACH, pid, 0, 0) } | ||||
| 
 | ||||
| const ( | ||||
| 	attrBitMapCount = 5 | ||||
| 	attrCmnFullpath = 0x08000000 | ||||
| ) | ||||
| 
 | ||||
| type attrList struct { | ||||
| 	bitmapCount uint16 | ||||
| 	_           uint16 | ||||
| 	CommonAttr  uint32 | ||||
| 	VolAttr     uint32 | ||||
| 	DirAttr     uint32 | ||||
| 	FileAttr    uint32 | ||||
| 	Forkattr    uint32 | ||||
| } | ||||
| 
 | ||||
| func getAttrList(path string, attrList attrList, attrBuf []byte, options uint) (attrs [][]byte, err error) { | ||||
| 	if len(attrBuf) < 4 { | ||||
| 		return nil, errors.New("attrBuf too small") | ||||
| 	} | ||||
| 	attrList.bitmapCount = attrBitMapCount | ||||
| 
 | ||||
| 	var _p0 *byte | ||||
| 	_p0, err = BytePtrFromString(path) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	if err := getattrlist(_p0, unsafe.Pointer(&attrList), unsafe.Pointer(&attrBuf[0]), uintptr(len(attrBuf)), int(options)); err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	size := *(*uint32)(unsafe.Pointer(&attrBuf[0])) | ||||
| 
 | ||||
| 	// dat is the section of attrBuf that contains valid data, | ||||
| 	// without the 4 byte length header. All attribute offsets | ||||
| 	// are relative to dat. | ||||
| 	dat := attrBuf | ||||
| 	if int(size) < len(attrBuf) { | ||||
| 		dat = dat[:size] | ||||
| 	} | ||||
| 	dat = dat[4:] // remove length prefix | ||||
| 
 | ||||
| 	for i := uint32(0); int(i) < len(dat); { | ||||
| 		header := dat[i:] | ||||
| 		if len(header) < 8 { | ||||
| 			return attrs, errors.New("truncated attribute header") | ||||
| 		} | ||||
| 		datOff := *(*int32)(unsafe.Pointer(&header[0])) | ||||
| 		attrLen := *(*uint32)(unsafe.Pointer(&header[4])) | ||||
| 		if datOff < 0 || uint32(datOff)+attrLen > uint32(len(dat)) { | ||||
| 			return attrs, errors.New("truncated results; attrBuf too small") | ||||
| 		} | ||||
| 		end := uint32(datOff) + attrLen | ||||
| 		attrs = append(attrs, dat[datOff:end]) | ||||
| 		i = end | ||||
| 		if r := i % 4; r != 0 { | ||||
| 			i += (4 - r) | ||||
| 		} | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
| 
 | ||||
| //sys getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) | ||||
| 
 | ||||
| //sysnb pipe() (r int, w int, err error) | ||||
| //sysnb	pipe(p *[2]int32) (err error) | ||||
| 
 | ||||
| func Pipe(p []int) (err error) { | ||||
| 	if len(p) != 2 { | ||||
| 		return EINVAL | ||||
| 	} | ||||
| 	p[0], p[1], err = pipe() | ||||
| 	var x [2]int32 | ||||
| 	err = pipe(&x) | ||||
| 	if err == nil { | ||||
| 		p[0] = int(x[0]) | ||||
| 		p[1] = int(x[1]) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
| 
 | ||||
| @ -281,36 +272,7 @@ func Flistxattr(fd int, dest []byte) (sz int, err error) { | ||||
| 	return flistxattr(fd, xattrPointer(dest), len(dest), 0) | ||||
| } | ||||
| 
 | ||||
| func setattrlistTimes(path string, times []Timespec, flags int) error { | ||||
| 	_p0, err := BytePtrFromString(path) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 
 | ||||
| 	var attrList attrList | ||||
| 	attrList.bitmapCount = ATTR_BIT_MAP_COUNT | ||||
| 	attrList.CommonAttr = ATTR_CMN_MODTIME | ATTR_CMN_ACCTIME | ||||
| 
 | ||||
| 	// order is mtime, atime: the opposite of Chtimes | ||||
| 	attributes := [2]Timespec{times[1], times[0]} | ||||
| 	options := 0 | ||||
| 	if flags&AT_SYMLINK_NOFOLLOW != 0 { | ||||
| 		options |= FSOPT_NOFOLLOW | ||||
| 	} | ||||
| 	return setattrlist( | ||||
| 		_p0, | ||||
| 		unsafe.Pointer(&attrList), | ||||
| 		unsafe.Pointer(&attributes), | ||||
| 		unsafe.Sizeof(attributes), | ||||
| 		options) | ||||
| } | ||||
| 
 | ||||
| //sys setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) | ||||
| 
 | ||||
| func utimensat(dirfd int, path string, times *[2]Timespec, flags int) error { | ||||
| 	// Darwin doesn't support SYS_UTIMENSAT | ||||
| 	return ENOSYS | ||||
| } | ||||
| //sys	utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) | ||||
| 
 | ||||
| /* | ||||
|  * Wrapped | ||||
| @ -324,7 +286,36 @@ func Kill(pid int, signum syscall.Signal) (err error) { return kill(pid, int(sig | ||||
| 
 | ||||
| //sys	ioctl(fd int, req uint, arg uintptr) (err error) | ||||
| 
 | ||||
| //sys   sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS_SYSCTL | ||||
| func IoctlCtlInfo(fd int, ctlInfo *CtlInfo) error { | ||||
| 	err := ioctl(fd, CTLIOCGINFO, uintptr(unsafe.Pointer(ctlInfo))) | ||||
| 	runtime.KeepAlive(ctlInfo) | ||||
| 	return err | ||||
| } | ||||
| 
 | ||||
| // IfreqMTU is struct ifreq used to get or set a network device's MTU. | ||||
| type IfreqMTU struct { | ||||
| 	Name [IFNAMSIZ]byte | ||||
| 	MTU  int32 | ||||
| } | ||||
| 
 | ||||
| // IoctlGetIfreqMTU performs the SIOCGIFMTU ioctl operation on fd to get the MTU | ||||
| // of the network device specified by ifname. | ||||
| func IoctlGetIfreqMTU(fd int, ifname string) (*IfreqMTU, error) { | ||||
| 	var ifreq IfreqMTU | ||||
| 	copy(ifreq.Name[:], ifname) | ||||
| 	err := ioctl(fd, SIOCGIFMTU, uintptr(unsafe.Pointer(&ifreq))) | ||||
| 	return &ifreq, err | ||||
| } | ||||
| 
 | ||||
| // IoctlSetIfreqMTU performs the SIOCSIFMTU ioctl operation on fd to set the MTU | ||||
| // of the network device specified by ifreq.Name. | ||||
| func IoctlSetIfreqMTU(fd int, ifreq *IfreqMTU) error { | ||||
| 	err := ioctl(fd, SIOCSIFMTU, uintptr(unsafe.Pointer(ifreq))) | ||||
| 	runtime.KeepAlive(ifreq) | ||||
| 	return err | ||||
| } | ||||
| 
 | ||||
| //sys	sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS_SYSCTL | ||||
| 
 | ||||
| func Uname(uname *Utsname) error { | ||||
| 	mib := []_C_int{CTL_KERN, KERN_OSTYPE} | ||||
| @ -382,8 +373,82 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e | ||||
| 	return | ||||
| } | ||||
| 
 | ||||
| func GetsockoptIPMreqn(fd, level, opt int) (*IPMreqn, error) { | ||||
| 	var value IPMreqn | ||||
| 	vallen := _Socklen(SizeofIPMreqn) | ||||
| 	errno := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) | ||||
| 	return &value, errno | ||||
| } | ||||
| 
 | ||||
| func SetsockoptIPMreqn(fd, level, opt int, mreq *IPMreqn) (err error) { | ||||
| 	return setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq)) | ||||
| } | ||||
| 
 | ||||
| // GetsockoptXucred is a getsockopt wrapper that returns an Xucred struct. | ||||
| // The usual level and opt are SOL_LOCAL and LOCAL_PEERCRED, respectively. | ||||
| func GetsockoptXucred(fd, level, opt int) (*Xucred, error) { | ||||
| 	x := new(Xucred) | ||||
| 	vallen := _Socklen(SizeofXucred) | ||||
| 	err := getsockopt(fd, level, opt, unsafe.Pointer(x), &vallen) | ||||
| 	return x, err | ||||
| } | ||||
| 
 | ||||
| func SysctlKinfoProc(name string, args ...int) (*KinfoProc, error) { | ||||
| 	mib, err := sysctlmib(name, args...) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	var kinfo KinfoProc | ||||
| 	n := uintptr(SizeofKinfoProc) | ||||
| 	if err := sysctl(mib, (*byte)(unsafe.Pointer(&kinfo)), &n, nil, 0); err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	if n != SizeofKinfoProc { | ||||
| 		return nil, EIO | ||||
| 	} | ||||
| 	return &kinfo, nil | ||||
| } | ||||
| 
 | ||||
| func SysctlKinfoProcSlice(name string, args ...int) ([]KinfoProc, error) { | ||||
| 	mib, err := sysctlmib(name, args...) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	// Find size. | ||||
| 	n := uintptr(0) | ||||
| 	if err := sysctl(mib, nil, &n, nil, 0); err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	if n == 0 { | ||||
| 		return nil, nil | ||||
| 	} | ||||
| 	if n%SizeofKinfoProc != 0 { | ||||
| 		return nil, fmt.Errorf("sysctl() returned a size of %d, which is not a multiple of %d", n, SizeofKinfoProc) | ||||
| 	} | ||||
| 
 | ||||
| 	// Read into buffer of that size. | ||||
| 	buf := make([]KinfoProc, n/SizeofKinfoProc) | ||||
| 	if err := sysctl(mib, (*byte)(unsafe.Pointer(&buf[0])), &n, nil, 0); err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	if n%SizeofKinfoProc != 0 { | ||||
| 		return nil, fmt.Errorf("sysctl() returned a size of %d, which is not a multiple of %d", n, SizeofKinfoProc) | ||||
| 	} | ||||
| 
 | ||||
| 	// The actual call may return less than the original reported required | ||||
| 	// size so ensure we deal with that. | ||||
| 	return buf[:n/SizeofKinfoProc], nil | ||||
| } | ||||
| 
 | ||||
| //sys	sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) | ||||
| 
 | ||||
| //sys	shmat(id int, addr uintptr, flag int) (ret uintptr, err error) | ||||
| //sys	shmctl(id int, cmd int, buf *SysvShmDesc) (result int, err error) | ||||
| //sys	shmdt(addr uintptr) (err error) | ||||
| //sys	shmget(key int, size int, flag int) (id int, err error) | ||||
| 
 | ||||
| /* | ||||
|  * Exposed directly | ||||
|  */ | ||||
| @ -396,6 +461,8 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e | ||||
| //sys	Chroot(path string) (err error) | ||||
| //sys	ClockGettime(clockid int32, time *Timespec) (err error) | ||||
| //sys	Close(fd int) (err error) | ||||
| //sys	Clonefile(src string, dst string, flags int) (err error) | ||||
| //sys	Clonefileat(srcDirfd int, src string, dstDirfd int, dst string, flags int) (err error) | ||||
| //sys	Dup(fd int) (nfd int, err error) | ||||
| //sys	Dup2(from int, to int) (err error) | ||||
| //sys	Exchangedata(path1 string, path2 string, options int) (err error) | ||||
| @ -407,10 +474,12 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e | ||||
| //sys	Fchmodat(dirfd int, path string, mode uint32, flags 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	Fclonefileat(srcDirfd int, dstDirfd int, dst string, flags int) (err error) | ||||
| //sys	Flock(fd int, how int) (err error) | ||||
| //sys	Fpathconf(fd int, name int) (val int, err error) | ||||
| //sys	Fsync(fd int) (err error) | ||||
| //sys	Ftruncate(fd int, length int64) (err error) | ||||
| //sys	Getcwd(buf []byte) (n int, err error) | ||||
| //sys	Getdtablesize() (size int) | ||||
| //sysnb	Getegid() (egid int) | ||||
| //sysnb	Geteuid() (uid int) | ||||
| @ -435,11 +504,12 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e | ||||
| //sys	Mkdirat(dirfd int, 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	Mount(fsType string, dir string, flags int, data unsafe.Pointer) (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	Pread(fd int, p []byte, offset int64) (n int, err error) | ||||
| //sys	Pwrite(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	read(fd int, p []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) | ||||
| @ -472,8 +542,8 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e | ||||
| //sys	Unlinkat(dirfd int, 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   mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) | ||||
| //sys   munmap(addr uintptr, length uintptr) (err error) | ||||
| //sys	mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) | ||||
| //sys	munmap(addr uintptr, length uintptr) (err error) | ||||
| //sys	readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ | ||||
| //sys	writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE | ||||
| 
 | ||||
| @ -503,7 +573,6 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e | ||||
| // Nfssvc | ||||
| // Getfh | ||||
| // Quotactl | ||||
| // Mount | ||||
| // Csops | ||||
| // Waitid | ||||
| // Add_profil | ||||
| @ -537,10 +606,6 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e | ||||
| // Msgget | ||||
| // Msgsnd | ||||
| // Msgrcv | ||||
| // Shmat | ||||
| // Shmctl | ||||
| // Shmdt | ||||
| // Shmget | ||||
| // Shm_open | ||||
| // Shm_unlink | ||||
| // Sem_open | ||||
|  | ||||
							
								
								
									
										9
									
								
								vendor/golang.org/x/sys/unix/syscall_darwin_386.1_11.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								vendor/golang.org/x/sys/unix/syscall_darwin_386.1_11.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -1,9 +0,0 @@ | ||||
| // Copyright 2019 The Go Authors. All rights reserved. | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| // +build darwin,386,!go1.12 | ||||
| 
 | ||||
| package unix | ||||
| 
 | ||||
| //sys  Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) = SYS_GETDIRENTRIES64 | ||||
							
								
								
									
										57
									
								
								vendor/golang.org/x/sys/unix/syscall_darwin_386.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										57
									
								
								vendor/golang.org/x/sys/unix/syscall_darwin_386.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -1,57 +0,0 @@ | ||||
| // Copyright 2009 The Go Authors. All rights reserved. | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| // +build 386,darwin | ||||
| 
 | ||||
| package unix | ||||
| 
 | ||||
| import ( | ||||
| 	"syscall" | ||||
| ) | ||||
| 
 | ||||
| //sys   ptrace(request int, pid int, addr uintptr, data uintptr) (err error) | ||||
| 
 | ||||
| func setTimespec(sec, nsec int64) Timespec { | ||||
| 	return Timespec{Sec: int32(sec), Nsec: int32(nsec)} | ||||
| } | ||||
| 
 | ||||
| func setTimeval(sec, usec int64) Timeval { | ||||
| 	return Timeval{Sec: int32(sec), Usec: int32(usec)} | ||||
| } | ||||
| 
 | ||||
| func SetKevent(k *Kevent_t, fd, mode, flags int) { | ||||
| 	k.Ident = uint32(fd) | ||||
| 	k.Filter = int16(mode) | ||||
| 	k.Flags = uint16(flags) | ||||
| } | ||||
| 
 | ||||
| func (iov *Iovec) SetLen(length int) { | ||||
| 	iov.Len = uint32(length) | ||||
| } | ||||
| 
 | ||||
| func (msghdr *Msghdr) SetControllen(length int) { | ||||
| 	msghdr.Controllen = uint32(length) | ||||
| } | ||||
| 
 | ||||
| func (msghdr *Msghdr) SetIovlen(length int) { | ||||
| 	msghdr.Iovlen = int32(length) | ||||
| } | ||||
| 
 | ||||
| func (cmsg *Cmsghdr) SetLen(length int) { | ||||
| 	cmsg.Len = uint32(length) | ||||
| } | ||||
| 
 | ||||
| func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) | ||||
| 
 | ||||
| // SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions | ||||
| // of darwin/386 the syscall is called sysctl instead of __sysctl. | ||||
| const SYS___SYSCTL = SYS_SYSCTL | ||||
| 
 | ||||
| //sys	Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64 | ||||
| //sys	Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64 | ||||
| //sys	Fstatfs(fd int, stat *Statfs_t) (err error) = SYS_FSTATFS64 | ||||
| //sys	getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT64 | ||||
| //sys	Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64 | ||||
| //sys	Stat(path string, stat *Stat_t) (err error) = SYS_STAT64 | ||||
| //sys	Statfs(path string, stat *Statfs_t) (err error) = SYS_STATFS64 | ||||
							
								
								
									
										9
									
								
								vendor/golang.org/x/sys/unix/syscall_darwin_amd64.1_11.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								vendor/golang.org/x/sys/unix/syscall_darwin_amd64.1_11.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -1,9 +0,0 @@ | ||||
| // Copyright 2019 The Go Authors. All rights reserved. | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| // +build darwin,amd64,!go1.12 | ||||
| 
 | ||||
| package unix | ||||
| 
 | ||||
| //sys  Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) = SYS_GETDIRENTRIES64 | ||||
							
								
								
									
										12
									
								
								vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -2,15 +2,12 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| //go:build amd64 && darwin | ||||
| // +build amd64,darwin | ||||
| 
 | ||||
| package unix | ||||
| 
 | ||||
| import ( | ||||
| 	"syscall" | ||||
| ) | ||||
| 
 | ||||
| //sys   ptrace(request int, pid int, addr uintptr, data uintptr) (err error) | ||||
| import "syscall" | ||||
| 
 | ||||
| func setTimespec(sec, nsec int64) Timespec { | ||||
| 	return Timespec{Sec: sec, Nsec: nsec} | ||||
| @ -44,14 +41,11 @@ func (cmsg *Cmsghdr) SetLen(length int) { | ||||
| 
 | ||||
| func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) | ||||
| 
 | ||||
| // SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions | ||||
| // of darwin/amd64 the syscall is called sysctl instead of __sysctl. | ||||
| const SYS___SYSCTL = SYS_SYSCTL | ||||
| 
 | ||||
| //sys	Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64 | ||||
| //sys	Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64 | ||||
| //sys	Fstatfs(fd int, stat *Statfs_t) (err error) = SYS_FSTATFS64 | ||||
| //sys	getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT64 | ||||
| //sys	Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64 | ||||
| //sys	ptrace1(request int, pid int, addr uintptr, data uintptr) (err error) = SYS_ptrace | ||||
| //sys	Stat(path string, stat *Stat_t) (err error) = SYS_STAT64 | ||||
| //sys	Statfs(path string, stat *Statfs_t) (err error) = SYS_STATFS64 | ||||
|  | ||||
							
								
								
									
										11
									
								
								vendor/golang.org/x/sys/unix/syscall_darwin_arm.1_11.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										11
									
								
								vendor/golang.org/x/sys/unix/syscall_darwin_arm.1_11.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -1,11 +0,0 @@ | ||||
| // Copyright 2019 The Go Authors. All rights reserved. | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| // +build darwin,arm,!go1.12 | ||||
| 
 | ||||
| package unix | ||||
| 
 | ||||
| func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { | ||||
| 	return 0, ENOSYS | ||||
| } | ||||
							
								
								
									
										57
									
								
								vendor/golang.org/x/sys/unix/syscall_darwin_arm.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										57
									
								
								vendor/golang.org/x/sys/unix/syscall_darwin_arm.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -1,57 +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. | ||||
| 
 | ||||
| package unix | ||||
| 
 | ||||
| import ( | ||||
| 	"syscall" | ||||
| ) | ||||
| 
 | ||||
| func ptrace(request int, pid int, addr uintptr, data uintptr) error { | ||||
| 	return ENOTSUP | ||||
| } | ||||
| 
 | ||||
| func setTimespec(sec, nsec int64) Timespec { | ||||
| 	return Timespec{Sec: int32(sec), Nsec: int32(nsec)} | ||||
| } | ||||
| 
 | ||||
| func setTimeval(sec, usec int64) Timeval { | ||||
| 	return Timeval{Sec: int32(sec), Usec: int32(usec)} | ||||
| } | ||||
| 
 | ||||
| func SetKevent(k *Kevent_t, fd, mode, flags int) { | ||||
| 	k.Ident = uint32(fd) | ||||
| 	k.Filter = int16(mode) | ||||
| 	k.Flags = uint16(flags) | ||||
| } | ||||
| 
 | ||||
| func (iov *Iovec) SetLen(length int) { | ||||
| 	iov.Len = uint32(length) | ||||
| } | ||||
| 
 | ||||
| func (msghdr *Msghdr) SetControllen(length int) { | ||||
| 	msghdr.Controllen = uint32(length) | ||||
| } | ||||
| 
 | ||||
| func (msghdr *Msghdr) SetIovlen(length int) { | ||||
| 	msghdr.Iovlen = int32(length) | ||||
| } | ||||
| 
 | ||||
| func (cmsg *Cmsghdr) SetLen(length int) { | ||||
| 	cmsg.Len = uint32(length) | ||||
| } | ||||
| 
 | ||||
| func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) // sic | ||||
| 
 | ||||
| // SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions | ||||
| // of darwin/arm the syscall is called sysctl instead of __sysctl. | ||||
| const SYS___SYSCTL = SYS_SYSCTL | ||||
| 
 | ||||
| //sys	Fstat(fd int, stat *Stat_t) (err error) | ||||
| //sys	Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) | ||||
| //sys	Fstatfs(fd int, stat *Statfs_t) (err error) | ||||
| //sys	getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT | ||||
| //sys	Lstat(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) | ||||
							
								
								
									
										11
									
								
								vendor/golang.org/x/sys/unix/syscall_darwin_arm64.1_11.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										11
									
								
								vendor/golang.org/x/sys/unix/syscall_darwin_arm64.1_11.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -1,11 +0,0 @@ | ||||
| // Copyright 2019 The Go Authors. All rights reserved. | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| // +build darwin,arm64,!go1.12 | ||||
| 
 | ||||
| package unix | ||||
| 
 | ||||
| func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { | ||||
| 	return 0, ENOSYS | ||||
| } | ||||
							
								
								
									
										14
									
								
								vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										14
									
								
								vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -2,17 +2,12 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| //go:build arm64 && darwin | ||||
| // +build arm64,darwin | ||||
| 
 | ||||
| package unix | ||||
| 
 | ||||
| import ( | ||||
| 	"syscall" | ||||
| ) | ||||
| 
 | ||||
| func ptrace(request int, pid int, addr uintptr, data uintptr) error { | ||||
| 	return ENOTSUP | ||||
| } | ||||
| import "syscall" | ||||
| 
 | ||||
| func setTimespec(sec, nsec int64) Timespec { | ||||
| 	return Timespec{Sec: sec, Nsec: nsec} | ||||
| @ -46,14 +41,11 @@ func (cmsg *Cmsghdr) SetLen(length int) { | ||||
| 
 | ||||
| func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) // sic | ||||
| 
 | ||||
| // SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions | ||||
| // of darwin/arm64 the syscall is called sysctl instead of __sysctl. | ||||
| const SYS___SYSCTL = SYS_SYSCTL | ||||
| 
 | ||||
| //sys	Fstat(fd int, stat *Stat_t) (err error) | ||||
| //sys	Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) | ||||
| //sys	Fstatfs(fd int, stat *Statfs_t) (err error) | ||||
| //sys	getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT | ||||
| //sys	Lstat(path string, stat *Stat_t) (err error) | ||||
| //sys	ptrace1(request int, pid int, addr uintptr, data uintptr) (err error) = SYS_ptrace | ||||
| //sys	Stat(path string, stat *Stat_t) (err error) | ||||
| //sys	Statfs(path string, stat *Statfs_t) (err error) | ||||
|  | ||||
							
								
								
									
										10
									
								
								vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										10
									
								
								vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -2,11 +2,12 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| //go:build darwin && go1.12 | ||||
| // +build darwin,go1.12 | ||||
| 
 | ||||
| package unix | ||||
| 
 | ||||
| import "unsafe" | ||||
| import _ "unsafe" | ||||
| 
 | ||||
| // Implemented in the runtime package (runtime/sys_darwin.go) | ||||
| func syscall_syscall(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno) | ||||
| @ -24,10 +25,3 @@ func syscall_syscallPtr(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno) | ||||
| //go:linkname syscall_rawSyscall syscall.rawSyscall | ||||
| //go:linkname syscall_rawSyscall6 syscall.rawSyscall6 | ||||
| //go:linkname syscall_syscallPtr syscall.syscallPtr | ||||
| 
 | ||||
| // Find the entry point for f. See comments in runtime/proc.go for the | ||||
| // function of the same name. | ||||
| //go:nosplit | ||||
| func funcPC(f func()) uintptr { | ||||
| 	return **(**uintptr)(unsafe.Pointer(&f)) | ||||
| } | ||||
|  | ||||
							
								
								
									
										59
									
								
								vendor/golang.org/x/sys/unix/syscall_dragonfly.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										59
									
								
								vendor/golang.org/x/sys/unix/syscall_dragonfly.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -47,6 +47,10 @@ type SockaddrDatalink struct { | ||||
| 	raw    RawSockaddrDatalink | ||||
| } | ||||
| 
 | ||||
| func anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { | ||||
| 	return nil, EAFNOSUPPORT | ||||
| } | ||||
| 
 | ||||
| // Translate "kern.hostname" to []_C_int{0,1,2,3}. | ||||
| func nametomib(name string) (mib []_C_int, err error) { | ||||
| 	const siz = unsafe.Sizeof(mib[0]) | ||||
| @ -91,23 +95,44 @@ func direntNamlen(buf []byte) (uint64, bool) { | ||||
| 	return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen)) | ||||
| } | ||||
| 
 | ||||
| //sysnb pipe() (r int, w int, err error) | ||||
| //sysnb	pipe() (r int, w int, err error) | ||||
| 
 | ||||
| func Pipe(p []int) (err error) { | ||||
| 	if len(p) != 2 { | ||||
| 		return EINVAL | ||||
| 	} | ||||
| 	p[0], p[1], err = pipe() | ||||
| 	r, w, err := pipe() | ||||
| 	if err == nil { | ||||
| 		p[0], p[1] = r, w | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
| 
 | ||||
| //sysnb	pipe2(p *[2]_C_int, flags int) (r int, w int, err error) | ||||
| 
 | ||||
| func Pipe2(p []int, flags int) (err error) { | ||||
| 	if len(p) != 2 { | ||||
| 		return EINVAL | ||||
| 	} | ||||
| 	var pp [2]_C_int | ||||
| 	// pipe2 on dragonfly takes an fds array as an argument, but still | ||||
| 	// returns the file descriptors. | ||||
| 	r, w, err := pipe2(&pp, flags) | ||||
| 	if err == nil { | ||||
| 		p[0], p[1] = r, w | ||||
| 	} | ||||
| 	return err | ||||
| } | ||||
| 
 | ||||
| //sys	extpread(fd int, p []byte, flags int, offset int64) (n int, err error) | ||||
| func Pread(fd int, p []byte, offset int64) (n int, err error) { | ||||
| 
 | ||||
| func pread(fd int, p []byte, offset int64) (n int, err error) { | ||||
| 	return extpread(fd, p, 0, offset) | ||||
| } | ||||
| 
 | ||||
| //sys	extpwrite(fd int, p []byte, flags int, offset int64) (n int, err error) | ||||
| func Pwrite(fd int, p []byte, offset int64) (n int, err error) { | ||||
| 
 | ||||
| func pwrite(fd int, p []byte, offset int64) (n int, err error) { | ||||
| 	return extpwrite(fd, p, 0, offset) | ||||
| } | ||||
| 
 | ||||
| @ -129,23 +154,8 @@ func Accept4(fd, flags int) (nfd int, sa Sockaddr, err error) { | ||||
| 	return | ||||
| } | ||||
| 
 | ||||
| const ImplementsGetwd = true | ||||
| 
 | ||||
| //sys	Getcwd(buf []byte) (n int, err error) = SYS___GETCWD | ||||
| 
 | ||||
| func Getwd() (string, error) { | ||||
| 	var buf [PathMax]byte | ||||
| 	_, err := Getcwd(buf[0:]) | ||||
| 	if err != nil { | ||||
| 		return "", err | ||||
| 	} | ||||
| 	n := clen(buf[:]) | ||||
| 	if n < 1 { | ||||
| 		return "", EINVAL | ||||
| 	} | ||||
| 	return string(buf[:n]), nil | ||||
| } | ||||
| 
 | ||||
| func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { | ||||
| 	var _p0 unsafe.Pointer | ||||
| 	var bufsize uintptr | ||||
| @ -161,14 +171,9 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { | ||||
| 	return | ||||
| } | ||||
| 
 | ||||
| func setattrlistTimes(path string, times []Timespec, flags int) error { | ||||
| 	// used on Darwin for UtimesNano | ||||
| 	return ENOSYS | ||||
| } | ||||
| 
 | ||||
| //sys	ioctl(fd int, req uint, arg uintptr) (err error) | ||||
| 
 | ||||
| //sys   sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL | ||||
| //sys	sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL | ||||
| 
 | ||||
| func sysctlUname(mib []_C_int, old *byte, oldlen *uintptr) error { | ||||
| 	err := sysctl(mib, old, oldlen, nil, 0) | ||||
| @ -335,8 +340,8 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e | ||||
| //sys	Unlinkat(dirfd int, 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   mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) | ||||
| //sys   munmap(addr uintptr, length uintptr) (err error) | ||||
| //sys	mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) | ||||
| //sys	munmap(addr uintptr, length uintptr) (err error) | ||||
| //sys	readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ | ||||
| //sys	writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE | ||||
| //sys	accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) | ||||
|  | ||||
							
								
								
									
										1
									
								
								vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -2,6 +2,7 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| //go:build amd64 && dragonfly | ||||
| // +build amd64,dragonfly | ||||
| 
 | ||||
| package unix | ||||
|  | ||||
							
								
								
									
										51
									
								
								vendor/golang.org/x/sys/unix/syscall_freebsd.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										51
									
								
								vendor/golang.org/x/sys/unix/syscall_freebsd.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -54,6 +54,10 @@ type SockaddrDatalink struct { | ||||
| 	raw    RawSockaddrDatalink | ||||
| } | ||||
| 
 | ||||
| func anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { | ||||
| 	return nil, EAFNOSUPPORT | ||||
| } | ||||
| 
 | ||||
| // Translate "kern.hostname" to []_C_int{0,1,2,3}. | ||||
| func nametomib(name string) (mib []_C_int, err error) { | ||||
| 	const siz = unsafe.Sizeof(mib[0]) | ||||
| @ -106,8 +110,10 @@ func Pipe2(p []int, flags int) error { | ||||
| 	} | ||||
| 	var pp [2]_C_int | ||||
| 	err := pipe2(&pp, flags) | ||||
| 	p[0] = int(pp[0]) | ||||
| 	p[1] = int(pp[1]) | ||||
| 	if err == nil { | ||||
| 		p[0] = int(pp[0]) | ||||
| 		p[1] = int(pp[1]) | ||||
| 	} | ||||
| 	return err | ||||
| } | ||||
| 
 | ||||
| @ -122,6 +128,15 @@ func SetsockoptIPMreqn(fd, level, opt int, mreq *IPMreqn) (err error) { | ||||
| 	return setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq)) | ||||
| } | ||||
| 
 | ||||
| // GetsockoptXucred is a getsockopt wrapper that returns an Xucred struct. | ||||
| // The usual level and opt are SOL_LOCAL and LOCAL_PEERCRED, respectively. | ||||
| func GetsockoptXucred(fd, level, opt int) (*Xucred, error) { | ||||
| 	x := new(Xucred) | ||||
| 	vallen := _Socklen(SizeofXucred) | ||||
| 	err := getsockopt(fd, level, opt, unsafe.Pointer(x), &vallen) | ||||
| 	return x, err | ||||
| } | ||||
| 
 | ||||
| func Accept4(fd, flags int) (nfd int, sa Sockaddr, err error) { | ||||
| 	var rsa RawSockaddrAny | ||||
| 	var len _Socklen = SizeofSockaddrAny | ||||
| @ -140,23 +155,8 @@ func Accept4(fd, flags int) (nfd int, sa Sockaddr, err error) { | ||||
| 	return | ||||
| } | ||||
| 
 | ||||
| const ImplementsGetwd = true | ||||
| 
 | ||||
| //sys	Getcwd(buf []byte) (n int, err error) = SYS___GETCWD | ||||
| 
 | ||||
| func Getwd() (string, error) { | ||||
| 	var buf [PathMax]byte | ||||
| 	_, err := Getcwd(buf[0:]) | ||||
| 	if err != nil { | ||||
| 		return "", err | ||||
| 	} | ||||
| 	n := clen(buf[:]) | ||||
| 	if n < 1 { | ||||
| 		return "", EINVAL | ||||
| 	} | ||||
| 	return string(buf[:n]), nil | ||||
| } | ||||
| 
 | ||||
| func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { | ||||
| 	var ( | ||||
| 		_p0          unsafe.Pointer | ||||
| @ -194,14 +194,9 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { | ||||
| 	return | ||||
| } | ||||
| 
 | ||||
| func setattrlistTimes(path string, times []Timespec, flags int) error { | ||||
| 	// used on Darwin for UtimesNano | ||||
| 	return ENOSYS | ||||
| } | ||||
| //sys	ioctl(fd int, req uint, arg uintptr) (err error) | ||||
| 
 | ||||
| //sys   ioctl(fd int, req uint, arg uintptr) (err error) | ||||
| 
 | ||||
| //sys   sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL | ||||
| //sys	sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL | ||||
| 
 | ||||
| func Uname(uname *Utsname) error { | ||||
| 	mib := []_C_int{CTL_KERN, KERN_OSTYPE} | ||||
| @ -638,8 +633,8 @@ func PtraceSingleStep(pid 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	Pathconf(path string, name int) (val 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	pread(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	Readlink(path string, buf []byte) (n int, err error) | ||||
| //sys	Readlinkat(dirfd int, path string, buf []byte) (n int, err error) | ||||
| @ -676,8 +671,8 @@ func PtraceSingleStep(pid int) (err error) { | ||||
| //sys	Unlinkat(dirfd int, 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   mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) | ||||
| //sys   munmap(addr uintptr, length uintptr) (err error) | ||||
| //sys	mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) | ||||
| //sys	munmap(addr uintptr, length uintptr) (err error) | ||||
| //sys	readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ | ||||
| //sys	writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE | ||||
| //sys	accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) | ||||
|  | ||||
							
								
								
									
										1
									
								
								vendor/golang.org/x/sys/unix/syscall_freebsd_386.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/sys/unix/syscall_freebsd_386.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -2,6 +2,7 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| //go:build 386 && freebsd | ||||
| // +build 386,freebsd | ||||
| 
 | ||||
| package unix | ||||
|  | ||||
							
								
								
									
										1
									
								
								vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -2,6 +2,7 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| //go:build amd64 && freebsd | ||||
| // +build amd64,freebsd | ||||
| 
 | ||||
| package unix | ||||
|  | ||||
							
								
								
									
										1
									
								
								vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -2,6 +2,7 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| //go:build arm && freebsd | ||||
| // +build arm,freebsd | ||||
| 
 | ||||
| package unix | ||||
|  | ||||
							
								
								
									
										1
									
								
								vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -2,6 +2,7 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| //go:build arm64 && freebsd | ||||
| // +build arm64,freebsd | ||||
| 
 | ||||
| package unix | ||||
|  | ||||
							
								
								
									
										141
									
								
								vendor/golang.org/x/sys/unix/syscall_illumos.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										141
									
								
								vendor/golang.org/x/sys/unix/syscall_illumos.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -1,14 +1,19 @@ | ||||
| // Copyright 2009 The Go Authors. All rights reserved. | ||||
| // Copyright 2021 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. | ||||
| 
 | ||||
| // illumos system calls not present on Solaris. | ||||
| 
 | ||||
| //go:build amd64 && illumos | ||||
| // +build amd64,illumos | ||||
| 
 | ||||
| package unix | ||||
| 
 | ||||
| import "unsafe" | ||||
| import ( | ||||
| 	"fmt" | ||||
| 	"runtime" | ||||
| 	"unsafe" | ||||
| ) | ||||
| 
 | ||||
| func bytes2iovec(bs [][]byte) []Iovec { | ||||
| 	iovecs := make([]Iovec, len(bs)) | ||||
| @ -24,7 +29,7 @@ func bytes2iovec(bs [][]byte) []Iovec { | ||||
| 	return iovecs | ||||
| } | ||||
| 
 | ||||
| //sys   readv(fd int, iovs []Iovec) (n int, err error) | ||||
| //sys	readv(fd int, iovs []Iovec) (n int, err error) | ||||
| 
 | ||||
| func Readv(fd int, iovs [][]byte) (n int, err error) { | ||||
| 	iovecs := bytes2iovec(iovs) | ||||
| @ -32,7 +37,7 @@ func Readv(fd int, iovs [][]byte) (n int, err error) { | ||||
| 	return n, err | ||||
| } | ||||
| 
 | ||||
| //sys   preadv(fd int, iovs []Iovec, off int64) (n int, err error) | ||||
| //sys	preadv(fd int, iovs []Iovec, off int64) (n int, err error) | ||||
| 
 | ||||
| func Preadv(fd int, iovs [][]byte, off int64) (n int, err error) { | ||||
| 	iovecs := bytes2iovec(iovs) | ||||
| @ -40,7 +45,7 @@ func Preadv(fd int, iovs [][]byte, off int64) (n int, err error) { | ||||
| 	return n, err | ||||
| } | ||||
| 
 | ||||
| //sys   writev(fd int, iovs []Iovec) (n int, err error) | ||||
| //sys	writev(fd int, iovs []Iovec) (n int, err error) | ||||
| 
 | ||||
| func Writev(fd int, iovs [][]byte) (n int, err error) { | ||||
| 	iovecs := bytes2iovec(iovs) | ||||
| @ -48,10 +53,134 @@ func Writev(fd int, iovs [][]byte) (n int, err error) { | ||||
| 	return n, err | ||||
| } | ||||
| 
 | ||||
| //sys   pwritev(fd int, iovs []Iovec, off int64) (n int, err error) | ||||
| //sys	pwritev(fd int, iovs []Iovec, off int64) (n int, err error) | ||||
| 
 | ||||
| func Pwritev(fd int, iovs [][]byte, off int64) (n int, err error) { | ||||
| 	iovecs := bytes2iovec(iovs) | ||||
| 	n, err = pwritev(fd, iovecs, off) | ||||
| 	return n, err | ||||
| } | ||||
| 
 | ||||
| //sys	accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) = libsocket.accept4 | ||||
| 
 | ||||
| func Accept4(fd int, flags int) (nfd int, sa Sockaddr, err error) { | ||||
| 	var rsa RawSockaddrAny | ||||
| 	var len _Socklen = SizeofSockaddrAny | ||||
| 	nfd, err = accept4(fd, &rsa, &len, flags) | ||||
| 	if err != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	if len > SizeofSockaddrAny { | ||||
| 		panic("RawSockaddrAny too small") | ||||
| 	} | ||||
| 	sa, err = anyToSockaddr(fd, &rsa) | ||||
| 	if err != nil { | ||||
| 		Close(nfd) | ||||
| 		nfd = 0 | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
| 
 | ||||
| //sys	putmsg(fd int, clptr *strbuf, dataptr *strbuf, flags int) (err error) | ||||
| 
 | ||||
| func Putmsg(fd int, cl []byte, data []byte, flags int) (err error) { | ||||
| 	var clp, datap *strbuf | ||||
| 	if len(cl) > 0 { | ||||
| 		clp = &strbuf{ | ||||
| 			Len: int32(len(cl)), | ||||
| 			Buf: (*int8)(unsafe.Pointer(&cl[0])), | ||||
| 		} | ||||
| 	} | ||||
| 	if len(data) > 0 { | ||||
| 		datap = &strbuf{ | ||||
| 			Len: int32(len(data)), | ||||
| 			Buf: (*int8)(unsafe.Pointer(&data[0])), | ||||
| 		} | ||||
| 	} | ||||
| 	return putmsg(fd, clp, datap, flags) | ||||
| } | ||||
| 
 | ||||
| //sys	getmsg(fd int, clptr *strbuf, dataptr *strbuf, flags *int) (err error) | ||||
| 
 | ||||
| func Getmsg(fd int, cl []byte, data []byte) (retCl []byte, retData []byte, flags int, err error) { | ||||
| 	var clp, datap *strbuf | ||||
| 	if len(cl) > 0 { | ||||
| 		clp = &strbuf{ | ||||
| 			Maxlen: int32(len(cl)), | ||||
| 			Buf:    (*int8)(unsafe.Pointer(&cl[0])), | ||||
| 		} | ||||
| 	} | ||||
| 	if len(data) > 0 { | ||||
| 		datap = &strbuf{ | ||||
| 			Maxlen: int32(len(data)), | ||||
| 			Buf:    (*int8)(unsafe.Pointer(&data[0])), | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	if err = getmsg(fd, clp, datap, &flags); err != nil { | ||||
| 		return nil, nil, 0, err | ||||
| 	} | ||||
| 
 | ||||
| 	if len(cl) > 0 { | ||||
| 		retCl = cl[:clp.Len] | ||||
| 	} | ||||
| 	if len(data) > 0 { | ||||
| 		retData = data[:datap.Len] | ||||
| 	} | ||||
| 	return retCl, retData, flags, nil | ||||
| } | ||||
| 
 | ||||
| func IoctlSetIntRetInt(fd int, req uint, arg int) (int, error) { | ||||
| 	return ioctlRet(fd, req, uintptr(arg)) | ||||
| } | ||||
| 
 | ||||
| func IoctlSetString(fd int, req uint, val string) error { | ||||
| 	bs := make([]byte, len(val)+1) | ||||
| 	copy(bs[:len(bs)-1], val) | ||||
| 	err := ioctl(fd, req, uintptr(unsafe.Pointer(&bs[0]))) | ||||
| 	runtime.KeepAlive(&bs[0]) | ||||
| 	return err | ||||
| } | ||||
| 
 | ||||
| // Lifreq Helpers | ||||
| 
 | ||||
| func (l *Lifreq) SetName(name string) error { | ||||
| 	if len(name) >= len(l.Name) { | ||||
| 		return fmt.Errorf("name cannot be more than %d characters", len(l.Name)-1) | ||||
| 	} | ||||
| 	for i := range name { | ||||
| 		l.Name[i] = int8(name[i]) | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
| 
 | ||||
| func (l *Lifreq) SetLifruInt(d int) { | ||||
| 	*(*int)(unsafe.Pointer(&l.Lifru[0])) = d | ||||
| } | ||||
| 
 | ||||
| func (l *Lifreq) GetLifruInt() int { | ||||
| 	return *(*int)(unsafe.Pointer(&l.Lifru[0])) | ||||
| } | ||||
| 
 | ||||
| func (l *Lifreq) SetLifruUint(d uint) { | ||||
| 	*(*uint)(unsafe.Pointer(&l.Lifru[0])) = d | ||||
| } | ||||
| 
 | ||||
| func (l *Lifreq) GetLifruUint() uint { | ||||
| 	return *(*uint)(unsafe.Pointer(&l.Lifru[0])) | ||||
| } | ||||
| 
 | ||||
| func IoctlLifreq(fd int, req uint, l *Lifreq) error { | ||||
| 	return ioctl(fd, req, uintptr(unsafe.Pointer(l))) | ||||
| } | ||||
| 
 | ||||
| // Strioctl Helpers | ||||
| 
 | ||||
| func (s *Strioctl) SetInt(i int) { | ||||
| 	s.Len = int32(unsafe.Sizeof(i)) | ||||
| 	s.Dp = (*int8)(unsafe.Pointer(&i)) | ||||
| } | ||||
| 
 | ||||
| func IoctlSetStrioctlRetInt(fd int, req uint, s *Strioctl) (int, error) { | ||||
| 	return ioctlRet(fd, req, uintptr(unsafe.Pointer(s))) | ||||
| } | ||||
|  | ||||
							
								
								
									
										664
									
								
								vendor/golang.org/x/sys/unix/syscall_linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										664
									
								
								vendor/golang.org/x/sys/unix/syscall_linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -13,8 +13,8 @@ package unix | ||||
| 
 | ||||
| import ( | ||||
| 	"encoding/binary" | ||||
| 	"runtime" | ||||
| 	"syscall" | ||||
| 	"time" | ||||
| 	"unsafe" | ||||
| ) | ||||
| 
 | ||||
| @ -38,6 +38,13 @@ func Creat(path string, mode uint32) (fd int, err error) { | ||||
| 	return Open(path, O_CREAT|O_WRONLY|O_TRUNC, mode) | ||||
| } | ||||
| 
 | ||||
| func EpollCreate(size int) (fd int, err error) { | ||||
| 	if size <= 0 { | ||||
| 		return -1, EINVAL | ||||
| 	} | ||||
| 	return EpollCreate1(0) | ||||
| } | ||||
| 
 | ||||
| //sys	FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) | ||||
| //sys	fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) | ||||
| 
 | ||||
| @ -66,60 +73,22 @@ func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { | ||||
| 	return fchmodat(dirfd, path, mode) | ||||
| } | ||||
| 
 | ||||
| //sys	ioctl(fd int, req uint, arg uintptr) (err error) | ||||
| 
 | ||||
| // ioctl itself should not be exposed directly, but additional get/set | ||||
| // functions for specific types are permissible. | ||||
| 
 | ||||
| // IoctlRetInt performs an ioctl operation specified by req on a device | ||||
| // associated with opened file descriptor fd, and returns a non-negative | ||||
| // integer that is returned by the ioctl syscall. | ||||
| func IoctlRetInt(fd int, req uint) (int, error) { | ||||
| 	ret, _, err := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), 0) | ||||
| 	if err != 0 { | ||||
| 		return 0, err | ||||
| 	} | ||||
| 	return int(ret), nil | ||||
| func InotifyInit() (fd int, err error) { | ||||
| 	return InotifyInit1(0) | ||||
| } | ||||
| 
 | ||||
| // 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))) | ||||
| } | ||||
| //sys	ioctl(fd int, req uint, arg uintptr) (err error) = SYS_IOCTL | ||||
| //sys	ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) = SYS_IOCTL | ||||
| 
 | ||||
| func IoctlSetRTCTime(fd int, value *RTCTime) error { | ||||
| 	err := ioctl(fd, RTC_SET_TIME, uintptr(unsafe.Pointer(value))) | ||||
| 	runtime.KeepAlive(value) | ||||
| 	return err | ||||
| } | ||||
| 
 | ||||
| func IoctlSetRTCWkAlrm(fd int, value *RTCWkAlrm) error { | ||||
| 	err := ioctl(fd, RTC_WKALM_SET, uintptr(unsafe.Pointer(value))) | ||||
| 	runtime.KeepAlive(value) | ||||
| 	return err | ||||
| } | ||||
| 
 | ||||
| func IoctlGetUint32(fd int, req uint) (uint32, error) { | ||||
| 	var value uint32 | ||||
| 	err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) | ||||
| 	return value, err | ||||
| } | ||||
| 
 | ||||
| func IoctlGetRTCTime(fd int) (*RTCTime, error) { | ||||
| 	var value RTCTime | ||||
| 	err := ioctl(fd, RTC_RD_TIME, uintptr(unsafe.Pointer(&value))) | ||||
| 	return &value, err | ||||
| } | ||||
| 
 | ||||
| func IoctlGetRTCWkAlrm(fd int) (*RTCWkAlrm, error) { | ||||
| 	var value RTCWkAlrm | ||||
| 	err := ioctl(fd, RTC_WKALM_RD, uintptr(unsafe.Pointer(&value))) | ||||
| 	return &value, err | ||||
| } | ||||
| // ioctl itself should not be exposed directly, but additional get/set functions | ||||
| // for specific types are permissible. These are defined in ioctl.go and | ||||
| // ioctl_linux.go. | ||||
| // | ||||
| // The third argument to ioctl is often a pointer but sometimes an integer. | ||||
| // Callers should use ioctlPtr when the third argument is a pointer and ioctl | ||||
| // when the third argument is an integer. | ||||
| // | ||||
| // TODO: some existing code incorrectly uses ioctl when it should use ioctlPtr. | ||||
| 
 | ||||
| //sys	Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) | ||||
| 
 | ||||
| @ -145,6 +114,31 @@ func Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) | ||||
| 	return openat(dirfd, path, flags|O_LARGEFILE, mode) | ||||
| } | ||||
| 
 | ||||
| //sys	openat2(dirfd int, path string, open_how *OpenHow, size int) (fd int, err error) | ||||
| 
 | ||||
| func Openat2(dirfd int, path string, how *OpenHow) (fd int, err error) { | ||||
| 	return openat2(dirfd, path, how, SizeofOpenHow) | ||||
| } | ||||
| 
 | ||||
| func Pipe(p []int) error { | ||||
| 	return Pipe2(p, 0) | ||||
| } | ||||
| 
 | ||||
| //sysnb	pipe2(p *[2]_C_int, flags int) (err error) | ||||
| 
 | ||||
| func Pipe2(p []int, flags int) error { | ||||
| 	if len(p) != 2 { | ||||
| 		return EINVAL | ||||
| 	} | ||||
| 	var pp [2]_C_int | ||||
| 	err := pipe2(&pp, flags) | ||||
| 	if err == nil { | ||||
| 		p[0] = int(pp[0]) | ||||
| 		p[1] = int(pp[1]) | ||||
| 	} | ||||
| 	return 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) { | ||||
| @ -154,6 +148,15 @@ func Ppoll(fds []PollFd, timeout *Timespec, sigmask *Sigset_t) (n int, err error | ||||
| 	return ppoll(&fds[0], len(fds), timeout, sigmask) | ||||
| } | ||||
| 
 | ||||
| func Poll(fds []PollFd, timeout int) (n int, err error) { | ||||
| 	var ts *Timespec | ||||
| 	if timeout >= 0 { | ||||
| 		ts = new(Timespec) | ||||
| 		*ts = NsecToTimespec(int64(timeout) * 1e6) | ||||
| 	} | ||||
| 	return Ppoll(fds, ts, nil) | ||||
| } | ||||
| 
 | ||||
| //sys	Readlinkat(dirfd int, path string, buf []byte) (n int, err error) | ||||
| 
 | ||||
| func Readlink(path string, buf []byte) (n int, err error) { | ||||
| @ -204,27 +207,7 @@ func Utimes(path string, tv []Timeval) error { | ||||
| //sys	utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) | ||||
| 
 | ||||
| func UtimesNano(path string, ts []Timespec) error { | ||||
| 	if ts == nil { | ||||
| 		err := utimensat(AT_FDCWD, path, nil, 0) | ||||
| 		if err != ENOSYS { | ||||
| 			return err | ||||
| 		} | ||||
| 		return utimes(path, nil) | ||||
| 	} | ||||
| 	if len(ts) != 2 { | ||||
| 		return EINVAL | ||||
| 	} | ||||
| 	err := utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) | ||||
| 	if err != ENOSYS { | ||||
| 		return err | ||||
| 	} | ||||
| 	// If the utimensat syscall isn't available (utimensat was added to Linux | ||||
| 	// in 2.6.22, Released, 8 July 2007) then fall back to utimes | ||||
| 	var tv [2]Timeval | ||||
| 	for i := 0; i < 2; i++ { | ||||
| 		tv[i] = NsecToTimeval(TimespecToNsec(ts[i])) | ||||
| 	} | ||||
| 	return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) | ||||
| 	return UtimesNanoAt(AT_FDCWD, path, ts, 0) | ||||
| } | ||||
| 
 | ||||
| func UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error { | ||||
| @ -267,6 +250,13 @@ func Getwd() (wd string, err error) { | ||||
| 	if n < 1 || n > len(buf) || buf[n-1] != 0 { | ||||
| 		return "", EINVAL | ||||
| 	} | ||||
| 	// In some cases, Linux can return a path that starts with the | ||||
| 	// "(unreachable)" prefix, which can potentially be a valid relative | ||||
| 	// path. To work around that, return ENOENT if path is not absolute. | ||||
| 	if buf[0] != '/' { | ||||
| 		return "", ENOENT | ||||
| 	} | ||||
| 
 | ||||
| 	return string(buf[0 : n-1]), nil | ||||
| } | ||||
| 
 | ||||
| @ -376,6 +366,8 @@ func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, | ||||
| 	return | ||||
| } | ||||
| 
 | ||||
| //sys	Waitid(idType int, id int, info *Siginfo, options int, rusage *Rusage) (err error) | ||||
| 
 | ||||
| func Mkfifo(path string, mode uint32) error { | ||||
| 	return Mknod(path, mode|S_IFIFO, 0) | ||||
| } | ||||
| @ -392,9 +384,7 @@ func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) { | ||||
| 	p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) | ||||
| 	p[0] = byte(sa.Port >> 8) | ||||
| 	p[1] = byte(sa.Port) | ||||
| 	for i := 0; i < len(sa.Addr); i++ { | ||||
| 		sa.raw.Addr[i] = sa.Addr[i] | ||||
| 	} | ||||
| 	sa.raw.Addr = sa.Addr | ||||
| 	return unsafe.Pointer(&sa.raw), SizeofSockaddrInet4, nil | ||||
| } | ||||
| 
 | ||||
| @ -407,9 +397,7 @@ func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) { | ||||
| 	p[0] = byte(sa.Port >> 8) | ||||
| 	p[1] = byte(sa.Port) | ||||
| 	sa.raw.Scope_id = sa.ZoneId | ||||
| 	for i := 0; i < len(sa.Addr); i++ { | ||||
| 		sa.raw.Addr[i] = sa.Addr[i] | ||||
| 	} | ||||
| 	sa.raw.Addr = sa.Addr | ||||
| 	return unsafe.Pointer(&sa.raw), SizeofSockaddrInet6, nil | ||||
| } | ||||
| 
 | ||||
| @ -458,9 +446,7 @@ func (sa *SockaddrLinklayer) sockaddr() (unsafe.Pointer, _Socklen, error) { | ||||
| 	sa.raw.Hatype = sa.Hatype | ||||
| 	sa.raw.Pkttype = sa.Pkttype | ||||
| 	sa.raw.Halen = sa.Halen | ||||
| 	for i := 0; i < len(sa.Addr); i++ { | ||||
| 		sa.raw.Addr[i] = sa.Addr[i] | ||||
| 	} | ||||
| 	sa.raw.Addr = sa.Addr | ||||
| 	return unsafe.Pointer(&sa.raw), SizeofSockaddrLinklayer, nil | ||||
| } | ||||
| 
 | ||||
| @ -526,24 +512,24 @@ func (sa *SockaddrL2) sockaddr() (unsafe.Pointer, _Socklen, error) { | ||||
| // | ||||
| // Server example: | ||||
| // | ||||
| //      fd, _ := Socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM) | ||||
| //      _ = unix.Bind(fd, &unix.SockaddrRFCOMM{ | ||||
| //      	Channel: 1, | ||||
| //      	Addr:    [6]uint8{0, 0, 0, 0, 0, 0}, // BDADDR_ANY or 00:00:00:00:00:00 | ||||
| //      }) | ||||
| //      _ = Listen(fd, 1) | ||||
| //      nfd, sa, _ := Accept(fd) | ||||
| //      fmt.Printf("conn addr=%v fd=%d", sa.(*unix.SockaddrRFCOMM).Addr, nfd) | ||||
| //      Read(nfd, buf) | ||||
| //	fd, _ := Socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM) | ||||
| //	_ = unix.Bind(fd, &unix.SockaddrRFCOMM{ | ||||
| //		Channel: 1, | ||||
| //		Addr:    [6]uint8{0, 0, 0, 0, 0, 0}, // BDADDR_ANY or 00:00:00:00:00:00 | ||||
| //	}) | ||||
| //	_ = Listen(fd, 1) | ||||
| //	nfd, sa, _ := Accept(fd) | ||||
| //	fmt.Printf("conn addr=%v fd=%d", sa.(*unix.SockaddrRFCOMM).Addr, nfd) | ||||
| //	Read(nfd, buf) | ||||
| // | ||||
| // Client example: | ||||
| // | ||||
| //      fd, _ := Socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM) | ||||
| //      _ = Connect(fd, &SockaddrRFCOMM{ | ||||
| //      	Channel: 1, | ||||
| //      	Addr:    [6]byte{0x11, 0x22, 0x33, 0xaa, 0xbb, 0xcc}, // CC:BB:AA:33:22:11 | ||||
| //      }) | ||||
| //      Write(fd, []byte(`hello`)) | ||||
| //	fd, _ := Socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM) | ||||
| //	_ = Connect(fd, &SockaddrRFCOMM{ | ||||
| //		Channel: 1, | ||||
| //		Addr:    [6]byte{0x11, 0x22, 0x33, 0xaa, 0xbb, 0xcc}, // CC:BB:AA:33:22:11 | ||||
| //	}) | ||||
| //	Write(fd, []byte(`hello`)) | ||||
| type SockaddrRFCOMM struct { | ||||
| 	// Addr represents a bluetooth address, byte ordering is little-endian. | ||||
| 	Addr [6]uint8 | ||||
| @ -570,12 +556,12 @@ func (sa *SockaddrRFCOMM) sockaddr() (unsafe.Pointer, _Socklen, error) { | ||||
| // The SockaddrCAN struct must be bound to the socket file descriptor | ||||
| // using Bind before the CAN socket can be used. | ||||
| // | ||||
| //      // Read one raw CAN frame | ||||
| //      fd, _ := Socket(AF_CAN, SOCK_RAW, CAN_RAW) | ||||
| //      addr := &SockaddrCAN{Ifindex: index} | ||||
| //      Bind(fd, addr) | ||||
| //      frame := make([]byte, 16) | ||||
| //      Read(fd, frame) | ||||
| //	// Read one raw CAN frame | ||||
| //	fd, _ := Socket(AF_CAN, SOCK_RAW, CAN_RAW) | ||||
| //	addr := &SockaddrCAN{Ifindex: index} | ||||
| //	Bind(fd, addr) | ||||
| //	frame := make([]byte, 16) | ||||
| //	Read(fd, frame) | ||||
| // | ||||
| // The full SocketCAN documentation can be found in the linux kernel | ||||
| // archives at: https://www.kernel.org/doc/Documentation/networking/can.txt | ||||
| @ -603,6 +589,36 @@ func (sa *SockaddrCAN) sockaddr() (unsafe.Pointer, _Socklen, error) { | ||||
| 	return unsafe.Pointer(&sa.raw), SizeofSockaddrCAN, nil | ||||
| } | ||||
| 
 | ||||
| // SockaddrCANJ1939 implements the Sockaddr interface for AF_CAN using J1939 | ||||
| // protocol (https://en.wikipedia.org/wiki/SAE_J1939). For more information | ||||
| // on the purposes of the fields, check the official linux kernel documentation | ||||
| // available here: https://www.kernel.org/doc/Documentation/networking/j1939.rst | ||||
| type SockaddrCANJ1939 struct { | ||||
| 	Ifindex int | ||||
| 	Name    uint64 | ||||
| 	PGN     uint32 | ||||
| 	Addr    uint8 | ||||
| 	raw     RawSockaddrCAN | ||||
| } | ||||
| 
 | ||||
| func (sa *SockaddrCANJ1939) sockaddr() (unsafe.Pointer, _Socklen, error) { | ||||
| 	if sa.Ifindex < 0 || sa.Ifindex > 0x7fffffff { | ||||
| 		return nil, 0, EINVAL | ||||
| 	} | ||||
| 	sa.raw.Family = AF_CAN | ||||
| 	sa.raw.Ifindex = int32(sa.Ifindex) | ||||
| 	n := (*[8]byte)(unsafe.Pointer(&sa.Name)) | ||||
| 	for i := 0; i < 8; i++ { | ||||
| 		sa.raw.Addr[i] = n[i] | ||||
| 	} | ||||
| 	p := (*[4]byte)(unsafe.Pointer(&sa.PGN)) | ||||
| 	for i := 0; i < 4; i++ { | ||||
| 		sa.raw.Addr[i+8] = p[i] | ||||
| 	} | ||||
| 	sa.raw.Addr[12] = sa.Addr | ||||
| 	return unsafe.Pointer(&sa.raw), SizeofSockaddrCAN, nil | ||||
| } | ||||
| 
 | ||||
| // SockaddrALG implements the Sockaddr interface for AF_ALG type sockets. | ||||
| // SockaddrALG enables userspace access to the Linux kernel's cryptography | ||||
| // subsystem. The Type and Name fields specify which type of hash or cipher | ||||
| @ -616,13 +632,13 @@ func (sa *SockaddrCAN) sockaddr() (unsafe.Pointer, _Socklen, error) { | ||||
| // Here is an example of using an AF_ALG socket with SHA1 hashing. | ||||
| // The initial socket setup process is as follows: | ||||
| // | ||||
| //      // Open a socket to perform SHA1 hashing. | ||||
| //      fd, _ := unix.Socket(unix.AF_ALG, unix.SOCK_SEQPACKET, 0) | ||||
| //      addr := &unix.SockaddrALG{Type: "hash", Name: "sha1"} | ||||
| //      unix.Bind(fd, addr) | ||||
| //      // Note: unix.Accept does not work at this time; must invoke accept() | ||||
| //      // manually using unix.Syscall. | ||||
| //      hashfd, _, _ := unix.Syscall(unix.SYS_ACCEPT, uintptr(fd), 0, 0) | ||||
| //	// Open a socket to perform SHA1 hashing. | ||||
| //	fd, _ := unix.Socket(unix.AF_ALG, unix.SOCK_SEQPACKET, 0) | ||||
| //	addr := &unix.SockaddrALG{Type: "hash", Name: "sha1"} | ||||
| //	unix.Bind(fd, addr) | ||||
| //	// Note: unix.Accept does not work at this time; must invoke accept() | ||||
| //	// manually using unix.Syscall. | ||||
| //	hashfd, _, _ := unix.Syscall(unix.SYS_ACCEPT, uintptr(fd), 0, 0) | ||||
| // | ||||
| // Once a file descriptor has been returned from Accept, it may be used to | ||||
| // perform SHA1 hashing. The descriptor is not safe for concurrent use, but | ||||
| @ -631,39 +647,39 @@ func (sa *SockaddrCAN) sockaddr() (unsafe.Pointer, _Socklen, error) { | ||||
| // When hashing a small byte slice or string, a single Write and Read may | ||||
| // be used: | ||||
| // | ||||
| //      // Assume hashfd is already configured using the setup process. | ||||
| //      hash := os.NewFile(hashfd, "sha1") | ||||
| //      // Hash an input string and read the results. Each Write discards | ||||
| //      // previous hash state. Read always reads the current state. | ||||
| //      b := make([]byte, 20) | ||||
| //      for i := 0; i < 2; i++ { | ||||
| //          io.WriteString(hash, "Hello, world.") | ||||
| //          hash.Read(b) | ||||
| //          fmt.Println(hex.EncodeToString(b)) | ||||
| //      } | ||||
| //      // Output: | ||||
| //      // 2ae01472317d1935a84797ec1983ae243fc6aa28 | ||||
| //      // 2ae01472317d1935a84797ec1983ae243fc6aa28 | ||||
| //	// Assume hashfd is already configured using the setup process. | ||||
| //	hash := os.NewFile(hashfd, "sha1") | ||||
| //	// Hash an input string and read the results. Each Write discards | ||||
| //	// previous hash state. Read always reads the current state. | ||||
| //	b := make([]byte, 20) | ||||
| //	for i := 0; i < 2; i++ { | ||||
| //	    io.WriteString(hash, "Hello, world.") | ||||
| //	    hash.Read(b) | ||||
| //	    fmt.Println(hex.EncodeToString(b)) | ||||
| //	} | ||||
| //	// Output: | ||||
| //	// 2ae01472317d1935a84797ec1983ae243fc6aa28 | ||||
| //	// 2ae01472317d1935a84797ec1983ae243fc6aa28 | ||||
| // | ||||
| // For hashing larger byte slices, or byte streams such as those read from | ||||
| // a file or socket, use Sendto with MSG_MORE to instruct the kernel to update | ||||
| // the hash digest instead of creating a new one for a given chunk and finalizing it. | ||||
| // | ||||
| //      // Assume hashfd and addr are already configured using the setup process. | ||||
| //      hash := os.NewFile(hashfd, "sha1") | ||||
| //      // Hash the contents of a file. | ||||
| //      f, _ := os.Open("/tmp/linux-4.10-rc7.tar.xz") | ||||
| //      b := make([]byte, 4096) | ||||
| //      for { | ||||
| //          n, err := f.Read(b) | ||||
| //          if err == io.EOF { | ||||
| //              break | ||||
| //          } | ||||
| //          unix.Sendto(hashfd, b[:n], unix.MSG_MORE, addr) | ||||
| //      } | ||||
| //      hash.Read(b) | ||||
| //      fmt.Println(hex.EncodeToString(b)) | ||||
| //      // Output: 85cdcad0c06eef66f805ecce353bec9accbeecc5 | ||||
| //	// Assume hashfd and addr are already configured using the setup process. | ||||
| //	hash := os.NewFile(hashfd, "sha1") | ||||
| //	// Hash the contents of a file. | ||||
| //	f, _ := os.Open("/tmp/linux-4.10-rc7.tar.xz") | ||||
| //	b := make([]byte, 4096) | ||||
| //	for { | ||||
| //	    n, err := f.Read(b) | ||||
| //	    if err == io.EOF { | ||||
| //	        break | ||||
| //	    } | ||||
| //	    unix.Sendto(hashfd, b[:n], unix.MSG_MORE, addr) | ||||
| //	} | ||||
| //	hash.Read(b) | ||||
| //	fmt.Println(hex.EncodeToString(b)) | ||||
| //	// Output: 85cdcad0c06eef66f805ecce353bec9accbeecc5 | ||||
| // | ||||
| // For more information, see: http://www.chronox.de/crypto-API/crypto/userspace-if.html. | ||||
| type SockaddrALG struct { | ||||
| @ -710,16 +726,19 @@ type SockaddrVM struct { | ||||
| 	// CID and Port specify a context ID and port address for a VM socket. | ||||
| 	// Guests have a unique CID, and hosts may have a well-known CID of: | ||||
| 	//  - VMADDR_CID_HYPERVISOR: refers to the hypervisor process. | ||||
| 	//  - VMADDR_CID_LOCAL: refers to local communication (loopback). | ||||
| 	//  - VMADDR_CID_HOST: refers to other processes on the host. | ||||
| 	CID  uint32 | ||||
| 	Port uint32 | ||||
| 	raw  RawSockaddrVM | ||||
| 	CID   uint32 | ||||
| 	Port  uint32 | ||||
| 	Flags uint8 | ||||
| 	raw   RawSockaddrVM | ||||
| } | ||||
| 
 | ||||
| func (sa *SockaddrVM) sockaddr() (unsafe.Pointer, _Socklen, error) { | ||||
| 	sa.raw.Family = AF_VSOCK | ||||
| 	sa.raw.Port = sa.Port | ||||
| 	sa.raw.Cid = sa.CID | ||||
| 	sa.raw.Flags = sa.Flags | ||||
| 
 | ||||
| 	return unsafe.Pointer(&sa.raw), SizeofSockaddrVM, nil | ||||
| } | ||||
| @ -842,12 +861,10 @@ func (sa *SockaddrTIPC) sockaddr() (unsafe.Pointer, _Socklen, error) { | ||||
| 	if sa.Addr == nil { | ||||
| 		return nil, 0, EINVAL | ||||
| 	} | ||||
| 
 | ||||
| 	sa.raw.Family = AF_TIPC | ||||
| 	sa.raw.Scope = int8(sa.Scope) | ||||
| 	sa.raw.Addrtype = sa.Addr.tipcAddrtype() | ||||
| 	sa.raw.Addr = sa.Addr.tipcAddr() | ||||
| 
 | ||||
| 	return unsafe.Pointer(&sa.raw), SizeofSockaddrTIPC, nil | ||||
| } | ||||
| 
 | ||||
| @ -861,9 +878,7 @@ type SockaddrL2TPIP struct { | ||||
| func (sa *SockaddrL2TPIP) sockaddr() (unsafe.Pointer, _Socklen, error) { | ||||
| 	sa.raw.Family = AF_INET | ||||
| 	sa.raw.Conn_id = sa.ConnId | ||||
| 	for i := 0; i < len(sa.Addr); i++ { | ||||
| 		sa.raw.Addr[i] = sa.Addr[i] | ||||
| 	} | ||||
| 	sa.raw.Addr = sa.Addr | ||||
| 	return unsafe.Pointer(&sa.raw), SizeofSockaddrL2TPIP, nil | ||||
| } | ||||
| 
 | ||||
| @ -879,12 +894,83 @@ func (sa *SockaddrL2TPIP6) sockaddr() (unsafe.Pointer, _Socklen, error) { | ||||
| 	sa.raw.Family = AF_INET6 | ||||
| 	sa.raw.Conn_id = sa.ConnId | ||||
| 	sa.raw.Scope_id = sa.ZoneId | ||||
| 	for i := 0; i < len(sa.Addr); i++ { | ||||
| 		sa.raw.Addr[i] = sa.Addr[i] | ||||
| 	} | ||||
| 	sa.raw.Addr = sa.Addr | ||||
| 	return unsafe.Pointer(&sa.raw), SizeofSockaddrL2TPIP6, nil | ||||
| } | ||||
| 
 | ||||
| // SockaddrIUCV implements the Sockaddr interface for AF_IUCV sockets. | ||||
| type SockaddrIUCV struct { | ||||
| 	UserID string | ||||
| 	Name   string | ||||
| 	raw    RawSockaddrIUCV | ||||
| } | ||||
| 
 | ||||
| func (sa *SockaddrIUCV) sockaddr() (unsafe.Pointer, _Socklen, error) { | ||||
| 	sa.raw.Family = AF_IUCV | ||||
| 	// These are EBCDIC encoded by the kernel, but we still need to pad them | ||||
| 	// with blanks. Initializing with blanks allows the caller to feed in either | ||||
| 	// a padded or an unpadded string. | ||||
| 	for i := 0; i < 8; i++ { | ||||
| 		sa.raw.Nodeid[i] = ' ' | ||||
| 		sa.raw.User_id[i] = ' ' | ||||
| 		sa.raw.Name[i] = ' ' | ||||
| 	} | ||||
| 	if len(sa.UserID) > 8 || len(sa.Name) > 8 { | ||||
| 		return nil, 0, EINVAL | ||||
| 	} | ||||
| 	for i, b := range []byte(sa.UserID[:]) { | ||||
| 		sa.raw.User_id[i] = int8(b) | ||||
| 	} | ||||
| 	for i, b := range []byte(sa.Name[:]) { | ||||
| 		sa.raw.Name[i] = int8(b) | ||||
| 	} | ||||
| 	return unsafe.Pointer(&sa.raw), SizeofSockaddrIUCV, nil | ||||
| } | ||||
| 
 | ||||
| type SockaddrNFC struct { | ||||
| 	DeviceIdx   uint32 | ||||
| 	TargetIdx   uint32 | ||||
| 	NFCProtocol uint32 | ||||
| 	raw         RawSockaddrNFC | ||||
| } | ||||
| 
 | ||||
| func (sa *SockaddrNFC) sockaddr() (unsafe.Pointer, _Socklen, error) { | ||||
| 	sa.raw.Sa_family = AF_NFC | ||||
| 	sa.raw.Dev_idx = sa.DeviceIdx | ||||
| 	sa.raw.Target_idx = sa.TargetIdx | ||||
| 	sa.raw.Nfc_protocol = sa.NFCProtocol | ||||
| 	return unsafe.Pointer(&sa.raw), SizeofSockaddrNFC, nil | ||||
| } | ||||
| 
 | ||||
| type SockaddrNFCLLCP struct { | ||||
| 	DeviceIdx      uint32 | ||||
| 	TargetIdx      uint32 | ||||
| 	NFCProtocol    uint32 | ||||
| 	DestinationSAP uint8 | ||||
| 	SourceSAP      uint8 | ||||
| 	ServiceName    string | ||||
| 	raw            RawSockaddrNFCLLCP | ||||
| } | ||||
| 
 | ||||
| func (sa *SockaddrNFCLLCP) sockaddr() (unsafe.Pointer, _Socklen, error) { | ||||
| 	sa.raw.Sa_family = AF_NFC | ||||
| 	sa.raw.Dev_idx = sa.DeviceIdx | ||||
| 	sa.raw.Target_idx = sa.TargetIdx | ||||
| 	sa.raw.Nfc_protocol = sa.NFCProtocol | ||||
| 	sa.raw.Dsap = sa.DestinationSAP | ||||
| 	sa.raw.Ssap = sa.SourceSAP | ||||
| 	if len(sa.ServiceName) > len(sa.raw.Service_name) { | ||||
| 		return nil, 0, EINVAL | ||||
| 	} | ||||
| 	copy(sa.raw.Service_name[:], sa.ServiceName) | ||||
| 	sa.raw.SetServiceNameLen(len(sa.ServiceName)) | ||||
| 	return unsafe.Pointer(&sa.raw), SizeofSockaddrNFCLLCP, nil | ||||
| } | ||||
| 
 | ||||
| var socketProtocol = func(fd int) (int, error) { | ||||
| 	return GetsockoptInt(fd, SOL_SOCKET, SO_PROTOCOL) | ||||
| } | ||||
| 
 | ||||
| func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { | ||||
| 	switch rsa.Addr.Family { | ||||
| 	case AF_NETLINK: | ||||
| @ -904,9 +990,7 @@ func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { | ||||
| 		sa.Hatype = pp.Hatype | ||||
| 		sa.Pkttype = pp.Pkttype | ||||
| 		sa.Halen = pp.Halen | ||||
| 		for i := 0; i < len(sa.Addr); i++ { | ||||
| 			sa.Addr[i] = pp.Addr[i] | ||||
| 		} | ||||
| 		sa.Addr = pp.Addr | ||||
| 		return sa, nil | ||||
| 
 | ||||
| 	case AF_UNIX: | ||||
| @ -935,7 +1019,7 @@ func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { | ||||
| 		return sa, nil | ||||
| 
 | ||||
| 	case AF_INET: | ||||
| 		proto, err := GetsockoptInt(fd, SOL_SOCKET, SO_PROTOCOL) | ||||
| 		proto, err := socketProtocol(fd) | ||||
| 		if err != nil { | ||||
| 			return nil, err | ||||
| 		} | ||||
| @ -945,23 +1029,19 @@ func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { | ||||
| 			pp := (*RawSockaddrL2TPIP)(unsafe.Pointer(rsa)) | ||||
| 			sa := new(SockaddrL2TPIP) | ||||
| 			sa.ConnId = pp.Conn_id | ||||
| 			for i := 0; i < len(sa.Addr); i++ { | ||||
| 				sa.Addr[i] = pp.Addr[i] | ||||
| 			} | ||||
| 			sa.Addr = pp.Addr | ||||
| 			return sa, nil | ||||
| 		default: | ||||
| 			pp := (*RawSockaddrInet4)(unsafe.Pointer(rsa)) | ||||
| 			sa := new(SockaddrInet4) | ||||
| 			p := (*[2]byte)(unsafe.Pointer(&pp.Port)) | ||||
| 			sa.Port = int(p[0])<<8 + int(p[1]) | ||||
| 			for i := 0; i < len(sa.Addr); i++ { | ||||
| 				sa.Addr[i] = pp.Addr[i] | ||||
| 			} | ||||
| 			sa.Addr = pp.Addr | ||||
| 			return sa, nil | ||||
| 		} | ||||
| 
 | ||||
| 	case AF_INET6: | ||||
| 		proto, err := GetsockoptInt(fd, SOL_SOCKET, SO_PROTOCOL) | ||||
| 		proto, err := socketProtocol(fd) | ||||
| 		if err != nil { | ||||
| 			return nil, err | ||||
| 		} | ||||
| @ -972,9 +1052,7 @@ func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { | ||||
| 			sa := new(SockaddrL2TPIP6) | ||||
| 			sa.ConnId = pp.Conn_id | ||||
| 			sa.ZoneId = pp.Scope_id | ||||
| 			for i := 0; i < len(sa.Addr); i++ { | ||||
| 				sa.Addr[i] = pp.Addr[i] | ||||
| 			} | ||||
| 			sa.Addr = pp.Addr | ||||
| 			return sa, nil | ||||
| 		default: | ||||
| 			pp := (*RawSockaddrInet6)(unsafe.Pointer(rsa)) | ||||
| @ -982,21 +1060,20 @@ func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { | ||||
| 			p := (*[2]byte)(unsafe.Pointer(&pp.Port)) | ||||
| 			sa.Port = int(p[0])<<8 + int(p[1]) | ||||
| 			sa.ZoneId = pp.Scope_id | ||||
| 			for i := 0; i < len(sa.Addr); i++ { | ||||
| 				sa.Addr[i] = pp.Addr[i] | ||||
| 			} | ||||
| 			sa.Addr = pp.Addr | ||||
| 			return sa, nil | ||||
| 		} | ||||
| 
 | ||||
| 	case AF_VSOCK: | ||||
| 		pp := (*RawSockaddrVM)(unsafe.Pointer(rsa)) | ||||
| 		sa := &SockaddrVM{ | ||||
| 			CID:  pp.Cid, | ||||
| 			Port: pp.Port, | ||||
| 			CID:   pp.Cid, | ||||
| 			Port:  pp.Port, | ||||
| 			Flags: pp.Flags, | ||||
| 		} | ||||
| 		return sa, nil | ||||
| 	case AF_BLUETOOTH: | ||||
| 		proto, err := GetsockoptInt(fd, SOL_SOCKET, SO_PROTOCOL) | ||||
| 		proto, err := socketProtocol(fd) | ||||
| 		if err != nil { | ||||
| 			return nil, err | ||||
| 		} | ||||
| @ -1065,6 +1142,92 @@ func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { | ||||
| 		} | ||||
| 
 | ||||
| 		return sa, nil | ||||
| 	case AF_IUCV: | ||||
| 		pp := (*RawSockaddrIUCV)(unsafe.Pointer(rsa)) | ||||
| 
 | ||||
| 		var user [8]byte | ||||
| 		var name [8]byte | ||||
| 
 | ||||
| 		for i := 0; i < 8; i++ { | ||||
| 			user[i] = byte(pp.User_id[i]) | ||||
| 			name[i] = byte(pp.Name[i]) | ||||
| 		} | ||||
| 
 | ||||
| 		sa := &SockaddrIUCV{ | ||||
| 			UserID: string(user[:]), | ||||
| 			Name:   string(name[:]), | ||||
| 		} | ||||
| 		return sa, nil | ||||
| 
 | ||||
| 	case AF_CAN: | ||||
| 		proto, err := socketProtocol(fd) | ||||
| 		if err != nil { | ||||
| 			return nil, err | ||||
| 		} | ||||
| 
 | ||||
| 		pp := (*RawSockaddrCAN)(unsafe.Pointer(rsa)) | ||||
| 
 | ||||
| 		switch proto { | ||||
| 		case CAN_J1939: | ||||
| 			sa := &SockaddrCANJ1939{ | ||||
| 				Ifindex: int(pp.Ifindex), | ||||
| 			} | ||||
| 			name := (*[8]byte)(unsafe.Pointer(&sa.Name)) | ||||
| 			for i := 0; i < 8; i++ { | ||||
| 				name[i] = pp.Addr[i] | ||||
| 			} | ||||
| 			pgn := (*[4]byte)(unsafe.Pointer(&sa.PGN)) | ||||
| 			for i := 0; i < 4; i++ { | ||||
| 				pgn[i] = pp.Addr[i+8] | ||||
| 			} | ||||
| 			addr := (*[1]byte)(unsafe.Pointer(&sa.Addr)) | ||||
| 			addr[0] = pp.Addr[12] | ||||
| 			return sa, nil | ||||
| 		default: | ||||
| 			sa := &SockaddrCAN{ | ||||
| 				Ifindex: int(pp.Ifindex), | ||||
| 			} | ||||
| 			rx := (*[4]byte)(unsafe.Pointer(&sa.RxID)) | ||||
| 			for i := 0; i < 4; i++ { | ||||
| 				rx[i] = pp.Addr[i] | ||||
| 			} | ||||
| 			tx := (*[4]byte)(unsafe.Pointer(&sa.TxID)) | ||||
| 			for i := 0; i < 4; i++ { | ||||
| 				tx[i] = pp.Addr[i+4] | ||||
| 			} | ||||
| 			return sa, nil | ||||
| 		} | ||||
| 	case AF_NFC: | ||||
| 		proto, err := socketProtocol(fd) | ||||
| 		if err != nil { | ||||
| 			return nil, err | ||||
| 		} | ||||
| 		switch proto { | ||||
| 		case NFC_SOCKPROTO_RAW: | ||||
| 			pp := (*RawSockaddrNFC)(unsafe.Pointer(rsa)) | ||||
| 			sa := &SockaddrNFC{ | ||||
| 				DeviceIdx:   pp.Dev_idx, | ||||
| 				TargetIdx:   pp.Target_idx, | ||||
| 				NFCProtocol: pp.Nfc_protocol, | ||||
| 			} | ||||
| 			return sa, nil | ||||
| 		case NFC_SOCKPROTO_LLCP: | ||||
| 			pp := (*RawSockaddrNFCLLCP)(unsafe.Pointer(rsa)) | ||||
| 			if uint64(pp.Service_name_len) > uint64(len(pp.Service_name)) { | ||||
| 				return nil, EINVAL | ||||
| 			} | ||||
| 			sa := &SockaddrNFCLLCP{ | ||||
| 				DeviceIdx:      pp.Dev_idx, | ||||
| 				TargetIdx:      pp.Target_idx, | ||||
| 				NFCProtocol:    pp.Nfc_protocol, | ||||
| 				DestinationSAP: pp.Dsap, | ||||
| 				SourceSAP:      pp.Ssap, | ||||
| 				ServiceName:    string(pp.Service_name[:pp.Service_name_len]), | ||||
| 			} | ||||
| 			return sa, nil | ||||
| 		default: | ||||
| 			return nil, EINVAL | ||||
| 		} | ||||
| 	} | ||||
| 	return nil, EAFNOSUPPORT | ||||
| } | ||||
| @ -1072,7 +1235,7 @@ func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { | ||||
| func Accept(fd int) (nfd int, sa Sockaddr, err error) { | ||||
| 	var rsa RawSockaddrAny | ||||
| 	var len _Socklen = SizeofSockaddrAny | ||||
| 	nfd, err = accept(fd, &rsa, &len) | ||||
| 	nfd, err = accept4(fd, &rsa, &len, 0) | ||||
| 	if err != nil { | ||||
| 		return | ||||
| 	} | ||||
| @ -1194,6 +1357,13 @@ func SetsockoptTpacketReq3(fd, level, opt int, tp *TpacketReq3) error { | ||||
| 	return setsockopt(fd, level, opt, unsafe.Pointer(tp), unsafe.Sizeof(*tp)) | ||||
| } | ||||
| 
 | ||||
| func SetsockoptTCPRepairOpt(fd, level, opt int, o []TCPRepairOpt) (err error) { | ||||
| 	if len(o) == 0 { | ||||
| 		return EINVAL | ||||
| 	} | ||||
| 	return setsockopt(fd, level, opt, unsafe.Pointer(&o[0]), uintptr(SizeofTCPRepairOpt*len(o))) | ||||
| } | ||||
| 
 | ||||
| // Keyctl Commands (http://man7.org/linux/man-pages/man2/keyctl.2.html) | ||||
| 
 | ||||
| // KeyctlInt calls keyctl commands in which each argument is an int. | ||||
| @ -1326,13 +1496,12 @@ func KeyctlRestrictKeyring(ringid int, keyType string, restriction string) error | ||||
| 	return keyctlRestrictKeyringByType(KEYCTL_RESTRICT_KEYRING, ringid, keyType, restriction) | ||||
| } | ||||
| 
 | ||||
| //sys keyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) = SYS_KEYCTL | ||||
| //sys keyctlRestrictKeyring(cmd int, arg2 int) (err error) = SYS_KEYCTL | ||||
| //sys	keyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) = SYS_KEYCTL | ||||
| //sys	keyctlRestrictKeyring(cmd int, arg2 int) (err error) = SYS_KEYCTL | ||||
| 
 | ||||
| func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) { | ||||
| func recvmsgRaw(fd int, p, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) { | ||||
| 	var msg Msghdr | ||||
| 	var rsa RawSockaddrAny | ||||
| 	msg.Name = (*byte)(unsafe.Pointer(&rsa)) | ||||
| 	msg.Name = (*byte)(unsafe.Pointer(rsa)) | ||||
| 	msg.Namelen = uint32(SizeofSockaddrAny) | ||||
| 	var iov Iovec | ||||
| 	if len(p) > 0 { | ||||
| @ -1363,28 +1532,10 @@ func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from | ||||
| 	} | ||||
| 	oobn = int(msg.Controllen) | ||||
| 	recvflags = int(msg.Flags) | ||||
| 	// source address is only specified if the socket is unconnected | ||||
| 	if rsa.Addr.Family != AF_UNSPEC { | ||||
| 		from, err = anyToSockaddr(fd, &rsa) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
| 
 | ||||
| func Sendmsg(fd int, p, oob []byte, to Sockaddr, flags int) (err error) { | ||||
| 	_, err = SendmsgN(fd, p, oob, to, flags) | ||||
| 	return | ||||
| } | ||||
| 
 | ||||
| func SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) { | ||||
| 	var ptr unsafe.Pointer | ||||
| 	var salen _Socklen | ||||
| 	if to != nil { | ||||
| 		var err error | ||||
| 		ptr, salen, err = to.sockaddr() | ||||
| 		if err != nil { | ||||
| 			return 0, err | ||||
| 		} | ||||
| 	} | ||||
| func sendmsgN(fd int, p, oob []byte, ptr unsafe.Pointer, salen _Socklen, flags int) (n int, err error) { | ||||
| 	var msg Msghdr | ||||
| 	msg.Name = (*byte)(ptr) | ||||
| 	msg.Namelen = uint32(salen) | ||||
| @ -1617,6 +1768,16 @@ func Mount(source string, target string, fstype string, flags uintptr, data stri | ||||
| 	return mount(source, target, fstype, flags, datap) | ||||
| } | ||||
| 
 | ||||
| //sys	mountSetattr(dirfd int, pathname string, flags uint, attr *MountAttr, size uintptr) (err error) = SYS_MOUNT_SETATTR | ||||
| 
 | ||||
| // MountSetattr is a wrapper for mount_setattr(2). | ||||
| // https://man7.org/linux/man-pages/man2/mount_setattr.2.html | ||||
| // | ||||
| // Requires kernel >= 5.12. | ||||
| func MountSetattr(dirfd int, pathname string, flags uint, attr *MountAttr) error { | ||||
| 	return mountSetattr(dirfd, pathname, flags, attr, unsafe.Sizeof(*attr)) | ||||
| } | ||||
| 
 | ||||
| func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { | ||||
| 	if raceenabled { | ||||
| 		raceReleaseMerge(unsafe.Pointer(&ioSync)) | ||||
| @ -1642,16 +1803,13 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e | ||||
| //sys	ClockGettime(clockid int32, time *Timespec) (err error) | ||||
| //sys	ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) | ||||
| //sys	Close(fd int) (err error) | ||||
| //sys	CloseRange(first uint, last uint, flags uint) (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) | ||||
| 
 | ||||
| func Dup2(oldfd, newfd int) error { | ||||
| 	// Android O and newer blocks dup2; riscv and arm64 don't implement dup2. | ||||
| 	if runtime.GOOS == "android" || runtime.GOARCH == "riscv64" || runtime.GOARCH == "arm64" { | ||||
| 		return Dup3(oldfd, newfd, 0) | ||||
| 	} | ||||
| 	return dup2(oldfd, newfd) | ||||
| 	return Dup3(oldfd, newfd, 0) | ||||
| } | ||||
| 
 | ||||
| //sys	Dup3(oldfd int, newfd int, flags int) (err error) | ||||
| @ -1671,6 +1829,9 @@ func Dup2(oldfd, newfd int) error { | ||||
| //sys	Fremovexattr(fd int, attr string) (err error) | ||||
| //sys	Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) | ||||
| //sys	Fsync(fd int) (err error) | ||||
| //sys	Fsmount(fd int, flags int, mountAttrs int) (fsfd int, err error) | ||||
| //sys	Fsopen(fsName string, flags int) (fd int, err error) | ||||
| //sys	Fspick(dirfd int, pathName string, flags int) (fd int, err error) | ||||
| //sys	Getdents(fd int, buf []byte) (n int, err error) = SYS_GETDENTS64 | ||||
| //sysnb	Getpgid(pid int) (pgid int, err error) | ||||
| 
 | ||||
| @ -1701,11 +1862,13 @@ func Getpgrp() (pid int) { | ||||
| //sys	MemfdCreate(name string, flags int) (fd int, err error) | ||||
| //sys	Mkdirat(dirfd int, path string, mode uint32) (err error) | ||||
| //sys	Mknodat(dirfd int, path string, mode uint32, dev int) (err error) | ||||
| //sys	MoveMount(fromDirfd int, fromPathName string, toDirfd int, toPathName string, flags int) (err error) | ||||
| //sys	Nanosleep(time *Timespec, leftover *Timespec) (err error) | ||||
| //sys	OpenTree(dfd int, fileName string, flags uint) (r int, err error) | ||||
| //sys	PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) | ||||
| //sys	PivotRoot(newroot string, putold string) (err error) = SYS_PIVOT_ROOT | ||||
| //sysnb prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) = SYS_PRLIMIT64 | ||||
| //sys   Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) | ||||
| //sysnb	Prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) = SYS_PRLIMIT64 | ||||
| //sys	Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) | ||||
| //sys	Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) = SYS_PSELECT6 | ||||
| //sys	read(fd int, p []byte) (n int, err error) | ||||
| //sys	Removexattr(path string, attr string) (err error) | ||||
| @ -1778,9 +1941,9 @@ func Signalfd(fd int, sigmask *Sigset_t, flags int) (newfd int, err error) { | ||||
| //sys	Syncfs(fd int) (err error) | ||||
| //sysnb	Sysinfo(info *Sysinfo_t) (err error) | ||||
| //sys	Tee(rfd int, wfd int, len int, flags int) (n int64, err error) | ||||
| //sysnb TimerfdCreate(clockid int, flags int) (fd int, err error) | ||||
| //sysnb TimerfdGettime(fd int, currValue *ItimerSpec) (err error) | ||||
| //sysnb TimerfdSettime(fd int, flags int, newValue *ItimerSpec, oldValue *ItimerSpec) (err error) | ||||
| //sysnb	TimerfdCreate(clockid int, flags int) (fd int, err error) | ||||
| //sysnb	TimerfdGettime(fd int, currValue *ItimerSpec) (err error) | ||||
| //sysnb	TimerfdSettime(fd int, flags int, newValue *ItimerSpec, oldValue *ItimerSpec) (err error) | ||||
| //sysnb	Tgkill(tgid int, tid int, sig syscall.Signal) (err error) | ||||
| //sysnb	Times(tms *Tms) (ticks uintptr, err error) | ||||
| //sysnb	Umask(mask int) (oldmask int) | ||||
| @ -1965,10 +2128,15 @@ func isGroupMember(gid int) bool { | ||||
| } | ||||
| 
 | ||||
| //sys	faccessat(dirfd int, path string, mode uint32) (err error) | ||||
| //sys	Faccessat2(dirfd int, path string, mode uint32, flags int) (err error) | ||||
| 
 | ||||
| func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { | ||||
| 	if flags & ^(AT_SYMLINK_NOFOLLOW|AT_EACCESS) != 0 { | ||||
| 		return EINVAL | ||||
| 	if flags == 0 { | ||||
| 		return faccessat(dirfd, path, mode) | ||||
| 	} | ||||
| 
 | ||||
| 	if err := Faccessat2(dirfd, path, mode, flags); err != ENOSYS && err != EPERM { | ||||
| 		return err | ||||
| 	} | ||||
| 
 | ||||
| 	// The Linux kernel faccessat system call does not take any flags. | ||||
| @ -1977,8 +2145,8 @@ func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { | ||||
| 	// Because people naturally expect syscall.Faccessat to act | ||||
| 	// like C faccessat, we do the same. | ||||
| 
 | ||||
| 	if flags == 0 { | ||||
| 		return faccessat(dirfd, path, mode) | ||||
| 	if flags & ^(AT_SYMLINK_NOFOLLOW|AT_EACCESS) != 0 { | ||||
| 		return EINVAL | ||||
| 	} | ||||
| 
 | ||||
| 	var st Stat_t | ||||
| @ -2021,7 +2189,7 @@ func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { | ||||
| 			gid = Getgid() | ||||
| 		} | ||||
| 
 | ||||
| 		if uint32(gid) == st.Gid || isGroupMember(gid) { | ||||
| 		if uint32(gid) == st.Gid || isGroupMember(int(st.Gid)) { | ||||
| 			fmode = (st.Mode >> 3) & 7 | ||||
| 		} else { | ||||
| 			fmode = st.Mode & 7 | ||||
| @ -2035,8 +2203,8 @@ func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { | ||||
| 	return EACCES | ||||
| } | ||||
| 
 | ||||
| //sys nameToHandleAt(dirFD int, pathname string, fh *fileHandle, mountID *_C_int, flags int) (err error) = SYS_NAME_TO_HANDLE_AT | ||||
| //sys openByHandleAt(mountFD int, fh *fileHandle, flags int) (fd int, err error) = SYS_OPEN_BY_HANDLE_AT | ||||
| //sys	nameToHandleAt(dirFD int, pathname string, fh *fileHandle, mountID *_C_int, flags int) (err error) = SYS_NAME_TO_HANDLE_AT | ||||
| //sys	openByHandleAt(mountFD int, fh *fileHandle, flags int) (fd int, err error) = SYS_OPEN_BY_HANDLE_AT | ||||
| 
 | ||||
| // fileHandle is the argument to nameToHandleAt and openByHandleAt. We | ||||
| // originally tried to generate it via unix/linux/types.go with "type | ||||
| @ -2122,11 +2290,77 @@ func Klogset(typ int, arg int) (err error) { | ||||
| 	return nil | ||||
| } | ||||
| 
 | ||||
| // RemoteIovec is Iovec with the pointer replaced with an integer. | ||||
| // It is used for ProcessVMReadv and ProcessVMWritev, where the pointer | ||||
| // refers to a location in a different process' address space, which | ||||
| // would confuse the Go garbage collector. | ||||
| type RemoteIovec struct { | ||||
| 	Base uintptr | ||||
| 	Len  int | ||||
| } | ||||
| 
 | ||||
| //sys	ProcessVMReadv(pid int, localIov []Iovec, remoteIov []RemoteIovec, flags uint) (n int, err error) = SYS_PROCESS_VM_READV | ||||
| //sys	ProcessVMWritev(pid int, localIov []Iovec, remoteIov []RemoteIovec, flags uint) (n int, err error) = SYS_PROCESS_VM_WRITEV | ||||
| 
 | ||||
| //sys	PidfdOpen(pid int, flags int) (fd int, err error) = SYS_PIDFD_OPEN | ||||
| //sys	PidfdGetfd(pidfd int, targetfd int, flags int) (fd int, err error) = SYS_PIDFD_GETFD | ||||
| //sys	PidfdSendSignal(pidfd int, sig Signal, info *Siginfo, flags int) (err error) = SYS_PIDFD_SEND_SIGNAL | ||||
| 
 | ||||
| //sys	shmat(id int, addr uintptr, flag int) (ret uintptr, err error) | ||||
| //sys	shmctl(id int, cmd int, buf *SysvShmDesc) (result int, err error) | ||||
| //sys	shmdt(addr uintptr) (err error) | ||||
| //sys	shmget(key int, size int, flag int) (id int, err error) | ||||
| 
 | ||||
| //sys	getitimer(which int, currValue *Itimerval) (err error) | ||||
| //sys	setitimer(which int, newValue *Itimerval, oldValue *Itimerval) (err error) | ||||
| 
 | ||||
| // MakeItimerval creates an Itimerval from interval and value durations. | ||||
| func MakeItimerval(interval, value time.Duration) Itimerval { | ||||
| 	return Itimerval{ | ||||
| 		Interval: NsecToTimeval(interval.Nanoseconds()), | ||||
| 		Value:    NsecToTimeval(value.Nanoseconds()), | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| // A value which may be passed to the which parameter for Getitimer and | ||||
| // Setitimer. | ||||
| type ItimerWhich int | ||||
| 
 | ||||
| // Possible which values for Getitimer and Setitimer. | ||||
| const ( | ||||
| 	ItimerReal    ItimerWhich = ITIMER_REAL | ||||
| 	ItimerVirtual ItimerWhich = ITIMER_VIRTUAL | ||||
| 	ItimerProf    ItimerWhich = ITIMER_PROF | ||||
| ) | ||||
| 
 | ||||
| // Getitimer wraps getitimer(2) to return the current value of the timer | ||||
| // specified by which. | ||||
| func Getitimer(which ItimerWhich) (Itimerval, error) { | ||||
| 	var it Itimerval | ||||
| 	if err := getitimer(int(which), &it); err != nil { | ||||
| 		return Itimerval{}, err | ||||
| 	} | ||||
| 
 | ||||
| 	return it, nil | ||||
| } | ||||
| 
 | ||||
| // Setitimer wraps setitimer(2) to arm or disarm the timer specified by which. | ||||
| // It returns the previous value of the timer. | ||||
| // | ||||
| // If the Itimerval argument is the zero value, the timer will be disarmed. | ||||
| func Setitimer(which ItimerWhich, it Itimerval) (Itimerval, error) { | ||||
| 	var prev Itimerval | ||||
| 	if err := setitimer(int(which), &it, &prev); err != nil { | ||||
| 		return Itimerval{}, err | ||||
| 	} | ||||
| 
 | ||||
| 	return prev, nil | ||||
| } | ||||
| 
 | ||||
| /* | ||||
|  * Unimplemented | ||||
|  */ | ||||
| // AfsSyscall | ||||
| // Alarm | ||||
| // ArchPrctl | ||||
| // Brk | ||||
| // ClockNanosleep | ||||
| @ -2142,7 +2376,6 @@ func Klogset(typ int, arg int) (err error) { | ||||
| // GetMempolicy | ||||
| // GetRobustList | ||||
| // GetThreadArea | ||||
| // Getitimer | ||||
| // Getpmsg | ||||
| // IoCancel | ||||
| // IoDestroy | ||||
| @ -2203,10 +2436,6 @@ func Klogset(typ int, arg int) (err error) { | ||||
| // SetRobustList | ||||
| // SetThreadArea | ||||
| // SetTidAddress | ||||
| // Shmat | ||||
| // Shmctl | ||||
| // Shmdt | ||||
| // Shmget | ||||
| // Sigaltstack | ||||
| // Swapoff | ||||
| // Swapon | ||||
| @ -2224,5 +2453,4 @@ func Klogset(typ int, arg int) (err error) { | ||||
| // Vfork | ||||
| // Vhangup | ||||
| // Vserver | ||||
| // Waitid | ||||
| // _Sysctl | ||||
|  | ||||
							
								
								
									
										62
									
								
								vendor/golang.org/x/sys/unix/syscall_linux_386.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										62
									
								
								vendor/golang.org/x/sys/unix/syscall_linux_386.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -2,9 +2,7 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| // TODO(rsc): Rewrite all nn(SP) references into name+(nn-8)(FP) | ||||
| // so that go vet can check that they are correct. | ||||
| 
 | ||||
| //go:build 386 && linux | ||||
| // +build 386,linux | ||||
| 
 | ||||
| package unix | ||||
| @ -21,36 +19,8 @@ func setTimeval(sec, usec int64) Timeval { | ||||
| 	return Timeval{Sec: int32(sec), Usec: int32(usec)} | ||||
| } | ||||
| 
 | ||||
| //sysnb	pipe(p *[2]_C_int) (err error) | ||||
| 
 | ||||
| func Pipe(p []int) (err error) { | ||||
| 	if len(p) != 2 { | ||||
| 		return EINVAL | ||||
| 	} | ||||
| 	var pp [2]_C_int | ||||
| 	err = pipe(&pp) | ||||
| 	p[0] = int(pp[0]) | ||||
| 	p[1] = int(pp[1]) | ||||
| 	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 | ||||
| } | ||||
| 
 | ||||
| // 64-bit file system and 32-bit uid calls | ||||
| // (386 default is 32-bit file system and 16-bit uid). | ||||
| //sys	dup2(oldfd int, newfd int) (err error) | ||||
| //sysnb	EpollCreate(size int) (fd int, err error) | ||||
| //sys	EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) | ||||
| //sys	Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64_64 | ||||
| //sys	Fchown(fd int, uid int, gid int) (err error) = SYS_FCHOWN32 | ||||
| @ -61,13 +31,12 @@ func Pipe2(p []int, flags int) (err error) { | ||||
| //sysnb	Geteuid() (euid int) = SYS_GETEUID32 | ||||
| //sysnb	Getgid() (gid int) = SYS_GETGID32 | ||||
| //sysnb	Getuid() (uid int) = SYS_GETUID32 | ||||
| //sysnb	InotifyInit() (fd int, err error) | ||||
| //sys	Ioperm(from int, num int, on int) (err error) | ||||
| //sys	Iopl(level int) (err error) | ||||
| //sys	Lchown(path string, uid int, gid int) (err error) = SYS_LCHOWN32 | ||||
| //sys	Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64 | ||||
| //sys	Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 | ||||
| //sys	Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 | ||||
| //sys	pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 | ||||
| //sys	pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 | ||||
| //sys	Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) | ||||
| //sys	sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64 | ||||
| //sys	setfsgid(gid int) (prev int, err error) = SYS_SETFSGID32 | ||||
| @ -101,13 +70,13 @@ type rlimit32 struct { | ||||
| 	Max uint32 | ||||
| } | ||||
| 
 | ||||
| //sysnb getrlimit(resource int, rlim *rlimit32) (err error) = SYS_GETRLIMIT | ||||
| //sysnb	getrlimit(resource int, rlim *rlimit32) (err error) = SYS_GETRLIMIT | ||||
| 
 | ||||
| const rlimInf32 = ^uint32(0) | ||||
| const rlimInf64 = ^uint64(0) | ||||
| 
 | ||||
| func Getrlimit(resource int, rlim *Rlimit) (err error) { | ||||
| 	err = prlimit(0, resource, nil, rlim) | ||||
| 	err = Prlimit(0, resource, nil, rlim) | ||||
| 	if err != ENOSYS { | ||||
| 		return err | ||||
| 	} | ||||
| @ -132,10 +101,10 @@ func Getrlimit(resource int, rlim *Rlimit) (err error) { | ||||
| 	return | ||||
| } | ||||
| 
 | ||||
| //sysnb setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT | ||||
| //sysnb	setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT | ||||
| 
 | ||||
| func Setrlimit(resource int, rlim *Rlimit) (err error) { | ||||
| 	err = prlimit(0, resource, rlim, nil) | ||||
| 	err = Prlimit(0, resource, rlim, nil) | ||||
| 	if err != ENOSYS { | ||||
| 		return err | ||||
| 	} | ||||
| @ -204,14 +173,6 @@ const ( | ||||
| 	_SENDMMSG    = 20 | ||||
| ) | ||||
| 
 | ||||
| func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { | ||||
| 	fd, e := socketcall(_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0) | ||||
| 	if e != 0 { | ||||
| 		err = e | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
| 
 | ||||
| func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { | ||||
| 	fd, e := socketcall(_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) | ||||
| 	if e != 0 { | ||||
| @ -380,11 +341,6 @@ func (cmsg *Cmsghdr) SetLen(length int) { | ||||
| 	cmsg.Len = uint32(length) | ||||
| } | ||||
| 
 | ||||
| //sys	poll(fds *PollFd, nfds int, timeout int) (n int, err error) | ||||
| 
 | ||||
| func Poll(fds []PollFd, timeout int) (n int, err error) { | ||||
| 	if len(fds) == 0 { | ||||
| 		return poll(nil, 0, timeout) | ||||
| 	} | ||||
| 	return poll(&fds[0], len(fds), timeout) | ||||
| func (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) { | ||||
| 	rsa.Service_name_len = uint32(length) | ||||
| } | ||||
|  | ||||
							
								
								
									
										14
									
								
								vendor/golang.org/x/sys/unix/syscall_linux_alarm.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								vendor/golang.org/x/sys/unix/syscall_linux_alarm.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,14 @@ | ||||
| // Copyright 2022 The Go Authors. All rights reserved. | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| //go:build linux && (386 || amd64 || mips || mipsle || mips64 || mipsle || ppc64 || ppc64le || ppc || s390x || sparc64) | ||||
| // +build linux | ||||
| // +build 386 amd64 mips mipsle mips64 mipsle ppc64 ppc64le ppc s390x sparc64 | ||||
| 
 | ||||
| package unix | ||||
| 
 | ||||
| // SYS_ALARM is not defined on arm or riscv, but is available for other GOARCH | ||||
| // values. | ||||
| 
 | ||||
| //sys	Alarm(seconds uint) (remaining uint, err error) | ||||
							
								
								
									
										55
									
								
								vendor/golang.org/x/sys/unix/syscall_linux_amd64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										55
									
								
								vendor/golang.org/x/sys/unix/syscall_linux_amd64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -2,12 +2,11 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| //go:build amd64 && linux | ||||
| // +build amd64,linux | ||||
| 
 | ||||
| package unix | ||||
| 
 | ||||
| //sys	dup2(oldfd int, newfd int) (err error) | ||||
| //sysnb	EpollCreate(size int) (fd int, err error) | ||||
| //sys	EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) | ||||
| //sys	Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 | ||||
| //sys	Fchown(fd int, uid int, gid int) (err error) | ||||
| @ -20,17 +19,6 @@ package unix | ||||
| //sysnb	Getgid() (gid int) | ||||
| //sysnb	Getrlimit(resource int, rlim *Rlimit) (err error) | ||||
| //sysnb	Getuid() (uid int) | ||||
| //sysnb	inotifyInit() (fd int, err error) | ||||
| 
 | ||||
| func InotifyInit() (fd int, err error) { | ||||
| 	// First try inotify_init1, because Android's seccomp policy blocks the latter. | ||||
| 	fd, err = InotifyInit1(0) | ||||
| 	if err == ENOSYS { | ||||
| 		fd, err = inotifyInit() | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
| 
 | ||||
| //sys	Ioperm(from int, num int, on int) (err error) | ||||
| //sys	Iopl(level int) (err error) | ||||
| //sys	Lchown(path string, uid int, gid int) (err error) | ||||
| @ -40,9 +28,10 @@ func Lstat(path string, stat *Stat_t) (err error) { | ||||
| 	return Fstatat(AT_FDCWD, path, stat, AT_SYMLINK_NOFOLLOW) | ||||
| } | ||||
| 
 | ||||
| //sys	MemfdSecret(flags int) (fd int, err error) | ||||
| //sys	Pause() (err error) | ||||
| //sys	Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 | ||||
| //sys	Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 | ||||
| //sys	pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 | ||||
| //sys	pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 | ||||
| //sys	Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) | ||||
| //sys	Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK | ||||
| 
 | ||||
| @ -74,7 +63,6 @@ func Stat(path string, stat *Stat_t) (err error) { | ||||
| //sys	SyncFileRange(fd int, off int64, n int64, flags int) (err error) | ||||
| //sys	Truncate(path string, length int64) (err error) | ||||
| //sys	Ustat(dev int, ubuf *Ustat_t) (err error) | ||||
| //sys	accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) | ||||
| //sys	accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) | ||||
| //sys	bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) | ||||
| //sys	connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) | ||||
| @ -125,32 +113,6 @@ func setTimeval(sec, usec int64) Timeval { | ||||
| 	return Timeval{Sec: sec, Usec: usec} | ||||
| } | ||||
| 
 | ||||
| //sysnb	pipe(p *[2]_C_int) (err error) | ||||
| 
 | ||||
| func Pipe(p []int) (err error) { | ||||
| 	if len(p) != 2 { | ||||
| 		return EINVAL | ||||
| 	} | ||||
| 	var pp [2]_C_int | ||||
| 	err = pipe(&pp) | ||||
| 	p[0] = int(pp[0]) | ||||
| 	p[1] = int(pp[1]) | ||||
| 	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 | ||||
| } | ||||
| 
 | ||||
| func (r *PtraceRegs) PC() uint64 { return r.Rip } | ||||
| 
 | ||||
| func (r *PtraceRegs) SetPC(pc uint64) { r.Rip = pc } | ||||
| @ -171,13 +133,8 @@ func (cmsg *Cmsghdr) SetLen(length int) { | ||||
| 	cmsg.Len = uint64(length) | ||||
| } | ||||
| 
 | ||||
| //sys	poll(fds *PollFd, nfds int, timeout int) (n int, err error) | ||||
| 
 | ||||
| func Poll(fds []PollFd, timeout int) (n int, err error) { | ||||
| 	if len(fds) == 0 { | ||||
| 		return poll(nil, 0, timeout) | ||||
| 	} | ||||
| 	return poll(&fds[0], len(fds), timeout) | ||||
| func (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) { | ||||
| 	rsa.Service_name_len = uint64(length) | ||||
| } | ||||
| 
 | ||||
| //sys	kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) | ||||
|  | ||||
							
								
								
									
										4
									
								
								vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -2,8 +2,8 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| // +build amd64,linux | ||||
| // +build !gccgo | ||||
| //go:build amd64 && linux && gc | ||||
| // +build amd64,linux,gc | ||||
| 
 | ||||
| package unix | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										61
									
								
								vendor/golang.org/x/sys/unix/syscall_linux_arm.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										61
									
								
								vendor/golang.org/x/sys/unix/syscall_linux_arm.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -2,12 +2,12 @@ | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| //go:build arm && linux | ||||
| // +build arm,linux | ||||
| 
 | ||||
| package unix | ||||
| 
 | ||||
| import ( | ||||
| 	"syscall" | ||||
| 	"unsafe" | ||||
| ) | ||||
| 
 | ||||
| @ -19,40 +19,6 @@ func setTimeval(sec, usec int64) Timeval { | ||||
| 	return Timeval{Sec: int32(sec), Usec: int32(usec)} | ||||
| } | ||||
| 
 | ||||
| //sysnb	pipe(p *[2]_C_int) (err error) | ||||
| 
 | ||||
| func Pipe(p []int) (err error) { | ||||
| 	if len(p) != 2 { | ||||
| 		return EINVAL | ||||
| 	} | ||||
| 	var pp [2]_C_int | ||||
| 	// Try pipe2 first for Android O, then try pipe for kernel 2.6.23. | ||||
| 	err = pipe2(&pp, 0) | ||||
| 	if err == ENOSYS { | ||||
| 		err = pipe(&pp) | ||||
| 	} | ||||
| 	p[0] = int(pp[0]) | ||||
| 	p[1] = int(pp[1]) | ||||
| 	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 | ||||
| } | ||||
| 
 | ||||
| // Underlying system call writes to newoffset via pointer. | ||||
| // Implemented in assembly to avoid allocation. | ||||
| func seek(fd int, offset int64, whence int) (newoffset int64, err syscall.Errno) | ||||
| 
 | ||||
| func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { | ||||
| 	newoffset, errno := seek(fd, offset, whence) | ||||
| 	if errno != 0 { | ||||
| @ -61,7 +27,6 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { | ||||
| 	return newoffset, nil | ||||
| } | ||||
| 
 | ||||
| //sys	accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) | ||||
| //sys	accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) | ||||
| //sys	bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) | ||||
| //sys	connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) | ||||
| @ -80,8 +45,6 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { | ||||
| 
 | ||||
| // 64-bit file system and 32-bit uid calls | ||||
| // (16-bit uid calls are not always supported in newer kernels) | ||||
| //sys	dup2(oldfd int, newfd int) (err error) | ||||
| //sysnb	EpollCreate(size int) (fd int, err error) | ||||
| //sys	EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) | ||||
| //sys	Fchown(fd int, uid int, gid int) (err error) = SYS_FCHOWN32 | ||||
| //sys	Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64 | ||||
| @ -90,7 +53,6 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { | ||||
| //sysnb	Geteuid() (euid int) = SYS_GETEUID32 | ||||
| //sysnb	Getgid() (gid int) = SYS_GETGID32 | ||||
| //sysnb	Getuid() (uid int) = SYS_GETUID32 | ||||
| //sysnb	InotifyInit() (fd int, err error) | ||||
| //sys	Lchown(path string, uid int, gid int) (err error) = SYS_LCHOWN32 | ||||
| //sys	Listen(s int, n int) (err error) | ||||
| //sys	Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64 | ||||
| @ -134,8 +96,8 @@ func Utime(path string, buf *Utimbuf) error { | ||||
| 
 | ||||
| //sys	utimes(path string, times *[2]Timeval) (err error) | ||||
| 
 | ||||
| //sys   Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 | ||||
| //sys   Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 | ||||
| //sys	pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 | ||||
| //sys	pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 | ||||
| //sys	Truncate(path string, length int64) (err error) = SYS_TRUNCATE64 | ||||
| //sys	Ftruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64 | ||||
| 
 | ||||
| @ -182,13 +144,13 @@ type rlimit32 struct { | ||||
| 	Max uint32 | ||||
| } | ||||
| 
 | ||||
| //sysnb getrlimit(resource int, rlim *rlimit32) (err error) = SYS_UGETRLIMIT | ||||
| //sysnb	getrlimit(resource int, rlim *rlimit32) (err error) = SYS_UGETRLIMIT | ||||
| 
 | ||||
| const rlimInf32 = ^uint32(0) | ||||
| const rlimInf64 = ^uint64(0) | ||||
| 
 | ||||
| func Getrlimit(resource int, rlim *Rlimit) (err error) { | ||||
| 	err = prlimit(0, resource, nil, rlim) | ||||
| 	err = Prlimit(0, resource, nil, rlim) | ||||
| 	if err != ENOSYS { | ||||
| 		return err | ||||
| 	} | ||||
| @ -213,10 +175,10 @@ func Getrlimit(resource int, rlim *Rlimit) (err error) { | ||||
| 	return | ||||
| } | ||||
| 
 | ||||
| //sysnb setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT | ||||
| //sysnb	setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT | ||||
| 
 | ||||
| func Setrlimit(resource int, rlim *Rlimit) (err error) { | ||||
| 	err = prlimit(0, resource, rlim, nil) | ||||
| 	err = Prlimit(0, resource, rlim, nil) | ||||
| 	if err != ENOSYS { | ||||
| 		return err | ||||
| 	} | ||||
| @ -260,13 +222,8 @@ func (cmsg *Cmsghdr) SetLen(length int) { | ||||
| 	cmsg.Len = uint32(length) | ||||
| } | ||||
| 
 | ||||
| //sys	poll(fds *PollFd, nfds int, timeout int) (n int, err error) | ||||
| 
 | ||||
| func Poll(fds []PollFd, timeout int) (n int, err error) { | ||||
| 	if len(fds) == 0 { | ||||
| 		return poll(nil, 0, timeout) | ||||
| 	} | ||||
| 	return poll(&fds[0], len(fds), timeout) | ||||
| func (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) { | ||||
| 	rsa.Service_name_len = uint32(length) | ||||
| } | ||||
| 
 | ||||
| //sys	armSyncFileRange(fd int, flags int, off int64, n int64) (err error) = SYS_ARM_SYNC_FILE_RANGE | ||||
|  | ||||
Some files were not shown because too many files have changed in this diff Show More
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user