XLIO
The NVIDIA® Accelerated IO
xlio.h File Reference

XLIO Ultra API and POSIX socket API. More...

#include <fcntl.h>
#include <poll.h>
#include <sched.h>
#include <signal.h>
#include <stdint.h>
#include <sys/epoll.h>
#include <sys/stat.h>
#include <sys/time.h>
#include "xlio_types.h"

Go to the source code of this file.

Functions

int xlio_socket (int __domain, int __type, int __protocol)
 
int xlio_close (int __fd)
 
int xlio_shutdown (int __fd, int __how)
 
int xlio_listen (int __fd, int backlog)
 
int xlio_accept (int __fd, struct sockaddr *__addr, socklen_t *__addrlen)
 
int xlio_accept4 (int __fd, struct sockaddr *__addr, socklen_t *__addrlen, int __flags)
 
int xlio_bind (int __fd, const struct sockaddr *__addr, socklen_t __addrlen)
 
int xlio_connect (int __fd, const struct sockaddr *__to, socklen_t __tolen)
 
int xlio_setsockopt (int __fd, int __level, int __optname, __const void *__optval, socklen_t __optlen)
 
int xlio_getsockopt (int __fd, int __level, int __optname, void *__optval, socklen_t *__optlen)
 
int xlio_fcntl (int __fd, int __cmd,...)
 
int xlio_fcntl64 (int __fd, int __cmd,...)
 
int xlio_getsockname (int __fd, struct sockaddr *__name, socklen_t *__namelen)
 
int xlio_getpeername (int __fd, struct sockaddr *__name, socklen_t *__namelen)
 
ssize_t xlio_read (int __fd, void *__buf, size_t __nbytes)
 
ssize_t xlio_readv (int __fd, const struct iovec *iov, int iovcnt)
 
ssize_t xlio_recv (int __fd, void *__buf, size_t __nbytes, int __flags)
 
ssize_t xlio_recvmsg (int __fd, struct msghdr *__msg, int __flags)
 
int xlio_recvmmsg (int __fd, struct mmsghdr *__mmsghdr, unsigned int __vlen, int __flags, const struct timespec *__timeout)
 
ssize_t xlio_recvfrom (int __fd, void *__buf, size_t __nbytes, int __flags, struct sockaddr *__from, socklen_t *__fromlen)
 
ssize_t xlio_write (int __fd, __const void *__buf, size_t __nbytes)
 
ssize_t xlio_writev (int __fd, const struct iovec *iov, int iovcnt)
 
ssize_t xlio_send (int __fd, __const void *__buf, size_t __nbytes, int __flags)
 
ssize_t xlio_sendmsg (int __fd, __const struct msghdr *__msg, int __flags)
 
int xlio_sendmmsg (int __fd, struct mmsghdr *__mmsghdr, unsigned int __vlen, int __flags)
 
ssize_t xlio_sendto (int __fd, __const void *__buf, size_t __nbytes, int __flags, const struct sockaddr *__to, socklen_t __tolen)
 
ssize_t xlio_sendfile (int out_fd, int in_fd, off_t *offset, size_t count)
 
ssize_t xlio_sendfile64 (int out_fd, int in_fd, __off64_t *offset, size_t count)
 
int xlio_select (int __nfds, fd_set *__readfds, fd_set *__writefds, fd_set *__exceptfds, struct timeval *__timeout)
 
int xlio_pselect (int __nfds, fd_set *__readfds, fd_set *__writefds, fd_set *__errorfds, const struct timespec *__timeout, const sigset_t *__sigmask)
 
int xlio_poll (struct pollfd *__fds, nfds_t __nfds, int __timeout)
 
int xlio_ppoll (struct pollfd *__fds, nfds_t __nfds, const struct timespec *__timeout, const sigset_t *__sigmask)
 
int xlio_epoll_create (int __size)
 
int xlio_epoll_create1 (int __flags)
 
int xlio_epoll_ctl (int __epfd, int __op, int __fd, struct epoll_event *__event)
 
int xlio_epoll_wait (int __epfd, struct epoll_event *__events, int __maxevents, int __timeout)
 
int xlio_epoll_pwait (int __epfd, struct epoll_event *__events, int __maxevents, int __timeout, const sigset_t *__sigmask)
 
int xlio_socketpair (int __domain, int __type, int __protocol, int __sv[2])
 
int xlio_pipe (int __filedes[2])
 
int xlio_open (__const char *__file, int __oflag,...)
 
int xlio_creat (const char *__pathname, mode_t __mode)
 
int xlio_dup (int __fd)
 
int xlio_dup2 (int __fd, int __fd2)
 
int xlio_add_conf_rule (const char *config_line)
 
int xlio_thread_offload (int offload, pthread_t tid)
 
int xlio_dump_fd_stats (int fd, int log_level)
 
int xlio_register_recv_callback (int s, xlio_recv_callback_t callback, void *context)
 
int xlio_init_ex (const struct xlio_init_attr *attr)
 Initialize the XLIO Ultra API. More...
 
int xlio_init (void)
 Initialize XLIO. More...
 
int xlio_exit (void)
 Finalize XLIO. More...
 
int xlio_poll_group_create (const struct xlio_poll_group_attr *attr, xlio_poll_group_t *group_out)
 Create a new polling group. More...
 
int xlio_poll_group_destroy (xlio_poll_group_t group)
 Destroy a polling group. More...
 
int xlio_poll_group_update (xlio_poll_group_t group, const struct xlio_poll_group_attr *attr)
 Update polling group attributes. More...
 
void xlio_poll_group_poll (xlio_poll_group_t group)
 Poll for events on a polling group. More...
 
int xlio_socket_create (const struct xlio_socket_attr *attr, xlio_socket_t *sock_out)
 Create a new XLIO socket. More...
 
int xlio_socket_destroy (xlio_socket_t sock)
 Destroy an XLIO socket. More...
 
int xlio_socket_update (xlio_socket_t sock, unsigned flags, uintptr_t userdata_sq)
 Update socket attributes. More...
 
int xlio_socket_setsockopt (xlio_socket_t sock, int level, int optname, const void *optval, socklen_t optlen)
 Set socket options. More...
 
int xlio_socket_getsockname (xlio_socket_t sock, struct sockaddr *addr, socklen_t *addrlen)
 Get socket name. More...
 
int xlio_socket_getpeername (xlio_socket_t sock, struct sockaddr *addr, socklen_t *addrlen)
 Get peer name. More...
 
int xlio_socket_bind (xlio_socket_t sock, const struct sockaddr *addr, socklen_t addrlen)
 Bind socket to address. More...
 
int xlio_socket_connect (xlio_socket_t sock, const struct sockaddr *to, socklen_t tolen)
 Connect socket to remote address. More...
 
int xlio_socket_listen (xlio_socket_t sock)
 Listen for incoming connections. More...
 
struct ibv_pd * xlio_socket_get_pd (xlio_socket_t sock)
 Get InfiniBand protection domain. More...
 
int xlio_socket_detach_group (xlio_socket_t sock)
 Detach socket from polling group. More...
 
int xlio_socket_attach_group (xlio_socket_t sock, xlio_poll_group_t group)
 Attach socket to polling group. More...
 
int xlio_socket_send (xlio_socket_t sock, const void *data, size_t len, const struct xlio_socket_send_attr *attr)
 Send data on a socket. More...
 
int xlio_socket_sendv (xlio_socket_t sock, const struct iovec *iov, unsigned iovcnt, const struct xlio_socket_send_attr *attr)
 Send vectored data on a socket. More...
 
void xlio_poll_group_flush (xlio_poll_group_t group)
 Flush all dirty sockets in a polling group. More...
 
void xlio_socket_flush (xlio_socket_t sock)
 Flush pending data on a socket. More...
 
void xlio_socket_buf_free (xlio_socket_t sock, struct xlio_buf *buf)
 Free a receive buffer (socket-specific) More...
 
void xlio_poll_group_buf_free (xlio_poll_group_t group, struct xlio_buf *buf)
 Free a receive buffer (group-specific) More...
 

Detailed Description

XLIO Ultra API and POSIX socket API.

This file provides the XLIO Ultra API for high-performance zero-copy networking, as well as the POSIX socket API implementation.