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