5 #include <netinet/in.h>
9 #define UNUSED(x) (void)x
13 #define INPORT_ANY (uint16_t)0
16 typedef unsigned char byte;
74 #define APP_NAME_LEN 40
89 #define MOS_APP_ARGC 20
101 struct conn_filter *
cf;
119 void (*
run)(mctx_t mctx,
void **app_ctx);
224 int optname,
void *optval, socklen_t *optlen);
253 int optname,
const void *optval, socklen_t optlen);
278 mtcp_ioctl(mctx_t mctx,
int sock,
int request,
void *argp);
292 mtcp_socket(mctx_t mctx,
int domain,
int type,
int protocol);
299 const struct sockaddr *addr, socklen_t addrlen);
317 mtcp_accept(mctx_t mctx,
int sock,
struct sockaddr *addr, socklen_t *addrlen);
330 mtcp_init_rss(mctx_t mctx, in_addr_t saddr_base,
int num_addr,
331 in_addr_t daddr, in_addr_t dport);
338 const struct sockaddr *addr, socklen_t addrlen);
358 mtcp_read(mctx_t mctx,
int sock,
char *buf,
size_t len);
365 mtcp_readv(mctx_t mctx,
int sock,
struct iovec *iov,
int numIOV);
371 mtcp_write(mctx_t mctx,
int sock,
char *buf,
size_t len);
378 mtcp_writev(mctx_t mctx,
int sock,
struct iovec *iov,
int numIOV);
int mtcp_core_affinitize(int cpu)
Bind a thread to a specific CPU core.
struct conn_filter * cf
Definition: mtcp_api.h:101
int mtcp_close(mctx_t mctx, int sock)
Close flow, same as close()
regular mTCP connection socket
Definition: mtcp_api.h:51
unused
Definition: mtcp_api.h:37
int mtcp_accept(mctx_t mctx, int sock, struct sockaddr *addr, socklen_t *addrlen)
Accept new flow, same as accept()
#define MOS_APP
Maximum concurrently runable application.
Definition: mtcp_api.h:76
mtcp_sighandler_t mtcp_register_signal(int signum, mtcp_sighandler_t handler)
Register signal handler (mtcp_sighandler_t handler ) for int signum.
socket_type
Socket types.
Definition: mtcp_api.h:34
ssize_t mtcp_writev(mctx_t mctx, int sock, struct iovec *iov, int numIOV)
Write byte stream to flow in vector, same as writev()
void(* app_init)(int argc, char **argv)
Initialization function which is called for only once per each application.
Definition: mtcp_api.h:114
Definition: mtcp_api.h:97
int tcp_timewait
time wait time in sec
Definition: mtcp_api.h:86
mctx_t mtcp_create_context(int cpu)
Create mOS/mtcp context thread based on the parameters passed by mtcp_init() & mtcp_setconf() functio...
mctx_t mctx
mTCP context
Definition: mtcp_api.h:99
int max_num_buffers
number of socket buffers
Definition: mtcp_api.h:82
MOS monitor socket listening socket.
Definition: mtcp_api.h:46
int mtcp_init_rss(mctx_t mctx, in_addr_t saddr_base, int num_addr, in_addr_t daddr, in_addr_t dport)
Initialize RSS pool for decide appropriate port numbers.
int mtcp_init(const char *config_file)
Initialize mOS context with parameters mentioned in the config file.
int ep_id
Definition: mtcp_api.h:102
int mtcp_listen(mctx_t mctx, int sock, int backlog)
Listen a listening socket, same as listen()
regular mTCP connection listen socket
Definition: mtcp_api.h:41
MOS proxy socket.
Definition: mtcp_api.h:54
int mtcp_destroy()
Destroy the global mOS context.
struct mtcp_context * mctx_t
Definition: mtcp_api.h:28
uint64_t cpu_mask
Definition: mtcp_api.h:80
int sndbuf_size
size of send buffer
Definition: mtcp_api.h:84
char * app_argv[MOS_APP][MOS_APP_ARGC]
Definition: mtcp_api.h:91
int tcp_timeout
timeout in sec, -1 for not to check timeout
Definition: mtcp_api.h:87
uint64_t app_cpu_mask[MOS_APP]
Definition: mtcp_api.h:90
void(* run)(mctx_t mctx, void **app_ctx)
Function contains code which will be executed after initialization phase.
Definition: mtcp_api.h:119
Definition: mtcp_api.h:61
int rcvbuf_size
size of receive buffer
Definition: mtcp_api.h:83
int mtcp_setconf(const struct mtcp_conf *conf)
Update mOS base with parameters mentioned in *conf.
ssize_t mtcp_readv(mctx_t mctx, int sock, struct iovec *iov, int numIOV)
Read byte stream from flow in vector, same as readv()
#define MOS_APP_ARGC
Definition: mtcp_api.h:89
int mtcp_destroy_context(mctx_t mctx)
Destory mtcp context that was created by mOS/mTCP thread.
MOS monitor socket (raw, stateless)
Definition: mtcp_api.h:58
int mtcp_bind(mctx_t mctx, int sock, const struct sockaddr *addr, socklen_t addrlen)
Bind a socket, same as bind()
MOS monitor socket.
Definition: mtcp_api.h:56
ssize_t mtcp_read(mctx_t mctx, int sock, char *buf, size_t len)
Read byte stream from flow, same as read()
MOS proxy socket listening socket.
Definition: mtcp_api.h:44
int num_cores
number of cores to use
Definition: mtcp_api.h:78
Definition: mtcp_api.h:110
void(* mtcp_sighandler_t)(int)
mTCP signal handler type
Definition: mtcp_api.h:31
uint32_t mtcp_get_connection_cnt(mctx_t mctx)
Get concurrent flow count of the underlying mtcp manager context (per-thread)
int mtcp_abort(mctx_t mctx, int sock)
Abort flow by sending RST.
int mtcp_ioctl(mctx_t mctx, int sock, int request, void *argp)
Control socket.
int mtcp_connect(mctx_t mctx, int sock, const struct sockaddr *addr, socklen_t addrlen)
Connect new flow, same as connect()
int max_concurrency
number of concurrent flows per core
Definition: mtcp_api.h:79
int mtcp_pipe(mctx_t mctx, int pipeid[2])
Create pipe.
ssize_t mtcp_write(mctx_t mctx, int sock, char *buf, size_t len)
Write byte stream to flow, same as write()
int mtcp_getsockopt(mctx_t mctx, int sock, int level, int optname, void *optval, socklen_t *optlen)
Get socket options.
int mtcp_getconf(struct mtcp_conf *conf)
Load current mtcp configuration in *conf.
mTCP context
Definition: mtcp_api.h:23
int num_app
number of registered apps
Definition: mtcp_api.h:93
int socket_id
listing socket ID
Definition: mtcp_api.h:100
Definition: mtcp_api.h:63
int mtcp_setsockopt(mctx_t mctx, int sock, int level, int optname, const void *optval, socklen_t optlen)
Set socket options.
int cpu
Definition: mtcp_api.h:25
int app_argc[MOS_APP]
Definition: mtcp_api.h:92
int mtcp_socket(mctx_t mctx, int domain, int type, int protocol)
Create a socket.
unsigned char byte
Definition: mtcp_api.h:16
Definition: mtcp_api.h:71
int mtcp_setsock_nonblock(mctx_t mctx, int sock)
Set socket as nonblock.
void(* thread_init)(mctx_t mctx, void **app_ctx)
Initialization function which is called for each CPU core.
Definition: mtcp_api.h:116