From f47db66e090e8773d79c83cef04dccf308e385ce Mon Sep 17 00:00:00 2001 From: Florian Pose <fp@igh-essen.com> Date: Tue, 21 Nov 2006 15:13:48 +0000 Subject: [PATCH] Introduced "starved" datagrams. --- master/master.c | 8 +++++++- master/master.h | 1 + 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/master/master.c b/master/master.c index d2b95449..d23b03ef 100644 --- a/master/master.c +++ b/master/master.c @@ -129,6 +129,7 @@ int ec_master_init(ec_master_t *master, /**< EtherCAT master */ master->debug_level = 0; master->stats.timeouts = 0; + master->stats.starved = 0; master->stats.corrupted = 0; master->stats.skipped = 0; master->stats.unmatched = 0; @@ -710,6 +711,11 @@ void ec_master_output_stats(ec_master_t *master /**< EtherCAT master */) master->stats.timeouts == 1 ? "" : "s"); master->stats.timeouts = 0; } + if (master->stats.starved) { + EC_WARN("%i datagram%s STARVED!\n", master->stats.starved, + master->stats.starved == 1 ? "" : "s"); + master->stats.starved = 0; + } if (master->stats.corrupted) { EC_WARN("%i frame%s CORRUPTED!\n", master->stats.corrupted, master->stats.corrupted == 1 ? "" : "s"); @@ -1438,7 +1444,7 @@ void ecrt_master_receive(ec_master_t *master /**< EtherCAT master */) - datagram->cycles_queued > cycles_timeout) { list_del_init(&datagram->queue); datagram->state = EC_DATAGRAM_TIMED_OUT; - master->stats.timeouts++; + master->stats.starved++; ec_master_output_stats(master); } break; diff --git a/master/master.h b/master/master.h index a27154d5..e44318f5 100644 --- a/master/master.h +++ b/master/master.h @@ -75,6 +75,7 @@ ec_master_mode_t; typedef struct { unsigned int timeouts; /**< datagram timeouts */ + unsigned int starved; /**< starved datagrams (not even sent) */ unsigned int corrupted; /**< corrupted frames */ unsigned int skipped; /**< skipped datagrams (the ones that were requeued when not yet received) */ -- GitLab