github.com/Kalvelign/golang-windows-sys-lib@v0.0.0-20221121121202-63da651435e1/unix/syscall_linux_mipsx.go (about)

     1  // Copyright 2016 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  //go:build linux && (mips || mipsle)
     6  // +build linux
     7  // +build mips mipsle
     8  
     9  package unix
    10  
    11  import (
    12  	"syscall"
    13  	"unsafe"
    14  )
    15  
    16  func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
    17  
    18  //sys	EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
    19  //sys	Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64
    20  //sys	Fchown(fd int, uid int, gid int) (err error)
    21  //sys	Ftruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64
    22  //sysnb	Getegid() (egid int)
    23  //sysnb	Geteuid() (euid int)
    24  //sysnb	Getgid() (gid int)
    25  //sysnb	Getuid() (uid int)
    26  //sys	Lchown(path string, uid int, gid int) (err error)
    27  //sys	Listen(s int, n int) (err error)
    28  //sys	pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
    29  //sys	pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
    30  //sys	Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)
    31  //sys	Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT
    32  //sys	sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64
    33  //sys	setfsgid(gid int) (prev int, err error)
    34  //sys	setfsuid(uid int) (prev int, err error)
    35  //sys	Shutdown(fd int, how int) (err error)
    36  //sys	Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error)
    37  //sys	SyncFileRange(fd int, off int64, n int64, flags int) (err error)
    38  //sys	Truncate(path string, length int64) (err error) = SYS_TRUNCATE64
    39  //sys	Ustat(dev int, ubuf *Ustat_t) (err error)
    40  //sys	accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)
    41  //sys	bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
    42  //sys	connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
    43  //sysnb	getgroups(n int, list *_Gid_t) (nn int, err error)
    44  //sysnb	setgroups(n int, list *_Gid_t) (err error)
    45  //sys	getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)
    46  //sys	setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)
    47  //sysnb	socket(domain int, typ int, proto int) (fd int, err error)
    48  //sysnb	socketpair(domain int, typ int, proto int, fd *[2]int32) (err error)
    49  //sysnb	getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)
    50  //sysnb	getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)
    51  //sys	recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)
    52  //sys	sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)
    53  //sys	recvmsg(s int, msg *Msghdr, flags int) (n int, err error)
    54  //sys	sendmsg(s int, msg *Msghdr, flags int) (n int, err error)
    55  
    56  //sys	Ioperm(from int, num int, on int) (err error)
    57  //sys	Iopl(level int) (err error)
    58  
    59  //sys	futimesat(dirfd int, path string, times *[2]Timeval) (err error)
    60  //sysnb	Gettimeofday(tv *Timeval) (err error)
    61  //sysnb	Time(t *Time_t) (tt Time_t, err error)
    62  //sys	Utime(path string, buf *Utimbuf) (err error)
    63  //sys	utimes(path string, times *[2]Timeval) (err error)
    64  
    65  //sys	Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64
    66  //sys	Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64
    67  //sys	Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64
    68  //sys	Stat(path string, stat *Stat_t) (err error) = SYS_STAT64
    69  
    70  //sys	Pause() (err error)
    71  
    72  func Fstatfs(fd int, buf *Statfs_t) (err error) {
    73  	_, _, e := Syscall(SYS_FSTATFS64, uintptr(fd), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))
    74  	if e != 0 {
    75  		err = errnoErr(e)
    76  	}
    77  	return
    78  }
    79  
    80  func Statfs(path string, buf *Statfs_t) (err error) {
    81  	p, err := BytePtrFromString(path)
    82  	if err != nil {
    83  		return err
    84  	}
    85  	_, _, e := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(p)), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))
    86  	if e != 0 {
    87  		err = errnoErr(e)
    88  	}
    89  	return
    90  }
    91  
    92  func Seek(fd int, offset int64, whence int) (off int64, err error) {
    93  	_, _, e := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offset>>32), uintptr(offset), uintptr(unsafe.Pointer(&off)), uintptr(whence), 0)
    94  	if e != 0 {
    95  		err = errnoErr(e)
    96  	}
    97  	return
    98  }
    99  
   100  func setTimespec(sec, nsec int64) Timespec {
   101  	return Timespec{Sec: int32(sec), Nsec: int32(nsec)}
   102  }
   103  
   104  func setTimeval(sec, usec int64) Timeval {
   105  	return Timeval{Sec: int32(sec), Usec: int32(usec)}
   106  }
   107  
   108  //sys	mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error)
   109  
   110  func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {
   111  	page := uintptr(offset / 4096)
   112  	if offset != int64(page)*4096 {
   113  		return 0, EINVAL
   114  	}
   115  	return mmap2(addr, length, prot, flags, fd, page)
   116  }
   117  
   118  const rlimInf32 = ^uint32(0)
   119  const rlimInf64 = ^uint64(0)
   120  
   121  type rlimit32 struct {
   122  	Cur uint32
   123  	Max uint32
   124  }
   125  
   126  //sysnb	getrlimit(resource int, rlim *rlimit32) (err error) = SYS_GETRLIMIT
   127  
   128  func Getrlimit(resource int, rlim *Rlimit) (err error) {
   129  	err = Prlimit(0, resource, nil, rlim)
   130  	if err != ENOSYS {
   131  		return err
   132  	}
   133  
   134  	rl := rlimit32{}
   135  	err = getrlimit(resource, &rl)
   136  	if err != nil {
   137  		return
   138  	}
   139  
   140  	if rl.Cur == rlimInf32 {
   141  		rlim.Cur = rlimInf64
   142  	} else {
   143  		rlim.Cur = uint64(rl.Cur)
   144  	}
   145  
   146  	if rl.Max == rlimInf32 {
   147  		rlim.Max = rlimInf64
   148  	} else {
   149  		rlim.Max = uint64(rl.Max)
   150  	}
   151  	return
   152  }
   153  
   154  //sysnb	setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT
   155  
   156  func Setrlimit(resource int, rlim *Rlimit) (err error) {
   157  	err = Prlimit(0, resource, rlim, nil)
   158  	if err != ENOSYS {
   159  		return err
   160  	}
   161  
   162  	rl := rlimit32{}
   163  	if rlim.Cur == rlimInf64 {
   164  		rl.Cur = rlimInf32
   165  	} else if rlim.Cur < uint64(rlimInf32) {
   166  		rl.Cur = uint32(rlim.Cur)
   167  	} else {
   168  		return EINVAL
   169  	}
   170  	if rlim.Max == rlimInf64 {
   171  		rl.Max = rlimInf32
   172  	} else if rlim.Max < uint64(rlimInf32) {
   173  		rl.Max = uint32(rlim.Max)
   174  	} else {
   175  		return EINVAL
   176  	}
   177  
   178  	return setrlimit(resource, &rl)
   179  }
   180  
   181  func (r *PtraceRegs) PC() uint64 { return r.Epc }
   182  
   183  func (r *PtraceRegs) SetPC(pc uint64) { r.Epc = pc }
   184  
   185  func (iov *Iovec) SetLen(length int) {
   186  	iov.Len = uint32(length)
   187  }
   188  
   189  func (msghdr *Msghdr) SetControllen(length int) {
   190  	msghdr.Controllen = uint32(length)
   191  }
   192  
   193  func (msghdr *Msghdr) SetIovlen(length int) {
   194  	msghdr.Iovlen = uint32(length)
   195  }
   196  
   197  func (cmsg *Cmsghdr) SetLen(length int) {
   198  	cmsg.Len = uint32(length)
   199  }
   200  
   201  func (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {
   202  	rsa.Service_name_len = uint32(length)
   203  }