From: Stephen Hemminger <stephen@networkplumber.org>
To: Remy Horton <remy.horton@intel.com>
Cc: dev@dpdk.org
Subject: Re: [PATCH v4 1/3] rte: add keep alive functionality
Date: Wed, 11 Nov 2015 08:28:01 -0800 [thread overview]
Message-ID: <20151111082801.3eedaf21@xeon-e3> (raw)
In-Reply-To: <1446723178-14876-2-git-send-email-remy.horton@intel.com>
In general, try not to introduce new thinks and avoid extra code.
Also Linux has more robust mechanism in the watchdog timers, why not use that?
Could you use RTE_PER_LCORE some how?
> +#ifdef KEEPALIVE_DEBUG_MSGS
Any #ifdef must have a config option to enable it.
> +static void
> +print_trace(const char *msg, struct rte_keepalive *keepcfg, int idx_core)
> +{
> + printf("%sLast seen %" PRId64 "ms ago.\n",
> + msg,
> + ((rte_rdtsc() - keepcfg->last_alive[idx_core])*1000)
> + / rte_get_tsc_hz()
> + );
> +}
> +#else
> +static void
> +print_trace(__attribute__((unused)) const char *msg,
> + __attribute__((unused)) struct rte_keepalive *keepcfg,
> + __attribute__((unused)) int idx_core)
> +{
> +}
> +#endif
Agree with others don't introduce not logging macros.
> +void
> +rte_keepalive_dispatch_pings(__attribute__((unused)) void *ptr_timer,
Use __rte_unused
> + void *ptr_data)
> +{
> + struct rte_keepalive *keepcfg = (struct rte_keepalive *)ptr_data;
Cast of void * is unnecessary in C.
> + int idx_core;
> +
> + for (idx_core = 0; idx_core < RTE_KEEPALIVE_MAXCORES; idx_core++) {
> + if (keepcfg->active_cores[idx_core] == 0)
> + continue;
> + switch (keepcfg->state_flags[idx_core]) {
My personal preference, prefer blank line after continue.
> + case ALIVE: /* Alive */
> + keepcfg->state_flags[idx_core] = 0;
> + keepcfg->last_alive[idx_core] = rte_rdtsc();
> + break;
> + case MISSING: /* MIA */
> + print_trace("Core MIA. ", keepcfg, idx_core);
> + keepcfg->state_flags[idx_core] = 2;
> + break;
> + case DEAD: /* Dead */
> + keepcfg->state_flags[idx_core] = 3;
> + print_trace("Core died. ", keepcfg, idx_core);
> + if (keepcfg->callback)
> + keepcfg->callback(
> + keepcfg->callback_data,
> + idx_core
> + );
> + break;
> + case GONE: /* Buried */
> + break;
> + }
> + }
> +}
> +
> +
> +struct rte_keepalive *
> +rte_keepalive_create(rte_keepalive_failure_callback_t callback,
> + void *data)
> +{
> + int idx_core;
> + struct rte_keepalive *keepcfg;
> +
> + keepcfg = malloc(sizeof(struct rte_keepalive));
Why not use rte_zmalloc()?
> + if (keepcfg != NULL) {
> + for (idx_core = 0;
> + idx_core < RTE_KEEPALIVE_MAXCORES;
> + idx_core++) {
> + keepcfg->state_flags[idx_core] = 0;
> + keepcfg->active_cores[idx_core] = 0;
> + }
> + keepcfg->callback = callback;
> + keepcfg->callback_data = data;
> + keepcfg->tsc_initial = rte_rdtsc();
> + keepcfg->tsc_mhz = rte_get_tsc_hz() / 1000;
> + }
> + return keepcfg;
> +}
> +
> +
> +void
> +rte_keepalive_register_core(struct rte_keepalive *keepcfg, const int id_core)
> +{
> + if (id_core < RTE_KEEPALIVE_MAXCORES)
> + keepcfg->active_cores[id_core] = 1;
> +}
next prev parent reply other threads:[~2015-11-11 16:27 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-15 12:16 [RFC PATCH v1] rte: LCore heartbeat example Remy Horton
2015-09-15 13:10 ` Thomas Monjalon
2015-09-23 9:00 ` Remy Horton
2015-10-05 11:16 ` Mcnamara, John
2015-09-30 9:04 ` [PATCH v2 0/3] Keepalive monitoring & reporting Remy Horton
2015-09-30 9:04 ` [PATCH v2 1/3] rte: add keep alive functionality Remy Horton
2015-10-23 11:40 ` Tahhan, Maryam
2015-10-23 14:27 ` Wiles, Keith
2015-10-26 16:36 ` Remy Horton
2015-09-30 9:04 ` [PATCH v2 2/3] l2fwd: keep alive sample application Remy Horton
2015-10-23 14:23 ` Tahhan, Maryam
2015-10-27 8:48 ` Remy Horton
2015-10-27 10:10 ` Bruce Richardson
2015-09-30 9:04 ` [PATCH v2 3/3] docs: add keep alive sample app guide Remy Horton
2015-10-28 8:52 ` [PATCH v3 0/3] Keepalive monitoring & reporting Remy Horton
2015-10-28 8:52 ` [PATCH v3 1/3] rte: add keep alive functionality Remy Horton
2015-10-28 12:25 ` Tahhan, Maryam
2015-11-04 1:48 ` Thomas Monjalon
2015-11-04 1:54 ` Thomas Monjalon
2015-10-28 8:52 ` [PATCH v3 2/3] docs: add keep alive sample app guide Remy Horton
2015-10-28 11:22 ` Van Haaren, Harry
2015-10-28 8:52 ` [PATCH v3 3/3] example: add keep alive sample application Remy Horton
2015-10-28 12:28 ` Tahhan, Maryam
2015-11-05 11:32 ` [PATCH v4 0/3] Keepalive monitoring & reporting Remy Horton
2015-11-05 11:32 ` [PATCH v4 1/3] rte: add keep alive functionality Remy Horton
2015-11-05 16:43 ` Tahhan, Maryam
2015-11-10 14:02 ` Thomas Monjalon
2015-11-11 9:21 ` Remy Horton
2015-11-11 16:28 ` Stephen Hemminger [this message]
2015-11-18 10:21 ` Remy Horton
2015-11-13 16:09 ` Thomas Monjalon
2015-11-05 11:32 ` [PATCH v4 2/3] docs: add keep alive sample app guide & release notes Remy Horton
2015-11-05 16:40 ` Van Haaren, Harry
2015-11-05 11:32 ` [PATCH v4 3/3] example: add keep alive sample application Remy Horton
2015-11-05 16:44 ` Tahhan, Maryam
2015-11-11 6:52 ` [PATCH v4 0/3] Keepalive monitoring & reporting Cao, Min
2015-11-18 14:05 ` [PATCH v5 " Remy Horton
2015-11-18 14:05 ` [PATCH v5 1/3] rte: add keep alive functionality Remy Horton
2015-11-18 14:05 ` [PATCH v5 2/3] docs: add keep alive sample app guide & release notes Remy Horton
2015-11-19 11:32 ` Thomas Monjalon
2015-11-19 11:43 ` Remy Horton
2015-11-18 14:05 ` [PATCH v5 3/3] example: add keep alive sample application Remy Horton
2015-11-19 11:31 ` Thomas Monjalon
2015-11-19 14:49 ` [PATCH v5 0/3] Keepalive monitoring & reporting Thomas Monjalon
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20151111082801.3eedaf21@xeon-e3 \
--to=stephen@networkplumber.org \
--cc=dev@dpdk.org \
--cc=remy.horton@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.