sync cleancode: refactor sys_now and lwip_ioctl
(cherry picked from commit 70e830bfafc64b7d2764ab0b54c3f75c5db92853)
This commit is contained in:
parent
344de8633e
commit
101431f1d0
280
0216-cleancode-refactor-lwipsock.h.patch
Normal file
280
0216-cleancode-refactor-lwipsock.h.patch
Normal file
@ -0,0 +1,280 @@
|
||||
From 2f7ca29c8b7a93079a5579062fc6751a6be6fd0c Mon Sep 17 00:00:00 2001
|
||||
From: Lemmy Huang <huangliming5@huawei.com>
|
||||
Date: Wed, 10 Jul 2024 11:08:07 +0800
|
||||
Subject: [PATCH] cleancode: refactor lwipsock.h
|
||||
|
||||
Signed-off-by: Lemmy Huang <huangliming5@huawei.com>
|
||||
---
|
||||
src/lstack/api/lstack_rtc_api.c | 7 +---
|
||||
src/lstack/api/lstack_wrap.c | 11 ++++--
|
||||
src/lstack/core/lstack_init.c | 3 --
|
||||
src/lstack/core/lstack_lwip.c | 45 ++++++++-----------------
|
||||
src/lstack/core/lstack_protocol_stack.c | 26 ++++----------
|
||||
src/lstack/include/lstack_lwip.h | 7 ++--
|
||||
6 files changed, 33 insertions(+), 66 deletions(-)
|
||||
|
||||
diff --git a/src/lstack/api/lstack_rtc_api.c b/src/lstack/api/lstack_rtc_api.c
|
||||
index e77edec..57ff89f 100644
|
||||
--- a/src/lstack/api/lstack_rtc_api.c
|
||||
+++ b/src/lstack/api/lstack_rtc_api.c
|
||||
@@ -68,12 +68,7 @@ int rtc_close(int s)
|
||||
return lstack_epoll_close(s);
|
||||
}
|
||||
|
||||
- lwip_close(s);
|
||||
- if (sock != NULL) {
|
||||
- list_del_node_null(&sock->event_list);
|
||||
- }
|
||||
-
|
||||
- return posix_api->close_fn(s);
|
||||
+ return lwip_close(s);
|
||||
}
|
||||
|
||||
int rtc_shutdown(int fd, int how)
|
||||
diff --git a/src/lstack/api/lstack_wrap.c b/src/lstack/api/lstack_wrap.c
|
||||
index cf0d302..16fc876 100644
|
||||
--- a/src/lstack/api/lstack_wrap.c
|
||||
+++ b/src/lstack/api/lstack_wrap.c
|
||||
@@ -175,6 +175,8 @@ static inline int32_t do_accept(int32_t s, struct sockaddr *addr, socklen_t *add
|
||||
|
||||
int32_t fd = g_wrap_api->accept_fn(s, addr, addrlen);
|
||||
if (fd >= 0) {
|
||||
+ struct lwip_sock *sock = get_socket(fd);
|
||||
+ SET_CONN_TYPE_LIBOS(sock->conn);
|
||||
return fd;
|
||||
}
|
||||
|
||||
@@ -193,6 +195,8 @@ static int32_t do_accept4(int32_t s, struct sockaddr *addr, socklen_t *addrlen,
|
||||
|
||||
int32_t fd = g_wrap_api->accept4_fn(s, addr, addrlen, flags);
|
||||
if (fd >= 0) {
|
||||
+ struct lwip_sock *sock = get_socket(fd);
|
||||
+ SET_CONN_TYPE_LIBOS(sock->conn);
|
||||
return fd;
|
||||
}
|
||||
|
||||
@@ -452,10 +456,11 @@ static inline int32_t do_socket(int32_t domain, int32_t type, int32_t protocol)
|
||||
}
|
||||
|
||||
ret = g_wrap_api->socket_fn(domain, type, protocol);
|
||||
- /* if udp_enable = 1 in lstack.conf, udp protocol must be in user path currently */
|
||||
- if ((ret >= 0) && (type & SOCK_DGRAM)) {
|
||||
+ if (ret >= 0) {
|
||||
struct lwip_sock *sock = get_socket(ret);
|
||||
- if (sock != NULL && sock->conn != NULL) {
|
||||
+ SET_CONN_TYPE_LIBOS_OR_HOST(sock->conn);
|
||||
+ /* if udp_enable = 1 in lstack.conf, udp protocol must be in user path currently */
|
||||
+ if (type & SOCK_DGRAM) {
|
||||
SET_CONN_TYPE_LIBOS(sock->conn);
|
||||
}
|
||||
}
|
||||
diff --git a/src/lstack/core/lstack_init.c b/src/lstack/core/lstack_init.c
|
||||
index a5a4a4e..1b3882e 100644
|
||||
--- a/src/lstack/core/lstack_init.c
|
||||
+++ b/src/lstack/core/lstack_init.c
|
||||
@@ -313,9 +313,6 @@ __attribute__((constructor)) void gazelle_network_init(void)
|
||||
}
|
||||
}
|
||||
|
||||
- /* lwip initialization */
|
||||
- lwip_sock_init();
|
||||
-
|
||||
#if RTE_VERSION < RTE_VERSION_NUM(23, 11, 0, 0)
|
||||
if (get_global_cfg_params()->kni_switch) {
|
||||
set_kni_ip_mac();
|
||||
diff --git a/src/lstack/core/lstack_lwip.c b/src/lstack/core/lstack_lwip.c
|
||||
index 75ef5f6..6fe4055 100644
|
||||
--- a/src/lstack/core/lstack_lwip.c
|
||||
+++ b/src/lstack/core/lstack_lwip.c
|
||||
@@ -144,12 +144,12 @@ static bool replenish_send_idlembuf(struct protocol_stack *stack, struct lwip_so
|
||||
return false;
|
||||
}
|
||||
|
||||
-void do_lwip_init_sock(int32_t fd)
|
||||
+int do_lwip_init_sock(int32_t fd)
|
||||
{
|
||||
struct protocol_stack *stack = get_protocol_stack();
|
||||
- struct lwip_sock *sock = get_socket(fd);
|
||||
+ struct lwip_sock *sock = get_socket_by_fd(fd);
|
||||
if (sock == NULL) {
|
||||
- return;
|
||||
+ return -1;
|
||||
}
|
||||
|
||||
reset_sock_data(sock);
|
||||
@@ -157,7 +157,7 @@ void do_lwip_init_sock(int32_t fd)
|
||||
sock->recv_ring = gazelle_ring_create_fast("sock_recv", SOCK_RECV_RING_SIZE, RING_F_SP_ENQ | RING_F_SC_DEQ);
|
||||
if (sock->recv_ring == NULL) {
|
||||
LSTACK_LOG(ERR, LSTACK, "sock_recv create failed. errno: %d.\n", rte_errno);
|
||||
- return;
|
||||
+ return -1;
|
||||
}
|
||||
|
||||
sock->send_ring = gazelle_ring_create_fast("sock_send",
|
||||
@@ -166,7 +166,7 @@ void do_lwip_init_sock(int32_t fd)
|
||||
if (sock->send_ring == NULL) {
|
||||
gazelle_ring_free_fast(sock->recv_ring);
|
||||
LSTACK_LOG(ERR, LSTACK, "sock_send create failed. errno: %d.\n", rte_errno);
|
||||
- return;
|
||||
+ return -1;
|
||||
}
|
||||
(void)replenish_send_idlembuf(stack, sock);
|
||||
|
||||
@@ -174,6 +174,7 @@ void do_lwip_init_sock(int32_t fd)
|
||||
|
||||
init_list_node_null(&sock->recv_list);
|
||||
init_list_node_null(&sock->event_list);
|
||||
+ return 0;
|
||||
}
|
||||
|
||||
void do_lwip_clean_sock(int fd)
|
||||
@@ -1237,32 +1238,6 @@ void do_lwip_clone_sockopt(struct lwip_sock *dst_sock, struct lwip_sock *src_soc
|
||||
}
|
||||
}
|
||||
|
||||
-int do_lwip_close(int fd)
|
||||
-{
|
||||
- int ret = lwip_close(fd);
|
||||
- do_lwip_clean_sock(fd);
|
||||
- posix_api->close_fn(fd);
|
||||
- return ret;
|
||||
-}
|
||||
-
|
||||
-int do_lwip_socket(int domain, int type, int protocol)
|
||||
-{
|
||||
- int32_t fd = lwip_socket(domain, type, 0);
|
||||
- if (fd < 0) {
|
||||
- return fd;
|
||||
- }
|
||||
-
|
||||
- do_lwip_init_sock(fd);
|
||||
-
|
||||
- struct lwip_sock *sock = get_socket(fd);
|
||||
- if (sock == NULL || sock->stack == NULL) {
|
||||
- do_lwip_close(fd);
|
||||
- return -1;
|
||||
- }
|
||||
-
|
||||
- return fd;
|
||||
-}
|
||||
-
|
||||
uint32_t do_lwip_get_conntable(struct gazelle_stat_lstack_conn_info *conn,
|
||||
uint32_t max_num)
|
||||
{
|
||||
@@ -1583,3 +1558,11 @@ err_t find_same_node_ring(struct tcp_pcb *npcb)
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
+
|
||||
+unsigned same_node_ring_count(struct lwip_sock *sock)
|
||||
+{
|
||||
+ const unsigned long long cur_begin = __atomic_load_n(&sock->same_node_rx_ring->sndbegin, __ATOMIC_RELAXED);
|
||||
+ const unsigned long long cur_end = __atomic_load_n(&sock->same_node_rx_ring->sndend, __ATOMIC_RELAXED);
|
||||
+
|
||||
+ return cur_end - cur_begin;
|
||||
+}
|
||||
diff --git a/src/lstack/core/lstack_protocol_stack.c b/src/lstack/core/lstack_protocol_stack.c
|
||||
index d8bdd3c..c6075d5 100644
|
||||
--- a/src/lstack/core/lstack_protocol_stack.c
|
||||
+++ b/src/lstack/core/lstack_protocol_stack.c
|
||||
@@ -424,11 +424,6 @@ static struct protocol_stack *stack_thread_init(void *arg)
|
||||
}
|
||||
RTE_PER_LCORE(_lcore_id) = stack->cpu_id;
|
||||
|
||||
- if (hugepage_init() != 0) {
|
||||
- LSTACK_LOG(ERR, LSTACK, "hugepage init failed\n");
|
||||
- goto END;
|
||||
- }
|
||||
-
|
||||
tcpip_init(NULL, NULL);
|
||||
|
||||
if (use_ltran()) {
|
||||
@@ -714,12 +709,9 @@ void stack_arp(struct rpc_msg *msg)
|
||||
|
||||
void stack_socket(struct rpc_msg *msg)
|
||||
{
|
||||
- msg->result = do_lwip_socket(msg->args[MSG_ARG_0].i, msg->args[MSG_ARG_1].i, msg->args[MSG_ARG_2].i);
|
||||
+ msg->result = lwip_socket(msg->args[MSG_ARG_0].i, msg->args[MSG_ARG_1].i, msg->args[MSG_ARG_2].i);
|
||||
if (msg->result < 0) {
|
||||
- msg->result = do_lwip_socket(msg->args[MSG_ARG_0].i, msg->args[MSG_ARG_1].i, msg->args[MSG_ARG_2].i);
|
||||
- if (msg->result < 0) {
|
||||
- LSTACK_LOG(ERR, LSTACK, "tid %ld, %ld socket failed\n", get_stack_tid(), msg->result);
|
||||
- }
|
||||
+ LSTACK_LOG(ERR, LSTACK, "tid %ld, %ld socket failed\n", get_stack_tid(), msg->result);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -735,7 +727,7 @@ void stack_close(struct rpc_msg *msg)
|
||||
return;
|
||||
}
|
||||
|
||||
- msg->result = do_lwip_close(fd);
|
||||
+ msg->result = lwip_close(fd);
|
||||
if (msg->result != 0) {
|
||||
LSTACK_LOG(ERR, LSTACK, "tid %ld, fd %d failed %ld\n", get_stack_tid(), msg->args[MSG_ARG_0].i, msg->result);
|
||||
}
|
||||
@@ -803,7 +795,7 @@ void stack_accept(struct rpc_msg *msg)
|
||||
|
||||
struct lwip_sock *sock = get_socket(accept_fd);
|
||||
if (sock == NULL || sock->stack == NULL) {
|
||||
- do_lwip_close(accept_fd);
|
||||
+ lwip_close(accept_fd);
|
||||
LSTACK_LOG(ERR, LSTACK, "fd %d ret %d\n", fd, accept_fd);
|
||||
return;
|
||||
}
|
||||
@@ -1046,12 +1038,8 @@ void stack_create_shadow_fd(struct rpc_msg *msg)
|
||||
}
|
||||
|
||||
int domain = addr->sa_family;
|
||||
- if (NETCONN_IS_UDP(sock)) {
|
||||
- clone_fd = do_lwip_socket(domain, SOCK_DGRAM, 0);
|
||||
- } else {
|
||||
- clone_fd = do_lwip_socket(domain, SOCK_STREAM, 0);
|
||||
- }
|
||||
-
|
||||
+ int type = NETCONN_IS_UDP(sock) ? SOCK_DGRAM : SOCK_STREAM;
|
||||
+ clone_fd = lwip_socket(domain, type, 0);
|
||||
if (clone_fd < 0) {
|
||||
LSTACK_LOG(ERR, LSTACK, "clone socket failed clone_fd=%d errno=%d\n", clone_fd, errno);
|
||||
msg->result = clone_fd;
|
||||
@@ -1370,7 +1358,7 @@ static void stack_all_fds_close(void)
|
||||
for (int i = 3; i < GAZELLE_MAX_CLIENTS + GAZELLE_RESERVED_CLIENTS; i++) {
|
||||
struct lwip_sock *sock = get_socket(i);
|
||||
if (sock && sock->stack == get_protocol_stack()) {
|
||||
- do_lwip_close(i);
|
||||
+ lwip_close(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
diff --git a/src/lstack/include/lstack_lwip.h b/src/lstack/include/lstack_lwip.h
|
||||
index 0b952ec..b972f11 100644
|
||||
--- a/src/lstack/include/lstack_lwip.h
|
||||
+++ b/src/lstack/include/lstack_lwip.h
|
||||
@@ -16,21 +16,20 @@
|
||||
|
||||
#include "common/gazelle_dfx_msg.h"
|
||||
|
||||
+struct lwip_sock;
|
||||
+unsigned same_node_ring_count(struct lwip_sock *sock);
|
||||
+
|
||||
#define NETCONN_IS_ACCEPTIN(sock) (((sock)->conn->acceptmbox != NULL) && !sys_mbox_empty((sock)->conn->acceptmbox))
|
||||
#define NETCONN_IS_DATAIN(sock) ((gazelle_ring_readable_count((sock)->recv_ring) || (sock)->recv_lastdata) || (sock->same_node_rx_ring != NULL && same_node_ring_count(sock)))
|
||||
#define NETCONN_IS_DATAOUT(sock) (gazelle_ring_readover_count((sock)->send_ring) || (sock)->send_pre_del)
|
||||
#define NETCONN_IS_OUTIDLE(sock) gazelle_ring_readable_count((sock)->send_ring)
|
||||
#define NETCONN_IS_UDP(sock) (NETCONNTYPE_GROUP(netconn_type((sock)->conn)) == NETCONN_UDP)
|
||||
|
||||
-struct lwip_sock;
|
||||
struct rte_mempool;
|
||||
struct rpc_msg;
|
||||
struct rte_mbuf;
|
||||
struct protocol_stack;
|
||||
|
||||
-int do_lwip_socket(int domain, int type, int protocol);
|
||||
-int do_lwip_close(int32_t fd);
|
||||
-void do_lwip_init_sock(int32_t fd);
|
||||
void do_lwip_clone_sockopt(struct lwip_sock *dst_sock, struct lwip_sock *src_sock);
|
||||
|
||||
struct pbuf *do_lwip_tcp_get_from_sendring(struct lwip_sock *sock, uint16_t remain_size);
|
||||
--
|
||||
2.33.0
|
||||
|
||||
1047
0217-cleancode-refactor-posix-type-and-get_socket.patch
Normal file
1047
0217-cleancode-refactor-posix-type-and-get_socket.patch
Normal file
File diff suppressed because it is too large
Load Diff
198
0218-fix-some-error-of-NULL-pointer.patch
Normal file
198
0218-fix-some-error-of-NULL-pointer.patch
Normal file
@ -0,0 +1,198 @@
|
||||
From da10c78f9fa9b865ccc1a780a77f405dc093d04a Mon Sep 17 00:00:00 2001
|
||||
From: yinbin <yinbin8@huawei.com>
|
||||
Date: Mon, 15 Jul 2024 15:27:53 +0800
|
||||
Subject: [PATCH] fix some error of NULL pointer
|
||||
|
||||
---
|
||||
src/lstack/api/lstack_epoll.c | 23 ++++++++++++++++++-----
|
||||
src/lstack/core/lstack_lwip.c | 15 ++++++++-------
|
||||
src/lstack/core/lstack_port_map.c | 2 +-
|
||||
src/lstack/core/lstack_protocol_stack.c | 2 +-
|
||||
src/lstack/netif/lstack_ethdev.c | 8 ++++++--
|
||||
src/lstack/netif/lstack_tx_cache.c | 1 +
|
||||
6 files changed, 35 insertions(+), 16 deletions(-)
|
||||
|
||||
diff --git a/src/lstack/api/lstack_epoll.c b/src/lstack/api/lstack_epoll.c
|
||||
index 7d00de7..566443e 100644
|
||||
--- a/src/lstack/api/lstack_epoll.c
|
||||
+++ b/src/lstack/api/lstack_epoll.c
|
||||
@@ -740,6 +740,7 @@ static int32_t init_poll_wakeup_data(struct wakeup_poll *wakeup)
|
||||
wakeup->events = calloc(POLL_KERNEL_EVENTS, sizeof(struct epoll_event));
|
||||
if (wakeup->events == NULL) {
|
||||
free(wakeup->last_fds);
|
||||
+ wakeup->last_fds = NULL;
|
||||
GAZELLE_RETURN(EINVAL);
|
||||
}
|
||||
|
||||
@@ -760,7 +761,7 @@ static int32_t init_poll_wakeup_data(struct wakeup_poll *wakeup)
|
||||
return 0;
|
||||
}
|
||||
|
||||
-static void resize_kernel_poll(struct wakeup_poll *wakeup, nfds_t nfds)
|
||||
+static int resize_kernel_poll(struct wakeup_poll *wakeup, nfds_t nfds)
|
||||
{
|
||||
if (wakeup->last_fds) {
|
||||
free(wakeup->last_fds);
|
||||
@@ -768,6 +769,7 @@ static void resize_kernel_poll(struct wakeup_poll *wakeup, nfds_t nfds)
|
||||
wakeup->last_fds = calloc(nfds, sizeof(struct pollfd));
|
||||
if (wakeup->last_fds == NULL) {
|
||||
LSTACK_LOG(ERR, LSTACK, "calloc failed errno=%d\n", errno);
|
||||
+ return -1;
|
||||
}
|
||||
|
||||
if (wakeup->events) {
|
||||
@@ -776,9 +778,12 @@ static void resize_kernel_poll(struct wakeup_poll *wakeup, nfds_t nfds)
|
||||
wakeup->events = calloc(nfds, sizeof(struct epoll_event));
|
||||
if (wakeup->events == NULL) {
|
||||
LSTACK_LOG(ERR, LSTACK, "calloc failed errno=%d\n", errno);
|
||||
+ free(wakeup->last_fds);
|
||||
+ return -1;
|
||||
}
|
||||
|
||||
wakeup->last_max_nfds = nfds;
|
||||
+ return 0;
|
||||
}
|
||||
|
||||
static void poll_bind_statck(struct wakeup_poll *wakeup, int32_t *stack_count)
|
||||
@@ -811,14 +816,18 @@ static void update_kernel_poll(struct wakeup_poll *wakeup, uint32_t index, struc
|
||||
}
|
||||
}
|
||||
|
||||
-static void poll_init(struct wakeup_poll *wakeup, struct pollfd *fds, nfds_t nfds)
|
||||
+static int poll_init(struct wakeup_poll *wakeup, struct pollfd *fds, nfds_t nfds)
|
||||
{
|
||||
int32_t stack_count[PROTOCOL_STACK_MAX] = {0};
|
||||
int32_t poll_change = 0;
|
||||
+ int ret = 0;
|
||||
|
||||
/* poll fds num more, recalloc fds size */
|
||||
if (nfds > wakeup->last_max_nfds) {
|
||||
- resize_kernel_poll(wakeup, nfds);
|
||||
+ ret = resize_kernel_poll(wakeup, nfds);
|
||||
+ if (ret < 0) {
|
||||
+ return -1;
|
||||
+ }
|
||||
poll_change = 1;
|
||||
}
|
||||
|
||||
@@ -855,13 +864,14 @@ static void poll_init(struct wakeup_poll *wakeup, struct pollfd *fds, nfds_t nfd
|
||||
}
|
||||
|
||||
if (poll_change == 0) {
|
||||
- return;
|
||||
+ return 0;
|
||||
}
|
||||
wakeup->last_nfds = nfds;
|
||||
|
||||
if (get_global_cfg_params()->app_bind_numa) {
|
||||
poll_bind_statck(wakeup, stack_count);
|
||||
}
|
||||
+ return 0;
|
||||
}
|
||||
|
||||
int32_t lstack_poll(struct pollfd *fds, nfds_t nfds, int32_t timeout)
|
||||
@@ -880,7 +890,10 @@ int32_t lstack_poll(struct pollfd *fds, nfds_t nfds, int32_t timeout)
|
||||
}
|
||||
}
|
||||
|
||||
- poll_init(wakeup, fds, nfds);
|
||||
+ if (poll_init(wakeup, fds, nfds) < 0) {
|
||||
+ free(wakeup);
|
||||
+ GAZELLE_RETURN(EINVAL);
|
||||
+ }
|
||||
|
||||
int32_t kernel_num = 0;
|
||||
int32_t lwip_num = 0;
|
||||
diff --git a/src/lstack/core/lstack_lwip.c b/src/lstack/core/lstack_lwip.c
|
||||
index 75ef5f6..4d73d44 100644
|
||||
--- a/src/lstack/core/lstack_lwip.c
|
||||
+++ b/src/lstack/core/lstack_lwip.c
|
||||
@@ -333,7 +333,7 @@ static ssize_t do_app_write(struct lwip_sock *sock, struct pbuf *pbufs[], void *
|
||||
}
|
||||
|
||||
/* reduce the branch in loop */
|
||||
- uint16_t copy_len = len - send_len;
|
||||
+ size_t copy_len = len - send_len;
|
||||
rte_memcpy((char *)pbufs[i]->payload, (char *)buf + send_len, copy_len);
|
||||
pbufs[i]->tot_len = pbufs[i]->len = copy_len;
|
||||
send_len += copy_len;
|
||||
@@ -1358,12 +1358,13 @@ void netif_poll(struct netif *netif)
|
||||
/* processes on same node handshake packet use this function */
|
||||
err_t netif_loop_output(struct netif *netif, struct pbuf *p)
|
||||
{
|
||||
- if (p != NULL) {
|
||||
- const struct ip_hdr *iphdr;
|
||||
- iphdr = (const struct ip_hdr *)p->payload;
|
||||
- if (IPH_PROTO(iphdr) == IP_PROTO_UDP) {
|
||||
- return udp_netif_loop_output(netif, p);
|
||||
- }
|
||||
+ if (!p) {
|
||||
+ return ERR_ARG;
|
||||
+ }
|
||||
+ const struct ip_hdr *iphdr;
|
||||
+ iphdr = (const struct ip_hdr *)p->payload;
|
||||
+ if (IPH_PROTO(iphdr) == IP_PROTO_UDP) {
|
||||
+ return udp_netif_loop_output(netif, p);
|
||||
}
|
||||
|
||||
struct tcp_pcb *pcb = p->pcb;
|
||||
diff --git a/src/lstack/core/lstack_port_map.c b/src/lstack/core/lstack_port_map.c
|
||||
index 5439394..ce9d8df 100644
|
||||
--- a/src/lstack/core/lstack_port_map.c
|
||||
+++ b/src/lstack/core/lstack_port_map.c
|
||||
@@ -39,4 +39,4 @@ uint16_t port_map_get(uint16_t port)
|
||||
}
|
||||
pthread_mutex_unlock(&g_rule_map_mutex);
|
||||
return val;
|
||||
-}
|
||||
\ No newline at end of file
|
||||
+}
|
||||
diff --git a/src/lstack/core/lstack_protocol_stack.c b/src/lstack/core/lstack_protocol_stack.c
|
||||
index d8bdd3c..d1bbf9b 100644
|
||||
--- a/src/lstack/core/lstack_protocol_stack.c
|
||||
+++ b/src/lstack/core/lstack_protocol_stack.c
|
||||
@@ -1000,7 +1000,7 @@ void stack_broadcast_arp(struct rte_mbuf *mbuf, struct protocol_stack *cur_stack
|
||||
return;
|
||||
}
|
||||
copy_mbuf(mbuf_copy, mbuf);
|
||||
- virtio_tap_process_tx(stack->queue_id, mbuf_copy);
|
||||
+ virtio_tap_process_tx(cur_stack->queue_id, mbuf_copy);
|
||||
}
|
||||
return;
|
||||
}
|
||||
diff --git a/src/lstack/netif/lstack_ethdev.c b/src/lstack/netif/lstack_ethdev.c
|
||||
index 5685d11..d4d0878 100644
|
||||
--- a/src/lstack/netif/lstack_ethdev.c
|
||||
+++ b/src/lstack/netif/lstack_ethdev.c
|
||||
@@ -319,10 +319,14 @@ static err_t eth_dev_init(struct netif *netif)
|
||||
int32_t ethdev_init(struct protocol_stack *stack)
|
||||
{
|
||||
struct cfg_params *cfg = get_global_cfg_params();
|
||||
-
|
||||
+ int ret = 0;
|
||||
+
|
||||
vdev_dev_ops_init(&stack->dev_ops);
|
||||
if (cfg->send_cache_mode) {
|
||||
- tx_cache_init(stack->queue_id, stack, &stack->dev_ops);
|
||||
+ ret = tx_cache_init(stack->queue_id, stack, &stack->dev_ops);
|
||||
+ if (ret < 0) {
|
||||
+ return ret;
|
||||
+ }
|
||||
}
|
||||
|
||||
if (use_ltran()) {
|
||||
diff --git a/src/lstack/netif/lstack_tx_cache.c b/src/lstack/netif/lstack_tx_cache.c
|
||||
index cda0003..9a48307 100644
|
||||
--- a/src/lstack/netif/lstack_tx_cache.c
|
||||
+++ b/src/lstack/netif/lstack_tx_cache.c
|
||||
@@ -45,6 +45,7 @@ int tx_cache_init(uint16_t queue_id, void *priv, struct lstack_dev_ops *dev_ops)
|
||||
struct tx_cache *tx_cache = calloc(1, sizeof(struct tx_cache));
|
||||
if (tx_cache == NULL) {
|
||||
LSTACK_LOG(ERR, LSTACK, "queue(%d) tx cache init failed\n", queue_id);
|
||||
+ return -1;
|
||||
}
|
||||
|
||||
tx_cache->queue_id = queue_id;
|
||||
--
|
||||
2.33.0
|
||||
|
||||
775
0219-cleancode-refactor-posix_api.patch
Normal file
775
0219-cleancode-refactor-posix_api.patch
Normal file
@ -0,0 +1,775 @@
|
||||
From a1523d108581cfc8aaf89b1116dde071ca5656d8 Mon Sep 17 00:00:00 2001
|
||||
From: Lemmy Huang <huangliming5@huawei.com>
|
||||
Date: Wed, 10 Jul 2024 17:40:43 +0800
|
||||
Subject: [PATCH] cleancode: refactor posix_api
|
||||
|
||||
Signed-off-by: Lemmy Huang <huangliming5@huawei.com>
|
||||
---
|
||||
src/lstack/api/lstack_epoll.c | 16 +-
|
||||
src/lstack/api/lstack_fork.c | 3 +-
|
||||
src/lstack/api/lstack_rtw_api.c | 2 +-
|
||||
src/lstack/api/lstack_wrap.c | 234 ++++++++++--------------
|
||||
src/lstack/core/lstack_control_plane.c | 4 +-
|
||||
src/lstack/core/lstack_init.c | 4 +-
|
||||
src/lstack/core/lstack_lwip.c | 5 +-
|
||||
src/lstack/core/lstack_preload.c | 23 ++-
|
||||
src/lstack/core/lstack_protocol_stack.c | 8 +-
|
||||
src/lstack/include/lstack_preload.h | 6 +-
|
||||
src/lstack/netif/lstack_flow.c | 1 +
|
||||
11 files changed, 139 insertions(+), 167 deletions(-)
|
||||
|
||||
diff --git a/src/lstack/api/lstack_epoll.c b/src/lstack/api/lstack_epoll.c
|
||||
index 8146b4f..f8fd6d4 100644
|
||||
--- a/src/lstack/api/lstack_epoll.c
|
||||
+++ b/src/lstack/api/lstack_epoll.c
|
||||
@@ -164,7 +164,7 @@ static uint32_t update_events(struct lwip_sock *sock)
|
||||
|
||||
if ((sock->epoll_events & EPOLLOUT) && NETCONN_IS_OUTIDLE(sock)) {
|
||||
/* lwip_netconn_do_connected set LIBOS FLAGS when connected */
|
||||
- if (sock->conn && POSIX_IS_TYPE(sock, POSIX_LWIP)) {
|
||||
+ if (!POSIX_IS_CLOSED(sock) && POSIX_IS_TYPE(sock, POSIX_LWIP)) {
|
||||
event |= EPOLLOUT;
|
||||
}
|
||||
}
|
||||
@@ -190,7 +190,7 @@ static void rtc_raise_pending_events(struct wakeup_poll *wakeup, struct lwip_soc
|
||||
|
||||
if (sock->sendevent) {
|
||||
/* lwip_netconn_do_connected set LIBOS FLAGS when connected */
|
||||
- if (sock->conn && POSIX_IS_TYPE(sock, POSIX_LWIP)) {
|
||||
+ if (!POSIX_IS_CLOSED(sock) && POSIX_IS_TYPE(sock, POSIX_LWIP)) {
|
||||
event |= EPOLLOUT;
|
||||
}
|
||||
}
|
||||
@@ -219,7 +219,7 @@ static void raise_pending_events(struct wakeup_poll *wakeup, struct lwip_sock *s
|
||||
pthread_spin_lock(&wakeup->event_list_lock);
|
||||
if (NETCONN_IS_OUTIDLE(sock)) {
|
||||
/* lwip_netconn_do_connected set LIBOS FLAGS when connected */
|
||||
- if (sock->conn && POSIX_IS_TYPE(sock, POSIX_LWIP)) {
|
||||
+ if (!POSIX_IS_CLOSED(sock) && POSIX_IS_TYPE(sock, POSIX_LWIP)) {
|
||||
event |= EPOLLOUT;
|
||||
}
|
||||
}
|
||||
@@ -398,7 +398,7 @@ int32_t lstack_rtc_epoll_ctl(int32_t epfd, int32_t op, int32_t fd, struct epoll_
|
||||
|
||||
struct wakeup_poll *wakeup = epoll_sock->wakeup;
|
||||
struct lwip_sock *sock = lwip_get_socket(fd);
|
||||
- if (sock == NULL || sock->conn == NULL) {
|
||||
+ if (POSIX_IS_CLOSED(sock)) {
|
||||
return posix_api->epoll_ctl_fn(epfd, op, fd, event);
|
||||
}
|
||||
|
||||
@@ -438,7 +438,7 @@ int32_t lstack_rtw_epoll_ctl(int32_t epfd, int32_t op, int32_t fd, struct epoll_
|
||||
|
||||
struct wakeup_poll *wakeup = epoll_sock->wakeup;
|
||||
struct lwip_sock *sock = lwip_get_socket(fd);
|
||||
- if (sock == NULL || sock->conn == NULL) {
|
||||
+ if (POSIX_IS_CLOSED(sock)) {
|
||||
return posix_api->epoll_ctl_fn(epfd, op, fd, event);
|
||||
}
|
||||
|
||||
@@ -536,7 +536,7 @@ static int32_t poll_lwip_event(struct pollfd *fds, nfds_t nfds)
|
||||
/* sock->listen_next pointerto next stack listen */
|
||||
int32_t fd = fds[i].fd;
|
||||
struct lwip_sock *sock = lwip_get_socket(fd);
|
||||
- while (sock && sock->conn) {
|
||||
+ while (!POSIX_IS_CLOSED(sock)) {
|
||||
uint32_t events = update_events(sock);
|
||||
if (events) {
|
||||
fds[i].revents = events;
|
||||
@@ -838,7 +838,7 @@ static void poll_init(struct wakeup_poll *wakeup, struct pollfd *fds, nfds_t nfd
|
||||
}
|
||||
}
|
||||
|
||||
- if (sock == NULL || sock->conn == NULL || POSIX_HAS_TYPE(sock, POSIX_KERNEL)) {
|
||||
+ if (POSIX_IS_CLOSED(sock) || POSIX_HAS_TYPE(sock, POSIX_KERNEL)) {
|
||||
update_kernel_poll(wakeup, i, fds + i);
|
||||
}
|
||||
|
||||
@@ -846,7 +846,7 @@ static void poll_init(struct wakeup_poll *wakeup, struct pollfd *fds, nfds_t nfd
|
||||
wakeup->last_fds[i].events = fds[i].events;
|
||||
poll_change = 1;
|
||||
|
||||
- while (sock && sock->conn) {
|
||||
+ while (!POSIX_IS_CLOSED(sock)) {
|
||||
sock->epoll_events = fds[i].events | POLLERR;
|
||||
sock->wakeup = wakeup;
|
||||
stack_count[sock->stack->stack_idx]++;
|
||||
diff --git a/src/lstack/api/lstack_fork.c b/src/lstack/api/lstack_fork.c
|
||||
index 5cddee2..f5d0e95 100644
|
||||
--- a/src/lstack/api/lstack_fork.c
|
||||
+++ b/src/lstack/api/lstack_fork.c
|
||||
@@ -20,8 +20,9 @@ pid_t lstack_fork(void)
|
||||
pid_t pid;
|
||||
|
||||
pid = posix_api->fork_fn();
|
||||
+ /* child not support lwip */
|
||||
if (pid == 0) {
|
||||
- posix_api_fork();
|
||||
+ posix_api->use_kernel = 1;
|
||||
}
|
||||
return pid;
|
||||
}
|
||||
diff --git a/src/lstack/api/lstack_rtw_api.c b/src/lstack/api/lstack_rtw_api.c
|
||||
index f59b0cd..09c4e11 100644
|
||||
--- a/src/lstack/api/lstack_rtw_api.c
|
||||
+++ b/src/lstack/api/lstack_rtw_api.c
|
||||
@@ -186,7 +186,7 @@ static ssize_t rtw_udp_recvfrom(int sockfd, void *buf, size_t len, int flags,
|
||||
return -1;
|
||||
}
|
||||
sock = sock->listen_next;
|
||||
- if (sock != NULL && sock->conn != NULL) {
|
||||
+ if (!POSIX_IS_CLOSED(sock)) {
|
||||
sockfd = sock->conn->callback_arg.socket;
|
||||
} else {
|
||||
if (sock == NULL) {
|
||||
diff --git a/src/lstack/api/lstack_wrap.c b/src/lstack/api/lstack_wrap.c
|
||||
index d3e1027..b19990e 100644
|
||||
--- a/src/lstack/api/lstack_wrap.c
|
||||
+++ b/src/lstack/api/lstack_wrap.c
|
||||
@@ -37,12 +37,8 @@
|
||||
#include "lstack_rtw_api.h"
|
||||
#include "lstack_dummy_api.h"
|
||||
|
||||
-#ifndef SOCK_TYPE_MASK
|
||||
-#define SOCK_TYPE_MASK 0xf
|
||||
-#endif
|
||||
-
|
||||
-posix_api_t g_wrap_api_value;
|
||||
-posix_api_t *g_wrap_api;
|
||||
+static posix_api_t g_wrap_api_value;
|
||||
+static posix_api_t *g_wrap_api;
|
||||
|
||||
void wrap_api_init(void)
|
||||
{
|
||||
@@ -68,10 +64,10 @@ void wrap_api_init(void)
|
||||
g_wrap_api->writev_fn = lwip_writev;
|
||||
g_wrap_api->recv_fn = lwip_recv;
|
||||
g_wrap_api->send_fn = lwip_send;
|
||||
- g_wrap_api->recv_msg = lwip_recvmsg;
|
||||
- g_wrap_api->send_msg = lwip_sendmsg;
|
||||
- g_wrap_api->recv_from = lwip_recvfrom;
|
||||
- g_wrap_api->send_to = lwip_sendto;
|
||||
+ g_wrap_api->recvmsg_fn = lwip_recvmsg;
|
||||
+ g_wrap_api->sendmsg_fn = lwip_sendmsg;
|
||||
+ g_wrap_api->recvfrom_fn = lwip_recvfrom;
|
||||
+ g_wrap_api->sendto_fn = lwip_sendto;
|
||||
g_wrap_api->epoll_wait_fn = rtc_epoll_wait;
|
||||
g_wrap_api->poll_fn = rtc_poll;
|
||||
g_wrap_api->close_fn = rtc_close;
|
||||
@@ -97,10 +93,10 @@ void wrap_api_init(void)
|
||||
g_wrap_api->writev_fn = rtw_writev;
|
||||
g_wrap_api->recv_fn = rtw_recv;
|
||||
g_wrap_api->send_fn = rtw_send;
|
||||
- g_wrap_api->recv_msg = rtw_recvmsg;
|
||||
- g_wrap_api->send_msg = rtw_sendmsg;
|
||||
- g_wrap_api->recv_from = rtw_recvfrom;
|
||||
- g_wrap_api->send_to = rtw_sendto;
|
||||
+ g_wrap_api->recvmsg_fn = rtw_recvmsg;
|
||||
+ g_wrap_api->sendmsg_fn = rtw_sendmsg;
|
||||
+ g_wrap_api->recvfrom_fn = rtw_recvfrom;
|
||||
+ g_wrap_api->sendto_fn = rtw_sendto;
|
||||
g_wrap_api->epoll_wait_fn = rtw_epoll_wait;
|
||||
g_wrap_api->poll_fn = rtw_poll;
|
||||
g_wrap_api->close_fn = rtw_close;
|
||||
@@ -118,8 +114,8 @@ void wrap_api_set_dummy(void)
|
||||
g_wrap_api->send_fn = dummy_send;
|
||||
g_wrap_api->write_fn = dummy_write;
|
||||
g_wrap_api->writev_fn = dummy_writev;
|
||||
- g_wrap_api->send_msg = dummy_sendmsg;
|
||||
- g_wrap_api->send_to = dummy_sendto;
|
||||
+ g_wrap_api->sendmsg_fn = dummy_sendmsg;
|
||||
+ g_wrap_api->sendto_fn = dummy_sendto;
|
||||
rte_wmb();
|
||||
}
|
||||
|
||||
@@ -169,7 +165,7 @@ static inline int32_t do_epoll_wait(int32_t epfd, struct epoll_event* events, in
|
||||
|
||||
static inline int32_t do_accept(int32_t s, struct sockaddr *addr, socklen_t *addrlen)
|
||||
{
|
||||
- if (select_fd_posix_path(s, NULL) == POSIX_KERNEL) {
|
||||
+ if (select_sock_posix_path(lwip_get_socket(s)) == POSIX_KERNEL) {
|
||||
return posix_api->accept_fn(s, addr, addrlen);
|
||||
}
|
||||
|
||||
@@ -189,7 +185,7 @@ static int32_t do_accept4(int32_t s, struct sockaddr *addr, socklen_t *addrlen,
|
||||
GAZELLE_RETURN(EINVAL);
|
||||
}
|
||||
|
||||
- if (select_fd_posix_path(s, NULL) == POSIX_KERNEL) {
|
||||
+ if (select_sock_posix_path(lwip_get_socket(s)) == POSIX_KERNEL) {
|
||||
return posix_api->accept4_fn(s, addr, addrlen, flags);
|
||||
}
|
||||
|
||||
@@ -209,8 +205,8 @@ static int32_t do_bind(int32_t s, const struct sockaddr *name, socklen_t namelen
|
||||
GAZELLE_RETURN(EINVAL);
|
||||
}
|
||||
|
||||
- struct lwip_sock *sock = NULL;
|
||||
- if (select_fd_posix_path(s, &sock) == POSIX_KERNEL) {
|
||||
+ struct lwip_sock *sock = lwip_get_socket(s);
|
||||
+ if (select_sock_posix_path(sock) == POSIX_KERNEL) {
|
||||
return posix_api->bind_fn(s, name, namelen);
|
||||
}
|
||||
|
||||
@@ -230,30 +226,31 @@ static int32_t do_bind(int32_t s, const struct sockaddr *name, socklen_t namelen
|
||||
((struct sockaddr_in6 *)name)->sin6_addr.s6_addr, IPV6_ADDR_LEN);
|
||||
}
|
||||
|
||||
- if (match_host_addr(&sock_addr)) {
|
||||
- /* maybe kni addr */
|
||||
- if (posix_api->bind_fn(s, name, namelen) != 0) {
|
||||
- POSIX_SET_TYPE(sock, POSIX_LWIP);
|
||||
- } else {
|
||||
- /* reuse the port allocated by kernel when port == 0 */
|
||||
- if (((struct sockaddr_in *)name)->sin_port == 0) {
|
||||
- struct sockaddr_in kerneladdr;
|
||||
- socklen_t len = sizeof(kerneladdr);
|
||||
- if (posix_api->getsockname_fn(s, (struct sockaddr *)&kerneladdr, &len) < 0) {
|
||||
- LSTACK_LOG(ERR, LSTACK, "kernel getsockname failed, fd=%d, errno=%d\n", s, errno);
|
||||
- return -1;
|
||||
- }
|
||||
- ((struct sockaddr_in *)name)->sin_port = kerneladdr.sin_port;
|
||||
+ if (!match_host_addr(&sock_addr)) {
|
||||
+ POSIX_SET_TYPE(sock, POSIX_KERNEL);
|
||||
+ return posix_api->bind_fn(s, name, namelen);
|
||||
+ }
|
||||
+
|
||||
+ /* maybe kni addr */
|
||||
+ if (posix_api->bind_fn(s, name, namelen) == 0) {
|
||||
+ /* reuse the port allocated by kernel when port == 0 */
|
||||
+ if (((struct sockaddr_in *)name)->sin_port == 0) {
|
||||
+ struct sockaddr_in kerneladdr;
|
||||
+ socklen_t len = sizeof(kerneladdr);
|
||||
+ if (posix_api->getsockname_fn(s, (struct sockaddr *)&kerneladdr, &len) < 0) {
|
||||
+ LSTACK_LOG(ERR, LSTACK, "kernel getsockname failed, fd=%d, errno=%d\n", s, errno);
|
||||
+ return -1;
|
||||
}
|
||||
+ ((struct sockaddr_in *)name)->sin_port = kerneladdr.sin_port;
|
||||
}
|
||||
- return g_wrap_api->bind_fn(s, name, namelen);
|
||||
+ /* not sure POSIX_LWIP or POSIX_KERNEL */
|
||||
} else {
|
||||
- POSIX_SET_TYPE(sock, POSIX_KERNEL);
|
||||
- return posix_api->bind_fn(s, name, namelen);
|
||||
+ POSIX_SET_TYPE(sock, POSIX_LWIP);
|
||||
}
|
||||
+ return g_wrap_api->bind_fn(s, name, namelen);
|
||||
}
|
||||
|
||||
-bool is_dst_ip_localhost(const struct sockaddr *addr)
|
||||
+static bool is_dst_ip_localhost(const struct sockaddr *addr)
|
||||
{
|
||||
struct ifaddrs *ifap;
|
||||
struct ifaddrs *ifa;
|
||||
@@ -302,13 +299,8 @@ static int32_t do_connect(int32_t s, const struct sockaddr *name, socklen_t name
|
||||
GAZELLE_RETURN(EINVAL);
|
||||
}
|
||||
|
||||
- struct lwip_sock *sock = NULL;
|
||||
- if (select_fd_posix_path(s, &sock) == POSIX_KERNEL) {
|
||||
- return posix_api->connect_fn(s, name, namelen);
|
||||
- }
|
||||
-
|
||||
- sock = lwip_get_socket(s);
|
||||
- if (sock == NULL) {
|
||||
+ struct lwip_sock *sock = lwip_get_socket(s);
|
||||
+ if (select_sock_posix_path(sock) == POSIX_KERNEL) {
|
||||
return posix_api->connect_fn(s, name, namelen);
|
||||
}
|
||||
|
||||
@@ -334,7 +326,7 @@ static int32_t do_connect(int32_t s, const struct sockaddr *name, socklen_t name
|
||||
|
||||
static inline int32_t do_listen(int32_t s, int32_t backlog)
|
||||
{
|
||||
- if (select_fd_posix_path(s, NULL) == POSIX_KERNEL) {
|
||||
+ if (select_sock_posix_path(lwip_get_socket(s)) == POSIX_KERNEL) {
|
||||
return posix_api->listen_fn(s, backlog);
|
||||
}
|
||||
|
||||
@@ -352,7 +344,7 @@ static inline int32_t do_getpeername(int32_t s, struct sockaddr *name, socklen_t
|
||||
GAZELLE_RETURN(EINVAL);
|
||||
}
|
||||
|
||||
- if (select_fd_posix_path(s, NULL) == POSIX_LWIP) {
|
||||
+ if (select_sock_posix_path(lwip_get_socket(s)) == POSIX_LWIP) {
|
||||
return g_wrap_api->getpeername_fn(s, name, namelen);
|
||||
}
|
||||
|
||||
@@ -365,7 +357,7 @@ static inline int32_t do_getsockname(int32_t s, struct sockaddr *name, socklen_t
|
||||
GAZELLE_RETURN(EINVAL);
|
||||
}
|
||||
|
||||
- if (select_fd_posix_path(s, NULL) == POSIX_LWIP) {
|
||||
+ if (select_sock_posix_path(lwip_get_socket(s)) == POSIX_LWIP) {
|
||||
return g_wrap_api->getsockname_fn(s, name, namelen);
|
||||
}
|
||||
|
||||
@@ -422,7 +414,7 @@ static bool unsupport_optname(int32_t level, int32_t optname)
|
||||
|
||||
static inline int32_t do_getsockopt(int32_t s, int32_t level, int32_t optname, void *optval, socklen_t *optlen)
|
||||
{
|
||||
- if (select_fd_posix_path(s, NULL) == POSIX_LWIP && !unsupport_optname(level, optname)) {
|
||||
+ if (select_sock_posix_path(lwip_get_socket(s)) == POSIX_LWIP && !unsupport_optname(level, optname)) {
|
||||
return g_wrap_api->getsockopt_fn(s, level, optname, optval, optlen);
|
||||
}
|
||||
|
||||
@@ -431,7 +423,7 @@ static inline int32_t do_getsockopt(int32_t s, int32_t level, int32_t optname, v
|
||||
|
||||
static inline int32_t do_setsockopt(int32_t s, int32_t level, int32_t optname, const void *optval, socklen_t optlen)
|
||||
{
|
||||
- if (select_fd_posix_path(s, NULL) == POSIX_KERNEL || unsupport_optname(level, optname)) {
|
||||
+ if (select_sock_posix_path(lwip_get_socket(s)) == POSIX_KERNEL || unsupport_optname(level, optname)) {
|
||||
return posix_api->setsockopt_fn(s, level, optname, optval, optlen);
|
||||
}
|
||||
|
||||
@@ -473,17 +465,14 @@ static inline ssize_t do_recv(int32_t sockfd, void *buf, size_t len, int32_t fla
|
||||
if (buf == NULL) {
|
||||
GAZELLE_RETURN(EINVAL);
|
||||
}
|
||||
-
|
||||
if (len == 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
- if (select_posix_path() == POSIX_KERNEL || // maybe fd is created by open before posix_api_init called
|
||||
- select_fd_posix_path(sockfd, NULL) == POSIX_KERNEL) {
|
||||
- return posix_api->recv_fn(sockfd, buf, len, flags);
|
||||
+ if (select_sock_posix_path(lwip_get_socket(sockfd)) == POSIX_LWIP) {
|
||||
+ return g_wrap_api->recv_fn(sockfd, buf, len, flags);
|
||||
}
|
||||
-
|
||||
- return g_wrap_api->recv_fn(sockfd, buf, len, flags);
|
||||
+ return posix_api->recv_fn(sockfd, buf, len, flags);
|
||||
}
|
||||
|
||||
static inline ssize_t do_read(int32_t s, void *mem, size_t len)
|
||||
@@ -491,58 +480,46 @@ static inline ssize_t do_read(int32_t s, void *mem, size_t len)
|
||||
if (mem == NULL) {
|
||||
GAZELLE_RETURN(EINVAL);
|
||||
}
|
||||
-
|
||||
if (len == 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
- if (select_posix_path() == POSIX_KERNEL ||
|
||||
- select_fd_posix_path(s, NULL) == POSIX_KERNEL) {
|
||||
- return posix_api->read_fn(s, mem, len);
|
||||
+ if (select_sock_posix_path(lwip_get_socket(s)) == POSIX_LWIP) {
|
||||
+ return g_wrap_api->read_fn(s, mem, len);
|
||||
}
|
||||
-
|
||||
- return g_wrap_api->read_fn(s, mem, len);
|
||||
+ return posix_api->read_fn(s, mem, len);
|
||||
}
|
||||
|
||||
static inline ssize_t do_readv(int32_t s, const struct iovec *iov, int iovcnt)
|
||||
{
|
||||
- if (select_posix_path() == POSIX_KERNEL ||
|
||||
- select_fd_posix_path(s, NULL) == POSIX_KERNEL) {
|
||||
- return posix_api->readv_fn(s, iov, iovcnt);
|
||||
+ if (select_sock_posix_path(lwip_get_socket(s)) == POSIX_LWIP) {
|
||||
+ return g_wrap_api->readv_fn(s, iov, iovcnt);
|
||||
}
|
||||
-
|
||||
- return g_wrap_api->readv_fn(s, iov, iovcnt);
|
||||
+ return posix_api->readv_fn(s, iov, iovcnt);
|
||||
}
|
||||
|
||||
static inline ssize_t do_send(int32_t sockfd, const void *buf, size_t len, int32_t flags)
|
||||
{
|
||||
- if (select_posix_path() == POSIX_KERNEL ||
|
||||
- select_fd_posix_path(sockfd, NULL) == POSIX_KERNEL) {
|
||||
- return posix_api->send_fn(sockfd, buf, len, flags);
|
||||
+ if (select_sock_posix_path(lwip_get_socket(sockfd)) == POSIX_LWIP) {
|
||||
+ return g_wrap_api->send_fn(sockfd, buf, len, flags);
|
||||
}
|
||||
-
|
||||
- return g_wrap_api->send_fn(sockfd, buf, len, flags);
|
||||
+ return posix_api->send_fn(sockfd, buf, len, flags);
|
||||
}
|
||||
|
||||
static inline ssize_t do_write(int32_t s, const void *mem, size_t size)
|
||||
{
|
||||
- if (select_posix_path() == POSIX_KERNEL ||
|
||||
- select_fd_posix_path(s, NULL) == POSIX_KERNEL) {
|
||||
- return posix_api->write_fn(s, mem, size);
|
||||
+ if (select_sock_posix_path(lwip_get_socket(s)) == POSIX_LWIP) {
|
||||
+ return g_wrap_api->write_fn(s, mem, size);
|
||||
}
|
||||
-
|
||||
- return g_wrap_api->write_fn(s, mem, size);
|
||||
+ return posix_api->write_fn(s, mem, size);
|
||||
}
|
||||
|
||||
static inline ssize_t do_writev(int32_t s, const struct iovec *iov, int iovcnt)
|
||||
{
|
||||
- struct lwip_sock *sock;
|
||||
- if (select_posix_path() == POSIX_KERNEL ||
|
||||
- select_fd_posix_path(s, &sock) == POSIX_KERNEL) {
|
||||
- return posix_api->writev_fn(s, iov, iovcnt);
|
||||
+ if (select_sock_posix_path(lwip_get_socket(s)) == POSIX_LWIP) {
|
||||
+ return g_wrap_api->writev_fn(s, iov, iovcnt);
|
||||
}
|
||||
-
|
||||
- return g_wrap_api->writev_fn(s, iov, iovcnt);
|
||||
+ return posix_api->writev_fn(s, iov, iovcnt);
|
||||
}
|
||||
|
||||
static inline ssize_t do_recvmsg(int32_t s, struct msghdr *message, int32_t flags)
|
||||
@@ -551,12 +528,10 @@ static inline ssize_t do_recvmsg(int32_t s, struct msghdr *message, int32_t flag
|
||||
GAZELLE_RETURN(EINVAL);
|
||||
}
|
||||
|
||||
- if (select_posix_path() == POSIX_KERNEL ||
|
||||
- select_fd_posix_path(s, NULL) == POSIX_KERNEL) {
|
||||
- return posix_api->recv_msg(s, message, flags);
|
||||
+ if (select_sock_posix_path(lwip_get_socket(s)) == POSIX_LWIP) {
|
||||
+ return g_wrap_api->recvmsg_fn(s, message, flags);
|
||||
}
|
||||
-
|
||||
- return g_wrap_api->recv_msg(s, message, flags);
|
||||
+ return posix_api->recvmsg_fn(s, message, flags);
|
||||
}
|
||||
|
||||
static inline ssize_t do_sendmsg(int32_t s, const struct msghdr *message, int32_t flags)
|
||||
@@ -565,13 +540,10 @@ static inline ssize_t do_sendmsg(int32_t s, const struct msghdr *message, int32_
|
||||
GAZELLE_RETURN(EINVAL);
|
||||
}
|
||||
|
||||
- struct lwip_sock *sock;
|
||||
- if (select_posix_path() == POSIX_KERNEL ||
|
||||
- select_fd_posix_path(s, &sock) == POSIX_KERNEL) {
|
||||
- return posix_api->send_msg(s, message, flags);
|
||||
+ if (select_sock_posix_path(lwip_get_socket(s)) == POSIX_LWIP) {
|
||||
+ return g_wrap_api->sendmsg_fn(s, message, flags);
|
||||
}
|
||||
-
|
||||
- return g_wrap_api->send_msg(s, message, flags);
|
||||
+ return posix_api->sendmsg_fn(s, message, flags);
|
||||
}
|
||||
|
||||
static inline ssize_t do_recvfrom(int32_t sockfd, void *buf, size_t len, int32_t flags,
|
||||
@@ -580,58 +552,48 @@ static inline ssize_t do_recvfrom(int32_t sockfd, void *buf, size_t len, int32_t
|
||||
if (buf == NULL) {
|
||||
GAZELLE_RETURN(EINVAL);
|
||||
}
|
||||
-
|
||||
if (len == 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
- struct lwip_sock *sock = NULL;
|
||||
- if (select_fd_posix_path(sockfd, &sock) == POSIX_LWIP) {
|
||||
- return g_wrap_api->recv_from(sockfd, buf, len, flags, addr, addrlen);
|
||||
+ if (select_sock_posix_path(lwip_get_socket(sockfd)) == POSIX_LWIP) {
|
||||
+ return g_wrap_api->recvfrom_fn(sockfd, buf, len, flags, addr, addrlen);
|
||||
}
|
||||
-
|
||||
- return posix_api->recv_from(sockfd, buf, len, flags, addr, addrlen);
|
||||
+ return posix_api->recvfrom_fn(sockfd, buf, len, flags, addr, addrlen);
|
||||
}
|
||||
|
||||
static inline ssize_t do_sendto(int32_t sockfd, const void *buf, size_t len, int32_t flags,
|
||||
const struct sockaddr *addr, socklen_t addrlen)
|
||||
{
|
||||
- struct lwip_sock *sock = NULL;
|
||||
- if (select_fd_posix_path(sockfd, &sock) != POSIX_LWIP) {
|
||||
- return posix_api->send_to(sockfd, buf, len, flags, addr, addrlen);
|
||||
+ if (select_sock_posix_path(lwip_get_socket(sockfd)) == POSIX_LWIP) {
|
||||
+ return g_wrap_api->sendto_fn(sockfd, buf, len, flags, addr, addrlen);
|
||||
}
|
||||
-
|
||||
- return g_wrap_api->send_to(sockfd, buf, len, flags, addr, addrlen);
|
||||
+ return posix_api->sendto_fn(sockfd, buf, len, flags, addr, addrlen);
|
||||
}
|
||||
|
||||
-static inline int32_t do_close(int32_t s)
|
||||
+static inline int32_t do_close(int fd)
|
||||
{
|
||||
- struct lwip_sock *sock = NULL;
|
||||
+ /* Can not use select_sock_posix_path() !
|
||||
+ * When fd created by lwip_stocket() set as POSIX_KERNEL,
|
||||
+ * lwip_close() is still required.
|
||||
+ */
|
||||
if (select_posix_path() == POSIX_KERNEL ||
|
||||
- select_fd_posix_path(s, &sock) == POSIX_KERNEL) {
|
||||
- /* we called lwip_socket, even if kernel fd */
|
||||
- if (posix_api != NULL && !posix_api->ues_posix &&
|
||||
- /* contain posix_api->close_fn if success */
|
||||
- g_wrap_api->close_fn(s) == 0) {
|
||||
- return 0;
|
||||
- } else {
|
||||
- return posix_api->close_fn(s);
|
||||
- }
|
||||
+ POSIX_IS_CLOSED(lwip_get_socket(fd))) {
|
||||
+ return posix_api->close_fn(fd);
|
||||
}
|
||||
- return g_wrap_api->close_fn(s);
|
||||
+ return g_wrap_api->close_fn(fd);
|
||||
}
|
||||
|
||||
static int32_t do_shutdown(int fd, int how)
|
||||
{
|
||||
- struct lwip_sock *sock = NULL;
|
||||
- if (select_posix_path() == POSIX_KERNEL || select_fd_posix_path(fd, &sock) == POSIX_KERNEL) {
|
||||
- if (posix_api != NULL && !posix_api->ues_posix && g_wrap_api->shutdown_fn(fd, how) == 0) {
|
||||
- return 0;
|
||||
- } else {
|
||||
- return posix_api->shutdown_fn(fd, how);
|
||||
- }
|
||||
+ /* Can not use select_sock_posix_path() !
|
||||
+ * When fd created by lwip_stocket() set as POSIX_KERNEL,
|
||||
+ * lwip_close() is still required.
|
||||
+ */
|
||||
+ if (select_posix_path() == POSIX_KERNEL ||
|
||||
+ POSIX_IS_CLOSED(lwip_get_socket(fd))) {
|
||||
+ return posix_api->shutdown_fn(fd, how);
|
||||
}
|
||||
-
|
||||
return g_wrap_api->shutdown_fn(fd, how);
|
||||
}
|
||||
|
||||
@@ -660,15 +622,13 @@ static int32_t do_ppoll(struct pollfd *fds, nfds_t nfds, const struct timespec *
|
||||
return ready;
|
||||
}
|
||||
|
||||
-typedef int32_t (*sigaction_fn)(int32_t signum, const struct sigaction *act, struct sigaction *oldact);
|
||||
static int32_t do_sigaction(int32_t signum, const struct sigaction *act, struct sigaction *oldact)
|
||||
{
|
||||
- if (posix_api == NULL) {
|
||||
- sigaction_fn sf = (sigaction_fn)dlsym(RTLD_NEXT, "sigaction");
|
||||
- if (sf == NULL) {
|
||||
- return -1;
|
||||
+ if (unlikely(posix_api == NULL)) {
|
||||
+ if (posix_api_init() != 0) {
|
||||
+ GAZELLE_RETURN(EAGAIN);
|
||||
}
|
||||
- return sf(signum, act, oldact);
|
||||
+ return posix_api->sigaction_fn(signum, act, oldact);
|
||||
}
|
||||
|
||||
return lstack_sigaction(signum, act, oldact);
|
||||
@@ -676,10 +636,14 @@ static int32_t do_sigaction(int32_t signum, const struct sigaction *act, struct
|
||||
|
||||
static int32_t do_select(int32_t nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout)
|
||||
{
|
||||
- if ((select_posix_path() == POSIX_KERNEL) || !(readfds || writefds || exceptfds) || nfds == 0) {
|
||||
+ if (nfds <= 0 || !(readfds || writefds || exceptfds)) {
|
||||
+ GAZELLE_RETURN(EINVAL);
|
||||
+ }
|
||||
+
|
||||
+ if (select_posix_path() == POSIX_KERNEL) {
|
||||
return posix_api->select_fn(nfds, readfds, writefds, exceptfds, timeout);
|
||||
}
|
||||
-
|
||||
+
|
||||
return g_wrap_api->select_fn(nfds, readfds, writefds, exceptfds, timeout);
|
||||
}
|
||||
|
||||
@@ -690,9 +654,9 @@ static int32_t do_select(int32_t nfds, fd_set *readfds, fd_set *writefds, fd_set
|
||||
va_start(ap, _cmd); \
|
||||
val = va_arg(ap, typeof(val)); \
|
||||
va_end(ap); \
|
||||
- struct lwip_sock *sock = NULL; \
|
||||
+ struct lwip_sock *sock = lwip_get_socket(_fd); \
|
||||
if (select_posix_path() == POSIX_KERNEL || \
|
||||
- select_fd_posix_path(_fd, &sock) == POSIX_KERNEL) \
|
||||
+ select_sock_posix_path(sock) == POSIX_KERNEL) \
|
||||
return _fcntl_fn(_fd, _cmd, val); \
|
||||
int32_t ret1 = _fcntl_fn(_fd, _cmd, val); \
|
||||
if (ret1 == -1) { \
|
||||
diff --git a/src/lstack/core/lstack_control_plane.c b/src/lstack/core/lstack_control_plane.c
|
||||
index 5545b9f..f1e3064 100644
|
||||
--- a/src/lstack/core/lstack_control_plane.c
|
||||
+++ b/src/lstack/core/lstack_control_plane.c
|
||||
@@ -764,7 +764,7 @@ void control_server_thread(void *arg)
|
||||
struct epoll_event evt_array;
|
||||
while (1) {
|
||||
/* wait init finish */
|
||||
- if (posix_api->ues_posix) {
|
||||
+ if (posix_api->use_kernel) {
|
||||
usleep(GAZELLE_10MS);
|
||||
continue;
|
||||
}
|
||||
@@ -813,7 +813,7 @@ void control_client_thread(void *arg)
|
||||
|
||||
while (1) {
|
||||
/* wait init finish */
|
||||
- if (posix_api->ues_posix) {
|
||||
+ if (posix_api->use_kernel) {
|
||||
usleep(GAZELLE_10MS);
|
||||
continue;
|
||||
}
|
||||
diff --git a/src/lstack/core/lstack_init.c b/src/lstack/core/lstack_init.c
|
||||
index 1b3882e..54ee97e 100644
|
||||
--- a/src/lstack/core/lstack_init.c
|
||||
+++ b/src/lstack/core/lstack_init.c
|
||||
@@ -123,7 +123,7 @@ void gazelle_exit(void)
|
||||
|
||||
__attribute__((destructor)) void gazelle_network_exit(void)
|
||||
{
|
||||
- if (posix_api != NULL && !posix_api->ues_posix) {
|
||||
+ if (posix_api != NULL && !posix_api->use_kernel) {
|
||||
lwip_exit();
|
||||
gazelle_exit();
|
||||
}
|
||||
@@ -324,7 +324,7 @@ __attribute__((constructor)) void gazelle_network_init(void)
|
||||
LSTACK_EXIT(1, "set_process_start_flag failed\n");
|
||||
}
|
||||
|
||||
- posix_api->ues_posix = 0;
|
||||
+ posix_api->use_kernel = 0;
|
||||
LSTACK_LOG(INFO, LSTACK, "gazelle_network_init success\n");
|
||||
rte_smp_mb();
|
||||
}
|
||||
diff --git a/src/lstack/core/lstack_lwip.c b/src/lstack/core/lstack_lwip.c
|
||||
index 84ef782..2b39d05 100644
|
||||
--- a/src/lstack/core/lstack_lwip.c
|
||||
+++ b/src/lstack/core/lstack_lwip.c
|
||||
@@ -79,6 +79,7 @@ static void reset_sock_data(struct lwip_sock *sock)
|
||||
sock->send_pre_del = NULL;
|
||||
}
|
||||
|
||||
+ sock->type = 0;
|
||||
sock->stack = NULL;
|
||||
sock->wakeup = NULL;
|
||||
sock->listen_next = NULL;
|
||||
@@ -1167,7 +1168,7 @@ void do_lwip_connected_callback(struct netconn *conn)
|
||||
|
||||
int32_t fd = conn->callback_arg.socket;
|
||||
struct lwip_sock *sock = lwip_get_socket(fd);
|
||||
- if (sock == NULL || sock->conn == NULL) {
|
||||
+ if (POSIX_IS_CLOSED(sock)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1208,7 +1209,7 @@ static void copy_pcb_to_conn(struct gazelle_stat_lstack_conn_info *conn, const s
|
||||
conn->fd = netconn->callback_arg.socket;
|
||||
conn->recv_cnt = (netconn->recvmbox == NULL) ? 0 : rte_ring_count(netconn->recvmbox->ring);
|
||||
struct lwip_sock *sock = lwip_get_socket(netconn->callback_arg.socket);
|
||||
- if (sock != NULL && sock->conn != NULL) {
|
||||
+ if (!POSIX_IS_CLOSED(sock)) {
|
||||
conn->recv_ring_cnt = (sock->recv_ring == NULL) ? 0 : gazelle_ring_readable_count(sock->recv_ring);
|
||||
conn->recv_ring_cnt += (sock->recv_lastdata) ? 1 : 0;
|
||||
conn->send_ring_cnt = (sock->send_ring == NULL) ? 0 : gazelle_ring_readover_count(sock->send_ring);
|
||||
diff --git a/src/lstack/core/lstack_preload.c b/src/lstack/core/lstack_preload.c
|
||||
index 8cf4657..689d2bf 100644
|
||||
--- a/src/lstack/core/lstack_preload.c
|
||||
+++ b/src/lstack/core/lstack_preload.c
|
||||
@@ -79,17 +79,22 @@ static void preload_get_thrdname(void)
|
||||
LSTACK_PRE_LOG(LSTACK_INFO, "thread name=%s ok\n", g_preload_info.env_thrdname);
|
||||
}
|
||||
|
||||
-enum posix_type select_fd_posix_path(int32_t fd, struct lwip_sock **socket)
|
||||
+enum posix_type select_sock_posix_path(struct lwip_sock *sock)
|
||||
{
|
||||
- struct lwip_sock *sock = lwip_get_socket(fd);
|
||||
-
|
||||
- /* AF_UNIX case */
|
||||
- if (!sock || !sock->conn || POSIX_IS_TYPE(sock, POSIX_KERNEL)) {
|
||||
+ if (unlikely(posix_api == NULL)) {
|
||||
+ /*
|
||||
+ * read/write/readv/writev may not be sockfd,
|
||||
+ * posix api maybe not init.
|
||||
+ */
|
||||
+ if (posix_api_init() != 0) {
|
||||
+ LSTACK_PRE_LOG(LSTACK_ERR, "posix_api_init failed\n");
|
||||
+ }
|
||||
return POSIX_KERNEL;
|
||||
}
|
||||
|
||||
- if (socket) {
|
||||
- *socket = sock;
|
||||
+ /* CLOSED means not sockfd, such as file fd or unix fd */
|
||||
+ if (POSIX_IS_CLOSED(sock) || POSIX_IS_TYPE(sock, POSIX_KERNEL)) {
|
||||
+ return POSIX_KERNEL;
|
||||
}
|
||||
|
||||
if (likely(POSIX_IS_TYPE(sock, POSIX_LWIP))) {
|
||||
@@ -112,11 +117,11 @@ enum posix_type select_posix_path(void)
|
||||
return POSIX_KERNEL;
|
||||
}
|
||||
|
||||
- if (unlikely(posix_api->ues_posix)) {
|
||||
+ if (unlikely(posix_api->use_kernel)) {
|
||||
return POSIX_KERNEL;
|
||||
}
|
||||
|
||||
- if (g_preload_thrdpath != POSIX_ALL) {
|
||||
+ if (likely(g_preload_thrdpath != POSIX_ALL)) {
|
||||
return g_preload_thrdpath;
|
||||
}
|
||||
|
||||
diff --git a/src/lstack/core/lstack_protocol_stack.c b/src/lstack/core/lstack_protocol_stack.c
|
||||
index d17cb67..a809d8c 100644
|
||||
--- a/src/lstack/core/lstack_protocol_stack.c
|
||||
+++ b/src/lstack/core/lstack_protocol_stack.c
|
||||
@@ -127,7 +127,7 @@ struct protocol_stack *get_protocol_stack(void)
|
||||
struct protocol_stack *get_protocol_stack_by_fd(int32_t fd)
|
||||
{
|
||||
struct lwip_sock *sock = lwip_get_socket(fd);
|
||||
- if (sock == NULL || sock->conn == NULL) {
|
||||
+ if (POSIX_IS_CLOSED(sock)) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -1126,7 +1126,7 @@ int32_t stack_broadcast_close(int32_t fd)
|
||||
ret = -1;
|
||||
}
|
||||
|
||||
- if (sock == NULL || sock->conn == NULL) {
|
||||
+ if (POSIX_IS_CLOSED(sock)) {
|
||||
break;
|
||||
}
|
||||
fd = sock->conn->callback_arg.socket;
|
||||
@@ -1151,7 +1151,7 @@ int stack_broadcast_shutdown(int fd, int how)
|
||||
ret = -1;
|
||||
}
|
||||
|
||||
- if (sock == NULL || sock->conn == NULL) {
|
||||
+ if (POSIX_IS_CLOSED(sock)) {
|
||||
break;
|
||||
}
|
||||
fd = sock->conn->callback_arg.socket;
|
||||
@@ -1357,7 +1357,7 @@ static void stack_all_fds_close(void)
|
||||
{
|
||||
for (int i = 3; i < GAZELLE_MAX_CLIENTS + GAZELLE_RESERVED_CLIENTS; i++) {
|
||||
struct lwip_sock *sock = lwip_get_socket(i);
|
||||
- if (sock && sock->conn && sock->stack == get_protocol_stack()) {
|
||||
+ if (!POSIX_IS_CLOSED(sock) && sock->stack == get_protocol_stack()) {
|
||||
lwip_close(i);
|
||||
}
|
||||
}
|
||||
diff --git a/src/lstack/include/lstack_preload.h b/src/lstack/include/lstack_preload.h
|
||||
index c30736a..d4ad385 100644
|
||||
--- a/src/lstack/include/lstack_preload.h
|
||||
+++ b/src/lstack/include/lstack_preload.h
|
||||
@@ -11,9 +11,9 @@
|
||||
*/
|
||||
#ifndef __LSTACK_PRELOAD_H__
|
||||
#define __LSTACK_PRELOAD_H__
|
||||
-#include <stdbool.h>
|
||||
|
||||
enum posix_type select_posix_path(void);
|
||||
-enum posix_type select_fd_posix_path(int32_t fd, struct lwip_sock **socket);
|
||||
+enum posix_type select_sock_posix_path(struct lwip_sock *sock);
|
||||
int preload_info_init(void);
|
||||
-#endif
|
||||
+
|
||||
+#endif /* __LSTACK_PRELOAD_H__ */
|
||||
diff --git a/src/lstack/netif/lstack_flow.c b/src/lstack/netif/lstack_flow.c
|
||||
index 84c5c61..1ca3314 100644
|
||||
--- a/src/lstack/netif/lstack_flow.c
|
||||
+++ b/src/lstack/netif/lstack_flow.c
|
||||
@@ -19,6 +19,7 @@
|
||||
#include <uthash.h>
|
||||
|
||||
#include <lwip/lwipgz_posix_api.h>
|
||||
+#include <lwip/sys.h>
|
||||
#include <lwip/tcp.h>
|
||||
#include <lwip/prot/tcp.h>
|
||||
|
||||
--
|
||||
2.33.0
|
||||
|
||||
445
0220-cleancode-refactor-lwipgz_list.h.patch
Normal file
445
0220-cleancode-refactor-lwipgz_list.h.patch
Normal file
@ -0,0 +1,445 @@
|
||||
From daacb87180fa9c98c53c001bb37929b9aaef46d9 Mon Sep 17 00:00:00 2001
|
||||
From: Lemmy Huang <huangliming5@huawei.com>
|
||||
Date: Mon, 15 Jul 2024 11:27:19 +0800
|
||||
Subject: [PATCH] cleancode: refactor lwipgz_list.h
|
||||
|
||||
Changed:
|
||||
list_is_empty -> list_head_empty
|
||||
list_is_null -> list_node_null
|
||||
|
||||
init_list_node -> list_init_head
|
||||
init_list_node_null -> list_init_node
|
||||
|
||||
list_add_node -> list_add_node
|
||||
list_del_node_null -> list_del_node
|
||||
list_del_node -> __list_del_node
|
||||
list_for_each_safe -> list_for_each_node
|
||||
Deprecated:
|
||||
list_del_node_init
|
||||
Added:
|
||||
list_get_node_count
|
||||
list_entry
|
||||
|
||||
Signed-off-by: Lemmy Huang <huangliming5@huawei.com>
|
||||
---
|
||||
src/common/gazelle_base_func.h | 5 +-
|
||||
src/lstack/api/lstack_epoll.c | 66 ++++++++++++-------------
|
||||
src/lstack/api/lstack_rtc_api.c | 2 +-
|
||||
src/lstack/core/lstack_lwip.c | 28 +++++------
|
||||
src/lstack/core/lstack_protocol_stack.c | 14 +++---
|
||||
src/lstack/core/lstack_stack_stat.c | 4 +-
|
||||
6 files changed, 60 insertions(+), 59 deletions(-)
|
||||
|
||||
diff --git a/src/common/gazelle_base_func.h b/src/common/gazelle_base_func.h
|
||||
index 2d629c1..be87ccd 100644
|
||||
--- a/src/common/gazelle_base_func.h
|
||||
+++ b/src/common/gazelle_base_func.h
|
||||
@@ -36,7 +36,8 @@ int32_t filename_check(const char* args);
|
||||
|
||||
void gazelle_exit(void);
|
||||
|
||||
-#undef container_of
|
||||
-#define container_of(ptr, type, field) ((type *)(void*)(((char *)(ptr)) - offsetof(type, field)))
|
||||
+/* Do not check if the type of ptr and type->member are the same */
|
||||
+#define container_of_uncheck_ptr(ptr, type, member) \
|
||||
+ ((type *)(void*)(((char *)(ptr)) - offsetof(type, member)))
|
||||
|
||||
#endif /* ifndef __GAZELLE_BASE_FUNC_H__ */
|
||||
diff --git a/src/lstack/api/lstack_epoll.c b/src/lstack/api/lstack_epoll.c
|
||||
index 06c708b..2f48606 100644
|
||||
--- a/src/lstack/api/lstack_epoll.c
|
||||
+++ b/src/lstack/api/lstack_epoll.c
|
||||
@@ -49,8 +49,8 @@ static void change_epollfd_kernel_thread(struct wakeup_poll *wakeup, struct prot
|
||||
|
||||
static inline void add_wakeup_to_stack_wakeuplist(struct wakeup_poll *wakeup, struct protocol_stack *stack)
|
||||
{
|
||||
- if (list_is_null(&wakeup->wakeup_list[stack->stack_idx])) {
|
||||
- list_add_node(&stack->wakeup_list, &wakeup->wakeup_list[stack->stack_idx]);
|
||||
+ if (list_node_null(&wakeup->wakeup_list[stack->stack_idx])) {
|
||||
+ list_add_node(&wakeup->wakeup_list[stack->stack_idx], &stack->wakeup_list);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -73,8 +73,8 @@ void add_sock_event_nolock(struct lwip_sock *sock, uint32_t event)
|
||||
}
|
||||
|
||||
sock->events |= (event == EPOLLERR) ? (EPOLLIN | EPOLLERR) : (event & sock->epoll_events);
|
||||
- if (list_is_null(&sock->event_list)) {
|
||||
- list_add_node(&wakeup->event_list, &sock->event_list);
|
||||
+ if (list_node_null(&sock->event_list)) {
|
||||
+ list_add_node(&sock->event_list, &wakeup->event_list);
|
||||
}
|
||||
return;
|
||||
}
|
||||
@@ -111,7 +111,7 @@ void del_sock_event_nolock(struct lwip_sock *sock, uint32_t event)
|
||||
}
|
||||
|
||||
if (sock->events == 0) {
|
||||
- list_del_node_null(&sock->event_list);
|
||||
+ list_del_node(&sock->event_list);
|
||||
}
|
||||
return;
|
||||
}
|
||||
@@ -127,7 +127,7 @@ void wakeup_stack_epoll(struct protocol_stack *stack)
|
||||
{
|
||||
struct list_node *node, *temp;
|
||||
|
||||
- list_for_each_safe(node, temp, &stack->wakeup_list) {
|
||||
+ list_for_each_node(node, temp, &stack->wakeup_list) {
|
||||
/* When temp is NULL, find the tail node in the wekeup_list and connect it to the back of the node */
|
||||
if (unlikely(temp == NULL)) {
|
||||
struct list_node *nod = &stack->wakeup_list;
|
||||
@@ -139,7 +139,7 @@ void wakeup_stack_epoll(struct protocol_stack *stack)
|
||||
temp = nod;
|
||||
}
|
||||
|
||||
- struct wakeup_poll *wakeup = container_of((node - stack->stack_idx), struct wakeup_poll, wakeup_list);
|
||||
+ struct wakeup_poll *wakeup = container_of_uncheck_ptr((node - stack->stack_idx), struct wakeup_poll, wakeup_list);
|
||||
|
||||
if (__atomic_load_n(&wakeup->in_wait, __ATOMIC_ACQUIRE)) {
|
||||
__atomic_store_n(&wakeup->in_wait, false, __ATOMIC_RELEASE);
|
||||
@@ -148,7 +148,7 @@ void wakeup_stack_epoll(struct protocol_stack *stack)
|
||||
stack->stats.wakeup_events++;
|
||||
}
|
||||
|
||||
- list_del_node_null(&wakeup->wakeup_list[stack->stack_idx]);
|
||||
+ list_del_node(&wakeup->wakeup_list[stack->stack_idx]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -198,8 +198,8 @@ static void rtc_raise_pending_events(struct wakeup_poll *wakeup, struct lwip_soc
|
||||
if (event) {
|
||||
sock->events = event;
|
||||
if (wakeup->type == WAKEUP_EPOLL && (sock->events & sock->epoll_events) &&
|
||||
- list_is_null(&sock->event_list)) {
|
||||
- list_add_node(&wakeup->event_list, &sock->event_list);
|
||||
+ list_node_null(&sock->event_list)) {
|
||||
+ list_add_node(&sock->event_list, &wakeup->event_list);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -227,8 +227,8 @@ static void raise_pending_events(struct wakeup_poll *wakeup, struct lwip_sock *s
|
||||
if (event) {
|
||||
sock->events = event;
|
||||
if (wakeup->type == WAKEUP_EPOLL && (sock->events & sock->epoll_events) &&
|
||||
- list_is_null(&sock->event_list)) {
|
||||
- list_add_node(&wakeup->event_list, &sock->event_list);
|
||||
+ list_node_null(&sock->event_list)) {
|
||||
+ list_add_node(&sock->event_list, &wakeup->event_list);
|
||||
}
|
||||
}
|
||||
pthread_spin_unlock(&wakeup->event_list_lock);
|
||||
@@ -255,7 +255,7 @@ int32_t lstack_do_epoll_create(int32_t fd)
|
||||
}
|
||||
|
||||
for (uint32_t i = 0; i < PROTOCOL_STACK_MAX; i++) {
|
||||
- init_list_node_null(&wakeup->wakeup_list[i]);
|
||||
+ list_init_node(&wakeup->wakeup_list[i]);
|
||||
}
|
||||
|
||||
if (sem_init(&wakeup->wait, 0, 0) != 0) {
|
||||
@@ -266,12 +266,12 @@ int32_t lstack_do_epoll_create(int32_t fd)
|
||||
__atomic_store_n(&wakeup->in_wait, false, __ATOMIC_RELEASE);
|
||||
|
||||
struct protocol_stack_group *stack_group = get_protocol_stack_group();
|
||||
- init_list_node_null(&wakeup->poll_list);
|
||||
+ list_init_node(&wakeup->poll_list);
|
||||
pthread_spin_lock(&stack_group->poll_list_lock);
|
||||
- list_add_node(&stack_group->poll_list, &wakeup->poll_list);
|
||||
+ list_add_node(&wakeup->poll_list, &stack_group->poll_list);
|
||||
pthread_spin_unlock(&stack_group->poll_list_lock);
|
||||
|
||||
- init_list_node(&wakeup->event_list);
|
||||
+ list_init_head(&wakeup->event_list);
|
||||
pthread_spin_init(&wakeup->event_list_lock, PTHREAD_PROCESS_PRIVATE);
|
||||
|
||||
wakeup->type = WAKEUP_EPOLL;
|
||||
@@ -327,15 +327,15 @@ int32_t lstack_epoll_close(int32_t fd)
|
||||
|
||||
struct list_node *node, *temp;
|
||||
pthread_spin_lock(&wakeup->event_list_lock);
|
||||
- list_for_each_safe(node, temp, &wakeup->event_list) {
|
||||
- struct lwip_sock *sock = container_of(node, struct lwip_sock, event_list);
|
||||
- list_del_node_null(&sock->event_list);
|
||||
+ list_for_each_node(node, temp, &wakeup->event_list) {
|
||||
+ struct lwip_sock *sock = list_entry(node, struct lwip_sock, event_list);
|
||||
+ list_del_node(&sock->event_list);
|
||||
}
|
||||
pthread_spin_unlock(&wakeup->event_list_lock);
|
||||
pthread_spin_destroy(&wakeup->event_list_lock);
|
||||
|
||||
pthread_spin_lock(&stack_group->poll_list_lock);
|
||||
- list_del_node_null(&wakeup->poll_list);
|
||||
+ list_del_node(&wakeup->poll_list);
|
||||
pthread_spin_unlock(&stack_group->poll_list_lock);
|
||||
|
||||
sem_destroy(&wakeup->wait);
|
||||
@@ -413,7 +413,7 @@ int32_t lstack_rtc_epoll_ctl(int32_t epfd, int32_t op, int32_t fd, struct epoll_
|
||||
break;
|
||||
case EPOLL_CTL_DEL:
|
||||
sock->epoll_events = 0;
|
||||
- list_del_node_null(&sock->event_list);
|
||||
+ list_del_node(&sock->event_list);
|
||||
break;
|
||||
default:
|
||||
GAZELLE_RETURN(EINVAL);
|
||||
@@ -464,7 +464,7 @@ int32_t lstack_rtw_epoll_ctl(int32_t epfd, int32_t op, int32_t fd, struct epoll_
|
||||
sock->epoll_events = 0;
|
||||
wakeup->stack_fd_cnt[sock->stack->stack_idx]--;
|
||||
pthread_spin_lock(&wakeup->event_list_lock);
|
||||
- list_del_node_null(&sock->event_list);
|
||||
+ list_del_node(&sock->event_list);
|
||||
pthread_spin_unlock(&wakeup->event_list_lock);
|
||||
break;
|
||||
default:
|
||||
@@ -482,18 +482,18 @@ int32_t epoll_lwip_event_nolock(struct wakeup_poll *wakeup, struct epoll_event *
|
||||
int32_t event_num = 0;
|
||||
struct list_node *node, *temp;
|
||||
|
||||
- list_for_each_safe(node, temp, &wakeup->event_list) {
|
||||
- struct lwip_sock *sock = container_of(node, struct lwip_sock, event_list);
|
||||
+ list_for_each_node(node, temp, &wakeup->event_list) {
|
||||
+ struct lwip_sock *sock = list_entry(node, struct lwip_sock, event_list);
|
||||
|
||||
if ((sock->epoll_events & sock->events) == 0) {
|
||||
- list_del_node_null(node);
|
||||
+ list_del_node(node);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (event_num >= maxevents) {
|
||||
/* move list head after the current node, and start traversing from this node next time */
|
||||
- list_del_node_null(&wakeup->event_list);
|
||||
- list_add_node(node, &wakeup->event_list);
|
||||
+ list_del_node(&wakeup->event_list);
|
||||
+ list_add_node(&wakeup->event_list, node);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -502,14 +502,14 @@ int32_t epoll_lwip_event_nolock(struct wakeup_poll *wakeup, struct epoll_event *
|
||||
event_num++;
|
||||
|
||||
if (sock->epoll_events & EPOLLET) {
|
||||
- list_del_node_null(node);
|
||||
+ list_del_node(node);
|
||||
sock->events = 0;
|
||||
}
|
||||
|
||||
/* EPOLLONESHOT: generate event after epoll_ctl add/mod event again
|
||||
epoll_event set 0 avoid generating event util epoll_ctl reset epoll_event */
|
||||
if (sock->epoll_events & EPOLLONESHOT) {
|
||||
- list_del_node_null(node);
|
||||
+ list_del_node(node);
|
||||
sock->epoll_events = 0;
|
||||
}
|
||||
}
|
||||
@@ -654,7 +654,7 @@ int32_t lstack_rtc_epoll_wait(int32_t epfd, struct epoll_event* events, int32_t
|
||||
}
|
||||
|
||||
loop_flag = false;
|
||||
- if (!kernel_num && list_is_empty(&wakeup->event_list) && tmptimeout != 0) {
|
||||
+ if (!kernel_num && list_head_empty(&wakeup->event_list) && tmptimeout != 0) {
|
||||
loop_flag = true;
|
||||
}
|
||||
} while (loop_flag);
|
||||
@@ -721,7 +721,7 @@ static int32_t init_poll_wakeup_data(struct wakeup_poll *wakeup)
|
||||
__atomic_store_n(&wakeup->in_wait, false, __ATOMIC_RELEASE);
|
||||
|
||||
for (uint32_t i = 0; i < PROTOCOL_STACK_MAX; i++) {
|
||||
- init_list_node_null(&wakeup->wakeup_list[i]);
|
||||
+ list_init_node(&wakeup->wakeup_list[i]);
|
||||
}
|
||||
|
||||
wakeup->epollfd = posix_api->epoll_create_fn(POLL_KERNEL_EVENTS);
|
||||
@@ -745,9 +745,9 @@ static int32_t init_poll_wakeup_data(struct wakeup_poll *wakeup)
|
||||
}
|
||||
|
||||
struct protocol_stack_group *stack_group = get_protocol_stack_group();
|
||||
- init_list_node_null(&wakeup->poll_list);
|
||||
+ list_init_node(&wakeup->poll_list);
|
||||
pthread_spin_lock(&stack_group->poll_list_lock);
|
||||
- list_add_node(&stack_group->poll_list, &wakeup->poll_list);
|
||||
+ list_add_node(&wakeup->poll_list, &stack_group->poll_list);
|
||||
pthread_spin_unlock(&stack_group->poll_list_lock);
|
||||
|
||||
int32_t stack_count[PROTOCOL_STACK_MAX] = {0};
|
||||
diff --git a/src/lstack/api/lstack_rtc_api.c b/src/lstack/api/lstack_rtc_api.c
|
||||
index 97623b3..ca0e7ec 100644
|
||||
--- a/src/lstack/api/lstack_rtc_api.c
|
||||
+++ b/src/lstack/api/lstack_rtc_api.c
|
||||
@@ -56,7 +56,7 @@ int rtc_socket(int domain, int type, int protocol)
|
||||
sock->epoll_events = 0;
|
||||
sock->events = 0;
|
||||
sock->wakeup = NULL;
|
||||
- init_list_node_null(&sock->event_list);
|
||||
+ list_init_node(&sock->event_list);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
diff --git a/src/lstack/core/lstack_lwip.c b/src/lstack/core/lstack_lwip.c
|
||||
index f52f39f..c05a763 100644
|
||||
--- a/src/lstack/core/lstack_lwip.c
|
||||
+++ b/src/lstack/core/lstack_lwip.c
|
||||
@@ -173,8 +173,8 @@ int do_lwip_init_sock(int32_t fd)
|
||||
|
||||
sock->stack = stack;
|
||||
|
||||
- init_list_node_null(&sock->recv_list);
|
||||
- init_list_node_null(&sock->event_list);
|
||||
+ list_init_node(&sock->recv_list);
|
||||
+ list_init_node(&sock->event_list);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -187,7 +187,7 @@ void do_lwip_clean_sock(int fd)
|
||||
|
||||
if (sock->wakeup && sock->wakeup->type == WAKEUP_EPOLL) {
|
||||
pthread_spin_lock(&sock->wakeup->event_list_lock);
|
||||
- list_del_node_null(&sock->event_list);
|
||||
+ list_del_node(&sock->event_list);
|
||||
pthread_spin_unlock(&sock->wakeup->event_list_lock);
|
||||
}
|
||||
|
||||
@@ -195,7 +195,7 @@ void do_lwip_clean_sock(int fd)
|
||||
|
||||
reset_sock_data(sock);
|
||||
|
||||
- list_del_node_null(&sock->recv_list);
|
||||
+ list_del_node(&sock->recv_list);
|
||||
}
|
||||
|
||||
void do_lwip_free_pbuf(struct pbuf *pbuf)
|
||||
@@ -1098,8 +1098,8 @@ void do_lwip_add_recvlist(int32_t fd)
|
||||
{
|
||||
struct lwip_sock *sock = lwip_get_socket(fd);
|
||||
|
||||
- if (sock && sock->stack && list_is_null(&sock->recv_list)) {
|
||||
- list_add_node(&sock->stack->recv_list, &sock->recv_list);
|
||||
+ if (sock && sock->stack && list_node_null(&sock->recv_list)) {
|
||||
+ list_add_node(&sock->recv_list, &sock->stack->recv_list);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1109,8 +1109,8 @@ void read_same_node_recv_list(struct protocol_stack *stack)
|
||||
struct list_node *node, *temp;
|
||||
struct lwip_sock *sock;
|
||||
|
||||
- list_for_each_safe(node, temp, list) {
|
||||
- sock = container_of(node, struct lwip_sock, recv_list);
|
||||
+ list_for_each_node(node, temp, list) {
|
||||
+ sock = list_entry(node, struct lwip_sock, recv_list);
|
||||
|
||||
if (sock->same_node_rx_ring != NULL && same_node_ring_count(sock)) {
|
||||
add_sock_event(sock, EPOLLIN);
|
||||
@@ -1125,18 +1125,18 @@ void do_lwip_read_recvlist(struct protocol_stack *stack, uint32_t max_num)
|
||||
struct lwip_sock *sock;
|
||||
uint32_t read_num = 0;
|
||||
|
||||
- list_for_each_safe(node, temp, list) {
|
||||
- sock = container_of(node, struct lwip_sock, recv_list);
|
||||
+ list_for_each_node(node, temp, list) {
|
||||
+ sock = list_entry(node, struct lwip_sock, recv_list);
|
||||
|
||||
if (++read_num > max_num) {
|
||||
/* list head move to next send */
|
||||
list_del_node(&stack->recv_list);
|
||||
- list_add_node(&sock->recv_list, &stack->recv_list);
|
||||
+ list_add_node(&stack->recv_list, &sock->recv_list);
|
||||
break;
|
||||
}
|
||||
|
||||
if (sock->conn == NULL || sock->conn->recvmbox == NULL || rte_ring_count(sock->conn->recvmbox->ring) == 0) {
|
||||
- list_del_node_null(&sock->recv_list);
|
||||
+ list_del_node(&sock->recv_list);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -1215,7 +1215,7 @@ static void copy_pcb_to_conn(struct gazelle_stat_lstack_conn_info *conn, const s
|
||||
conn->send_ring_cnt = (sock->send_ring == NULL) ? 0 : gazelle_ring_readover_count(sock->send_ring);
|
||||
conn->events = sock->events;
|
||||
conn->epoll_events = sock->epoll_events;
|
||||
- conn->eventlist = !list_is_null(&sock->event_list);
|
||||
+ conn->eventlist = !list_node_null(&sock->event_list);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1426,7 +1426,7 @@ err_t find_same_node_memzone(struct tcp_pcb *pcb, struct lwip_sock *nsock)
|
||||
|
||||
/* rcvlink init in alloc_socket() */
|
||||
/* remove from g_rcv_process_list in free_socket */
|
||||
- list_add_node(&nsock->stack->same_node_recv_list, &nsock->recv_list);
|
||||
+ list_add_node(&nsock->recv_list, &nsock->stack->same_node_recv_list);
|
||||
return 0;
|
||||
}
|
||||
|
||||
diff --git a/src/lstack/core/lstack_protocol_stack.c b/src/lstack/core/lstack_protocol_stack.c
|
||||
index 4f5cfae..9bb1b6a 100644
|
||||
--- a/src/lstack/core/lstack_protocol_stack.c
|
||||
+++ b/src/lstack/core/lstack_protocol_stack.c
|
||||
@@ -328,9 +328,9 @@ static int32_t init_stack_value(struct protocol_stack *stack, void *arg)
|
||||
stack->stack_idx = t_params->idx;
|
||||
stack->lwip_stats = &lwip_stats;
|
||||
|
||||
- init_list_node(&stack->recv_list);
|
||||
- init_list_node(&stack->same_node_recv_list);
|
||||
- init_list_node(&stack->wakeup_list);
|
||||
+ list_init_head(&stack->recv_list);
|
||||
+ list_init_head(&stack->same_node_recv_list);
|
||||
+ list_init_head(&stack->wakeup_list);
|
||||
|
||||
sys_calibrate_tsc();
|
||||
stack_stat_init();
|
||||
@@ -588,7 +588,7 @@ int32_t stack_group_init(void)
|
||||
struct protocol_stack_group *stack_group = get_protocol_stack_group();
|
||||
stack_group->stack_num = 0;
|
||||
|
||||
- init_list_node(&stack_group->poll_list);
|
||||
+ list_init_head(&stack_group->poll_list);
|
||||
pthread_spin_init(&stack_group->poll_list_lock, PTHREAD_PROCESS_PRIVATE);
|
||||
pthread_spin_init(&stack_group->socket_lock, PTHREAD_PROCESS_PRIVATE);
|
||||
if (sem_init(&stack_group->sem_stack_setup, 0, 0) < 0) {
|
||||
@@ -1013,7 +1013,7 @@ void stack_clean_epoll(struct rpc_msg *msg)
|
||||
struct protocol_stack *stack = get_protocol_stack();
|
||||
struct wakeup_poll *wakeup = (struct wakeup_poll *)msg->args[MSG_ARG_0].p;
|
||||
|
||||
- list_del_node_null(&wakeup->wakeup_list[stack->stack_idx]);
|
||||
+ list_del_node(&wakeup->wakeup_list[stack->stack_idx]);
|
||||
}
|
||||
|
||||
void stack_mempool_size(struct rpc_msg *msg)
|
||||
@@ -1103,7 +1103,7 @@ void stack_recvlist_count(struct rpc_msg *msg)
|
||||
struct list_node *node;
|
||||
struct list_node *temp;
|
||||
|
||||
- list_for_each_safe(node, temp, list) {
|
||||
+ list_for_each_node(node, temp, list) {
|
||||
count++;
|
||||
}
|
||||
|
||||
@@ -1258,7 +1258,7 @@ static void inline del_accept_in_event(struct lwip_sock *sock)
|
||||
if (!NETCONN_IS_ACCEPTIN(sock)) {
|
||||
sock->events &= ~EPOLLIN;
|
||||
if (sock->events == 0) {
|
||||
- list_del_node_null(&sock->event_list);
|
||||
+ list_del_node(&sock->event_list);
|
||||
}
|
||||
}
|
||||
|
||||
diff --git a/src/lstack/core/lstack_stack_stat.c b/src/lstack/core/lstack_stack_stat.c
|
||||
index e42efde..0411d9e 100644
|
||||
--- a/src/lstack/core/lstack_stack_stat.c
|
||||
+++ b/src/lstack/core/lstack_stack_stat.c
|
||||
@@ -230,8 +230,8 @@ static void get_wakeup_stat(struct protocol_stack_group *stack_group, struct pro
|
||||
|
||||
pthread_spin_lock(&stack_group->poll_list_lock);
|
||||
|
||||
- list_for_each_safe(node, temp, &stack_group->poll_list) {
|
||||
- struct wakeup_poll *wakeup = container_of(node, struct wakeup_poll, poll_list);
|
||||
+ list_for_each_node(node, temp, &stack_group->poll_list) {
|
||||
+ struct wakeup_poll *wakeup = list_entry(node, struct wakeup_poll, poll_list);
|
||||
|
||||
if (wakeup->bind_stack == stack) {
|
||||
stat->kernel_events += wakeup->stat.kernel_events;
|
||||
--
|
||||
2.33.0
|
||||
|
||||
32
0221-fix-EPOLLIN-event-dropd.patch
Normal file
32
0221-fix-EPOLLIN-event-dropd.patch
Normal file
@ -0,0 +1,32 @@
|
||||
From 065b0fe7ac355ba741f7a2be96738c4792e13cfe Mon Sep 17 00:00:00 2001
|
||||
From: compile_success <980965867@qq.com>
|
||||
Date: Thu, 18 Jul 2024 11:59:52 +0000
|
||||
Subject: [PATCH] fix EPOLLIN event dropd
|
||||
|
||||
---
|
||||
src/lstack/api/lstack_epoll.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/lstack/api/lstack_epoll.c b/src/lstack/api/lstack_epoll.c
|
||||
index 06c708b..ff80003 100644
|
||||
--- a/src/lstack/api/lstack_epoll.c
|
||||
+++ b/src/lstack/api/lstack_epoll.c
|
||||
@@ -208,6 +208,7 @@ static void raise_pending_events(struct wakeup_poll *wakeup, struct lwip_sock *s
|
||||
{
|
||||
uint32_t event = 0;
|
||||
|
||||
+ pthread_spin_lock(&wakeup->event_list_lock);
|
||||
if (NETCONN_IS_DATAIN(sock) || NETCONN_IS_ACCEPTIN(sock)) {
|
||||
event |= EPOLLIN;
|
||||
}
|
||||
@@ -216,7 +217,6 @@ static void raise_pending_events(struct wakeup_poll *wakeup, struct lwip_sock *s
|
||||
event |= EPOLLERR | EPOLLIN;
|
||||
}
|
||||
|
||||
- pthread_spin_lock(&wakeup->event_list_lock);
|
||||
if (NETCONN_IS_OUTIDLE(sock)) {
|
||||
/* lwip_netconn_do_connected set LIBOS FLAGS when connected */
|
||||
if (!POSIX_IS_CLOSED(sock) && POSIX_IS_TYPE(sock, POSIX_LWIP)) {
|
||||
--
|
||||
2.33.0
|
||||
|
||||
160
0222-cleancode-refactor-lwipgz_hlist.h.patch
Normal file
160
0222-cleancode-refactor-lwipgz_hlist.h.patch
Normal file
@ -0,0 +1,160 @@
|
||||
From 288f7301ecafb2c53ab4671361109803af118668 Mon Sep 17 00:00:00 2001
|
||||
From: Lemmy Huang <huangliming5@huawei.com>
|
||||
Date: Thu, 11 Jul 2024 16:04:00 +0800
|
||||
Subject: [PATCH] cleancode: refactor lwipgz_hlist.h
|
||||
|
||||
Changed:
|
||||
INIT_HLIST_HEAD -> hlist_init_head
|
||||
INIT_HLIST_NODE -> hlist_init_node
|
||||
hlist_empty -> hlist_head_empty
|
||||
hlist_unhashed -> hlist_node_null
|
||||
hlist_del_init -> hlist_del_node
|
||||
Not changed:
|
||||
hlist_add_head
|
||||
hlist_add_before
|
||||
hlist_add_after
|
||||
Deprecated:
|
||||
INIT_HLIST_CTRL
|
||||
hlist_ctl_del
|
||||
hlist_pop_tail
|
||||
hlist_pop_head
|
||||
hlist_ctl_add_tail
|
||||
hlist_ctl_add_head
|
||||
hlist_ctl_add_after
|
||||
hlist_ctl_add_before
|
||||
|
||||
Signed-off-by: Lemmy Huang <huangliming5@huawei.com>
|
||||
---
|
||||
src/ltran/ltran_stack.c | 6 +++---
|
||||
src/ltran/ltran_tcp_conn.c | 6 +++---
|
||||
src/ltran/ltran_tcp_sock.c | 6 +++---
|
||||
src/ltran/ltran_timer.c | 6 +++---
|
||||
4 files changed, 12 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/src/ltran/ltran_stack.c b/src/ltran/ltran_stack.c
|
||||
index 299fb7a..737d883 100644
|
||||
--- a/src/ltran/ltran_stack.c
|
||||
+++ b/src/ltran/ltran_stack.c
|
||||
@@ -43,7 +43,7 @@ struct gazelle_stack_htable *gazelle_stack_htable_create(uint32_t max_stack_num)
|
||||
}
|
||||
|
||||
for (i = 0; i < GAZELLE_MAX_STACK_HTABLE_SIZE; i++) {
|
||||
- INIT_HLIST_HEAD(&stack_htable->array[i].chain);
|
||||
+ hlist_init_head(&stack_htable->array[i].chain);
|
||||
stack_htable->array[i].chain_size = 0;
|
||||
}
|
||||
stack_htable->cur_stack_num = 0;
|
||||
@@ -68,7 +68,7 @@ void gazelle_stack_htable_destroy(void)
|
||||
while (node != NULL) {
|
||||
stack = hlist_entry(node, typeof(*stack), stack_node);
|
||||
node = node->next;
|
||||
- hlist_del_init(&stack->stack_node);
|
||||
+ hlist_del_node(&stack->stack_node);
|
||||
free(stack);
|
||||
}
|
||||
}
|
||||
@@ -181,7 +181,7 @@ void gazelle_stack_del_by_tid(struct gazelle_stack_htable *stack_htable, uint32_
|
||||
}
|
||||
}
|
||||
|
||||
- hlist_del_init(&stack->stack_node);
|
||||
+ hlist_del_node(&stack->stack_node);
|
||||
stack_htable->cur_stack_num--;
|
||||
stack_hbucket->chain_size--;
|
||||
|
||||
diff --git a/src/ltran/ltran_tcp_conn.c b/src/ltran/ltran_tcp_conn.c
|
||||
index 026d22a..2c8f8ef 100644
|
||||
--- a/src/ltran/ltran_tcp_conn.c
|
||||
+++ b/src/ltran/ltran_tcp_conn.c
|
||||
@@ -40,7 +40,7 @@ struct gazelle_tcp_conn_htable *gazelle_tcp_conn_htable_create(uint32_t max_conn
|
||||
}
|
||||
|
||||
for (i = 0; i < GAZELLE_MAX_CONN_HTABLE_SIZE; i++) {
|
||||
- INIT_HLIST_HEAD(&conn_htable->array[i].chain);
|
||||
+ hlist_init_head(&conn_htable->array[i].chain);
|
||||
conn_htable->array[i].chain_size = 0;
|
||||
}
|
||||
conn_htable->cur_conn_num = 0;
|
||||
@@ -65,7 +65,7 @@ void gazelle_tcp_conn_htable_destroy(void)
|
||||
while (node != NULL) {
|
||||
conn = hlist_entry(node, typeof(*conn), conn_node);
|
||||
node = node->next;
|
||||
- hlist_del_init(&conn->conn_node);
|
||||
+ hlist_del_node(&conn->conn_node);
|
||||
rte_free(conn);
|
||||
}
|
||||
}
|
||||
@@ -175,7 +175,7 @@ void gazelle_conn_del_by_quintuple(struct gazelle_tcp_conn_htable *conn_htable,
|
||||
return;
|
||||
}
|
||||
|
||||
- hlist_del_init(&conn->conn_node);
|
||||
+ hlist_del_node(&conn->conn_node);
|
||||
rte_free(conn);
|
||||
conn_htable->cur_conn_num--;
|
||||
conn_hbucket->chain_size--;
|
||||
diff --git a/src/ltran/ltran_tcp_sock.c b/src/ltran/ltran_tcp_sock.c
|
||||
index eef2821..1e06bd7 100644
|
||||
--- a/src/ltran/ltran_tcp_sock.c
|
||||
+++ b/src/ltran/ltran_tcp_sock.c
|
||||
@@ -51,7 +51,7 @@ struct gazelle_tcp_sock_htable *gazelle_tcp_sock_htable_create(uint32_t max_tcp_
|
||||
}
|
||||
|
||||
for (i = 0; i < GAZELLE_MAX_TCP_SOCK_HTABLE_SIZE; i++) {
|
||||
- INIT_HLIST_HEAD(&tcp_sock_htable->array[i].chain);
|
||||
+ hlist_init_head(&tcp_sock_htable->array[i].chain);
|
||||
tcp_sock_htable->array[i].chain_size = 0;
|
||||
}
|
||||
tcp_sock_htable->cur_tcp_sock_num = 0;
|
||||
@@ -77,7 +77,7 @@ void gazelle_tcp_sock_htable_destroy(void)
|
||||
while (node != NULL) {
|
||||
tcp_sock = hlist_entry(node, typeof(*tcp_sock), tcp_sock_node);
|
||||
node = node->next;
|
||||
- hlist_del_init(&tcp_sock->tcp_sock_node);
|
||||
+ hlist_del_node(&tcp_sock->tcp_sock_node);
|
||||
free(tcp_sock);
|
||||
}
|
||||
}
|
||||
@@ -186,7 +186,7 @@ void gazelle_sock_del_by_ipporttid(struct gazelle_tcp_sock_htable *tcp_sock_htab
|
||||
return;
|
||||
}
|
||||
|
||||
- hlist_del_init(&tcp_sock->tcp_sock_node);
|
||||
+ hlist_del_node(&tcp_sock->tcp_sock_node);
|
||||
free(tcp_sock);
|
||||
tcp_sock_htable->cur_tcp_sock_num--;
|
||||
tcp_sock_hbucket->chain_size--;
|
||||
diff --git a/src/ltran/ltran_timer.c b/src/ltran/ltran_timer.c
|
||||
index 87046cb..51d6544 100644
|
||||
--- a/src/ltran/ltran_timer.c
|
||||
+++ b/src/ltran/ltran_timer.c
|
||||
@@ -63,7 +63,7 @@ void gazelle_detect_sock_logout(struct gazelle_tcp_sock_htable *tcp_sock_htable)
|
||||
tcp_sock = hlist_entry(node, typeof(*tcp_sock), tcp_sock_node);
|
||||
node = node->next;
|
||||
if (!INSTANCE_IS_ON(tcp_sock)) {
|
||||
- hlist_del_init(&tcp_sock->tcp_sock_node);
|
||||
+ hlist_del_node(&tcp_sock->tcp_sock_node);
|
||||
tcp_sock_htable->cur_tcp_sock_num--;
|
||||
tcp_sock_htable->array[i].chain_size--;
|
||||
LTRAN_DEBUG("delete the tcp sock htable: tid %u ip %u port %u\n",
|
||||
@@ -99,7 +99,7 @@ void gazelle_detect_conn_logout(struct gazelle_tcp_conn_htable *conn_htable)
|
||||
conn = hlist_entry(node, typeof(*conn), conn_node);
|
||||
node = node->next;
|
||||
if (!INSTANCE_IS_ON(conn)) {
|
||||
- hlist_del_init(&conn->conn_node);
|
||||
+ hlist_del_node(&conn->conn_node);
|
||||
conn_htable->cur_conn_num--;
|
||||
conn_htable->array[i].chain_size--;
|
||||
LTRAN_DEBUG("delete the tcp conn htable: tid %u quintuple[%u %u %u %u %u]\n",
|
||||
@@ -146,7 +146,7 @@ void gazelle_delete_aging_conn(struct gazelle_tcp_conn_htable *conn_htable)
|
||||
continue;
|
||||
}
|
||||
|
||||
- hlist_del_init(&conn->conn_node);
|
||||
+ hlist_del_node(&conn->conn_node);
|
||||
conn_htable->cur_conn_num--;
|
||||
conn_htable->array[i].chain_size--;
|
||||
if (conn->sock) {
|
||||
--
|
||||
2.33.0
|
||||
|
||||
24
0223-add-sem-post-when-update-event.patch
Normal file
24
0223-add-sem-post-when-update-event.patch
Normal file
@ -0,0 +1,24 @@
|
||||
From 2ad0be3590c8ac380c2b0e87f28653b994916c65 Mon Sep 17 00:00:00 2001
|
||||
From: compile_success <980965867@qq.com>
|
||||
Date: Thu, 18 Jul 2024 13:40:15 +0000
|
||||
Subject: [PATCH] add sem post when update event
|
||||
|
||||
---
|
||||
src/lstack/api/lstack_epoll.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/src/lstack/api/lstack_epoll.c b/src/lstack/api/lstack_epoll.c
|
||||
index e92faac..417499b 100644
|
||||
--- a/src/lstack/api/lstack_epoll.c
|
||||
+++ b/src/lstack/api/lstack_epoll.c
|
||||
@@ -229,6 +229,7 @@ static void raise_pending_events(struct wakeup_poll *wakeup, struct lwip_sock *s
|
||||
if (wakeup->type == WAKEUP_EPOLL && (sock->events & sock->epoll_events) &&
|
||||
list_node_null(&sock->event_list)) {
|
||||
list_add_node(&sock->event_list, &wakeup->event_list);
|
||||
+ sem_post(&wakeup->wait);
|
||||
}
|
||||
}
|
||||
pthread_spin_unlock(&wakeup->event_list_lock);
|
||||
--
|
||||
2.33.0
|
||||
|
||||
673
0224-cleancode-refactor-sys_now-and-lwip_ioctl.patch
Normal file
673
0224-cleancode-refactor-sys_now-and-lwip_ioctl.patch
Normal file
@ -0,0 +1,673 @@
|
||||
From 107e0eda4e255dc93aa94a9ffa31427f912341f5 Mon Sep 17 00:00:00 2001
|
||||
From: Lemmy Huang <huangliming5@huawei.com>
|
||||
Date: Fri, 12 Jul 2024 11:02:59 +0800
|
||||
Subject: [PATCH] cleancode: refactor sys_now and lwip_ioctl
|
||||
|
||||
Signed-off-by: Lemmy Huang <huangliming5@huawei.com>
|
||||
---
|
||||
src/common/gazelle_dfx_msg.h | 8 ++++-
|
||||
src/lstack/api/lstack_epoll.c | 4 ++-
|
||||
src/lstack/api/lstack_wrap.c | 47 +++++++++++--------------
|
||||
src/lstack/core/lstack_cfg.c | 1 -
|
||||
src/lstack/core/lstack_control_plane.c | 21 ++++++-----
|
||||
src/lstack/core/lstack_dpdk.c | 10 +++---
|
||||
src/lstack/core/lstack_init.c | 2 --
|
||||
src/lstack/core/lstack_lwip.c | 19 +++++-----
|
||||
src/lstack/core/lstack_protocol_stack.c | 12 +++----
|
||||
src/lstack/core/lstack_stack_stat.c | 29 +++------------
|
||||
src/lstack/include/lstack_stack_stat.h | 1 -
|
||||
src/lstack/include/lstack_thread_rpc.h | 1 -
|
||||
src/lstack/netif/lstack_ethdev.c | 3 +-
|
||||
src/ltran/ltran_forward.c | 10 +++---
|
||||
src/ltran/ltran_stat.c | 2 +-
|
||||
src/ltran/ltran_stat.h | 6 ----
|
||||
src/ltran/ltran_timer.c | 14 +++-----
|
||||
src/ltran/ltran_timer.h | 4 +--
|
||||
test/unitest/stub.c | 6 ----
|
||||
19 files changed, 79 insertions(+), 121 deletions(-)
|
||||
|
||||
diff --git a/src/common/gazelle_dfx_msg.h b/src/common/gazelle_dfx_msg.h
|
||||
index a2ec07b..8eb54ff 100644
|
||||
--- a/src/common/gazelle_dfx_msg.h
|
||||
+++ b/src/common/gazelle_dfx_msg.h
|
||||
@@ -87,6 +87,12 @@ enum GAZELLE_LATENCY_TYPE {
|
||||
GAZELLE_LATENCY_MAX,
|
||||
};
|
||||
|
||||
+enum GAZELLE_TCP_LIST_STATE {
|
||||
+ GAZELLE_ACTIVE_LIST,
|
||||
+ GAZELLE_LISTEN_LIST,
|
||||
+ GAZELLE_TIME_WAIT_LIST,
|
||||
+};
|
||||
+
|
||||
struct gazelle_stack_stat {
|
||||
uint64_t wakeup_events;
|
||||
uint64_t write_lwip_cnt;
|
||||
@@ -240,7 +246,6 @@ struct gazelle_stat_lstack_proto {
|
||||
};
|
||||
|
||||
|
||||
-/* same as define in lwip/tcp.h - struct tcp_pcb_dp */
|
||||
struct gazelle_stat_lstack_conn_info {
|
||||
uint32_t state;
|
||||
gz_addr_t rip;
|
||||
@@ -252,6 +257,7 @@ struct gazelle_stat_lstack_conn_info {
|
||||
uint32_t send_ring_cnt;
|
||||
uint32_t recv_ring_cnt;
|
||||
uint32_t tcp_sub_state;
|
||||
+
|
||||
uint32_t cwn;
|
||||
uint32_t rcv_wnd;
|
||||
uint32_t snd_wnd;
|
||||
diff --git a/src/lstack/api/lstack_epoll.c b/src/lstack/api/lstack_epoll.c
|
||||
index 2f48606..3ad22b9 100644
|
||||
--- a/src/lstack/api/lstack_epoll.c
|
||||
+++ b/src/lstack/api/lstack_epoll.c
|
||||
@@ -650,7 +650,9 @@ int32_t lstack_rtc_epoll_wait(int32_t epfd, struct epoll_event* events, int32_t
|
||||
}
|
||||
}
|
||||
if (tmptimeout > 0) {
|
||||
- tmptimeout = update_timeout(tmptimeout, poll_ts);
|
||||
+ if (tmptimeout <= sys_now() - poll_ts) {
|
||||
+ tmptimeout = 0;
|
||||
+ }
|
||||
}
|
||||
|
||||
loop_flag = false;
|
||||
diff --git a/src/lstack/api/lstack_wrap.c b/src/lstack/api/lstack_wrap.c
|
||||
index b19990e..976a3f3 100644
|
||||
--- a/src/lstack/api/lstack_wrap.c
|
||||
+++ b/src/lstack/api/lstack_wrap.c
|
||||
@@ -647,36 +647,31 @@ static int32_t do_select(int32_t nfds, fd_set *readfds, fd_set *writefds, fd_set
|
||||
return g_wrap_api->select_fn(nfds, readfds, writefds, exceptfds, timeout);
|
||||
}
|
||||
|
||||
-#define WRAP_VA_PARAM(_fd, _cmd, _lwip_fcntl, _fcntl_fn) \
|
||||
+#define POSIX_VA_PARAM(fd, cmd, type, lwip_fn, kernel_fn) \
|
||||
do { \
|
||||
- unsigned long val; \
|
||||
- va_list ap; \
|
||||
- va_start(ap, _cmd); \
|
||||
- val = va_arg(ap, typeof(val)); \
|
||||
- va_end(ap); \
|
||||
- struct lwip_sock *sock = lwip_get_socket(_fd); \
|
||||
- if (select_posix_path() == POSIX_KERNEL || \
|
||||
- select_sock_posix_path(sock) == POSIX_KERNEL) \
|
||||
- return _fcntl_fn(_fd, _cmd, val); \
|
||||
- int32_t ret1 = _fcntl_fn(_fd, _cmd, val); \
|
||||
- if (ret1 == -1) { \
|
||||
- LSTACK_LOG(ERR, LSTACK, "fd(%d) kernel path call failed, errno is %d, maybe not error\n", \
|
||||
- _fd, errno); \
|
||||
- return ret1; \
|
||||
+ unsigned long __val; \
|
||||
+ va_list __ap; \
|
||||
+ va_start(__ap, cmd); \
|
||||
+ __val = va_arg(__ap, typeof(__val)); \
|
||||
+ va_end(__ap); \
|
||||
+ /* always try kernel */ \
|
||||
+ int __ret1 = kernel_fn(fd, cmd, __val); \
|
||||
+ if (__ret1 == -1 || select_sock_posix_path(lwip_get_socket(fd)) == POSIX_KERNEL) { \
|
||||
+ return __ret1; \
|
||||
} \
|
||||
- int32_t ret2 = _lwip_fcntl(_fd, _cmd, val); \
|
||||
+ int __ret2 = lwip_fn(fd, cmd, (type)__val); \
|
||||
/*
|
||||
* if function not implemented, fcntl get/set context will not be modifyed by user path,
|
||||
* return kernel path result
|
||||
*/ \
|
||||
- if (ret2 == -1) { \
|
||||
+ if (__ret2 == -1) { \
|
||||
if (errno == ENOSYS) { \
|
||||
- return ret1; \
|
||||
+ return __ret1; \
|
||||
} \
|
||||
LSTACK_LOG(ERR, LSTACK, "fd(%d) user path call failed, errno is %d, maybe not error\n", \
|
||||
- _fd, errno); \
|
||||
+ fd, errno); \
|
||||
} \
|
||||
- return ret2; \
|
||||
+ return __ret2; \
|
||||
} while (0)
|
||||
|
||||
/* --------------------------------------------------------
|
||||
@@ -701,15 +696,15 @@ int32_t epoll_wait(int32_t epfd, struct epoll_event* events, int32_t maxevents,
|
||||
}
|
||||
int32_t fcntl64(int32_t s, int32_t cmd, ...)
|
||||
{
|
||||
- WRAP_VA_PARAM(s, cmd, lwip_fcntl, posix_api->fcntl64_fn);
|
||||
+ POSIX_VA_PARAM(s, cmd, int, lwip_fcntl, posix_api->fcntl64_fn);
|
||||
}
|
||||
int32_t fcntl(int32_t s, int32_t cmd, ...)
|
||||
{
|
||||
- WRAP_VA_PARAM(s, cmd, lwip_fcntl, posix_api->fcntl_fn);
|
||||
+ POSIX_VA_PARAM(s, cmd, int, lwip_fcntl, posix_api->fcntl_fn);
|
||||
}
|
||||
int32_t ioctl(int32_t s, int32_t cmd, ...)
|
||||
{
|
||||
- WRAP_VA_PARAM(s, cmd, lwip_ioctl, posix_api->ioctl_fn);
|
||||
+ POSIX_VA_PARAM(s, cmd, void*, lwip_ioctl, posix_api->ioctl_fn);
|
||||
}
|
||||
int32_t accept(int32_t s, struct sockaddr *addr, socklen_t *addrlen)
|
||||
{
|
||||
@@ -853,15 +848,15 @@ int32_t __wrap_epoll_wait(int32_t epfd, struct epoll_event* events, int32_t maxe
|
||||
}
|
||||
int32_t __wrap_fcntl64(int32_t s, int32_t cmd, ...)
|
||||
{
|
||||
- WRAP_VA_PARAM(s, cmd, lwip_fcntl, posix_api->fcntl64_fn);
|
||||
+ POSIX_VA_PARAM(s, cmd, int, lwip_fcntl, posix_api->fcntl64_fn);
|
||||
}
|
||||
int32_t __wrap_fcntl(int32_t s, int32_t cmd, ...)
|
||||
{
|
||||
- WRAP_VA_PARAM(s, cmd, lwip_fcntl, posix_api->fcntl_fn);
|
||||
+ POSIX_VA_PARAM(s, cmd, int, lwip_fcntl, posix_api->fcntl_fn);
|
||||
}
|
||||
int32_t __wrap_ioctl(int32_t s, int32_t cmd, ...)
|
||||
{
|
||||
- WRAP_VA_PARAM(s, cmd, lwip_ioctl, posix_api->ioctl_fn);
|
||||
+ POSIX_VA_PARAM(s, cmd, void*, lwip_ioctl, posix_api->ioctl_fn);
|
||||
}
|
||||
|
||||
int32_t __wrap_accept(int32_t s, struct sockaddr *addr, socklen_t *addrlen)
|
||||
diff --git a/src/lstack/core/lstack_cfg.c b/src/lstack/core/lstack_cfg.c
|
||||
index a1f6c2f..cd81edb 100644
|
||||
--- a/src/lstack/core/lstack_cfg.c
|
||||
+++ b/src/lstack/core/lstack_cfg.c
|
||||
@@ -25,7 +25,6 @@
|
||||
|
||||
#include <rte_eth_bond.h>
|
||||
#include <lwip/lwipgz_sock.h>
|
||||
-#include <lwip/lwipgz_posix_api.h>
|
||||
#include <lwip/inet.h>
|
||||
|
||||
#include "common/gazelle_reg_msg.h"
|
||||
diff --git a/src/lstack/core/lstack_control_plane.c b/src/lstack/core/lstack_control_plane.c
|
||||
index f1e3064..11f5129 100644
|
||||
--- a/src/lstack/core/lstack_control_plane.c
|
||||
+++ b/src/lstack/core/lstack_control_plane.c
|
||||
@@ -18,11 +18,14 @@
|
||||
#include <sys/socket.h>
|
||||
#include <securec.h>
|
||||
|
||||
-#include <lwip/tcp.h>
|
||||
#include <rte_eal.h>
|
||||
#include <rte_errno.h>
|
||||
+#include <rte_cycles.h>
|
||||
+
|
||||
+#include <lwip/tcp.h>
|
||||
#include <lwip/lwipgz_posix_api.h>
|
||||
#include <lwip/lwipgz_flow.h>
|
||||
+#include <lwip/arch/sys_arch.h>
|
||||
|
||||
#include "lstack_cfg.h"
|
||||
#include "lstack_dpdk.h"
|
||||
@@ -353,7 +356,7 @@ static int32_t client_reg_proc_attach(__attribute__((__unused__)) bool is_reconn
|
||||
return 0;
|
||||
}
|
||||
|
||||
-static int32_t reg_conn(enum tcp_list_state table_state, enum reg_ring_type reg_type,
|
||||
+static int32_t reg_conn(enum GAZELLE_TCP_LIST_STATE table_state, enum reg_ring_type reg_type,
|
||||
const struct gazelle_stat_lstack_conn *conn)
|
||||
{
|
||||
struct gazelle_quintuple qtuple;
|
||||
@@ -370,7 +373,7 @@ static int32_t reg_conn(enum tcp_list_state table_state, enum reg_ring_type reg_
|
||||
qtuple.dst_ip = conn->conn_list[i].rip;
|
||||
qtuple.dst_port = lwip_htons(conn->conn_list[i].r_port);
|
||||
|
||||
- if ((table_state == LISTEN_LIST) && (!match_host_addr((ip_addr_t *)&qtuple.src_ip))) {
|
||||
+ if ((table_state == GAZELLE_LISTEN_LIST) && (!match_host_addr((ip_addr_t *)&qtuple.src_ip))) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -398,16 +401,16 @@ void thread_register_phase1(struct rpc_msg *msg)
|
||||
}
|
||||
|
||||
struct gazelle_stat_lstack_conn *conn = (struct gazelle_stat_lstack_conn *)msg->args[MSG_ARG_0].p;
|
||||
- ret = reg_conn(ACTIVE_LIST, REG_RING_TCP_CONNECT, conn);
|
||||
+ ret = reg_conn(GAZELLE_ACTIVE_LIST, REG_RING_TCP_CONNECT, conn);
|
||||
if (ret != 0) {
|
||||
- LSTACK_LOG(ERR, LSTACK, "ACTIVE_LIST rereg conn fail ret=%d\n", ret);
|
||||
+ LSTACK_LOG(ERR, LSTACK, "GAZELLE_ACTIVE_LIST rereg conn fail ret=%d\n", ret);
|
||||
msg->result = ret;
|
||||
return;
|
||||
}
|
||||
|
||||
- ret = reg_conn(TIME_WAIT_LIST, REG_RING_TCP_CONNECT, conn);
|
||||
+ ret = reg_conn(GAZELLE_TIME_WAIT_LIST, REG_RING_TCP_CONNECT, conn);
|
||||
if (ret != 0) {
|
||||
- LSTACK_LOG(ERR, LSTACK, "TIME_WAIT_LIST rereg conn fail ret=%d\n", ret);
|
||||
+ LSTACK_LOG(ERR, LSTACK, "GAZELLE_TIME_WAIT_LIST rereg conn fail ret=%d\n", ret);
|
||||
}
|
||||
msg->result = ret;
|
||||
}
|
||||
@@ -416,9 +419,9 @@ void thread_register_phase2(struct rpc_msg *msg)
|
||||
{
|
||||
struct gazelle_stat_lstack_conn *conn = (struct gazelle_stat_lstack_conn *)msg->args[MSG_ARG_0].p;
|
||||
|
||||
- int32_t ret = reg_conn(LISTEN_LIST, REG_RING_TCP_LISTEN, conn);
|
||||
+ int32_t ret = reg_conn(GAZELLE_LISTEN_LIST, REG_RING_TCP_LISTEN, conn);
|
||||
if (ret != 0) {
|
||||
- LSTACK_LOG(ERR, LSTACK, "LISTEN_LIST rereg conn fail ret=%d\n", ret);
|
||||
+ LSTACK_LOG(ERR, LSTACK, "GAZELLE_LISTEN_LIST rereg conn fail ret=%d\n", ret);
|
||||
}
|
||||
|
||||
msg->result = ret;
|
||||
diff --git a/src/lstack/core/lstack_dpdk.c b/src/lstack/core/lstack_dpdk.c
|
||||
index a095cbd..e17242c 100644
|
||||
--- a/src/lstack/core/lstack_dpdk.c
|
||||
+++ b/src/lstack/core/lstack_dpdk.c
|
||||
@@ -32,16 +32,14 @@
|
||||
#endif
|
||||
#include <rte_pdump.h>
|
||||
#include <rte_thash.h>
|
||||
-#include <lwip/lwipgz_posix_api.h>
|
||||
-#include <lwipopts.h>
|
||||
-#include <lwip/pbuf.h>
|
||||
-#include <lwip/lwipgz_flow.h>
|
||||
-#include <lwip/priv/tcp_priv.h>
|
||||
-
|
||||
#include <rte_eth_bond_8023ad.h>
|
||||
#include <rte_eth_bond.h>
|
||||
#include <rte_ethdev.h>
|
||||
|
||||
+#include <lwip/pbuf.h>
|
||||
+#include <lwip/lwipgz_flow.h>
|
||||
+#include <lwip/priv/tcp_priv.h>
|
||||
+
|
||||
#include "lstack_log.h"
|
||||
#include "common/dpdk_common.h"
|
||||
#include "lstack_protocol_stack.h"
|
||||
diff --git a/src/lstack/core/lstack_init.c b/src/lstack/core/lstack_init.c
|
||||
index 54ee97e..e89e19c 100644
|
||||
--- a/src/lstack/core/lstack_init.c
|
||||
+++ b/src/lstack/core/lstack_init.c
|
||||
@@ -29,8 +29,6 @@
|
||||
#include <lwip/def.h>
|
||||
#include <lwip/init.h>
|
||||
#include <lwip/lwipgz_sock.h>
|
||||
-#include <lwip/tcpip.h>
|
||||
-#include <lwip/lwipgz_memp.h>
|
||||
#include <lwip/lwipopts.h>
|
||||
#include <lwip/lwipgz_posix_api.h>
|
||||
|
||||
diff --git a/src/lstack/core/lstack_lwip.c b/src/lstack/core/lstack_lwip.c
|
||||
index c05a763..271e94f 100644
|
||||
--- a/src/lstack/core/lstack_lwip.c
|
||||
+++ b/src/lstack/core/lstack_lwip.c
|
||||
@@ -12,20 +12,21 @@
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <stdatomic.h>
|
||||
+#include <securec.h>
|
||||
+
|
||||
+#include <rte_errno.h>
|
||||
+#include <rte_malloc.h>
|
||||
+
|
||||
#include <lwip/sockets.h>
|
||||
#include <lwip/tcp.h>
|
||||
#include <lwip/udp.h>
|
||||
#include <lwipgz_sock.h>
|
||||
-#include <arch/sys_arch.h>
|
||||
#include <lwip/pbuf.h>
|
||||
#include <lwip/priv/tcp_priv.h>
|
||||
#include <lwip/lwipgz_posix_api.h>
|
||||
#include <lwip/api.h>
|
||||
#include <lwip/tcp.h>
|
||||
#include <lwip/prot/etharp.h>
|
||||
-#include <securec.h>
|
||||
-#include <rte_errno.h>
|
||||
-#include <rte_malloc.h>
|
||||
|
||||
#include "common/gazelle_base_func.h"
|
||||
#include "lstack_ethdev.h"
|
||||
@@ -355,7 +356,7 @@ static inline ssize_t app_buff_write(struct lwip_sock *sock, void *buf, size_t l
|
||||
(void)gazelle_ring_read(sock->send_ring, (void **)pbufs, write_num);
|
||||
|
||||
if (get_protocol_stack_group()->latency_start) {
|
||||
- uint64_t time_stamp = get_current_time();
|
||||
+ uint64_t time_stamp = sys_now_us();
|
||||
time_stamp_into_pbuf(write_num, pbufs, time_stamp);
|
||||
}
|
||||
|
||||
@@ -912,7 +913,7 @@ static bool recv_break_for_err(struct lwip_sock *sock)
|
||||
static int recv_ring_get_one(struct lwip_sock *sock, bool noblock, struct pbuf **pbuf)
|
||||
{
|
||||
int32_t expect = 1; // only get one pbuf
|
||||
- uint64_t time_stamp = get_current_time();
|
||||
+ uint64_t time_stamp = sys_now_us();
|
||||
|
||||
if (sock->recv_lastdata != NULL) {
|
||||
*pbuf = sock->recv_lastdata;
|
||||
@@ -1250,20 +1251,20 @@ uint32_t do_lwip_get_conntable(struct gazelle_stat_lstack_conn_info *conn,
|
||||
}
|
||||
|
||||
for (pcb = tcp_active_pcbs; pcb != NULL && conn_num < max_num; pcb = pcb->next) {
|
||||
- conn[conn_num].state = ACTIVE_LIST;
|
||||
+ conn[conn_num].state = GAZELLE_ACTIVE_LIST;
|
||||
copy_pcb_to_conn(conn + conn_num, pcb);
|
||||
conn_num++;
|
||||
}
|
||||
|
||||
for (pcb = tcp_tw_pcbs; pcb != NULL && conn_num < max_num; pcb = pcb->next) {
|
||||
- conn[conn_num].state = TIME_WAIT_LIST;
|
||||
+ conn[conn_num].state = GAZELLE_TIME_WAIT_LIST;
|
||||
copy_pcb_to_conn(conn + conn_num, pcb);
|
||||
conn_num++;
|
||||
}
|
||||
|
||||
for (struct tcp_pcb_listen *pcbl = tcp_listen_pcbs.listen_pcbs; pcbl != NULL && conn_num < max_num;
|
||||
pcbl = pcbl->next) {
|
||||
- conn[conn_num].state = LISTEN_LIST;
|
||||
+ conn[conn_num].state = GAZELLE_LISTEN_LIST;
|
||||
conn[conn_num].lip = *((gz_addr_t *)&pcbl->local_ip);
|
||||
conn[conn_num].l_port = pcbl->local_port;
|
||||
conn[conn_num].tcp_sub_state = pcbl->state;
|
||||
diff --git a/src/lstack/core/lstack_protocol_stack.c b/src/lstack/core/lstack_protocol_stack.c
|
||||
index 9bb1b6a..6f2e84e 100644
|
||||
--- a/src/lstack/core/lstack_protocol_stack.c
|
||||
+++ b/src/lstack/core/lstack_protocol_stack.c
|
||||
@@ -12,15 +12,14 @@
|
||||
|
||||
#include <pthread.h>
|
||||
#include <stdatomic.h>
|
||||
+#include <securec.h>
|
||||
+#include <numa.h>
|
||||
|
||||
#include <lwip/sockets.h>
|
||||
-#include <lwip/tcpip.h>
|
||||
+#include <lwip/init.h>
|
||||
#include <lwip/tcp.h>
|
||||
-#include <lwip/lwipgz_memp.h>
|
||||
#include <lwipgz_sock.h>
|
||||
#include <lwip/lwipgz_posix_api.h>
|
||||
-#include <securec.h>
|
||||
-#include <numa.h>
|
||||
|
||||
#include "common/gazelle_base_func.h"
|
||||
#include "lstack_thread_rpc.h"
|
||||
@@ -332,9 +331,6 @@ static int32_t init_stack_value(struct protocol_stack *stack, void *arg)
|
||||
list_init_head(&stack->same_node_recv_list);
|
||||
list_init_head(&stack->wakeup_list);
|
||||
|
||||
- sys_calibrate_tsc();
|
||||
- stack_stat_init();
|
||||
-
|
||||
stack_group->stacks[t_params->idx] = stack;
|
||||
set_stack_idx(t_params->idx);
|
||||
|
||||
@@ -424,7 +420,7 @@ static struct protocol_stack *stack_thread_init(void *arg)
|
||||
}
|
||||
RTE_PER_LCORE(_lcore_id) = stack->cpu_id;
|
||||
|
||||
- tcpip_init(NULL, NULL);
|
||||
+ lwip_init();
|
||||
|
||||
if (use_ltran()) {
|
||||
if (client_reg_thrd_ring() != 0) {
|
||||
diff --git a/src/lstack/core/lstack_stack_stat.c b/src/lstack/core/lstack_stack_stat.c
|
||||
index 0411d9e..91ca49a 100644
|
||||
--- a/src/lstack/core/lstack_stack_stat.c
|
||||
+++ b/src/lstack/core/lstack_stack_stat.c
|
||||
@@ -31,25 +31,6 @@
|
||||
#include "lstack_stack_stat.h"
|
||||
#include "lstack_virtio.h"
|
||||
|
||||
-#define US_PER_SEC 1000000
|
||||
-
|
||||
-static uint64_t g_cycles_per_us;
|
||||
-
|
||||
-void stack_stat_init(void)
|
||||
-{
|
||||
- uint64_t freq = rte_get_tsc_hz();
|
||||
- g_cycles_per_us = (freq + US_PER_SEC - 1) / US_PER_SEC;
|
||||
-}
|
||||
-
|
||||
-uint64_t get_current_time(void)
|
||||
-{
|
||||
- if (g_cycles_per_us == 0) {
|
||||
- return 0;
|
||||
- }
|
||||
-
|
||||
- return (rte_rdtsc() / g_cycles_per_us);
|
||||
-}
|
||||
-
|
||||
void time_stamp_transfer_pbuf(struct pbuf *pbuf_old, struct pbuf *pbuf_new)
|
||||
{
|
||||
if (!get_protocol_stack_group()->latency_start) {
|
||||
@@ -71,12 +52,12 @@ void time_stamp_transfer_pbuf(struct pbuf *pbuf_old, struct pbuf *pbuf_new)
|
||||
|
||||
void time_stamp_into_rpcmsg(struct lwip_sock *sock)
|
||||
{
|
||||
- sock->stamp.rpc_time_stamp = get_current_time();
|
||||
+ sock->stamp.rpc_time_stamp = sys_now_us();
|
||||
}
|
||||
|
||||
void time_stamp_into_recvmbox(struct lwip_sock *sock)
|
||||
{
|
||||
- sock->stamp.mbox_time_stamp = get_current_time();
|
||||
+ sock->stamp.mbox_time_stamp = sys_now_us();
|
||||
}
|
||||
|
||||
void time_stamp_record(int fd, struct pbuf *pbuf)
|
||||
@@ -108,7 +89,7 @@ void calculate_sock_latency(struct gazelle_stack_latency *stack_latency, struct
|
||||
return;
|
||||
}
|
||||
|
||||
- latency = get_current_time() - stamp;
|
||||
+ latency = sys_now_us() - stamp;
|
||||
latency_stat = &stack_latency->latency[type];
|
||||
|
||||
latency_stat->latency_total += latency;
|
||||
@@ -147,7 +128,7 @@ void calculate_lstack_latency(struct gazelle_stack_latency *stack_latency, const
|
||||
}
|
||||
|
||||
if (time_record == 0) {
|
||||
- lt->stamp_seg[type] = get_current_time() - lt->stamp;
|
||||
+ lt->stamp_seg[type] = sys_now_us() - lt->stamp;
|
||||
} else {
|
||||
lt->stamp_seg[type] = time_record > (lt->stamp_seg[type - 1] + lt->stamp) ?
|
||||
(time_record - lt->stamp) : lt->stamp_seg[type - 1];
|
||||
@@ -212,7 +193,7 @@ static void set_latency_start_flag(bool start)
|
||||
if (ret != 0) {
|
||||
LSTACK_LOG(ERR, LSTACK, "memset_s faile\n");
|
||||
}
|
||||
- stack->latency.start_time = get_current_time();
|
||||
+ stack->latency.start_time = sys_now_us();
|
||||
|
||||
for (uint32_t j = 0; j < GAZELLE_LATENCY_MAX; j++) {
|
||||
stack->latency.latency[j].latency_min = ~((uint64_t)0);
|
||||
diff --git a/src/lstack/include/lstack_stack_stat.h b/src/lstack/include/lstack_stack_stat.h
|
||||
index 9fca04a..ef33365 100644
|
||||
--- a/src/lstack/include/lstack_stack_stat.h
|
||||
+++ b/src/lstack/include/lstack_stack_stat.h
|
||||
@@ -31,7 +31,6 @@ void calculate_sock_latency(struct gazelle_stack_latency *stack_latency, struct
|
||||
void stack_stat_init(void);
|
||||
int handle_stack_cmd(int fd, struct gazelle_stat_msg_request *msg);
|
||||
int handle_dpdk_cmd(int fd, enum GAZELLE_STAT_MODE stat_mode);
|
||||
-uint64_t get_current_time(void);
|
||||
void lstack_get_low_power_info(struct gazelle_stat_low_power_info *low_power_info);
|
||||
void unregister_wakeup(struct protocol_stack *stack, struct wakeup_poll *wakeup);
|
||||
void lstack_calculate_aggregate(int type, uint32_t len);
|
||||
diff --git a/src/lstack/include/lstack_thread_rpc.h b/src/lstack/include/lstack_thread_rpc.h
|
||||
index fa98b0c..d268366 100644
|
||||
--- a/src/lstack/include/lstack_thread_rpc.h
|
||||
+++ b/src/lstack/include/lstack_thread_rpc.h
|
||||
@@ -14,7 +14,6 @@
|
||||
#define __GAZELLE_THREAD_RPC_H__
|
||||
|
||||
#include <pthread.h>
|
||||
-#include <arch/sys_arch.h>
|
||||
#include <rte_mempool.h>
|
||||
|
||||
#include "lstack_lockless_queue.h"
|
||||
diff --git a/src/lstack/netif/lstack_ethdev.c b/src/lstack/netif/lstack_ethdev.c
|
||||
index d4d0878..cf66e15 100644
|
||||
--- a/src/lstack/netif/lstack_ethdev.c
|
||||
+++ b/src/lstack/netif/lstack_ethdev.c
|
||||
@@ -21,6 +21,7 @@
|
||||
#include <lwip/ethip6.h>
|
||||
#include <lwip/lwipgz_posix_api.h>
|
||||
#include <netif/ethernet.h>
|
||||
+#include <arch/sys_arch.h>
|
||||
|
||||
#include <securec.h>
|
||||
|
||||
@@ -181,7 +182,7 @@ int32_t eth_dev_poll(void)
|
||||
}
|
||||
|
||||
if (!use_ltran() && get_protocol_stack_group()->latency_start) {
|
||||
- uint64_t time_stamp = get_current_time();
|
||||
+ uint64_t time_stamp = sys_now_us();
|
||||
time_stamp_into_mbuf(nr_pkts, stack->pkts, time_stamp);
|
||||
}
|
||||
|
||||
diff --git a/src/ltran/ltran_forward.c b/src/ltran/ltran_forward.c
|
||||
index c2f53d6..0de9c1c 100644
|
||||
--- a/src/ltran/ltran_forward.c
|
||||
+++ b/src/ltran/ltran_forward.c
|
||||
@@ -24,7 +24,6 @@
|
||||
#include <rte_mempool.h>
|
||||
#include <rte_memory.h>
|
||||
#include <rte_prefetch.h>
|
||||
-#include <rte_cycles.h>
|
||||
#include <rte_ring.h>
|
||||
#include <securec.h>
|
||||
|
||||
@@ -70,7 +69,7 @@ static void calculate_ltran_latency(struct gazelle_stack *stack, const struct rt
|
||||
return;
|
||||
}
|
||||
|
||||
- latency = get_current_time() - lt->stamp;
|
||||
+ latency = gazelle_now_us() - lt->stamp;
|
||||
|
||||
stack->stack_stats.latency_total += latency;
|
||||
stack->stack_stats.latency_pkts++;
|
||||
@@ -595,7 +594,7 @@ static __rte_always_inline void upstream_forward_loop(uint32_t port_id, uint32_t
|
||||
struct rte_mbuf *buf[GAZELLE_PACKET_READ_SIZE] __rte_cache_aligned;
|
||||
for (loop_cnt = 0; loop_cnt < UPSTREAM_LOOP_TIMES; loop_cnt++) {
|
||||
if (get_start_latency_flag() == GAZELLE_ON) {
|
||||
- time_stamp = get_current_time();
|
||||
+ time_stamp = gazelle_now_us();
|
||||
}
|
||||
|
||||
rx_count = rte_eth_rx_burst(port_id, queue_id, buf, GAZELLE_PACKET_READ_SIZE);
|
||||
@@ -657,9 +656,8 @@ void upstream_forward(const uint16_t *port)
|
||||
uint32_t queue_num = get_ltran_config()->bond.rx_queue_num;
|
||||
uint32_t port_id = get_bond_port()[g_port_index];
|
||||
unsigned long now_time;
|
||||
- unsigned long last_time = get_current_time();
|
||||
+ unsigned long last_time = gazelle_now_us();
|
||||
unsigned long aging_conn_last_time = last_time;
|
||||
- calibrate_time();
|
||||
|
||||
while (get_ltran_stop_flag() != GAZELLE_TRUE) {
|
||||
for (queue_id = 0; queue_id < queue_num; queue_id++) {
|
||||
@@ -673,7 +671,7 @@ void upstream_forward(const uint16_t *port)
|
||||
}
|
||||
#endif
|
||||
|
||||
- now_time = get_current_time();
|
||||
+ now_time = gazelle_now_us();
|
||||
if (now_time - aging_conn_last_time > GAZELLE_CONN_INTERVAL) {
|
||||
gazelle_delete_aging_conn(gazelle_get_tcp_conn_htable());
|
||||
aging_conn_last_time = now_time;
|
||||
diff --git a/src/ltran/ltran_stat.c b/src/ltran/ltran_stat.c
|
||||
index 0a8d75c..72de448 100644
|
||||
--- a/src/ltran/ltran_stat.c
|
||||
+++ b/src/ltran/ltran_stat.c
|
||||
@@ -75,7 +75,7 @@ void set_start_latency_flag(int32_t flag)
|
||||
}
|
||||
|
||||
g_start_latency = flag;
|
||||
- g_start_time_stamp = get_current_time();
|
||||
+ g_start_time_stamp = gazelle_now_us();
|
||||
}
|
||||
|
||||
int32_t get_start_latency_flag(void)
|
||||
diff --git a/src/ltran/ltran_stat.h b/src/ltran/ltran_stat.h
|
||||
index 75cb353..7945d67 100644
|
||||
--- a/src/ltran/ltran_stat.h
|
||||
+++ b/src/ltran/ltran_stat.h
|
||||
@@ -36,12 +36,6 @@ enum GAZELLE_CLIENT_STATE {
|
||||
GAZELLE_CLIENT_STATE_MAX
|
||||
};
|
||||
|
||||
-enum GAZELLE_TCP_LIST_STATE {
|
||||
- GAZELLE_ACTIVE_LIST,
|
||||
- GAZELLE_LISTEN_LIST,
|
||||
- GAZELLE_TIME_WAIT_LIST,
|
||||
-};
|
||||
-
|
||||
enum GAZELLE_TCP_STATE {
|
||||
GAZELLE_TCP_STATE_CLS,
|
||||
GAZELLE_TCP_STATE_LSN,
|
||||
diff --git a/src/ltran/ltran_timer.c b/src/ltran/ltran_timer.c
|
||||
index 51d6544..f1c0e6e 100644
|
||||
--- a/src/ltran/ltran_timer.c
|
||||
+++ b/src/ltran/ltran_timer.c
|
||||
@@ -26,22 +26,16 @@
|
||||
#include "ltran_instance.h"
|
||||
#include "ltran_timer.h"
|
||||
|
||||
-static uint64_t g_cycles_per_us = 0;
|
||||
-
|
||||
-uint64_t get_current_time(void)
|
||||
+uint64_t gazelle_now_us(void)
|
||||
{
|
||||
- if (g_cycles_per_us == 0) {
|
||||
- return 0;
|
||||
+ static uint64_t g_cycles_per_us = 0;
|
||||
+ if (unlikely(g_cycles_per_us == 0)) {
|
||||
+ g_cycles_per_us = (rte_get_tsc_hz() + US_PER_S - 1) / US_PER_S;
|
||||
}
|
||||
|
||||
return (rte_rdtsc() / g_cycles_per_us);
|
||||
}
|
||||
|
||||
-void calibrate_time(void)
|
||||
-{
|
||||
- g_cycles_per_us = (rte_get_tsc_hz() + US_PER_S - 1) / US_PER_S;
|
||||
-}
|
||||
-
|
||||
void gazelle_detect_sock_logout(struct gazelle_tcp_sock_htable *tcp_sock_htable)
|
||||
{
|
||||
uint32_t i;
|
||||
diff --git a/src/ltran/ltran_timer.h b/src/ltran/ltran_timer.h
|
||||
index abc08b9..6c7aeef 100644
|
||||
--- a/src/ltran/ltran_timer.h
|
||||
+++ b/src/ltran/ltran_timer.h
|
||||
@@ -13,11 +13,11 @@
|
||||
#ifndef __GAZELLE_TIMER_H__
|
||||
#define __GAZELLE_TIMER_H__
|
||||
|
||||
+uint64_t gazelle_now_us(void);
|
||||
+
|
||||
struct gazelle_tcp_conn_htable;
|
||||
struct gazelle_tcp_sock_htable;
|
||||
|
||||
-unsigned long get_current_time(void);
|
||||
-void calibrate_time(void);
|
||||
void gazelle_detect_conn_logout(struct gazelle_tcp_conn_htable *conn_htable);
|
||||
void gazelle_detect_sock_logout(struct gazelle_tcp_sock_htable *tcp_sock_htable);
|
||||
void gazelle_delete_aging_conn(struct gazelle_tcp_conn_htable *conn_htable);
|
||||
diff --git a/test/unitest/stub.c b/test/unitest/stub.c
|
||||
index 8f37c90..8478b50 100644
|
||||
--- a/test/unitest/stub.c
|
||||
+++ b/test/unitest/stub.c
|
||||
@@ -10,14 +10,8 @@
|
||||
* See the Mulan PSL v2 for more details.
|
||||
*/
|
||||
|
||||
-#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
-uint64_t get_current_time(void)
|
||||
-{
|
||||
- return 0;
|
||||
-}
|
||||
-
|
||||
int rte_pdump_init(void)
|
||||
{
|
||||
return 0;
|
||||
--
|
||||
2.33.0
|
||||
|
||||
22
gazelle.spec
22
gazelle.spec
@ -2,7 +2,7 @@
|
||||
|
||||
Name: gazelle
|
||||
Version: 1.0.2
|
||||
Release: 50
|
||||
Release: 51
|
||||
Summary: gazelle is a high performance user-mode stack
|
||||
License: MulanPSL-2.0
|
||||
URL: https://gitee.com/openeuler/gazelle
|
||||
@ -232,6 +232,15 @@ Patch9212: 0212-example-sync-example-update.patch
|
||||
Patch9213: 0213-cleancode-improving-makefile-readability.patch
|
||||
Patch9214: 0214-add-.gitignore.patch
|
||||
Patch9215: 0215-cleancode-rename-gazelle-files-in-lwip.patch
|
||||
Patch9216: 0216-cleancode-refactor-lwipsock.h.patch
|
||||
Patch9217: 0217-cleancode-refactor-posix-type-and-get_socket.patch
|
||||
Patch9218: 0218-fix-some-error-of-NULL-pointer.patch
|
||||
Patch9219: 0219-cleancode-refactor-posix_api.patch
|
||||
Patch9220: 0220-cleancode-refactor-lwipgz_list.h.patch
|
||||
Patch9221: 0221-fix-EPOLLIN-event-dropd.patch
|
||||
Patch9222: 0222-cleancode-refactor-lwipgz_hlist.h.patch
|
||||
Patch9223: 0223-add-sem-post-when-update-event.patch
|
||||
Patch9224: 0224-cleancode-refactor-sys_now-and-lwip_ioctl.patch
|
||||
|
||||
%description
|
||||
%{name} is a high performance user-mode stack.
|
||||
@ -273,6 +282,17 @@ install -Dpm 0640 %{_builddir}/%{name}-%{version}/src/ltran/ltran.conf %{b
|
||||
%config(noreplace) %{conf_path}/ltran.conf
|
||||
|
||||
%changelog
|
||||
* Fri Jul 19 2024 yinbin6 <yinbin8@huawei.com> - 1.0.2-51
|
||||
- cleancode: refactor sys_now and lwip_ioctl
|
||||
- add sem post when update event
|
||||
- cleancode: refactor lwipgz_hlist.h
|
||||
- fix EPOLLIN event dropd
|
||||
- cleancode: refactor lwipgz_list.h
|
||||
- cleancode: refactor posix_api
|
||||
- fix some error of NULL pointer
|
||||
- cleancode: refactor posix type and get_socket
|
||||
- cleancode: refactor lwipsock.h
|
||||
|
||||
* Thu Jul 11 2024 yinbin6 <yinbin8@huawei.com> - 1.0.2-50
|
||||
- cleancode: rename gazelle files in lwip
|
||||
- add .gitignore
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user