Commit Graph

54 Commits

Author SHA1 Message Date
Tobias Klauser
89da893103 unix: exclude AUDIT_RECORD_MAGIC constant on darwin
CL 112696 changed mkerrors.sh to add filesystem magic constants on
linux. This leads to the unrelated AUDIT_RECORD_MAGIC constant being
added on darwin. Avoid this by explicity excluding it in mkerrors.sh.

Change-Id: I5a73797e5e9a1a92cb39f96f360fdb48982a7741
Reviewed-on: https://go-review.googlesource.com/114095
Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2018-05-22 13:13:21 +00:00
Tobias Klauser
7c87d13f8e unix: add tpacket types and constants on Linux
Change-Id: I4f2fd8a7c899403f545d8dc73fec2ebbb0b322c0
Reviewed-on: https://go-review.googlesource.com/113035
Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
2018-05-14 14:36:08 +00:00
Tobias Klauser
9950ad118b unix: add statfs and filesystem magic constants on Linux
Fixes golang/go#25341

Change-Id: I79cb4c77b771e005eb27d4e495ac6a7491e2e66e
Reviewed-on: https://go-review.googlesource.com/112696
Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2018-05-11 13:39:06 +00:00
Tobias Klauser
6f686a352d unix: add ErrnoName and SignalName
Add ErrnoName and SignalName to get errno and signal name strings from
syscall.Errno and syscall.Signal values, respectively.

This repurposes the errors and signals vars (because they are not used
within x/sys/unix currently) and turns them into slices of struct,
containing errno/signal number, name and description. ErrnoName and
SignalName can then be trivially implemented using sort.Search.

Renaming errors to errorList additionaly allows to avoid package aliases
for the errors package.

Fixes golang/go#25134

Change-Id: Ie195872793f44c437f0f175ccfaa13a2546338c5
Reviewed-on: https://go-review.googlesource.com/110875
Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
2018-05-04 06:42:12 +00:00
Matt Layher
79b0c68887 unix: add Linux block device ioctl types and constants
These types and constants are taken from hdreg.h, and will enable
querying and manipulation of block devices on Linux.

Fixes golang/go#24971

Change-Id: Iafe8f81ba7ab9f1e127743dab6a9fb1912874a5c
Reviewed-on: https://go-review.googlesource.com/108455
Run-TryBot: Matt Layher <mdlayher@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Tobias Klauser <tobias.klauser@gmail.com>
2018-04-20 14:53:19 +00:00
Tobias Klauser
c1138c84af unix: update to Linux 4.15, glibc 2.27 and Go 1.10
Also use the Ubuntu 17.10 docker image and additionally install bison
which is needed by the glibc build.

The resulting change only consists of a few additional constants.
Exclude the X86_CR3_PCID_NOFLUSH constant on 386 and amd64, though.

Change-Id: I0a9b8959146273ff3b259c17bb616625a9ac8278
Reviewed-on: https://go-review.googlesource.com/96255
Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
2018-02-22 21:03:05 +00:00
Tobias Klauser
fff93fa7cd unix: add Statx on Linux
statx(2) allows to get enhanced file status information (not currently
available through the existing stat syscalls), lightweight stat,
heavyweight stat. The Statx_t type used by Statx has consistent field
sizes on all arches (with year-2038-capable timestamps) and is closer to
the BSD implementation of Stat_t.

See http://man7.org/linux/man-pages/man2/statx.2.html for details. The
syscall was added in Linux kernel 4.11.

See https://github.com/tklauser/statx for an example of how this
function and types can be used to report stat(1)-like file status
information.

Change-Id: I9e9642b5b42a393f94fd532453888ce9ba4f0003
Reviewed-on: https://go-review.googlesource.com/87555
Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2018-01-15 08:58:44 +00:00
Matt Layher
b9cf5f96b6 unix: add cgroupstats type and constants
The cgroupstats structure is available via Linux's generic netlink
taskstats interface.

For more information, please see:
https://www.kernel.org/doc/Documentation/accounting/cgroupstats.txt.

Fixes golang/go#23388.

Change-Id: I8a05a3875209e99a427d54049eacc98f415e44cf
Reviewed-on: https://go-review.googlesource.com/86975
Run-TryBot: Matt Layher <mdlayher@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Tobias Klauser <tobias.klauser@gmail.com>
2018-01-09 18:07:26 +00:00
Tobias Klauser
665f6529cc unix: add Uname on Darwin
Darwin doesn't have a uname syscall but the same information can be
retrieved using sysctls. Use the raw sysctl numbers instead of doing the
roundtrip via SysctlString in order to void the additional sysctl calls
in nametomib and SysctlRaw.

This implementation follows the one in
https://opensource.apple.com/source/Libc/Libc-1244.1.7/gen/uname.c

Change-Id: I19541e2a6700f84ced0549a8fb86faa8cb5e6fbe
Reviewed-on: https://go-review.googlesource.com/77270
Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
2017-11-13 20:21:12 +00:00
Tobias Klauser
a22539bf85 unix: add vmsockets ioctl constant on Linux
To be used e.g. in github.com/mdlayher/vsock

Change-Id: I52148a6e6c53c022c07e2cc8bf7348a96445c17b
Reviewed-on: https://go-review.googlesource.com/76193
Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Matt Layher <mdlayher@gmail.com>
2017-11-07 15:03:14 +00:00
Tobias Klauser
46eaec7899 unix: use setattrlist for UtimesNanoAt on Darwin
Use to setarrlist to implement UtimesNanoAt with nanosecond precision
(on Mac OS 10.13 with APFS). Translate AT_SYMLINK_NOFOLLOW to
FSOPT_NOFOLLOW correspondingly.

Change-Id: I1468a1f4eecb53b2280ff6329b1ec64e204701f1
Reviewed-on: https://go-review.googlesource.com/75650
Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
2017-11-02 21:26:49 +00:00
Tobias Klauser
feaf45c67f unix: use setattrlist for UtimesNano on Darwin for ns resolution
Follow CL 74952 for x/sys/unix.

Update golang/go#22528

Change-Id: Id146da75b80a64cfa4eac28e9bb7b3befe944718
Reviewed-on: https://go-review.googlesource.com/75610
Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2017-11-02 20:14:56 +00:00
Michael Stapelberg
a57a2b53a1 unix: add watchdog constants on Linux
To be used e.g. in
2e60d5b8c8

Change-Id: If79ffec9021dc79375c861a0ddd9dd443adb4692
Reviewed-on: https://go-review.googlesource.com/72375
Reviewed-by: Tobias Klauser <tobias.klauser@gmail.com>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2017-10-23 17:49:30 +00:00
Tobias Klauser
ff8cd6cb4f unix: add UTIME_* constants on Linux
They might be used as special values in struct Timespec. See
http://man7.org/linux/man-pages/man2/utimensat.2.html for details.

Change-Id: I1c2d6d7731ca7f077d033e51ee6421a4f2cfbb89
Reviewed-on: https://go-review.googlesource.com/72376
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
2017-10-23 17:48:59 +00:00
Tobias Klauser
43eea11bc9 unix: add MNT_* flags on FreeBSD
Add the MNT_* flags to be used e.g. with Getfsstat on FreeBSD.

Change-Id: I1afb50f715f447f85b4ece3d3fead8b9ce79c4f6
Reviewed-on: https://go-review.googlesource.com/70250
Reviewed-by: Matt Layher <mdlayher@gmail.com>
Run-TryBot: Matt Layher <mdlayher@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2017-10-12 16:43:49 +00:00
Tobias Klauser
1f337fdb7f unix: add Major, Minor and Mkdev functions on Solaris
Add Major, Minor and Mkdev functions for converting device numbers to
their major/minor components and vice versa.

Use the respective functions provided by the Solaris libc instead of
reimplementing them.

Test the conversion function with some well-known static device numbers
for devices which should be present on any Solaris system.

Re-generated files on OpenIndiana Hipster 2017.04 (SunOS 5.11) which
also added some previously missing error constants.

Change-Id: Ief9ea973d91c24956571eb8fafc8a4525b0f5b90
Reviewed-on: https://go-review.googlesource.com/64390
Reviewed-by: Ian Lance Taylor <iant@golang.org>
2017-09-18 21:40:44 +00:00
Joe Richey joerichey@google.com
9aade4d3a3 unix: Fix mkerrors.sh to do comparison correctly
Bash should use "=" not "-eq" for equality comparison.

Some incorrect comparison operators were missed in:
https://go-review.googlesource.com/c/sys/+/41832

Change-Id: I110968287b7370870301b2fdd2a4ec188f623a39
Reviewed-on: https://go-review.googlesource.com/61770
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2017-09-06 00:00:21 +00:00
Matt Layher
ab9e364efd unix: add generic netlink types and constants on Linux
Generic netlink is a generalized netlink family which enables a series
of different communication channels to be multiplexed on a single
netlink family.

For more information, please see: https://lwn.net/Articles/208755/.

Fixes golang/go#21682.

Change-Id: I2095150e06471f4a0e1322fba669573aa8f0a9b1
Reviewed-on: https://go-review.googlesource.com/59931
Run-TryBot: Matt Layher <mdlayher@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
2017-08-29 18:59:17 +00:00
Matt Layher
22e23b7432 unix: add taskstats type and constants on Linux
Taskstats is a netlink-based interface for sending per-task and
per-process statistics from the kernel to userspace.

For more information, please see:
https://www.kernel.org/doc/Documentation/accounting/taskstats.txt.

Fixes golang/go#21616.

Change-Id: I7d4b8035aa8e993074d61911d9a8c3a3e61c9b2e
Reviewed-on: https://go-review.googlesource.com/59050
Run-TryBot: Matt Layher <mdlayher@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
2017-08-25 17:12:00 +00:00
Tobias Klauser
f1e7f7a8ac unix: add MNT_* constants on Darwin
Add the MNT_* constants used for the Mount and Umount functions on
Darwin.

Generated on Mac OS 10.11 (Darwin 15.6.0). This also brings
zerrors_darwin_{arm,arm64} up to date with constants which are already
present for 386 and amd64.

Fixes golang/go#9891

Change-Id: Id77847a2fb805a759aa0f5b36e8954b764e699a5
Reviewed-on: https://go-review.googlesource.com/54210
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2017-08-09 13:30:23 +00:00
Ben Laurie
7a4fde3fda unix: add some FreeBSD Capsicum support.
Change-Id: Ibb1426ebd18d27ee9f144af0fd8c94b08c06f7d7
Reviewed-on: https://go-review.googlesource.com/47290
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2017-07-19 20:48:12 +00:00
Tobias Klauser
abf9c25f54 unix: add additional socket ioctl constants on Linux
Add additional SIOC* socket ioctl constants from linux/sockios.h on
Linux.

Change-Id: I76f8c9d9d0015d398ee52844b3c9f506cd182329
Reviewed-on: https://go-review.googlesource.com/47950
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2017-07-10 16:16:58 +00:00
Tobias Klauser
739734461d unix: add perf event ioctl constants on Linux
Add the PERF_EVENT_IOC_* constants on Linux which are used to
enable/disable/configure perf events. Also add the PERF_IOC_FLAG_GROUP
constant which might be using as part of the ioct argument. See section
"perf_event ioctl calls" in
http://man7.org/linux/man-pages/man2/perf_event_open.2.html

Change-Id: I92fb8f6ef5cc53711f00db566d8e277cdf1cd607
Reviewed-on: https://go-review.googlesource.com/47770
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2017-07-07 16:14:08 +00:00
Tobias Klauser
90796e5a05 unix: add UMOUNT_NOFOLLOW constant
Add the UMOUNT_NOFOLLOW on Linux, available since Linux 2.6.34. See
http://man7.org/linux/man-pages/man2/umount.2.html and
https://github.com/torvalds/linux/commit/db1f05bb85d796

Fixes golang/go#18316

Change-Id: I5c7dafdbb311f287b6cf290aa8a0eaf2940b9834
Reviewed-on: https://go-review.googlesource.com/46771
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2017-06-27 16:08:55 +00:00
Tobias Klauser
50298aa7a9 unix: add seccomp mode constants
Add the SECCOMP_MODE_DISABLED, SECCOMP_MODE_STRICT and
SECCOMP_MODE_FILTER constants to be used with the PR_SET_SECCOMP prctl.
See http://man7.org/linux/man-pages/man2/prctl.2.html

Change-Id: Iacd1ffaeced4ae95e780a09038d35b763778a3d3
Reviewed-on: https://go-review.googlesource.com/46691
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2017-06-26 17:54:06 +00:00
Tobias Klauser
8d3b82dc77 unix: add Setxattr constants
Add the XATTR_CREATE and XATTR_REPLACE constants, to be used in the
flags parameter of Setxattr/Lsetxattr. See
http://man7.org/linux/man-pages/man2/setxattr.2.html

Fixes golang/go#14454

Change-Id: I868ac019fe3be755e0f6f8bff734f843ba602ee9
Reviewed-on: https://go-review.googlesource.com/46690
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2017-06-26 16:26:13 +00:00
Tobias Klauser
0b25a408a5 unix: add Eventfd function on Linux
Add support for the eventfd2 syscall on Linux.

Use the eventfd2 syscall instead of eventfd, as the latter does not
provide a flags argument and glibc also maps its eventfd() function to
the eventfd2 syscall, see the Notes section in
http://man7.org/linux/man-pages/man2/eventfd.2.html

Also add the corresponding flags values EFD_CLOEXEC, EFD_NONBLOCK and
EFD_SEMAPHORE.

Change-Id: Ia8c99e68d5966ab5c7ebe7e45423943fd7d8214e
Reviewed-on: https://go-review.googlesource.com/45093
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2017-06-08 16:48:03 +00:00
Tobias Klauser
b9e8d468b0 unix: add additional rlimit resource constants
Add the following additional Getrlimit/Setrlimit resource constants (see
http://man7.org/linux/man-pages/man2/getrlimit.2.html):

  RLIMIT_LOCKS
  RLIMIT_MEMLOCK
  RLIMIT_MSGQUEUE
  RLIMIT_NICE
  RLIMIT_NPROC
  RLIMIT_RSS
  RLIMIT_RTPRIO
  RLIMIT_RTTIME
  RLIMIT_SIGPENDING

Fixes golang/go#14854

Change-Id: I302ff67d6d1b11d94f18614490fbd634a8caec19
Reviewed-on: https://go-review.googlesource.com/45052
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2017-06-07 14:18:10 +00:00
Joe Richey joerichey@google.com
a2e06a18b0 unix: add bindings for keyutils syscalls
This CL adds support for the ADD_KEY, REQUESET_KEY, and KEYCTL syscalls.
These syscalls allow access to the kernel keyring facilities. In C code,
these syscalls are wrapped by the libkeyutils package. See:
	http://man7.org/linux/man-pages/man7/keyutils.7.html

The ADD_KEY and REQUEST_KEY calls are fairly straightforward, but the
KEYCTL syscall is a multiplexor for a number of key management
functions. See:
	http://man7.org/linux/man-pages/man3/keyctl.3.html

The Go bindings for the KEYCTL functions attempt to replicate what
libkeyutils does. This is done via generated helper functions.

Change-Id: If8c97d4ef5bce14c43dee3e6772ded42dc3c595a
Reviewed-on: https://go-review.googlesource.com/41415
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2017-05-18 22:39:15 +00:00
joerichey@google.com
8c0a5eacba unix: add support for Linux filesystem encryption
This CL adds in the necessary types and constants to support Linux
filesystem encryption. This includes the structs for the keys and
polices as well as the constants for key size and encryption algorithms.

This code also reduces the scope of some of the regexes in mkerrors.sh.
This is to reduce the number of unrelated constants added in with this
change.

Note that due to a bug in the Linux uapi headers, not all of the
necessary constants and structures are declared in linux/fs.h despite
being part of the kernel ABI. This means that some constants and types
had to be manually added in.

The bug has been patched (https://patchwork.kernel.org/patch/9662723),
and the manual additions can be removed when the patch is merged into
the mainline kernel.

Change-Id: Ib508ad99bdf4c0068933ffcf351c52bb359cfcf4
Reviewed-on: https://go-review.googlesource.com/41417
Reviewed-by: Matt Layher <mdlayher@gmail.com>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Matt Layher <mdlayher@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2017-04-24 22:03:05 +00:00
Joe Richey
ea9bcade75 unix: generate all Linux go files from source
Right now the process for adding in new constants, errors, or syscalls
for Linux is a pain and unreliable. The scripts are designed to be run
on the target architecture and use the header files installed on the
user's system. This makes it hard to generate files for all the
architectures or to have consistency between users. See golang/go#15282.

This CL fixes this issue by making all of the files for the 11 supported
architectures directly from source checkouts of Linux, glibc, and bluez.
This is done using Docker, the gcc cross-compilers, and qemu emulation.
Previously discussed here:
    https://go-review.googlesource.com/c/37589/

A README.md file is also added to explain how all the parts of the build
system work.

In order to get the build working for all the architectures, I made
some changes to the other scripts called from mkall_linux.go:
  - Files only used for generating linux code, moved to linux/
  - linux/mksysnum.pl supports a specified CC compiler.
  - The generated C code in mkerrors.sh changed to avoid a warning
  - mkerrors.sh headers changed to fix powerpc64 bug in sys/ioctl.h
  - linux/types.go no longer needs to export Ptrace structs in lowercase

Build instructions:
  - Host system needs to be x86-64 Linux
  - Install Docker (https://docs.docker.com/engine/installation/)
  - ./mkall.sh (That's it!!!)

Change-Id: I87067c14442ba12f8d51991349a43a9d73f38ae0
Reviewed-on: https://go-review.googlesource.com/37943
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
2017-04-21 00:52:44 +00:00
Matt Layher
d67a3279ae unix: implement Linux AF_VSOCK sockets
Adds the required constants and new SockaddrVM type for working
with Linux VM sockets.  For more information, see:
https://vmsplice.net/~stefan/stefanha-kvm-forum-2015.pdf.

Fixes golang/go#19434

Change-Id: I9aefb35441b2c7dc412bdfb806ebe08d5c20f6b1
Reviewed-on: https://go-review.googlesource.com/37937
Run-TryBot: Matt Layher <mdlayher@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
2017-03-08 01:50:38 +00:00
Michael Stapelberg
e48874b424 unix: add BLK* Linux ioctls
These are useful for re-reading partition tables and getting device
sizes.

Fixes golang/go#19370

Change-Id: Ia8dbe3416a48dbdbceafa0fff0131d71057d97ca
Reviewed-on: https://go-review.googlesource.com/37640
Reviewed-by: Ian Lance Taylor <iant@golang.org>
2017-03-03 13:59:30 +00:00
Joe Richey
76cc09b634 unix: add Getrandom syscall bindings and flags
This CL introduces the Getrandom syscall. Allowing users of
sufficiently new kernels (3.17) to detect when the operating system
lacks enough entropy to generate cryptographic random data. See:
http://man7.org/linux/man-pages/man2/getrandom.2.html

As we have updated the syscall numbers, the Getrandom function can
just be generated normally. The only other change is to mkerrors.sh
to include the GRND_* flags for getrandom from <linux/random.h>.

It is important to note that currently the mkerrors.sh script cannot
actually be run as it has fallen behind the 4.10 kernel. The GRND_*
flags were added manually.

This was originally part of a larger commit that was split up.
See CL: https://go-review.googlesource.com/37570

Change-Id: I464088a9c9f7224abdcdae476b30a4f2f412d9f5
Reviewed-on: https://go-review.googlesource.com/37589
Reviewed-by: Matt Layher <mdlayher@gmail.com>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Matt Layher <mdlayher@gmail.com>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2017-03-01 01:59:58 +00:00
Matt Layher
e4594059fe unix: add missing netlink constants on Linux
Fixes golang/go#19262

Change-Id: I67ceb187cd68e90a9387a706a89aafded0befe53
Reviewed-on: https://go-review.googlesource.com/37344
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Matt Layher <mdlayher@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2017-02-23 22:51:00 +00:00
Matt Layher
075e574b89 unix: implement Vmsplice, add SPLICE_F_* constants
Fixes golang/go#19125

Change-Id: I822b6f260f980178da29a552c6170cb261c8e254
Reviewed-on: https://go-review.googlesource.com/37152
Run-TryBot: Matt Layher <mdlayher@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
2017-02-17 00:34:42 +00:00
Matt Layher
e24f485414 unix: add support for AF_ALG sockets on Linux
Fixes golang/go#19033.

Change-Id: Icbd249f63cd4a9035a1decaa8bf4c521303b4494
Reviewed-on: https://go-review.googlesource.com/36805
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2017-02-13 22:57:39 +00:00
Maxime de Roucy
ce7380f5b0 x/sys/unix: add fallocate constants
Add FALLOC_* constants from /usr/include/linux/falloc.h to use with
Fallocate (golang.org/x/sys/unix package).

Fix golang/go#10599

Change-Id: Ie001e554250bb12472c612adcb4b79c6f72cac34
Reviewed-on: https://go-review.googlesource.com/36336
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2017-02-13 20:02:47 +00:00
Elliot Morrison-Reed
30237cf4ee x/sys/unix: added SockaddrCAN struct to allow creation of AF_CAN sockets
Fixes golang/go#16188

Change-Id: I396ccbf6ce14147bc03ecdf180c2657c22b477b4
Reviewed-on: https://go-review.googlesource.com/33392
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-11-22 21:48:34 +00:00
James Clarke
67f277b6fe unix: Added linux/sparc64 gccgo support
Change-Id: Iff763334a2efbd44af68048d1de700af7d271647
Reviewed-on: https://go-review.googlesource.com/30755
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
2016-10-11 00:35:16 +00:00
Nick Patavalis
7486f8ece0 unix: additional termios-related constants
- mkerrors.sh: Included several termios-related constants that were
  missing. Also included definitions of tty-related ioctl numbers for
  linux.

- zerrors_linux_*: the files have been generated using
  "./mkerrors.sh". After their automatic generation the files have
  been manually edited to remove changes that were not due to this
  patch.

Change-Id: I0463112542a5c1c41583007003b652375f9ce572
Reviewed-on: https://go-review.googlesource.com/17184
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2015-11-23 20:52:33 +00:00
Steven Hartland
72bfb9c4e8 unix: default CC in mkerrors.sh to cc not gcc
Clang is much more common now so use the OS cc instead of forcing gcc
by default.

Change-Id: I1dd34c7ba56c91794ee57042dd8ac024fdd649d8
Reviewed-on: https://go-review.googlesource.com/15010
Reviewed-by: Rob Pike <r@golang.org>
2015-09-25 16:59:38 +00:00
Kim Shrier
584c5fee74 x/sys/unix: add type specific ioctl functions for termios on solaris
The existing code has no way to manipulate termios or winsize structures
on solaris.  This change adds IoctlGetXXX and IoctlSetXXX functions for
int, termios, termio, and winsize.  The embedded awk script in
mkerrors.sh has additional patterns to generate the needed ioctl
constants for these calls.

Fixes golang/go#12574

Change-Id: Ic62a8c698d42c8ca379c90f71e9f27635e7d03b5
Reviewed-on: https://go-review.googlesource.com/14587
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Aram Hăvărneanu <aram@mgk.ro>
2015-09-24 17:12:55 +00:00
Shawn Walker-Salas
68a71b6be5 unix: add various missing syscalls available on Linux
Various syscalls offered by x/sys/unix on Linux are not available on
Solaris and should be, such as Mkfifo, Getwd(), Futimes() and others.
In particular, all of the *at() variants of existing functions were
added where appropriate.

Getgroups() was fixed to use the correct value for its sanity check on
the maximum number of groups.

Utimesnano() was updated to use the native Solaris utimensat function
for setting nanosecond-precision time.

Utimes() was updated to have the same error semantics and checking as
other platforms.

Getgroups(), anysocktoaddr(), and Recvmsg() were fixed to check the
return value before assuming syscall failure instead of relying solely
on errno being set.

mksyscall_solaris.pl needed some updates to better match the output of
the one found in syscall.

mkerrors.sh needed some updates to work out of the box on Solaris,
matching those recently done to the one in syscall.

The signatures (names) of some function parameters were changed to be
consistent with other platforms for the sake of documentation.

Fixes #8609

Change-Id: I9e4e2fee6d3ecfad9f4d845a5702ffde5166e804
Reviewed-on: https://go-review.googlesource.com/14643
Reviewed-by: Aram Hăvărneanu <aram@mgk.ro>
2015-09-17 18:12:33 +00:00
Aaron Jacobs
e3fe6f5d46 x/sys/unix: regenerate darwin/amd64 outputs with the latest SDK
I did this on OS X 10.10.5 (14F27) using the 10.10 SDK included in Xcode
6.4 (6E35b). This required removing a C include from mkerrors.sh, since
it doesn't exist on either of my two systems.

I spot checked the syscall number changes against this definitive list,
which is for approximately my kernel version:

    http://www.opensource.apple.com/source/xnu/xnu-2782.20.48/bsd/kern/syscalls.master

Everything I examined checked out, including the removed syscalls being
marked as "old" or being described in comments as no longer existing.

There is one exception to the output being cleanly autogenerated: I have
manually renamed SYS_SYSCTL back to SYS___SYSCTL, the name used
previously and still used by syscall_bsd.go. Because it would distract
from this CL, I will fix this in an upcoming CL.

Change-Id: I0168f608cab714aa5981b3e7d08d8fd84888d0d5
Reviewed-on: https://go-review.googlesource.com/14006
Reviewed-by: Ian Lance Taylor <iant@golang.org>
2015-08-31 01:45:38 +00:00
Ian Lance Taylor
85f6155b9e unix: emit +build comments in generator scripts
Change-Id: I8ed64dcb1c1a2119ce6f15fa1be55fbe0b0c637e
Reviewed-on: https://go-review.googlesource.com/10087
Reviewed-by: Rob Pike <r@golang.org>
Reviewed-by: Minux Ma <minux@golang.org>
Reviewed-by: Dave Cheney <dave@cheney.net>
2015-05-15 01:18:51 +00:00
Ian Lance Taylor
4cd067a709 unix: add ppc64le/linux support
This incorporates changes from https://golang.org/cl/123290043 and
https://golang.org/cl/127320043.

Files generated on Ubuntu Trusty.

Change-Id: I669c60714e857ef5f06515cd3b65dfc94785e179
Reviewed-on: https://go-review.googlesource.com/10060
Reviewed-by: Rob Pike <r@golang.org>
2015-05-14 00:30:18 +00:00
Ian Lance Taylor
9907ecf448 unix: add arm64/linux support
This incorporates generation script changes from
http://golang.org/cl/7143.

Files generated on Ubuntu Trusty.

Change-Id: I28cfa0993573e1b280c549a67f453c0fb01dee2f
Reviewed-on: https://go-review.googlesource.com/10038
Reviewed-by: Rob Pike <r@golang.org>
2015-05-13 23:16:16 +00:00
Ian Lance Taylor
f2b45db810 unix: update generation scripts for arm64/ppc64
This applies the following CLs from the syscall package:
http://golang.org/cl/9962
http://golang.org/cl/9966
http://golang.org/cl/9924

It also adds arm64/ppc64 support to mkall.sh and mksysnum_linux.pl.

Change-Id: I84fbfde2a2876dbf6d16c6159e847195c274b396
Reviewed-on: https://go-review.googlesource.com/10037
Reviewed-by: Rob Pike <r@golang.org>
2015-05-13 22:31:45 +00:00
Damien Neil
f2654f8719 unix: add clock_gettime for Linux
Includes 386, amd64, and arm for Linux.

Change-Id: I428bfb732141448659a94dc6e2ab7a98efea507a
Reviewed-on: https://go-review.googlesource.com/9766
Reviewed-by: Rob Pike <r@golang.org>
Reviewed-by: David Symonds <dsymonds@golang.org>
2015-05-06 23:20:22 +00:00