vendor/golang.org/x/sys/unix/syscall_linux_arm.go
changeset 256 6d9efbef00a9
parent 251 1c52a0eeb952
child 260 445e01aede7e
equal deleted inserted replaced
255:4f153a23adab 256:6d9efbef00a9
     1 // Copyright 2009 The Go Authors. All rights reserved.
     1 // Copyright 2009 The Go Authors. All rights reserved.
     2 // Use of this source code is governed by a BSD-style
     2 // Use of this source code is governed by a BSD-style
     3 // license that can be found in the LICENSE file.
     3 // license that can be found in the LICENSE file.
     4 
     4 
       
     5 //go:build arm && linux
     5 // +build arm,linux
     6 // +build arm,linux
     6 
     7 
     7 package unix
     8 package unix
     8 
     9 
     9 import (
    10 import (
    10 	"syscall"
       
    11 	"unsafe"
    11 	"unsafe"
    12 )
    12 )
    13 
    13 
    14 func setTimespec(sec, nsec int64) Timespec {
    14 func setTimespec(sec, nsec int64) Timespec {
    15 	return Timespec{Sec: int32(sec), Nsec: int32(nsec)}
    15 	return Timespec{Sec: int32(sec), Nsec: int32(nsec)}
    34 	p[0] = int(pp[0])
    34 	p[0] = int(pp[0])
    35 	p[1] = int(pp[1])
    35 	p[1] = int(pp[1])
    36 	return
    36 	return
    37 }
    37 }
    38 
    38 
    39 //sysnb pipe2(p *[2]_C_int, flags int) (err error)
    39 //sysnb	pipe2(p *[2]_C_int, flags int) (err error)
    40 
    40 
    41 func Pipe2(p []int, flags int) (err error) {
    41 func Pipe2(p []int, flags int) (err error) {
    42 	if len(p) != 2 {
    42 	if len(p) != 2 {
    43 		return EINVAL
    43 		return EINVAL
    44 	}
    44 	}
    46 	err = pipe2(&pp, flags)
    46 	err = pipe2(&pp, flags)
    47 	p[0] = int(pp[0])
    47 	p[0] = int(pp[0])
    48 	p[1] = int(pp[1])
    48 	p[1] = int(pp[1])
    49 	return
    49 	return
    50 }
    50 }
    51 
       
    52 // Underlying system call writes to newoffset via pointer.
       
    53 // Implemented in assembly to avoid allocation.
       
    54 func seek(fd int, offset int64, whence int) (newoffset int64, err syscall.Errno)
       
    55 
    51 
    56 func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
    52 func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
    57 	newoffset, errno := seek(fd, offset, whence)
    53 	newoffset, errno := seek(fd, offset, whence)
    58 	if errno != 0 {
    54 	if errno != 0 {
    59 		return 0, errno
    55 		return 0, errno
    78 //sys	recvmsg(s int, msg *Msghdr, flags int) (n int, err error)
    74 //sys	recvmsg(s int, msg *Msghdr, flags int) (n int, err error)
    79 //sys	sendmsg(s int, msg *Msghdr, flags int) (n int, err error)
    75 //sys	sendmsg(s int, msg *Msghdr, flags int) (n int, err error)
    80 
    76 
    81 // 64-bit file system and 32-bit uid calls
    77 // 64-bit file system and 32-bit uid calls
    82 // (16-bit uid calls are not always supported in newer kernels)
    78 // (16-bit uid calls are not always supported in newer kernels)
    83 //sys	Dup2(oldfd int, newfd int) (err error)
    79 //sys	dup2(oldfd int, newfd int) (err error)
    84 //sysnb	EpollCreate(size int) (fd int, err error)
    80 //sysnb	EpollCreate(size int) (fd int, err error)
    85 //sys	EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
    81 //sys	EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
    86 //sys	Fchown(fd int, uid int, gid int) (err error) = SYS_FCHOWN32
    82 //sys	Fchown(fd int, uid int, gid int) (err error) = SYS_FCHOWN32
    87 //sys	Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64
    83 //sys	Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64
    88 //sys	Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64
    84 //sys	Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64
   132 	return Utimes(path, tv)
   128 	return Utimes(path, tv)
   133 }
   129 }
   134 
   130 
   135 //sys	utimes(path string, times *[2]Timeval) (err error)
   131 //sys	utimes(path string, times *[2]Timeval) (err error)
   136 
   132 
   137 //sys   Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
   133 //sys	Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
   138 //sys   Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
   134 //sys	Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
   139 //sys	Truncate(path string, length int64) (err error) = SYS_TRUNCATE64
   135 //sys	Truncate(path string, length int64) (err error) = SYS_TRUNCATE64
   140 //sys	Ftruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64
   136 //sys	Ftruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64
   141 
   137 
   142 func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
   138 func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
   143 	_, _, e1 := Syscall6(SYS_ARM_FADVISE64_64, uintptr(fd), uintptr(advice), uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32))
   139 	_, _, e1 := Syscall6(SYS_ARM_FADVISE64_64, uintptr(fd), uintptr(advice), uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32))
   180 type rlimit32 struct {
   176 type rlimit32 struct {
   181 	Cur uint32
   177 	Cur uint32
   182 	Max uint32
   178 	Max uint32
   183 }
   179 }
   184 
   180 
   185 //sysnb getrlimit(resource int, rlim *rlimit32) (err error) = SYS_UGETRLIMIT
   181 //sysnb	getrlimit(resource int, rlim *rlimit32) (err error) = SYS_UGETRLIMIT
   186 
   182 
   187 const rlimInf32 = ^uint32(0)
   183 const rlimInf32 = ^uint32(0)
   188 const rlimInf64 = ^uint64(0)
   184 const rlimInf64 = ^uint64(0)
   189 
   185 
   190 func Getrlimit(resource int, rlim *Rlimit) (err error) {
   186 func Getrlimit(resource int, rlim *Rlimit) (err error) {
   211 		rlim.Max = uint64(rl.Max)
   207 		rlim.Max = uint64(rl.Max)
   212 	}
   208 	}
   213 	return
   209 	return
   214 }
   210 }
   215 
   211 
   216 //sysnb setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT
   212 //sysnb	setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT
   217 
   213 
   218 func Setrlimit(resource int, rlim *Rlimit) (err error) {
   214 func Setrlimit(resource int, rlim *Rlimit) (err error) {
   219 	err = prlimit(0, resource, rlim, nil)
   215 	err = prlimit(0, resource, rlim, nil)
   220 	if err != ENOSYS {
   216 	if err != ENOSYS {
   221 		return err
   217 		return err
   256 	msghdr.Iovlen = uint32(length)
   252 	msghdr.Iovlen = uint32(length)
   257 }
   253 }
   258 
   254 
   259 func (cmsg *Cmsghdr) SetLen(length int) {
   255 func (cmsg *Cmsghdr) SetLen(length int) {
   260 	cmsg.Len = uint32(length)
   256 	cmsg.Len = uint32(length)
       
   257 }
       
   258 
       
   259 func (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {
       
   260 	rsa.Service_name_len = uint32(length)
   261 }
   261 }
   262 
   262 
   263 //sys	poll(fds *PollFd, nfds int, timeout int) (n int, err error)
   263 //sys	poll(fds *PollFd, nfds int, timeout int) (n int, err error)
   264 
   264 
   265 func Poll(fds []PollFd, timeout int) (n int, err error) {
   265 func Poll(fds []PollFd, timeout int) (n int, err error) {