btrfs: depend on kernel UAPI instead of libbtrfs
See containerd/btrfs PR 40 and moby/moby PR 44761. (Thanks to [@]neersighted.) The containerd/btrfs library now requires headers from kernel 4.12 or newer: - https://github.com/torvalds/linux/blob/master/include/uapi/linux/btrfs.h - https://github.com/torvalds/linux/blob/master/include/uapi/linux/btrfs_tree.h These files are licensed under the GPL-2.0 WITH Linux-syscall-note, so it should be compatible with the Apache License 2.0. https://spdx.org/licenses/Linux-syscall-note.html The dependency on the kernel headers only affects users building from source. Users on older kernels may opt to not compile this library (`BUILDTAGS=no_btfs`), or to provide headers from a newer kernel. Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
This commit is contained in:
		
							
								
								
									
										16
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										16
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							| @@ -34,12 +34,6 @@ jobs: | ||||
|         os: [ubuntu-20.04, macos-12, windows-2019] | ||||
|  | ||||
|     steps: | ||||
|       - name: Install dependencies | ||||
|         if: matrix.os == 'ubuntu-20.04' | ||||
|         run: | | ||||
|           sudo apt-get update | ||||
|           sudo apt-get install -y libbtrfs-dev | ||||
|  | ||||
|       - uses: actions/setup-go@v3 | ||||
|         with: | ||||
|           go-version: ${{ env.GO_VERSION }} | ||||
| @@ -165,7 +159,7 @@ jobs: | ||||
|       - run: | | ||||
|           set -e -x | ||||
|  | ||||
|           packages="libbtrfs-dev" | ||||
|           packages="" | ||||
|           platform="${{matrix.goos}}/${{matrix.goarch}}" | ||||
|           if [ -n "${{matrix.goarm}}" ]; then | ||||
|             platform+="/v${{matrix.goarm}}" | ||||
| @@ -214,12 +208,6 @@ jobs: | ||||
|         os: [ubuntu-20.04, macos-12, windows-2019, windows-2022] | ||||
|         go-version: ["1.19.5", "1.18.10"] | ||||
|     steps: | ||||
|       - name: Install dependencies | ||||
|         if: matrix.os == 'ubuntu-20.04' | ||||
|         run: | | ||||
|           sudo apt-get update | ||||
|           sudo apt-get install -y libbtrfs-dev | ||||
|  | ||||
|       - uses: actions/setup-go@v3 | ||||
|         with: | ||||
|           go-version: ${{ matrix.go-version }} | ||||
| @@ -437,7 +425,7 @@ jobs: | ||||
|           RUNC_FLAVOR: ${{ matrix.runc }} | ||||
|         run: | | ||||
|           sudo apt-get update | ||||
|           sudo apt-get install -y gperf libbtrfs-dev | ||||
|           sudo apt-get install -y gperf | ||||
|           script/setup/install-seccomp | ||||
|           script/setup/install-runc | ||||
|           script/setup/install-cni $(grep containernetworking/plugins go.mod | awk '{print $2}') | ||||
|   | ||||
							
								
								
									
										2
									
								
								.github/workflows/codeql.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/codeql.yml
									
									
									
									
										vendored
									
									
								
							| @@ -43,7 +43,7 @@ jobs: | ||||
|         #   languages: go, javascript, csharp, python, cpp, java | ||||
|  | ||||
|       - run: | | ||||
|           sudo apt-get install -y libseccomp-dev libbtrfs-dev | ||||
|           sudo apt-get install -y libseccomp-dev | ||||
|           make | ||||
|  | ||||
|       - name: Perform CodeQL Analysis | ||||
|   | ||||
							
								
								
									
										7
									
								
								.github/workflows/nightly.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								.github/workflows/nightly.yml
									
									
									
									
										vendored
									
									
								
							| @@ -62,12 +62,7 @@ jobs: | ||||
|             libseccomp-dev:arm64 \ | ||||
|             libseccomp-dev:s390x \ | ||||
|             libseccomp-dev:ppc64el \ | ||||
|             libseccomp-dev:riscv64 \ | ||||
|             libbtrfs-dev:amd64 \ | ||||
|             libbtrfs-dev:arm64 \ | ||||
|             libbtrfs-dev:s390x \ | ||||
|             libbtrfs-dev:ppc64el \ | ||||
|             libbtrfs-dev:riscv64 | ||||
|             libseccomp-dev:riscv64 | ||||
|  | ||||
|       - name: Build amd64 | ||||
|         env: | ||||
|   | ||||
							
								
								
									
										1
									
								
								.github/workflows/release/Dockerfile
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.github/workflows/release/Dockerfile
									
									
									
									
										vendored
									
									
								
							| @@ -28,7 +28,6 @@ RUN	apt-get update && \ | ||||
| 	apt-get install -y dpkg-dev git make pkg-config | ||||
| ARG TARGETPLATFORM | ||||
| RUN xx-apt-get install -y libseccomp-dev btrfs-progs gcc | ||||
| RUN if grep -qE 'UBUNTU_CODENAME=(focal|jammy)' /etc/os-release; then xx-apt-get install -y libbtrfs-dev; fi | ||||
| ENV PATH=/usr/local/go/bin:$PATH | ||||
| ENV GOPATH=/go | ||||
| ENV CGO_ENABLED=1 | ||||
|   | ||||
							
								
								
									
										23
									
								
								BUILDING.md
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								BUILDING.md
									
									
									
									
									
								
							| @@ -37,16 +37,16 @@ wget -c https://github.com/protocolbuffers/protobuf/releases/download/v3.11.4/pr | ||||
| sudo unzip protoc-3.11.4-linux-x86_64.zip -d /usr/local | ||||
| ``` | ||||
|  | ||||
| `containerd` uses [Btrfs](https://en.wikipedia.org/wiki/Btrfs) it means that you | ||||
| need to satisfy these dependencies in your system: | ||||
| To enable optional [Btrfs](https://en.wikipedia.org/wiki/Btrfs) snapshotter, you should have the headers from the Linux kernel 4.12 or later. | ||||
| The dependency on the kernel headers only affects users building containerd from source. | ||||
| Users on older kernels may opt to not compile the btrfs support (see `BUILDTAGS=no_btrfs` below), | ||||
| or to provide headers from a newer kernel. | ||||
|  | ||||
| * CentOS 7 / Fedora: `yum install btrfs-progs-devel` | ||||
|   * Note with CentOS 9: [Btrfs has been deprecated](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/storage_administration_guide/ch-btrfs) in RHEL / CentOS 7.4, and removed in RHEL/CentOS 9 . | ||||
|     Please see the [release notes](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/7.4_release_notes/chap-red_hat_enterprise_linux-7.4_release_notes-deprecated_functionality_in_rhel7#idm139789147351408) for additional information on deprecated features. | ||||
| * Debian/Ubuntu: `apt-get install btrfs-progs libbtrfs-dev` | ||||
|   * Debian(before Buster)/Ubuntu(before 19.10): `apt-get install btrfs-tools` | ||||
| * For unsupported [Btrfs](https://en.wikipedia.org/wiki/Btrfs) system: | ||||
|   * Use the `no_btrfs` build tag to build without btrfs support. | ||||
| > **Note** | ||||
| > The dependency on the Linux kernel headers 4.12 was introduced in containerd 1.7.0-beta.4. | ||||
| > | ||||
| > containerd 1.6 has different set of dependencies for enabling btrfs. | ||||
| > containerd 1.6 users should refer to https://github.com/containerd/containerd/blob/release/1.6/BUILDING.md#build-the-development-environment | ||||
|  | ||||
| At this point you are ready to build `containerd` yourself! | ||||
|  | ||||
| @@ -145,9 +145,6 @@ You can build an image from this `Dockerfile`: | ||||
|  | ||||
| ```dockerfile | ||||
| FROM golang | ||||
|  | ||||
| RUN apt-get update && \ | ||||
|     apt-get install -y libbtrfs-dev | ||||
| ``` | ||||
|  | ||||
| Let's suppose that you built an image called `containerd/build`. From the | ||||
| @@ -184,7 +181,7 @@ We can build an image from this `Dockerfile`: | ||||
| FROM golang | ||||
|  | ||||
| RUN apt-get update && \ | ||||
|     apt-get install -y libbtrfs-dev libseccomp-dev | ||||
|     apt-get install -y libseccomp-dev | ||||
| ``` | ||||
|  | ||||
| In our Docker container we will build `runc` build, which includes | ||||
|   | ||||
| @@ -49,7 +49,6 @@ RUN ./install-runc | ||||
|  | ||||
| FROM golang AS build-env | ||||
| RUN apt-get update && apt-get install -y --no-install-recommends \ | ||||
|     libbtrfs-dev \ | ||||
|     btrfs-progs \ | ||||
|     libseccomp-dev \ | ||||
|     xfsprogs \ | ||||
|   | ||||
							
								
								
									
										4
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								go.mod
									
									
									
									
									
								
							| @@ -9,7 +9,7 @@ require ( | ||||
| 	github.com/Microsoft/hcsshim v0.10.0-rc.5 | ||||
| 	github.com/container-orchestrated-devices/container-device-interface v0.5.1 | ||||
| 	github.com/containerd/aufs v1.0.0 | ||||
| 	github.com/containerd/btrfs v1.0.0 | ||||
| 	github.com/containerd/btrfs/v2 v2.0.0 | ||||
| 	github.com/containerd/cgroups/v3 v3.0.0 | ||||
| 	github.com/containerd/console v1.0.3 | ||||
| 	github.com/containerd/continuity v0.3.0 | ||||
| @@ -68,7 +68,7 @@ require ( | ||||
| 	go.opentelemetry.io/otel/sdk v1.12.0 | ||||
| 	go.opentelemetry.io/otel/trace v1.12.0 | ||||
| 	golang.org/x/sync v0.1.0 | ||||
| 	golang.org/x/sys v0.4.0 | ||||
| 	golang.org/x/sys v0.5.0 | ||||
| 	google.golang.org/genproto v0.0.0-20230131230820-1c016267d619 | ||||
| 	google.golang.org/grpc v1.52.3 | ||||
| 	google.golang.org/protobuf v1.28.1 | ||||
|   | ||||
							
								
								
									
										7
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										7
									
								
								go.sum
									
									
									
									
									
								
							| @@ -185,8 +185,9 @@ github.com/containerd/aufs v1.0.0 h1:2oeJiwX5HstO7shSrPZjrohJZLzK36wvpdmzDRkL/LY | ||||
| github.com/containerd/aufs v1.0.0/go.mod h1:kL5kd6KM5TzQjR79jljyi4olc1Vrx6XBlcyj3gNv2PU= | ||||
| github.com/containerd/btrfs v0.0.0-20201111183144-404b9149801e/go.mod h1:jg2QkJcsabfHugurUvvPhS3E08Oxiuh5W/g1ybB4e0E= | ||||
| github.com/containerd/btrfs v0.0.0-20210316141732-918d888fb676/go.mod h1:zMcX3qkXTAi9GI50+0HOeuV8LU2ryCE/V2vG/ZBiTss= | ||||
| github.com/containerd/btrfs v1.0.0 h1:osn1exbzdub9L5SouXO5swW4ea/xVdJZ3wokxN5GrnA= | ||||
| github.com/containerd/btrfs v1.0.0/go.mod h1:zMcX3qkXTAi9GI50+0HOeuV8LU2ryCE/V2vG/ZBiTss= | ||||
| github.com/containerd/btrfs/v2 v2.0.0 h1:FN4wsx7KQrYoLXN7uLP0vBV4oVWHOIKDRQ1G2Z0oL5M= | ||||
| github.com/containerd/btrfs/v2 v2.0.0/go.mod h1:swkD/7j9HApWpzl8OHfrHNxppPd9l44DFZdF94BUj9k= | ||||
| github.com/containerd/cgroups v0.0.0-20190717030353-c4b9ac5c7601/go.mod h1:X9rLEHIqSf/wfK8NsPqxJmeZgW4pcfzdXITDrUSJ6uI= | ||||
| github.com/containerd/cgroups v0.0.0-20190919134610-bf292b21730f/go.mod h1:OApqhQ4XNSNC13gXIwDjhOQxjWa/NxkwZXJ1EvqT0ko= | ||||
| github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59/go.mod h1:pA0z1pT8KYB3TCXK/ocprsh7MAkoW8bZVzPdih9snmM= | ||||
| @@ -1290,8 +1291,8 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc | ||||
| golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||
| golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||
| golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||
| golang.org/x/sys v0.4.0 h1:Zr2JFtRQNX3BCZ8YtxRE9hNJYC8J6I1MVbMg6owUp18= | ||||
| golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||
| golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= | ||||
| golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||
| golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= | ||||
| golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= | ||||
| golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= | ||||
|   | ||||
| @@ -18,7 +18,7 @@ require ( | ||||
| 	github.com/stretchr/testify v1.8.1 | ||||
| 	go.opentelemetry.io/otel v1.12.0 | ||||
| 	go.opentelemetry.io/otel/sdk v1.12.0 | ||||
| 	golang.org/x/sys v0.4.0 | ||||
| 	golang.org/x/sys v0.5.0 | ||||
| ) | ||||
|  | ||||
| require ( | ||||
|   | ||||
| @@ -495,7 +495,7 @@ github.com/cockroachdb/errors v1.2.4/go.mod h1:rQD95gz6FARkaKkQXUksEje/d9a6wBJoC | ||||
| github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f/go.mod h1:i/u985jwjWRlyHXQbwatDASoW0RMlZ/3i9yJHE2xLkI= | ||||
| github.com/container-orchestrated-devices/container-device-interface v0.5.1/go.mod h1:ZToWfSyUH5l9Rk7/bjkUUkNLz4b1mE+CVUVafuikDPY= | ||||
| github.com/containerd/aufs v1.0.0/go.mod h1:kL5kd6KM5TzQjR79jljyi4olc1Vrx6XBlcyj3gNv2PU= | ||||
| github.com/containerd/btrfs v1.0.0/go.mod h1:zMcX3qkXTAi9GI50+0HOeuV8LU2ryCE/V2vG/ZBiTss= | ||||
| github.com/containerd/btrfs/v2 v2.0.0/go.mod h1:swkD/7j9HApWpzl8OHfrHNxppPd9l44DFZdF94BUj9k= | ||||
| github.com/containerd/cgroups v0.0.0-20200824123100-0b889c03f102/go.mod h1:s5q4SojHctfxANBDvMeIaIovkq29IP48TKAxnhYRxvo= | ||||
| github.com/containerd/cgroups v1.0.1/go.mod h1:0SJrPIenamHDcZhEcJMNBB85rHcUsw4f25ZfBiPYRkU= | ||||
| github.com/containerd/cgroups v1.0.3/go.mod h1:/ofk34relqNjSGyqPrmEULrO4Sc8LJhvJmWbUCUKqj8= | ||||
| @@ -1537,8 +1537,9 @@ golang.org/x/sys v0.0.0-20220919091848-fb04ddd9f9c8/go.mod h1:oPkhp1MJrh7nUepCBc | ||||
| golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||
| golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||
| golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||
| golang.org/x/sys v0.4.0 h1:Zr2JFtRQNX3BCZ8YtxRE9hNJYC8J6I1MVbMg6owUp18= | ||||
| golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||
| golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= | ||||
| golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||
| golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= | ||||
| golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= | ||||
| golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= | ||||
|   | ||||
| @@ -25,7 +25,7 @@ import ( | ||||
| 	"path/filepath" | ||||
| 	"strings" | ||||
|  | ||||
| 	"github.com/containerd/btrfs" | ||||
| 	"github.com/containerd/btrfs/v2" | ||||
| 	"github.com/containerd/continuity/fs" | ||||
|  | ||||
| 	"github.com/containerd/containerd/log" | ||||
|   | ||||
| @@ -11,6 +11,21 @@ Native Go bindings for btrfs. | ||||
| These are in the early stages. We will try to maintain stability, but please | ||||
| vendor if you are relying on these directly. | ||||
| 
 | ||||
| # Dependencies | ||||
| 
 | ||||
| ## v2.x | ||||
| 
 | ||||
| Headers from kernel 4.12 or newer. | ||||
| The package name is `linux-libc-dev` on Debian/Ubuntu, `kernel-headers` on Fedora and RHEL-like distros. | ||||
| 
 | ||||
| The headers are only required on compilation time, not on run time. | ||||
| 
 | ||||
| ## v1.x | ||||
| 
 | ||||
| libbtrfs headers. | ||||
| The package name is `libbtrfs-dev` on Debian/Ubuntu, `btrfs-progs-devel` on Fedora and CentOS 7. | ||||
| The package is not available for Rocky Linux and AlmaLinux. | ||||
| 
 | ||||
| # Contribute | ||||
| 
 | ||||
| This package may not cover all the use cases for btrfs. If something you need | ||||
| @@ -14,20 +14,16 @@ | ||||
|    limitations under the License. | ||||
| */ | ||||
| 
 | ||||
| #include <stddef.h> | ||||
| #include <linux/magic.h> | ||||
| #include <btrfs/ioctl.h> | ||||
| #include <btrfs/ctree.h> | ||||
| 
 | ||||
| #include <string.h> | ||||
| #include "btrfs.h" | ||||
| 
 | ||||
| void unpack_root_item(struct gosafe_btrfs_root_item* dst, struct btrfs_root_item* src) { | ||||
| 	memcpy(dst->uuid, src->uuid, BTRFS_UUID_SIZE); | ||||
| 	memcpy(dst->parent_uuid, src->parent_uuid, BTRFS_UUID_SIZE); | ||||
| 	memcpy(dst->received_uuid, src->received_uuid, BTRFS_UUID_SIZE); | ||||
| 	dst->gen = btrfs_root_generation(src); | ||||
| 	dst->ogen = btrfs_root_otransid(src); | ||||
| 	dst->flags = btrfs_root_flags(src); | ||||
| 	dst->generation = src->generation; | ||||
| 	dst->otransid = src->otransid; | ||||
| 	dst->flags = src->flags; | ||||
| } | ||||
| 
 | ||||
| /* unpack_root_ref(struct gosafe_btrfs_root_ref* dst, struct btrfs_root_ref* src) { */ | ||||
| @@ -17,8 +17,7 @@ | ||||
| package btrfs | ||||
| 
 | ||||
| /* | ||||
| #include <stddef.h> | ||||
| #include <btrfs/ioctl.h> | ||||
| #include <linux/magic.h> | ||||
| #include "btrfs.h" | ||||
| 
 | ||||
| static char* get_name_btrfs_ioctl_vol_args_v2(struct btrfs_ioctl_vol_args_v2* btrfs_struct) { | ||||
| @@ -28,13 +27,13 @@ static char* get_name_btrfs_ioctl_vol_args_v2(struct btrfs_ioctl_vol_args_v2* bt | ||||
| import "C" | ||||
| 
 | ||||
| import ( | ||||
| 	"errors" | ||||
| 	"fmt" | ||||
| 	"os" | ||||
| 	"path/filepath" | ||||
| 	"sort" | ||||
| 	"syscall" | ||||
| 	"unsafe" | ||||
| 
 | ||||
| 	"github.com/pkg/errors" | ||||
| ) | ||||
| 
 | ||||
| // maxByteSliceSize is the smallest size that Go supports on various platforms. | ||||
| @@ -99,7 +98,7 @@ func SubvolInfo(path string) (info Info, err error) { | ||||
| 		return *info, nil | ||||
| 	} | ||||
| 
 | ||||
| 	return info, errors.Errorf("%q not found", path) | ||||
| 	return info, fmt.Errorf("%q not found", path) | ||||
| } | ||||
| 
 | ||||
| func subvolMap(path string) (map[uint64]*Info, error) { | ||||
| @@ -154,13 +153,13 @@ func subvolMap(path string) (map[uint64]*Info, error) { | ||||
| 				// get an entry of the objectid, with name, but the parent is | ||||
| 				// the offset. | ||||
| 
 | ||||
| 				nname := C.btrfs_stack_root_ref_name_len(&rr) | ||||
| 				nname := le16ToNative(rr.name_len) | ||||
| 				name := string(buf[C.sizeof_struct_btrfs_root_ref : C.sizeof_struct_btrfs_root_ref+uintptr(nname)]) | ||||
| 
 | ||||
| 				info.ID = uint64(sh.objectid) | ||||
| 				info.ParentID = uint64(sh.offset) | ||||
| 				info.Name = name | ||||
| 				info.DirID = uint64(C.btrfs_stack_root_ref_dirid(&rr)) | ||||
| 				info.DirID = le64ToNative(rr.dirid) | ||||
| 
 | ||||
| 				subvolsByID[uint64(sh.objectid)] = info | ||||
| 			} else if sh._type == C.BTRFS_ROOT_ITEM_KEY && | ||||
| @@ -185,8 +184,8 @@ func subvolMap(path string) (map[uint64]*Info, error) { | ||||
| 				info.ParentUUID = uuidString(&gri.parent_uuid) | ||||
| 				info.ReceivedUUID = uuidString(&gri.received_uuid) | ||||
| 
 | ||||
| 				info.Generation = uint64(gri.gen) | ||||
| 				info.OriginalGeneration = uint64(gri.ogen) | ||||
| 				info.Generation = le64ToNative(gri.generation) | ||||
| 				info.OriginalGeneration = le64ToNative(gri.otransid) | ||||
| 
 | ||||
| 				subvolsByID[uint64(sh.objectid)] = info | ||||
| 			} | ||||
| @@ -273,13 +272,13 @@ func SubvolCreate(path string) error { | ||||
| 	args.fd = C.__s64(fp.Fd()) | ||||
| 
 | ||||
| 	if len(name) > C.BTRFS_PATH_NAME_MAX { | ||||
| 		return errors.Errorf("%q too long for subvolume", name) | ||||
| 		return fmt.Errorf("%q too long for subvolume", name) | ||||
| 	} | ||||
| 	nameptr := (*[maxByteSliceSize]byte)(unsafe.Pointer(&args.name[0]))[:C.BTRFS_PATH_NAME_MAX:C.BTRFS_PATH_NAME_MAX] | ||||
| 	copy(nameptr[:C.BTRFS_PATH_NAME_MAX], []byte(name)) | ||||
| 
 | ||||
| 	if err := ioctl(fp.Fd(), C.BTRFS_IOC_SUBVOL_CREATE, uintptr(unsafe.Pointer(&args))); err != nil { | ||||
| 		return errors.Wrap(err, "btrfs subvolume create failed") | ||||
| 		return fmt.Errorf("btrfs subvolume create failed: %w", err) | ||||
| 	} | ||||
| 
 | ||||
| 	return nil | ||||
| @@ -292,13 +291,13 @@ func SubvolSnapshot(dst, src string, readonly bool) error { | ||||
| 
 | ||||
| 	dstfp, err := openSubvolDir(dstdir) | ||||
| 	if err != nil { | ||||
| 		return errors.Wrapf(err, "opening snapshot destination subvolume failed") | ||||
| 		return fmt.Errorf("opening snapshot destination subvolume failed: %w", err) | ||||
| 	} | ||||
| 	defer dstfp.Close() | ||||
| 
 | ||||
| 	srcfp, err := openSubvolDir(src) | ||||
| 	if err != nil { | ||||
| 		return errors.Wrapf(err, "opening snapshot source subvolume failed") | ||||
| 		return fmt.Errorf("opening snapshot source subvolume failed: %w", err) | ||||
| 	} | ||||
| 	defer srcfp.Close() | ||||
| 
 | ||||
| @@ -308,7 +307,7 @@ func SubvolSnapshot(dst, src string, readonly bool) error { | ||||
| 	name := C.get_name_btrfs_ioctl_vol_args_v2(&args) | ||||
| 
 | ||||
| 	if len(dstname) > C.BTRFS_SUBVOL_NAME_MAX { | ||||
| 		return errors.Errorf("%q too long for subvolume", dstname) | ||||
| 		return fmt.Errorf("%q too long for subvolume", dstname) | ||||
| 	} | ||||
| 
 | ||||
| 	nameptr := (*[maxByteSliceSize]byte)(unsafe.Pointer(name))[:C.BTRFS_SUBVOL_NAME_MAX:C.BTRFS_SUBVOL_NAME_MAX] | ||||
| @@ -319,7 +318,7 @@ func SubvolSnapshot(dst, src string, readonly bool) error { | ||||
| 	} | ||||
| 
 | ||||
| 	if err := ioctl(dstfp.Fd(), C.BTRFS_IOC_SNAP_CREATE_V2, uintptr(unsafe.Pointer(&args))); err != nil { | ||||
| 		return errors.Wrapf(err, "snapshot create failed") | ||||
| 		return fmt.Errorf("snapshot create failed: %w", err) | ||||
| 	} | ||||
| 
 | ||||
| 	return nil | ||||
| @@ -330,7 +329,7 @@ func SubvolDelete(path string) error { | ||||
| 	dir, name := filepath.Split(path) | ||||
| 	fp, err := openSubvolDir(dir) | ||||
| 	if err != nil { | ||||
| 		return errors.Wrapf(err, "failed opening %v", path) | ||||
| 		return fmt.Errorf("failed opening %v: %w", path, err) | ||||
| 	} | ||||
| 	defer fp.Close() | ||||
| 
 | ||||
| @@ -341,7 +340,7 @@ func SubvolDelete(path string) error { | ||||
| 				return nil | ||||
| 			} | ||||
| 
 | ||||
| 			return errors.Wrapf(err, "failed walking subvolume %v", p) | ||||
| 			return fmt.Errorf("failed walking subvolume %v: %w", p, err) | ||||
| 		} | ||||
| 
 | ||||
| 		if !fi.IsDir() { | ||||
| @@ -357,7 +356,7 @@ func SubvolDelete(path string) error { | ||||
| 		} | ||||
| 
 | ||||
| 		if err := SubvolDelete(p); err != nil { | ||||
| 			return errors.Wrapf(err, "recursive delete of %v failed", p) | ||||
| 			return fmt.Errorf("recursive delete of %v failed: %w", p, err) | ||||
| 		} | ||||
| 
 | ||||
| 		return filepath.SkipDir // children get walked by call above. | ||||
| @@ -367,14 +366,14 @@ func SubvolDelete(path string) error { | ||||
| 
 | ||||
| 	var args C.struct_btrfs_ioctl_vol_args | ||||
| 	if len(name) > C.BTRFS_SUBVOL_NAME_MAX { | ||||
| 		return errors.Errorf("%q too long for subvolume", name) | ||||
| 		return fmt.Errorf("%q too long for subvolume", name) | ||||
| 	} | ||||
| 
 | ||||
| 	nameptr := (*[maxByteSliceSize]byte)(unsafe.Pointer(&args.name[0]))[:C.BTRFS_SUBVOL_NAME_MAX:C.BTRFS_SUBVOL_NAME_MAX] | ||||
| 	copy(nameptr[:C.BTRFS_SUBVOL_NAME_MAX], []byte(name)) | ||||
| 
 | ||||
| 	if err := ioctl(fp.Fd(), C.BTRFS_IOC_SNAP_DESTROY, uintptr(unsafe.Pointer(&args))); err != nil { | ||||
| 		return errors.Wrapf(err, "failed removing subvolume %v", path) | ||||
| 		return fmt.Errorf("failed removing subvolume %v: %w", path, err) | ||||
| 	} | ||||
| 
 | ||||
| 	return nil | ||||
| @@ -383,7 +382,7 @@ func SubvolDelete(path string) error { | ||||
| func openSubvolDir(path string) (*os.File, error) { | ||||
| 	fp, err := os.Open(path) | ||||
| 	if err != nil { | ||||
| 		return nil, errors.Wrapf(err, "opening %v as subvolume failed", path) | ||||
| 		return nil, fmt.Errorf("opening %v as subvolume failed: %w", path, err) | ||||
| 	} | ||||
| 
 | ||||
| 	return fp, nil | ||||
| @@ -391,7 +390,7 @@ func openSubvolDir(path string) (*os.File, error) { | ||||
| 
 | ||||
| func isStatfsSubvol(statfs *syscall.Statfs_t) error { | ||||
| 	if int64(statfs.Type) != int64(C.BTRFS_SUPER_MAGIC) { | ||||
| 		return errors.Errorf("not a btrfs filesystem") | ||||
| 		return fmt.Errorf("not a btrfs filesystem") | ||||
| 	} | ||||
| 
 | ||||
| 	return nil | ||||
| @@ -399,13 +398,13 @@ func isStatfsSubvol(statfs *syscall.Statfs_t) error { | ||||
| 
 | ||||
| func isFileInfoSubvol(fi os.FileInfo) error { | ||||
| 	if !fi.IsDir() { | ||||
| 		errors.Errorf("must be a directory") | ||||
| 		return errors.New("must be a directory") | ||||
| 	} | ||||
| 
 | ||||
| 	stat := fi.Sys().(*syscall.Stat_t) | ||||
| 
 | ||||
| 	if stat.Ino != C.BTRFS_FIRST_FREE_OBJECTID { | ||||
| 		return errors.Errorf("incorrect inode type") | ||||
| 		return fmt.Errorf("incorrect inode type") | ||||
| 	} | ||||
| 
 | ||||
| 	return nil | ||||
| @@ -14,23 +14,25 @@ | ||||
|    limitations under the License. | ||||
| */ | ||||
| 
 | ||||
| #include <stddef.h> | ||||
| #include <linux/magic.h> | ||||
| #include <btrfs/ioctl.h> | ||||
| #include <btrfs/ctree.h> | ||||
| #include <linux/version.h> | ||||
| #if LINUX_VERSION_CODE < KERNEL_VERSION(4,12,0) | ||||
| #error "Headers from kernel >= 4.12 are required on compilation time (not on run time)" | ||||
| #endif | ||||
| #include <linux/btrfs.h> | ||||
| #include <linux/btrfs_tree.h> | ||||
| 
 | ||||
| // unfortunately, we need to define "alignment safe" C structs to populate for
 | ||||
| // packed structs that aren't handled by cgo. Fields will be added here, as
 | ||||
| // needed.
 | ||||
| 
 | ||||
| struct gosafe_btrfs_root_item { | ||||
| 	u8 uuid[BTRFS_UUID_SIZE]; | ||||
| 	u8 parent_uuid[BTRFS_UUID_SIZE]; | ||||
| 	u8 received_uuid[BTRFS_UUID_SIZE]; | ||||
| 	__u8 uuid[BTRFS_UUID_SIZE]; | ||||
| 	__u8 parent_uuid[BTRFS_UUID_SIZE]; | ||||
| 	__u8 received_uuid[BTRFS_UUID_SIZE]; | ||||
| 
 | ||||
| 	u64 gen; | ||||
| 	u64 ogen; | ||||
| 	u64 flags; | ||||
| 	__le64 generation; | ||||
| 	__le64 otransid; | ||||
| 	__le64 flags; | ||||
| }; | ||||
| 
 | ||||
| void unpack_root_item(struct gosafe_btrfs_root_item* dst, struct btrfs_root_item* src); | ||||
| @@ -17,21 +17,20 @@ | ||||
| package btrfs | ||||
| 
 | ||||
| /* | ||||
| #include <stddef.h> | ||||
| #include <btrfs/ioctl.h> | ||||
| #include <btrfs/ctree.h> | ||||
| #include "btrfs.h" | ||||
| */ | ||||
| import "C" | ||||
| 
 | ||||
| import ( | ||||
| 	"bufio" | ||||
| 	"bytes" | ||||
| 	"encoding/binary" | ||||
| 	"fmt" | ||||
| 	"os" | ||||
| 	"strings" | ||||
| 	"unsafe" | ||||
| 
 | ||||
| 	"github.com/pkg/errors" | ||||
| 	"golang.org/x/sys/cpu" | ||||
| ) | ||||
| 
 | ||||
| func subvolID(fd uintptr) (uint64, error) { | ||||
| @@ -50,7 +49,7 @@ var ( | ||||
| 	zeros     = zeroArray[:] | ||||
| ) | ||||
| 
 | ||||
| func uuidString(uuid *[C.BTRFS_UUID_SIZE]C.u8) string { | ||||
| func uuidString(uuid *[C.BTRFS_UUID_SIZE]C.__u8) string { | ||||
| 	b := (*[maxByteSliceSize]byte)(unsafe.Pointer(uuid))[:C.BTRFS_UUID_SIZE] | ||||
| 
 | ||||
| 	if bytes.Equal(b, zeros) { | ||||
| @@ -60,6 +59,24 @@ func uuidString(uuid *[C.BTRFS_UUID_SIZE]C.u8) string { | ||||
| 	return fmt.Sprintf("%x-%x-%x-%x-%x", b[:4], b[4:4+2], b[6:6+2], b[8:8+2], b[10:16]) | ||||
| } | ||||
| 
 | ||||
| func le16ToNative(le16 C.__le16) uint16 { | ||||
| 	if cpu.IsBigEndian { | ||||
| 		b := make([]byte, 2) | ||||
| 		binary.LittleEndian.PutUint16(b, uint16(le16)) | ||||
| 		return binary.BigEndian.Uint16(b) | ||||
| 	} | ||||
| 	return uint16(le16) | ||||
| } | ||||
| 
 | ||||
| func le64ToNative(le64 C.__le64) uint64 { | ||||
| 	if cpu.IsBigEndian { | ||||
| 		b := make([]byte, 8) | ||||
| 		binary.LittleEndian.PutUint64(b, uint64(le64)) | ||||
| 		return binary.BigEndian.Uint64(b) | ||||
| 	} | ||||
| 	return uint64(le64) | ||||
| } | ||||
| 
 | ||||
| func findMountPoint(path string) (string, error) { | ||||
| 	fp, err := os.Open("/proc/self/mounts") | ||||
| 	if err != nil { | ||||
| @@ -95,7 +112,7 @@ func findMountPoint(path string) (string, error) { | ||||
| 	} | ||||
| 
 | ||||
| 	if mount == "" { | ||||
| 		return "", errors.Errorf("mount point of %v not found", path) | ||||
| 		return "", fmt.Errorf("mount point of %v not found", path) | ||||
| 	} | ||||
| 
 | ||||
| 	return mount, nil | ||||
							
								
								
									
										18
									
								
								vendor/golang.org/x/sys/cpu/asm_aix_ppc64.s
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								vendor/golang.org/x/sys/cpu/asm_aix_ppc64.s
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | ||||
| // 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. | ||||
|  | ||||
| //go:build gc | ||||
| // +build gc | ||||
|  | ||||
| #include "textflag.h" | ||||
|  | ||||
| // | ||||
| // System calls for ppc64, AIX are implemented in runtime/syscall_aix.go | ||||
| // | ||||
|  | ||||
| TEXT ·syscall6(SB),NOSPLIT,$0-88 | ||||
| 	JMP	syscall·syscall6(SB) | ||||
|  | ||||
| TEXT ·rawSyscall6(SB),NOSPLIT,$0-88 | ||||
| 	JMP	syscall·rawSyscall6(SB) | ||||
							
								
								
									
										66
									
								
								vendor/golang.org/x/sys/cpu/byteorder.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								vendor/golang.org/x/sys/cpu/byteorder.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,66 @@ | ||||
| // 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. | ||||
|  | ||||
| package cpu | ||||
|  | ||||
| import ( | ||||
| 	"runtime" | ||||
| ) | ||||
|  | ||||
| // byteOrder is a subset of encoding/binary.ByteOrder. | ||||
| type byteOrder interface { | ||||
| 	Uint32([]byte) uint32 | ||||
| 	Uint64([]byte) uint64 | ||||
| } | ||||
|  | ||||
| type littleEndian struct{} | ||||
| type bigEndian struct{} | ||||
|  | ||||
| func (littleEndian) Uint32(b []byte) uint32 { | ||||
| 	_ = b[3] // bounds check hint to compiler; see golang.org/issue/14808 | ||||
| 	return uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24 | ||||
| } | ||||
|  | ||||
| func (littleEndian) Uint64(b []byte) uint64 { | ||||
| 	_ = b[7] // bounds check hint to compiler; see golang.org/issue/14808 | ||||
| 	return uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | | ||||
| 		uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56 | ||||
| } | ||||
|  | ||||
| func (bigEndian) Uint32(b []byte) uint32 { | ||||
| 	_ = b[3] // bounds check hint to compiler; see golang.org/issue/14808 | ||||
| 	return uint32(b[3]) | uint32(b[2])<<8 | uint32(b[1])<<16 | uint32(b[0])<<24 | ||||
| } | ||||
|  | ||||
| func (bigEndian) Uint64(b []byte) uint64 { | ||||
| 	_ = b[7] // bounds check hint to compiler; see golang.org/issue/14808 | ||||
| 	return uint64(b[7]) | uint64(b[6])<<8 | uint64(b[5])<<16 | uint64(b[4])<<24 | | ||||
| 		uint64(b[3])<<32 | uint64(b[2])<<40 | uint64(b[1])<<48 | uint64(b[0])<<56 | ||||
| } | ||||
|  | ||||
| // hostByteOrder returns littleEndian on little-endian machines and | ||||
| // bigEndian on big-endian machines. | ||||
| func hostByteOrder() byteOrder { | ||||
| 	switch runtime.GOARCH { | ||||
| 	case "386", "amd64", "amd64p32", | ||||
| 		"alpha", | ||||
| 		"arm", "arm64", | ||||
| 		"loong64", | ||||
| 		"mipsle", "mips64le", "mips64p32le", | ||||
| 		"nios2", | ||||
| 		"ppc64le", | ||||
| 		"riscv", "riscv64", | ||||
| 		"sh": | ||||
| 		return littleEndian{} | ||||
| 	case "armbe", "arm64be", | ||||
| 		"m68k", | ||||
| 		"mips", "mips64", "mips64p32", | ||||
| 		"ppc", "ppc64", | ||||
| 		"s390", "s390x", | ||||
| 		"shbe", | ||||
| 		"sparc", "sparc64": | ||||
| 		return bigEndian{} | ||||
| 	} | ||||
| 	panic("unknown architecture") | ||||
| } | ||||
							
								
								
									
										287
									
								
								vendor/golang.org/x/sys/cpu/cpu.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										287
									
								
								vendor/golang.org/x/sys/cpu/cpu.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,287 @@ | ||||
| // 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. | ||||
|  | ||||
| // Package cpu implements processor feature detection for | ||||
| // various CPU architectures. | ||||
| package cpu | ||||
|  | ||||
| import ( | ||||
| 	"os" | ||||
| 	"strings" | ||||
| ) | ||||
|  | ||||
| // Initialized reports whether the CPU features were initialized. | ||||
| // | ||||
| // For some GOOS/GOARCH combinations initialization of the CPU features depends | ||||
| // on reading an operating specific file, e.g. /proc/self/auxv on linux/arm | ||||
| // Initialized will report false if reading the file fails. | ||||
| var Initialized bool | ||||
|  | ||||
| // CacheLinePad is used to pad structs to avoid false sharing. | ||||
| type CacheLinePad struct{ _ [cacheLineSize]byte } | ||||
|  | ||||
| // X86 contains the supported CPU features of the | ||||
| // current X86/AMD64 platform. If the current platform | ||||
| // is not X86/AMD64 then all feature flags are false. | ||||
| // | ||||
| // X86 is padded to avoid false sharing. Further the HasAVX | ||||
| // and HasAVX2 are only set if the OS supports XMM and YMM | ||||
| // registers in addition to the CPUID feature bit being set. | ||||
| var X86 struct { | ||||
| 	_                   CacheLinePad | ||||
| 	HasAES              bool // AES hardware implementation (AES NI) | ||||
| 	HasADX              bool // Multi-precision add-carry instruction extensions | ||||
| 	HasAVX              bool // Advanced vector extension | ||||
| 	HasAVX2             bool // Advanced vector extension 2 | ||||
| 	HasAVX512           bool // Advanced vector extension 512 | ||||
| 	HasAVX512F          bool // Advanced vector extension 512 Foundation Instructions | ||||
| 	HasAVX512CD         bool // Advanced vector extension 512 Conflict Detection Instructions | ||||
| 	HasAVX512ER         bool // Advanced vector extension 512 Exponential and Reciprocal Instructions | ||||
| 	HasAVX512PF         bool // Advanced vector extension 512 Prefetch Instructions Instructions | ||||
| 	HasAVX512VL         bool // Advanced vector extension 512 Vector Length Extensions | ||||
| 	HasAVX512BW         bool // Advanced vector extension 512 Byte and Word Instructions | ||||
| 	HasAVX512DQ         bool // Advanced vector extension 512 Doubleword and Quadword Instructions | ||||
| 	HasAVX512IFMA       bool // Advanced vector extension 512 Integer Fused Multiply Add | ||||
| 	HasAVX512VBMI       bool // Advanced vector extension 512 Vector Byte Manipulation Instructions | ||||
| 	HasAVX5124VNNIW     bool // Advanced vector extension 512 Vector Neural Network Instructions Word variable precision | ||||
| 	HasAVX5124FMAPS     bool // Advanced vector extension 512 Fused Multiply Accumulation Packed Single precision | ||||
| 	HasAVX512VPOPCNTDQ  bool // Advanced vector extension 512 Double and quad word population count instructions | ||||
| 	HasAVX512VPCLMULQDQ bool // Advanced vector extension 512 Vector carry-less multiply operations | ||||
| 	HasAVX512VNNI       bool // Advanced vector extension 512 Vector Neural Network Instructions | ||||
| 	HasAVX512GFNI       bool // Advanced vector extension 512 Galois field New Instructions | ||||
| 	HasAVX512VAES       bool // Advanced vector extension 512 Vector AES instructions | ||||
| 	HasAVX512VBMI2      bool // Advanced vector extension 512 Vector Byte Manipulation Instructions 2 | ||||
| 	HasAVX512BITALG     bool // Advanced vector extension 512 Bit Algorithms | ||||
| 	HasAVX512BF16       bool // Advanced vector extension 512 BFloat16 Instructions | ||||
| 	HasBMI1             bool // Bit manipulation instruction set 1 | ||||
| 	HasBMI2             bool // Bit manipulation instruction set 2 | ||||
| 	HasCX16             bool // Compare and exchange 16 Bytes | ||||
| 	HasERMS             bool // Enhanced REP for MOVSB and STOSB | ||||
| 	HasFMA              bool // Fused-multiply-add instructions | ||||
| 	HasOSXSAVE          bool // OS supports XSAVE/XRESTOR for saving/restoring XMM registers. | ||||
| 	HasPCLMULQDQ        bool // PCLMULQDQ instruction - most often used for AES-GCM | ||||
| 	HasPOPCNT           bool // Hamming weight instruction POPCNT. | ||||
| 	HasRDRAND           bool // RDRAND instruction (on-chip random number generator) | ||||
| 	HasRDSEED           bool // RDSEED instruction (on-chip random number generator) | ||||
| 	HasSSE2             bool // Streaming SIMD extension 2 (always available on amd64) | ||||
| 	HasSSE3             bool // Streaming SIMD extension 3 | ||||
| 	HasSSSE3            bool // Supplemental streaming SIMD extension 3 | ||||
| 	HasSSE41            bool // Streaming SIMD extension 4 and 4.1 | ||||
| 	HasSSE42            bool // Streaming SIMD extension 4 and 4.2 | ||||
| 	_                   CacheLinePad | ||||
| } | ||||
|  | ||||
| // ARM64 contains the supported CPU features of the | ||||
| // current ARMv8(aarch64) platform. If the current platform | ||||
| // is not arm64 then all feature flags are false. | ||||
| var ARM64 struct { | ||||
| 	_           CacheLinePad | ||||
| 	HasFP       bool // Floating-point instruction set (always available) | ||||
| 	HasASIMD    bool // Advanced SIMD (always available) | ||||
| 	HasEVTSTRM  bool // Event stream support | ||||
| 	HasAES      bool // AES hardware implementation | ||||
| 	HasPMULL    bool // Polynomial multiplication instruction set | ||||
| 	HasSHA1     bool // SHA1 hardware implementation | ||||
| 	HasSHA2     bool // SHA2 hardware implementation | ||||
| 	HasCRC32    bool // CRC32 hardware implementation | ||||
| 	HasATOMICS  bool // Atomic memory operation instruction set | ||||
| 	HasFPHP     bool // Half precision floating-point instruction set | ||||
| 	HasASIMDHP  bool // Advanced SIMD half precision instruction set | ||||
| 	HasCPUID    bool // CPUID identification scheme registers | ||||
| 	HasASIMDRDM bool // Rounding double multiply add/subtract instruction set | ||||
| 	HasJSCVT    bool // Javascript conversion from floating-point to integer | ||||
| 	HasFCMA     bool // Floating-point multiplication and addition of complex numbers | ||||
| 	HasLRCPC    bool // Release Consistent processor consistent support | ||||
| 	HasDCPOP    bool // Persistent memory support | ||||
| 	HasSHA3     bool // SHA3 hardware implementation | ||||
| 	HasSM3      bool // SM3 hardware implementation | ||||
| 	HasSM4      bool // SM4 hardware implementation | ||||
| 	HasASIMDDP  bool // Advanced SIMD double precision instruction set | ||||
| 	HasSHA512   bool // SHA512 hardware implementation | ||||
| 	HasSVE      bool // Scalable Vector Extensions | ||||
| 	HasASIMDFHM bool // Advanced SIMD multiplication FP16 to FP32 | ||||
| 	_           CacheLinePad | ||||
| } | ||||
|  | ||||
| // ARM contains the supported CPU features of the current ARM (32-bit) platform. | ||||
| // All feature flags are false if: | ||||
| //  1. the current platform is not arm, or | ||||
| //  2. the current operating system is not Linux. | ||||
| var ARM struct { | ||||
| 	_           CacheLinePad | ||||
| 	HasSWP      bool // SWP instruction support | ||||
| 	HasHALF     bool // Half-word load and store support | ||||
| 	HasTHUMB    bool // ARM Thumb instruction set | ||||
| 	Has26BIT    bool // Address space limited to 26-bits | ||||
| 	HasFASTMUL  bool // 32-bit operand, 64-bit result multiplication support | ||||
| 	HasFPA      bool // Floating point arithmetic support | ||||
| 	HasVFP      bool // Vector floating point support | ||||
| 	HasEDSP     bool // DSP Extensions support | ||||
| 	HasJAVA     bool // Java instruction set | ||||
| 	HasIWMMXT   bool // Intel Wireless MMX technology support | ||||
| 	HasCRUNCH   bool // MaverickCrunch context switching and handling | ||||
| 	HasTHUMBEE  bool // Thumb EE instruction set | ||||
| 	HasNEON     bool // NEON instruction set | ||||
| 	HasVFPv3    bool // Vector floating point version 3 support | ||||
| 	HasVFPv3D16 bool // Vector floating point version 3 D8-D15 | ||||
| 	HasTLS      bool // Thread local storage support | ||||
| 	HasVFPv4    bool // Vector floating point version 4 support | ||||
| 	HasIDIVA    bool // Integer divide instruction support in ARM mode | ||||
| 	HasIDIVT    bool // Integer divide instruction support in Thumb mode | ||||
| 	HasVFPD32   bool // Vector floating point version 3 D15-D31 | ||||
| 	HasLPAE     bool // Large Physical Address Extensions | ||||
| 	HasEVTSTRM  bool // Event stream support | ||||
| 	HasAES      bool // AES hardware implementation | ||||
| 	HasPMULL    bool // Polynomial multiplication instruction set | ||||
| 	HasSHA1     bool // SHA1 hardware implementation | ||||
| 	HasSHA2     bool // SHA2 hardware implementation | ||||
| 	HasCRC32    bool // CRC32 hardware implementation | ||||
| 	_           CacheLinePad | ||||
| } | ||||
|  | ||||
| // MIPS64X contains the supported CPU features of the current mips64/mips64le | ||||
| // platforms. If the current platform is not mips64/mips64le or the current | ||||
| // operating system is not Linux then all feature flags are false. | ||||
| var MIPS64X struct { | ||||
| 	_      CacheLinePad | ||||
| 	HasMSA bool // MIPS SIMD architecture | ||||
| 	_      CacheLinePad | ||||
| } | ||||
|  | ||||
| // PPC64 contains the supported CPU features of the current ppc64/ppc64le platforms. | ||||
| // If the current platform is not ppc64/ppc64le then all feature flags are false. | ||||
| // | ||||
| // For ppc64/ppc64le, it is safe to check only for ISA level starting on ISA v3.00, | ||||
| // since there are no optional categories. There are some exceptions that also | ||||
| // require kernel support to work (DARN, SCV), so there are feature bits for | ||||
| // those as well. The struct is padded to avoid false sharing. | ||||
| var PPC64 struct { | ||||
| 	_        CacheLinePad | ||||
| 	HasDARN  bool // Hardware random number generator (requires kernel enablement) | ||||
| 	HasSCV   bool // Syscall vectored (requires kernel enablement) | ||||
| 	IsPOWER8 bool // ISA v2.07 (POWER8) | ||||
| 	IsPOWER9 bool // ISA v3.00 (POWER9), implies IsPOWER8 | ||||
| 	_        CacheLinePad | ||||
| } | ||||
|  | ||||
| // S390X contains the supported CPU features of the current IBM Z | ||||
| // (s390x) platform. If the current platform is not IBM Z then all | ||||
| // feature flags are false. | ||||
| // | ||||
| // S390X is padded to avoid false sharing. Further HasVX is only set | ||||
| // if the OS supports vector registers in addition to the STFLE | ||||
| // feature bit being set. | ||||
| var S390X struct { | ||||
| 	_         CacheLinePad | ||||
| 	HasZARCH  bool // z/Architecture mode is active [mandatory] | ||||
| 	HasSTFLE  bool // store facility list extended | ||||
| 	HasLDISP  bool // long (20-bit) displacements | ||||
| 	HasEIMM   bool // 32-bit immediates | ||||
| 	HasDFP    bool // decimal floating point | ||||
| 	HasETF3EH bool // ETF-3 enhanced | ||||
| 	HasMSA    bool // message security assist (CPACF) | ||||
| 	HasAES    bool // KM-AES{128,192,256} functions | ||||
| 	HasAESCBC bool // KMC-AES{128,192,256} functions | ||||
| 	HasAESCTR bool // KMCTR-AES{128,192,256} functions | ||||
| 	HasAESGCM bool // KMA-GCM-AES{128,192,256} functions | ||||
| 	HasGHASH  bool // KIMD-GHASH function | ||||
| 	HasSHA1   bool // K{I,L}MD-SHA-1 functions | ||||
| 	HasSHA256 bool // K{I,L}MD-SHA-256 functions | ||||
| 	HasSHA512 bool // K{I,L}MD-SHA-512 functions | ||||
| 	HasSHA3   bool // K{I,L}MD-SHA3-{224,256,384,512} and K{I,L}MD-SHAKE-{128,256} functions | ||||
| 	HasVX     bool // vector facility | ||||
| 	HasVXE    bool // vector-enhancements facility 1 | ||||
| 	_         CacheLinePad | ||||
| } | ||||
|  | ||||
| func init() { | ||||
| 	archInit() | ||||
| 	initOptions() | ||||
| 	processOptions() | ||||
| } | ||||
|  | ||||
| // options contains the cpu debug options that can be used in GODEBUG. | ||||
| // Options are arch dependent and are added by the arch specific initOptions functions. | ||||
| // Features that are mandatory for the specific GOARCH should have the Required field set | ||||
| // (e.g. SSE2 on amd64). | ||||
| var options []option | ||||
|  | ||||
| // Option names should be lower case. e.g. avx instead of AVX. | ||||
| type option struct { | ||||
| 	Name      string | ||||
| 	Feature   *bool | ||||
| 	Specified bool // whether feature value was specified in GODEBUG | ||||
| 	Enable    bool // whether feature should be enabled | ||||
| 	Required  bool // whether feature is mandatory and can not be disabled | ||||
| } | ||||
|  | ||||
| func processOptions() { | ||||
| 	env := os.Getenv("GODEBUG") | ||||
| field: | ||||
| 	for env != "" { | ||||
| 		field := "" | ||||
| 		i := strings.IndexByte(env, ',') | ||||
| 		if i < 0 { | ||||
| 			field, env = env, "" | ||||
| 		} else { | ||||
| 			field, env = env[:i], env[i+1:] | ||||
| 		} | ||||
| 		if len(field) < 4 || field[:4] != "cpu." { | ||||
| 			continue | ||||
| 		} | ||||
| 		i = strings.IndexByte(field, '=') | ||||
| 		if i < 0 { | ||||
| 			print("GODEBUG sys/cpu: no value specified for \"", field, "\"\n") | ||||
| 			continue | ||||
| 		} | ||||
| 		key, value := field[4:i], field[i+1:] // e.g. "SSE2", "on" | ||||
|  | ||||
| 		var enable bool | ||||
| 		switch value { | ||||
| 		case "on": | ||||
| 			enable = true | ||||
| 		case "off": | ||||
| 			enable = false | ||||
| 		default: | ||||
| 			print("GODEBUG sys/cpu: value \"", value, "\" not supported for cpu option \"", key, "\"\n") | ||||
| 			continue field | ||||
| 		} | ||||
|  | ||||
| 		if key == "all" { | ||||
| 			for i := range options { | ||||
| 				options[i].Specified = true | ||||
| 				options[i].Enable = enable || options[i].Required | ||||
| 			} | ||||
| 			continue field | ||||
| 		} | ||||
|  | ||||
| 		for i := range options { | ||||
| 			if options[i].Name == key { | ||||
| 				options[i].Specified = true | ||||
| 				options[i].Enable = enable | ||||
| 				continue field | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		print("GODEBUG sys/cpu: unknown cpu feature \"", key, "\"\n") | ||||
| 	} | ||||
|  | ||||
| 	for _, o := range options { | ||||
| 		if !o.Specified { | ||||
| 			continue | ||||
| 		} | ||||
|  | ||||
| 		if o.Enable && !*o.Feature { | ||||
| 			print("GODEBUG sys/cpu: can not enable \"", o.Name, "\", missing CPU support\n") | ||||
| 			continue | ||||
| 		} | ||||
|  | ||||
| 		if !o.Enable && o.Required { | ||||
| 			print("GODEBUG sys/cpu: can not disable \"", o.Name, "\", required CPU feature\n") | ||||
| 			continue | ||||
| 		} | ||||
|  | ||||
| 		*o.Feature = o.Enable | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										34
									
								
								vendor/golang.org/x/sys/cpu/cpu_aix.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								vendor/golang.org/x/sys/cpu/cpu_aix.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,34 @@ | ||||
| // 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. | ||||
|  | ||||
| //go:build aix | ||||
| // +build aix | ||||
|  | ||||
| package cpu | ||||
|  | ||||
| const ( | ||||
| 	// getsystemcfg constants | ||||
| 	_SC_IMPL     = 2 | ||||
| 	_IMPL_POWER8 = 0x10000 | ||||
| 	_IMPL_POWER9 = 0x20000 | ||||
| ) | ||||
|  | ||||
| func archInit() { | ||||
| 	impl := getsystemcfg(_SC_IMPL) | ||||
| 	if impl&_IMPL_POWER8 != 0 { | ||||
| 		PPC64.IsPOWER8 = true | ||||
| 	} | ||||
| 	if impl&_IMPL_POWER9 != 0 { | ||||
| 		PPC64.IsPOWER8 = true | ||||
| 		PPC64.IsPOWER9 = true | ||||
| 	} | ||||
|  | ||||
| 	Initialized = true | ||||
| } | ||||
|  | ||||
| func getsystemcfg(label int) (n uint64) { | ||||
| 	r0, _ := callgetsystemcfg(label) | ||||
| 	n = uint64(r0) | ||||
| 	return | ||||
| } | ||||
							
								
								
									
										73
									
								
								vendor/golang.org/x/sys/cpu/cpu_arm.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										73
									
								
								vendor/golang.org/x/sys/cpu/cpu_arm.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,73 @@ | ||||
| // 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. | ||||
|  | ||||
| package cpu | ||||
|  | ||||
| const cacheLineSize = 32 | ||||
|  | ||||
| // HWCAP/HWCAP2 bits. | ||||
| // These are specific to Linux. | ||||
| const ( | ||||
| 	hwcap_SWP       = 1 << 0 | ||||
| 	hwcap_HALF      = 1 << 1 | ||||
| 	hwcap_THUMB     = 1 << 2 | ||||
| 	hwcap_26BIT     = 1 << 3 | ||||
| 	hwcap_FAST_MULT = 1 << 4 | ||||
| 	hwcap_FPA       = 1 << 5 | ||||
| 	hwcap_VFP       = 1 << 6 | ||||
| 	hwcap_EDSP      = 1 << 7 | ||||
| 	hwcap_JAVA      = 1 << 8 | ||||
| 	hwcap_IWMMXT    = 1 << 9 | ||||
| 	hwcap_CRUNCH    = 1 << 10 | ||||
| 	hwcap_THUMBEE   = 1 << 11 | ||||
| 	hwcap_NEON      = 1 << 12 | ||||
| 	hwcap_VFPv3     = 1 << 13 | ||||
| 	hwcap_VFPv3D16  = 1 << 14 | ||||
| 	hwcap_TLS       = 1 << 15 | ||||
| 	hwcap_VFPv4     = 1 << 16 | ||||
| 	hwcap_IDIVA     = 1 << 17 | ||||
| 	hwcap_IDIVT     = 1 << 18 | ||||
| 	hwcap_VFPD32    = 1 << 19 | ||||
| 	hwcap_LPAE      = 1 << 20 | ||||
| 	hwcap_EVTSTRM   = 1 << 21 | ||||
|  | ||||
| 	hwcap2_AES   = 1 << 0 | ||||
| 	hwcap2_PMULL = 1 << 1 | ||||
| 	hwcap2_SHA1  = 1 << 2 | ||||
| 	hwcap2_SHA2  = 1 << 3 | ||||
| 	hwcap2_CRC32 = 1 << 4 | ||||
| ) | ||||
|  | ||||
| func initOptions() { | ||||
| 	options = []option{ | ||||
| 		{Name: "pmull", Feature: &ARM.HasPMULL}, | ||||
| 		{Name: "sha1", Feature: &ARM.HasSHA1}, | ||||
| 		{Name: "sha2", Feature: &ARM.HasSHA2}, | ||||
| 		{Name: "swp", Feature: &ARM.HasSWP}, | ||||
| 		{Name: "thumb", Feature: &ARM.HasTHUMB}, | ||||
| 		{Name: "thumbee", Feature: &ARM.HasTHUMBEE}, | ||||
| 		{Name: "tls", Feature: &ARM.HasTLS}, | ||||
| 		{Name: "vfp", Feature: &ARM.HasVFP}, | ||||
| 		{Name: "vfpd32", Feature: &ARM.HasVFPD32}, | ||||
| 		{Name: "vfpv3", Feature: &ARM.HasVFPv3}, | ||||
| 		{Name: "vfpv3d16", Feature: &ARM.HasVFPv3D16}, | ||||
| 		{Name: "vfpv4", Feature: &ARM.HasVFPv4}, | ||||
| 		{Name: "half", Feature: &ARM.HasHALF}, | ||||
| 		{Name: "26bit", Feature: &ARM.Has26BIT}, | ||||
| 		{Name: "fastmul", Feature: &ARM.HasFASTMUL}, | ||||
| 		{Name: "fpa", Feature: &ARM.HasFPA}, | ||||
| 		{Name: "edsp", Feature: &ARM.HasEDSP}, | ||||
| 		{Name: "java", Feature: &ARM.HasJAVA}, | ||||
| 		{Name: "iwmmxt", Feature: &ARM.HasIWMMXT}, | ||||
| 		{Name: "crunch", Feature: &ARM.HasCRUNCH}, | ||||
| 		{Name: "neon", Feature: &ARM.HasNEON}, | ||||
| 		{Name: "idivt", Feature: &ARM.HasIDIVT}, | ||||
| 		{Name: "idiva", Feature: &ARM.HasIDIVA}, | ||||
| 		{Name: "lpae", Feature: &ARM.HasLPAE}, | ||||
| 		{Name: "evtstrm", Feature: &ARM.HasEVTSTRM}, | ||||
| 		{Name: "aes", Feature: &ARM.HasAES}, | ||||
| 		{Name: "crc32", Feature: &ARM.HasCRC32}, | ||||
| 	} | ||||
|  | ||||
| } | ||||
							
								
								
									
										172
									
								
								vendor/golang.org/x/sys/cpu/cpu_arm64.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										172
									
								
								vendor/golang.org/x/sys/cpu/cpu_arm64.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,172 @@ | ||||
| // 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. | ||||
|  | ||||
| package cpu | ||||
|  | ||||
| import "runtime" | ||||
|  | ||||
| // cacheLineSize is used to prevent false sharing of cache lines. | ||||
| // We choose 128 because Apple Silicon, a.k.a. M1, has 128-byte cache line size. | ||||
| // It doesn't cost much and is much more future-proof. | ||||
| const cacheLineSize = 128 | ||||
|  | ||||
| func initOptions() { | ||||
| 	options = []option{ | ||||
| 		{Name: "fp", Feature: &ARM64.HasFP}, | ||||
| 		{Name: "asimd", Feature: &ARM64.HasASIMD}, | ||||
| 		{Name: "evstrm", Feature: &ARM64.HasEVTSTRM}, | ||||
| 		{Name: "aes", Feature: &ARM64.HasAES}, | ||||
| 		{Name: "fphp", Feature: &ARM64.HasFPHP}, | ||||
| 		{Name: "jscvt", Feature: &ARM64.HasJSCVT}, | ||||
| 		{Name: "lrcpc", Feature: &ARM64.HasLRCPC}, | ||||
| 		{Name: "pmull", Feature: &ARM64.HasPMULL}, | ||||
| 		{Name: "sha1", Feature: &ARM64.HasSHA1}, | ||||
| 		{Name: "sha2", Feature: &ARM64.HasSHA2}, | ||||
| 		{Name: "sha3", Feature: &ARM64.HasSHA3}, | ||||
| 		{Name: "sha512", Feature: &ARM64.HasSHA512}, | ||||
| 		{Name: "sm3", Feature: &ARM64.HasSM3}, | ||||
| 		{Name: "sm4", Feature: &ARM64.HasSM4}, | ||||
| 		{Name: "sve", Feature: &ARM64.HasSVE}, | ||||
| 		{Name: "crc32", Feature: &ARM64.HasCRC32}, | ||||
| 		{Name: "atomics", Feature: &ARM64.HasATOMICS}, | ||||
| 		{Name: "asimdhp", Feature: &ARM64.HasASIMDHP}, | ||||
| 		{Name: "cpuid", Feature: &ARM64.HasCPUID}, | ||||
| 		{Name: "asimrdm", Feature: &ARM64.HasASIMDRDM}, | ||||
| 		{Name: "fcma", Feature: &ARM64.HasFCMA}, | ||||
| 		{Name: "dcpop", Feature: &ARM64.HasDCPOP}, | ||||
| 		{Name: "asimddp", Feature: &ARM64.HasASIMDDP}, | ||||
| 		{Name: "asimdfhm", Feature: &ARM64.HasASIMDFHM}, | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func archInit() { | ||||
| 	switch runtime.GOOS { | ||||
| 	case "freebsd": | ||||
| 		readARM64Registers() | ||||
| 	case "linux", "netbsd", "openbsd": | ||||
| 		doinit() | ||||
| 	default: | ||||
| 		// Many platforms don't seem to allow reading these registers. | ||||
| 		setMinimalFeatures() | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // setMinimalFeatures fakes the minimal ARM64 features expected by | ||||
| // TestARM64minimalFeatures. | ||||
| func setMinimalFeatures() { | ||||
| 	ARM64.HasASIMD = true | ||||
| 	ARM64.HasFP = true | ||||
| } | ||||
|  | ||||
| func readARM64Registers() { | ||||
| 	Initialized = true | ||||
|  | ||||
| 	parseARM64SystemRegisters(getisar0(), getisar1(), getpfr0()) | ||||
| } | ||||
|  | ||||
| func parseARM64SystemRegisters(isar0, isar1, pfr0 uint64) { | ||||
| 	// ID_AA64ISAR0_EL1 | ||||
| 	switch extractBits(isar0, 4, 7) { | ||||
| 	case 1: | ||||
| 		ARM64.HasAES = true | ||||
| 	case 2: | ||||
| 		ARM64.HasAES = true | ||||
| 		ARM64.HasPMULL = true | ||||
| 	} | ||||
|  | ||||
| 	switch extractBits(isar0, 8, 11) { | ||||
| 	case 1: | ||||
| 		ARM64.HasSHA1 = true | ||||
| 	} | ||||
|  | ||||
| 	switch extractBits(isar0, 12, 15) { | ||||
| 	case 1: | ||||
| 		ARM64.HasSHA2 = true | ||||
| 	case 2: | ||||
| 		ARM64.HasSHA2 = true | ||||
| 		ARM64.HasSHA512 = true | ||||
| 	} | ||||
|  | ||||
| 	switch extractBits(isar0, 16, 19) { | ||||
| 	case 1: | ||||
| 		ARM64.HasCRC32 = true | ||||
| 	} | ||||
|  | ||||
| 	switch extractBits(isar0, 20, 23) { | ||||
| 	case 2: | ||||
| 		ARM64.HasATOMICS = true | ||||
| 	} | ||||
|  | ||||
| 	switch extractBits(isar0, 28, 31) { | ||||
| 	case 1: | ||||
| 		ARM64.HasASIMDRDM = true | ||||
| 	} | ||||
|  | ||||
| 	switch extractBits(isar0, 32, 35) { | ||||
| 	case 1: | ||||
| 		ARM64.HasSHA3 = true | ||||
| 	} | ||||
|  | ||||
| 	switch extractBits(isar0, 36, 39) { | ||||
| 	case 1: | ||||
| 		ARM64.HasSM3 = true | ||||
| 	} | ||||
|  | ||||
| 	switch extractBits(isar0, 40, 43) { | ||||
| 	case 1: | ||||
| 		ARM64.HasSM4 = true | ||||
| 	} | ||||
|  | ||||
| 	switch extractBits(isar0, 44, 47) { | ||||
| 	case 1: | ||||
| 		ARM64.HasASIMDDP = true | ||||
| 	} | ||||
|  | ||||
| 	// ID_AA64ISAR1_EL1 | ||||
| 	switch extractBits(isar1, 0, 3) { | ||||
| 	case 1: | ||||
| 		ARM64.HasDCPOP = true | ||||
| 	} | ||||
|  | ||||
| 	switch extractBits(isar1, 12, 15) { | ||||
| 	case 1: | ||||
| 		ARM64.HasJSCVT = true | ||||
| 	} | ||||
|  | ||||
| 	switch extractBits(isar1, 16, 19) { | ||||
| 	case 1: | ||||
| 		ARM64.HasFCMA = true | ||||
| 	} | ||||
|  | ||||
| 	switch extractBits(isar1, 20, 23) { | ||||
| 	case 1: | ||||
| 		ARM64.HasLRCPC = true | ||||
| 	} | ||||
|  | ||||
| 	// ID_AA64PFR0_EL1 | ||||
| 	switch extractBits(pfr0, 16, 19) { | ||||
| 	case 0: | ||||
| 		ARM64.HasFP = true | ||||
| 	case 1: | ||||
| 		ARM64.HasFP = true | ||||
| 		ARM64.HasFPHP = true | ||||
| 	} | ||||
|  | ||||
| 	switch extractBits(pfr0, 20, 23) { | ||||
| 	case 0: | ||||
| 		ARM64.HasASIMD = true | ||||
| 	case 1: | ||||
| 		ARM64.HasASIMD = true | ||||
| 		ARM64.HasASIMDHP = true | ||||
| 	} | ||||
|  | ||||
| 	switch extractBits(pfr0, 32, 35) { | ||||
| 	case 1: | ||||
| 		ARM64.HasSVE = true | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func extractBits(data uint64, start, end uint) uint { | ||||
| 	return (uint)(data>>start) & ((1 << (end - start + 1)) - 1) | ||||
| } | ||||
							
								
								
									
										32
									
								
								vendor/golang.org/x/sys/cpu/cpu_arm64.s
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								vendor/golang.org/x/sys/cpu/cpu_arm64.s
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| // 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. | ||||
|  | ||||
| //go:build gc | ||||
| // +build gc | ||||
|  | ||||
| #include "textflag.h" | ||||
|  | ||||
| // func getisar0() uint64 | ||||
| TEXT ·getisar0(SB),NOSPLIT,$0-8 | ||||
| 	// get Instruction Set Attributes 0 into x0 | ||||
| 	// mrs x0, ID_AA64ISAR0_EL1 = d5380600 | ||||
| 	WORD	$0xd5380600 | ||||
| 	MOVD	R0, ret+0(FP) | ||||
| 	RET | ||||
|  | ||||
| // func getisar1() uint64 | ||||
| TEXT ·getisar1(SB),NOSPLIT,$0-8 | ||||
| 	// get Instruction Set Attributes 1 into x0 | ||||
| 	// mrs x0, ID_AA64ISAR1_EL1 = d5380620 | ||||
| 	WORD	$0xd5380620 | ||||
| 	MOVD	R0, ret+0(FP) | ||||
| 	RET | ||||
|  | ||||
| // func getpfr0() uint64 | ||||
| TEXT ·getpfr0(SB),NOSPLIT,$0-8 | ||||
| 	// get Processor Feature Register 0 into x0 | ||||
| 	// mrs x0, ID_AA64PFR0_EL1 = d5380400 | ||||
| 	WORD	$0xd5380400 | ||||
| 	MOVD	R0, ret+0(FP) | ||||
| 	RET | ||||
							
								
								
									
										12
									
								
								vendor/golang.org/x/sys/cpu/cpu_gc_arm64.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								vendor/golang.org/x/sys/cpu/cpu_gc_arm64.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | ||||
| // 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. | ||||
|  | ||||
| //go:build gc | ||||
| // +build gc | ||||
|  | ||||
| package cpu | ||||
|  | ||||
| func getisar0() uint64 | ||||
| func getisar1() uint64 | ||||
| func getpfr0() uint64 | ||||
							
								
								
									
										22
									
								
								vendor/golang.org/x/sys/cpu/cpu_gc_s390x.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								vendor/golang.org/x/sys/cpu/cpu_gc_s390x.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,22 @@ | ||||
| // 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. | ||||
|  | ||||
| //go:build gc | ||||
| // +build gc | ||||
|  | ||||
| package cpu | ||||
|  | ||||
| // haveAsmFunctions reports whether the other functions in this file can | ||||
| // be safely called. | ||||
| func haveAsmFunctions() bool { return true } | ||||
|  | ||||
| // The following feature detection functions are defined in cpu_s390x.s. | ||||
| // They are likely to be expensive to call so the results should be cached. | ||||
| func stfle() facilityList | ||||
| func kmQuery() queryResult | ||||
| func kmcQuery() queryResult | ||||
| func kmctrQuery() queryResult | ||||
| func kmaQuery() queryResult | ||||
| func kimdQuery() queryResult | ||||
| func klmdQuery() queryResult | ||||
							
								
								
									
										17
									
								
								vendor/golang.org/x/sys/cpu/cpu_gc_x86.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								vendor/golang.org/x/sys/cpu/cpu_gc_x86.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,17 @@ | ||||
| // Copyright 2018 The Go Authors. All rights reserved. | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
|  | ||||
| //go:build (386 || amd64 || amd64p32) && gc | ||||
| // +build 386 amd64 amd64p32 | ||||
| // +build gc | ||||
|  | ||||
| package cpu | ||||
|  | ||||
| // cpuid is implemented in cpu_x86.s for gc compiler | ||||
| // and in cpu_gccgo.c for gccgo. | ||||
| func cpuid(eaxArg, ecxArg uint32) (eax, ebx, ecx, edx uint32) | ||||
|  | ||||
| // xgetbv with ecx = 0 is implemented in cpu_x86.s for gc compiler | ||||
| // and in cpu_gccgo.c for gccgo. | ||||
| func xgetbv() (eax, edx uint32) | ||||
							
								
								
									
										12
									
								
								vendor/golang.org/x/sys/cpu/cpu_gccgo_arm64.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								vendor/golang.org/x/sys/cpu/cpu_gccgo_arm64.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | ||||
| // 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. | ||||
|  | ||||
| //go:build gccgo | ||||
| // +build gccgo | ||||
|  | ||||
| package cpu | ||||
|  | ||||
| func getisar0() uint64 { return 0 } | ||||
| func getisar1() uint64 { return 0 } | ||||
| func getpfr0() uint64  { return 0 } | ||||
							
								
								
									
										23
									
								
								vendor/golang.org/x/sys/cpu/cpu_gccgo_s390x.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								vendor/golang.org/x/sys/cpu/cpu_gccgo_s390x.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,23 @@ | ||||
| // 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. | ||||
|  | ||||
| //go:build gccgo | ||||
| // +build gccgo | ||||
|  | ||||
| package cpu | ||||
|  | ||||
| // haveAsmFunctions reports whether the other functions in this file can | ||||
| // be safely called. | ||||
| func haveAsmFunctions() bool { return false } | ||||
|  | ||||
| // TODO(mundaym): the following feature detection functions are currently | ||||
| // stubs. See https://golang.org/cl/162887 for how to fix this. | ||||
| // They are likely to be expensive to call so the results should be cached. | ||||
| func stfle() facilityList     { panic("not implemented for gccgo") } | ||||
| func kmQuery() queryResult    { panic("not implemented for gccgo") } | ||||
| func kmcQuery() queryResult   { panic("not implemented for gccgo") } | ||||
| func kmctrQuery() queryResult { panic("not implemented for gccgo") } | ||||
| func kmaQuery() queryResult   { panic("not implemented for gccgo") } | ||||
| func kimdQuery() queryResult  { panic("not implemented for gccgo") } | ||||
| func klmdQuery() queryResult  { panic("not implemented for gccgo") } | ||||
							
								
								
									
										39
									
								
								vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.c
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.c
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,39 @@ | ||||
| // 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. | ||||
|  | ||||
| //go:build (386 || amd64 || amd64p32) && gccgo | ||||
| // +build 386 amd64 amd64p32 | ||||
| // +build gccgo | ||||
|  | ||||
| #include <cpuid.h> | ||||
| #include <stdint.h> | ||||
| #include <x86intrin.h> | ||||
|  | ||||
| // Need to wrap __get_cpuid_count because it's declared as static. | ||||
| int | ||||
| gccgoGetCpuidCount(uint32_t leaf, uint32_t subleaf, | ||||
|                    uint32_t *eax, uint32_t *ebx, | ||||
|                    uint32_t *ecx, uint32_t *edx) | ||||
| { | ||||
| 	return __get_cpuid_count(leaf, subleaf, eax, ebx, ecx, edx); | ||||
| } | ||||
|  | ||||
| #pragma GCC diagnostic ignored "-Wunknown-pragmas" | ||||
| #pragma GCC push_options | ||||
| #pragma GCC target("xsave") | ||||
| #pragma clang attribute push (__attribute__((target("xsave"))), apply_to=function) | ||||
|  | ||||
| // xgetbv reads the contents of an XCR (Extended Control Register) | ||||
| // specified in the ECX register into registers EDX:EAX. | ||||
| // Currently, the only supported value for XCR is 0. | ||||
| void | ||||
| gccgoXgetbv(uint32_t *eax, uint32_t *edx) | ||||
| { | ||||
| 	uint64_t v = _xgetbv(0); | ||||
| 	*eax = v & 0xffffffff; | ||||
| 	*edx = v >> 32; | ||||
| } | ||||
|  | ||||
| #pragma clang attribute pop | ||||
| #pragma GCC pop_options | ||||
							
								
								
									
										33
									
								
								vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,33 @@ | ||||
| // 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. | ||||
|  | ||||
| //go:build (386 || amd64 || amd64p32) && gccgo | ||||
| // +build 386 amd64 amd64p32 | ||||
| // +build gccgo | ||||
|  | ||||
| package cpu | ||||
|  | ||||
| //extern gccgoGetCpuidCount | ||||
| func gccgoGetCpuidCount(eaxArg, ecxArg uint32, eax, ebx, ecx, edx *uint32) | ||||
|  | ||||
| func cpuid(eaxArg, ecxArg uint32) (eax, ebx, ecx, edx uint32) { | ||||
| 	var a, b, c, d uint32 | ||||
| 	gccgoGetCpuidCount(eaxArg, ecxArg, &a, &b, &c, &d) | ||||
| 	return a, b, c, d | ||||
| } | ||||
|  | ||||
| //extern gccgoXgetbv | ||||
| func gccgoXgetbv(eax, edx *uint32) | ||||
|  | ||||
| func xgetbv() (eax, edx uint32) { | ||||
| 	var a, d uint32 | ||||
| 	gccgoXgetbv(&a, &d) | ||||
| 	return a, d | ||||
| } | ||||
|  | ||||
| // gccgo doesn't build on Darwin, per: | ||||
| // https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/gcc.rb#L76 | ||||
| func darwinSupportsAVX512() bool { | ||||
| 	return false | ||||
| } | ||||
							
								
								
									
										16
									
								
								vendor/golang.org/x/sys/cpu/cpu_linux.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								vendor/golang.org/x/sys/cpu/cpu_linux.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,16 @@ | ||||
| // 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. | ||||
|  | ||||
| //go:build !386 && !amd64 && !amd64p32 && !arm64 | ||||
| // +build !386,!amd64,!amd64p32,!arm64 | ||||
|  | ||||
| package cpu | ||||
|  | ||||
| func archInit() { | ||||
| 	if err := readHWCAP(); err != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	doinit() | ||||
| 	Initialized = true | ||||
| } | ||||
							
								
								
									
										39
									
								
								vendor/golang.org/x/sys/cpu/cpu_linux_arm.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								vendor/golang.org/x/sys/cpu/cpu_linux_arm.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,39 @@ | ||||
| // 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. | ||||
|  | ||||
| package cpu | ||||
|  | ||||
| func doinit() { | ||||
| 	ARM.HasSWP = isSet(hwCap, hwcap_SWP) | ||||
| 	ARM.HasHALF = isSet(hwCap, hwcap_HALF) | ||||
| 	ARM.HasTHUMB = isSet(hwCap, hwcap_THUMB) | ||||
| 	ARM.Has26BIT = isSet(hwCap, hwcap_26BIT) | ||||
| 	ARM.HasFASTMUL = isSet(hwCap, hwcap_FAST_MULT) | ||||
| 	ARM.HasFPA = isSet(hwCap, hwcap_FPA) | ||||
| 	ARM.HasVFP = isSet(hwCap, hwcap_VFP) | ||||
| 	ARM.HasEDSP = isSet(hwCap, hwcap_EDSP) | ||||
| 	ARM.HasJAVA = isSet(hwCap, hwcap_JAVA) | ||||
| 	ARM.HasIWMMXT = isSet(hwCap, hwcap_IWMMXT) | ||||
| 	ARM.HasCRUNCH = isSet(hwCap, hwcap_CRUNCH) | ||||
| 	ARM.HasTHUMBEE = isSet(hwCap, hwcap_THUMBEE) | ||||
| 	ARM.HasNEON = isSet(hwCap, hwcap_NEON) | ||||
| 	ARM.HasVFPv3 = isSet(hwCap, hwcap_VFPv3) | ||||
| 	ARM.HasVFPv3D16 = isSet(hwCap, hwcap_VFPv3D16) | ||||
| 	ARM.HasTLS = isSet(hwCap, hwcap_TLS) | ||||
| 	ARM.HasVFPv4 = isSet(hwCap, hwcap_VFPv4) | ||||
| 	ARM.HasIDIVA = isSet(hwCap, hwcap_IDIVA) | ||||
| 	ARM.HasIDIVT = isSet(hwCap, hwcap_IDIVT) | ||||
| 	ARM.HasVFPD32 = isSet(hwCap, hwcap_VFPD32) | ||||
| 	ARM.HasLPAE = isSet(hwCap, hwcap_LPAE) | ||||
| 	ARM.HasEVTSTRM = isSet(hwCap, hwcap_EVTSTRM) | ||||
| 	ARM.HasAES = isSet(hwCap2, hwcap2_AES) | ||||
| 	ARM.HasPMULL = isSet(hwCap2, hwcap2_PMULL) | ||||
| 	ARM.HasSHA1 = isSet(hwCap2, hwcap2_SHA1) | ||||
| 	ARM.HasSHA2 = isSet(hwCap2, hwcap2_SHA2) | ||||
| 	ARM.HasCRC32 = isSet(hwCap2, hwcap2_CRC32) | ||||
| } | ||||
|  | ||||
| func isSet(hwc uint, value uint) bool { | ||||
| 	return hwc&value != 0 | ||||
| } | ||||
							
								
								
									
										111
									
								
								vendor/golang.org/x/sys/cpu/cpu_linux_arm64.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										111
									
								
								vendor/golang.org/x/sys/cpu/cpu_linux_arm64.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,111 @@ | ||||
| // 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. | ||||
|  | ||||
| package cpu | ||||
|  | ||||
| import ( | ||||
| 	"strings" | ||||
| 	"syscall" | ||||
| ) | ||||
|  | ||||
| // HWCAP/HWCAP2 bits. These are exposed by Linux. | ||||
| const ( | ||||
| 	hwcap_FP       = 1 << 0 | ||||
| 	hwcap_ASIMD    = 1 << 1 | ||||
| 	hwcap_EVTSTRM  = 1 << 2 | ||||
| 	hwcap_AES      = 1 << 3 | ||||
| 	hwcap_PMULL    = 1 << 4 | ||||
| 	hwcap_SHA1     = 1 << 5 | ||||
| 	hwcap_SHA2     = 1 << 6 | ||||
| 	hwcap_CRC32    = 1 << 7 | ||||
| 	hwcap_ATOMICS  = 1 << 8 | ||||
| 	hwcap_FPHP     = 1 << 9 | ||||
| 	hwcap_ASIMDHP  = 1 << 10 | ||||
| 	hwcap_CPUID    = 1 << 11 | ||||
| 	hwcap_ASIMDRDM = 1 << 12 | ||||
| 	hwcap_JSCVT    = 1 << 13 | ||||
| 	hwcap_FCMA     = 1 << 14 | ||||
| 	hwcap_LRCPC    = 1 << 15 | ||||
| 	hwcap_DCPOP    = 1 << 16 | ||||
| 	hwcap_SHA3     = 1 << 17 | ||||
| 	hwcap_SM3      = 1 << 18 | ||||
| 	hwcap_SM4      = 1 << 19 | ||||
| 	hwcap_ASIMDDP  = 1 << 20 | ||||
| 	hwcap_SHA512   = 1 << 21 | ||||
| 	hwcap_SVE      = 1 << 22 | ||||
| 	hwcap_ASIMDFHM = 1 << 23 | ||||
| ) | ||||
|  | ||||
| // linuxKernelCanEmulateCPUID reports whether we're running | ||||
| // on Linux 4.11+. Ideally we'd like to ask the question about | ||||
| // whether the current kernel contains | ||||
| // https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=77c97b4ee21290f5f083173d957843b615abbff2 | ||||
| // but the version number will have to do. | ||||
| func linuxKernelCanEmulateCPUID() bool { | ||||
| 	var un syscall.Utsname | ||||
| 	syscall.Uname(&un) | ||||
| 	var sb strings.Builder | ||||
| 	for _, b := range un.Release[:] { | ||||
| 		if b == 0 { | ||||
| 			break | ||||
| 		} | ||||
| 		sb.WriteByte(byte(b)) | ||||
| 	} | ||||
| 	major, minor, _, ok := parseRelease(sb.String()) | ||||
| 	return ok && (major > 4 || major == 4 && minor >= 11) | ||||
| } | ||||
|  | ||||
| func doinit() { | ||||
| 	if err := readHWCAP(); err != nil { | ||||
| 		// We failed to read /proc/self/auxv. This can happen if the binary has | ||||
| 		// been given extra capabilities(7) with /bin/setcap. | ||||
| 		// | ||||
| 		// When this happens, we have two options. If the Linux kernel is new | ||||
| 		// enough (4.11+), we can read the arm64 registers directly which'll | ||||
| 		// trap into the kernel and then return back to userspace. | ||||
| 		// | ||||
| 		// But on older kernels, such as Linux 4.4.180 as used on many Synology | ||||
| 		// devices, calling readARM64Registers (specifically getisar0) will | ||||
| 		// cause a SIGILL and we'll die. So for older kernels, parse /proc/cpuinfo | ||||
| 		// instead. | ||||
| 		// | ||||
| 		// See golang/go#57336. | ||||
| 		if linuxKernelCanEmulateCPUID() { | ||||
| 			readARM64Registers() | ||||
| 		} else { | ||||
| 			readLinuxProcCPUInfo() | ||||
| 		} | ||||
| 		return | ||||
| 	} | ||||
|  | ||||
| 	// HWCAP feature bits | ||||
| 	ARM64.HasFP = isSet(hwCap, hwcap_FP) | ||||
| 	ARM64.HasASIMD = isSet(hwCap, hwcap_ASIMD) | ||||
| 	ARM64.HasEVTSTRM = isSet(hwCap, hwcap_EVTSTRM) | ||||
| 	ARM64.HasAES = isSet(hwCap, hwcap_AES) | ||||
| 	ARM64.HasPMULL = isSet(hwCap, hwcap_PMULL) | ||||
| 	ARM64.HasSHA1 = isSet(hwCap, hwcap_SHA1) | ||||
| 	ARM64.HasSHA2 = isSet(hwCap, hwcap_SHA2) | ||||
| 	ARM64.HasCRC32 = isSet(hwCap, hwcap_CRC32) | ||||
| 	ARM64.HasATOMICS = isSet(hwCap, hwcap_ATOMICS) | ||||
| 	ARM64.HasFPHP = isSet(hwCap, hwcap_FPHP) | ||||
| 	ARM64.HasASIMDHP = isSet(hwCap, hwcap_ASIMDHP) | ||||
| 	ARM64.HasCPUID = isSet(hwCap, hwcap_CPUID) | ||||
| 	ARM64.HasASIMDRDM = isSet(hwCap, hwcap_ASIMDRDM) | ||||
| 	ARM64.HasJSCVT = isSet(hwCap, hwcap_JSCVT) | ||||
| 	ARM64.HasFCMA = isSet(hwCap, hwcap_FCMA) | ||||
| 	ARM64.HasLRCPC = isSet(hwCap, hwcap_LRCPC) | ||||
| 	ARM64.HasDCPOP = isSet(hwCap, hwcap_DCPOP) | ||||
| 	ARM64.HasSHA3 = isSet(hwCap, hwcap_SHA3) | ||||
| 	ARM64.HasSM3 = isSet(hwCap, hwcap_SM3) | ||||
| 	ARM64.HasSM4 = isSet(hwCap, hwcap_SM4) | ||||
| 	ARM64.HasASIMDDP = isSet(hwCap, hwcap_ASIMDDP) | ||||
| 	ARM64.HasSHA512 = isSet(hwCap, hwcap_SHA512) | ||||
| 	ARM64.HasSVE = isSet(hwCap, hwcap_SVE) | ||||
| 	ARM64.HasASIMDFHM = isSet(hwCap, hwcap_ASIMDFHM) | ||||
| } | ||||
|  | ||||
| func isSet(hwc uint, value uint) bool { | ||||
| 	return hwc&value != 0 | ||||
| } | ||||
							
								
								
									
										24
									
								
								vendor/golang.org/x/sys/cpu/cpu_linux_mips64x.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								vendor/golang.org/x/sys/cpu/cpu_linux_mips64x.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | ||||
| // 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 linux && (mips64 || mips64le) | ||||
| // +build linux | ||||
| // +build mips64 mips64le | ||||
|  | ||||
| package cpu | ||||
|  | ||||
| // HWCAP bits. These are exposed by the Linux kernel 5.4. | ||||
| const ( | ||||
| 	// CPU features | ||||
| 	hwcap_MIPS_MSA = 1 << 1 | ||||
| ) | ||||
|  | ||||
| func doinit() { | ||||
| 	// HWCAP feature bits | ||||
| 	MIPS64X.HasMSA = isSet(hwCap, hwcap_MIPS_MSA) | ||||
| } | ||||
|  | ||||
| func isSet(hwc uint, value uint) bool { | ||||
| 	return hwc&value != 0 | ||||
| } | ||||
							
								
								
									
										10
									
								
								vendor/golang.org/x/sys/cpu/cpu_linux_noinit.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								vendor/golang.org/x/sys/cpu/cpu_linux_noinit.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | ||||
| // 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. | ||||
|  | ||||
| //go:build linux && !arm && !arm64 && !mips64 && !mips64le && !ppc64 && !ppc64le && !s390x | ||||
| // +build linux,!arm,!arm64,!mips64,!mips64le,!ppc64,!ppc64le,!s390x | ||||
|  | ||||
| package cpu | ||||
|  | ||||
| func doinit() {} | ||||
							
								
								
									
										32
									
								
								vendor/golang.org/x/sys/cpu/cpu_linux_ppc64x.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								vendor/golang.org/x/sys/cpu/cpu_linux_ppc64x.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| // 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. | ||||
|  | ||||
| //go:build linux && (ppc64 || ppc64le) | ||||
| // +build linux | ||||
| // +build ppc64 ppc64le | ||||
|  | ||||
| package cpu | ||||
|  | ||||
| // HWCAP/HWCAP2 bits. These are exposed by the kernel. | ||||
| const ( | ||||
| 	// ISA Level | ||||
| 	_PPC_FEATURE2_ARCH_2_07 = 0x80000000 | ||||
| 	_PPC_FEATURE2_ARCH_3_00 = 0x00800000 | ||||
|  | ||||
| 	// CPU features | ||||
| 	_PPC_FEATURE2_DARN = 0x00200000 | ||||
| 	_PPC_FEATURE2_SCV  = 0x00100000 | ||||
| ) | ||||
|  | ||||
| func doinit() { | ||||
| 	// HWCAP2 feature bits | ||||
| 	PPC64.IsPOWER8 = isSet(hwCap2, _PPC_FEATURE2_ARCH_2_07) | ||||
| 	PPC64.IsPOWER9 = isSet(hwCap2, _PPC_FEATURE2_ARCH_3_00) | ||||
| 	PPC64.HasDARN = isSet(hwCap2, _PPC_FEATURE2_DARN) | ||||
| 	PPC64.HasSCV = isSet(hwCap2, _PPC_FEATURE2_SCV) | ||||
| } | ||||
|  | ||||
| func isSet(hwc uint, value uint) bool { | ||||
| 	return hwc&value != 0 | ||||
| } | ||||
							
								
								
									
										40
									
								
								vendor/golang.org/x/sys/cpu/cpu_linux_s390x.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								vendor/golang.org/x/sys/cpu/cpu_linux_s390x.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,40 @@ | ||||
| // 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. | ||||
|  | ||||
| package cpu | ||||
|  | ||||
| const ( | ||||
| 	// bit mask values from /usr/include/bits/hwcap.h | ||||
| 	hwcap_ZARCH  = 2 | ||||
| 	hwcap_STFLE  = 4 | ||||
| 	hwcap_MSA    = 8 | ||||
| 	hwcap_LDISP  = 16 | ||||
| 	hwcap_EIMM   = 32 | ||||
| 	hwcap_DFP    = 64 | ||||
| 	hwcap_ETF3EH = 256 | ||||
| 	hwcap_VX     = 2048 | ||||
| 	hwcap_VXE    = 8192 | ||||
| ) | ||||
|  | ||||
| func initS390Xbase() { | ||||
| 	// test HWCAP bit vector | ||||
| 	has := func(featureMask uint) bool { | ||||
| 		return hwCap&featureMask == featureMask | ||||
| 	} | ||||
|  | ||||
| 	// mandatory | ||||
| 	S390X.HasZARCH = has(hwcap_ZARCH) | ||||
|  | ||||
| 	// optional | ||||
| 	S390X.HasSTFLE = has(hwcap_STFLE) | ||||
| 	S390X.HasLDISP = has(hwcap_LDISP) | ||||
| 	S390X.HasEIMM = has(hwcap_EIMM) | ||||
| 	S390X.HasETF3EH = has(hwcap_ETF3EH) | ||||
| 	S390X.HasDFP = has(hwcap_DFP) | ||||
| 	S390X.HasMSA = has(hwcap_MSA) | ||||
| 	S390X.HasVX = has(hwcap_VX) | ||||
| 	if S390X.HasVX { | ||||
| 		S390X.HasVXE = has(hwcap_VXE) | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										13
									
								
								vendor/golang.org/x/sys/cpu/cpu_loong64.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								vendor/golang.org/x/sys/cpu/cpu_loong64.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | ||||
| // 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 loong64 | ||||
| // +build loong64 | ||||
|  | ||||
| package cpu | ||||
|  | ||||
| const cacheLineSize = 64 | ||||
|  | ||||
| func initOptions() { | ||||
| } | ||||
							
								
								
									
										16
									
								
								vendor/golang.org/x/sys/cpu/cpu_mips64x.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								vendor/golang.org/x/sys/cpu/cpu_mips64x.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,16 @@ | ||||
| // 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. | ||||
|  | ||||
| //go:build mips64 || mips64le | ||||
| // +build mips64 mips64le | ||||
|  | ||||
| package cpu | ||||
|  | ||||
| const cacheLineSize = 32 | ||||
|  | ||||
| func initOptions() { | ||||
| 	options = []option{ | ||||
| 		{Name: "msa", Feature: &MIPS64X.HasMSA}, | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										12
									
								
								vendor/golang.org/x/sys/cpu/cpu_mipsx.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								vendor/golang.org/x/sys/cpu/cpu_mipsx.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | ||||
| // 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. | ||||
|  | ||||
| //go:build mips || mipsle | ||||
| // +build mips mipsle | ||||
|  | ||||
| package cpu | ||||
|  | ||||
| const cacheLineSize = 32 | ||||
|  | ||||
| func initOptions() {} | ||||
							
								
								
									
										173
									
								
								vendor/golang.org/x/sys/cpu/cpu_netbsd_arm64.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										173
									
								
								vendor/golang.org/x/sys/cpu/cpu_netbsd_arm64.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,173 @@ | ||||
| // Copyright 2020 The Go Authors. All rights reserved. | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
|  | ||||
| package cpu | ||||
|  | ||||
| import ( | ||||
| 	"syscall" | ||||
| 	"unsafe" | ||||
| ) | ||||
|  | ||||
| // Minimal copy of functionality from x/sys/unix so the cpu package can call | ||||
| // sysctl without depending on x/sys/unix. | ||||
|  | ||||
| const ( | ||||
| 	_CTL_QUERY = -2 | ||||
|  | ||||
| 	_SYSCTL_VERS_1 = 0x1000000 | ||||
| ) | ||||
|  | ||||
| var _zero uintptr | ||||
|  | ||||
| func sysctl(mib []int32, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { | ||||
| 	var _p0 unsafe.Pointer | ||||
| 	if len(mib) > 0 { | ||||
| 		_p0 = unsafe.Pointer(&mib[0]) | ||||
| 	} else { | ||||
| 		_p0 = unsafe.Pointer(&_zero) | ||||
| 	} | ||||
| 	_, _, errno := syscall.Syscall6( | ||||
| 		syscall.SYS___SYSCTL, | ||||
| 		uintptr(_p0), | ||||
| 		uintptr(len(mib)), | ||||
| 		uintptr(unsafe.Pointer(old)), | ||||
| 		uintptr(unsafe.Pointer(oldlen)), | ||||
| 		uintptr(unsafe.Pointer(new)), | ||||
| 		uintptr(newlen)) | ||||
| 	if errno != 0 { | ||||
| 		return errno | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| type sysctlNode struct { | ||||
| 	Flags          uint32 | ||||
| 	Num            int32 | ||||
| 	Name           [32]int8 | ||||
| 	Ver            uint32 | ||||
| 	__rsvd         uint32 | ||||
| 	Un             [16]byte | ||||
| 	_sysctl_size   [8]byte | ||||
| 	_sysctl_func   [8]byte | ||||
| 	_sysctl_parent [8]byte | ||||
| 	_sysctl_desc   [8]byte | ||||
| } | ||||
|  | ||||
| func sysctlNodes(mib []int32) ([]sysctlNode, error) { | ||||
| 	var olen uintptr | ||||
|  | ||||
| 	// Get a list of all sysctl nodes below the given MIB by performing | ||||
| 	// a sysctl for the given MIB with CTL_QUERY appended. | ||||
| 	mib = append(mib, _CTL_QUERY) | ||||
| 	qnode := sysctlNode{Flags: _SYSCTL_VERS_1} | ||||
| 	qp := (*byte)(unsafe.Pointer(&qnode)) | ||||
| 	sz := unsafe.Sizeof(qnode) | ||||
| 	if err := sysctl(mib, nil, &olen, qp, sz); err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
|  | ||||
| 	// Now that we know the size, get the actual nodes. | ||||
| 	nodes := make([]sysctlNode, olen/sz) | ||||
| 	np := (*byte)(unsafe.Pointer(&nodes[0])) | ||||
| 	if err := sysctl(mib, np, &olen, qp, sz); err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
|  | ||||
| 	return nodes, nil | ||||
| } | ||||
|  | ||||
| func nametomib(name string) ([]int32, error) { | ||||
| 	// Split name into components. | ||||
| 	var parts []string | ||||
| 	last := 0 | ||||
| 	for i := 0; i < len(name); i++ { | ||||
| 		if name[i] == '.' { | ||||
| 			parts = append(parts, name[last:i]) | ||||
| 			last = i + 1 | ||||
| 		} | ||||
| 	} | ||||
| 	parts = append(parts, name[last:]) | ||||
|  | ||||
| 	mib := []int32{} | ||||
| 	// Discover the nodes and construct the MIB OID. | ||||
| 	for partno, part := range parts { | ||||
| 		nodes, err := sysctlNodes(mib) | ||||
| 		if err != nil { | ||||
| 			return nil, err | ||||
| 		} | ||||
| 		for _, node := range nodes { | ||||
| 			n := make([]byte, 0) | ||||
| 			for i := range node.Name { | ||||
| 				if node.Name[i] != 0 { | ||||
| 					n = append(n, byte(node.Name[i])) | ||||
| 				} | ||||
| 			} | ||||
| 			if string(n) == part { | ||||
| 				mib = append(mib, int32(node.Num)) | ||||
| 				break | ||||
| 			} | ||||
| 		} | ||||
| 		if len(mib) != partno+1 { | ||||
| 			return nil, err | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	return mib, nil | ||||
| } | ||||
|  | ||||
| // aarch64SysctlCPUID is struct aarch64_sysctl_cpu_id from NetBSD's <aarch64/armreg.h> | ||||
| type aarch64SysctlCPUID struct { | ||||
| 	midr      uint64 /* Main ID Register */ | ||||
| 	revidr    uint64 /* Revision ID Register */ | ||||
| 	mpidr     uint64 /* Multiprocessor Affinity Register */ | ||||
| 	aa64dfr0  uint64 /* A64 Debug Feature Register 0 */ | ||||
| 	aa64dfr1  uint64 /* A64 Debug Feature Register 1 */ | ||||
| 	aa64isar0 uint64 /* A64 Instruction Set Attribute Register 0 */ | ||||
| 	aa64isar1 uint64 /* A64 Instruction Set Attribute Register 1 */ | ||||
| 	aa64mmfr0 uint64 /* A64 Memory Model Feature Register 0 */ | ||||
| 	aa64mmfr1 uint64 /* A64 Memory Model Feature Register 1 */ | ||||
| 	aa64mmfr2 uint64 /* A64 Memory Model Feature Register 2 */ | ||||
| 	aa64pfr0  uint64 /* A64 Processor Feature Register 0 */ | ||||
| 	aa64pfr1  uint64 /* A64 Processor Feature Register 1 */ | ||||
| 	aa64zfr0  uint64 /* A64 SVE Feature ID Register 0 */ | ||||
| 	mvfr0     uint32 /* Media and VFP Feature Register 0 */ | ||||
| 	mvfr1     uint32 /* Media and VFP Feature Register 1 */ | ||||
| 	mvfr2     uint32 /* Media and VFP Feature Register 2 */ | ||||
| 	pad       uint32 | ||||
| 	clidr     uint64 /* Cache Level ID Register */ | ||||
| 	ctr       uint64 /* Cache Type Register */ | ||||
| } | ||||
|  | ||||
| func sysctlCPUID(name string) (*aarch64SysctlCPUID, error) { | ||||
| 	mib, err := nametomib(name) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
|  | ||||
| 	out := aarch64SysctlCPUID{} | ||||
| 	n := unsafe.Sizeof(out) | ||||
| 	_, _, errno := syscall.Syscall6( | ||||
| 		syscall.SYS___SYSCTL, | ||||
| 		uintptr(unsafe.Pointer(&mib[0])), | ||||
| 		uintptr(len(mib)), | ||||
| 		uintptr(unsafe.Pointer(&out)), | ||||
| 		uintptr(unsafe.Pointer(&n)), | ||||
| 		uintptr(0), | ||||
| 		uintptr(0)) | ||||
| 	if errno != 0 { | ||||
| 		return nil, errno | ||||
| 	} | ||||
| 	return &out, nil | ||||
| } | ||||
|  | ||||
| func doinit() { | ||||
| 	cpuid, err := sysctlCPUID("machdep.cpu0.cpu_id") | ||||
| 	if err != nil { | ||||
| 		setMinimalFeatures() | ||||
| 		return | ||||
| 	} | ||||
| 	parseARM64SystemRegisters(cpuid.aa64isar0, cpuid.aa64isar1, cpuid.aa64pfr0) | ||||
|  | ||||
| 	Initialized = true | ||||
| } | ||||
							
								
								
									
										65
									
								
								vendor/golang.org/x/sys/cpu/cpu_openbsd_arm64.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								vendor/golang.org/x/sys/cpu/cpu_openbsd_arm64.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,65 @@ | ||||
| // 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. | ||||
|  | ||||
| package cpu | ||||
|  | ||||
| import ( | ||||
| 	"syscall" | ||||
| 	"unsafe" | ||||
| ) | ||||
|  | ||||
| // Minimal copy of functionality from x/sys/unix so the cpu package can call | ||||
| // sysctl without depending on x/sys/unix. | ||||
|  | ||||
| const ( | ||||
| 	// From OpenBSD's sys/sysctl.h. | ||||
| 	_CTL_MACHDEP = 7 | ||||
|  | ||||
| 	// From OpenBSD's machine/cpu.h. | ||||
| 	_CPU_ID_AA64ISAR0 = 2 | ||||
| 	_CPU_ID_AA64ISAR1 = 3 | ||||
| ) | ||||
|  | ||||
| // Implemented in the runtime package (runtime/sys_openbsd3.go) | ||||
| func syscall_syscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) | ||||
|  | ||||
| //go:linkname syscall_syscall6 syscall.syscall6 | ||||
|  | ||||
| func sysctl(mib []uint32, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { | ||||
| 	_, _, errno := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(unsafe.Pointer(&mib[0])), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) | ||||
| 	if errno != 0 { | ||||
| 		return errno | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| var libc_sysctl_trampoline_addr uintptr | ||||
|  | ||||
| //go:cgo_import_dynamic libc_sysctl sysctl "libc.so" | ||||
|  | ||||
| func sysctlUint64(mib []uint32) (uint64, bool) { | ||||
| 	var out uint64 | ||||
| 	nout := unsafe.Sizeof(out) | ||||
| 	if err := sysctl(mib, (*byte)(unsafe.Pointer(&out)), &nout, nil, 0); err != nil { | ||||
| 		return 0, false | ||||
| 	} | ||||
| 	return out, true | ||||
| } | ||||
|  | ||||
| func doinit() { | ||||
| 	setMinimalFeatures() | ||||
|  | ||||
| 	// Get ID_AA64ISAR0 and ID_AA64ISAR1 from sysctl. | ||||
| 	isar0, ok := sysctlUint64([]uint32{_CTL_MACHDEP, _CPU_ID_AA64ISAR0}) | ||||
| 	if !ok { | ||||
| 		return | ||||
| 	} | ||||
| 	isar1, ok := sysctlUint64([]uint32{_CTL_MACHDEP, _CPU_ID_AA64ISAR1}) | ||||
| 	if !ok { | ||||
| 		return | ||||
| 	} | ||||
| 	parseARM64SystemRegisters(isar0, isar1, 0) | ||||
|  | ||||
| 	Initialized = true | ||||
| } | ||||
							
								
								
									
										11
									
								
								vendor/golang.org/x/sys/cpu/cpu_openbsd_arm64.s
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								vendor/golang.org/x/sys/cpu/cpu_openbsd_arm64.s
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | ||||
| // 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. | ||||
|  | ||||
| #include "textflag.h" | ||||
|  | ||||
| TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 | ||||
| 	JMP	libc_sysctl(SB) | ||||
|  | ||||
| GLOBL	·libc_sysctl_trampoline_addr(SB), RODATA, $8 | ||||
| DATA	·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB) | ||||
							
								
								
									
										10
									
								
								vendor/golang.org/x/sys/cpu/cpu_other_arm.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								vendor/golang.org/x/sys/cpu/cpu_other_arm.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | ||||
| // 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 !linux && arm | ||||
| // +build !linux,arm | ||||
|  | ||||
| package cpu | ||||
|  | ||||
| func archInit() {} | ||||
							
								
								
									
										10
									
								
								vendor/golang.org/x/sys/cpu/cpu_other_arm64.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								vendor/golang.org/x/sys/cpu/cpu_other_arm64.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | ||||
| // 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. | ||||
|  | ||||
| //go:build !linux && !netbsd && !openbsd && arm64 | ||||
| // +build !linux,!netbsd,!openbsd,arm64 | ||||
|  | ||||
| package cpu | ||||
|  | ||||
| func doinit() {} | ||||
							
								
								
									
										13
									
								
								vendor/golang.org/x/sys/cpu/cpu_other_mips64x.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								vendor/golang.org/x/sys/cpu/cpu_other_mips64x.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | ||||
| // 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 !linux && (mips64 || mips64le) | ||||
| // +build !linux | ||||
| // +build mips64 mips64le | ||||
|  | ||||
| package cpu | ||||
|  | ||||
| func archInit() { | ||||
| 	Initialized = true | ||||
| } | ||||
							
								
								
									
										15
									
								
								vendor/golang.org/x/sys/cpu/cpu_other_ppc64x.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								vendor/golang.org/x/sys/cpu/cpu_other_ppc64x.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | ||||
| // 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 !aix && !linux && (ppc64 || ppc64le) | ||||
| // +build !aix | ||||
| // +build !linux | ||||
| // +build ppc64 ppc64le | ||||
|  | ||||
| package cpu | ||||
|  | ||||
| func archInit() { | ||||
| 	PPC64.IsPOWER8 = true | ||||
| 	Initialized = true | ||||
| } | ||||
							
								
								
									
										12
									
								
								vendor/golang.org/x/sys/cpu/cpu_other_riscv64.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								vendor/golang.org/x/sys/cpu/cpu_other_riscv64.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | ||||
| // 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 && riscv64 | ||||
| // +build !linux,riscv64 | ||||
|  | ||||
| package cpu | ||||
|  | ||||
| func archInit() { | ||||
| 	Initialized = true | ||||
| } | ||||
							
								
								
									
										17
									
								
								vendor/golang.org/x/sys/cpu/cpu_ppc64x.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								vendor/golang.org/x/sys/cpu/cpu_ppc64x.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,17 @@ | ||||
| // 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 ppc64 || ppc64le | ||||
| // +build ppc64 ppc64le | ||||
|  | ||||
| package cpu | ||||
|  | ||||
| const cacheLineSize = 128 | ||||
|  | ||||
| func initOptions() { | ||||
| 	options = []option{ | ||||
| 		{Name: "darn", Feature: &PPC64.HasDARN}, | ||||
| 		{Name: "scv", Feature: &PPC64.HasSCV}, | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										12
									
								
								vendor/golang.org/x/sys/cpu/cpu_riscv64.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								vendor/golang.org/x/sys/cpu/cpu_riscv64.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | ||||
| // 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. | ||||
|  | ||||
| //go:build riscv64 | ||||
| // +build riscv64 | ||||
|  | ||||
| package cpu | ||||
|  | ||||
| const cacheLineSize = 32 | ||||
|  | ||||
| func initOptions() {} | ||||
							
								
								
									
										172
									
								
								vendor/golang.org/x/sys/cpu/cpu_s390x.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										172
									
								
								vendor/golang.org/x/sys/cpu/cpu_s390x.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,172 @@ | ||||
| // Copyright 2020 The Go Authors. All rights reserved. | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
|  | ||||
| package cpu | ||||
|  | ||||
| const cacheLineSize = 256 | ||||
|  | ||||
| func initOptions() { | ||||
| 	options = []option{ | ||||
| 		{Name: "zarch", Feature: &S390X.HasZARCH, Required: true}, | ||||
| 		{Name: "stfle", Feature: &S390X.HasSTFLE, Required: true}, | ||||
| 		{Name: "ldisp", Feature: &S390X.HasLDISP, Required: true}, | ||||
| 		{Name: "eimm", Feature: &S390X.HasEIMM, Required: true}, | ||||
| 		{Name: "dfp", Feature: &S390X.HasDFP}, | ||||
| 		{Name: "etf3eh", Feature: &S390X.HasETF3EH}, | ||||
| 		{Name: "msa", Feature: &S390X.HasMSA}, | ||||
| 		{Name: "aes", Feature: &S390X.HasAES}, | ||||
| 		{Name: "aescbc", Feature: &S390X.HasAESCBC}, | ||||
| 		{Name: "aesctr", Feature: &S390X.HasAESCTR}, | ||||
| 		{Name: "aesgcm", Feature: &S390X.HasAESGCM}, | ||||
| 		{Name: "ghash", Feature: &S390X.HasGHASH}, | ||||
| 		{Name: "sha1", Feature: &S390X.HasSHA1}, | ||||
| 		{Name: "sha256", Feature: &S390X.HasSHA256}, | ||||
| 		{Name: "sha3", Feature: &S390X.HasSHA3}, | ||||
| 		{Name: "sha512", Feature: &S390X.HasSHA512}, | ||||
| 		{Name: "vx", Feature: &S390X.HasVX}, | ||||
| 		{Name: "vxe", Feature: &S390X.HasVXE}, | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // bitIsSet reports whether the bit at index is set. The bit index | ||||
| // is in big endian order, so bit index 0 is the leftmost bit. | ||||
| func bitIsSet(bits []uint64, index uint) bool { | ||||
| 	return bits[index/64]&((1<<63)>>(index%64)) != 0 | ||||
| } | ||||
|  | ||||
| // facility is a bit index for the named facility. | ||||
| type facility uint8 | ||||
|  | ||||
| const ( | ||||
| 	// mandatory facilities | ||||
| 	zarch  facility = 1  // z architecture mode is active | ||||
| 	stflef facility = 7  // store-facility-list-extended | ||||
| 	ldisp  facility = 18 // long-displacement | ||||
| 	eimm   facility = 21 // extended-immediate | ||||
|  | ||||
| 	// miscellaneous facilities | ||||
| 	dfp    facility = 42 // decimal-floating-point | ||||
| 	etf3eh facility = 30 // extended-translation 3 enhancement | ||||
|  | ||||
| 	// cryptography facilities | ||||
| 	msa  facility = 17  // message-security-assist | ||||
| 	msa3 facility = 76  // message-security-assist extension 3 | ||||
| 	msa4 facility = 77  // message-security-assist extension 4 | ||||
| 	msa5 facility = 57  // message-security-assist extension 5 | ||||
| 	msa8 facility = 146 // message-security-assist extension 8 | ||||
| 	msa9 facility = 155 // message-security-assist extension 9 | ||||
|  | ||||
| 	// vector facilities | ||||
| 	vx   facility = 129 // vector facility | ||||
| 	vxe  facility = 135 // vector-enhancements 1 | ||||
| 	vxe2 facility = 148 // vector-enhancements 2 | ||||
| ) | ||||
|  | ||||
| // facilityList contains the result of an STFLE call. | ||||
| // Bits are numbered in big endian order so the | ||||
| // leftmost bit (the MSB) is at index 0. | ||||
| type facilityList struct { | ||||
| 	bits [4]uint64 | ||||
| } | ||||
|  | ||||
| // Has reports whether the given facilities are present. | ||||
| func (s *facilityList) Has(fs ...facility) bool { | ||||
| 	if len(fs) == 0 { | ||||
| 		panic("no facility bits provided") | ||||
| 	} | ||||
| 	for _, f := range fs { | ||||
| 		if !bitIsSet(s.bits[:], uint(f)) { | ||||
| 			return false | ||||
| 		} | ||||
| 	} | ||||
| 	return true | ||||
| } | ||||
|  | ||||
| // function is the code for the named cryptographic function. | ||||
| type function uint8 | ||||
|  | ||||
| const ( | ||||
| 	// KM{,A,C,CTR} function codes | ||||
| 	aes128 function = 18 // AES-128 | ||||
| 	aes192 function = 19 // AES-192 | ||||
| 	aes256 function = 20 // AES-256 | ||||
|  | ||||
| 	// K{I,L}MD function codes | ||||
| 	sha1     function = 1  // SHA-1 | ||||
| 	sha256   function = 2  // SHA-256 | ||||
| 	sha512   function = 3  // SHA-512 | ||||
| 	sha3_224 function = 32 // SHA3-224 | ||||
| 	sha3_256 function = 33 // SHA3-256 | ||||
| 	sha3_384 function = 34 // SHA3-384 | ||||
| 	sha3_512 function = 35 // SHA3-512 | ||||
| 	shake128 function = 36 // SHAKE-128 | ||||
| 	shake256 function = 37 // SHAKE-256 | ||||
|  | ||||
| 	// KLMD function codes | ||||
| 	ghash function = 65 // GHASH | ||||
| ) | ||||
|  | ||||
| // queryResult contains the result of a Query function | ||||
| // call. Bits are numbered in big endian order so the | ||||
| // leftmost bit (the MSB) is at index 0. | ||||
| type queryResult struct { | ||||
| 	bits [2]uint64 | ||||
| } | ||||
|  | ||||
| // Has reports whether the given functions are present. | ||||
| func (q *queryResult) Has(fns ...function) bool { | ||||
| 	if len(fns) == 0 { | ||||
| 		panic("no function codes provided") | ||||
| 	} | ||||
| 	for _, f := range fns { | ||||
| 		if !bitIsSet(q.bits[:], uint(f)) { | ||||
| 			return false | ||||
| 		} | ||||
| 	} | ||||
| 	return true | ||||
| } | ||||
|  | ||||
| func doinit() { | ||||
| 	initS390Xbase() | ||||
|  | ||||
| 	// We need implementations of stfle, km and so on | ||||
| 	// to detect cryptographic features. | ||||
| 	if !haveAsmFunctions() { | ||||
| 		return | ||||
| 	} | ||||
|  | ||||
| 	// optional cryptographic functions | ||||
| 	if S390X.HasMSA { | ||||
| 		aes := []function{aes128, aes192, aes256} | ||||
|  | ||||
| 		// cipher message | ||||
| 		km, kmc := kmQuery(), kmcQuery() | ||||
| 		S390X.HasAES = km.Has(aes...) | ||||
| 		S390X.HasAESCBC = kmc.Has(aes...) | ||||
| 		if S390X.HasSTFLE { | ||||
| 			facilities := stfle() | ||||
| 			if facilities.Has(msa4) { | ||||
| 				kmctr := kmctrQuery() | ||||
| 				S390X.HasAESCTR = kmctr.Has(aes...) | ||||
| 			} | ||||
| 			if facilities.Has(msa8) { | ||||
| 				kma := kmaQuery() | ||||
| 				S390X.HasAESGCM = kma.Has(aes...) | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		// compute message digest | ||||
| 		kimd := kimdQuery() // intermediate (no padding) | ||||
| 		klmd := klmdQuery() // last (padding) | ||||
| 		S390X.HasSHA1 = kimd.Has(sha1) && klmd.Has(sha1) | ||||
| 		S390X.HasSHA256 = kimd.Has(sha256) && klmd.Has(sha256) | ||||
| 		S390X.HasSHA512 = kimd.Has(sha512) && klmd.Has(sha512) | ||||
| 		S390X.HasGHASH = kimd.Has(ghash) // KLMD-GHASH does not exist | ||||
| 		sha3 := []function{ | ||||
| 			sha3_224, sha3_256, sha3_384, sha3_512, | ||||
| 			shake128, shake256, | ||||
| 		} | ||||
| 		S390X.HasSHA3 = kimd.Has(sha3...) && klmd.Has(sha3...) | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										58
									
								
								vendor/golang.org/x/sys/cpu/cpu_s390x.s
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								vendor/golang.org/x/sys/cpu/cpu_s390x.s
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,58 @@ | ||||
| // 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. | ||||
|  | ||||
| //go:build gc | ||||
| // +build gc | ||||
|  | ||||
| #include "textflag.h" | ||||
|  | ||||
| // func stfle() facilityList | ||||
| TEXT ·stfle(SB), NOSPLIT|NOFRAME, $0-32 | ||||
| 	MOVD $ret+0(FP), R1 | ||||
| 	MOVD $3, R0          // last doubleword index to store | ||||
| 	XC   $32, (R1), (R1) // clear 4 doublewords (32 bytes) | ||||
| 	WORD $0xb2b01000     // store facility list extended (STFLE) | ||||
| 	RET | ||||
|  | ||||
| // func kmQuery() queryResult | ||||
| TEXT ·kmQuery(SB), NOSPLIT|NOFRAME, $0-16 | ||||
| 	MOVD $0, R0         // set function code to 0 (KM-Query) | ||||
| 	MOVD $ret+0(FP), R1 // address of 16-byte return value | ||||
| 	WORD $0xB92E0024    // cipher message (KM) | ||||
| 	RET | ||||
|  | ||||
| // func kmcQuery() queryResult | ||||
| TEXT ·kmcQuery(SB), NOSPLIT|NOFRAME, $0-16 | ||||
| 	MOVD $0, R0         // set function code to 0 (KMC-Query) | ||||
| 	MOVD $ret+0(FP), R1 // address of 16-byte return value | ||||
| 	WORD $0xB92F0024    // cipher message with chaining (KMC) | ||||
| 	RET | ||||
|  | ||||
| // func kmctrQuery() queryResult | ||||
| TEXT ·kmctrQuery(SB), NOSPLIT|NOFRAME, $0-16 | ||||
| 	MOVD $0, R0         // set function code to 0 (KMCTR-Query) | ||||
| 	MOVD $ret+0(FP), R1 // address of 16-byte return value | ||||
| 	WORD $0xB92D4024    // cipher message with counter (KMCTR) | ||||
| 	RET | ||||
|  | ||||
| // func kmaQuery() queryResult | ||||
| TEXT ·kmaQuery(SB), NOSPLIT|NOFRAME, $0-16 | ||||
| 	MOVD $0, R0         // set function code to 0 (KMA-Query) | ||||
| 	MOVD $ret+0(FP), R1 // address of 16-byte return value | ||||
| 	WORD $0xb9296024    // cipher message with authentication (KMA) | ||||
| 	RET | ||||
|  | ||||
| // func kimdQuery() queryResult | ||||
| TEXT ·kimdQuery(SB), NOSPLIT|NOFRAME, $0-16 | ||||
| 	MOVD $0, R0         // set function code to 0 (KIMD-Query) | ||||
| 	MOVD $ret+0(FP), R1 // address of 16-byte return value | ||||
| 	WORD $0xB93E0024    // compute intermediate message digest (KIMD) | ||||
| 	RET | ||||
|  | ||||
| // func klmdQuery() queryResult | ||||
| TEXT ·klmdQuery(SB), NOSPLIT|NOFRAME, $0-16 | ||||
| 	MOVD $0, R0         // set function code to 0 (KLMD-Query) | ||||
| 	MOVD $ret+0(FP), R1 // address of 16-byte return value | ||||
| 	WORD $0xB93F0024    // compute last message digest (KLMD) | ||||
| 	RET | ||||
							
								
								
									
										18
									
								
								vendor/golang.org/x/sys/cpu/cpu_wasm.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								vendor/golang.org/x/sys/cpu/cpu_wasm.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | ||||
| // 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. | ||||
|  | ||||
| //go:build wasm | ||||
| // +build wasm | ||||
|  | ||||
| package cpu | ||||
|  | ||||
| // We're compiling the cpu package for an unknown (software-abstracted) CPU. | ||||
| // Make CacheLinePad an empty struct and hope that the usual struct alignment | ||||
| // rules are good enough. | ||||
|  | ||||
| const cacheLineSize = 0 | ||||
|  | ||||
| func initOptions() {} | ||||
|  | ||||
| func archInit() {} | ||||
							
								
								
									
										145
									
								
								vendor/golang.org/x/sys/cpu/cpu_x86.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										145
									
								
								vendor/golang.org/x/sys/cpu/cpu_x86.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,145 @@ | ||||
| // 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. | ||||
|  | ||||
| //go:build 386 || amd64 || amd64p32 | ||||
| // +build 386 amd64 amd64p32 | ||||
|  | ||||
| package cpu | ||||
|  | ||||
| import "runtime" | ||||
|  | ||||
| const cacheLineSize = 64 | ||||
|  | ||||
| func initOptions() { | ||||
| 	options = []option{ | ||||
| 		{Name: "adx", Feature: &X86.HasADX}, | ||||
| 		{Name: "aes", Feature: &X86.HasAES}, | ||||
| 		{Name: "avx", Feature: &X86.HasAVX}, | ||||
| 		{Name: "avx2", Feature: &X86.HasAVX2}, | ||||
| 		{Name: "avx512", Feature: &X86.HasAVX512}, | ||||
| 		{Name: "avx512f", Feature: &X86.HasAVX512F}, | ||||
| 		{Name: "avx512cd", Feature: &X86.HasAVX512CD}, | ||||
| 		{Name: "avx512er", Feature: &X86.HasAVX512ER}, | ||||
| 		{Name: "avx512pf", Feature: &X86.HasAVX512PF}, | ||||
| 		{Name: "avx512vl", Feature: &X86.HasAVX512VL}, | ||||
| 		{Name: "avx512bw", Feature: &X86.HasAVX512BW}, | ||||
| 		{Name: "avx512dq", Feature: &X86.HasAVX512DQ}, | ||||
| 		{Name: "avx512ifma", Feature: &X86.HasAVX512IFMA}, | ||||
| 		{Name: "avx512vbmi", Feature: &X86.HasAVX512VBMI}, | ||||
| 		{Name: "avx512vnniw", Feature: &X86.HasAVX5124VNNIW}, | ||||
| 		{Name: "avx5124fmaps", Feature: &X86.HasAVX5124FMAPS}, | ||||
| 		{Name: "avx512vpopcntdq", Feature: &X86.HasAVX512VPOPCNTDQ}, | ||||
| 		{Name: "avx512vpclmulqdq", Feature: &X86.HasAVX512VPCLMULQDQ}, | ||||
| 		{Name: "avx512vnni", Feature: &X86.HasAVX512VNNI}, | ||||
| 		{Name: "avx512gfni", Feature: &X86.HasAVX512GFNI}, | ||||
| 		{Name: "avx512vaes", Feature: &X86.HasAVX512VAES}, | ||||
| 		{Name: "avx512vbmi2", Feature: &X86.HasAVX512VBMI2}, | ||||
| 		{Name: "avx512bitalg", Feature: &X86.HasAVX512BITALG}, | ||||
| 		{Name: "avx512bf16", Feature: &X86.HasAVX512BF16}, | ||||
| 		{Name: "bmi1", Feature: &X86.HasBMI1}, | ||||
| 		{Name: "bmi2", Feature: &X86.HasBMI2}, | ||||
| 		{Name: "cx16", Feature: &X86.HasCX16}, | ||||
| 		{Name: "erms", Feature: &X86.HasERMS}, | ||||
| 		{Name: "fma", Feature: &X86.HasFMA}, | ||||
| 		{Name: "osxsave", Feature: &X86.HasOSXSAVE}, | ||||
| 		{Name: "pclmulqdq", Feature: &X86.HasPCLMULQDQ}, | ||||
| 		{Name: "popcnt", Feature: &X86.HasPOPCNT}, | ||||
| 		{Name: "rdrand", Feature: &X86.HasRDRAND}, | ||||
| 		{Name: "rdseed", Feature: &X86.HasRDSEED}, | ||||
| 		{Name: "sse3", Feature: &X86.HasSSE3}, | ||||
| 		{Name: "sse41", Feature: &X86.HasSSE41}, | ||||
| 		{Name: "sse42", Feature: &X86.HasSSE42}, | ||||
| 		{Name: "ssse3", Feature: &X86.HasSSSE3}, | ||||
|  | ||||
| 		// These capabilities should always be enabled on amd64: | ||||
| 		{Name: "sse2", Feature: &X86.HasSSE2, Required: runtime.GOARCH == "amd64"}, | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func archInit() { | ||||
|  | ||||
| 	Initialized = true | ||||
|  | ||||
| 	maxID, _, _, _ := cpuid(0, 0) | ||||
|  | ||||
| 	if maxID < 1 { | ||||
| 		return | ||||
| 	} | ||||
|  | ||||
| 	_, _, ecx1, edx1 := cpuid(1, 0) | ||||
| 	X86.HasSSE2 = isSet(26, edx1) | ||||
|  | ||||
| 	X86.HasSSE3 = isSet(0, ecx1) | ||||
| 	X86.HasPCLMULQDQ = isSet(1, ecx1) | ||||
| 	X86.HasSSSE3 = isSet(9, ecx1) | ||||
| 	X86.HasFMA = isSet(12, ecx1) | ||||
| 	X86.HasCX16 = isSet(13, ecx1) | ||||
| 	X86.HasSSE41 = isSet(19, ecx1) | ||||
| 	X86.HasSSE42 = isSet(20, ecx1) | ||||
| 	X86.HasPOPCNT = isSet(23, ecx1) | ||||
| 	X86.HasAES = isSet(25, ecx1) | ||||
| 	X86.HasOSXSAVE = isSet(27, ecx1) | ||||
| 	X86.HasRDRAND = isSet(30, ecx1) | ||||
|  | ||||
| 	var osSupportsAVX, osSupportsAVX512 bool | ||||
| 	// For XGETBV, OSXSAVE bit is required and sufficient. | ||||
| 	if X86.HasOSXSAVE { | ||||
| 		eax, _ := xgetbv() | ||||
| 		// Check if XMM and YMM registers have OS support. | ||||
| 		osSupportsAVX = isSet(1, eax) && isSet(2, eax) | ||||
|  | ||||
| 		if runtime.GOOS == "darwin" { | ||||
| 			// Darwin doesn't save/restore AVX-512 mask registers correctly across signal handlers. | ||||
| 			// Since users can't rely on mask register contents, let's not advertise AVX-512 support. | ||||
| 			// See issue 49233. | ||||
| 			osSupportsAVX512 = false | ||||
| 		} else { | ||||
| 			// Check if OPMASK and ZMM registers have OS support. | ||||
| 			osSupportsAVX512 = osSupportsAVX && isSet(5, eax) && isSet(6, eax) && isSet(7, eax) | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	X86.HasAVX = isSet(28, ecx1) && osSupportsAVX | ||||
|  | ||||
| 	if maxID < 7 { | ||||
| 		return | ||||
| 	} | ||||
|  | ||||
| 	_, ebx7, ecx7, edx7 := cpuid(7, 0) | ||||
| 	X86.HasBMI1 = isSet(3, ebx7) | ||||
| 	X86.HasAVX2 = isSet(5, ebx7) && osSupportsAVX | ||||
| 	X86.HasBMI2 = isSet(8, ebx7) | ||||
| 	X86.HasERMS = isSet(9, ebx7) | ||||
| 	X86.HasRDSEED = isSet(18, ebx7) | ||||
| 	X86.HasADX = isSet(19, ebx7) | ||||
|  | ||||
| 	X86.HasAVX512 = isSet(16, ebx7) && osSupportsAVX512 // Because avx-512 foundation is the core required extension | ||||
| 	if X86.HasAVX512 { | ||||
| 		X86.HasAVX512F = true | ||||
| 		X86.HasAVX512CD = isSet(28, ebx7) | ||||
| 		X86.HasAVX512ER = isSet(27, ebx7) | ||||
| 		X86.HasAVX512PF = isSet(26, ebx7) | ||||
| 		X86.HasAVX512VL = isSet(31, ebx7) | ||||
| 		X86.HasAVX512BW = isSet(30, ebx7) | ||||
| 		X86.HasAVX512DQ = isSet(17, ebx7) | ||||
| 		X86.HasAVX512IFMA = isSet(21, ebx7) | ||||
| 		X86.HasAVX512VBMI = isSet(1, ecx7) | ||||
| 		X86.HasAVX5124VNNIW = isSet(2, edx7) | ||||
| 		X86.HasAVX5124FMAPS = isSet(3, edx7) | ||||
| 		X86.HasAVX512VPOPCNTDQ = isSet(14, ecx7) | ||||
| 		X86.HasAVX512VPCLMULQDQ = isSet(10, ecx7) | ||||
| 		X86.HasAVX512VNNI = isSet(11, ecx7) | ||||
| 		X86.HasAVX512GFNI = isSet(8, ecx7) | ||||
| 		X86.HasAVX512VAES = isSet(9, ecx7) | ||||
| 		X86.HasAVX512VBMI2 = isSet(6, ecx7) | ||||
| 		X86.HasAVX512BITALG = isSet(12, ecx7) | ||||
|  | ||||
| 		eax71, _, _, _ := cpuid(7, 1) | ||||
| 		X86.HasAVX512BF16 = isSet(5, eax71) | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func isSet(bitpos uint, value uint32) bool { | ||||
| 	return value&(1<<bitpos) != 0 | ||||
| } | ||||
							
								
								
									
										28
									
								
								vendor/golang.org/x/sys/cpu/cpu_x86.s
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								vendor/golang.org/x/sys/cpu/cpu_x86.s
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,28 @@ | ||||
| // 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. | ||||
|  | ||||
| //go:build (386 || amd64 || amd64p32) && gc | ||||
| // +build 386 amd64 amd64p32 | ||||
| // +build gc | ||||
|  | ||||
| #include "textflag.h" | ||||
|  | ||||
| // func cpuid(eaxArg, ecxArg uint32) (eax, ebx, ecx, edx uint32) | ||||
| TEXT ·cpuid(SB), NOSPLIT, $0-24 | ||||
| 	MOVL eaxArg+0(FP), AX | ||||
| 	MOVL ecxArg+4(FP), CX | ||||
| 	CPUID | ||||
| 	MOVL AX, eax+8(FP) | ||||
| 	MOVL BX, ebx+12(FP) | ||||
| 	MOVL CX, ecx+16(FP) | ||||
| 	MOVL DX, edx+20(FP) | ||||
| 	RET | ||||
|  | ||||
| // func xgetbv() (eax, edx uint32) | ||||
| TEXT ·xgetbv(SB),NOSPLIT,$0-8 | ||||
| 	MOVL $0, CX | ||||
| 	XGETBV | ||||
| 	MOVL AX, eax+0(FP) | ||||
| 	MOVL DX, edx+4(FP) | ||||
| 	RET | ||||
							
								
								
									
										10
									
								
								vendor/golang.org/x/sys/cpu/cpu_zos.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								vendor/golang.org/x/sys/cpu/cpu_zos.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | ||||
| // Copyright 2020 The Go Authors. All rights reserved. | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
|  | ||||
| package cpu | ||||
|  | ||||
| func archInit() { | ||||
| 	doinit() | ||||
| 	Initialized = true | ||||
| } | ||||
							
								
								
									
										25
									
								
								vendor/golang.org/x/sys/cpu/cpu_zos_s390x.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								vendor/golang.org/x/sys/cpu/cpu_zos_s390x.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,25 @@ | ||||
| // Copyright 2020 The Go Authors. All rights reserved. | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
|  | ||||
| package cpu | ||||
|  | ||||
| func initS390Xbase() { | ||||
| 	// get the facilities list | ||||
| 	facilities := stfle() | ||||
|  | ||||
| 	// mandatory | ||||
| 	S390X.HasZARCH = facilities.Has(zarch) | ||||
| 	S390X.HasSTFLE = facilities.Has(stflef) | ||||
| 	S390X.HasLDISP = facilities.Has(ldisp) | ||||
| 	S390X.HasEIMM = facilities.Has(eimm) | ||||
|  | ||||
| 	// optional | ||||
| 	S390X.HasETF3EH = facilities.Has(etf3eh) | ||||
| 	S390X.HasDFP = facilities.Has(dfp) | ||||
| 	S390X.HasMSA = facilities.Has(msa) | ||||
| 	S390X.HasVX = facilities.Has(vx) | ||||
| 	if S390X.HasVX { | ||||
| 		S390X.HasVXE = facilities.Has(vxe) | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										11
									
								
								vendor/golang.org/x/sys/cpu/endian_big.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								vendor/golang.org/x/sys/cpu/endian_big.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | ||||
| // Copyright 2023 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 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 cpu | ||||
|  | ||||
| // IsBigEndian records whether the GOARCH's byte order is big endian. | ||||
| const IsBigEndian = true | ||||
							
								
								
									
										11
									
								
								vendor/golang.org/x/sys/cpu/endian_little.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								vendor/golang.org/x/sys/cpu/endian_little.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | ||||
| // Copyright 2023 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 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 cpu | ||||
|  | ||||
| // IsBigEndian records whether the GOARCH's byte order is big endian. | ||||
| const IsBigEndian = false | ||||
							
								
								
									
										56
									
								
								vendor/golang.org/x/sys/cpu/hwcap_linux.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								vendor/golang.org/x/sys/cpu/hwcap_linux.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,56 @@ | ||||
| // 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. | ||||
|  | ||||
| package cpu | ||||
|  | ||||
| import ( | ||||
| 	"io/ioutil" | ||||
| ) | ||||
|  | ||||
| const ( | ||||
| 	_AT_HWCAP  = 16 | ||||
| 	_AT_HWCAP2 = 26 | ||||
|  | ||||
| 	procAuxv = "/proc/self/auxv" | ||||
|  | ||||
| 	uintSize = int(32 << (^uint(0) >> 63)) | ||||
| ) | ||||
|  | ||||
| // For those platforms don't have a 'cpuid' equivalent we use HWCAP/HWCAP2 | ||||
| // These are initialized in cpu_$GOARCH.go | ||||
| // and should not be changed after they are initialized. | ||||
| var hwCap uint | ||||
| var hwCap2 uint | ||||
|  | ||||
| func readHWCAP() error { | ||||
| 	buf, err := ioutil.ReadFile(procAuxv) | ||||
| 	if err != nil { | ||||
| 		// e.g. on android /proc/self/auxv is not accessible, so silently | ||||
| 		// ignore the error and leave Initialized = false. On some | ||||
| 		// architectures (e.g. arm64) doinit() implements a fallback | ||||
| 		// readout and will set Initialized = true again. | ||||
| 		return err | ||||
| 	} | ||||
| 	bo := hostByteOrder() | ||||
| 	for len(buf) >= 2*(uintSize/8) { | ||||
| 		var tag, val uint | ||||
| 		switch uintSize { | ||||
| 		case 32: | ||||
| 			tag = uint(bo.Uint32(buf[0:])) | ||||
| 			val = uint(bo.Uint32(buf[4:])) | ||||
| 			buf = buf[8:] | ||||
| 		case 64: | ||||
| 			tag = uint(bo.Uint64(buf[0:])) | ||||
| 			val = uint(bo.Uint64(buf[8:])) | ||||
| 			buf = buf[16:] | ||||
| 		} | ||||
| 		switch tag { | ||||
| 		case _AT_HWCAP: | ||||
| 			hwCap = val | ||||
| 		case _AT_HWCAP2: | ||||
| 			hwCap2 = val | ||||
| 		} | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
							
								
								
									
										43
									
								
								vendor/golang.org/x/sys/cpu/parse.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								vendor/golang.org/x/sys/cpu/parse.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,43 @@ | ||||
| // 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. | ||||
|  | ||||
| package cpu | ||||
|  | ||||
| import "strconv" | ||||
|  | ||||
| // parseRelease parses a dot-separated version number. It follows the semver | ||||
| // syntax, but allows the minor and patch versions to be elided. | ||||
| // | ||||
| // This is a copy of the Go runtime's parseRelease from | ||||
| // https://golang.org/cl/209597. | ||||
| func parseRelease(rel string) (major, minor, patch int, ok bool) { | ||||
| 	// Strip anything after a dash or plus. | ||||
| 	for i := 0; i < len(rel); i++ { | ||||
| 		if rel[i] == '-' || rel[i] == '+' { | ||||
| 			rel = rel[:i] | ||||
| 			break | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	next := func() (int, bool) { | ||||
| 		for i := 0; i < len(rel); i++ { | ||||
| 			if rel[i] == '.' { | ||||
| 				ver, err := strconv.Atoi(rel[:i]) | ||||
| 				rel = rel[i+1:] | ||||
| 				return ver, err == nil | ||||
| 			} | ||||
| 		} | ||||
| 		ver, err := strconv.Atoi(rel) | ||||
| 		rel = "" | ||||
| 		return ver, err == nil | ||||
| 	} | ||||
| 	if major, ok = next(); !ok || rel == "" { | ||||
| 		return | ||||
| 	} | ||||
| 	if minor, ok = next(); !ok || rel == "" { | ||||
| 		return | ||||
| 	} | ||||
| 	patch, ok = next() | ||||
| 	return | ||||
| } | ||||
							
								
								
									
										54
									
								
								vendor/golang.org/x/sys/cpu/proc_cpuinfo_linux.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								vendor/golang.org/x/sys/cpu/proc_cpuinfo_linux.go
									
									
									
										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 && arm64 | ||||
| // +build linux,arm64 | ||||
|  | ||||
| package cpu | ||||
|  | ||||
| import ( | ||||
| 	"errors" | ||||
| 	"io" | ||||
| 	"os" | ||||
| 	"strings" | ||||
| ) | ||||
|  | ||||
| func readLinuxProcCPUInfo() error { | ||||
| 	f, err := os.Open("/proc/cpuinfo") | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	defer f.Close() | ||||
|  | ||||
| 	var buf [1 << 10]byte // enough for first CPU | ||||
| 	n, err := io.ReadFull(f, buf[:]) | ||||
| 	if err != nil && err != io.ErrUnexpectedEOF { | ||||
| 		return err | ||||
| 	} | ||||
| 	in := string(buf[:n]) | ||||
| 	const features = "\nFeatures	: " | ||||
| 	i := strings.Index(in, features) | ||||
| 	if i == -1 { | ||||
| 		return errors.New("no CPU features found") | ||||
| 	} | ||||
| 	in = in[i+len(features):] | ||||
| 	if i := strings.Index(in, "\n"); i != -1 { | ||||
| 		in = in[:i] | ||||
| 	} | ||||
| 	m := map[string]*bool{} | ||||
|  | ||||
| 	initOptions() // need it early here; it's harmless to call twice | ||||
| 	for _, o := range options { | ||||
| 		m[o.Name] = o.Feature | ||||
| 	} | ||||
| 	// The EVTSTRM field has alias "evstrm" in Go, but Linux calls it "evtstrm". | ||||
| 	m["evtstrm"] = &ARM64.HasEVTSTRM | ||||
|  | ||||
| 	for _, f := range strings.Fields(in) { | ||||
| 		if p, ok := m[f]; ok { | ||||
| 			*p = true | ||||
| 		} | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
							
								
								
									
										27
									
								
								vendor/golang.org/x/sys/cpu/syscall_aix_gccgo.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								vendor/golang.org/x/sys/cpu/syscall_aix_gccgo.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | ||||
| // Copyright 2020 The Go Authors. All rights reserved. | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
|  | ||||
| // Recreate a getsystemcfg syscall handler instead of | ||||
| // using the one provided by x/sys/unix to avoid having | ||||
| // the dependency between them. (See golang.org/issue/32102) | ||||
| // Moreover, this file will be used during the building of | ||||
| // gccgo's libgo and thus must not used a CGo method. | ||||
|  | ||||
| //go:build aix && gccgo | ||||
| // +build aix,gccgo | ||||
|  | ||||
| package cpu | ||||
|  | ||||
| import ( | ||||
| 	"syscall" | ||||
| ) | ||||
|  | ||||
| //extern getsystemcfg | ||||
| func gccgoGetsystemcfg(label uint32) (r uint64) | ||||
|  | ||||
| func callgetsystemcfg(label int) (r1 uintptr, e1 syscall.Errno) { | ||||
| 	r1 = uintptr(gccgoGetsystemcfg(uint32(label))) | ||||
| 	e1 = syscall.GetErrno() | ||||
| 	return | ||||
| } | ||||
							
								
								
									
										36
									
								
								vendor/golang.org/x/sys/cpu/syscall_aix_ppc64_gc.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								vendor/golang.org/x/sys/cpu/syscall_aix_ppc64_gc.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,36 @@ | ||||
| // 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. | ||||
|  | ||||
| // Minimal copy of x/sys/unix so the cpu package can make a | ||||
| // system call on AIX without depending on x/sys/unix. | ||||
| // (See golang.org/issue/32102) | ||||
|  | ||||
| //go:build aix && ppc64 && gc | ||||
| // +build aix,ppc64,gc | ||||
|  | ||||
| package cpu | ||||
|  | ||||
| import ( | ||||
| 	"syscall" | ||||
| 	"unsafe" | ||||
| ) | ||||
|  | ||||
| //go:cgo_import_dynamic libc_getsystemcfg getsystemcfg "libc.a/shr_64.o" | ||||
|  | ||||
| //go:linkname libc_getsystemcfg libc_getsystemcfg | ||||
|  | ||||
| type syscallFunc uintptr | ||||
|  | ||||
| var libc_getsystemcfg syscallFunc | ||||
|  | ||||
| type errno = syscall.Errno | ||||
|  | ||||
| // Implemented in runtime/syscall_aix.go. | ||||
| func rawSyscall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err errno) | ||||
| func syscall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err errno) | ||||
|  | ||||
| func callgetsystemcfg(label int) (r1 uintptr, e1 errno) { | ||||
| 	r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getsystemcfg)), 1, uintptr(label), 0, 0, 0, 0, 0) | ||||
| 	return | ||||
| } | ||||
							
								
								
									
										4
									
								
								vendor/golang.org/x/sys/unix/gccgo_c.c
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/golang.org/x/sys/unix/gccgo_c.c
									
									
									
										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,!hurd | ||||
| // +build !aix,!hurd | ||||
| //go:build gccgo && !aix && !hurd | ||||
| // +build gccgo,!aix,!hurd | ||||
|  | ||||
| #include <errno.h> | ||||
| #include <stdint.h> | ||||
|   | ||||
							
								
								
									
										1
									
								
								vendor/golang.org/x/sys/unix/syscall_darwin.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/sys/unix/syscall_darwin.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -230,6 +230,7 @@ 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) } | ||||
| func PtraceDenyAttach() (err error)    { return ptrace(PT_DENY_ATTACH, 0, 0, 0) } | ||||
|  | ||||
| //sysnb	pipe(p *[2]int32) (err error) | ||||
|  | ||||
|   | ||||
							
								
								
									
										9
									
								
								vendor/golang.org/x/sys/unix/syscall_freebsd_386.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								vendor/golang.org/x/sys/unix/syscall_freebsd_386.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -60,8 +60,13 @@ func PtraceGetFsBase(pid int, fsbase *int64) (err error) { | ||||
| 	return ptrace(PT_GETFSBASE, pid, uintptr(unsafe.Pointer(fsbase)), 0) | ||||
| } | ||||
|  | ||||
| func PtraceIO(req int, pid int, addr uintptr, out []byte, countin int) (count int, err error) { | ||||
| 	ioDesc := PtraceIoDesc{Op: int32(req), Offs: uintptr(unsafe.Pointer(addr)), Addr: uintptr(unsafe.Pointer(&out[0])), Len: uint32(countin)} | ||||
| func PtraceIO(req int, pid int, offs uintptr, out []byte, countin int) (count int, err error) { | ||||
| 	ioDesc := PtraceIoDesc{ | ||||
| 		Op:   int32(req), | ||||
| 		Offs: offs, | ||||
| 		Addr: uintptr(unsafe.Pointer(&out[0])), // TODO(#58351): this is not safe. | ||||
| 		Len:  uint32(countin), | ||||
| 	} | ||||
| 	err = ptrace(PT_IO, pid, uintptr(unsafe.Pointer(&ioDesc)), 0) | ||||
| 	return int(ioDesc.Len), err | ||||
| } | ||||
|   | ||||
							
								
								
									
										9
									
								
								vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -60,8 +60,13 @@ func PtraceGetFsBase(pid int, fsbase *int64) (err error) { | ||||
| 	return ptrace(PT_GETFSBASE, pid, uintptr(unsafe.Pointer(fsbase)), 0) | ||||
| } | ||||
|  | ||||
| func PtraceIO(req int, pid int, addr uintptr, out []byte, countin int) (count int, err error) { | ||||
| 	ioDesc := PtraceIoDesc{Op: int32(req), Offs: uintptr(unsafe.Pointer(addr)), Addr: uintptr(unsafe.Pointer(&out[0])), Len: uint64(countin)} | ||||
| func PtraceIO(req int, pid int, offs uintptr, out []byte, countin int) (count int, err error) { | ||||
| 	ioDesc := PtraceIoDesc{ | ||||
| 		Op:   int32(req), | ||||
| 		Offs: offs, | ||||
| 		Addr: uintptr(unsafe.Pointer(&out[0])), // TODO(#58351): this is not safe. | ||||
| 		Len:  uint64(countin), | ||||
| 	} | ||||
| 	err = ptrace(PT_IO, pid, uintptr(unsafe.Pointer(&ioDesc)), 0) | ||||
| 	return int(ioDesc.Len), err | ||||
| } | ||||
|   | ||||
							
								
								
									
										9
									
								
								vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -56,8 +56,13 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e | ||||
|  | ||||
| func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) | ||||
|  | ||||
| func PtraceIO(req int, pid int, addr uintptr, out []byte, countin int) (count int, err error) { | ||||
| 	ioDesc := PtraceIoDesc{Op: int32(req), Offs: uintptr(unsafe.Pointer(addr)), Addr: uintptr(unsafe.Pointer(&out[0])), Len: uint32(countin)} | ||||
| func PtraceIO(req int, pid int, offs uintptr, out []byte, countin int) (count int, err error) { | ||||
| 	ioDesc := PtraceIoDesc{ | ||||
| 		Op:   int32(req), | ||||
| 		Offs: offs, | ||||
| 		Addr: uintptr(unsafe.Pointer(&out[0])), // TODO(#58351): this is not safe. | ||||
| 		Len:  uint32(countin), | ||||
| 	} | ||||
| 	err = ptrace(PT_IO, pid, uintptr(unsafe.Pointer(&ioDesc)), 0) | ||||
| 	return int(ioDesc.Len), err | ||||
| } | ||||
|   | ||||
							
								
								
									
										9
									
								
								vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -56,8 +56,13 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e | ||||
|  | ||||
| func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) | ||||
|  | ||||
| func PtraceIO(req int, pid int, addr uintptr, out []byte, countin int) (count int, err error) { | ||||
| 	ioDesc := PtraceIoDesc{Op: int32(req), Offs: uintptr(unsafe.Pointer(addr)), Addr: uintptr(unsafe.Pointer(&out[0])), Len: uint64(countin)} | ||||
| func PtraceIO(req int, pid int, offs uintptr, out []byte, countin int) (count int, err error) { | ||||
| 	ioDesc := PtraceIoDesc{ | ||||
| 		Op:   int32(req), | ||||
| 		Offs: offs, | ||||
| 		Addr: uintptr(unsafe.Pointer(&out[0])), // TODO(#58351): this is not safe. | ||||
| 		Len:  uint64(countin), | ||||
| 	} | ||||
| 	err = ptrace(PT_IO, pid, uintptr(unsafe.Pointer(&ioDesc)), 0) | ||||
| 	return int(ioDesc.Len), err | ||||
| } | ||||
|   | ||||
							
								
								
									
										9
									
								
								vendor/golang.org/x/sys/unix/syscall_freebsd_riscv64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								vendor/golang.org/x/sys/unix/syscall_freebsd_riscv64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -56,8 +56,13 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e | ||||
|  | ||||
| func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) | ||||
|  | ||||
| func PtraceIO(req int, pid int, addr uintptr, out []byte, countin int) (count int, err error) { | ||||
| 	ioDesc := PtraceIoDesc{Op: int32(req), Offs: uintptr(unsafe.Pointer(addr)), Addr: uintptr(unsafe.Pointer(&out[0])), Len: uint64(countin)} | ||||
| func PtraceIO(req int, pid int, offs uintptr, out []byte, countin int) (count int, err error) { | ||||
| 	ioDesc := PtraceIoDesc{ | ||||
| 		Op:   int32(req), | ||||
| 		Offs: offs, | ||||
| 		Addr: uintptr(unsafe.Pointer(&out[0])), // TODO(#58351): this is not safe. | ||||
| 		Len:  uint64(countin), | ||||
| 	} | ||||
| 	err = ptrace(PT_IO, pid, uintptr(unsafe.Pointer(&ioDesc)), 0) | ||||
| 	return int(ioDesc.Len), err | ||||
| } | ||||
|   | ||||
							
								
								
									
										3
									
								
								vendor/golang.org/x/sys/unix/syscall_linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/golang.org/x/sys/unix/syscall_linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1800,6 +1800,7 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e | ||||
| //sysnb	Capset(hdr *CapUserHeader, data *CapUserData) (err error) | ||||
| //sys	Chdir(path string) (err error) | ||||
| //sys	Chroot(path string) (err error) | ||||
| //sys	ClockAdjtime(clockid int32, buf *Timex) (state int, err error) | ||||
| //sys	ClockGetres(clockid int32, res *Timespec) (err error) | ||||
| //sys	ClockGettime(clockid int32, time *Timespec) (err error) | ||||
| //sys	ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) | ||||
| @@ -1999,7 +2000,7 @@ func appendBytes(vecs []Iovec, bs [][]byte) []Iovec { | ||||
| // offs2lohi splits offs into its low and high order bits. | ||||
| func offs2lohi(offs int64) (lo, hi uintptr) { | ||||
| 	const longBits = SizeofLong * 8 | ||||
| 	return uintptr(offs), uintptr(uint64(offs) >> longBits) | ||||
| 	return uintptr(offs), uintptr(uint64(offs) >> (longBits - 1) >> 1) // two shifts to avoid false positive in vet | ||||
| } | ||||
|  | ||||
| func Readv(fd int, iovs [][]byte) (n int, err error) { | ||||
|   | ||||
							
								
								
									
										2
									
								
								vendor/golang.org/x/sys/unix/syscall_unix.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/golang.org/x/sys/unix/syscall_unix.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -578,7 +578,7 @@ func Lutimes(path string, tv []Timeval) error { | ||||
| 	return UtimesNanoAt(AT_FDCWD, path, ts, AT_SYMLINK_NOFOLLOW) | ||||
| } | ||||
|  | ||||
| // emptyIovec reports whether there are no bytes in the slice of Iovec. | ||||
| // emptyIovecs reports whether there are no bytes in the slice of Iovec. | ||||
| func emptyIovecs(iov []Iovec) bool { | ||||
| 	for i := range iov { | ||||
| 		if iov[i].Len > 0 { | ||||
|   | ||||
							
								
								
									
										2
									
								
								vendor/golang.org/x/sys/unix/timestruct.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/golang.org/x/sys/unix/timestruct.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -9,7 +9,7 @@ package unix | ||||
|  | ||||
| import "time" | ||||
|  | ||||
| // TimespecToNSec returns the time stored in ts as nanoseconds. | ||||
| // TimespecToNsec returns the time stored in ts as nanoseconds. | ||||
| func TimespecToNsec(ts Timespec) int64 { return ts.Nano() } | ||||
|  | ||||
| // NsecToTimespec converts a number of nanoseconds into a Timespec. | ||||
|   | ||||
							
								
								
									
										9
									
								
								vendor/golang.org/x/sys/unix/xattr_bsd.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								vendor/golang.org/x/sys/unix/xattr_bsd.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -36,9 +36,14 @@ func xattrnamespace(fullattr string) (ns int, attr string, err error) { | ||||
| func initxattrdest(dest []byte, idx int) (d unsafe.Pointer) { | ||||
| 	if len(dest) > idx { | ||||
| 		return unsafe.Pointer(&dest[idx]) | ||||
| 	} else { | ||||
| 		return unsafe.Pointer(_zero) | ||||
| 	} | ||||
| 	if dest != nil { | ||||
| 		// extattr_get_file and extattr_list_file treat NULL differently from | ||||
| 		// a non-NULL pointer of length zero. Preserve the property of nilness, | ||||
| 		// even if we can't use dest directly. | ||||
| 		return unsafe.Pointer(&_zero) | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // FreeBSD and NetBSD implement their own syscalls to handle extended attributes | ||||
|   | ||||
							
								
								
									
										30
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										30
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -457,7 +457,6 @@ const ( | ||||
| 	B600                                        = 0x8 | ||||
| 	B75                                         = 0x2 | ||||
| 	B9600                                       = 0xd | ||||
| 	BALLOON_KVM_MAGIC                           = 0x13661366 | ||||
| 	BDEVFS_MAGIC                                = 0x62646576 | ||||
| 	BINDERFS_SUPER_MAGIC                        = 0x6c6f6f70 | ||||
| 	BINFMTFS_MAGIC                              = 0x42494e4d | ||||
| @@ -563,6 +562,7 @@ const ( | ||||
| 	BUS_USB                                     = 0x3 | ||||
| 	BUS_VIRTUAL                                 = 0x6 | ||||
| 	CAN_BCM                                     = 0x2 | ||||
| 	CAN_BUS_OFF_THRESHOLD                       = 0x100 | ||||
| 	CAN_CTRLMODE_3_SAMPLES                      = 0x4 | ||||
| 	CAN_CTRLMODE_BERR_REPORTING                 = 0x10 | ||||
| 	CAN_CTRLMODE_CC_LEN8_DLC                    = 0x100 | ||||
| @@ -577,9 +577,12 @@ const ( | ||||
| 	CAN_EFF_FLAG                                = 0x80000000 | ||||
| 	CAN_EFF_ID_BITS                             = 0x1d | ||||
| 	CAN_EFF_MASK                                = 0x1fffffff | ||||
| 	CAN_ERROR_PASSIVE_THRESHOLD                 = 0x80 | ||||
| 	CAN_ERROR_WARNING_THRESHOLD                 = 0x60 | ||||
| 	CAN_ERR_ACK                                 = 0x20 | ||||
| 	CAN_ERR_BUSERROR                            = 0x80 | ||||
| 	CAN_ERR_BUSOFF                              = 0x40 | ||||
| 	CAN_ERR_CNT                                 = 0x200 | ||||
| 	CAN_ERR_CRTL                                = 0x4 | ||||
| 	CAN_ERR_CRTL_ACTIVE                         = 0x40 | ||||
| 	CAN_ERR_CRTL_RX_OVERFLOW                    = 0x1 | ||||
| @@ -820,9 +823,9 @@ const ( | ||||
| 	DM_UUID_FLAG                                = 0x4000 | ||||
| 	DM_UUID_LEN                                 = 0x81 | ||||
| 	DM_VERSION                                  = 0xc138fd00 | ||||
| 	DM_VERSION_EXTRA                            = "-ioctl (2022-02-22)" | ||||
| 	DM_VERSION_EXTRA                            = "-ioctl (2022-07-28)" | ||||
| 	DM_VERSION_MAJOR                            = 0x4 | ||||
| 	DM_VERSION_MINOR                            = 0x2e | ||||
| 	DM_VERSION_MINOR                            = 0x2f | ||||
| 	DM_VERSION_PATCHLEVEL                       = 0x0 | ||||
| 	DT_BLK                                      = 0x6 | ||||
| 	DT_CHR                                      = 0x2 | ||||
| @@ -1049,6 +1052,7 @@ const ( | ||||
| 	ETH_P_CAIF                                  = 0xf7 | ||||
| 	ETH_P_CAN                                   = 0xc | ||||
| 	ETH_P_CANFD                                 = 0xd | ||||
| 	ETH_P_CANXL                                 = 0xe | ||||
| 	ETH_P_CFM                                   = 0x8902 | ||||
| 	ETH_P_CONTROL                               = 0x16 | ||||
| 	ETH_P_CUST                                  = 0x6006 | ||||
| @@ -1060,6 +1064,7 @@ const ( | ||||
| 	ETH_P_DNA_RT                                = 0x6003 | ||||
| 	ETH_P_DSA                                   = 0x1b | ||||
| 	ETH_P_DSA_8021Q                             = 0xdadb | ||||
| 	ETH_P_DSA_A5PSW                             = 0xe001 | ||||
| 	ETH_P_ECONET                                = 0x18 | ||||
| 	ETH_P_EDSA                                  = 0xdada | ||||
| 	ETH_P_ERSPAN                                = 0x88be | ||||
| @@ -1194,8 +1199,10 @@ const ( | ||||
| 	FAN_MARK_EVICTABLE                          = 0x200 | ||||
| 	FAN_MARK_FILESYSTEM                         = 0x100 | ||||
| 	FAN_MARK_FLUSH                              = 0x80 | ||||
| 	FAN_MARK_IGNORE                             = 0x400 | ||||
| 	FAN_MARK_IGNORED_MASK                       = 0x20 | ||||
| 	FAN_MARK_IGNORED_SURV_MODIFY                = 0x40 | ||||
| 	FAN_MARK_IGNORE_SURV                        = 0x440 | ||||
| 	FAN_MARK_INODE                              = 0x0 | ||||
| 	FAN_MARK_MOUNT                              = 0x10 | ||||
| 	FAN_MARK_ONLYDIR                            = 0x8 | ||||
| @@ -1253,6 +1260,7 @@ const ( | ||||
| 	FSCRYPT_MODE_AES_128_CBC                    = 0x5 | ||||
| 	FSCRYPT_MODE_AES_128_CTS                    = 0x6 | ||||
| 	FSCRYPT_MODE_AES_256_CTS                    = 0x4 | ||||
| 	FSCRYPT_MODE_AES_256_HCTR2                  = 0xa | ||||
| 	FSCRYPT_MODE_AES_256_XTS                    = 0x1 | ||||
| 	FSCRYPT_POLICY_FLAGS_PAD_16                 = 0x2 | ||||
| 	FSCRYPT_POLICY_FLAGS_PAD_32                 = 0x3 | ||||
| @@ -1430,6 +1438,7 @@ const ( | ||||
| 	IFF_NOARP                                   = 0x80 | ||||
| 	IFF_NOFILTER                                = 0x1000 | ||||
| 	IFF_NOTRAILERS                              = 0x20 | ||||
| 	IFF_NO_CARRIER                              = 0x40 | ||||
| 	IFF_NO_PI                                   = 0x1000 | ||||
| 	IFF_ONE_QUEUE                               = 0x2000 | ||||
| 	IFF_PERSIST                                 = 0x800 | ||||
| @@ -1805,6 +1814,7 @@ const ( | ||||
| 	MADV_DONTDUMP                               = 0x10 | ||||
| 	MADV_DONTFORK                               = 0xa | ||||
| 	MADV_DONTNEED                               = 0x4 | ||||
| 	MADV_DONTNEED_LOCKED                        = 0x18 | ||||
| 	MADV_FREE                                   = 0x8 | ||||
| 	MADV_HUGEPAGE                               = 0xe | ||||
| 	MADV_HWPOISON                               = 0x64 | ||||
| @@ -1846,7 +1856,7 @@ const ( | ||||
| 	MFD_ALLOW_SEALING                           = 0x2 | ||||
| 	MFD_CLOEXEC                                 = 0x1 | ||||
| 	MFD_HUGETLB                                 = 0x4 | ||||
| 	MFD_HUGE_16GB                               = -0x78000000 | ||||
| 	MFD_HUGE_16GB                               = 0x88000000 | ||||
| 	MFD_HUGE_16MB                               = 0x60000000 | ||||
| 	MFD_HUGE_1GB                                = 0x78000000 | ||||
| 	MFD_HUGE_1MB                                = 0x50000000 | ||||
| @@ -2212,6 +2222,11 @@ const ( | ||||
| 	PERF_AUX_FLAG_PARTIAL                       = 0x4 | ||||
| 	PERF_AUX_FLAG_PMU_FORMAT_TYPE_MASK          = 0xff00 | ||||
| 	PERF_AUX_FLAG_TRUNCATED                     = 0x1 | ||||
| 	PERF_BR_ARM64_DEBUG_DATA                    = 0x7 | ||||
| 	PERF_BR_ARM64_DEBUG_EXIT                    = 0x5 | ||||
| 	PERF_BR_ARM64_DEBUG_HALT                    = 0x4 | ||||
| 	PERF_BR_ARM64_DEBUG_INST                    = 0x6 | ||||
| 	PERF_BR_ARM64_FIQ                           = 0x3 | ||||
| 	PERF_FLAG_FD_CLOEXEC                        = 0x8 | ||||
| 	PERF_FLAG_FD_NO_GROUP                       = 0x1 | ||||
| 	PERF_FLAG_FD_OUTPUT                         = 0x2 | ||||
| @@ -2232,6 +2247,8 @@ const ( | ||||
| 	PERF_MEM_LOCK_NA                            = 0x1 | ||||
| 	PERF_MEM_LOCK_SHIFT                         = 0x18 | ||||
| 	PERF_MEM_LVLNUM_ANY_CACHE                   = 0xb | ||||
| 	PERF_MEM_LVLNUM_CXL                         = 0x9 | ||||
| 	PERF_MEM_LVLNUM_IO                          = 0xa | ||||
| 	PERF_MEM_LVLNUM_L1                          = 0x1 | ||||
| 	PERF_MEM_LVLNUM_L2                          = 0x2 | ||||
| 	PERF_MEM_LVLNUM_L3                          = 0x3 | ||||
| @@ -2265,6 +2282,7 @@ const ( | ||||
| 	PERF_MEM_REMOTE_REMOTE                      = 0x1 | ||||
| 	PERF_MEM_REMOTE_SHIFT                       = 0x25 | ||||
| 	PERF_MEM_SNOOPX_FWD                         = 0x1 | ||||
| 	PERF_MEM_SNOOPX_PEER                        = 0x2 | ||||
| 	PERF_MEM_SNOOPX_SHIFT                       = 0x26 | ||||
| 	PERF_MEM_SNOOP_HIT                          = 0x4 | ||||
| 	PERF_MEM_SNOOP_HITM                         = 0x10 | ||||
| @@ -2301,7 +2319,6 @@ const ( | ||||
| 	PERF_SAMPLE_BRANCH_PLM_ALL                  = 0x7 | ||||
| 	PERF_SAMPLE_WEIGHT_TYPE                     = 0x1004000 | ||||
| 	PIPEFS_MAGIC                                = 0x50495045 | ||||
| 	PPC_CMM_MAGIC                               = 0xc7571590 | ||||
| 	PPPIOCGNPMODE                               = 0xc008744c | ||||
| 	PPPIOCNEWUNIT                               = 0xc004743e | ||||
| 	PRIO_PGRP                                   = 0x1 | ||||
| @@ -2999,6 +3016,7 @@ const ( | ||||
| 	STATX_BLOCKS                                = 0x400 | ||||
| 	STATX_BTIME                                 = 0x800 | ||||
| 	STATX_CTIME                                 = 0x80 | ||||
| 	STATX_DIOALIGN                              = 0x2000 | ||||
| 	STATX_GID                                   = 0x10 | ||||
| 	STATX_INO                                   = 0x100 | ||||
| 	STATX_MNT_ID                                = 0x1000 | ||||
| @@ -3392,9 +3410,7 @@ const ( | ||||
| 	XDP_ZEROCOPY                                = 0x4 | ||||
| 	XENFS_SUPER_MAGIC                           = 0xabba1974 | ||||
| 	XFS_SUPER_MAGIC                             = 0x58465342 | ||||
| 	Z3FOLD_MAGIC                                = 0x33 | ||||
| 	ZONEFS_MAGIC                                = 0x5a4f4653 | ||||
| 	ZSMALLOC_MAGIC                              = 0x58295829 | ||||
| 	_HIDIOCGRAWNAME_LEN                         = 0x80 | ||||
| 	_HIDIOCGRAWPHYS_LEN                         = 0x40 | ||||
| 	_HIDIOCGRAWUNIQ_LEN                         = 0x40 | ||||
|   | ||||
							
								
								
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_386.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_386.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -133,6 +133,7 @@ const ( | ||||
| 	MEMGETREGIONCOUNT                = 0x80044d07 | ||||
| 	MEMISLOCKED                      = 0x80084d17 | ||||
| 	MEMLOCK                          = 0x40084d05 | ||||
| 	MEMREAD                          = 0xc03c4d1a | ||||
| 	MEMREADOOB                       = 0xc00c4d04 | ||||
| 	MEMSETBADBLOCK                   = 0x40084d0c | ||||
| 	MEMUNLOCK                        = 0x40084d06 | ||||
|   | ||||
							
								
								
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -133,6 +133,7 @@ const ( | ||||
| 	MEMGETREGIONCOUNT                = 0x80044d07 | ||||
| 	MEMISLOCKED                      = 0x80084d17 | ||||
| 	MEMLOCK                          = 0x40084d05 | ||||
| 	MEMREAD                          = 0xc0404d1a | ||||
| 	MEMREADOOB                       = 0xc0104d04 | ||||
| 	MEMSETBADBLOCK                   = 0x40084d0c | ||||
| 	MEMUNLOCK                        = 0x40084d06 | ||||
|   | ||||
							
								
								
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_arm.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_arm.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -131,6 +131,7 @@ const ( | ||||
| 	MEMGETREGIONCOUNT                = 0x80044d07 | ||||
| 	MEMISLOCKED                      = 0x80084d17 | ||||
| 	MEMLOCK                          = 0x40084d05 | ||||
| 	MEMREAD                          = 0xc0404d1a | ||||
| 	MEMREADOOB                       = 0xc00c4d04 | ||||
| 	MEMSETBADBLOCK                   = 0x40084d0c | ||||
| 	MEMUNLOCK                        = 0x40084d06 | ||||
|   | ||||
							
								
								
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -134,6 +134,7 @@ const ( | ||||
| 	MEMGETREGIONCOUNT                = 0x80044d07 | ||||
| 	MEMISLOCKED                      = 0x80084d17 | ||||
| 	MEMLOCK                          = 0x40084d05 | ||||
| 	MEMREAD                          = 0xc0404d1a | ||||
| 	MEMREADOOB                       = 0xc0104d04 | ||||
| 	MEMSETBADBLOCK                   = 0x40084d0c | ||||
| 	MEMUNLOCK                        = 0x40084d06 | ||||
|   | ||||
							
								
								
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -132,6 +132,7 @@ const ( | ||||
| 	MEMGETREGIONCOUNT                = 0x80044d07 | ||||
| 	MEMISLOCKED                      = 0x80084d17 | ||||
| 	MEMLOCK                          = 0x40084d05 | ||||
| 	MEMREAD                          = 0xc0404d1a | ||||
| 	MEMREADOOB                       = 0xc0104d04 | ||||
| 	MEMSETBADBLOCK                   = 0x40084d0c | ||||
| 	MEMUNLOCK                        = 0x40084d06 | ||||
|   | ||||
							
								
								
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_mips.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_mips.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -131,6 +131,7 @@ const ( | ||||
| 	MEMGETREGIONCOUNT                = 0x40044d07 | ||||
| 	MEMISLOCKED                      = 0x40084d17 | ||||
| 	MEMLOCK                          = 0x80084d05 | ||||
| 	MEMREAD                          = 0xc0404d1a | ||||
| 	MEMREADOOB                       = 0xc00c4d04 | ||||
| 	MEMSETBADBLOCK                   = 0x80084d0c | ||||
| 	MEMUNLOCK                        = 0x80084d06 | ||||
|   | ||||
							
								
								
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -131,6 +131,7 @@ const ( | ||||
| 	MEMGETREGIONCOUNT                = 0x40044d07 | ||||
| 	MEMISLOCKED                      = 0x40084d17 | ||||
| 	MEMLOCK                          = 0x80084d05 | ||||
| 	MEMREAD                          = 0xc0404d1a | ||||
| 	MEMREADOOB                       = 0xc0104d04 | ||||
| 	MEMSETBADBLOCK                   = 0x80084d0c | ||||
| 	MEMUNLOCK                        = 0x80084d06 | ||||
|   | ||||
							
								
								
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -131,6 +131,7 @@ const ( | ||||
| 	MEMGETREGIONCOUNT                = 0x40044d07 | ||||
| 	MEMISLOCKED                      = 0x40084d17 | ||||
| 	MEMLOCK                          = 0x80084d05 | ||||
| 	MEMREAD                          = 0xc0404d1a | ||||
| 	MEMREADOOB                       = 0xc0104d04 | ||||
| 	MEMSETBADBLOCK                   = 0x80084d0c | ||||
| 	MEMUNLOCK                        = 0x80084d06 | ||||
|   | ||||
							
								
								
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -131,6 +131,7 @@ const ( | ||||
| 	MEMGETREGIONCOUNT                = 0x40044d07 | ||||
| 	MEMISLOCKED                      = 0x40084d17 | ||||
| 	MEMLOCK                          = 0x80084d05 | ||||
| 	MEMREAD                          = 0xc0404d1a | ||||
| 	MEMREADOOB                       = 0xc00c4d04 | ||||
| 	MEMSETBADBLOCK                   = 0x80084d0c | ||||
| 	MEMUNLOCK                        = 0x80084d06 | ||||
|   | ||||
							
								
								
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -131,6 +131,7 @@ const ( | ||||
| 	MEMGETREGIONCOUNT                = 0x40044d07 | ||||
| 	MEMISLOCKED                      = 0x40084d17 | ||||
| 	MEMLOCK                          = 0x80084d05 | ||||
| 	MEMREAD                          = 0xc0404d1a | ||||
| 	MEMREADOOB                       = 0xc00c4d04 | ||||
| 	MEMSETBADBLOCK                   = 0x80084d0c | ||||
| 	MEMUNLOCK                        = 0x80084d06 | ||||
|   | ||||
							
								
								
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -131,6 +131,7 @@ const ( | ||||
| 	MEMGETREGIONCOUNT                = 0x40044d07 | ||||
| 	MEMISLOCKED                      = 0x40084d17 | ||||
| 	MEMLOCK                          = 0x80084d05 | ||||
| 	MEMREAD                          = 0xc0404d1a | ||||
| 	MEMREADOOB                       = 0xc0104d04 | ||||
| 	MEMSETBADBLOCK                   = 0x80084d0c | ||||
| 	MEMUNLOCK                        = 0x80084d06 | ||||
|   | ||||
							
								
								
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -131,6 +131,7 @@ const ( | ||||
| 	MEMGETREGIONCOUNT                = 0x40044d07 | ||||
| 	MEMISLOCKED                      = 0x40084d17 | ||||
| 	MEMLOCK                          = 0x80084d05 | ||||
| 	MEMREAD                          = 0xc0404d1a | ||||
| 	MEMREADOOB                       = 0xc0104d04 | ||||
| 	MEMSETBADBLOCK                   = 0x80084d0c | ||||
| 	MEMUNLOCK                        = 0x80084d06 | ||||
|   | ||||
							
								
								
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -131,6 +131,7 @@ const ( | ||||
| 	MEMGETREGIONCOUNT                = 0x80044d07 | ||||
| 	MEMISLOCKED                      = 0x80084d17 | ||||
| 	MEMLOCK                          = 0x40084d05 | ||||
| 	MEMREAD                          = 0xc0404d1a | ||||
| 	MEMREADOOB                       = 0xc0104d04 | ||||
| 	MEMSETBADBLOCK                   = 0x40084d0c | ||||
| 	MEMUNLOCK                        = 0x40084d06 | ||||
|   | ||||
							
								
								
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -131,6 +131,7 @@ const ( | ||||
| 	MEMGETREGIONCOUNT                = 0x80044d07 | ||||
| 	MEMISLOCKED                      = 0x80084d17 | ||||
| 	MEMLOCK                          = 0x40084d05 | ||||
| 	MEMREAD                          = 0xc0404d1a | ||||
| 	MEMREADOOB                       = 0xc0104d04 | ||||
| 	MEMSETBADBLOCK                   = 0x40084d0c | ||||
| 	MEMUNLOCK                        = 0x40084d06 | ||||
|   | ||||
							
								
								
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -136,6 +136,7 @@ const ( | ||||
| 	MEMGETREGIONCOUNT                = 0x40044d07 | ||||
| 	MEMISLOCKED                      = 0x40084d17 | ||||
| 	MEMLOCK                          = 0x80084d05 | ||||
| 	MEMREAD                          = 0xc0404d1a | ||||
| 	MEMREADOOB                       = 0xc0104d04 | ||||
| 	MEMSETBADBLOCK                   = 0x80084d0c | ||||
| 	MEMUNLOCK                        = 0x80084d06 | ||||
|   | ||||
							
								
								
									
										11
									
								
								vendor/golang.org/x/sys/unix/zsyscall_linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										11
									
								
								vendor/golang.org/x/sys/unix/zsyscall_linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -537,6 +537,17 @@ func Chroot(path string) (err error) { | ||||
|  | ||||
| // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT | ||||
|  | ||||
| func ClockAdjtime(clockid int32, buf *Timex) (state int, err error) { | ||||
| 	r0, _, e1 := Syscall(SYS_CLOCK_ADJTIME, uintptr(clockid), uintptr(unsafe.Pointer(buf)), 0) | ||||
| 	state = int(r0) | ||||
| 	if e1 != 0 { | ||||
| 		err = errnoErr(e1) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT | ||||
|  | ||||
| func ClockGetres(clockid int32, res *Timespec) (err error) { | ||||
| 	_, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0) | ||||
| 	if e1 != 0 { | ||||
|   | ||||
							
								
								
									
										217
									
								
								vendor/golang.org/x/sys/unix/ztypes_linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										217
									
								
								vendor/golang.org/x/sys/unix/ztypes_linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -29,6 +29,41 @@ type Itimerval struct { | ||||
| 	Value    Timeval | ||||
| } | ||||
|  | ||||
| const ( | ||||
| 	ADJ_OFFSET            = 0x1 | ||||
| 	ADJ_FREQUENCY         = 0x2 | ||||
| 	ADJ_MAXERROR          = 0x4 | ||||
| 	ADJ_ESTERROR          = 0x8 | ||||
| 	ADJ_STATUS            = 0x10 | ||||
| 	ADJ_TIMECONST         = 0x20 | ||||
| 	ADJ_TAI               = 0x80 | ||||
| 	ADJ_SETOFFSET         = 0x100 | ||||
| 	ADJ_MICRO             = 0x1000 | ||||
| 	ADJ_NANO              = 0x2000 | ||||
| 	ADJ_TICK              = 0x4000 | ||||
| 	ADJ_OFFSET_SINGLESHOT = 0x8001 | ||||
| 	ADJ_OFFSET_SS_READ    = 0xa001 | ||||
| ) | ||||
|  | ||||
| const ( | ||||
| 	STA_PLL       = 0x1 | ||||
| 	STA_PPSFREQ   = 0x2 | ||||
| 	STA_PPSTIME   = 0x4 | ||||
| 	STA_FLL       = 0x8 | ||||
| 	STA_INS       = 0x10 | ||||
| 	STA_DEL       = 0x20 | ||||
| 	STA_UNSYNC    = 0x40 | ||||
| 	STA_FREQHOLD  = 0x80 | ||||
| 	STA_PPSSIGNAL = 0x100 | ||||
| 	STA_PPSJITTER = 0x200 | ||||
| 	STA_PPSWANDER = 0x400 | ||||
| 	STA_PPSERROR  = 0x800 | ||||
| 	STA_CLOCKERR  = 0x1000 | ||||
| 	STA_NANO      = 0x2000 | ||||
| 	STA_MODE      = 0x4000 | ||||
| 	STA_CLK       = 0x8000 | ||||
| ) | ||||
|  | ||||
| const ( | ||||
| 	TIME_OK    = 0x0 | ||||
| 	TIME_INS   = 0x1 | ||||
| @@ -53,29 +88,30 @@ type StatxTimestamp struct { | ||||
| } | ||||
|  | ||||
| type Statx_t struct { | ||||
| 	Mask            uint32 | ||||
| 	Blksize         uint32 | ||||
| 	Attributes      uint64 | ||||
| 	Nlink           uint32 | ||||
| 	Uid             uint32 | ||||
| 	Gid             uint32 | ||||
| 	Mode            uint16 | ||||
| 	_               [1]uint16 | ||||
| 	Ino             uint64 | ||||
| 	Size            uint64 | ||||
| 	Blocks          uint64 | ||||
| 	Attributes_mask uint64 | ||||
| 	Atime           StatxTimestamp | ||||
| 	Btime           StatxTimestamp | ||||
| 	Ctime           StatxTimestamp | ||||
| 	Mtime           StatxTimestamp | ||||
| 	Rdev_major      uint32 | ||||
| 	Rdev_minor      uint32 | ||||
| 	Dev_major       uint32 | ||||
| 	Dev_minor       uint32 | ||||
| 	Mnt_id          uint64 | ||||
| 	_               uint64 | ||||
| 	_               [12]uint64 | ||||
| 	Mask             uint32 | ||||
| 	Blksize          uint32 | ||||
| 	Attributes       uint64 | ||||
| 	Nlink            uint32 | ||||
| 	Uid              uint32 | ||||
| 	Gid              uint32 | ||||
| 	Mode             uint16 | ||||
| 	_                [1]uint16 | ||||
| 	Ino              uint64 | ||||
| 	Size             uint64 | ||||
| 	Blocks           uint64 | ||||
| 	Attributes_mask  uint64 | ||||
| 	Atime            StatxTimestamp | ||||
| 	Btime            StatxTimestamp | ||||
| 	Ctime            StatxTimestamp | ||||
| 	Mtime            StatxTimestamp | ||||
| 	Rdev_major       uint32 | ||||
| 	Rdev_minor       uint32 | ||||
| 	Dev_major        uint32 | ||||
| 	Dev_minor        uint32 | ||||
| 	Mnt_id           uint64 | ||||
| 	Dio_mem_align    uint32 | ||||
| 	Dio_offset_align uint32 | ||||
| 	_                [12]uint64 | ||||
| } | ||||
|  | ||||
| type Fsid struct { | ||||
| @@ -1099,7 +1135,8 @@ const ( | ||||
| 	PERF_SAMPLE_BRANCH_NO_CYCLES_SHIFT    = 0xf | ||||
| 	PERF_SAMPLE_BRANCH_TYPE_SAVE_SHIFT    = 0x10 | ||||
| 	PERF_SAMPLE_BRANCH_HW_INDEX_SHIFT     = 0x11 | ||||
| 	PERF_SAMPLE_BRANCH_MAX_SHIFT          = 0x12 | ||||
| 	PERF_SAMPLE_BRANCH_PRIV_SAVE_SHIFT    = 0x12 | ||||
| 	PERF_SAMPLE_BRANCH_MAX_SHIFT          = 0x13 | ||||
| 	PERF_SAMPLE_BRANCH_USER               = 0x1 | ||||
| 	PERF_SAMPLE_BRANCH_KERNEL             = 0x2 | ||||
| 	PERF_SAMPLE_BRANCH_HV                 = 0x4 | ||||
| @@ -1118,7 +1155,8 @@ const ( | ||||
| 	PERF_SAMPLE_BRANCH_NO_CYCLES          = 0x8000 | ||||
| 	PERF_SAMPLE_BRANCH_TYPE_SAVE          = 0x10000 | ||||
| 	PERF_SAMPLE_BRANCH_HW_INDEX           = 0x20000 | ||||
| 	PERF_SAMPLE_BRANCH_MAX                = 0x40000 | ||||
| 	PERF_SAMPLE_BRANCH_PRIV_SAVE          = 0x40000 | ||||
| 	PERF_SAMPLE_BRANCH_MAX                = 0x80000 | ||||
| 	PERF_BR_UNKNOWN                       = 0x0 | ||||
| 	PERF_BR_COND                          = 0x1 | ||||
| 	PERF_BR_UNCOND                        = 0x2 | ||||
| @@ -1132,7 +1170,10 @@ const ( | ||||
| 	PERF_BR_COND_RET                      = 0xa | ||||
| 	PERF_BR_ERET                          = 0xb | ||||
| 	PERF_BR_IRQ                           = 0xc | ||||
| 	PERF_BR_MAX                           = 0xd | ||||
| 	PERF_BR_SERROR                        = 0xd | ||||
| 	PERF_BR_NO_TX                         = 0xe | ||||
| 	PERF_BR_EXTEND_ABI                    = 0xf | ||||
| 	PERF_BR_MAX                           = 0x10 | ||||
| 	PERF_SAMPLE_REGS_ABI_NONE             = 0x0 | ||||
| 	PERF_SAMPLE_REGS_ABI_32               = 0x1 | ||||
| 	PERF_SAMPLE_REGS_ABI_64               = 0x2 | ||||
| @@ -1151,7 +1192,8 @@ const ( | ||||
| 	PERF_FORMAT_TOTAL_TIME_RUNNING        = 0x2 | ||||
| 	PERF_FORMAT_ID                        = 0x4 | ||||
| 	PERF_FORMAT_GROUP                     = 0x8 | ||||
| 	PERF_FORMAT_MAX                       = 0x10 | ||||
| 	PERF_FORMAT_LOST                      = 0x10 | ||||
| 	PERF_FORMAT_MAX                       = 0x20 | ||||
| 	PERF_IOC_FLAG_GROUP                   = 0x1 | ||||
| 	PERF_RECORD_MMAP                      = 0x1 | ||||
| 	PERF_RECORD_LOST                      = 0x2 | ||||
| @@ -2979,7 +3021,16 @@ const ( | ||||
| 	DEVLINK_CMD_TRAP_POLICER_NEW                       = 0x47 | ||||
| 	DEVLINK_CMD_TRAP_POLICER_DEL                       = 0x48 | ||||
| 	DEVLINK_CMD_HEALTH_REPORTER_TEST                   = 0x49 | ||||
| 	DEVLINK_CMD_MAX                                    = 0x51 | ||||
| 	DEVLINK_CMD_RATE_GET                               = 0x4a | ||||
| 	DEVLINK_CMD_RATE_SET                               = 0x4b | ||||
| 	DEVLINK_CMD_RATE_NEW                               = 0x4c | ||||
| 	DEVLINK_CMD_RATE_DEL                               = 0x4d | ||||
| 	DEVLINK_CMD_LINECARD_GET                           = 0x4e | ||||
| 	DEVLINK_CMD_LINECARD_SET                           = 0x4f | ||||
| 	DEVLINK_CMD_LINECARD_NEW                           = 0x50 | ||||
| 	DEVLINK_CMD_LINECARD_DEL                           = 0x51 | ||||
| 	DEVLINK_CMD_SELFTESTS_GET                          = 0x52 | ||||
| 	DEVLINK_CMD_MAX                                    = 0x53 | ||||
| 	DEVLINK_PORT_TYPE_NOTSET                           = 0x0 | ||||
| 	DEVLINK_PORT_TYPE_AUTO                             = 0x1 | ||||
| 	DEVLINK_PORT_TYPE_ETH                              = 0x2 | ||||
| @@ -3208,7 +3259,13 @@ const ( | ||||
| 	DEVLINK_ATTR_RATE_NODE_NAME                        = 0xa8 | ||||
| 	DEVLINK_ATTR_RATE_PARENT_NODE_NAME                 = 0xa9 | ||||
| 	DEVLINK_ATTR_REGION_MAX_SNAPSHOTS                  = 0xaa | ||||
| 	DEVLINK_ATTR_MAX                                   = 0xae | ||||
| 	DEVLINK_ATTR_LINECARD_INDEX                        = 0xab | ||||
| 	DEVLINK_ATTR_LINECARD_STATE                        = 0xac | ||||
| 	DEVLINK_ATTR_LINECARD_TYPE                         = 0xad | ||||
| 	DEVLINK_ATTR_LINECARD_SUPPORTED_TYPES              = 0xae | ||||
| 	DEVLINK_ATTR_NESTED_DEVLINK                        = 0xaf | ||||
| 	DEVLINK_ATTR_SELFTESTS                             = 0xb0 | ||||
| 	DEVLINK_ATTR_MAX                                   = 0xb0 | ||||
| 	DEVLINK_DPIPE_FIELD_MAPPING_TYPE_NONE              = 0x0 | ||||
| 	DEVLINK_DPIPE_FIELD_MAPPING_TYPE_IFINDEX           = 0x1 | ||||
| 	DEVLINK_DPIPE_MATCH_TYPE_FIELD_EXACT               = 0x0 | ||||
| @@ -3317,7 +3374,8 @@ const ( | ||||
| 	LWTUNNEL_ENCAP_SEG6_LOCAL = 0x7 | ||||
| 	LWTUNNEL_ENCAP_RPL        = 0x8 | ||||
| 	LWTUNNEL_ENCAP_IOAM6      = 0x9 | ||||
| 	LWTUNNEL_ENCAP_MAX        = 0x9 | ||||
| 	LWTUNNEL_ENCAP_XFRM       = 0xa | ||||
| 	LWTUNNEL_ENCAP_MAX        = 0xa | ||||
|  | ||||
| 	MPLS_IPTUNNEL_UNSPEC = 0x0 | ||||
| 	MPLS_IPTUNNEL_DST    = 0x1 | ||||
| @@ -3512,7 +3570,9 @@ const ( | ||||
| 	ETHTOOL_MSG_PHC_VCLOCKS_GET               = 0x21 | ||||
| 	ETHTOOL_MSG_MODULE_GET                    = 0x22 | ||||
| 	ETHTOOL_MSG_MODULE_SET                    = 0x23 | ||||
| 	ETHTOOL_MSG_USER_MAX                      = 0x23 | ||||
| 	ETHTOOL_MSG_PSE_GET                       = 0x24 | ||||
| 	ETHTOOL_MSG_PSE_SET                       = 0x25 | ||||
| 	ETHTOOL_MSG_USER_MAX                      = 0x25 | ||||
| 	ETHTOOL_MSG_KERNEL_NONE                   = 0x0 | ||||
| 	ETHTOOL_MSG_STRSET_GET_REPLY              = 0x1 | ||||
| 	ETHTOOL_MSG_LINKINFO_GET_REPLY            = 0x2 | ||||
| @@ -3550,7 +3610,8 @@ const ( | ||||
| 	ETHTOOL_MSG_PHC_VCLOCKS_GET_REPLY         = 0x22 | ||||
| 	ETHTOOL_MSG_MODULE_GET_REPLY              = 0x23 | ||||
| 	ETHTOOL_MSG_MODULE_NTF                    = 0x24 | ||||
| 	ETHTOOL_MSG_KERNEL_MAX                    = 0x24 | ||||
| 	ETHTOOL_MSG_PSE_GET_REPLY                 = 0x25 | ||||
| 	ETHTOOL_MSG_KERNEL_MAX                    = 0x25 | ||||
| 	ETHTOOL_A_HEADER_UNSPEC                   = 0x0 | ||||
| 	ETHTOOL_A_HEADER_DEV_INDEX                = 0x1 | ||||
| 	ETHTOOL_A_HEADER_DEV_NAME                 = 0x2 | ||||
| @@ -3609,7 +3670,8 @@ const ( | ||||
| 	ETHTOOL_A_LINKMODES_MASTER_SLAVE_CFG      = 0x7 | ||||
| 	ETHTOOL_A_LINKMODES_MASTER_SLAVE_STATE    = 0x8 | ||||
| 	ETHTOOL_A_LINKMODES_LANES                 = 0x9 | ||||
| 	ETHTOOL_A_LINKMODES_MAX                   = 0x9 | ||||
| 	ETHTOOL_A_LINKMODES_RATE_MATCHING         = 0xa | ||||
| 	ETHTOOL_A_LINKMODES_MAX                   = 0xa | ||||
| 	ETHTOOL_A_LINKSTATE_UNSPEC                = 0x0 | ||||
| 	ETHTOOL_A_LINKSTATE_HEADER                = 0x1 | ||||
| 	ETHTOOL_A_LINKSTATE_LINK                  = 0x2 | ||||
| @@ -4201,6 +4263,9 @@ const ( | ||||
| 	NL80211_ACL_POLICY_DENY_UNLESS_LISTED                   = 0x1 | ||||
| 	NL80211_AC_VI                                           = 0x1 | ||||
| 	NL80211_AC_VO                                           = 0x0 | ||||
| 	NL80211_AP_SETTINGS_EXTERNAL_AUTH_SUPPORT               = 0x1 | ||||
| 	NL80211_AP_SETTINGS_SA_QUERY_OFFLOAD_SUPPORT            = 0x2 | ||||
| 	NL80211_AP_SME_SA_QUERY_OFFLOAD                         = 0x1 | ||||
| 	NL80211_ATTR_4ADDR                                      = 0x53 | ||||
| 	NL80211_ATTR_ACK                                        = 0x5c | ||||
| 	NL80211_ATTR_ACK_SIGNAL                                 = 0x107 | ||||
| @@ -4209,6 +4274,7 @@ const ( | ||||
| 	NL80211_ATTR_AIRTIME_WEIGHT                             = 0x112 | ||||
| 	NL80211_ATTR_AKM_SUITES                                 = 0x4c | ||||
| 	NL80211_ATTR_AP_ISOLATE                                 = 0x60 | ||||
| 	NL80211_ATTR_AP_SETTINGS_FLAGS                          = 0x135 | ||||
| 	NL80211_ATTR_AUTH_DATA                                  = 0x9c | ||||
| 	NL80211_ATTR_AUTH_TYPE                                  = 0x35 | ||||
| 	NL80211_ATTR_BANDS                                      = 0xef | ||||
| @@ -4240,6 +4306,9 @@ const ( | ||||
| 	NL80211_ATTR_COALESCE_RULE_DELAY                        = 0x1 | ||||
| 	NL80211_ATTR_COALESCE_RULE_MAX                          = 0x3 | ||||
| 	NL80211_ATTR_COALESCE_RULE_PKT_PATTERN                  = 0x3 | ||||
| 	NL80211_ATTR_COLOR_CHANGE_COLOR                         = 0x130 | ||||
| 	NL80211_ATTR_COLOR_CHANGE_COUNT                         = 0x12f | ||||
| 	NL80211_ATTR_COLOR_CHANGE_ELEMS                         = 0x131 | ||||
| 	NL80211_ATTR_CONN_FAILED_REASON                         = 0x9b | ||||
| 	NL80211_ATTR_CONTROL_PORT                               = 0x44 | ||||
| 	NL80211_ATTR_CONTROL_PORT_ETHERTYPE                     = 0x66 | ||||
| @@ -4266,6 +4335,7 @@ const ( | ||||
| 	NL80211_ATTR_DEVICE_AP_SME                              = 0x8d | ||||
| 	NL80211_ATTR_DFS_CAC_TIME                               = 0x7 | ||||
| 	NL80211_ATTR_DFS_REGION                                 = 0x92 | ||||
| 	NL80211_ATTR_DISABLE_EHT                                = 0x137 | ||||
| 	NL80211_ATTR_DISABLE_HE                                 = 0x12d | ||||
| 	NL80211_ATTR_DISABLE_HT                                 = 0x93 | ||||
| 	NL80211_ATTR_DISABLE_VHT                                = 0xaf | ||||
| @@ -4273,6 +4343,8 @@ const ( | ||||
| 	NL80211_ATTR_DONT_WAIT_FOR_ACK                          = 0x8e | ||||
| 	NL80211_ATTR_DTIM_PERIOD                                = 0xd | ||||
| 	NL80211_ATTR_DURATION                                   = 0x57 | ||||
| 	NL80211_ATTR_EHT_CAPABILITY                             = 0x136 | ||||
| 	NL80211_ATTR_EML_CAPABILITY                             = 0x13d | ||||
| 	NL80211_ATTR_EXT_CAPA                                   = 0xa9 | ||||
| 	NL80211_ATTR_EXT_CAPA_MASK                              = 0xaa | ||||
| 	NL80211_ATTR_EXTERNAL_AUTH_ACTION                       = 0x104 | ||||
| @@ -4337,10 +4409,11 @@ const ( | ||||
| 	NL80211_ATTR_MAC_HINT                                   = 0xc8 | ||||
| 	NL80211_ATTR_MAC_MASK                                   = 0xd7 | ||||
| 	NL80211_ATTR_MAX_AP_ASSOC_STA                           = 0xca | ||||
| 	NL80211_ATTR_MAX                                        = 0x137 | ||||
| 	NL80211_ATTR_MAX                                        = 0x140 | ||||
| 	NL80211_ATTR_MAX_CRIT_PROT_DURATION                     = 0xb4 | ||||
| 	NL80211_ATTR_MAX_CSA_COUNTERS                           = 0xce | ||||
| 	NL80211_ATTR_MAX_MATCH_SETS                             = 0x85 | ||||
| 	NL80211_ATTR_MAX_NUM_AKM_SUITES                         = 0x13c | ||||
| 	NL80211_ATTR_MAX_NUM_PMKIDS                             = 0x56 | ||||
| 	NL80211_ATTR_MAX_NUM_SCAN_SSIDS                         = 0x2b | ||||
| 	NL80211_ATTR_MAX_NUM_SCHED_SCAN_PLANS                   = 0xde | ||||
| @@ -4350,6 +4423,8 @@ const ( | ||||
| 	NL80211_ATTR_MAX_SCAN_PLAN_INTERVAL                     = 0xdf | ||||
| 	NL80211_ATTR_MAX_SCAN_PLAN_ITERATIONS                   = 0xe0 | ||||
| 	NL80211_ATTR_MAX_SCHED_SCAN_IE_LEN                      = 0x7c | ||||
| 	NL80211_ATTR_MBSSID_CONFIG                              = 0x132 | ||||
| 	NL80211_ATTR_MBSSID_ELEMS                               = 0x133 | ||||
| 	NL80211_ATTR_MCAST_RATE                                 = 0x6b | ||||
| 	NL80211_ATTR_MDID                                       = 0xb1 | ||||
| 	NL80211_ATTR_MEASUREMENT_DURATION                       = 0xeb | ||||
| @@ -4359,6 +4434,11 @@ const ( | ||||
| 	NL80211_ATTR_MESH_PEER_AID                              = 0xed | ||||
| 	NL80211_ATTR_MESH_SETUP                                 = 0x70 | ||||
| 	NL80211_ATTR_MGMT_SUBTYPE                               = 0x29 | ||||
| 	NL80211_ATTR_MLD_ADDR                                   = 0x13a | ||||
| 	NL80211_ATTR_MLD_CAPA_AND_OPS                           = 0x13e | ||||
| 	NL80211_ATTR_MLO_LINK_ID                                = 0x139 | ||||
| 	NL80211_ATTR_MLO_LINKS                                  = 0x138 | ||||
| 	NL80211_ATTR_MLO_SUPPORT                                = 0x13b | ||||
| 	NL80211_ATTR_MNTR_FLAGS                                 = 0x17 | ||||
| 	NL80211_ATTR_MPATH_INFO                                 = 0x1b | ||||
| 	NL80211_ATTR_MPATH_NEXT_HOP                             = 0x1a | ||||
| @@ -4371,6 +4451,7 @@ const ( | ||||
| 	NL80211_ATTR_NETNS_FD                                   = 0xdb | ||||
| 	NL80211_ATTR_NOACK_MAP                                  = 0x95 | ||||
| 	NL80211_ATTR_NSS                                        = 0x106 | ||||
| 	NL80211_ATTR_OBSS_COLOR_BITMAP                          = 0x12e | ||||
| 	NL80211_ATTR_OFFCHANNEL_TX_OK                           = 0x6c | ||||
| 	NL80211_ATTR_OPER_CLASS                                 = 0xd6 | ||||
| 	NL80211_ATTR_OPMODE_NOTIF                               = 0xc2 | ||||
| @@ -4397,6 +4478,7 @@ const ( | ||||
| 	NL80211_ATTR_PROTOCOL_FEATURES                          = 0xad | ||||
| 	NL80211_ATTR_PS_STATE                                   = 0x5d | ||||
| 	NL80211_ATTR_QOS_MAP                                    = 0xc7 | ||||
| 	NL80211_ATTR_RADAR_BACKGROUND                           = 0x134 | ||||
| 	NL80211_ATTR_RADAR_EVENT                                = 0xa8 | ||||
| 	NL80211_ATTR_REASON_CODE                                = 0x36 | ||||
| 	NL80211_ATTR_RECEIVE_MULTICAST                          = 0x121 | ||||
| @@ -4412,6 +4494,7 @@ const ( | ||||
| 	NL80211_ATTR_RESP_IE                                    = 0x4e | ||||
| 	NL80211_ATTR_ROAM_SUPPORT                               = 0x83 | ||||
| 	NL80211_ATTR_RX_FRAME_TYPES                             = 0x64 | ||||
| 	NL80211_ATTR_RX_HW_TIMESTAMP                            = 0x140 | ||||
| 	NL80211_ATTR_RXMGMT_FLAGS                               = 0xbc | ||||
| 	NL80211_ATTR_RX_SIGNAL_DBM                              = 0x97 | ||||
| 	NL80211_ATTR_S1G_CAPABILITY                             = 0x128 | ||||
| @@ -4484,6 +4567,7 @@ const ( | ||||
| 	NL80211_ATTR_TSID                                       = 0xd2 | ||||
| 	NL80211_ATTR_TWT_RESPONDER                              = 0x116 | ||||
| 	NL80211_ATTR_TX_FRAME_TYPES                             = 0x63 | ||||
| 	NL80211_ATTR_TX_HW_TIMESTAMP                            = 0x13f | ||||
| 	NL80211_ATTR_TX_NO_CCK_RATE                             = 0x87 | ||||
| 	NL80211_ATTR_TXQ_LIMIT                                  = 0x10a | ||||
| 	NL80211_ATTR_TXQ_MEMORY_LIMIT                           = 0x10b | ||||
| @@ -4557,6 +4641,10 @@ const ( | ||||
| 	NL80211_BAND_ATTR_RATES                                 = 0x2 | ||||
| 	NL80211_BAND_ATTR_VHT_CAPA                              = 0x8 | ||||
| 	NL80211_BAND_ATTR_VHT_MCS_SET                           = 0x7 | ||||
| 	NL80211_BAND_IFTYPE_ATTR_EHT_CAP_MAC                    = 0x8 | ||||
| 	NL80211_BAND_IFTYPE_ATTR_EHT_CAP_MCS_SET                = 0xa | ||||
| 	NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PHY                    = 0x9 | ||||
| 	NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PPE                    = 0xb | ||||
| 	NL80211_BAND_IFTYPE_ATTR_HE_6GHZ_CAPA                   = 0x6 | ||||
| 	NL80211_BAND_IFTYPE_ATTR_HE_CAP_MAC                     = 0x2 | ||||
| 	NL80211_BAND_IFTYPE_ATTR_HE_CAP_MCS_SET                 = 0x4 | ||||
| @@ -4564,6 +4652,8 @@ const ( | ||||
| 	NL80211_BAND_IFTYPE_ATTR_HE_CAP_PPE                     = 0x5 | ||||
| 	NL80211_BAND_IFTYPE_ATTR_IFTYPES                        = 0x1 | ||||
| 	NL80211_BAND_IFTYPE_ATTR_MAX                            = 0xb | ||||
| 	NL80211_BAND_IFTYPE_ATTR_VENDOR_ELEMS                   = 0x7 | ||||
| 	NL80211_BAND_LC                                         = 0x5 | ||||
| 	NL80211_BAND_S1GHZ                                      = 0x4 | ||||
| 	NL80211_BITRATE_ATTR_2GHZ_SHORTPREAMBLE                 = 0x2 | ||||
| 	NL80211_BITRATE_ATTR_MAX                                = 0x2 | ||||
| @@ -4584,7 +4674,9 @@ const ( | ||||
| 	NL80211_BSS_FREQUENCY_OFFSET                            = 0x14 | ||||
| 	NL80211_BSS_INFORMATION_ELEMENTS                        = 0x6 | ||||
| 	NL80211_BSS_LAST_SEEN_BOOTTIME                          = 0xf | ||||
| 	NL80211_BSS_MAX                                         = 0x14 | ||||
| 	NL80211_BSS_MAX                                         = 0x16 | ||||
| 	NL80211_BSS_MLD_ADDR                                    = 0x16 | ||||
| 	NL80211_BSS_MLO_LINK_ID                                 = 0x15 | ||||
| 	NL80211_BSS_PAD                                         = 0x10 | ||||
| 	NL80211_BSS_PARENT_BSSID                                = 0x12 | ||||
| 	NL80211_BSS_PARENT_TSF                                  = 0x11 | ||||
| @@ -4612,6 +4704,7 @@ const ( | ||||
| 	NL80211_CHAN_WIDTH_20                                   = 0x1 | ||||
| 	NL80211_CHAN_WIDTH_20_NOHT                              = 0x0 | ||||
| 	NL80211_CHAN_WIDTH_2                                    = 0x9 | ||||
| 	NL80211_CHAN_WIDTH_320                                  = 0xd | ||||
| 	NL80211_CHAN_WIDTH_40                                   = 0x2 | ||||
| 	NL80211_CHAN_WIDTH_4                                    = 0xa | ||||
| 	NL80211_CHAN_WIDTH_5                                    = 0x6 | ||||
| @@ -4621,8 +4714,11 @@ const ( | ||||
| 	NL80211_CMD_ABORT_SCAN                                  = 0x72 | ||||
| 	NL80211_CMD_ACTION                                      = 0x3b | ||||
| 	NL80211_CMD_ACTION_TX_STATUS                            = 0x3c | ||||
| 	NL80211_CMD_ADD_LINK                                    = 0x94 | ||||
| 	NL80211_CMD_ADD_LINK_STA                                = 0x96 | ||||
| 	NL80211_CMD_ADD_NAN_FUNCTION                            = 0x75 | ||||
| 	NL80211_CMD_ADD_TX_TS                                   = 0x69 | ||||
| 	NL80211_CMD_ASSOC_COMEBACK                              = 0x93 | ||||
| 	NL80211_CMD_ASSOCIATE                                   = 0x26 | ||||
| 	NL80211_CMD_AUTHENTICATE                                = 0x25 | ||||
| 	NL80211_CMD_CANCEL_REMAIN_ON_CHANNEL                    = 0x38 | ||||
| @@ -4630,6 +4726,10 @@ const ( | ||||
| 	NL80211_CMD_CHANNEL_SWITCH                              = 0x66 | ||||
| 	NL80211_CMD_CH_SWITCH_NOTIFY                            = 0x58 | ||||
| 	NL80211_CMD_CH_SWITCH_STARTED_NOTIFY                    = 0x6e | ||||
| 	NL80211_CMD_COLOR_CHANGE_ABORTED                        = 0x90 | ||||
| 	NL80211_CMD_COLOR_CHANGE_COMPLETED                      = 0x91 | ||||
| 	NL80211_CMD_COLOR_CHANGE_REQUEST                        = 0x8e | ||||
| 	NL80211_CMD_COLOR_CHANGE_STARTED                        = 0x8f | ||||
| 	NL80211_CMD_CONNECT                                     = 0x2e | ||||
| 	NL80211_CMD_CONN_FAILED                                 = 0x5b | ||||
| 	NL80211_CMD_CONTROL_PORT_FRAME                          = 0x81 | ||||
| @@ -4678,8 +4778,9 @@ const ( | ||||
| 	NL80211_CMD_LEAVE_IBSS                                  = 0x2c | ||||
| 	NL80211_CMD_LEAVE_MESH                                  = 0x45 | ||||
| 	NL80211_CMD_LEAVE_OCB                                   = 0x6d | ||||
| 	NL80211_CMD_MAX                                         = 0x93 | ||||
| 	NL80211_CMD_MAX                                         = 0x98 | ||||
| 	NL80211_CMD_MICHAEL_MIC_FAILURE                         = 0x29 | ||||
| 	NL80211_CMD_MODIFY_LINK_STA                             = 0x97 | ||||
| 	NL80211_CMD_NAN_MATCH                                   = 0x78 | ||||
| 	NL80211_CMD_NEW_BEACON                                  = 0xf | ||||
| 	NL80211_CMD_NEW_INTERFACE                               = 0x7 | ||||
| @@ -4692,6 +4793,7 @@ const ( | ||||
| 	NL80211_CMD_NEW_WIPHY                                   = 0x3 | ||||
| 	NL80211_CMD_NOTIFY_CQM                                  = 0x40 | ||||
| 	NL80211_CMD_NOTIFY_RADAR                                = 0x86 | ||||
| 	NL80211_CMD_OBSS_COLOR_COLLISION                        = 0x8d | ||||
| 	NL80211_CMD_PEER_MEASUREMENT_COMPLETE                   = 0x85 | ||||
| 	NL80211_CMD_PEER_MEASUREMENT_RESULT                     = 0x84 | ||||
| 	NL80211_CMD_PEER_MEASUREMENT_START                      = 0x83 | ||||
| @@ -4707,6 +4809,8 @@ const ( | ||||
| 	NL80211_CMD_REGISTER_FRAME                              = 0x3a | ||||
| 	NL80211_CMD_RELOAD_REGDB                                = 0x7e | ||||
| 	NL80211_CMD_REMAIN_ON_CHANNEL                           = 0x37 | ||||
| 	NL80211_CMD_REMOVE_LINK                                 = 0x95 | ||||
| 	NL80211_CMD_REMOVE_LINK_STA                             = 0x98 | ||||
| 	NL80211_CMD_REQ_SET_REG                                 = 0x1b | ||||
| 	NL80211_CMD_ROAM                                        = 0x2f | ||||
| 	NL80211_CMD_SCAN_ABORTED                                = 0x23 | ||||
| @@ -4717,6 +4821,7 @@ const ( | ||||
| 	NL80211_CMD_SET_CHANNEL                                 = 0x41 | ||||
| 	NL80211_CMD_SET_COALESCE                                = 0x65 | ||||
| 	NL80211_CMD_SET_CQM                                     = 0x3f | ||||
| 	NL80211_CMD_SET_FILS_AAD                                = 0x92 | ||||
| 	NL80211_CMD_SET_INTERFACE                               = 0x6 | ||||
| 	NL80211_CMD_SET_KEY                                     = 0xa | ||||
| 	NL80211_CMD_SET_MAC_ACL                                 = 0x5d | ||||
| @@ -4791,6 +4896,8 @@ const ( | ||||
| 	NL80211_EDMG_BW_CONFIG_MIN                              = 0x4 | ||||
| 	NL80211_EDMG_CHANNELS_MAX                               = 0x3c | ||||
| 	NL80211_EDMG_CHANNELS_MIN                               = 0x1 | ||||
| 	NL80211_EHT_MAX_CAPABILITY_LEN                          = 0x33 | ||||
| 	NL80211_EHT_MIN_CAPABILITY_LEN                          = 0xd | ||||
| 	NL80211_EXTERNAL_AUTH_ABORT                             = 0x1 | ||||
| 	NL80211_EXTERNAL_AUTH_START                             = 0x0 | ||||
| 	NL80211_EXT_FEATURE_4WAY_HANDSHAKE_AP_PSK               = 0x32 | ||||
| @@ -4807,6 +4914,7 @@ const ( | ||||
| 	NL80211_EXT_FEATURE_BEACON_RATE_HT                      = 0x7 | ||||
| 	NL80211_EXT_FEATURE_BEACON_RATE_LEGACY                  = 0x6 | ||||
| 	NL80211_EXT_FEATURE_BEACON_RATE_VHT                     = 0x8 | ||||
| 	NL80211_EXT_FEATURE_BSS_COLOR                           = 0x3a | ||||
| 	NL80211_EXT_FEATURE_BSS_PARENT_TSF                      = 0x4 | ||||
| 	NL80211_EXT_FEATURE_CAN_REPLACE_PTK0                    = 0x1f | ||||
| 	NL80211_EXT_FEATURE_CONTROL_PORT_NO_PREAUTH             = 0x2a | ||||
| @@ -4818,6 +4926,7 @@ const ( | ||||
| 	NL80211_EXT_FEATURE_DFS_OFFLOAD                         = 0x19 | ||||
| 	NL80211_EXT_FEATURE_ENABLE_FTM_RESPONDER                = 0x20 | ||||
| 	NL80211_EXT_FEATURE_EXT_KEY_ID                          = 0x24 | ||||
| 	NL80211_EXT_FEATURE_FILS_CRYPTO_OFFLOAD                 = 0x3b | ||||
| 	NL80211_EXT_FEATURE_FILS_DISCOVERY                      = 0x34 | ||||
| 	NL80211_EXT_FEATURE_FILS_MAX_CHANNEL_TIME               = 0x11 | ||||
| 	NL80211_EXT_FEATURE_FILS_SK_OFFLOAD                     = 0xe | ||||
| @@ -4833,8 +4942,10 @@ const ( | ||||
| 	NL80211_EXT_FEATURE_OCE_PROBE_REQ_DEFERRAL_SUPPRESSION  = 0x14 | ||||
| 	NL80211_EXT_FEATURE_OCE_PROBE_REQ_HIGH_TX_RATE          = 0x13 | ||||
| 	NL80211_EXT_FEATURE_OPERATING_CHANNEL_VALIDATION        = 0x31 | ||||
| 	NL80211_EXT_FEATURE_POWERED_ADDR_CHANGE                 = 0x3d | ||||
| 	NL80211_EXT_FEATURE_PROTECTED_TWT                       = 0x2b | ||||
| 	NL80211_EXT_FEATURE_PROT_RANGE_NEGO_AND_MEASURE         = 0x39 | ||||
| 	NL80211_EXT_FEATURE_RADAR_BACKGROUND                    = 0x3c | ||||
| 	NL80211_EXT_FEATURE_RRM                                 = 0x1 | ||||
| 	NL80211_EXT_FEATURE_SAE_OFFLOAD_AP                      = 0x33 | ||||
| 	NL80211_EXT_FEATURE_SAE_OFFLOAD                         = 0x26 | ||||
| @@ -4906,7 +5017,9 @@ const ( | ||||
| 	NL80211_FREQUENCY_ATTR_NO_10MHZ                         = 0x11 | ||||
| 	NL80211_FREQUENCY_ATTR_NO_160MHZ                        = 0xc | ||||
| 	NL80211_FREQUENCY_ATTR_NO_20MHZ                         = 0x10 | ||||
| 	NL80211_FREQUENCY_ATTR_NO_320MHZ                        = 0x1a | ||||
| 	NL80211_FREQUENCY_ATTR_NO_80MHZ                         = 0xb | ||||
| 	NL80211_FREQUENCY_ATTR_NO_EHT                           = 0x1b | ||||
| 	NL80211_FREQUENCY_ATTR_NO_HE                            = 0x13 | ||||
| 	NL80211_FREQUENCY_ATTR_NO_HT40_MINUS                    = 0x9 | ||||
| 	NL80211_FREQUENCY_ATTR_NO_HT40_PLUS                     = 0xa | ||||
| @@ -5006,6 +5119,12 @@ const ( | ||||
| 	NL80211_MAX_SUPP_HT_RATES                               = 0x4d | ||||
| 	NL80211_MAX_SUPP_RATES                                  = 0x20 | ||||
| 	NL80211_MAX_SUPP_REG_RULES                              = 0x80 | ||||
| 	NL80211_MBSSID_CONFIG_ATTR_EMA                          = 0x5 | ||||
| 	NL80211_MBSSID_CONFIG_ATTR_INDEX                        = 0x3 | ||||
| 	NL80211_MBSSID_CONFIG_ATTR_MAX                          = 0x5 | ||||
| 	NL80211_MBSSID_CONFIG_ATTR_MAX_EMA_PROFILE_PERIODICITY  = 0x2 | ||||
| 	NL80211_MBSSID_CONFIG_ATTR_MAX_INTERFACES               = 0x1 | ||||
| 	NL80211_MBSSID_CONFIG_ATTR_TX_IFINDEX                   = 0x4 | ||||
| 	NL80211_MESHCONF_ATTR_MAX                               = 0x1f | ||||
| 	NL80211_MESHCONF_AUTO_OPEN_PLINKS                       = 0x7 | ||||
| 	NL80211_MESHCONF_AWAKE_WINDOW                           = 0x1b | ||||
| @@ -5168,6 +5287,7 @@ const ( | ||||
| 	NL80211_PMSR_FTM_FAILURE_UNSPECIFIED                    = 0x0 | ||||
| 	NL80211_PMSR_FTM_FAILURE_WRONG_CHANNEL                  = 0x3 | ||||
| 	NL80211_PMSR_FTM_REQ_ATTR_ASAP                          = 0x1 | ||||
| 	NL80211_PMSR_FTM_REQ_ATTR_BSS_COLOR                     = 0xd | ||||
| 	NL80211_PMSR_FTM_REQ_ATTR_BURST_DURATION                = 0x5 | ||||
| 	NL80211_PMSR_FTM_REQ_ATTR_BURST_PERIOD                  = 0x4 | ||||
| 	NL80211_PMSR_FTM_REQ_ATTR_FTMS_PER_BURST                = 0x6 | ||||
| @@ -5244,12 +5364,36 @@ const ( | ||||
| 	NL80211_RADAR_PRE_CAC_EXPIRED                           = 0x4 | ||||
| 	NL80211_RATE_INFO_10_MHZ_WIDTH                          = 0xb | ||||
| 	NL80211_RATE_INFO_160_MHZ_WIDTH                         = 0xa | ||||
| 	NL80211_RATE_INFO_320_MHZ_WIDTH                         = 0x12 | ||||
| 	NL80211_RATE_INFO_40_MHZ_WIDTH                          = 0x3 | ||||
| 	NL80211_RATE_INFO_5_MHZ_WIDTH                           = 0xc | ||||
| 	NL80211_RATE_INFO_80_MHZ_WIDTH                          = 0x8 | ||||
| 	NL80211_RATE_INFO_80P80_MHZ_WIDTH                       = 0x9 | ||||
| 	NL80211_RATE_INFO_BITRATE32                             = 0x5 | ||||
| 	NL80211_RATE_INFO_BITRATE                               = 0x1 | ||||
| 	NL80211_RATE_INFO_EHT_GI_0_8                            = 0x0 | ||||
| 	NL80211_RATE_INFO_EHT_GI_1_6                            = 0x1 | ||||
| 	NL80211_RATE_INFO_EHT_GI_3_2                            = 0x2 | ||||
| 	NL80211_RATE_INFO_EHT_GI                                = 0x15 | ||||
| 	NL80211_RATE_INFO_EHT_MCS                               = 0x13 | ||||
| 	NL80211_RATE_INFO_EHT_NSS                               = 0x14 | ||||
| 	NL80211_RATE_INFO_EHT_RU_ALLOC_106                      = 0x3 | ||||
| 	NL80211_RATE_INFO_EHT_RU_ALLOC_106P26                   = 0x4 | ||||
| 	NL80211_RATE_INFO_EHT_RU_ALLOC_242                      = 0x5 | ||||
| 	NL80211_RATE_INFO_EHT_RU_ALLOC_26                       = 0x0 | ||||
| 	NL80211_RATE_INFO_EHT_RU_ALLOC_2x996                    = 0xb | ||||
| 	NL80211_RATE_INFO_EHT_RU_ALLOC_2x996P484                = 0xc | ||||
| 	NL80211_RATE_INFO_EHT_RU_ALLOC_3x996                    = 0xd | ||||
| 	NL80211_RATE_INFO_EHT_RU_ALLOC_3x996P484                = 0xe | ||||
| 	NL80211_RATE_INFO_EHT_RU_ALLOC_484                      = 0x6 | ||||
| 	NL80211_RATE_INFO_EHT_RU_ALLOC_484P242                  = 0x7 | ||||
| 	NL80211_RATE_INFO_EHT_RU_ALLOC_4x996                    = 0xf | ||||
| 	NL80211_RATE_INFO_EHT_RU_ALLOC_52                       = 0x1 | ||||
| 	NL80211_RATE_INFO_EHT_RU_ALLOC_52P26                    = 0x2 | ||||
| 	NL80211_RATE_INFO_EHT_RU_ALLOC_996                      = 0x8 | ||||
| 	NL80211_RATE_INFO_EHT_RU_ALLOC_996P484                  = 0x9 | ||||
| 	NL80211_RATE_INFO_EHT_RU_ALLOC_996P484P242              = 0xa | ||||
| 	NL80211_RATE_INFO_EHT_RU_ALLOC                          = 0x16 | ||||
| 	NL80211_RATE_INFO_HE_1XLTF                              = 0x0 | ||||
| 	NL80211_RATE_INFO_HE_2XLTF                              = 0x1 | ||||
| 	NL80211_RATE_INFO_HE_4XLTF                              = 0x2 | ||||
| @@ -5292,6 +5436,7 @@ const ( | ||||
| 	NL80211_RRF_GO_CONCURRENT                               = 0x1000 | ||||
| 	NL80211_RRF_IR_CONCURRENT                               = 0x1000 | ||||
| 	NL80211_RRF_NO_160MHZ                                   = 0x10000 | ||||
| 	NL80211_RRF_NO_320MHZ                                   = 0x40000 | ||||
| 	NL80211_RRF_NO_80MHZ                                    = 0x8000 | ||||
| 	NL80211_RRF_NO_CCK                                      = 0x2 | ||||
| 	NL80211_RRF_NO_HE                                       = 0x20000 | ||||
|   | ||||
							
								
								
									
										2
									
								
								vendor/golang.org/x/sys/windows/svc/debug/service.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/golang.org/x/sys/windows/svc/debug/service.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -23,7 +23,7 @@ func Run(name string, handler svc.Handler) error { | ||||
| 	cmds := make(chan svc.ChangeRequest) | ||||
| 	changes := make(chan svc.Status) | ||||
|  | ||||
| 	sig := make(chan os.Signal) | ||||
| 	sig := make(chan os.Signal, 1) | ||||
| 	signal.Notify(sig) | ||||
|  | ||||
| 	go func() { | ||||
|   | ||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user
	 Akihiro Suda
					Akihiro Suda