vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go
changeset 260 445e01aede7e
parent 256 6d9efbef00a9
child 262 8d3354485fc3
equal deleted inserted replaced
259:db4911b0c721 260:445e01aede7e
     6 // +build riscv64,linux
     6 // +build riscv64,linux
     7 
     7 
     8 package unix
     8 package unix
     9 
     9 
    10 import "unsafe"
    10 import "unsafe"
    11 
       
    12 func EpollCreate(size int) (fd int, err error) {
       
    13 	if size <= 0 {
       
    14 		return -1, EINVAL
       
    15 	}
       
    16 	return EpollCreate1(0)
       
    17 }
       
    18 
    11 
    19 //sys	EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) = SYS_EPOLL_PWAIT
    12 //sys	EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) = SYS_EPOLL_PWAIT
    20 //sys	Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64
    13 //sys	Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64
    21 //sys	Fchown(fd int, uid int, gid int) (err error)
    14 //sys	Fchown(fd int, uid int, gid int) (err error)
    22 //sys	Fstat(fd int, stat *Stat_t) (err error)
    15 //sys	Fstat(fd int, stat *Stat_t) (err error)
    27 //sysnb	Geteuid() (euid int)
    20 //sysnb	Geteuid() (euid int)
    28 //sysnb	Getgid() (gid int)
    21 //sysnb	Getgid() (gid int)
    29 //sysnb	Getrlimit(resource int, rlim *Rlimit) (err error)
    22 //sysnb	Getrlimit(resource int, rlim *Rlimit) (err error)
    30 //sysnb	Getuid() (uid int)
    23 //sysnb	Getuid() (uid int)
    31 //sys	Listen(s int, n int) (err error)
    24 //sys	Listen(s int, n int) (err error)
    32 //sys	Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
    25 //sys	MemfdSecret(flags int) (fd int, err error)
    33 //sys	Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
    26 //sys	pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
       
    27 //sys	pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
    34 //sys	Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK
    28 //sys	Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK
    35 
    29 
    36 func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
    30 func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
    37 	var ts *Timespec
    31 	var ts *Timespec
    38 	if timeout != nil {
    32 	if timeout != nil {
    70 
    64 
    71 func Ustat(dev int, ubuf *Ustat_t) (err error) {
    65 func Ustat(dev int, ubuf *Ustat_t) (err error) {
    72 	return ENOSYS
    66 	return ENOSYS
    73 }
    67 }
    74 
    68 
    75 //sys	accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error)
       
    76 //sys	accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)
    69 //sys	accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)
    77 //sys	bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
    70 //sys	bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
    78 //sys	connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
    71 //sys	connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
    79 //sysnb	getgroups(n int, list *_Gid_t) (nn int, err error)
    72 //sysnb	getgroups(n int, list *_Gid_t) (nn int, err error)
    80 //sysnb	setgroups(n int, list *_Gid_t) (err error)
    73 //sysnb	setgroups(n int, list *_Gid_t) (err error)
   142 		NsecToTimespec(TimevalToNsec(tv[1])),
   135 		NsecToTimespec(TimevalToNsec(tv[1])),
   143 	}
   136 	}
   144 	return utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)
   137 	return utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)
   145 }
   138 }
   146 
   139 
   147 func Pipe(p []int) (err error) {
       
   148 	if len(p) != 2 {
       
   149 		return EINVAL
       
   150 	}
       
   151 	var pp [2]_C_int
       
   152 	err = pipe2(&pp, 0)
       
   153 	p[0] = int(pp[0])
       
   154 	p[1] = int(pp[1])
       
   155 	return
       
   156 }
       
   157 
       
   158 //sysnb	pipe2(p *[2]_C_int, flags int) (err error)
       
   159 
       
   160 func Pipe2(p []int, flags int) (err error) {
       
   161 	if len(p) != 2 {
       
   162 		return EINVAL
       
   163 	}
       
   164 	var pp [2]_C_int
       
   165 	err = pipe2(&pp, flags)
       
   166 	p[0] = int(pp[0])
       
   167 	p[1] = int(pp[1])
       
   168 	return
       
   169 }
       
   170 
       
   171 func (r *PtraceRegs) PC() uint64 { return r.Pc }
   140 func (r *PtraceRegs) PC() uint64 { return r.Pc }
   172 
   141 
   173 func (r *PtraceRegs) SetPC(pc uint64) { r.Pc = pc }
   142 func (r *PtraceRegs) SetPC(pc uint64) { r.Pc = pc }
   174 
   143 
   175 func (iov *Iovec) SetLen(length int) {
   144 func (iov *Iovec) SetLen(length int) {
   190 
   159 
   191 func (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {
   160 func (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {
   192 	rsa.Service_name_len = uint64(length)
   161 	rsa.Service_name_len = uint64(length)
   193 }
   162 }
   194 
   163 
   195 func InotifyInit() (fd int, err error) {
       
   196 	return InotifyInit1(0)
       
   197 }
       
   198 
       
   199 func Pause() error {
   164 func Pause() error {
   200 	_, err := ppoll(nil, 0, nil, nil)
   165 	_, err := ppoll(nil, 0, nil, nil)
   201 	return err
   166 	return err
   202 }
       
   203 
       
   204 func Poll(fds []PollFd, timeout int) (n int, err error) {
       
   205 	var ts *Timespec
       
   206 	if timeout >= 0 {
       
   207 		ts = new(Timespec)
       
   208 		*ts = NsecToTimespec(int64(timeout) * 1e6)
       
   209 	}
       
   210 	if len(fds) == 0 {
       
   211 		return ppoll(nil, 0, ts, nil)
       
   212 	}
       
   213 	return ppoll(&fds[0], len(fds), ts, nil)
       
   214 }
   167 }
   215 
   168 
   216 func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
   169 func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
   217 	return Renameat2(olddirfd, oldpath, newdirfd, newpath, 0)
   170 	return Renameat2(olddirfd, oldpath, newdirfd, newpath, 0)
   218 }
   171 }
   227 		// syscall expects a NULL-terminated string.
   180 		// syscall expects a NULL-terminated string.
   228 		cmdlineLen++
   181 		cmdlineLen++
   229 	}
   182 	}
   230 	return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)
   183 	return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)
   231 }
   184 }
   232 
       
   233 // dup2 exists because func Dup3 in syscall_linux.go references
       
   234 // it in an unreachable path. dup2 isn't available on arm64.
       
   235 func dup2(oldfd int, newfd int) error