Documentation ¶
Overview ¶
Package rawfile contains utilities for using raw host files on Linux hosts.
Index ¶
- Constants
- func AppendIovecFromBytes(iovs []unix.Iovec, bs []byte, max int) []unix.Iovec
- func BlockingPoll(fds *PollEvent, nfds int, timeout *unix.Timespec) (int, unix.Errno)
- func BlockingPollUntilStopped(efd int, fd int, events int16) (bool, unix.Errno)
- func BlockingRead(fd int, b []byte) (int, unix.Errno)
- func BlockingReadvUntilStopped(efd int, fd int, iovecs []unix.Iovec) (int, unix.Errno)
- func BlockingRecvMMsgUntilStopped(efd int, fd int, msgHdrs []MMsgHdr) (int, unix.Errno)
- func GetMTU(name string) (uint32, error)
- func IovecFromBytes(bs []byte) unix.Iovec
- func NonBlockingSendMMsg(fd int, msgHdrs []MMsgHdr) (int, unix.Errno)
- func NonBlockingWrite(fd int, buf []byte) unix.Errno
- func NonBlockingWriteIovec(fd int, iovec []unix.Iovec) unix.Errno
- type MMsgHdr
- type PollEvent
Constants ¶
const MaxIovs = 1024
MaxIovs is UIO_MAXIOV, the maximum number of iovecs that may be passed to a host system call in a single array.
const SizeofIovec = unsafe.Sizeof(unix.Iovec{})
SizeofIovec is the size of a unix.Iovec in bytes.
const SizeofMMsgHdr = unsafe.Sizeof(MMsgHdr{})
SizeofMMsgHdr is the size of a MMsgHdr in bytes.
Variables ¶
This section is empty.
Functions ¶
func AppendIovecFromBytes ¶
AppendIovecFromBytes returns append(iovs, IovecFromBytes(bs)). If len(bs) == 0, AppendIovecFromBytes returns iovs without modification. If len(iovs) >= max, AppendIovecFromBytes replaces the final iovec in iovs with one that also includes the contents of bs. Note that this implies that AppendIovecFromBytes is only usable when the returned iovec slice is used as the source of a write.
func BlockingPoll ¶
BlockingPoll on amd64/arm64 makes the ppoll() syscall while calling the version of entersyscall that relinquishes the P so that other Gs can run. This is meant to be called in cases when the syscall is expected to block. On non amd64/arm64 platforms it just forwards to the ppoll() system call.
func BlockingPollUntilStopped ¶
BlockingPollUntilStopped polls for events on fd or until a stop is signalled on the event fd efd. Returns true if stopped, i.e., efd has event POLLIN.
func BlockingRead ¶
BlockingRead reads from a file descriptor that is set up as non-blocking. If no data is available, it will block in a poll() syscall until the file descriptor becomes readable.
func BlockingReadvUntilStopped ¶
BlockingReadvUntilStopped reads from a file descriptor that is set up as non-blocking and stores the data in a list of iovecs buffers. If no data is available, it will block in a poll() syscall until the file descriptor becomes readable or stop is signalled (efd becomes readable). Returns -1 in the latter case.
func BlockingRecvMMsgUntilStopped ¶
BlockingRecvMMsgUntilStopped reads from a file descriptor that is set up as non-blocking and stores the received messages in a slice of MMsgHdr structures. If no data is available, it will block in a poll() syscall until the file descriptor becomes readable or stop is signalled (efd becomes readable). Returns -1 in the latter case.
func IovecFromBytes ¶
IovecFromBytes returns a unix.Iovec representing bs.
Preconditions: len(bs) > 0.
func NonBlockingSendMMsg ¶
NonBlockingSendMMsg sends multiple messages on a socket.
func NonBlockingWrite ¶
NonBlockingWrite writes the given buffer to a file descriptor. It fails if partial data is written.