Page Menu
Home
Musing Studio
Search
Configure Global Search
Log In
Files
F12142465
syscall_linux_amd64.go
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
6 KB
Subscribers
None
syscall_linux_amd64.go
View Options
// Copyright 2009 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.
// +build amd64,linux
package
unix
//sys Dup2(oldfd int, newfd int) (err error)
//sysnb EpollCreate(size int) (fd int, err error)
//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
//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(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_NEWFSTATAT
//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 Getrlimit(resource int, rlim *Rlimit) (err error)
//sysnb Getuid() (uid int)
//sysnb inotifyInit() (fd int, err error)
func
InotifyInit
()
(
fd
int
,
err
error
)
{
// First try inotify_init1, because Android's seccomp policy blocks the latter.
fd
,
err
=
InotifyInit1
(
0
)
if
err
==
ENOSYS
{
fd
,
err
=
inotifyInit
()
}
return
}
//sys Ioperm(from int, num int, on int) (err error)
//sys Iopl(level int) (err error)
//sys Lchown(path string, uid int, gid int) (err error)
//sys Listen(s int, n int) (err error)
func
Lstat
(
path
string
,
stat
*
Stat_t
)
(
err
error
)
{
return
Fstatat
(
AT_FDCWD
,
path
,
stat
,
AT_SYMLINK_NOFOLLOW
)
}
//sys Pause() (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) (err error)
//sys Setfsuid(uid 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 Setrlimit(resource int, rlim *Rlimit) (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
)
{
// Use fstatat, because Android's seccomp policy blocks stat.
return
Fstatat
(
AT_FDCWD
,
path
,
stat
,
0
)
}
//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)
//sys Ustat(dev int, ubuf *Ustat_t) (err error)
//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error)
//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)
//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error)
func
Gettimeofday
(
tv
*
Timeval
)
(
err
error
)
{
errno
:=
gettimeofday
(
tv
)
if
errno
!=
0
{
return
errno
}
return
nil
}
func
Time
(
t
*
Time_t
)
(
tt
Time_t
,
err
error
)
{
var
tv
Timeval
errno
:=
gettimeofday
(
&
tv
)
if
errno
!=
0
{
return
0
,
errno
}
if
t
!=
nil
{
*
t
=
Time_t
(
tv
.
Sec
)
}
return
Time_t
(
tv
.
Sec
),
nil
}
//sys Utime(path string, buf *Utimbuf) (err error)
//sys utimes(path string, times *[2]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
}
}
//sysnb pipe(p *[2]_C_int) (err error)
func
Pipe
(
p
[]
int
)
(
err
error
)
{
if
len
(
p
)
!=
2
{
return
EINVAL
}
var
pp
[
2
]
_C_int
err
=
pipe
(
&
pp
)
p
[
0
]
=
int
(
pp
[
0
])
p
[
1
]
=
int
(
pp
[
1
])
return
}
//sysnb pipe2(p *[2]_C_int, flags int) (err error)
func
Pipe2
(
p
[]
int
,
flags
int
)
(
err
error
)
{
if
len
(
p
)
!=
2
{
return
EINVAL
}
var
pp
[
2
]
_C_int
err
=
pipe2
(
&
pp
,
flags
)
p
[
0
]
=
int
(
pp
[
0
])
p
[
1
]
=
int
(
pp
[
1
])
return
}
func
(
r
*
PtraceRegs
)
PC
()
uint64
{
return
r
.
Rip
}
func
(
r
*
PtraceRegs
)
SetPC
(
pc
uint64
)
{
r
.
Rip
=
pc
}
func
(
iov
*
Iovec
)
SetLen
(
length
int
)
{
iov
.
Len
=
uint64
(
length
)
}
func
(
msghdr
*
Msghdr
)
SetControllen
(
length
int
)
{
msghdr
.
Controllen
=
uint64
(
length
)
}
func
(
cmsg
*
Cmsghdr
)
SetLen
(
length
int
)
{
cmsg
.
Len
=
uint64
(
length
)
}
//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error)
func
Poll
(
fds
[]
PollFd
,
timeout
int
)
(
n
int
,
err
error
)
{
if
len
(
fds
)
==
0
{
return
poll
(
nil
,
0
,
timeout
)
}
return
poll
(
&
fds
[
0
],
len
(
fds
),
timeout
)
}
//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
)
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Thu, Oct 9, 9:36 PM (1 d, 4 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3440817
Attached To
rWCLI writeas-cli
Event Timeline
Log In to Comment