The recv_flush code is no longer necessary because of the miss_count_count addition. It can in some cases lead to register corruption because of interactions with -fstack-protector, the recursive nature of how this code works, and interactions with the optimizer in some versions of gcc.
Signed-off-by: Steven Dake <[email protected]> --- exec/totemiba.c | 10 ---------- exec/totemnet.c | 15 --------------- exec/totemnet.h | 2 -- exec/totemrrp.c | 54 ------------------------------------------------------ exec/totemrrp.h | 3 --- exec/totemsrp.c | 2 -- exec/totemudp.c | 30 +----------------------------- exec/totemudpu.c | 7 ------- 8 files changed, 1 insertions(+), 122 deletions(-) diff --git a/exec/totemiba.c b/exec/totemiba.c index a0379ff..ec4ccfc 100644 --- a/exec/totemiba.c +++ b/exec/totemiba.c @@ -1329,16 +1329,6 @@ int totemiba_processor_count_set ( return (res); } -int totemiba_recv_flush (void *iba_context) -{ - struct totemiba_instance *instance = (struct totemiba_instance *)iba_context; - int res = 0; - - instance = NULL; - - return (res); -} - int totemiba_send_flush (void *iba_context) { struct totemiba_instance *instance = (struct totemiba_instance *)iba_context; diff --git a/exec/totemnet.c b/exec/totemnet.c index c7670f9..26562ee 100644 --- a/exec/totemnet.c +++ b/exec/totemnet.c @@ -87,8 +87,6 @@ struct transport { const void *msg, unsigned int msg_len); - int (*recv_flush) (void *transport_context); - int (*send_flush) (void *transport_context); int (*iface_check) (void *transport_context); @@ -131,7 +129,6 @@ struct transport transport_entries[] = { .token_send = totemudp_token_send, .mcast_flush_send = totemudp_mcast_flush_send, .mcast_noflush_send = totemudp_mcast_noflush_send, - .recv_flush = totemudp_recv_flush, .send_flush = totemudp_send_flush, .iface_check = totemudp_iface_check, .finalize = totemudp_finalize, @@ -149,7 +146,6 @@ struct transport transport_entries[] = { .token_send = totemudpu_token_send, .mcast_flush_send = totemudpu_mcast_flush_send, .mcast_noflush_send = totemudpu_mcast_noflush_send, - .recv_flush = totemudpu_recv_flush, .send_flush = totemudpu_send_flush, .iface_check = totemudpu_iface_check, .finalize = totemudpu_finalize, @@ -170,7 +166,6 @@ struct transport transport_entries[] = { .token_send = totemiba_token_send, .mcast_flush_send = totemiba_mcast_flush_send, .mcast_noflush_send = totemiba_mcast_noflush_send, - .recv_flush = totemiba_recv_flush, .send_flush = totemiba_send_flush, .iface_check = totemiba_iface_check, .finalize = totemiba_finalize, @@ -307,16 +302,6 @@ int totemnet_processor_count_set ( return (res); } -int totemnet_recv_flush (void *net_context) -{ - struct totemnet_instance *instance = (struct totemnet_instance *)net_context; - int res = 0; - - res = instance->transport->recv_flush (instance->transport_context); - - return (res); -} - int totemnet_send_flush (void *net_context) { struct totemnet_instance *instance = (struct totemnet_instance *)net_context; diff --git a/exec/totemnet.h b/exec/totemnet.h index 7e6374c..a0a51eb 100644 --- a/exec/totemnet.h +++ b/exec/totemnet.h @@ -88,8 +88,6 @@ extern int totemnet_mcast_noflush_send ( const void *msg, unsigned int msg_len); -extern int totemnet_recv_flush (void *net_context); - extern int totemnet_send_flush (void *net_context); extern int totemnet_iface_check (void *net_context); diff --git a/exec/totemrrp.c b/exec/totemrrp.c index a8ebd08..5a9b7b3 100644 --- a/exec/totemrrp.c +++ b/exec/totemrrp.c @@ -143,9 +143,6 @@ struct rrp_algo { const void *msg, unsigned int msg_len); - void (*recv_flush) ( - struct totemrrp_instance *instance); - void (*send_flush) ( struct totemrrp_instance *instance); @@ -276,9 +273,6 @@ static void none_token_send ( const void *msg, unsigned int msg_len); -static void none_recv_flush ( - struct totemrrp_instance *instance); - static void none_send_flush ( struct totemrrp_instance *instance); @@ -346,9 +340,6 @@ static void passive_token_send ( const void *msg, unsigned int msg_len); -static void passive_recv_flush ( - struct totemrrp_instance *instance); - static void passive_send_flush ( struct totemrrp_instance *instance); @@ -416,9 +407,6 @@ static void active_token_send ( const void *msg, unsigned int msg_len); -static void active_recv_flush ( - struct totemrrp_instance *instance); - static void active_send_flush ( struct totemrrp_instance *instance); @@ -470,7 +458,6 @@ struct rrp_algo none_algo = { .mcast_flush_send = none_mcast_flush_send, .token_recv = none_token_recv, .token_send = none_token_send, - .recv_flush = none_recv_flush, .send_flush = none_send_flush, .iface_check = none_iface_check, .processor_count_set = none_processor_count_set, @@ -489,7 +476,6 @@ struct rrp_algo passive_algo = { .mcast_flush_send = passive_mcast_flush_send, .token_recv = passive_token_recv, .token_send = passive_token_send, - .recv_flush = passive_recv_flush, .send_flush = passive_send_flush, .iface_check = passive_iface_check, .processor_count_set = passive_processor_count_set, @@ -508,7 +494,6 @@ struct rrp_algo active_algo = { .mcast_flush_send = active_mcast_flush_send, .token_recv = active_token_recv, .token_send = active_token_send, - .recv_flush = active_recv_flush, .send_flush = active_send_flush, .iface_check = active_iface_check, .processor_count_set = active_processor_count_set, @@ -594,11 +579,6 @@ static void none_token_send ( msg, msg_len); } -static void none_recv_flush (struct totemrrp_instance *instance) -{ - totemnet_recv_flush (instance->net_handles[0]); -} - static void none_send_flush (struct totemrrp_instance *instance) { totemnet_send_flush (instance->net_handles[0]); @@ -930,19 +910,6 @@ static void passive_token_send ( } -static void passive_recv_flush (struct totemrrp_instance *instance) -{ - struct passive_instance *rrp_algo_instance = (struct passive_instance *)instance->rrp_algo_instance; - unsigned int i; - - for (i = 0; i < instance->interface_count; i++) { - if (rrp_algo_instance->faulty[i] == 0) { - - totemnet_recv_flush (instance->net_handles[i]); - } - } -} - static void passive_send_flush (struct totemrrp_instance *instance) { struct passive_instance *rrp_algo_instance = (struct passive_instance *)instance->rrp_algo_instance; @@ -1325,19 +1292,6 @@ static void active_token_send ( } } -static void active_recv_flush (struct totemrrp_instance *instance) -{ - struct active_instance *rrp_algo_instance = (struct active_instance *)instance->rrp_algo_instance; - unsigned int i; - - for (i = 0; i < instance->interface_count; i++) { - if (rrp_algo_instance->faulty[i] == 0) { - - totemnet_recv_flush (instance->net_handles[i]); - } - } -} - static void active_send_flush (struct totemrrp_instance *instance) { struct active_instance *rrp_algo_instance = (struct active_instance *)instance->rrp_algo_instance; @@ -1687,14 +1641,6 @@ int totemrrp_token_target_set ( return (0); } -int totemrrp_recv_flush (void *rrp_context) -{ - struct totemrrp_instance *instance = (struct totemrrp_instance *)rrp_context; - - instance->rrp_algo->recv_flush (instance); - - return (0); -} int totemrrp_send_flush (void *rrp_context) { diff --git a/exec/totemrrp.h b/exec/totemrrp.h index da79ed2..6a70527 100644 --- a/exec/totemrrp.h +++ b/exec/totemrrp.h @@ -98,9 +98,6 @@ extern int totemrrp_mcast_flush_send ( const void *msg, unsigned int msg_len); -extern int totemrrp_recv_flush ( - void *rrp_context); - extern int totemrrp_send_flush ( void *rrp_context); diff --git a/exec/totemsrp.c b/exec/totemsrp.c index 045fd5c..88a8f0f 100644 --- a/exec/totemsrp.c +++ b/exec/totemsrp.c @@ -3418,8 +3418,6 @@ static int message_handler_orf_token ( } #endif - totemrrp_recv_flush (instance->totemrrp_context); - /* * Determine if we should hold (in reality drop) the token */ diff --git a/exec/totemudp.c b/exec/totemudp.c index b96bdbd..977e754 100644 --- a/exec/totemudp.c +++ b/exec/totemudp.c @@ -1178,11 +1178,7 @@ static int net_deliver_fn ( unsigned char *msg_offset; unsigned int size_delv; - if (instance->flushing == 1) { - iovec = &instance->totemudp_iov_recv_flush; - } else { - iovec = &instance->totemudp_iov_recv; - } + iovec = &instance->totemudp_iov_recv; /* * Receive datagram @@ -1853,30 +1849,6 @@ int totemudp_processor_count_set ( return (res); } -int totemudp_recv_flush (void *udp_context) -{ - struct totemudp_instance *instance = (struct totemudp_instance *)udp_context; - struct pollfd ufd; - int nfds; - int res = 0; - - instance->flushing = 1; - - do { - ufd.fd = instance->totemudp_sockets.mcast_recv; - ufd.events = POLLIN; - nfds = poll (&ufd, 1, 0); - if (nfds == 1 && ufd.revents & POLLIN) { - net_deliver_fn (0, instance->totemudp_sockets.mcast_recv, - ufd.revents, instance); - } - } while (nfds == 1); - - instance->flushing = 0; - - return (res); -} - int totemudp_send_flush (void *udp_context) { struct totemudp_instance *instance = (struct totemudp_instance *)udp_context; diff --git a/exec/totemudpu.c b/exec/totemudpu.c index 2db33ad..e4ea431 100644 --- a/exec/totemudpu.c +++ b/exec/totemudpu.c @@ -1498,13 +1498,6 @@ int totemudpu_processor_count_set ( return (res); } -int totemudpu_recv_flush (void *udpu_context) -{ - int res = 0; - - return (res); -} - int totemudpu_send_flush (void *udpu_context) { int res = 0; -- 1.7.4 _______________________________________________ Openais mailing list [email protected] https://lists.linux-foundation.org/mailman/listinfo/openais
