[sys] unix: add generate component files support for linux/loong64

60 views
Skip to first unread message

Meidan Li (Gerrit)

unread,
Apr 9, 2022, 5:30:13 AM4/9/22
to goph...@pubsubhelper.golang.org, golang-co...@googlegroups.com

Meidan Li has uploaded this change for review.

View Change

unix: add generate component files support for linux/loong64

Updates golang/go#46229

Change-Id: If0ee99997360608d7ba218880a1ef180ca6db551
---
M unix/linux/Dockerfile
M unix/linux/mkall.go
M unix/linux/types.go
3 files changed, 48 insertions(+), 2 deletions(-)

diff --git a/unix/linux/Dockerfile b/unix/linux/Dockerfile
index 0c8f54e..8be4823 100644
--- a/unix/linux/Dockerfile
+++ b/unix/linux/Dockerfile
@@ -20,6 +20,14 @@
# GNU C library: Released 03 Feb 2022
RUN git clone --branch release/2.35/master --depth 1 https://sourceware.org/git/glibc.git

+# only for loong64, add kernel and glibc patch
+RUN git config --global user.name "golang" && git config --global user.email "golang@localhost" \
+ && cd /git/linux && git clone --depth 1 --branch 5.17-patch https://github.com/loongson/linux-loong64.git \
+ && git am linux-loong64/5.17-patch/*.patch && rm -rf linux-loong64 \
+ && cd /git/glibc && git clone --depth 1 --branch 2.35-patch https://github.com/loongson/glibc-loong64.git \
+ && git am glibc-loong64/2.35-patch/*.patch && rm -rf glibc-loong64 \
+ && curl -fsSL https://git.savannah.gnu.org/cgit/config.git/plain/config.sub -o /git/glibc/scripts/config.sub
+
# Get Go
ENV GOLANG_VERSION 1.18
ENV GOLANG_DOWNLOAD_URL https://golang.org/dl/go$GOLANG_VERSION.linux-amd64.tar.gz
@@ -51,6 +59,25 @@
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*

+# only for loong64, add patch and build golang
+RUN cd /git && git clone https://go.googlesource.com/go --branch go1.18 && cd go \
+ && git clone https://github.com/loongson/go-loong64 --branch go1.18-patches \
+ && git am go-loong64/go-1.18-patches/*.patch && rm -rf go-loong64 \
+ && cd src && ./make.bash
+
+ENV PATH /git/go/bin:$PATH
+
+# only for loong64, getting tools of qemu-user and gcc-cross-compiler
+RUN apt-get update && apt-get install wget xz-utils -y && mkdir /loong64 && cd /loong64 \
+ && wget https://github.com/loongson/build-tools/releases/download/2021.12.21/qemu-loongarch-2022-4-01.tar.gz \
+ && tar xf qemu-loongarch-2022-4-01.tar.gz && cp ./4-1/new-world/qemu-loongarch64 /usr/bin/ \
+ && rm -rf qemu-loongarch-2022-4-01.tar.gz 4-1 \
+ && wget https://github.com/loongson/build-tools/releases/download/2021.12.21/loongarch64-clfs-2022-03-03-cross-tools-gcc-glibc.tar.xz \
+ && tar xf loongarch64-clfs-2022-03-03-cross-tools-gcc-glibc.tar.xz && mv cross-tools.gcc_glibc /usr/local/cross-tools-loong64 \
+ && rm -rf loongarch64-clfs-2022-03-03-cross-tools-gcc-glibc.tar.xz \
+ && ln -s /usr/local/cross-tools-loong64/bin/loongarch64-unknown-linux-gnu-gcc /usr/bin/loongarch64-linux-gnu-gcc \
+ && rm -rf /loong64
+
# Let the scripts know they are in the docker environment
ENV GOLANG_SYS_BUILD docker
WORKDIR /build/unix
diff --git a/unix/linux/mkall.go b/unix/linux/mkall.go
index fb015b1..7e77683 100644
--- a/unix/linux/mkall.go
+++ b/unix/linux/mkall.go
@@ -84,6 +84,12 @@
Bits: 32,
},
{
+ GoArch: "loong64",
+ LinuxArch: "loongarch",
+ GNUArch: "loongarch64-linux-gnu",
+ Bits: 64,
+ },
+ {
GoArch: "mips",
LinuxArch: "mips",
GNUArch: "mips-linux-gnu",
@@ -216,6 +222,7 @@
fmt.Printf("%v\n***** FAILURE: generatePtraceRegSet(%q) *****\n\n", err, "arm64")
ok = false
}
+
if ok {
fmt.Printf("----- SUCCESS ptrace pairs -----\n\n")
}
diff --git a/unix/linux/types.go b/unix/linux/types.go
index 8065a33..8bd20e2 100644
--- a/unix/linux/types.go
+++ b/unix/linux/types.go
@@ -308,7 +308,7 @@

#ifdef __ARM_EABI__
typedef struct user_regs PtraceRegs;
-#elif defined(__aarch64__)
+#elif defined(__aarch64__) || defined(__loongarch64)
typedef struct user_pt_regs PtraceRegs;
#elif defined(__mips__) || defined(__powerpc__) || defined(__powerpc64__)
typedef struct pt_regs PtraceRegs;
@@ -339,7 +339,8 @@
// alignment requirements of EABI
int32_t padFd;
#elif defined(__powerpc__) || defined(__powerpc64__) || defined(__s390x__) || defined(__sparc__) \
- || defined(__riscv) || (defined(__mips__) && _MIPS_SIM == _MIPS_SIM_ABI64)
+ || defined(__riscv) || (defined(__mips__) && _MIPS_SIM == _MIPS_SIM_ABI64) \
+ || defined(__loongarch64)
int32_t _padFd;
#endif
int32_t fd;

To view, visit change 399336. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: sys
Gerrit-Branch: master
Gerrit-Change-Id: If0ee99997360608d7ba218880a1ef180ca6db551
Gerrit-Change-Number: 399336
Gerrit-PatchSet: 1
Gerrit-Owner: Meidan Li <lime...@loongson.cn>
Gerrit-MessageType: newchange

Ian Lance Taylor (Gerrit)

unread,
Apr 11, 2022, 8:26:41 PM4/11/22
to Meidan Li, goph...@pubsubhelper.golang.org, Tobias Klauser, Ian Lance Taylor, xiaodong liu, abner chenc, golang-co...@googlegroups.com

Attention is currently required from: Meidan Li, Tobias Klauser.

View Change

2 comments:

  • Patchset:

    • Patch Set #1:

      I can't claim to fully understand the Docker code here. @tklauser does this look OK to you until loong64 support has landed upstream? Reportedly it is on track for kernel version 5.19.

  • File unix/linux/mkall.go:

To view, visit change 399336. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: sys
Gerrit-Branch: master
Gerrit-Change-Id: If0ee99997360608d7ba218880a1ef180ca6db551
Gerrit-Change-Number: 399336
Gerrit-PatchSet: 1
Gerrit-Owner: Meidan Li <lime...@loongson.cn>
Gerrit-Reviewer: Tobias Klauser <tobias....@gmail.com>
Gerrit-CC: Ian Lance Taylor <ia...@golang.org>
Gerrit-CC: abner chenc <chen...@loongson.cn>
Gerrit-CC: xiaodong liu <teao...@gmail.com>
Gerrit-Attention: Meidan Li <lime...@loongson.cn>
Gerrit-Attention: Tobias Klauser <tobias....@gmail.com>
Gerrit-Comment-Date: Tue, 12 Apr 2022 00:26:37 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Gerrit-MessageType: comment

Meidan Li (Gerrit)

unread,
Apr 12, 2022, 7:31:13 AM4/12/22
to goph...@pubsubhelper.golang.org, golang-co...@googlegroups.com

Attention is currently required from: Meidan Li, Tobias Klauser.

Meidan Li uploaded patch set #2 to this change.

View Change

unix: add generate component files support for linux/loong64

Updates golang/go#46229

Change-Id: If0ee99997360608d7ba218880a1ef180ca6db551
---
M unix/linux/Dockerfile
M unix/linux/mkall.go
M unix/linux/types.go
3 files changed, 47 insertions(+), 2 deletions(-)

To view, visit change 399336. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: sys
Gerrit-Branch: master
Gerrit-Change-Id: If0ee99997360608d7ba218880a1ef180ca6db551
Gerrit-Change-Number: 399336
Gerrit-PatchSet: 2
Gerrit-Owner: Meidan Li <lime...@loongson.cn>
Gerrit-Reviewer: Tobias Klauser <tobias....@gmail.com>
Gerrit-CC: Ian Lance Taylor <ia...@golang.org>
Gerrit-CC: abner chenc <chen...@loongson.cn>
Gerrit-CC: xiaodong liu <teao...@gmail.com>
Gerrit-Attention: Meidan Li <lime...@loongson.cn>
Gerrit-Attention: Tobias Klauser <tobias....@gmail.com>
Gerrit-MessageType: newpatchset

Meidan Li (Gerrit)

unread,
Apr 12, 2022, 7:33:13 AM4/12/22
to goph...@pubsubhelper.golang.org, Tobias Klauser, Ian Lance Taylor, xiaodong liu, abner chenc, golang-co...@googlegroups.com

Attention is currently required from: Tobias Klauser, Ian Lance Taylor.

View Change

1 comment:

  • File unix/linux/mkall.go:

    • deleted. thanks.

To view, visit change 399336. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: sys
Gerrit-Branch: master
Gerrit-Change-Id: If0ee99997360608d7ba218880a1ef180ca6db551
Gerrit-Change-Number: 399336
Gerrit-PatchSet: 2
Gerrit-Owner: Meidan Li <lime...@loongson.cn>
Gerrit-Reviewer: Tobias Klauser <tobias....@gmail.com>
Gerrit-CC: Ian Lance Taylor <ia...@golang.org>
Gerrit-CC: abner chenc <chen...@loongson.cn>
Gerrit-CC: xiaodong liu <teao...@gmail.com>
Gerrit-Attention: Tobias Klauser <tobias....@gmail.com>
Gerrit-Attention: Ian Lance Taylor <ia...@golang.org>
Gerrit-Comment-Date: Tue, 12 Apr 2022 11:33:07 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: Ian Lance Taylor <ia...@golang.org>
Gerrit-MessageType: comment

Meidan Li (Gerrit)

unread,
Apr 15, 2022, 6:14:03 AM4/15/22
to goph...@pubsubhelper.golang.org, Tobias Klauser, Ian Lance Taylor, xiaodong liu, abner chenc, golang-co...@googlegroups.com

Attention is currently required from: Tobias Klauser, Ian Lance Taylor.

View Change

1 comment:

  • Patchset:

    • Patch Set #1:

      I can't claim to fully understand the Docker code here. […]

      Hi, @tklauser @iant

      We have some thoughts on this,

      1. Dockerfile has dependencies on go, and the go project is waiting for sys to be merged. Maybe we can merge the generated files first.

      2. At present, the z*_linux_loong64.go file we generated has been verified to be available, all the tests have passed, and the changes have no effect on other architectures.(The codes we used in Dockerfile are the same as which we submited to upstream.)

      3. How to modify the Dockerfile can be discussed further. We will continue to maintain the z*_linux_loong64.go series of files until the Dockerfile is merged.

To view, visit change 399336. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: sys
Gerrit-Branch: master
Gerrit-Change-Id: If0ee99997360608d7ba218880a1ef180ca6db551
Gerrit-Change-Number: 399336
Gerrit-PatchSet: 2
Gerrit-Owner: Meidan Li <lime...@loongson.cn>
Gerrit-Reviewer: Tobias Klauser <tobias....@gmail.com>
Gerrit-CC: Ian Lance Taylor <ia...@golang.org>
Gerrit-CC: abner chenc <chen...@loongson.cn>
Gerrit-CC: xiaodong liu <teao...@gmail.com>
Gerrit-Attention: Tobias Klauser <tobias....@gmail.com>
Gerrit-Attention: Ian Lance Taylor <ia...@golang.org>
Gerrit-Comment-Date: Fri, 15 Apr 2022 10:13:57 +0000

Ian Lance Taylor (Gerrit)

unread,
Apr 15, 2022, 1:15:15 PM4/15/22
to Meidan Li, goph...@pubsubhelper.golang.org, Tobias Klauser, Ian Lance Taylor, xiaodong liu, abner chenc, golang-co...@googlegroups.com

Attention is currently required from: Meidan Li, Tobias Klauser.

View Change

1 comment:

  • Patchset:

    • Patch Set #1:

      Hi, @tklauser @iant […]

      It's important that the generator program exactly reproduce the generated files. Otherwise things will break quickly as new system calls are introduced.

To view, visit change 399336. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: sys
Gerrit-Branch: master
Gerrit-Change-Id: If0ee99997360608d7ba218880a1ef180ca6db551
Gerrit-Change-Number: 399336
Gerrit-PatchSet: 2
Gerrit-Owner: Meidan Li <lime...@loongson.cn>
Gerrit-Reviewer: Tobias Klauser <tobias....@gmail.com>
Gerrit-CC: Ian Lance Taylor <ia...@golang.org>
Gerrit-CC: abner chenc <chen...@loongson.cn>
Gerrit-CC: xiaodong liu <teao...@gmail.com>
Gerrit-Attention: Meidan Li <lime...@loongson.cn>
Gerrit-Attention: Tobias Klauser <tobias....@gmail.com>
Gerrit-Comment-Date: Fri, 15 Apr 2022 17:15:12 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: Meidan Li <lime...@loongson.cn>

Matt Layher (Gerrit)

unread,
Apr 15, 2022, 1:36:01 PM4/15/22
to Meidan Li, goph...@pubsubhelper.golang.org, Tobias Klauser, Ian Lance Taylor, xiaodong liu, abner chenc, golang-co...@googlegroups.com

Attention is currently required from: Meidan Li, Tobias Klauser.

Patch set 2:Code-Review +1

View Change

1 comment:

  • Patchset:

    • Patch Set #2:

      LGTM, seems like the most straightforward way to get this started.

To view, visit change 399336. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: sys
Gerrit-Branch: master
Gerrit-Change-Id: If0ee99997360608d7ba218880a1ef180ca6db551
Gerrit-Change-Number: 399336
Gerrit-PatchSet: 2
Gerrit-Owner: Meidan Li <lime...@loongson.cn>
Gerrit-Reviewer: Matt Layher <mdla...@gmail.com>
Gerrit-Reviewer: Tobias Klauser <tobias....@gmail.com>
Gerrit-CC: Ian Lance Taylor <ia...@golang.org>
Gerrit-CC: abner chenc <chen...@loongson.cn>
Gerrit-CC: xiaodong liu <teao...@gmail.com>
Gerrit-Attention: Meidan Li <lime...@loongson.cn>
Gerrit-Attention: Tobias Klauser <tobias....@gmail.com>
Gerrit-Comment-Date: Fri, 15 Apr 2022 17:35:56 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: Yes
Gerrit-MessageType: comment

Tobias Klauser (Gerrit)

unread,
Apr 15, 2022, 3:57:19 PM4/15/22
to Meidan Li, goph...@pubsubhelper.golang.org, Matt Layher, Ian Lance Taylor, xiaodong liu, abner chenc, golang-co...@googlegroups.com

Attention is currently required from: Meidan Li.

View Change

3 comments:

    • # only for loong64, add patch and build golang

    •     && git am go-loong64/go-1.18-patches/*.patch && rm -rf go-loong64 \

    •     && cd src && ./make.bash

    • Why do we need to build Go here? Go 1.18 which is installed further up already supports cgo -godefs for loong64 AFAIK.

To view, visit change 399336. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: sys
Gerrit-Branch: master
Gerrit-Change-Id: If0ee99997360608d7ba218880a1ef180ca6db551
Gerrit-Change-Number: 399336
Gerrit-PatchSet: 2
Gerrit-Owner: Meidan Li <lime...@loongson.cn>
Gerrit-Reviewer: Matt Layher <mdla...@gmail.com>
Gerrit-Reviewer: Tobias Klauser <tobias....@gmail.com>
Gerrit-CC: Ian Lance Taylor <ia...@golang.org>
Gerrit-CC: abner chenc <chen...@loongson.cn>
Gerrit-CC: xiaodong liu <teao...@gmail.com>
Gerrit-Attention: Meidan Li <lime...@loongson.cn>
Gerrit-Comment-Date: Fri, 15 Apr 2022 19:57:14 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Gerrit-MessageType: comment

Meidan Li (Gerrit)

unread,
Apr 18, 2022, 7:41:42 AM4/18/22
to goph...@pubsubhelper.golang.org, golang-co...@googlegroups.com

Attention is currently required from: Meidan Li.

Meidan Li uploaded patch set #3 to this change.

View Change

unix: add generate component files support for linux/loong64

Updates golang/go#46229

Change-Id: If0ee99997360608d7ba218880a1ef180ca6db551
---
M unix/linux/Dockerfile
M unix/linux/mkall.go
M unix/linux/types.go
A unix/syscall_linux_loong64.go
4 files changed, 238 insertions(+), 2 deletions(-)

To view, visit change 399336. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: sys
Gerrit-Branch: master
Gerrit-Change-Id: If0ee99997360608d7ba218880a1ef180ca6db551
Gerrit-Change-Number: 399336
Gerrit-PatchSet: 3
Gerrit-Owner: Meidan Li <lime...@loongson.cn>
Gerrit-Reviewer: Matt Layher <mdla...@gmail.com>
Gerrit-Reviewer: Tobias Klauser <tobias....@gmail.com>
Gerrit-CC: Ian Lance Taylor <ia...@golang.org>
Gerrit-CC: abner chenc <chen...@loongson.cn>
Gerrit-CC: xiaodong liu <teao...@gmail.com>
Gerrit-Attention: Meidan Li <lime...@loongson.cn>
Gerrit-MessageType: newpatchset

Meidan Li (Gerrit)

unread,
Apr 18, 2022, 8:08:06 AM4/18/22
to goph...@pubsubhelper.golang.org, golang-co...@googlegroups.com

Attention is currently required from: Meidan Li.

Meidan Li uploaded patch set #4 to this change.

View Change

unix: add generate component files support for linux/loong64

Updates golang/go#46229

Change-Id: If0ee99997360608d7ba218880a1ef180ca6db551
---
M unix/linux/Dockerfile
M unix/linux/mkall.go
M unix/linux/types.go
A unix/syscall_linux_loong64.go
4 files changed, 236 insertions(+), 2 deletions(-)

To view, visit change 399336. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: sys
Gerrit-Branch: master
Gerrit-Change-Id: If0ee99997360608d7ba218880a1ef180ca6db551
Gerrit-Change-Number: 399336
Gerrit-PatchSet: 4

Meidan Li (Gerrit)

unread,
Apr 18, 2022, 8:28:07 AM4/18/22
to goph...@pubsubhelper.golang.org, golang-co...@googlegroups.com

Attention is currently required from: Meidan Li.

Meidan Li uploaded patch set #5 to this change.

View Change

unix: add generate component files support for linux/loong64

Updates golang/go#46229

Change-Id: If0ee99997360608d7ba218880a1ef180ca6db551
---
M unix/linux/Dockerfile
M unix/linux/mkall.go
M unix/linux/types.go
A unix/syscall_linux_loong64.go
4 files changed, 236 insertions(+), 2 deletions(-)

To view, visit change 399336. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: sys
Gerrit-Branch: master
Gerrit-Change-Id: If0ee99997360608d7ba218880a1ef180ca6db551
Gerrit-Change-Number: 399336
Gerrit-PatchSet: 5

Meidan Li (Gerrit)

unread,
Apr 18, 2022, 8:34:17 AM4/18/22
to goph...@pubsubhelper.golang.org, Matt Layher, Tobias Klauser, Ian Lance Taylor, xiaodong liu, abner chenc, golang-co...@googlegroups.com

Attention is currently required from: Tobias Klauser, Ian Lance Taylor.

View Change

3 comments:

  • Patchset:

    • Patch Set #1:

      It's important that the generator program exactly reproduce the generated files. […]

      Thanks. The changed dockerfile can exactly reproduce the generated files, and I have updated the dockerfile.

  • File unix/linux/Dockerfile:

    • This command fails in my local test: […]

      Sorry, that repo is not avaliable publicly, I have changed the Dockerfile to use a public repository.

      Following is the result of running mkall.sh in my local:

      Successfully built f7e8c4f3f57b
      Successfully tagged generate:linux
      ----- GENERATING: 386 -----
      configure: WARNING: minimum kernel version reset to 3.2.0
      header files generated
      zsysnum file generated
      zsyscall file generated
      ztypes file generated
      zerrors file generated
      ----- SUCCESS: 386 -----

      ... ...

      ----- GENERATING: loong64 -----
      configure: WARNING: minimum kernel version reset to 5.15.0
      header files generated
      zsysnum file generated
      zsyscall file generated
      ztypes file generated
      zerrors file generated
      ----- SUCCESS: loong64 -----

      ... ...

      ----- GENERATING: merging generated files -----
      zerrors files merged
      zsyscall files merged
      zsysnum files merged
      ztypes files merged
      ----- SUCCESS: merging generated files -----

      ----- GENERATING ptrace pairs -----


    • ----- SUCCESS ptrace pairs -----

    • Why do we need to build Go here? Go 1. […]

      Hi, I switched to Go1.18, it doesn't seem to support cgo -godefs for loong64.
      And this is the error info I got when generating ztypes_linux_loong64.go:(use go1.18 which is installed previously)

      ----- GENERATING: loong64 -----
      configure: WARNING: minimum kernel version reset to 5.15.0
      header files generated
      zsysnum file generated
      zsyscall file generated
      cgo: unknown ptrSize for $GOARCH "loong64"
      could not make ztypes file: exit status 1
      ***** FAILURE: loong64 *****

      So I got the patch of loong64 and rebuilt the go binary.

To view, visit change 399336. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: sys
Gerrit-Branch: master
Gerrit-Change-Id: If0ee99997360608d7ba218880a1ef180ca6db551
Gerrit-Change-Number: 399336
Gerrit-PatchSet: 5
Gerrit-Owner: Meidan Li <lime...@loongson.cn>
Gerrit-Reviewer: Matt Layher <mdla...@gmail.com>
Gerrit-Reviewer: Tobias Klauser <tobias....@gmail.com>
Gerrit-CC: Ian Lance Taylor <ia...@golang.org>
Gerrit-CC: abner chenc <chen...@loongson.cn>
Gerrit-CC: xiaodong liu <teao...@gmail.com>
Gerrit-Attention: Tobias Klauser <tobias....@gmail.com>
Gerrit-Attention: Ian Lance Taylor <ia...@golang.org>
Gerrit-Comment-Date: Mon, 18 Apr 2022 12:34:11 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: Meidan Li <lime...@loongson.cn>
Comment-In-Reply-To: Tobias Klauser <tobias....@gmail.com>

Ian Lance Taylor (Gerrit)

unread,
Apr 18, 2022, 7:35:50 PM4/18/22
to Meidan Li, goph...@pubsubhelper.golang.org, Matt Layher, Tobias Klauser, Ian Lance Taylor, xiaodong liu, abner chenc, golang-co...@googlegroups.com

Attention is currently required from: Meidan Li, Tobias Klauser.

View Change

1 comment:

  • Patchset:

    • Patch Set #5:

      Please merge CLs 399336 and 355550 into a single CL, so that we update the generation script and run it in the same CL. That will let us easily verify that other people can run the generation script and get the same result. Thanks.

To view, visit change 399336. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: sys
Gerrit-Branch: master
Gerrit-Change-Id: If0ee99997360608d7ba218880a1ef180ca6db551
Gerrit-Change-Number: 399336
Gerrit-PatchSet: 5
Gerrit-Owner: Meidan Li <lime...@loongson.cn>
Gerrit-Reviewer: Matt Layher <mdla...@gmail.com>
Gerrit-Reviewer: Tobias Klauser <tobias....@gmail.com>
Gerrit-CC: Ian Lance Taylor <ia...@golang.org>
Gerrit-CC: abner chenc <chen...@loongson.cn>
Gerrit-CC: xiaodong liu <teao...@gmail.com>
Gerrit-Attention: Meidan Li <lime...@loongson.cn>
Gerrit-Attention: Tobias Klauser <tobias....@gmail.com>
Gerrit-Comment-Date: Mon, 18 Apr 2022 23:35:46 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Gerrit-MessageType: comment

Ian Lance Taylor (Gerrit)

unread,
Apr 18, 2022, 7:37:35 PM4/18/22
to Meidan Li, goph...@pubsubhelper.golang.org, Matt Layher, Tobias Klauser, Ian Lance Taylor, xiaodong liu, abner chenc, golang-co...@googlegroups.com

Attention is currently required from: Meidan Li, Tobias Klauser.

View Change

1 comment:

    • Hi, I switched to Go1.18, it doesn't seem to support cgo -godefs for loong64. […]

      OK, let's try to get the small required update to cmd/cgo into 1.18.2.

      I'm OK with proceeding with this approach for now if others are.

To view, visit change 399336. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: sys
Gerrit-Branch: master
Gerrit-Change-Id: If0ee99997360608d7ba218880a1ef180ca6db551
Gerrit-Change-Number: 399336
Gerrit-PatchSet: 5
Gerrit-Owner: Meidan Li <lime...@loongson.cn>
Gerrit-Reviewer: Matt Layher <mdla...@gmail.com>
Gerrit-Reviewer: Tobias Klauser <tobias....@gmail.com>
Gerrit-CC: Ian Lance Taylor <ia...@golang.org>
Gerrit-CC: abner chenc <chen...@loongson.cn>
Gerrit-CC: xiaodong liu <teao...@gmail.com>
Gerrit-Attention: Meidan Li <lime...@loongson.cn>
Gerrit-Attention: Tobias Klauser <tobias....@gmail.com>
Gerrit-Comment-Date: Mon, 18 Apr 2022 23:37:32 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: Meidan Li <lime...@loongson.cn>
Comment-In-Reply-To: Tobias Klauser <tobias....@gmail.com>
Gerrit-MessageType: comment

Ian Lance Taylor (Gerrit)

unread,
Apr 18, 2022, 7:48:46 PM4/18/22
to Meidan Li, goph...@pubsubhelper.golang.org, Matt Layher, Tobias Klauser, Ian Lance Taylor, xiaodong liu, abner chenc, golang-co...@googlegroups.com

Attention is currently required from: Meidan Li, Tobias Klauser.

View Change

1 comment:

  • File unix/linux/Dockerfile:

To view, visit change 399336. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: sys
Gerrit-Branch: master
Gerrit-Change-Id: If0ee99997360608d7ba218880a1ef180ca6db551
Gerrit-Change-Number: 399336
Gerrit-PatchSet: 5
Gerrit-Owner: Meidan Li <lime...@loongson.cn>
Gerrit-Reviewer: Matt Layher <mdla...@gmail.com>
Gerrit-Reviewer: Tobias Klauser <tobias....@gmail.com>
Gerrit-CC: Ian Lance Taylor <ia...@golang.org>
Gerrit-CC: abner chenc <chen...@loongson.cn>
Gerrit-CC: xiaodong liu <teao...@gmail.com>
Gerrit-Attention: Meidan Li <lime...@loongson.cn>
Gerrit-Attention: Tobias Klauser <tobias....@gmail.com>
Gerrit-Comment-Date: Mon, 18 Apr 2022 23:48:42 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: Meidan Li <lime...@loongson.cn>
Comment-In-Reply-To: Tobias Klauser <tobias....@gmail.com>

Meidan Li (Gerrit)

unread,
Apr 19, 2022, 5:26:10 AM4/19/22
to goph...@pubsubhelper.golang.org, golang-co...@googlegroups.com

Attention is currently required from: Meidan Li, Tobias Klauser.

Meidan Li uploaded patch set #6 to this change.

View Change

unix: add generate component files support for linux/loong64

Updates golang/go#46229

Change-Id: If0ee99997360608d7ba218880a1ef180ca6db551
---
M unix/linux/Dockerfile
M unix/linux/mkall.go
M unix/linux/types.go
A unix/syscall_linux_loong64.go
M unix/zerrors_linux.go
A unix/zerrors_linux_loong64.go
A unix/zsyscall_linux_loong64.go
A unix/zsysnum_linux_loong64.go
A unix/ztypes_linux_loong64.go
9 files changed, 2,610 insertions(+), 2 deletions(-)

To view, visit change 399336. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: sys
Gerrit-Branch: master
Gerrit-Change-Id: If0ee99997360608d7ba218880a1ef180ca6db551
Gerrit-Change-Number: 399336
Gerrit-PatchSet: 6
Gerrit-Owner: Meidan Li <lime...@loongson.cn>
Gerrit-Reviewer: Matt Layher <mdla...@gmail.com>
Gerrit-Reviewer: Tobias Klauser <tobias....@gmail.com>
Gerrit-CC: Ian Lance Taylor <ia...@golang.org>
Gerrit-CC: abner chenc <chen...@loongson.cn>
Gerrit-CC: xiaodong liu <teao...@gmail.com>
Gerrit-Attention: Meidan Li <lime...@loongson.cn>
Gerrit-Attention: Tobias Klauser <tobias....@gmail.com>
Gerrit-MessageType: newpatchset

Meidan Li (Gerrit)

unread,
Apr 19, 2022, 5:30:27 AM4/19/22
to goph...@pubsubhelper.golang.org, Matt Layher, Tobias Klauser, Ian Lance Taylor, xiaodong liu, abner chenc, golang-co...@googlegroups.com

Attention is currently required from: Tobias Klauser, Ian Lance Taylor.

View Change

1 comment:

  • Patchset:

    • Patch Set #5:

      Please merge CLs 399336 and 355550 into a single CL, so that we update the generation script and run […]

      Merged and updated. please check. Thanks.

To view, visit change 399336. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: sys
Gerrit-Branch: master
Gerrit-Change-Id: If0ee99997360608d7ba218880a1ef180ca6db551
Gerrit-Change-Number: 399336
Gerrit-PatchSet: 6
Gerrit-Owner: Meidan Li <lime...@loongson.cn>
Gerrit-Reviewer: Matt Layher <mdla...@gmail.com>
Gerrit-Reviewer: Tobias Klauser <tobias....@gmail.com>
Gerrit-CC: Ian Lance Taylor <ia...@golang.org>
Gerrit-CC: abner chenc <chen...@loongson.cn>
Gerrit-CC: xiaodong liu <teao...@gmail.com>
Gerrit-Attention: Tobias Klauser <tobias....@gmail.com>
Gerrit-Attention: Ian Lance Taylor <ia...@golang.org>
Gerrit-Comment-Date: Tue, 19 Apr 2022 09:30:21 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No

Tobias Klauser (Gerrit)

unread,
Apr 19, 2022, 5:31:17 AM4/19/22
to Meidan Li, goph...@pubsubhelper.golang.org, Matt Layher, Ian Lance Taylor, xiaodong liu, abner chenc, golang-co...@googlegroups.com

Attention is currently required from: Ian Lance Taylor.

View Change

1 comment:

  • File unix/linux/Dockerfile:

    • Opened https://go.dev/issue/52419.

      I'm OK with the approach suggested in #52419. But maybe we could switch to checkout and build gotip here once CL 342305 is submitted? That way we don't have to rely on external patches?

      But given it's only temporary (and assuming the backport request gets approved) I'm also fine with the current solution.

To view, visit change 399336. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: sys
Gerrit-Branch: master
Gerrit-Change-Id: If0ee99997360608d7ba218880a1ef180ca6db551
Gerrit-Change-Number: 399336
Gerrit-PatchSet: 6
Gerrit-Owner: Meidan Li <lime...@loongson.cn>
Gerrit-Reviewer: Matt Layher <mdla...@gmail.com>
Gerrit-Reviewer: Tobias Klauser <tobias....@gmail.com>
Gerrit-CC: Ian Lance Taylor <ia...@golang.org>
Gerrit-CC: abner chenc <chen...@loongson.cn>
Gerrit-CC: xiaodong liu <teao...@gmail.com>
Gerrit-Attention: Ian Lance Taylor <ia...@golang.org>
Gerrit-Comment-Date: Tue, 19 Apr 2022 09:31:11 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: Meidan Li <lime...@loongson.cn>
Comment-In-Reply-To: Tobias Klauser <tobias....@gmail.com>

Tobias Klauser (Gerrit)

unread,
Apr 19, 2022, 10:56:53 AM4/19/22
to Meidan Li, goph...@pubsubhelper.golang.org, Matt Layher, Ian Lance Taylor, xiaodong liu, abner chenc, golang-co...@googlegroups.com

Attention is currently required from: Meidan Li, Ian Lance Taylor.

View Change

3 comments:

  • File unix/syscall_linux_loong64.go:

    • Patch Set #6, Line 5: //go:build loong64 && linux

      Let's add a // +build line here too for consistency:

        // +build loong64,linux

      That way the package can potentially still be built using Go ≤ 1.15.
    • Patch Set #6, Line 65: //sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error)

      You can remove this and the generated func accept in zsyscall_linux_loong64.go. It's no longer used and was removed from other platforms in CL 386954.

    • Patch Set #6, Line 146:


      func (r *PtraceRegs) GetEra() uint64 { return r.Era }

      func (r *PtraceRegs) SetEra(era uint64) { r.Era = era }

      What is Era? I assume this should be (*PtraceRegs).PC and (*PtraceRegs).SetPC as on all other platforms defining type PtraceRegs.

To view, visit change 399336. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: sys
Gerrit-Branch: master
Gerrit-Change-Id: If0ee99997360608d7ba218880a1ef180ca6db551
Gerrit-Change-Number: 399336
Gerrit-PatchSet: 6
Gerrit-Owner: Meidan Li <lime...@loongson.cn>
Gerrit-Reviewer: Matt Layher <mdla...@gmail.com>
Gerrit-Reviewer: Tobias Klauser <tobias....@gmail.com>
Gerrit-CC: Ian Lance Taylor <ia...@golang.org>
Gerrit-CC: abner chenc <chen...@loongson.cn>
Gerrit-CC: xiaodong liu <teao...@gmail.com>
Gerrit-Attention: Meidan Li <lime...@loongson.cn>
Gerrit-Attention: Ian Lance Taylor <ia...@golang.org>
Gerrit-Comment-Date: Tue, 19 Apr 2022 14:56:47 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Gerrit-MessageType: comment

Meidan Li (Gerrit)

unread,
Apr 19, 2022, 10:51:49 PM4/19/22
to goph...@pubsubhelper.golang.org, golang-co...@googlegroups.com

Attention is currently required from: Meidan Li, Ian Lance Taylor.

Meidan Li uploaded patch set #7 to this change.

View Change

unix: add generate component files support for linux/loong64

Updates golang/go#46229

Change-Id: If0ee99997360608d7ba218880a1ef180ca6db551
---
M unix/linux/Dockerfile
M unix/linux/mkall.go
M unix/linux/types.go
A unix/syscall_linux_loong64.go
M unix/zerrors_linux.go
A unix/zerrors_linux_loong64.go
A unix/zsyscall_linux_loong64.go
A unix/zsysnum_linux_loong64.go
A unix/ztypes_linux_loong64.go
9 files changed, 2,599 insertions(+), 2 deletions(-)

To view, visit change 399336. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: sys
Gerrit-Branch: master
Gerrit-Change-Id: If0ee99997360608d7ba218880a1ef180ca6db551
Gerrit-Change-Number: 399336
Gerrit-PatchSet: 7
Gerrit-Owner: Meidan Li <lime...@loongson.cn>
Gerrit-Reviewer: Matt Layher <mdla...@gmail.com>
Gerrit-Reviewer: Tobias Klauser <tobias....@gmail.com>
Gerrit-CC: Ian Lance Taylor <ia...@golang.org>
Gerrit-CC: abner chenc <chen...@loongson.cn>
Gerrit-CC: xiaodong liu <teao...@gmail.com>
Gerrit-Attention: Meidan Li <lime...@loongson.cn>
Gerrit-Attention: Ian Lance Taylor <ia...@golang.org>
Gerrit-MessageType: newpatchset

Meidan Li (Gerrit)

unread,
Apr 19, 2022, 10:57:27 PM4/19/22
to goph...@pubsubhelper.golang.org, golang-co...@googlegroups.com

Attention is currently required from: Meidan Li, Ian Lance Taylor.

Meidan Li uploaded patch set #8 to this change.

View Change

unix: add generate component files support for linux/loong64

Updates golang/go#46229

Change-Id: If0ee99997360608d7ba218880a1ef180ca6db551
---
M unix/linux/Dockerfile
M unix/linux/mkall.go
M unix/linux/types.go
A unix/syscall_linux_loong64.go
M unix/zerrors_linux.go
A unix/zerrors_linux_loong64.go
A unix/zsyscall_linux_loong64.go
A unix/zsysnum_linux_loong64.go
A unix/ztypes_linux_loong64.go
9 files changed, 2,599 insertions(+), 2 deletions(-)

To view, visit change 399336. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: sys
Gerrit-Branch: master
Gerrit-Change-Id: If0ee99997360608d7ba218880a1ef180ca6db551
Gerrit-Change-Number: 399336
Gerrit-PatchSet: 8

Meidan Li (Gerrit)

unread,
Apr 19, 2022, 11:07:26 PM4/19/22
to goph...@pubsubhelper.golang.org, Matt Layher, Tobias Klauser, Ian Lance Taylor, xiaodong liu, abner chenc, golang-co...@googlegroups.com

Attention is currently required from: Tobias Klauser, Ian Lance Taylor.

View Change

3 comments:

  • File unix/syscall_linux_loong64.go:

    • Let's add a // +build line here too for consistency: […]

      Ok, added.

    • You can remove this and the generated func accept in zsyscall_linux_loong64.go. […]

      Removed, thanks.

    • Patch Set #6, Line 146:


      func (r *PtraceRegs) GetEra() uint64 { return r.Era }

      func (r *PtraceRegs) SetEra(era uint64) { r.Era = era }

    • What is Era? I assume this should be (*PtraceRegs).PC and (*PtraceRegs). […]

      Yeah, we should keep the function name consistent with other platforms, I have modified it.

      The Era is exception return address which was named epc/pc in other paltform. It's explaination in manual: https://loongson.github.io/LoongArch-Documentation/LoongArch-Vol1-EN.html#exception-return-address

          struct user_pt_regs {
      /* Main processor registers. */
      unsigned long regs[32];
              /* Original syscall arg0. */
      unsigned long orig_a0;
              /* Special CSR registers. */
      unsigned long csr_era;
      unsigned long csr_badv;
      unsigned long reserved[10];
      } __attribute__((aligned(8)));

To view, visit change 399336. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: sys
Gerrit-Branch: master
Gerrit-Change-Id: If0ee99997360608d7ba218880a1ef180ca6db551
Gerrit-Change-Number: 399336
Gerrit-PatchSet: 8
Gerrit-Owner: Meidan Li <lime...@loongson.cn>
Gerrit-Reviewer: Matt Layher <mdla...@gmail.com>
Gerrit-Reviewer: Tobias Klauser <tobias....@gmail.com>
Gerrit-CC: Ian Lance Taylor <ia...@golang.org>
Gerrit-CC: abner chenc <chen...@loongson.cn>
Gerrit-CC: xiaodong liu <teao...@gmail.com>
Gerrit-Attention: Tobias Klauser <tobias....@gmail.com>
Gerrit-Attention: Ian Lance Taylor <ia...@golang.org>
Gerrit-Comment-Date: Wed, 20 Apr 2022 03:07:21 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No

Tobias Klauser (Gerrit)

unread,
Apr 20, 2022, 3:16:22 AM4/20/22
to Meidan Li, goph...@pubsubhelper.golang.org, Matt Layher, Ian Lance Taylor, xiaodong liu, abner chenc, golang-co...@googlegroups.com

Attention is currently required from: Meidan Li, Ian Lance Taylor.

Patch set 8:Run-TryBot +1

View Change

    To view, visit change 399336. To unsubscribe, or for help writing mail filters, visit settings.

    Gerrit-Project: sys
    Gerrit-Branch: master
    Gerrit-Change-Id: If0ee99997360608d7ba218880a1ef180ca6db551
    Gerrit-Change-Number: 399336
    Gerrit-PatchSet: 8
    Gerrit-Owner: Meidan Li <lime...@loongson.cn>
    Gerrit-Reviewer: Matt Layher <mdla...@gmail.com>
    Gerrit-Reviewer: Tobias Klauser <tobias....@gmail.com>
    Gerrit-CC: Ian Lance Taylor <ia...@golang.org>
    Gerrit-CC: abner chenc <chen...@loongson.cn>
    Gerrit-CC: xiaodong liu <teao...@gmail.com>
    Gerrit-Attention: Meidan Li <lime...@loongson.cn>
    Gerrit-Attention: Ian Lance Taylor <ia...@golang.org>
    Gerrit-Comment-Date: Wed, 20 Apr 2022 07:16:16 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: Yes
    Gerrit-MessageType: comment

    Tobias Klauser (Gerrit)

    unread,
    Apr 20, 2022, 3:22:47 AM4/20/22
    to Meidan Li, goph...@pubsubhelper.golang.org, Gopher Robot, Matt Layher, Ian Lance Taylor, xiaodong liu, abner chenc, golang-co...@googlegroups.com

    Attention is currently required from: Meidan Li, Ian Lance Taylor.

    Patch set 8:Code-Review +2

    View Change

    1 comment:

    • Patchset:

      • Patch Set #8:

        Tested using ./mkall.sh on linux/amd64 which lead to no diff to the CL.

        Thanks

    To view, visit change 399336. To unsubscribe, or for help writing mail filters, visit settings.

    Gerrit-Project: sys
    Gerrit-Branch: master
    Gerrit-Change-Id: If0ee99997360608d7ba218880a1ef180ca6db551
    Gerrit-Change-Number: 399336
    Gerrit-PatchSet: 8
    Gerrit-Owner: Meidan Li <lime...@loongson.cn>
    Gerrit-Reviewer: Gopher Robot <go...@golang.org>
    Gerrit-Reviewer: Matt Layher <mdla...@gmail.com>
    Gerrit-Reviewer: Tobias Klauser <tobias....@gmail.com>
    Gerrit-CC: Ian Lance Taylor <ia...@golang.org>
    Gerrit-CC: abner chenc <chen...@loongson.cn>
    Gerrit-CC: xiaodong liu <teao...@gmail.com>
    Gerrit-Attention: Meidan Li <lime...@loongson.cn>
    Gerrit-Attention: Ian Lance Taylor <ia...@golang.org>
    Gerrit-Comment-Date: Wed, 20 Apr 2022 07:22:40 +0000

    Ian Lance Taylor (Gerrit)

    unread,
    Apr 20, 2022, 6:17:50 PM4/20/22
    to Meidan Li, goph...@pubsubhelper.golang.org, Tobias Klauser, Gopher Robot, Matt Layher, Ian Lance Taylor, xiaodong liu, abner chenc, golang-co...@googlegroups.com

    Attention is currently required from: Meidan Li, Ian Lance Taylor.

    Patch set 8:Run-TryBot +1Auto-Submit +1Code-Review +2

    View Change

    2 comments:

    • Patchset:

      • Patch Set #8:

        Thanks.

        After further discussion on 52419 I'm now inclined to live with this until Go 1.19 comes out in a few months (well, assuming Go 1.19 supports loongarch64).

    • File unix/linux/Dockerfile:

    To view, visit change 399336. To unsubscribe, or for help writing mail filters, visit settings.

    Gerrit-Project: sys
    Gerrit-Branch: master
    Gerrit-Change-Id: If0ee99997360608d7ba218880a1ef180ca6db551
    Gerrit-Change-Number: 399336
    Gerrit-PatchSet: 8
    Gerrit-Owner: Meidan Li <lime...@loongson.cn>
    Gerrit-Reviewer: Gopher Robot <go...@golang.org>
    Gerrit-Reviewer: Ian Lance Taylor <ia...@google.com>
    Gerrit-Reviewer: Matt Layher <mdla...@gmail.com>
    Gerrit-Reviewer: Tobias Klauser <tobias....@gmail.com>
    Gerrit-CC: Ian Lance Taylor <ia...@golang.org>
    Gerrit-CC: abner chenc <chen...@loongson.cn>
    Gerrit-CC: xiaodong liu <teao...@gmail.com>
    Gerrit-Attention: Meidan Li <lime...@loongson.cn>
    Gerrit-Attention: Ian Lance Taylor <ia...@golang.org>
    Gerrit-Comment-Date: Wed, 20 Apr 2022 22:17:46 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: Yes
    Comment-In-Reply-To: Meidan Li <lime...@loongson.cn>

    Ian Lance Taylor (Gerrit)

    unread,
    Apr 20, 2022, 6:18:13 PM4/20/22
    to Meidan Li, goph...@pubsubhelper.golang.org, Tobias Klauser, Gopher Robot, Matt Layher, Ian Lance Taylor, xiaodong liu, abner chenc, golang-co...@googlegroups.com

    Attention is currently required from: Meidan Li, Ian Lance Taylor.

    View Change

    1 comment:

      • I'm OK with the approach suggested in #52419. […]

        Ack

    To view, visit change 399336. To unsubscribe, or for help writing mail filters, visit settings.

    Gerrit-Project: sys
    Gerrit-Branch: master
    Gerrit-Change-Id: If0ee99997360608d7ba218880a1ef180ca6db551
    Gerrit-Change-Number: 399336
    Gerrit-PatchSet: 8
    Gerrit-Owner: Meidan Li <lime...@loongson.cn>
    Gerrit-Reviewer: Gopher Robot <go...@golang.org>
    Gerrit-Reviewer: Ian Lance Taylor <ia...@google.com>
    Gerrit-Reviewer: Matt Layher <mdla...@gmail.com>
    Gerrit-Reviewer: Tobias Klauser <tobias....@gmail.com>
    Gerrit-CC: Ian Lance Taylor <ia...@golang.org>
    Gerrit-CC: abner chenc <chen...@loongson.cn>
    Gerrit-CC: xiaodong liu <teao...@gmail.com>
    Gerrit-Attention: Meidan Li <lime...@loongson.cn>
    Gerrit-Attention: Ian Lance Taylor <ia...@golang.org>
    Gerrit-Comment-Date: Wed, 20 Apr 2022 22:18:10 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Meidan Li <lime...@loongson.cn>
    Comment-In-Reply-To: Tobias Klauser <tobias....@gmail.com>
    Comment-In-Reply-To: Ian Lance Taylor <ia...@golang.org>
    Gerrit-MessageType: comment

    Than McIntosh (Gerrit)

    unread,
    Apr 21, 2022, 9:37:26 PM4/21/22
    to Meidan Li, goph...@pubsubhelper.golang.org, Tobias Klauser, Gopher Robot, Matt Layher, Ian Lance Taylor, xiaodong liu, abner chenc, golang-co...@googlegroups.com

    Attention is currently required from: Meidan Li, Ian Lance Taylor.

    Patch set 8:Code-Review +1

    View Change

      To view, visit change 399336. To unsubscribe, or for help writing mail filters, visit settings.

      Gerrit-Project: sys
      Gerrit-Branch: master
      Gerrit-Change-Id: If0ee99997360608d7ba218880a1ef180ca6db551
      Gerrit-Change-Number: 399336
      Gerrit-PatchSet: 8
      Gerrit-Owner: Meidan Li <lime...@loongson.cn>
      Gerrit-Reviewer: Gopher Robot <go...@golang.org>
      Gerrit-Reviewer: Ian Lance Taylor <ia...@google.com>
      Gerrit-Reviewer: Matt Layher <mdla...@gmail.com>
      Gerrit-Reviewer: Than McIntosh <th...@google.com>
      Gerrit-Reviewer: Tobias Klauser <tobias....@gmail.com>
      Gerrit-CC: Ian Lance Taylor <ia...@golang.org>
      Gerrit-CC: abner chenc <chen...@loongson.cn>
      Gerrit-CC: xiaodong liu <teao...@gmail.com>
      Gerrit-Attention: Meidan Li <lime...@loongson.cn>
      Gerrit-Attention: Ian Lance Taylor <ia...@golang.org>
      Gerrit-Comment-Date: Fri, 22 Apr 2022 01:37:22 +0000

      Gopher Robot (Gerrit)

      unread,
      Apr 21, 2022, 9:37:29 PM4/21/22
      to Meidan Li, goph...@pubsubhelper.golang.org, golang-...@googlegroups.com, Than McIntosh, Tobias Klauser, Matt Layher, Ian Lance Taylor, xiaodong liu, abner chenc, golang-co...@googlegroups.com

      Gopher Robot submitted this change.

      View Change


      Approvals: Matt Layher: Looks good to me, but someone else must approve Than McIntosh: Looks good to me, but someone else must approve Tobias Klauser: Looks good to me, approved; Run TryBots Ian Lance Taylor: Looks good to me, approved; Run TryBots; Automatically submit change Gopher Robot: TryBots succeeded
      unix: add generate component files support for linux/loong64

      Updates golang/go#46229

      Change-Id: If0ee99997360608d7ba218880a1ef180ca6db551
      Reviewed-on: https://go-review.googlesource.com/c/sys/+/399336
      Reviewed-by: Matt Layher <mdla...@gmail.com>
      Run-TryBot: Tobias Klauser <tobias....@gmail.com>
      TryBot-Result: Gopher Robot <go...@golang.org>
      Reviewed-by: Tobias Klauser <tobias....@gmail.com>
      Reviewed-by: Ian Lance Taylor <ia...@google.com>
      Run-TryBot: Ian Lance Taylor <ia...@google.com>
      Auto-Submit: Ian Lance Taylor <ia...@google.com>
      Reviewed-by: Than McIntosh <th...@google.com>

      ---
      M unix/linux/Dockerfile
      M unix/linux/mkall.go
      M unix/linux/types.go
      A unix/syscall_linux_loong64.go
      M unix/zerrors_linux.go
      A unix/zerrors_linux_loong64.go
      A unix/zsyscall_linux_loong64.go
      A unix/zsysnum_linux_loong64.go
      A unix/ztypes_linux_loong64.go
      9 files changed, 2,608 insertions(+), 2 deletions(-)

      diff --git a/unix/linux/Dockerfile b/unix/linux/Dockerfile
      index 0c8f54e..bcee893 100644
      --- a/unix/linux/Dockerfile
      +++ b/unix/linux/Dockerfile
      @@ -20,6 +20,13 @@
      # GNU C library: Released 03 Feb 2022
      RUN git clone --branch release/2.35/master --depth 1 https://sourceware.org/git/glibc.git

      +# Only for loong64, add kernel and glibc patch
      +RUN git clone https://github.com/loongson/golang-infra.git /git/loong64-patches \
      + && git config --global user.name "golang" && git config --global user.email "golang@localhost" \
      + && cd /git/loong64-patches && git checkout linux-v5.17 && cd /git/linux && git am /git/loong64-patches/*.patch \
      + && cd /git/loong64-patches && git checkout glibc-v2.35 && cd /git/glibc && git am /git/loong64-patches/*.patch \
      + && curl -fsSL https://git.savannah.gnu.org/cgit/config.git/plain/config.sub -o /git/glibc/scripts/config.sub
      +
      # Get Go
      ENV GOLANG_VERSION 1.18
      ENV GOLANG_DOWNLOAD_URL https://golang.org/dl/go$GOLANG_VERSION.linux-amd64.tar.gz
      @@ -51,6 +58,24 @@
      && apt-get clean \
      && rm -rf /var/lib/apt/lists/*

      +# Only for loong64, add patch and build golang
      +RUN git clone https://go.googlesource.com/go --branch go1.18 /git/go \
      + && cd /git/loong64-patches && git checkout go-v1.18 && cd /git/go && git am /git/loong64-patches/*.patch \
      + && rm -rf /git/loong64-patches && cd /git/go/src && ./make.bash
      +
      +ENV PATH /git/go/bin:$PATH
      +
      +# Only for loong64, getting tools of qemu-user and gcc-cross-compiler
      +RUN apt-get update && apt-get install wget xz-utils -y && mkdir /loong64 && cd /loong64 \
      + && wget -q https://github.com/loongson/build-tools/releases/download/2021.12.21/qemu-loongarch-2022-4-01.tar.gz \
      + && tar xf qemu-loongarch-2022-4-01.tar.gz && cp ./4-1/new-world/qemu-loongarch64 /usr/bin/ \
      + && rm -rf qemu-loongarch-2022-4-01.tar.gz 4-1 \
      + && wget -q https://github.com/loongson/build-tools/releases/download/2021.12.21/loongarch64-clfs-2022-03-03-cross-tools-gcc-glibc.tar.xz \
      + && tar xf loongarch64-clfs-2022-03-03-cross-tools-gcc-glibc.tar.xz && mv cross-tools.gcc_glibc /usr/local/cross-tools-loong64 \
      + && rm -rf loongarch64-clfs-2022-03-03-cross-tools-gcc-glibc.tar.xz \
      + && ln -s /usr/local/cross-tools-loong64/bin/loongarch64-unknown-linux-gnu-gcc /usr/bin/loongarch64-linux-gnu-gcc \
      + && rm -rf /loong64
      +
      # Let the scripts know they are in the docker environment
      ENV GOLANG_SYS_BUILD docker
      WORKDIR /build/unix
      diff --git a/unix/linux/mkall.go b/unix/linux/mkall.go
      index fb015b1..ef49c5d 100644
      --- a/unix/linux/mkall.go
      +++ b/unix/linux/mkall.go
      @@ -84,6 +84,12 @@
      Bits: 32,
      },
      {
      + GoArch: "loong64",
      + LinuxArch: "loongarch",
      + GNUArch: "loongarch64-linux-gnu",
      + Bits: 64,
      + },
      + {
      GoArch: "mips",
      LinuxArch: "mips",
      GNUArch: "mips-linux-gnu",
      diff --git a/unix/linux/types.go b/unix/linux/types.go
      index af78e11..8e82299 100644
      --- a/unix/linux/types.go
      +++ b/unix/linux/types.go
      @@ -308,7 +308,7 @@

      #ifdef __ARM_EABI__
      typedef struct user_regs PtraceRegs;
      -#elif defined(__aarch64__)
      +#elif defined(__aarch64__) || defined(__loongarch64)
      typedef struct user_pt_regs PtraceRegs;
      #elif defined(__mips__) || defined(__powerpc__) || defined(__powerpc64__)
      typedef struct pt_regs PtraceRegs;
      @@ -339,7 +339,8 @@
      // alignment requirements of EABI
      int32_t padFd;
      #elif defined(__powerpc__) || defined(__powerpc64__) || defined(__s390x__) || defined(__sparc__) \
      - || defined(__riscv) || (defined(__mips__) && _MIPS_SIM == _MIPS_SIM_ABI64)
      + || defined(__riscv) || (defined(__mips__) && _MIPS_SIM == _MIPS_SIM_ABI64) \
      + || defined(__loongarch64)
      int32_t _padFd;
      #endif
      int32_t fd;
      diff --git a/unix/syscall_linux_loong64.go b/unix/syscall_linux_loong64.go
      new file mode 100644
      index 0000000..28ba7b8
      --- /dev/null
      +++ b/unix/syscall_linux_loong64.go
      @@ -0,0 +1,191 @@
      +// 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 && linux
      +// +build loong64,linux
      +
      +package unix
      +
      +import "unsafe"
      +
      +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) = SYS_EPOLL_PWAIT
      +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64
      +//sys Fchown(fd int, uid int, gid int) (err error)
      +//sys Fstat(fd int, stat *Stat_t) (err error)
      +//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error)
      +//sys Fstatfs(fd int, buf *Statfs_t) (err error)
      +//sys Ftruncate(fd int, length int64) (err error)
      +//sysnb Getegid() (egid int)
      +//sysnb Geteuid() (euid int)
      +//sysnb Getgid() (gid int)
      +//sysnb Getuid() (uid int)
      +//sys Listen(s int, n int) (err error)
      +//sys pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
      +//sys pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
      +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK
      +
      +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
      + var ts *Timespec
      + if timeout != nil {
      + ts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000}
      + }
      + return Pselect(nfd, r, w, e, ts, nil)
      +}
      +
      +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error)
      +//sys setfsgid(gid int) (prev int, err error)
      +//sys setfsuid(uid int) (prev int, err error)
      +//sysnb Setregid(rgid int, egid int) (err error)
      +//sysnb Setresgid(rgid int, egid int, sgid int) (err error)
      +//sysnb Setresuid(ruid int, euid int, suid int) (err error)
      +//sysnb Setreuid(ruid int, euid int) (err error)
      +//sys Shutdown(fd int, how int) (err error)
      +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)
      +
      +func Stat(path string, stat *Stat_t) (err error) {
      + return Fstatat(AT_FDCWD, path, stat, 0)
      +}
      +
      +func Lchown(path string, uid int, gid int) (err error) {
      + return Fchownat(AT_FDCWD, path, uid, gid, AT_SYMLINK_NOFOLLOW)
      +}
      +
      +func Lstat(path string, stat *Stat_t) (err error) {
      + return Fstatat(AT_FDCWD, path, stat, AT_SYMLINK_NOFOLLOW)
      +}
      +
      +//sys Statfs(path string, buf *Statfs_t) (err error)
      +//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error)
      +//sys Truncate(path string, length int64) (err error)
      +
      +func Ustat(dev int, ubuf *Ustat_t) (err error) {
      + return ENOSYS
      +}
      +
      +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)
      +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
      +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
      +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error)
      +//sysnb setgroups(n int, list *_Gid_t) (err error)
      +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)
      +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)
      +//sysnb socket(domain int, typ int, proto int) (fd int, err error)
      +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error)
      +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)
      +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)
      +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)
      +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)
      +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error)
      +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error)
      +//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)
      +
      +//sysnb Gettimeofday(tv *Timeval) (err error)
      +
      +func setTimespec(sec, nsec int64) Timespec {
      + return Timespec{Sec: sec, Nsec: nsec}
      +}
      +
      +func setTimeval(sec, usec int64) Timeval {
      + return Timeval{Sec: sec, Usec: usec}
      +}
      +
      +func Getrlimit(resource int, rlim *Rlimit) (err error) {
      + err = Prlimit(0, resource, nil, rlim)
      + return
      +}
      +
      +func Setrlimit(resource int, rlim *Rlimit) (err error) {
      + err = Prlimit(0, resource, rlim, nil)
      + return
      +}
      +
      +func futimesat(dirfd int, path string, tv *[2]Timeval) (err error) {
      + if tv == nil {
      + return utimensat(dirfd, path, nil, 0)
      + }
      +
      + ts := []Timespec{
      + NsecToTimespec(TimevalToNsec(tv[0])),
      + NsecToTimespec(TimevalToNsec(tv[1])),
      + }
      + return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)
      +}
      +
      +func Time(t *Time_t) (Time_t, error) {
      + var tv Timeval
      + err := Gettimeofday(&tv)
      + if err != nil {
      + return 0, err
      + }
      + if t != nil {
      + *t = Time_t(tv.Sec)
      + }
      + return Time_t(tv.Sec), nil
      +}
      +
      +func Utime(path string, buf *Utimbuf) error {
      + tv := []Timeval{
      + {Sec: buf.Actime},
      + {Sec: buf.Modtime},
      + }
      + return Utimes(path, tv)
      +}
      +
      +func utimes(path string, tv *[2]Timeval) (err error) {
      + if tv == nil {
      + return utimensat(AT_FDCWD, path, nil, 0)
      + }
      +
      + ts := []Timespec{
      + NsecToTimespec(TimevalToNsec(tv[0])),
      + NsecToTimespec(TimevalToNsec(tv[1])),
      + }
      + return utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)
      +}
      +
      +func (r *PtraceRegs) PC() uint64 { return r.Era }
      +
      +func (r *PtraceRegs) SetPC(era uint64) { r.Era = era }
      +
      +func (iov *Iovec) SetLen(length int) {
      + iov.Len = uint64(length)
      +}
      +
      +func (msghdr *Msghdr) SetControllen(length int) {
      + msghdr.Controllen = uint64(length)
      +}
      +
      +func (msghdr *Msghdr) SetIovlen(length int) {
      + msghdr.Iovlen = uint64(length)
      +}
      +
      +func (cmsg *Cmsghdr) SetLen(length int) {
      + cmsg.Len = uint64(length)
      +}
      +
      +func (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {
      + rsa.Service_name_len = uint64(length)
      +}
      +
      +func Pause() error {
      + _, err := ppoll(nil, 0, nil, nil)
      + return err
      +}
      +
      +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
      + return Renameat2(olddirfd, oldpath, newdirfd, newpath, 0)
      +}
      +
      +//sys kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)
      +
      +func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {
      + cmdlineLen := len(cmdline)
      + if cmdlineLen > 0 {
      + // Account for the additional NULL byte added by
      + // BytePtrFromString in kexecFileLoad. The kexec_file_load
      + // syscall expects a NULL-terminated string.
      + cmdlineLen++
      + }
      + return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)
      +}
      diff --git a/unix/zerrors_linux.go b/unix/zerrors_linux.go
      index 3de79fa..c0a43f8 100644
      --- a/unix/zerrors_linux.go
      +++ b/unix/zerrors_linux.go
      @@ -1310,6 +1310,7 @@
      KEXEC_ARCH_ARM = 0x280000
      KEXEC_ARCH_DEFAULT = 0x0
      KEXEC_ARCH_IA_64 = 0x320000
      + KEXEC_ARCH_LOONGARCH = 0x1020000
      KEXEC_ARCH_MASK = 0xffff0000
      KEXEC_ARCH_MIPS = 0x80000
      KEXEC_ARCH_MIPS_LE = 0xa0000
      diff --git a/unix/zerrors_linux_loong64.go b/unix/zerrors_linux_loong64.go
      new file mode 100644
      index 0000000..ebc5f32
      --- /dev/null
      +++ b/unix/zerrors_linux_loong64.go
      @@ -0,0 +1,818 @@
      +// mkerrors.sh -Wall -Werror -static -I/tmp/include
      +// Code generated by the command above; see README.md. DO NOT EDIT.
      +
      +//go:build loong64 && linux
      +// +build loong64,linux
      +
      +// Code generated by cmd/cgo -godefs; DO NOT EDIT.
      +// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/unix/_const.go
      +
      +package unix
      +
      +import "syscall"
      +
      +const (
      + B1000000 = 0x1008
      + B115200 = 0x1002
      + B1152000 = 0x1009
      + B1500000 = 0x100a
      + B2000000 = 0x100b
      + B230400 = 0x1003
      + B2500000 = 0x100c
      + B3000000 = 0x100d
      + B3500000 = 0x100e
      + B4000000 = 0x100f
      + B460800 = 0x1004
      + B500000 = 0x1005
      + B57600 = 0x1001
      + B576000 = 0x1006
      + B921600 = 0x1007
      + BLKBSZGET = 0x80081270
      + BLKBSZSET = 0x40081271
      + BLKFLSBUF = 0x1261
      + BLKFRAGET = 0x1265
      + BLKFRASET = 0x1264
      + BLKGETSIZE = 0x1260
      + BLKGETSIZE64 = 0x80081272
      + BLKPBSZGET = 0x127b
      + BLKRAGET = 0x1263
      + BLKRASET = 0x1262
      + BLKROGET = 0x125e
      + BLKROSET = 0x125d
      + BLKRRPART = 0x125f
      + BLKSECTGET = 0x1267
      + BLKSECTSET = 0x1266
      + BLKSSZGET = 0x1268
      + BOTHER = 0x1000
      + BS1 = 0x2000
      + BSDLY = 0x2000
      + CBAUD = 0x100f
      + CBAUDEX = 0x1000
      + CIBAUD = 0x100f0000
      + CLOCAL = 0x800
      + CR1 = 0x200
      + CR2 = 0x400
      + CR3 = 0x600
      + CRDLY = 0x600
      + CREAD = 0x80
      + CS6 = 0x10
      + CS7 = 0x20
      + CS8 = 0x30
      + CSIZE = 0x30
      + CSTOPB = 0x40
      + ECCGETLAYOUT = 0x81484d11
      + ECCGETSTATS = 0x80104d12
      + ECHOCTL = 0x200
      + ECHOE = 0x10
      + ECHOK = 0x20
      + ECHOKE = 0x800
      + ECHONL = 0x40
      + ECHOPRT = 0x400
      + EFD_CLOEXEC = 0x80000
      + EFD_NONBLOCK = 0x800
      + EPOLL_CLOEXEC = 0x80000
      + EXTPROC = 0x10000
      + FF1 = 0x8000
      + FFDLY = 0x8000
      + FICLONE = 0x40049409
      + FICLONERANGE = 0x4020940d
      + FLUSHO = 0x1000
      + FPU_CTX_MAGIC = 0x46505501
      + FS_IOC_ENABLE_VERITY = 0x40806685
      + FS_IOC_GETFLAGS = 0x80086601
      + FS_IOC_GET_ENCRYPTION_NONCE = 0x8010661b
      + FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615
      + FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614
      + FS_IOC_SETFLAGS = 0x40086602
      + FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613
      + F_GETLK = 0x5
      + F_GETLK64 = 0x5
      + F_GETOWN = 0x9
      + F_RDLCK = 0x0
      + F_SETLK = 0x6
      + F_SETLK64 = 0x6
      + F_SETLKW = 0x7
      + F_SETLKW64 = 0x7
      + F_SETOWN = 0x8
      + F_UNLCK = 0x2
      + F_WRLCK = 0x1
      + HIDIOCGRAWINFO = 0x80084803
      + HIDIOCGRDESC = 0x90044802
      + HIDIOCGRDESCSIZE = 0x80044801
      + HUPCL = 0x400
      + ICANON = 0x2
      + IEXTEN = 0x8000
      + IN_CLOEXEC = 0x80000
      + IN_NONBLOCK = 0x800
      + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9
      + ISIG = 0x1
      + IUCLC = 0x200
      + IXOFF = 0x1000
      + IXON = 0x400
      + LASX_CTX_MAGIC = 0x41535801
      + LSX_CTX_MAGIC = 0x53580001
      + MAP_ANON = 0x20
      + MAP_ANONYMOUS = 0x20
      + MAP_DENYWRITE = 0x800
      + MAP_EXECUTABLE = 0x1000
      + MAP_GROWSDOWN = 0x100
      + MAP_HUGETLB = 0x40000
      + MAP_LOCKED = 0x2000
      + MAP_NONBLOCK = 0x10000
      + MAP_NORESERVE = 0x4000
      + MAP_POPULATE = 0x8000
      + MAP_STACK = 0x20000
      + MAP_SYNC = 0x80000
      + MCL_CURRENT = 0x1
      + MCL_FUTURE = 0x2
      + MCL_ONFAULT = 0x4
      + MEMERASE = 0x40084d02
      + MEMERASE64 = 0x40104d14
      + MEMGETBADBLOCK = 0x40084d0b
      + MEMGETINFO = 0x80204d01
      + MEMGETOOBSEL = 0x80c84d0a
      + MEMGETREGIONCOUNT = 0x80044d07
      + MEMISLOCKED = 0x80084d17
      + MEMLOCK = 0x40084d05
      + MEMREADOOB = 0xc0104d04
      + MEMSETBADBLOCK = 0x40084d0c
      + MEMUNLOCK = 0x40084d06
      + MEMWRITEOOB = 0xc0104d03
      + MTDFILEMODE = 0x4d13
      + NFDBITS = 0x40
      + NLDLY = 0x100
      + NOFLSH = 0x80
      + NS_GET_NSTYPE = 0xb703
      + NS_GET_OWNER_UID = 0xb704
      + NS_GET_PARENT = 0xb702
      + NS_GET_USERNS = 0xb701
      + OLCUC = 0x2
      + ONLCR = 0x4
      + OTPERASE = 0x400c4d19
      + OTPGETREGIONCOUNT = 0x40044d0e
      + OTPGETREGIONINFO = 0x400c4d0f
      + OTPLOCK = 0x800c4d10
      + OTPSELECT = 0x80044d0d
      + O_APPEND = 0x400
      + O_ASYNC = 0x2000
      + O_CLOEXEC = 0x80000
      + O_CREAT = 0x40
      + O_DIRECT = 0x4000
      + O_DIRECTORY = 0x10000
      + O_DSYNC = 0x1000
      + O_EXCL = 0x80
      + O_FSYNC = 0x101000
      + O_LARGEFILE = 0x0
      + O_NDELAY = 0x800
      + O_NOATIME = 0x40000
      + O_NOCTTY = 0x100
      + O_NOFOLLOW = 0x20000
      + O_NONBLOCK = 0x800
      + O_PATH = 0x200000
      + O_RSYNC = 0x101000
      + O_SYNC = 0x101000
      + O_TMPFILE = 0x410000
      + O_TRUNC = 0x200
      + PARENB = 0x100
      + PARODD = 0x200
      + PENDIN = 0x4000
      + PERF_EVENT_IOC_DISABLE = 0x2401
      + PERF_EVENT_IOC_ENABLE = 0x2400
      + PERF_EVENT_IOC_ID = 0x80082407
      + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b
      + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409
      + PERF_EVENT_IOC_PERIOD = 0x40082404
      + PERF_EVENT_IOC_QUERY_BPF = 0xc008240a
      + PERF_EVENT_IOC_REFRESH = 0x2402
      + PERF_EVENT_IOC_RESET = 0x2403
      + PERF_EVENT_IOC_SET_BPF = 0x40042408
      + PERF_EVENT_IOC_SET_FILTER = 0x40082406
      + PERF_EVENT_IOC_SET_OUTPUT = 0x2405
      + PPPIOCATTACH = 0x4004743d
      + PPPIOCATTCHAN = 0x40047438
      + PPPIOCBRIDGECHAN = 0x40047435
      + PPPIOCCONNECT = 0x4004743a
      + PPPIOCDETACH = 0x4004743c
      + PPPIOCDISCONN = 0x7439
      + PPPIOCGASYNCMAP = 0x80047458
      + PPPIOCGCHAN = 0x80047437
      + PPPIOCGDEBUG = 0x80047441
      + PPPIOCGFLAGS = 0x8004745a
      + PPPIOCGIDLE = 0x8010743f
      + PPPIOCGIDLE32 = 0x8008743f
      + PPPIOCGIDLE64 = 0x8010743f
      + PPPIOCGL2TPSTATS = 0x80487436
      + PPPIOCGMRU = 0x80047453
      + PPPIOCGRASYNCMAP = 0x80047455
      + PPPIOCGUNIT = 0x80047456
      + PPPIOCGXASYNCMAP = 0x80207450
      + PPPIOCSACTIVE = 0x40107446
      + PPPIOCSASYNCMAP = 0x40047457
      + PPPIOCSCOMPRESS = 0x4010744d
      + PPPIOCSDEBUG = 0x40047440
      + PPPIOCSFLAGS = 0x40047459
      + PPPIOCSMAXCID = 0x40047451
      + PPPIOCSMRRU = 0x4004743b
      + PPPIOCSMRU = 0x40047452
      + PPPIOCSNPMODE = 0x4008744b
      + PPPIOCSPASS = 0x40107447
      + PPPIOCSRASYNCMAP = 0x40047454
      + PPPIOCSXASYNCMAP = 0x4020744f
      + PPPIOCUNBRIDGECHAN = 0x7434
      + PPPIOCXFERUNIT = 0x744e
      + PR_SET_PTRACER_ANY = 0xffffffffffffffff
      + PTRACE_SYSEMU = 0x1f
      + PTRACE_SYSEMU_SINGLESTEP = 0x20
      + RLIMIT_AS = 0x9
      + RLIMIT_MEMLOCK = 0x8
      + RLIMIT_NOFILE = 0x7
      + RLIMIT_NPROC = 0x6
      + RLIMIT_RSS = 0x5
      + RNDADDENTROPY = 0x40085203
      + RNDADDTOENTCNT = 0x40045201
      + RNDCLEARPOOL = 0x5206
      + RNDGETENTCNT = 0x80045200
      + RNDGETPOOL = 0x80085202
      + RNDRESEEDCRNG = 0x5207
      + RNDZAPENTCNT = 0x5204
      + RTC_AIE_OFF = 0x7002
      + RTC_AIE_ON = 0x7001
      + RTC_ALM_READ = 0x80247008
      + RTC_ALM_SET = 0x40247007
      + RTC_EPOCH_READ = 0x8008700d
      + RTC_EPOCH_SET = 0x4008700e
      + RTC_IRQP_READ = 0x8008700b
      + RTC_IRQP_SET = 0x4008700c
      + RTC_PARAM_GET = 0x40187013
      + RTC_PARAM_SET = 0x40187014
      + RTC_PIE_OFF = 0x7006
      + RTC_PIE_ON = 0x7005
      + RTC_PLL_GET = 0x80207011
      + RTC_PLL_SET = 0x40207012
      + RTC_RD_TIME = 0x80247009
      + RTC_SET_TIME = 0x4024700a
      + RTC_UIE_OFF = 0x7004
      + RTC_UIE_ON = 0x7003
      + RTC_VL_CLR = 0x7014
      + RTC_VL_READ = 0x80047013
      + RTC_WIE_OFF = 0x7010
      + RTC_WIE_ON = 0x700f
      + RTC_WKALM_RD = 0x80287010
      + RTC_WKALM_SET = 0x4028700f
      + SCM_TIMESTAMPING = 0x25
      + SCM_TIMESTAMPING_OPT_STATS = 0x36
      + SCM_TIMESTAMPING_PKTINFO = 0x3a
      + SCM_TIMESTAMPNS = 0x23
      + SCM_TXTIME = 0x3d
      + SCM_WIFI_STATUS = 0x29
      + SFD_CLOEXEC = 0x80000
      + SFD_NONBLOCK = 0x800
      + SIOCATMARK = 0x8905
      + SIOCGPGRP = 0x8904
      + SIOCGSTAMPNS_NEW = 0x80108907
      + SIOCGSTAMP_NEW = 0x80108906
      + SIOCINQ = 0x541b
      + SIOCOUTQ = 0x5411
      + SIOCSPGRP = 0x8902
      + SOCK_CLOEXEC = 0x80000
      + SOCK_DGRAM = 0x2
      + SOCK_NONBLOCK = 0x800
      + SOCK_STREAM = 0x1
      + SOL_SOCKET = 0x1
      + SO_ACCEPTCONN = 0x1e
      + SO_ATTACH_BPF = 0x32
      + SO_ATTACH_REUSEPORT_CBPF = 0x33
      + SO_ATTACH_REUSEPORT_EBPF = 0x34
      + SO_BINDTODEVICE = 0x19
      + SO_BINDTOIFINDEX = 0x3e
      + SO_BPF_EXTENSIONS = 0x30
      + SO_BROADCAST = 0x6
      + SO_BSDCOMPAT = 0xe
      + SO_BUF_LOCK = 0x48
      + SO_BUSY_POLL = 0x2e
      + SO_BUSY_POLL_BUDGET = 0x46
      + SO_CNX_ADVICE = 0x35
      + SO_COOKIE = 0x39
      + SO_DETACH_REUSEPORT_BPF = 0x44
      + SO_DOMAIN = 0x27
      + SO_DONTROUTE = 0x5
      + SO_ERROR = 0x4
      + SO_INCOMING_CPU = 0x31
      + SO_INCOMING_NAPI_ID = 0x38
      + SO_KEEPALIVE = 0x9
      + SO_LINGER = 0xd
      + SO_LOCK_FILTER = 0x2c
      + SO_MARK = 0x24
      + SO_MAX_PACING_RATE = 0x2f
      + SO_MEMINFO = 0x37
      + SO_NETNS_COOKIE = 0x47
      + SO_NOFCS = 0x2b
      + SO_OOBINLINE = 0xa
      + SO_PASSCRED = 0x10
      + SO_PASSSEC = 0x22
      + SO_PEEK_OFF = 0x2a
      + SO_PEERCRED = 0x11
      + SO_PEERGROUPS = 0x3b
      + SO_PEERSEC = 0x1f
      + SO_PREFER_BUSY_POLL = 0x45
      + SO_PROTOCOL = 0x26
      + SO_RCVBUF = 0x8
      + SO_RCVBUFFORCE = 0x21
      + SO_RCVLOWAT = 0x12
      + SO_RCVTIMEO = 0x14
      + SO_RCVTIMEO_NEW = 0x42
      + SO_RCVTIMEO_OLD = 0x14
      + SO_RESERVE_MEM = 0x49
      + SO_REUSEADDR = 0x2
      + SO_REUSEPORT = 0xf
      + SO_RXQ_OVFL = 0x28
      + SO_SECURITY_AUTHENTICATION = 0x16
      + SO_SECURITY_ENCRYPTION_NETWORK = 0x18
      + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
      + SO_SELECT_ERR_QUEUE = 0x2d
      + SO_SNDBUF = 0x7
      + SO_SNDBUFFORCE = 0x20
      + SO_SNDLOWAT = 0x13
      + SO_SNDTIMEO = 0x15
      + SO_SNDTIMEO_NEW = 0x43
      + SO_SNDTIMEO_OLD = 0x15
      + SO_TIMESTAMPING = 0x25
      + SO_TIMESTAMPING_NEW = 0x41
      + SO_TIMESTAMPING_OLD = 0x25
      + SO_TIMESTAMPNS = 0x23
      + SO_TIMESTAMPNS_NEW = 0x40
      + SO_TIMESTAMPNS_OLD = 0x23
      + SO_TIMESTAMP_NEW = 0x3f
      + SO_TXTIME = 0x3d
      + SO_TYPE = 0x3
      + SO_WIFI_STATUS = 0x29
      + SO_ZEROCOPY = 0x3c
      + TAB1 = 0x800
      + TAB2 = 0x1000
      + TAB3 = 0x1800
      + TABDLY = 0x1800
      + TCFLSH = 0x540b
      + TCGETA = 0x5405
      + TCGETS = 0x5401
      + TCGETS2 = 0x802c542a
      + TCGETX = 0x5432
      + TCSAFLUSH = 0x2
      + TCSBRK = 0x5409
      + TCSBRKP = 0x5425
      + TCSETA = 0x5406
      + TCSETAF = 0x5408
      + TCSETAW = 0x5407
      + TCSETS = 0x5402
      + TCSETS2 = 0x402c542b
      + TCSETSF = 0x5404
      + TCSETSF2 = 0x402c542d
      + TCSETSW = 0x5403
      + TCSETSW2 = 0x402c542c
      + TCSETX = 0x5433
      + TCSETXF = 0x5434
      + TCSETXW = 0x5435
      + TCXONC = 0x540a
      + TFD_CLOEXEC = 0x80000
      + TFD_NONBLOCK = 0x800
      + TIOCCBRK = 0x5428
      + TIOCCONS = 0x541d
      + TIOCEXCL = 0x540c
      + TIOCGDEV = 0x80045432
      + TIOCGETD = 0x5424
      + TIOCGEXCL = 0x80045440
      + TIOCGICOUNT = 0x545d
      + TIOCGISO7816 = 0x80285442
      + TIOCGLCKTRMIOS = 0x5456
      + TIOCGPGRP = 0x540f
      + TIOCGPKT = 0x80045438
      + TIOCGPTLCK = 0x80045439
      + TIOCGPTN = 0x80045430
      + TIOCGPTPEER = 0x5441
      + TIOCGRS485 = 0x542e
      + TIOCGSERIAL = 0x541e
      + TIOCGSID = 0x5429
      + TIOCGSOFTCAR = 0x5419
      + TIOCGWINSZ = 0x5413
      + TIOCINQ = 0x541b
      + TIOCLINUX = 0x541c
      + TIOCMBIC = 0x5417
      + TIOCMBIS = 0x5416
      + TIOCMGET = 0x5415
      + TIOCMIWAIT = 0x545c
      + TIOCMSET = 0x5418
      + TIOCM_CAR = 0x40
      + TIOCM_CD = 0x40
      + TIOCM_CTS = 0x20
      + TIOCM_DSR = 0x100
      + TIOCM_RI = 0x80
      + TIOCM_RNG = 0x80
      + TIOCM_SR = 0x10
      + TIOCM_ST = 0x8
      + TIOCNOTTY = 0x5422
      + TIOCNXCL = 0x540d
      + TIOCOUTQ = 0x5411
      + TIOCPKT = 0x5420
      + TIOCSBRK = 0x5427
      + TIOCSCTTY = 0x540e
      + TIOCSERCONFIG = 0x5453
      + TIOCSERGETLSR = 0x5459
      + TIOCSERGETMULTI = 0x545a
      + TIOCSERGSTRUCT = 0x5458
      + TIOCSERGWILD = 0x5454
      + TIOCSERSETMULTI = 0x545b
      + TIOCSERSWILD = 0x5455
      + TIOCSER_TEMT = 0x1
      + TIOCSETD = 0x5423
      + TIOCSIG = 0x40045436
      + TIOCSISO7816 = 0xc0285443
      + TIOCSLCKTRMIOS = 0x5457
      + TIOCSPGRP = 0x5410
      + TIOCSPTLCK = 0x40045431
      + TIOCSRS485 = 0x542f
      + TIOCSSERIAL = 0x541f
      + TIOCSSOFTCAR = 0x541a
      + TIOCSTI = 0x5412
      + TIOCSWINSZ = 0x5414
      + TIOCVHANGUP = 0x5437
      + TOSTOP = 0x100
      + TUNATTACHFILTER = 0x401054d5
      + TUNDETACHFILTER = 0x401054d6
      + TUNGETDEVNETNS = 0x54e3
      + TUNGETFEATURES = 0x800454cf
      + TUNGETFILTER = 0x801054db
      + TUNGETIFF = 0x800454d2
      + TUNGETSNDBUF = 0x800454d3
      + TUNGETVNETBE = 0x800454df
      + TUNGETVNETHDRSZ = 0x800454d7
      + TUNGETVNETLE = 0x800454dd
      + TUNSETCARRIER = 0x400454e2
      + TUNSETDEBUG = 0x400454c9
      + TUNSETFILTEREBPF = 0x800454e1
      + TUNSETGROUP = 0x400454ce
      + TUNSETIFF = 0x400454ca
      + TUNSETIFINDEX = 0x400454da
      + TUNSETLINK = 0x400454cd
      + TUNSETNOCSUM = 0x400454c8
      + TUNSETOFFLOAD = 0x400454d0
      + TUNSETOWNER = 0x400454cc
      + TUNSETPERSIST = 0x400454cb
      + TUNSETQUEUE = 0x400454d9
      + TUNSETSNDBUF = 0x400454d4
      + TUNSETSTEERINGEBPF = 0x800454e0
      + TUNSETTXFILTER = 0x400454d1
      + TUNSETVNETBE = 0x400454de
      + TUNSETVNETHDRSZ = 0x400454d8
      + TUNSETVNETLE = 0x400454dc
      + UBI_IOCATT = 0x40186f40
      + UBI_IOCDET = 0x40046f41
      + UBI_IOCEBCH = 0x40044f02
      + UBI_IOCEBER = 0x40044f01
      + UBI_IOCEBISMAP = 0x80044f05
      + UBI_IOCEBMAP = 0x40084f03
      + UBI_IOCEBUNMAP = 0x40044f04
      + UBI_IOCMKVOL = 0x40986f00
      + UBI_IOCRMVOL = 0x40046f01
      + UBI_IOCRNVOL = 0x51106f03
      + UBI_IOCRPEB = 0x40046f04
      + UBI_IOCRSVOL = 0x400c6f02
      + UBI_IOCSETVOLPROP = 0x40104f06
      + UBI_IOCSPEB = 0x40046f05
      + UBI_IOCVOLCRBLK = 0x40804f07
      + UBI_IOCVOLRMBLK = 0x4f08
      + UBI_IOCVOLUP = 0x40084f00
      + VDISCARD = 0xd
      + VEOF = 0x4
      + VEOL = 0xb
      + VEOL2 = 0x10
      + VMIN = 0x6
      + VREPRINT = 0xc
      + VSTART = 0x8
      + VSTOP = 0x9
      + VSUSP = 0xa
      + VSWTC = 0x7
      + VT1 = 0x4000
      + VTDLY = 0x4000
      + VTIME = 0x5
      + VWERASE = 0xe
      + WDIOC_GETBOOTSTATUS = 0x80045702
      + WDIOC_GETPRETIMEOUT = 0x80045709
      + WDIOC_GETSTATUS = 0x80045701
      + WDIOC_GETSUPPORT = 0x80285700
      + WDIOC_GETTEMP = 0x80045703
      + WDIOC_GETTIMELEFT = 0x8004570a
      + WDIOC_GETTIMEOUT = 0x80045707
      + WDIOC_KEEPALIVE = 0x80045705
      + WDIOC_SETOPTIONS = 0x80045704
      + WORDSIZE = 0x40
      + XCASE = 0x4
      + XTABS = 0x1800
      + _HIDIOCGRAWNAME = 0x80804804
      + _HIDIOCGRAWPHYS = 0x80404805
      + _HIDIOCGRAWUNIQ = 0x80404808
      +)
      +
      +// Errors
      +const (
      + EADDRINUSE = syscall.Errno(0x62)
      + EADDRNOTAVAIL = syscall.Errno(0x63)
      + EADV = syscall.Errno(0x44)
      + EAFNOSUPPORT = syscall.Errno(0x61)
      + EALREADY = syscall.Errno(0x72)
      + EBADE = syscall.Errno(0x34)
      + EBADFD = syscall.Errno(0x4d)
      + EBADMSG = syscall.Errno(0x4a)
      + EBADR = syscall.Errno(0x35)
      + EBADRQC = syscall.Errno(0x38)
      + EBADSLT = syscall.Errno(0x39)
      + EBFONT = syscall.Errno(0x3b)
      + ECANCELED = syscall.Errno(0x7d)
      + ECHRNG = syscall.Errno(0x2c)
      + ECOMM = syscall.Errno(0x46)
      + ECONNABORTED = syscall.Errno(0x67)
      + ECONNREFUSED = syscall.Errno(0x6f)
      + ECONNRESET = syscall.Errno(0x68)
      + EDEADLK = syscall.Errno(0x23)
      + EDEADLOCK = syscall.Errno(0x23)
      + EDESTADDRREQ = syscall.Errno(0x59)
      + EDOTDOT = syscall.Errno(0x49)
      + EDQUOT = syscall.Errno(0x7a)
      + EHOSTDOWN = syscall.Errno(0x70)
      + EHOSTUNREACH = syscall.Errno(0x71)
      + EHWPOISON = syscall.Errno(0x85)
      + EIDRM = syscall.Errno(0x2b)
      + EILSEQ = syscall.Errno(0x54)
      + EINPROGRESS = syscall.Errno(0x73)
      + EISCONN = syscall.Errno(0x6a)
      + EISNAM = syscall.Errno(0x78)
      + EKEYEXPIRED = syscall.Errno(0x7f)
      + EKEYREJECTED = syscall.Errno(0x81)
      + EKEYREVOKED = syscall.Errno(0x80)
      + EL2HLT = syscall.Errno(0x33)
      + EL2NSYNC = syscall.Errno(0x2d)
      + EL3HLT = syscall.Errno(0x2e)
      + EL3RST = syscall.Errno(0x2f)
      + ELIBACC = syscall.Errno(0x4f)
      + ELIBBAD = syscall.Errno(0x50)
      + ELIBEXEC = syscall.Errno(0x53)
      + ELIBMAX = syscall.Errno(0x52)
      + ELIBSCN = syscall.Errno(0x51)
      + ELNRNG = syscall.Errno(0x30)
      + ELOOP = syscall.Errno(0x28)
      + EMEDIUMTYPE = syscall.Errno(0x7c)
      + EMSGSIZE = syscall.Errno(0x5a)
      + EMULTIHOP = syscall.Errno(0x48)
      + ENAMETOOLONG = syscall.Errno(0x24)
      + ENAVAIL = syscall.Errno(0x77)
      + ENETDOWN = syscall.Errno(0x64)
      + ENETRESET = syscall.Errno(0x66)
      + ENETUNREACH = syscall.Errno(0x65)
      + ENOANO = syscall.Errno(0x37)
      + ENOBUFS = syscall.Errno(0x69)
      + ENOCSI = syscall.Errno(0x32)
      + ENODATA = syscall.Errno(0x3d)
      + ENOKEY = syscall.Errno(0x7e)
      + ENOLCK = syscall.Errno(0x25)
      + ENOLINK = syscall.Errno(0x43)
      + ENOMEDIUM = syscall.Errno(0x7b)
      + ENOMSG = syscall.Errno(0x2a)
      + ENONET = syscall.Errno(0x40)
      + ENOPKG = syscall.Errno(0x41)
      + ENOPROTOOPT = syscall.Errno(0x5c)
      + ENOSR = syscall.Errno(0x3f)
      + ENOSTR = syscall.Errno(0x3c)
      + ENOSYS = syscall.Errno(0x26)
      + ENOTCONN = syscall.Errno(0x6b)
      + ENOTEMPTY = syscall.Errno(0x27)
      + ENOTNAM = syscall.Errno(0x76)
      + ENOTRECOVERABLE = syscall.Errno(0x83)
      + ENOTSOCK = syscall.Errno(0x58)
      + ENOTSUP = syscall.Errno(0x5f)
      + ENOTUNIQ = syscall.Errno(0x4c)
      + EOPNOTSUPP = syscall.Errno(0x5f)
      + EOVERFLOW = syscall.Errno(0x4b)
      + EOWNERDEAD = syscall.Errno(0x82)
      + EPFNOSUPPORT = syscall.Errno(0x60)
      + EPROTO = syscall.Errno(0x47)
      + EPROTONOSUPPORT = syscall.Errno(0x5d)
      + EPROTOTYPE = syscall.Errno(0x5b)
      + EREMCHG = syscall.Errno(0x4e)
      + EREMOTE = syscall.Errno(0x42)
      + EREMOTEIO = syscall.Errno(0x79)
      + ERESTART = syscall.Errno(0x55)
      + ERFKILL = syscall.Errno(0x84)
      + ESHUTDOWN = syscall.Errno(0x6c)
      + ESOCKTNOSUPPORT = syscall.Errno(0x5e)
      + ESRMNT = syscall.Errno(0x45)
      + ESTALE = syscall.Errno(0x74)
      + ESTRPIPE = syscall.Errno(0x56)
      + ETIME = syscall.Errno(0x3e)
      + ETIMEDOUT = syscall.Errno(0x6e)
      + ETOOMANYREFS = syscall.Errno(0x6d)
      + EUCLEAN = syscall.Errno(0x75)
      + EUNATCH = syscall.Errno(0x31)
      + EUSERS = syscall.Errno(0x57)
      + EXFULL = syscall.Errno(0x36)
      +)
      +
      +// Signals
      +const (
      + SIGBUS = syscall.Signal(0x7)
      + SIGCHLD = syscall.Signal(0x11)
      + SIGCLD = syscall.Signal(0x11)
      + SIGCONT = syscall.Signal(0x12)
      + SIGIO = syscall.Signal(0x1d)
      + SIGPOLL = syscall.Signal(0x1d)
      + SIGPROF = syscall.Signal(0x1b)
      + SIGPWR = syscall.Signal(0x1e)
      + SIGSTKFLT = syscall.Signal(0x10)
      + SIGSTOP = syscall.Signal(0x13)
      + SIGSYS = syscall.Signal(0x1f)
      + SIGTSTP = syscall.Signal(0x14)
      + SIGTTIN = syscall.Signal(0x15)
      + SIGTTOU = syscall.Signal(0x16)
      + SIGURG = syscall.Signal(0x17)
      + SIGUSR1 = syscall.Signal(0xa)
      + SIGUSR2 = syscall.Signal(0xc)
      + SIGVTALRM = syscall.Signal(0x1a)
      + SIGWINCH = syscall.Signal(0x1c)
      + SIGXCPU = syscall.Signal(0x18)
      + SIGXFSZ = syscall.Signal(0x19)
      +)
      +
      +// Error table
      +var errorList = [...]struct {
      + num syscall.Errno
      + name string
      + desc string
      +}{
      + {1, "EPERM", "operation not permitted"},
      + {2, "ENOENT", "no such file or directory"},
      + {3, "ESRCH", "no such process"},
      + {4, "EINTR", "interrupted system call"},
      + {5, "EIO", "input/output error"},
      + {6, "ENXIO", "no such device or address"},
      + {7, "E2BIG", "argument list too long"},
      + {8, "ENOEXEC", "exec format error"},
      + {9, "EBADF", "bad file descriptor"},
      + {10, "ECHILD", "no child processes"},
      + {11, "EAGAIN", "resource temporarily unavailable"},
      + {12, "ENOMEM", "cannot allocate memory"},
      + {13, "EACCES", "permission denied"},
      + {14, "EFAULT", "bad address"},
      + {15, "ENOTBLK", "block device required"},
      + {16, "EBUSY", "device or resource busy"},
      + {17, "EEXIST", "file exists"},
      + {18, "EXDEV", "invalid cross-device link"},
      + {19, "ENODEV", "no such device"},
      + {20, "ENOTDIR", "not a directory"},
      + {21, "EISDIR", "is a directory"},
      + {22, "EINVAL", "invalid argument"},
      + {23, "ENFILE", "too many open files in system"},
      + {24, "EMFILE", "too many open files"},
      + {25, "ENOTTY", "inappropriate ioctl for device"},
      + {26, "ETXTBSY", "text file busy"},
      + {27, "EFBIG", "file too large"},
      + {28, "ENOSPC", "no space left on device"},
      + {29, "ESPIPE", "illegal seek"},
      + {30, "EROFS", "read-only file system"},
      + {31, "EMLINK", "too many links"},
      + {32, "EPIPE", "broken pipe"},
      + {33, "EDOM", "numerical argument out of domain"},
      + {34, "ERANGE", "numerical result out of range"},
      + {35, "EDEADLK", "resource deadlock avoided"},
      + {36, "ENAMETOOLONG", "file name too long"},
      + {37, "ENOLCK", "no locks available"},
      + {38, "ENOSYS", "function not implemented"},
      + {39, "ENOTEMPTY", "directory not empty"},
      + {40, "ELOOP", "too many levels of symbolic links"},
      + {42, "ENOMSG", "no message of desired type"},
      + {43, "EIDRM", "identifier removed"},
      + {44, "ECHRNG", "channel number out of range"},
      + {45, "EL2NSYNC", "level 2 not synchronized"},
      + {46, "EL3HLT", "level 3 halted"},
      + {47, "EL3RST", "level 3 reset"},
      + {48, "ELNRNG", "link number out of range"},
      + {49, "EUNATCH", "protocol driver not attached"},
      + {50, "ENOCSI", "no CSI structure available"},
      + {51, "EL2HLT", "level 2 halted"},
      + {52, "EBADE", "invalid exchange"},
      + {53, "EBADR", "invalid request descriptor"},
      + {54, "EXFULL", "exchange full"},
      + {55, "ENOANO", "no anode"},
      + {56, "EBADRQC", "invalid request code"},
      + {57, "EBADSLT", "invalid slot"},
      + {59, "EBFONT", "bad font file format"},
      + {60, "ENOSTR", "device not a stream"},
      + {61, "ENODATA", "no data available"},
      + {62, "ETIME", "timer expired"},
      + {63, "ENOSR", "out of streams resources"},
      + {64, "ENONET", "machine is not on the network"},
      + {65, "ENOPKG", "package not installed"},
      + {66, "EREMOTE", "object is remote"},
      + {67, "ENOLINK", "link has been severed"},
      + {68, "EADV", "advertise error"},
      + {69, "ESRMNT", "srmount error"},
      + {70, "ECOMM", "communication error on send"},
      + {71, "EPROTO", "protocol error"},
      + {72, "EMULTIHOP", "multihop attempted"},
      + {73, "EDOTDOT", "RFS specific error"},
      + {74, "EBADMSG", "bad message"},
      + {75, "EOVERFLOW", "value too large for defined data type"},
      + {76, "ENOTUNIQ", "name not unique on network"},
      + {77, "EBADFD", "file descriptor in bad state"},
      + {78, "EREMCHG", "remote address changed"},
      + {79, "ELIBACC", "can not access a needed shared library"},
      + {80, "ELIBBAD", "accessing a corrupted shared library"},
      + {81, "ELIBSCN", ".lib section in a.out corrupted"},
      + {82, "ELIBMAX", "attempting to link in too many shared libraries"},
      + {83, "ELIBEXEC", "cannot exec a shared library directly"},
      + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"},
      + {85, "ERESTART", "interrupted system call should be restarted"},
      + {86, "ESTRPIPE", "streams pipe error"},
      + {87, "EUSERS", "too many users"},
      + {88, "ENOTSOCK", "socket operation on non-socket"},
      + {89, "EDESTADDRREQ", "destination address required"},
      + {90, "EMSGSIZE", "message too long"},
      + {91, "EPROTOTYPE", "protocol wrong type for socket"},
      + {92, "ENOPROTOOPT", "protocol not available"},
      + {93, "EPROTONOSUPPORT", "protocol not supported"},
      + {94, "ESOCKTNOSUPPORT", "socket type not supported"},
      + {95, "ENOTSUP", "operation not supported"},
      + {96, "EPFNOSUPPORT", "protocol family not supported"},
      + {97, "EAFNOSUPPORT", "address family not supported by protocol"},
      + {98, "EADDRINUSE", "address already in use"},
      + {99, "EADDRNOTAVAIL", "cannot assign requested address"},
      + {100, "ENETDOWN", "network is down"},
      + {101, "ENETUNREACH", "network is unreachable"},
      + {102, "ENETRESET", "network dropped connection on reset"},
      + {103, "ECONNABORTED", "software caused connection abort"},
      + {104, "ECONNRESET", "connection reset by peer"},
      + {105, "ENOBUFS", "no buffer space available"},
      + {106, "EISCONN", "transport endpoint is already connected"},
      + {107, "ENOTCONN", "transport endpoint is not connected"},
      + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"},
      + {109, "ETOOMANYREFS", "too many references: cannot splice"},
      + {110, "ETIMEDOUT", "connection timed out"},
      + {111, "ECONNREFUSED", "connection refused"},
      + {112, "EHOSTDOWN", "host is down"},
      + {113, "EHOSTUNREACH", "no route to host"},
      + {114, "EALREADY", "operation already in progress"},
      + {115, "EINPROGRESS", "operation now in progress"},
      + {116, "ESTALE", "stale file handle"},
      + {117, "EUCLEAN", "structure needs cleaning"},
      + {118, "ENOTNAM", "not a XENIX named type file"},
      + {119, "ENAVAIL", "no XENIX semaphores available"},
      + {120, "EISNAM", "is a named type file"},
      + {121, "EREMOTEIO", "remote I/O error"},
      + {122, "EDQUOT", "disk quota exceeded"},
      + {123, "ENOMEDIUM", "no medium found"},
      + {124, "EMEDIUMTYPE", "wrong medium type"},
      + {125, "ECANCELED", "operation canceled"},
      + {126, "ENOKEY", "required key not available"},
      + {127, "EKEYEXPIRED", "key has expired"},
      + {128, "EKEYREVOKED", "key has been revoked"},
      + {129, "EKEYREJECTED", "key was rejected by service"},
      + {130, "EOWNERDEAD", "owner died"},
      + {131, "ENOTRECOVERABLE", "state not recoverable"},
      + {132, "ERFKILL", "operation not possible due to RF-kill"},
      + {133, "EHWPOISON", "memory page has hardware error"},
      +}
      +
      +// Signal table
      +var signalList = [...]struct {
      + num syscall.Signal
      + name string
      + desc string
      +}{
      + {1, "SIGHUP", "hangup"},
      + {2, "SIGINT", "interrupt"},
      + {3, "SIGQUIT", "quit"},
      + {4, "SIGILL", "illegal instruction"},
      + {5, "SIGTRAP", "trace/breakpoint trap"},
      + {6, "SIGABRT", "aborted"},
      + {7, "SIGBUS", "bus error"},
      + {8, "SIGFPE", "floating point exception"},
      + {9, "SIGKILL", "killed"},
      + {10, "SIGUSR1", "user defined signal 1"},
      + {11, "SIGSEGV", "segmentation fault"},
      + {12, "SIGUSR2", "user defined signal 2"},
      + {13, "SIGPIPE", "broken pipe"},
      + {14, "SIGALRM", "alarm clock"},
      + {15, "SIGTERM", "terminated"},
      + {16, "SIGSTKFLT", "stack fault"},
      + {17, "SIGCHLD", "child exited"},
      + {18, "SIGCONT", "continued"},
      + {19, "SIGSTOP", "stopped (signal)"},
      + {20, "SIGTSTP", "stopped"},
      + {21, "SIGTTIN", "stopped (tty input)"},
      + {22, "SIGTTOU", "stopped (tty output)"},
      + {23, "SIGURG", "urgent I/O condition"},
      + {24, "SIGXCPU", "CPU time limit exceeded"},
      + {25, "SIGXFSZ", "file size limit exceeded"},
      + {26, "SIGVTALRM", "virtual timer expired"},
      + {27, "SIGPROF", "profiling timer expired"},
      + {28, "SIGWINCH", "window changed"},
      + {29, "SIGIO", "I/O possible"},
      + {30, "SIGPWR", "power failure"},
      + {31, "SIGSYS", "bad system call"},
      +}
      diff --git a/unix/zsyscall_linux_loong64.go b/unix/zsyscall_linux_loong64.go
      new file mode 100644
      index 0000000..8cdfbe7
      --- /dev/null
      +++ b/unix/zsyscall_linux_loong64.go
      @@ -0,0 +1,552 @@
      +// go run mksyscall.go -tags linux,loong64 syscall_linux.go syscall_linux_loong64.go
      +// Code generated by the command above; see README.md. DO NOT EDIT.
      +
      +//go:build linux && loong64
      +// +build linux,loong64
      +
      +package unix
      +
      +import (
      + "syscall"
      + "unsafe"
      +)
      +
      +var _ syscall.Errno
      +
      +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
      +
      +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {
      + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)
      + if e1 != 0 {
      + err = errnoErr(e1)
      + }
      + return
      +}
      +
      +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
      +
      +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
      + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)
      + if e1 != 0 {
      + err = errnoErr(e1)
      + }
      + return
      +}
      +
      +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
      +
      +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
      + r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)
      + n = int64(r0)
      + if e1 != 0 {
      + err = errnoErr(e1)
      + }
      + return
      +}
      +
      +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
      +
      +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
      + var _p0 unsafe.Pointer
      + if len(events) > 0 {
      + _p0 = unsafe.Pointer(&events[0])
      + } else {
      + _p0 = unsafe.Pointer(&_zero)
      + }
      + r0, _, e1 := Syscall6(SYS_EPOLL_PWAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
      + n = int(r0)
      + if e1 != 0 {
      + err = errnoErr(e1)
      + }
      + return
      +}
      +
      +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
      +
      +func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
      + _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)
      + if e1 != 0 {
      + err = errnoErr(e1)
      + }
      + return
      +}
      +
      +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
      +
      +func Fchown(fd int, uid int, gid int) (err error) {
      + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
      + if e1 != 0 {
      + err = errnoErr(e1)
      + }
      + return
      +}
      +
      +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
      +
      +func Fstat(fd int, stat *Stat_t) (err error) {
      + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
      + if e1 != 0 {
      + err = errnoErr(e1)
      + }
      + return
      +}
      +
      +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
      +
      +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {
      + var _p0 *byte
      + _p0, err = BytePtrFromString(path)
      + if err != nil {
      + return
      + }
      + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
      + if e1 != 0 {
      + err = errnoErr(e1)
      + }
      + return
      +}
      +
      +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
      +
      +func Fstatfs(fd int, buf *Statfs_t) (err error) {
      + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)
      + if e1 != 0 {
      + err = errnoErr(e1)
      + }
      + return
      +}
      +
      +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
      +
      +func Ftruncate(fd int, length int64) (err error) {
      + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)
      + if e1 != 0 {
      + err = errnoErr(e1)
      + }
      + return
      +}
      +
      +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
      +
      +func Getegid() (egid int) {
      + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)
      + egid = int(r0)
      + return
      +}
      +
      +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
      +
      +func Geteuid() (euid int) {
      + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)
      + euid = int(r0)
      + return
      +}
      +
      +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
      +
      +func Getgid() (gid int) {
      + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)
      + gid = int(r0)
      + return
      +}
      +
      +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
      +
      +func Getuid() (uid int) {
      + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)
      + uid = int(r0)
      + return
      +}
      +
      +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
      +
      +func Listen(s int, n int) (err error) {
      + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)
      + if e1 != 0 {
      + err = errnoErr(e1)
      + }
      + return
      +}
      +
      +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
      +
      +func pread(fd int, p []byte, offset int64) (n int, err error) {
      + var _p0 unsafe.Pointer
      + if len(p) > 0 {
      + _p0 = unsafe.Pointer(&p[0])
      + } else {
      + _p0 = unsafe.Pointer(&_zero)
      + }
      + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
      + n = int(r0)
      + if e1 != 0 {
      + err = errnoErr(e1)
      + }
      + return
      +}
      +
      +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
      +
      +func pwrite(fd int, p []byte, offset int64) (n int, err error) {
      + var _p0 unsafe.Pointer
      + if len(p) > 0 {
      + _p0 = unsafe.Pointer(&p[0])
      + } else {
      + _p0 = unsafe.Pointer(&_zero)
      + }
      + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
      + n = int(r0)
      + if e1 != 0 {
      + err = errnoErr(e1)
      + }
      + return
      +}
      +
      +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
      +
      +func Seek(fd int, offset int64, whence int) (off int64, err error) {
      + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
      + off = int64(r0)
      + if e1 != 0 {
      + err = errnoErr(e1)
      + }
      + return
      +}
      +
      +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
      +
      +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
      + r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)
      + written = int(r0)
      + if e1 != 0 {
      + err = errnoErr(e1)
      + }
      + return
      +}
      +
      +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
      +
      +func setfsgid(gid int) (prev int, err error) {
      + r0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
      + prev = int(r0)
      + if e1 != 0 {
      + err = errnoErr(e1)
      + }
      + return
      +}
      +
      +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
      +
      +func setfsuid(uid int) (prev int, err error) {
      + r0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
      + prev = int(r0)
      + if e1 != 0 {
      + err = errnoErr(e1)
      + }
      + return
      +}
      +
      +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
      +
      +func Setregid(rgid int, egid int) (err error) {
      + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
      + if e1 != 0 {
      + err = errnoErr(e1)
      + }
      + return
      +}
      +
      +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
      +
      +func Setresgid(rgid int, egid int, sgid int) (err error) {
      + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))
      + if e1 != 0 {
      + err = errnoErr(e1)
      + }
      + return
      +}
      +
      +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
      +
      +func Setresuid(ruid int, euid int, suid int) (err error) {
      + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))
      + if e1 != 0 {
      + err = errnoErr(e1)
      + }
      + return
      +}
      +
      +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
      +
      +func Setreuid(ruid int, euid int) (err error) {
      + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
      + if e1 != 0 {
      + err = errnoErr(e1)
      + }
      + return
      +}
      +
      +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
      +
      +func Shutdown(fd int, how int) (err error) {
      + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)
      + if e1 != 0 {
      + err = errnoErr(e1)
      + }
      + return
      +}
      +
      +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
      +
      +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {
      + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
      + n = int64(r0)
      + if e1 != 0 {
      + err = errnoErr(e1)
      + }
      + return
      +}
      +
      +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
      +
      +func Statfs(path string, buf *Statfs_t) (err error) {
      + var _p0 *byte
      + _p0, err = BytePtrFromString(path)
      + if err != nil {
      + return
      + }
      + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
      + if e1 != 0 {
      + err = errnoErr(e1)
      + }
      + return
      +}
      +
      +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
      +
      +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) {
      + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)
      + if e1 != 0 {
      + err = errnoErr(e1)
      + }
      + return
      +}
      +
      +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
      +
      +func Truncate(path string, length int64) (err error) {
      + var _p0 *byte
      + _p0, err = BytePtrFromString(path)
      + if err != nil {
      + return
      + }
      + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)
      + if e1 != 0 {
      + err = errnoErr(e1)
      + }
      + return
      +}
      +
      +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
      +
      +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {
      + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)
      + fd = int(r0)
      + if e1 != 0 {
      + err = errnoErr(e1)
      + }
      + return
      +}
      +
      +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
      +
      +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
      + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
      + if e1 != 0 {
      + err = errnoErr(e1)
      + }
      + return
      +}
      +
      +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
      +
      +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
      + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
      + if e1 != 0 {
      + err = errnoErr(e1)
      + }
      + return
      +}
      +
      +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
      +
      +func getgroups(n int, list *_Gid_t) (nn int, err error) {
      + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)
      + nn = int(r0)
      + if e1 != 0 {
      + err = errnoErr(e1)
      + }
      + return
      +}
      +
      +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
      +
      +func setgroups(n int, list *_Gid_t) (err error) {
      + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)
      + if e1 != 0 {
      + err = errnoErr(e1)
      + }
      + return
      +}
      +
      +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
      +
      +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
      + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
      + if e1 != 0 {
      + err = errnoErr(e1)
      + }
      + return
      +}
      +
      +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
      +
      +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
      + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
      + if e1 != 0 {
      + err = errnoErr(e1)
      + }
      + return
      +}
      +
      +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
      +
      +func socket(domain int, typ int, proto int) (fd int, err error) {
      + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
      + fd = int(r0)
      + if e1 != 0 {
      + err = errnoErr(e1)
      + }
      + return
      +}
      +
      +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
      +
      +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {
      + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
      + if e1 != 0 {
      + err = errnoErr(e1)
      + }
      + return
      +}
      +
      +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
      +
      +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
      + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
      + if e1 != 0 {
      + err = errnoErr(e1)
      + }
      + return
      +}
      +
      +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
      +
      +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
      + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
      + if e1 != 0 {
      + err = errnoErr(e1)
      + }
      + return
      +}
      +
      +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
      +
      +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {
      + var _p0 unsafe.Pointer
      + if len(p) > 0 {
      + _p0 = unsafe.Pointer(&p[0])
      + } else {
      + _p0 = unsafe.Pointer(&_zero)
      + }
      + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
      + n = int(r0)
      + if e1 != 0 {
      + err = errnoErr(e1)
      + }
      + return
      +}
      +
      +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
      +
      +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
      + var _p0 unsafe.Pointer
      + if len(buf) > 0 {
      + _p0 = unsafe.Pointer(&buf[0])
      + } else {
      + _p0 = unsafe.Pointer(&_zero)
      + }
      + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))
      + if e1 != 0 {
      + err = errnoErr(e1)
      + }
      + return
      +}
      +
      +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
      +
      +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
      + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
      + n = int(r0)
      + if e1 != 0 {
      + err = errnoErr(e1)
      + }
      + return
      +}
      +
      +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
      +
      +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
      + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
      + n = int(r0)
      + if e1 != 0 {
      + err = errnoErr(e1)
      + }
      + return
      +}
      +
      +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
      +
      +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {
      + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))
      + xaddr = uintptr(r0)
      + if e1 != 0 {
      + err = errnoErr(e1)
      + }
      + return
      +}
      +
      +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
      +
      +func Gettimeofday(tv *Timeval) (err error) {
      + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
      + if e1 != 0 {
      + err = errnoErr(e1)
      + }
      + return
      +}
      +
      +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
      +
      +func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {
      + var _p0 *byte
      + _p0, err = BytePtrFromString(cmdline)
      + if err != nil {
      + return
      + }
      + _, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
      + if e1 != 0 {
      + err = errnoErr(e1)
      + }
      + return
      +}
      diff --git a/unix/zsysnum_linux_loong64.go b/unix/zsysnum_linux_loong64.go
      new file mode 100644
      index 0000000..e443f9a
      --- /dev/null
      +++ b/unix/zsysnum_linux_loong64.go
      @@ -0,0 +1,313 @@
      +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h
      +// Code generated by the command above; see README.md. DO NOT EDIT.
      +
      +//go:build loong64 && linux
      +// +build loong64,linux
      +
      +package unix
      +
      +const (
      + SYS_IO_SETUP = 0
      + SYS_IO_DESTROY = 1
      + SYS_IO_SUBMIT = 2
      + SYS_IO_CANCEL = 3
      + SYS_IO_GETEVENTS = 4
      + SYS_SETXATTR = 5
      + SYS_LSETXATTR = 6
      + SYS_FSETXATTR = 7
      + SYS_GETXATTR = 8
      + SYS_LGETXATTR = 9
      + SYS_FGETXATTR = 10
      + SYS_LISTXATTR = 11
      + SYS_LLISTXATTR = 12
      + SYS_FLISTXATTR = 13
      + SYS_REMOVEXATTR = 14
      + SYS_LREMOVEXATTR = 15
      + SYS_FREMOVEXATTR = 16
      + SYS_GETCWD = 17
      + SYS_LOOKUP_DCOOKIE = 18
      + SYS_EVENTFD2 = 19
      + SYS_EPOLL_CREATE1 = 20
      + SYS_EPOLL_CTL = 21
      + SYS_EPOLL_PWAIT = 22
      + SYS_DUP = 23
      + SYS_DUP3 = 24
      + SYS_FCNTL = 25
      + SYS_INOTIFY_INIT1 = 26
      + SYS_INOTIFY_ADD_WATCH = 27
      + SYS_INOTIFY_RM_WATCH = 28
      + SYS_IOCTL = 29
      + SYS_IOPRIO_SET = 30
      + SYS_IOPRIO_GET = 31
      + SYS_FLOCK = 32
      + SYS_MKNODAT = 33
      + SYS_MKDIRAT = 34
      + SYS_UNLINKAT = 35
      + SYS_SYMLINKAT = 36
      + SYS_LINKAT = 37
      + SYS_UMOUNT2 = 39
      + SYS_MOUNT = 40
      + SYS_PIVOT_ROOT = 41
      + SYS_NFSSERVCTL = 42
      + SYS_STATFS = 43
      + SYS_FSTATFS = 44
      + SYS_TRUNCATE = 45
      + SYS_FTRUNCATE = 46
      + SYS_FALLOCATE = 47
      + SYS_FACCESSAT = 48
      + SYS_CHDIR = 49
      + SYS_FCHDIR = 50
      + SYS_CHROOT = 51
      + SYS_FCHMOD = 52
      + SYS_FCHMODAT = 53
      + SYS_FCHOWNAT = 54
      + SYS_FCHOWN = 55
      + SYS_OPENAT = 56
      + SYS_CLOSE = 57
      + SYS_VHANGUP = 58
      + SYS_PIPE2 = 59
      + SYS_QUOTACTL = 60
      + SYS_GETDENTS64 = 61
      + SYS_LSEEK = 62
      + SYS_READ = 63
      + SYS_WRITE = 64
      + SYS_READV = 65
      + SYS_WRITEV = 66
      + SYS_PREAD64 = 67
      + SYS_PWRITE64 = 68
      + SYS_PREADV = 69
      + SYS_PWRITEV = 70
      + SYS_SENDFILE = 71
      + SYS_PSELECT6 = 72
      + SYS_PPOLL = 73
      + SYS_SIGNALFD4 = 74
      + SYS_VMSPLICE = 75
      + SYS_SPLICE = 76
      + SYS_TEE = 77
      + SYS_READLINKAT = 78
      + SYS_FSTATAT = 79
      + SYS_FSTAT = 80
      + SYS_SYNC = 81
      + SYS_FSYNC = 82
      + SYS_FDATASYNC = 83
      + SYS_SYNC_FILE_RANGE = 84
      + SYS_TIMERFD_CREATE = 85
      + SYS_TIMERFD_SETTIME = 86
      + SYS_TIMERFD_GETTIME = 87
      + SYS_UTIMENSAT = 88
      + SYS_ACCT = 89
      + SYS_CAPGET = 90
      + SYS_CAPSET = 91
      + SYS_PERSONALITY = 92
      + SYS_EXIT = 93
      + SYS_EXIT_GROUP = 94
      + SYS_WAITID = 95
      + SYS_SET_TID_ADDRESS = 96
      + SYS_UNSHARE = 97
      + SYS_FUTEX = 98
      + SYS_SET_ROBUST_LIST = 99
      + SYS_GET_ROBUST_LIST = 100
      + SYS_NANOSLEEP = 101
      + SYS_GETITIMER = 102
      + SYS_SETITIMER = 103
      + SYS_KEXEC_LOAD = 104
      + SYS_INIT_MODULE = 105
      + SYS_DELETE_MODULE = 106
      + SYS_TIMER_CREATE = 107
      + SYS_TIMER_GETTIME = 108
      + SYS_TIMER_GETOVERRUN = 109
      + SYS_TIMER_SETTIME = 110
      + SYS_TIMER_DELETE = 111
      + SYS_CLOCK_SETTIME = 112
      + SYS_CLOCK_GETTIME = 113
      + SYS_CLOCK_GETRES = 114
      + SYS_CLOCK_NANOSLEEP = 115
      + SYS_SYSLOG = 116
      + SYS_PTRACE = 117
      + SYS_SCHED_SETPARAM = 118
      + SYS_SCHED_SETSCHEDULER = 119
      + SYS_SCHED_GETSCHEDULER = 120
      + SYS_SCHED_GETPARAM = 121
      + SYS_SCHED_SETAFFINITY = 122
      + SYS_SCHED_GETAFFINITY = 123
      + SYS_SCHED_YIELD = 124
      + SYS_SCHED_GET_PRIORITY_MAX = 125
      + SYS_SCHED_GET_PRIORITY_MIN = 126
      + SYS_SCHED_RR_GET_INTERVAL = 127
      + SYS_RESTART_SYSCALL = 128
      + SYS_KILL = 129
      + SYS_TKILL = 130
      + SYS_TGKILL = 131
      + SYS_SIGALTSTACK = 132
      + SYS_RT_SIGSUSPEND = 133
      + SYS_RT_SIGACTION = 134
      + SYS_RT_SIGPROCMASK = 135
      + SYS_RT_SIGPENDING = 136
      + SYS_RT_SIGTIMEDWAIT = 137
      + SYS_RT_SIGQUEUEINFO = 138
      + SYS_RT_SIGRETURN = 139
      + SYS_SETPRIORITY = 140
      + SYS_GETPRIORITY = 141
      + SYS_REBOOT = 142
      + SYS_SETREGID = 143
      + SYS_SETGID = 144
      + SYS_SETREUID = 145
      + SYS_SETUID = 146
      + SYS_SETRESUID = 147
      + SYS_GETRESUID = 148
      + SYS_SETRESGID = 149
      + SYS_GETRESGID = 150
      + SYS_SETFSUID = 151
      + SYS_SETFSGID = 152
      + SYS_TIMES = 153
      + SYS_SETPGID = 154
      + SYS_GETPGID = 155
      + SYS_GETSID = 156
      + SYS_SETSID = 157
      + SYS_GETGROUPS = 158
      + SYS_SETGROUPS = 159
      + SYS_UNAME = 160
      + SYS_SETHOSTNAME = 161
      + SYS_SETDOMAINNAME = 162
      + SYS_GETRUSAGE = 165
      + SYS_UMASK = 166
      + SYS_PRCTL = 167
      + SYS_GETCPU = 168
      + SYS_GETTIMEOFDAY = 169
      + SYS_SETTIMEOFDAY = 170
      + SYS_ADJTIMEX = 171
      + SYS_GETPID = 172
      + SYS_GETPPID = 173
      + SYS_GETUID = 174
      + SYS_GETEUID = 175
      + SYS_GETGID = 176
      + SYS_GETEGID = 177
      + SYS_GETTID = 178
      + SYS_SYSINFO = 179
      + SYS_MQ_OPEN = 180
      + SYS_MQ_UNLINK = 181
      + SYS_MQ_TIMEDSEND = 182
      + SYS_MQ_TIMEDRECEIVE = 183
      + SYS_MQ_NOTIFY = 184
      + SYS_MQ_GETSETATTR = 185
      + SYS_MSGGET = 186
      + SYS_MSGCTL = 187
      + SYS_MSGRCV = 188
      + SYS_MSGSND = 189
      + SYS_SEMGET = 190
      + SYS_SEMCTL = 191
      + SYS_SEMTIMEDOP = 192
      + SYS_SEMOP = 193
      + SYS_SHMGET = 194
      + SYS_SHMCTL = 195
      + SYS_SHMAT = 196
      + SYS_SHMDT = 197
      + SYS_SOCKET = 198
      + SYS_SOCKETPAIR = 199
      + SYS_BIND = 200
      + SYS_LISTEN = 201
      + SYS_ACCEPT = 202
      + SYS_CONNECT = 203
      + SYS_GETSOCKNAME = 204
      + SYS_GETPEERNAME = 205
      + SYS_SENDTO = 206
      + SYS_RECVFROM = 207
      + SYS_SETSOCKOPT = 208
      + SYS_GETSOCKOPT = 209
      + SYS_SHUTDOWN = 210
      + SYS_SENDMSG = 211
      + SYS_RECVMSG = 212
      + SYS_READAHEAD = 213
      + SYS_BRK = 214
      + SYS_MUNMAP = 215
      + SYS_MREMAP = 216
      + SYS_ADD_KEY = 217
      + SYS_REQUEST_KEY = 218
      + SYS_KEYCTL = 219
      + SYS_CLONE = 220
      + SYS_EXECVE = 221
      + SYS_MMAP = 222
      + SYS_FADVISE64 = 223
      + SYS_SWAPON = 224
      + SYS_SWAPOFF = 225
      + SYS_MPROTECT = 226
      + SYS_MSYNC = 227
      + SYS_MLOCK = 228
      + SYS_MUNLOCK = 229
      + SYS_MLOCKALL = 230
      + SYS_MUNLOCKALL = 231
      + SYS_MINCORE = 232
      + SYS_MADVISE = 233
      + SYS_REMAP_FILE_PAGES = 234
      + SYS_MBIND = 235
      + SYS_GET_MEMPOLICY = 236
      + SYS_SET_MEMPOLICY = 237
      + SYS_MIGRATE_PAGES = 238
      + SYS_MOVE_PAGES = 239
      + SYS_RT_TGSIGQUEUEINFO = 240
      + SYS_PERF_EVENT_OPEN = 241
      + SYS_ACCEPT4 = 242
      + SYS_RECVMMSG = 243
      + SYS_ARCH_SPECIFIC_SYSCALL = 244
      + SYS_WAIT4 = 260
      + SYS_PRLIMIT64 = 261
      + SYS_FANOTIFY_INIT = 262
      + SYS_FANOTIFY_MARK = 263
      + SYS_NAME_TO_HANDLE_AT = 264
      + SYS_OPEN_BY_HANDLE_AT = 265
      + SYS_CLOCK_ADJTIME = 266
      + SYS_SYNCFS = 267
      + SYS_SETNS = 268
      + SYS_SENDMMSG = 269
      + SYS_PROCESS_VM_READV = 270
      + SYS_PROCESS_VM_WRITEV = 271
      + SYS_KCMP = 272
      + SYS_FINIT_MODULE = 273
      + SYS_SCHED_SETATTR = 274
      + SYS_SCHED_GETATTR = 275
      + SYS_RENAMEAT2 = 276
      + SYS_SECCOMP = 277
      + SYS_GETRANDOM = 278
      + SYS_MEMFD_CREATE = 279
      + SYS_BPF = 280
      + SYS_EXECVEAT = 281
      + SYS_USERFAULTFD = 282
      + SYS_MEMBARRIER = 283
      + SYS_MLOCK2 = 284
      + SYS_COPY_FILE_RANGE = 285
      + SYS_PREADV2 = 286
      + SYS_PWRITEV2 = 287
      + SYS_PKEY_MPROTECT = 288
      + SYS_PKEY_ALLOC = 289
      + SYS_PKEY_FREE = 290
      + SYS_STATX = 291
      + SYS_IO_PGETEVENTS = 292
      + SYS_RSEQ = 293
      + SYS_KEXEC_FILE_LOAD = 294
      + SYS_PIDFD_SEND_SIGNAL = 424
      + SYS_IO_URING_SETUP = 425
      + SYS_IO_URING_ENTER = 426
      + SYS_IO_URING_REGISTER = 427
      + SYS_OPEN_TREE = 428
      + SYS_MOVE_MOUNT = 429
      + SYS_FSOPEN = 430
      + SYS_FSCONFIG = 431
      + SYS_FSMOUNT = 432
      + SYS_FSPICK = 433
      + SYS_PIDFD_OPEN = 434
      + SYS_CLONE3 = 435
      + SYS_CLOSE_RANGE = 436
      + SYS_OPENAT2 = 437
      + SYS_PIDFD_GETFD = 438
      + SYS_FACCESSAT2 = 439
      + SYS_PROCESS_MADVISE = 440
      + SYS_EPOLL_PWAIT2 = 441
      + SYS_MOUNT_SETATTR = 442
      + SYS_QUOTACTL_FD = 443
      + SYS_LANDLOCK_CREATE_RULESET = 444
      + SYS_LANDLOCK_ADD_RULE = 445
      + SYS_LANDLOCK_RESTRICT_SELF = 446
      + SYS_PROCESS_MRELEASE = 448
      + SYS_FUTEX_WAITV = 449
      + SYS_SET_MEMPOLICY_HOME_NODE = 450
      +)
      diff --git a/unix/ztypes_linux_loong64.go b/unix/ztypes_linux_loong64.go
      new file mode 100644
      index 0000000..61fbb24
      --- /dev/null
      +++ b/unix/ztypes_linux_loong64.go
      @@ -0,0 +1,679 @@
      +// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/unix/linux/types.go | go run mkpost.go
      +// Code generated by the command above; see README.md. DO NOT EDIT.
      +
      +//go:build loong64 && linux
      +// +build loong64,linux
      +
      +package unix
      +
      +const (
      + SizeofPtr = 0x8
      + SizeofLong = 0x8
      +)
      +
      +type (
      + _C_long int64
      +)
      +
      +type Timespec struct {
      + Sec int64
      + Nsec int64
      +}
      +
      +type Timeval struct {
      + Sec int64
      + Usec int64
      +}
      +
      +type Timex struct {
      + Modes uint32
      + Offset int64
      + Freq int64
      + Maxerror int64
      + Esterror int64
      + Status int32
      + Constant int64
      + Precision int64
      + Tolerance int64
      + Time Timeval
      + Tick int64
      + Ppsfreq int64
      + Jitter int64
      + Shift int32
      + Stabil int64
      + Jitcnt int64
      + Calcnt int64
      + Errcnt int64
      + Stbcnt int64
      + Tai int32
      + _ [44]byte
      +}
      +
      +type Time_t int64
      +
      +type Tms struct {
      + Utime int64
      + Stime int64
      + Cutime int64
      + Cstime int64
      +}
      +
      +type Utimbuf struct {
      + Actime int64
      + Modtime int64
      +}
      +
      +type Rusage struct {
      + Utime Timeval
      + Stime Timeval
      + Maxrss int64
      + Ixrss int64
      + Idrss int64
      + Isrss int64
      + Minflt int64
      + Majflt int64
      + Nswap int64
      + Inblock int64
      + Oublock int64
      + Msgsnd int64
      + Msgrcv int64
      + Nsignals int64
      + Nvcsw int64
      + Nivcsw int64
      +}
      +
      +type Stat_t struct {
      + Dev uint64
      + Ino uint64
      + Mode uint32
      + Nlink uint32
      + Uid uint32
      + Gid uint32
      + Rdev uint64
      + _ uint64
      + Size int64
      + Blksize int32
      + _ int32
      + Blocks int64
      + Atim Timespec
      + Mtim Timespec
      + Ctim Timespec
      + _ [2]int32
      +}
      +
      +type Dirent struct {
      + Ino uint64
      + Off int64
      + Reclen uint16
      + Type uint8
      + Name [256]int8
      + _ [5]byte
      +}
      +
      +type Flock_t struct {
      + Type int16
      + Whence int16
      + Start int64
      + Len int64
      + Pid int32
      + _ [4]byte
      +}
      +
      +type DmNameList struct {
      + Dev uint64
      + Next uint32
      + Name [0]byte
      + _ [4]byte
      +}
      +
      +const (
      + FADV_DONTNEED = 0x4
      + FADV_NOREUSE = 0x5
      +)
      +
      +type RawSockaddrNFCLLCP struct {
      + Sa_family uint16
      + Dev_idx uint32
      + Target_idx uint32
      + Nfc_protocol uint32
      + Dsap uint8
      + Ssap uint8
      + Service_name [63]uint8
      + Service_name_len uint64
      +}
      +
      +type RawSockaddr struct {
      + Family uint16
      + Data [14]int8
      +}
      +
      +type RawSockaddrAny struct {
      + Addr RawSockaddr
      + Pad [96]int8
      +}
      +
      +type Iovec struct {
      + Base *byte
      + Len uint64
      +}
      +
      +type Msghdr struct {
      + Name *byte
      + Namelen uint32
      + Iov *Iovec
      + Iovlen uint64
      + Control *byte
      + Controllen uint64
      + Flags int32
      + _ [4]byte
      +}
      +
      +type Cmsghdr struct {
      + Len uint64
      + Level int32
      + Type int32
      +}
      +
      +type ifreq struct {
      + Ifrn [16]byte
      + Ifru [24]byte
      +}
      +
      +const (
      + SizeofSockaddrNFCLLCP = 0x60
      + SizeofIovec = 0x10
      + SizeofMsghdr = 0x38
      + SizeofCmsghdr = 0x10
      +)
      +
      +const (
      + SizeofSockFprog = 0x10
      +)
      +
      +type PtraceRegs struct {
      + Regs [32]uint64
      + Orig_a0 uint64
      + Era uint64
      + Badv uint64
      + Reserved [10]uint64
      +}
      +
      +type FdSet struct {
      + Bits [16]int64
      +}
      +
      +type Sysinfo_t struct {
      + Uptime int64
      + Loads [3]uint64
      + Totalram uint64
      + Freeram uint64
      + Sharedram uint64
      + Bufferram uint64
      + Totalswap uint64
      + Freeswap uint64
      + Procs uint16
      + Pad uint16
      + Totalhigh uint64
      + Freehigh uint64
      + Unit uint32
      + _ [0]int8
      + _ [4]byte
      +}
      +
      +type Ustat_t struct {
      + Tfree int32
      + Tinode uint64
      + Fname [6]int8
      + Fpack [6]int8
      + _ [4]byte
      +}
      +
      +type EpollEvent struct {
      + Events uint32
      + _ int32
      + Fd int32
      + Pad int32
      +}
      +
      +const (
      + OPEN_TREE_CLOEXEC = 0x80000
      +)
      +
      +const (
      + POLLRDHUP = 0x2000
      +)
      +
      +type Sigset_t struct {
      + Val [16]uint64
      +}
      +
      +const _C__NSIG = 0x41
      +
      +type Siginfo struct {
      + Signo int32
      + Errno int32
      + Code int32
      + _ int32
      + _ [112]byte
      +}
      +
      +type Termios struct {
      + Iflag uint32
      + Oflag uint32
      + Cflag uint32
      + Lflag uint32
      + Line uint8
      + Cc [19]uint8
      + Ispeed uint32
      + Ospeed uint32
      +}
      +
      +type Taskstats struct {
      + Version uint16
      + Ac_exitcode uint32
      + Ac_flag uint8
      + Ac_nice uint8
      + Cpu_count uint64
      + Cpu_delay_total uint64
      + Blkio_count uint64
      + Blkio_delay_total uint64
      + Swapin_count uint64
      + Swapin_delay_total uint64
      + Cpu_run_real_total uint64
      + Cpu_run_virtual_total uint64
      + Ac_comm [32]int8
      + Ac_sched uint8
      + Ac_pad [3]uint8
      + _ [4]byte
      + Ac_uid uint32
      + Ac_gid uint32
      + Ac_pid uint32
      + Ac_ppid uint32
      + Ac_btime uint32
      + Ac_etime uint64
      + Ac_utime uint64
      + Ac_stime uint64
      + Ac_minflt uint64
      + Ac_majflt uint64
      + Coremem uint64
      + Virtmem uint64
      + Hiwater_rss uint64
      + Hiwater_vm uint64
      + Read_char uint64
      + Write_char uint64
      + Read_syscalls uint64
      + Write_syscalls uint64
      + Read_bytes uint64
      + Write_bytes uint64
      + Cancelled_write_bytes uint64
      + Nvcsw uint64
      + Nivcsw uint64
      + Ac_utimescaled uint64
      + Ac_stimescaled uint64
      + Cpu_scaled_run_real_total uint64
      + Freepages_count uint64
      + Freepages_delay_total uint64
      + Thrashing_count uint64
      + Thrashing_delay_total uint64
      + Ac_btime64 uint64
      + Compact_count uint64
      + Compact_delay_total uint64
      +}
      +
      +type cpuMask uint64
      +
      +const (
      + _NCPUBITS = 0x40
      +)
      +
      +const (
      + CBitFieldMaskBit0 = 0x1
      + CBitFieldMaskBit1 = 0x2
      + CBitFieldMaskBit2 = 0x4
      + CBitFieldMaskBit3 = 0x8
      + CBitFieldMaskBit4 = 0x10
      + CBitFieldMaskBit5 = 0x20
      + CBitFieldMaskBit6 = 0x40
      + CBitFieldMaskBit7 = 0x80
      + CBitFieldMaskBit8 = 0x100
      + CBitFieldMaskBit9 = 0x200
      + CBitFieldMaskBit10 = 0x400
      + CBitFieldMaskBit11 = 0x800
      + CBitFieldMaskBit12 = 0x1000
      + CBitFieldMaskBit13 = 0x2000
      + CBitFieldMaskBit14 = 0x4000
      + CBitFieldMaskBit15 = 0x8000
      + CBitFieldMaskBit16 = 0x10000
      + CBitFieldMaskBit17 = 0x20000
      + CBitFieldMaskBit18 = 0x40000
      + CBitFieldMaskBit19 = 0x80000
      + CBitFieldMaskBit20 = 0x100000
      + CBitFieldMaskBit21 = 0x200000
      + CBitFieldMaskBit22 = 0x400000
      + CBitFieldMaskBit23 = 0x800000
      + CBitFieldMaskBit24 = 0x1000000
      + CBitFieldMaskBit25 = 0x2000000
      + CBitFieldMaskBit26 = 0x4000000
      + CBitFieldMaskBit27 = 0x8000000
      + CBitFieldMaskBit28 = 0x10000000
      + CBitFieldMaskBit29 = 0x20000000
      + CBitFieldMaskBit30 = 0x40000000
      + CBitFieldMaskBit31 = 0x80000000
      + CBitFieldMaskBit32 = 0x100000000
      + CBitFieldMaskBit33 = 0x200000000
      + CBitFieldMaskBit34 = 0x400000000
      + CBitFieldMaskBit35 = 0x800000000
      + CBitFieldMaskBit36 = 0x1000000000
      + CBitFieldMaskBit37 = 0x2000000000
      + CBitFieldMaskBit38 = 0x4000000000
      + CBitFieldMaskBit39 = 0x8000000000
      + CBitFieldMaskBit40 = 0x10000000000
      + CBitFieldMaskBit41 = 0x20000000000
      + CBitFieldMaskBit42 = 0x40000000000
      + CBitFieldMaskBit43 = 0x80000000000
      + CBitFieldMaskBit44 = 0x100000000000
      + CBitFieldMaskBit45 = 0x200000000000
      + CBitFieldMaskBit46 = 0x400000000000
      + CBitFieldMaskBit47 = 0x800000000000
      + CBitFieldMaskBit48 = 0x1000000000000
      + CBitFieldMaskBit49 = 0x2000000000000
      + CBitFieldMaskBit50 = 0x4000000000000
      + CBitFieldMaskBit51 = 0x8000000000000
      + CBitFieldMaskBit52 = 0x10000000000000
      + CBitFieldMaskBit53 = 0x20000000000000
      + CBitFieldMaskBit54 = 0x40000000000000
      + CBitFieldMaskBit55 = 0x80000000000000
      + CBitFieldMaskBit56 = 0x100000000000000
      + CBitFieldMaskBit57 = 0x200000000000000
      + CBitFieldMaskBit58 = 0x400000000000000
      + CBitFieldMaskBit59 = 0x800000000000000
      + CBitFieldMaskBit60 = 0x1000000000000000
      + CBitFieldMaskBit61 = 0x2000000000000000
      + CBitFieldMaskBit62 = 0x4000000000000000
      + CBitFieldMaskBit63 = 0x8000000000000000
      +)
      +
      +type SockaddrStorage struct {
      + Family uint16
      + _ [118]int8
      + _ uint64
      +}
      +
      +type HDGeometry struct {
      + Heads uint8
      + Sectors uint8
      + Cylinders uint16
      + Start uint64
      +}
      +
      +type Statfs_t struct {
      + Type int64
      + Bsize int64
      + Blocks uint64
      + Bfree uint64
      + Bavail uint64
      + Files uint64
      + Ffree uint64
      + Fsid Fsid
      + Namelen int64
      + Frsize int64
      + Flags int64
      + Spare [4]int64
      +}
      +
      +type TpacketHdr struct {
      + Status uint64
      + Len uint32
      + Snaplen uint32
      + Mac uint16
      + Net uint16
      + Sec uint32
      + Usec uint32
      + _ [4]byte
      +}
      +
      +const (
      + SizeofTpacketHdr = 0x20
      +)
      +
      +type RTCPLLInfo struct {
      + Ctrl int32
      + Value int32
      + Max int32
      + Min int32
      + Posmult int32
      + Negmult int32
      + Clock int64
      +}
      +
      +type BlkpgPartition struct {
      + Start int64
      + Length int64
      + Pno int32
      + Devname [64]uint8
      + Volname [64]uint8
      + _ [4]byte
      +}
      +
      +const (
      + BLKPG = 0x1269
      +)
      +
      +type XDPUmemReg struct {
      + Addr uint64
      + Len uint64
      + Size uint32
      + Headroom uint32
      + Flags uint32
      + _ [4]byte
      +}
      +
      +type CryptoUserAlg struct {
      + Name [64]int8
      + Driver_name [64]int8
      + Module_name [64]int8
      + Type uint32
      + Mask uint32
      + Refcnt uint32
      + Flags uint32
      +}
      +
      +type CryptoStatAEAD struct {
      + Type [64]int8
      + Encrypt_cnt uint64
      + Encrypt_tlen uint64
      + Decrypt_cnt uint64
      + Decrypt_tlen uint64
      + Err_cnt uint64
      +}
      +
      +type CryptoStatAKCipher struct {
      + Type [64]int8
      + Encrypt_cnt uint64
      + Encrypt_tlen uint64
      + Decrypt_cnt uint64
      + Decrypt_tlen uint64
      + Verify_cnt uint64
      + Sign_cnt uint64
      + Err_cnt uint64
      +}
      +
      +type CryptoStatCipher struct {
      + Type [64]int8
      + Encrypt_cnt uint64
      + Encrypt_tlen uint64
      + Decrypt_cnt uint64
      + Decrypt_tlen uint64
      + Err_cnt uint64
      +}
      +
      +type CryptoStatCompress struct {
      + Type [64]int8
      + Compress_cnt uint64
      + Compress_tlen uint64
      + Decompress_cnt uint64
      + Decompress_tlen uint64
      + Err_cnt uint64
      +}
      +
      +type CryptoStatHash struct {
      + Type [64]int8
      + Hash_cnt uint64
      + Hash_tlen uint64
      + Err_cnt uint64
      +}
      +
      +type CryptoStatKPP struct {
      + Type [64]int8
      + Setsecret_cnt uint64
      + Generate_public_key_cnt uint64
      + Compute_shared_secret_cnt uint64
      + Err_cnt uint64
      +}
      +
      +type CryptoStatRNG struct {
      + Type [64]int8
      + Generate_cnt uint64
      + Generate_tlen uint64
      + Seed_cnt uint64
      + Err_cnt uint64
      +}
      +
      +type CryptoStatLarval struct {
      + Type [64]int8
      +}
      +
      +type CryptoReportLarval struct {
      + Type [64]int8
      +}
      +
      +type CryptoReportHash struct {
      + Type [64]int8
      + Blocksize uint32
      + Digestsize uint32
      +}
      +
      +type CryptoReportCipher struct {
      + Type [64]int8
      + Blocksize uint32
      + Min_keysize uint32
      + Max_keysize uint32
      +}
      +
      +type CryptoReportBlkCipher struct {
      + Type [64]int8
      + Geniv [64]int8
      + Blocksize uint32
      + Min_keysize uint32
      + Max_keysize uint32
      + Ivsize uint32
      +}
      +
      +type CryptoReportAEAD struct {
      + Type [64]int8
      + Geniv [64]int8
      + Blocksize uint32
      + Maxauthsize uint32
      + Ivsize uint32
      +}
      +
      +type CryptoReportComp struct {
      + Type [64]int8
      +}
      +
      +type CryptoReportRNG struct {
      + Type [64]int8
      + Seedsize uint32
      +}
      +
      +type CryptoReportAKCipher struct {
      + Type [64]int8
      +}
      +
      +type CryptoReportKPP struct {
      + Type [64]int8
      +}
      +
      +type CryptoReportAcomp struct {
      + Type [64]int8
      +}
      +
      +type LoopInfo struct {
      + Number int32
      + Device uint32
      + Inode uint64
      + Rdevice uint32
      + Offset int32
      + Encrypt_type int32
      + Encrypt_key_size int32
      + Flags int32
      + Name [64]int8
      + Encrypt_key [32]uint8
      + Init [2]uint64
      + Reserved [4]int8
      + _ [4]byte
      +}
      +
      +type TIPCSubscr struct {
      + Seq TIPCServiceRange
      + Timeout uint32
      + Filter uint32
      + Handle [8]int8
      +}
      +
      +type TIPCSIOCLNReq struct {
      + Peer uint32
      + Id uint32
      + Linkname [68]int8
      +}
      +
      +type TIPCSIOCNodeIDReq struct {
      + Peer uint32
      + Id [16]int8
      +}
      +
      +type PPSKInfo struct {
      + Assert_sequence uint32
      + Clear_sequence uint32
      + Assert_tu PPSKTime
      + Clear_tu PPSKTime
      + Current_mode int32
      + _ [4]byte
      +}
      +
      +const (
      + PPS_GETPARAMS = 0x800870a1
      + PPS_SETPARAMS = 0x400870a2
      + PPS_GETCAP = 0x800870a3
      + PPS_FETCH = 0xc00870a4
      +)
      +
      +const (
      + PIDFD_NONBLOCK = 0x800
      +)
      +
      +type SysvIpcPerm struct {
      + Key int32
      + Uid uint32
      + Gid uint32
      + Cuid uint32
      + Cgid uint32
      + Mode uint32
      + _ [0]uint8
      + Seq uint16
      + _ uint16
      + _ uint64
      + _ uint64
      +}
      +type SysvShmDesc struct {
      + Perm SysvIpcPerm
      + Segsz uint64
      + Atime int64
      + Dtime int64
      + Ctime int64
      + Cpid int32
      + Lpid int32
      + Nattch uint64
      + _ uint64
      + _ uint64
      +}

      To view, visit change 399336. To unsubscribe, or for help writing mail filters, visit settings.

      Gerrit-Project: sys
      Gerrit-Branch: master
      Gerrit-Change-Id: If0ee99997360608d7ba218880a1ef180ca6db551
      Gerrit-Change-Number: 399336
      Gerrit-PatchSet: 9
      Gerrit-Owner: Meidan Li <lime...@loongson.cn>
      Gerrit-Reviewer: Gopher Robot <go...@golang.org>
      Gerrit-Reviewer: Ian Lance Taylor <ia...@google.com>
      Gerrit-Reviewer: Matt Layher <mdla...@gmail.com>
      Gerrit-Reviewer: Than McIntosh <th...@google.com>
      Gerrit-Reviewer: Tobias Klauser <tobias....@gmail.com>
      Gerrit-CC: Ian Lance Taylor <ia...@golang.org>
      Gerrit-CC: abner chenc <chen...@loongson.cn>
      Gerrit-CC: xiaodong liu <teao...@gmail.com>
      Gerrit-MessageType: merged
      Reply all
      Reply to author
      Forward
      0 new messages