--- libaitrpc/src/srv.c 2024/10/29 01:33:17 1.32 +++ libaitrpc/src/srv.c 2025/03/31 17:02:29 1.33.2.1 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: srv.c,v 1.32 2024/10/29 01:33:17 misho Exp $ +* $Id: srv.c,v 1.33.2.1 2025/03/31 17:02:29 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -12,7 +12,7 @@ terms: All of the documentation and software included in the ELWIX and AITNET Releases is copyrighted by ELWIX - Sofia/Bulgaria -Copyright 2004 - 2024 +Copyright 2004 - 2025 by Michael Pounov . All rights reserved. Redistribution and use in source and binary forms, with or without @@ -69,6 +69,27 @@ static void *txBPFPacket(sched_task_t *); static void *rxEXTPacket(sched_task_t *); static void *txEXTPacket(sched_task_t *); +#ifdef __linux__ + #ifdef __mips__ + static sched_task_func_t cbProto[SOCK_MAX_SUPPORT][4] = { + { acceptClients, closeClient, rxPacket, txPacket }, /* SOCK_STREAM */ + { rxUDPPacket, freeClient, NULL /*rxUDPPacket*/, txUDPPacket }, /* SOCK_DGRAM */ + { acceptClients, closeClient, rxPacket, txPacket }, /* SOCK_STREAM */ + { rxRAWPacket, freeClient, NULL /*rxRAWPacket*/, txRAWPacket }, /* SOCK_RAW */ + { rxBPFPacket, freeClient, NULL /*rxBPFPacket*/, txBPFPacket }, /* SOCK_BPF */ + { rxEXTPacket, freeClient, NULL /*rxEXTPacket*/, txEXTPacket } /* SOCK_EXT */ + }; + #else + static sched_task_func_t cbProto[SOCK_MAX_SUPPORT][4] = { + { acceptClients, closeClient, rxPacket, txPacket }, /* SOCK_STREAM */ + { acceptClients, closeClient, rxPacket, txPacket }, /* SOCK_STREAM */ + { rxUDPPacket, freeClient, NULL /*rxUDPPacket*/, txUDPPacket }, /* SOCK_DGRAM */ + { rxRAWPacket, freeClient, NULL /*rxRAWPacket*/, txRAWPacket }, /* SOCK_RAW */ + { rxBPFPacket, freeClient, NULL /*rxBPFPacket*/, txBPFPacket }, /* SOCK_BPF */ + { rxEXTPacket, freeClient, NULL /*rxEXTPacket*/, txEXTPacket } /* SOCK_EXT */ + }; + #endif +#else static sched_task_func_t cbProto[SOCK_MAX_SUPPORT][4] = { { acceptClients, closeClient, rxPacket, txPacket }, /* SOCK_STREAM */ { acceptClients, closeClient, rxPacket, txPacket }, /* SOCK_STREAM */ @@ -77,6 +98,7 @@ static sched_task_func_t cbProto[SOCK_MAX_SUPPORT][4] { rxBPFPacket, freeClient, NULL /*rxBPFPacket*/, txBPFPacket }, /* SOCK_BPF */ { rxEXTPacket, freeClient, NULL /*rxEXTPacket*/, txEXTPacket } /* SOCK_EXT */ }; +#endif /* Global Signal Argument when kqueue support disabled */ @@ -1562,7 +1584,7 @@ rpc_srv_initServer(u_char InstID, int concurentClients /* init functions */ pthread_mutex_init(&srv->srv_funcs.mtx, NULL); SLIST_INIT(&srv->srv_funcs); - AVL_INIT(&srv->srv_funcs); + RB_INIT(&srv->srv_funcs); /* init scheduler */ srv->srv_root = schedBegin(); @@ -1722,7 +1744,7 @@ rpc_srv_loopServer(rpc_srv_t * __restrict srv) AIT_FREE_VAL(&f->func_name); e_free(f); } - srv->srv_funcs.avlh_root = NULL; + srv->srv_funcs.rbh_root = NULL; RPC_FUNCS_UNLOCK(&srv->srv_funcs); return 0; @@ -1822,7 +1844,7 @@ rpc_srv_initServer2(u_char InstID, int concurentClient /* init functions */ pthread_mutex_init(&srv->srv_funcs.mtx, NULL); SLIST_INIT(&srv->srv_funcs); - AVL_INIT(&srv->srv_funcs); + RB_INIT(&srv->srv_funcs); /* init scheduler */ srv->srv_root = schedBegin(); @@ -1940,7 +1962,7 @@ rpc_srv_initServerExt(u_char InstID, int netBuf, int f /* init functions */ pthread_mutex_init(&srv->srv_funcs.mtx, NULL); SLIST_INIT(&srv->srv_funcs); - AVL_INIT(&srv->srv_funcs); + RB_INIT(&srv->srv_funcs); /* init scheduler */ srv->srv_root = schedBegin();