On 30-Apr-19 12:35 PM, Suanming.Mou wrote:
When primary app exits, the residual running pdump will stop the
primary app to restart. Add pdump exits with primary support.

Suggested-by: Varghese, Vipin <vipin.vargh...@intel.com>
Suggested-by: Burakov, Anatoly <anatoly.bura...@intel.com>
Signed-off-by: Suanming.Mou <mousuanm...@huawei.com>
---

<snip>

  static void
+disable_primary_monitor(void)
+{
+       int ret;
+
+       /* Don't worry about it is primary exit case. The alarm cancel
+        * function will take care about that. */
+       ret = rte_eal_alarm_cancel(monitor_primary, NULL);
+       if (ret < 0)
+               printf("Fail to disable monitor fail:%d\n", ret);

Double fail :)

+}
+
+static void
  signal_handler(int sig_num)
  {
        if (sig_num == SIGINT) {
@@ -910,6 +936,19 @@ struct parse_val {
                ;
  }
+static void
+enable_primary_monitor(void)
+{
+       int ret;
+
+       /* Once primary exits, so will pdump. */
+       ret = rte_eal_alarm_set(MONITOR_INTERVAL, monitor_primary, NULL);
+       if (ret < 0) {
+               cleanup_pdump_resources();
+               rte_exit(EXIT_FAILURE, "Fail to monitor primary:%d\n", ret);
+       }

Why is this function void, when you could've called rte_exit() in the caller on failure? And why is it such a fatal error to set up the timer? IMO just a warning would've been enough.

+}
+
  int
  main(int argc, char **argv)
  {
@@ -950,11 +989,13 @@ struct parse_val {
                        rte_exit(EXIT_FAILURE, "Invalid argument\n");
        }
- /* create mempool, ring and vdevs info */
+       /* create mempool, ring, vdevs info and primary monitor */
        create_mp_ring_vdev();
        enable_pdump();
+       enable_primary_monitor();
        dump_packets();
+ disable_primary_monitor();
        cleanup_pdump_resources();
        /* dump debug stats */
        print_pdump_stats();



--
Thanks,
Anatoly

Reply via email to