Class Native

java.lang.Object
io.netty.channel.uring.Native

final class Native extends Object
  • Field Details

    • logger

      private static final InternalLogger logger
    • SOCK_NONBLOCK

      static final int SOCK_NONBLOCK
    • SOCK_CLOEXEC

      static final int SOCK_CLOEXEC
    • AF_INET

      static final short AF_INET
    • AF_INET6

      static final short AF_INET6
    • AF_UNIX

      static final short AF_UNIX
    • SIZEOF_SOCKADDR_STORAGE

      static final int SIZEOF_SOCKADDR_STORAGE
    • SIZEOF_SOCKADDR_UN

      static final int SIZEOF_SOCKADDR_UN
    • SOCKADDR_UN_OFFSETOF_SUN_FAMILY

      static final int SOCKADDR_UN_OFFSETOF_SUN_FAMILY
    • SOCKADDR_UN_OFFSETOF_SUN_PATH

      static final int SOCKADDR_UN_OFFSETOF_SUN_PATH
    • MAX_SUN_PATH_LEN

      static final int MAX_SUN_PATH_LEN
    • SIZEOF_SOCKADDR_IN

      static final int SIZEOF_SOCKADDR_IN
    • SIZEOF_SOCKADDR_IN6

      static final int SIZEOF_SOCKADDR_IN6
    • SOCKADDR_IN_OFFSETOF_SIN_FAMILY

      static final int SOCKADDR_IN_OFFSETOF_SIN_FAMILY
    • SOCKADDR_IN_OFFSETOF_SIN_PORT

      static final int SOCKADDR_IN_OFFSETOF_SIN_PORT
    • SOCKADDR_IN_OFFSETOF_SIN_ADDR

      static final int SOCKADDR_IN_OFFSETOF_SIN_ADDR
    • IN_ADDRESS_OFFSETOF_S_ADDR

      static final int IN_ADDRESS_OFFSETOF_S_ADDR
    • SOCKADDR_IN6_OFFSETOF_SIN6_FAMILY

      static final int SOCKADDR_IN6_OFFSETOF_SIN6_FAMILY
    • SOCKADDR_IN6_OFFSETOF_SIN6_PORT

      static final int SOCKADDR_IN6_OFFSETOF_SIN6_PORT
    • SOCKADDR_IN6_OFFSETOF_SIN6_FLOWINFO

      static final int SOCKADDR_IN6_OFFSETOF_SIN6_FLOWINFO
    • SOCKADDR_IN6_OFFSETOF_SIN6_ADDR

      static final int SOCKADDR_IN6_OFFSETOF_SIN6_ADDR
    • SOCKADDR_IN6_OFFSETOF_SIN6_SCOPE_ID

      static final int SOCKADDR_IN6_OFFSETOF_SIN6_SCOPE_ID
    • IN6_ADDRESS_OFFSETOF_S6_ADDR

      static final int IN6_ADDRESS_OFFSETOF_S6_ADDR
    • SIZEOF_SIZE_T

      static final int SIZEOF_SIZE_T
    • SIZEOF_IOVEC

      static final int SIZEOF_IOVEC
    • CMSG_SPACE

      static final int CMSG_SPACE
    • CMSG_SPACE_FOR_FD

      static final int CMSG_SPACE_FOR_FD
    • CMSG_LEN

      static final int CMSG_LEN
    • CMSG_LEN_FOR_FD

      static final int CMSG_LEN_FOR_FD
    • MSG_CONTROL_LEN_FOR_FD

      static final int MSG_CONTROL_LEN_FOR_FD
    • CMSG_OFFSETOF_CMSG_LEN

      static final int CMSG_OFFSETOF_CMSG_LEN
    • CMSG_OFFSETOF_CMSG_LEVEL

      static final int CMSG_OFFSETOF_CMSG_LEVEL
    • CMSG_OFFSETOF_CMSG_TYPE

      static final int CMSG_OFFSETOF_CMSG_TYPE
    • IO_URING_BUFFER_RING_TAIL

      static final int IO_URING_BUFFER_RING_TAIL
    • IOVEC_OFFSETOF_IOV_BASE

      static final int IOVEC_OFFSETOF_IOV_BASE
    • IOVEC_OFFSETOF_IOV_LEN

      static final int IOVEC_OFFSETOF_IOV_LEN
    • SIZEOF_MSGHDR

      static final int SIZEOF_MSGHDR
    • MSGHDR_OFFSETOF_MSG_NAME

      static final int MSGHDR_OFFSETOF_MSG_NAME
    • MSGHDR_OFFSETOF_MSG_NAMELEN

      static final int MSGHDR_OFFSETOF_MSG_NAMELEN
    • MSGHDR_OFFSETOF_MSG_IOV

      static final int MSGHDR_OFFSETOF_MSG_IOV
    • MSGHDR_OFFSETOF_MSG_IOVLEN

      static final int MSGHDR_OFFSETOF_MSG_IOVLEN
    • MSGHDR_OFFSETOF_MSG_CONTROL

      static final int MSGHDR_OFFSETOF_MSG_CONTROL
    • MSGHDR_OFFSETOF_MSG_CONTROLLEN

      static final int MSGHDR_OFFSETOF_MSG_CONTROLLEN
    • MSGHDR_OFFSETOF_MSG_FLAGS

      static final int MSGHDR_OFFSETOF_MSG_FLAGS
    • POLLIN

      static final int POLLIN
    • POLLOUT

      static final int POLLOUT
    • POLLRDHUP

      static final int POLLRDHUP
    • ERRNO_ECANCELED_NEGATIVE

      static final int ERRNO_ECANCELED_NEGATIVE
    • ERRNO_ETIME_NEGATIVE

      static final int ERRNO_ETIME_NEGATIVE
    • ERRNO_NOBUFS_NEGATIVE

      static final int ERRNO_NOBUFS_NEGATIVE
    • PAGE_SIZE

      static final int PAGE_SIZE
    • MAX_SKB_FRAGS

      static final int MAX_SKB_FRAGS
    • SIZEOF_IOURING_BUF

      static final int SIZEOF_IOURING_BUF
    • IOURING_BUFFER_OFFSETOF_ADDR

      static final int IOURING_BUFFER_OFFSETOF_ADDR
    • IOURING_BUFFER_OFFSETOF_LEN

      static final int IOURING_BUFFER_OFFSETOF_LEN
    • IOURING_BUFFER_OFFSETOF_BID

      static final int IOURING_BUFFER_OFFSETOF_BID
    • IORING_OP_NOP

      static final byte IORING_OP_NOP
      See Also:
    • IORING_OP_READV

      static final byte IORING_OP_READV
      See Also:
    • IORING_OP_WRITEV

      static final byte IORING_OP_WRITEV
      See Also:
    • IORING_OP_FSYNC

      static final byte IORING_OP_FSYNC
      See Also:
    • IORING_OP_READ_FIXED

      static final byte IORING_OP_READ_FIXED
      See Also:
    • IORING_OP_WRITE_FIXED

      static final byte IORING_OP_WRITE_FIXED
      See Also:
    • IORING_OP_POLL_ADD

      static final byte IORING_OP_POLL_ADD
      See Also:
    • IORING_OP_POLL_REMOVE

      static final byte IORING_OP_POLL_REMOVE
      See Also:
    • IORING_OP_SYNC_FILE_RANGE

      static final byte IORING_OP_SYNC_FILE_RANGE
      See Also:
    • IORING_OP_SENDMSG

      static final byte IORING_OP_SENDMSG
      See Also:
    • IORING_OP_RECVMSG

      static final byte IORING_OP_RECVMSG
      See Also:
    • IORING_OP_TIMEOUT

      static final byte IORING_OP_TIMEOUT
      See Also:
    • IORING_OP_TIMEOUT_REMOVE

      static final byte IORING_OP_TIMEOUT_REMOVE
      See Also:
    • IORING_OP_ACCEPT

      static final byte IORING_OP_ACCEPT
      See Also:
    • IORING_OP_ASYNC_CANCEL

      static final byte IORING_OP_ASYNC_CANCEL
      See Also:
    • IORING_OP_CONNECT

      static final byte IORING_OP_CONNECT
      See Also:
    • IORING_OP_FALLOCATE

      static final byte IORING_OP_FALLOCATE
      See Also:
    • IORING_OP_OPENAT

      static final byte IORING_OP_OPENAT
      See Also:
    • IORING_OP_CLOSE

      static final byte IORING_OP_CLOSE
      See Also:
    • IORING_OP_FILES_UPDATE

      static final byte IORING_OP_FILES_UPDATE
      See Also:
    • IORING_OP_STATX

      static final byte IORING_OP_STATX
      See Also:
    • IORING_OP_READ

      static final byte IORING_OP_READ
      See Also:
    • IORING_OP_WRITE

      static final byte IORING_OP_WRITE
      See Also:
    • IORING_OP_FADVISE

      static final byte IORING_OP_FADVISE
      See Also:
    • IORING_OP_MADVISE

      static final byte IORING_OP_MADVISE
      See Also:
    • IORING_OP_SEND

      static final byte IORING_OP_SEND
      See Also:
    • IORING_OP_RECV

      static final byte IORING_OP_RECV
      See Also:
    • IORING_OP_OPENAT2

      static final byte IORING_OP_OPENAT2
      See Also:
    • IORING_OP_EPOLL_CTL

      static final byte IORING_OP_EPOLL_CTL
      See Also:
    • IORING_OP_SPLICE

      static final byte IORING_OP_SPLICE
      See Also:
    • IORING_OP_PROVIDE_BUFFERS

      static final byte IORING_OP_PROVIDE_BUFFERS
      See Also:
    • IORING_OP_REMOVE_BUFFERS

      static final byte IORING_OP_REMOVE_BUFFERS
      See Also:
    • IORING_OP_TEE

      static final byte IORING_OP_TEE
      See Also:
    • IORING_OP_SHUTDOWN

      static final byte IORING_OP_SHUTDOWN
      See Also:
    • IORING_OP_RENAMEAT

      static final byte IORING_OP_RENAMEAT
      See Also:
    • IORING_OP_UNLINKAT

      static final byte IORING_OP_UNLINKAT
      See Also:
    • IORING_OP_MKDIRAT

      static final byte IORING_OP_MKDIRAT
      See Also:
    • IORING_OP_SYMLINKAT

      static final byte IORING_OP_SYMLINKAT
      See Also:
    • IORING_OP_LINKAT

      static final byte IORING_OP_LINKAT
      See Also:
    • IORING_OP_MSG_RING

      static final byte IORING_OP_MSG_RING
      See Also:
    • IORING_OP_FSETXATTR

      static final byte IORING_OP_FSETXATTR
      See Also:
    • IORING_OP_SETXATTR

      static final byte IORING_OP_SETXATTR
      See Also:
    • IORING_OP_FGETXATTR

      static final byte IORING_OP_FGETXATTR
      See Also:
    • IORING_OP_GETXATTR

      static final byte IORING_OP_GETXATTR
      See Also:
    • IORING_OP_SOCKET

      static final byte IORING_OP_SOCKET
      See Also:
    • IORING_OP_URING_CMD

      static final byte IORING_OP_URING_CMD
      See Also:
    • IORING_OP_SEND_ZC

      static final byte IORING_OP_SEND_ZC
      See Also:
    • IORING_OP_SENDMSG_ZC

      static final byte IORING_OP_SENDMSG_ZC
      See Also:
    • IORING_OP_READ_MULTISHOT

      static final byte IORING_OP_READ_MULTISHOT
      See Also:
    • IORING_OP_WAITID

      static final byte IORING_OP_WAITID
      See Also:
    • IORING_OP_FUTEX_WAIT

      static final byte IORING_OP_FUTEX_WAIT
      See Also:
    • IORING_OP_FUTEX_WAKE

      static final byte IORING_OP_FUTEX_WAKE
      See Also:
    • IORING_OP_FUTEX_WAITV

      static final byte IORING_OP_FUTEX_WAITV
      See Also:
    • IORING_OP_FIXED_FD_INSTALL

      static final byte IORING_OP_FIXED_FD_INSTALL
      See Also:
    • IORING_OP_FTRUNCATE

      static final byte IORING_OP_FTRUNCATE
      See Also:
    • IORING_OP_BIND

      static final byte IORING_OP_BIND
      See Also:
    • IORING_CQE_F_BUFFER

      static final int IORING_CQE_F_BUFFER
      See Also:
    • IORING_CQE_F_MORE

      static final int IORING_CQE_F_MORE
      See Also:
    • IORING_CQE_F_SOCK_NONEMPTY

      static final int IORING_CQE_F_SOCK_NONEMPTY
      See Also:
    • IORING_CQE_F_NOTIF

      static final int IORING_CQE_F_NOTIF
      See Also:
    • IORING_CQE_F_BUF_MORE

      static final int IORING_CQE_F_BUF_MORE
      See Also:
    • IORING_CQE_F_SKIP

      static final int IORING_CQE_F_SKIP
      See Also:
    • IORING_CQE_F_32

      static final int IORING_CQE_F_32
      See Also:
    • IORING_SETUP_CQSIZE

      static final int IORING_SETUP_CQSIZE
      See Also:
    • IORING_SETUP_CLAMP

      static final int IORING_SETUP_CLAMP
      See Also:
    • IORING_SETUP_R_DISABLED

      static final int IORING_SETUP_R_DISABLED
      See Also:
    • IORING_SETUP_SUBMIT_ALL

      static final int IORING_SETUP_SUBMIT_ALL
      See Also:
    • IORING_SETUP_CQE32

      static final int IORING_SETUP_CQE32
      See Also:
    • IORING_SETUP_TASKRUN_FLAG

      static final int IORING_SETUP_TASKRUN_FLAG
      See Also:
    • IORING_SETUP_SINGLE_ISSUER

      static final int IORING_SETUP_SINGLE_ISSUER
      See Also:
    • IORING_SETUP_DEFER_TASKRUN

      static final int IORING_SETUP_DEFER_TASKRUN
      See Also:
    • IORING_SETUP_NO_SQARRAY

      static final int IORING_SETUP_NO_SQARRAY
      See Also:
    • IORING_SETUP_CQE_MIXED

      static final int IORING_SETUP_CQE_MIXED
      See Also:
    • IORING_CQE_BUFFER_SHIFT

      static final int IORING_CQE_BUFFER_SHIFT
      See Also:
    • IORING_POLL_ADD_MULTI

      static final short IORING_POLL_ADD_MULTI
      See Also:
    • IORING_RECVSEND_POLL_FIRST

      static final short IORING_RECVSEND_POLL_FIRST
      See Also:
    • IORING_RECVSEND_BUNDLE

      static final short IORING_RECVSEND_BUNDLE
      See Also:
    • IORING_RECV_MULTISHOT

      static final short IORING_RECV_MULTISHOT
      See Also:
    • IORING_SEND_ZC_REPORT_USAGE

      static final short IORING_SEND_ZC_REPORT_USAGE
      See Also:
    • IORING_NOTIF_USAGE_ZC_COPIED

      static final int IORING_NOTIF_USAGE_ZC_COPIED
      See Also:
    • IORING_ACCEPT_MULTISHOT

      static final short IORING_ACCEPT_MULTISHOT
      See Also:
    • IORING_ACCEPT_DONTWAIT

      static final short IORING_ACCEPT_DONTWAIT
      See Also:
    • IORING_ACCEPT_POLL_FIRST

      static final short IORING_ACCEPT_POLL_FIRST
      See Also:
    • IORING_NOP_CQE32

      static final short IORING_NOP_CQE32
      See Also:
    • IORING_FEAT_NODROP

      static final int IORING_FEAT_NODROP
      See Also:
    • IORING_FEAT_SUBMIT_STABLE

      static final int IORING_FEAT_SUBMIT_STABLE
      See Also:
    • IORING_FEAT_RECVSEND_BUNDLE

      static final int IORING_FEAT_RECVSEND_BUNDLE
      See Also:
    • IORING_FEAT_NO_IOWAIT

      static final int IORING_FEAT_NO_IOWAIT
      See Also:
    • IORING_SQ_NEED_WAKEUP

      static final int IORING_SQ_NEED_WAKEUP
      See Also:
    • IORING_SQ_CQ_OVERFLOW

      static final int IORING_SQ_CQ_OVERFLOW
      See Also:
    • IORING_SQ_TASKRUN

      static final int IORING_SQ_TASKRUN
      See Also:
    • SPLICE_F_MOVE

      static final int SPLICE_F_MOVE
      See Also:
    • IOU_PBUF_RING_INC

      static final int IOU_PBUF_RING_INC
      See Also:
    • IO_URING_OP_SUPPORTED

      static final int IO_URING_OP_SUPPORTED
      See Also:
    • CQE_SIZE

      static final int CQE_SIZE
      See Also:
    • CQE32_SIZE

      static final int CQE32_SIZE
      See Also:
    • IORING_ENTER_GETEVENTS

      static final int IORING_ENTER_GETEVENTS
    • IORING_ENTER_REGISTERED_RING

      static final int IORING_ENTER_REGISTERED_RING
      See Also:
    • IORING_ENTER_NO_IOWAIT

      static final int IORING_ENTER_NO_IOWAIT
      See Also:
    • IOSQE_ASYNC

      static final int IOSQE_ASYNC
    • IOSQE_IO_DRAIN

      static final int IOSQE_IO_DRAIN
    • IOSQE_BUFFER_SELECT

      static final int IOSQE_BUFFER_SELECT
    • IOSQE_CQE_SKIP_SUCCESS

      static final int IOSQE_CQE_SKIP_SUCCESS
      See Also:
    • MSG_DONTWAIT

      static final int MSG_DONTWAIT
    • MSG_FASTOPEN

      static final int MSG_FASTOPEN
    • SOL_UDP

      static final int SOL_UDP
    • SOL_SOCKET

      static final int SOL_SOCKET
    • UDP_SEGMENT

      static final int UDP_SEGMENT
    • SCM_RIGHTS

      static final int SCM_RIGHTS
    • TFO_ENABLED_CLIENT_MASK

      private static final int TFO_ENABLED_CLIENT_MASK
      See Also:
    • TFO_ENABLED_SERVER_MASK

      private static final int TFO_ENABLED_SERVER_MASK
      See Also:
    • TCP_FASTOPEN_MODE

      private static final int TCP_FASTOPEN_MODE
    • IS_SUPPORTING_TCP_FASTOPEN_CLIENT

      static final boolean IS_SUPPORTING_TCP_FASTOPEN_CLIENT
      tcp_fastopen client mode enabled state.
    • IS_SUPPORTING_TCP_FASTOPEN_SERVER

      static final boolean IS_SUPPORTING_TCP_FASTOPEN_SERVER
      tcp_fastopen server mode enabled state.
    • REQUIRED_IORING_OPS

      private static final int[] REQUIRED_IORING_OPS
  • Constructor Details

    • Native

      private Native()
  • Method Details

    • opToStr

      static String opToStr(byte op)
    • setupFlags

      static int setupFlags(boolean useSingleIssuer)
    • createRingBuffer

      static RingBuffer createRingBuffer(int ringSize, int setupFlags)
    • createRingBuffer

      static RingBuffer createRingBuffer(int ringSize, int cqeSize, int setupFlags)
    • checkAllIOSupported

      static void checkAllIOSupported(Native.IoUringProbe probe)
    • isRecvMultishotSupported

      static boolean isRecvMultishotSupported()
    • isAcceptMultishotSupported

      static boolean isAcceptMultishotSupported(Native.IoUringProbe probe)
    • isCqeFSockNonEmptySupported

      static boolean isCqeFSockNonEmptySupported(Native.IoUringProbe probe)
    • isSpliceSupported

      static boolean isSpliceSupported(Native.IoUringProbe probe)
    • isPollAddMultiShotSupported

      static boolean isPollAddMultiShotSupported(Native.IoUringProbe probe)
    • isSendZcSupported

      static boolean isSendZcSupported(Native.IoUringProbe probe)
    • isSendmsgZcSupported

      static boolean isSendmsgZcSupported(Native.IoUringProbe probe)
    • isRegisterIoWqWorkerSupported

      static boolean isRegisterIoWqWorkerSupported(int ringFd)
      check current kernel version whether support io_uring_register_io_wq_worker Available since 5.15.
      Returns:
      true if support io_uring_register_io_wq_worker
    • isRegisterBufferRingSupported

      static boolean isRegisterBufferRingSupported(int ringFd, int flags)
    • checkKernelVersion

      static void checkKernelVersion(String kernelVersion)
    • checkKernelVersion

      private static boolean checkKernelVersion(String kernelVersion, int major, int minor)
    • ioUringProbe

      static boolean ioUringProbe(Native.IoUringProbe probe, int[] ops)
    • ioUringSetupSupportsFlags

      static boolean ioUringSetupSupportsFlags(int setupFlags)
    • isUnixDomainSocketInqSupported

      static boolean isUnixDomainSocketInqSupported()
    • ioUringSetup

      private static long[] ioUringSetup(int entries, int cqeSize, int setupFlags)
    • ioUringProbe

      static Native.IoUringProbe ioUringProbe(int ringfd)
    • ioUringProbe0

      private static int[] ioUringProbe0(int ringFd)
    • ioUringRegisterIoWqMaxWorkers

      static int ioUringRegisterIoWqMaxWorkers(int ringFd, int maxBoundedValue, int maxUnboundedValue)
    • ioUringRegisterEnableRings

      static int ioUringRegisterEnableRings(int ringFd)
    • ioUringRegisterRingFds

      static int ioUringRegisterRingFds(int ringFds)
    • ioUringRegisterBufRing

      static long ioUringRegisterBufRing(int ringFd, int entries, short bufferGroup, int flags)
    • ioUringUnRegisterBufRing

      static int ioUringUnRegisterBufRing(int ringFd, long ioUringBufRingAddr, int entries, short bufferGroupId)
    • ioUringBufRingSize

      static int ioUringBufRingSize(int entries)
    • ioUringEnter

      static int ioUringEnter(int ringFd, int toSubmit, int minComplete, int flags)
    • eventFdWrite

      static void eventFdWrite(int fd, long value)
    • getFd

      static int getFd(DefaultFileRegion fileChannel)
    • getFd0

      private static int getFd0(Object fileChannel)
    • newBlockingEventFd

      static FileDescriptor newBlockingEventFd()
    • ioUringExit

      static void ioUringExit(long submissionQueueArrayAddress, int submissionQueueRingEntries, long submissionQueueRingAddress, int submissionQueueRingSize, long completionQueueRingAddress, int completionQueueRingSize, int ringFd, int enterRingFd)
    • blockingEventFd

      private static int blockingEventFd()
    • createFile

      static int createFile(String name)
    • registerUnix

      private static int registerUnix()
    • cmsghdrData

      static long cmsghdrData(long hdrAddr)
    • kernelVersion

      static String kernelVersion()
    • loadNativeLibrary

      private static void loadNativeLibrary()