[v2] examples: add eal cleanup to examples

Message ID 1618453563-13490-1-git-send-email-humin29@huawei.com (mailing list archive)
State Accepted, archived
Delegated to: Thomas Monjalon
Headers
Series [v2] examples: add eal cleanup to examples |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/travis-robot success travis build: passed
ci/github-robot success github build: passed
ci/Intel-compilation success Compilation OK
ci/iol-intel-Performance success Performance Testing PASS
ci/intel-Testing success Testing PASS
ci/iol-testing success Testing PASS

Commit Message

humin (Q) April 15, 2021, 2:26 a.m. UTC
  From: Chengchang Tang <tangchengchang@huawei.com>

According to the programming guide, the rte_eal_init should be used pairs
with rte_eal_cleanup.

This patch add rte_eal_cleanup to examples to encourage new users of
DPDK to use it.

Fixes: aec9c13c5257 ("eal: add function to release internal resources")
Fixes: 3d0fad56b74a ("examples/fips_validation: add crypto FIPS application")
Fixes: c8e6ceecebc1 ("examples/ioat: add new sample app for ioat driver")
Fixes: 4ff457986f76 ("examples/l2fwd-event: add default poll mode routines")
Fixes: 08bd1a174461 ("examples/l3fwd-graph: add graph-based l3fwd skeleton")
Fixes: c5eebf85badc ("examples/ntb: add example for NTB")
Fixes: b77f66002812 ("examples/pipeline: add new example application")
Fixes: edbed86d1cc3 ("examples/vdpa: introduce a new sample for vDPA")
Fixes: c19beb3f38cd ("examples/vhost_blk: introduce vhost storage sample")
Fixes: f5188211c721 ("examples/vhost_crypto: add sample application")
Cc: stable@dpdk.org

Signed-off-by: Chengchang Tang <tangchengchang@huawei.com>
---
 examples/bbdev_app/main.c                                  | 3 +++
 examples/bond/main.c                                       | 4 ++++
 examples/cmdline/main.c                                    | 3 +++
 examples/distributor/main.c                                | 3 +++
 examples/ethtool/ethtool-app/main.c                        | 3 +++
 examples/fips_validation/main.c                            | 3 +++
 examples/flow_classify/flow_classify.c                     | 3 +++
 examples/flow_filtering/main.c                             | 7 ++++++-
 examples/helloworld/main.c                                 | 4 ++++
 examples/ioat/ioatfwd.c                                    | 3 +++
 examples/ip_fragmentation/main.c                           | 3 +++
 examples/ip_reassembly/main.c                              | 3 +++
 examples/ipsec-secgw/ipsec-secgw.c                         | 3 +++
 examples/ipv4_multicast/main.c                             | 3 +++
 examples/kni/main.c                                        | 3 +++
 examples/l2fwd-cat/l2fwd-cat.c                             | 3 +++
 examples/l2fwd-crypto/main.c                               | 3 +++
 examples/l2fwd-event/main.c                                | 3 +++
 examples/l2fwd-jobstats/main.c                             | 3 +++
 examples/l2fwd-keepalive/main.c                            | 4 ++++
 examples/l2fwd/main.c                                      | 3 +++
 examples/l3fwd-acl/main.c                                  | 3 +++
 examples/l3fwd-graph/main.c                                | 3 +++
 examples/l3fwd/main.c                                      | 4 ++++
 examples/link_status_interrupt/main.c                      | 3 +++
 examples/multi_process/client_server_mp/mp_client/client.c | 3 +++
 examples/multi_process/client_server_mp/mp_server/main.c   | 4 ++++
 examples/multi_process/simple_mp/main.c                    | 4 ++++
 examples/multi_process/symmetric_mp/main.c                 | 3 +++
 examples/ntb/ntb_fwd.c                                     | 3 +++
 examples/packet_ordering/main.c                            | 4 ++++
 examples/performance-thread/l3fwd-thread/main.c            | 3 +++
 examples/performance-thread/pthread_shim/main.c            | 4 ++++
 examples/pipeline/main.c                                   | 3 +++
 examples/ptpclient/ptpclient.c                             | 3 +++
 examples/qos_meter/main.c                                  | 3 +++
 examples/qos_sched/main.c                                  | 3 +++
 examples/rxtx_callbacks/main.c                             | 4 ++++
 examples/server_node_efd/node/node.c                       | 3 +++
 examples/server_node_efd/server/main.c                     | 4 ++++
 examples/service_cores/main.c                              | 3 +++
 examples/skeleton/basicfwd.c                               | 3 +++
 examples/timer/main.c                                      | 3 +++
 examples/vdpa/main.c                                       | 3 +++
 examples/vhost/main.c                                      | 4 +++-
 examples/vhost_blk/vhost_blk.c                             | 3 +++
 examples/vhost_crypto/main.c                               | 3 +++
 examples/vm_power_manager/guest_cli/main.c                 | 3 +++
 examples/vm_power_manager/main.c                           | 3 +++
 examples/vmdq/main.c                                       | 3 +++
 examples/vmdq_dcb/main.c                                   | 3 +++
 51 files changed, 166 insertions(+), 2 deletions(-)
  

Comments

Thomas Monjalon April 21, 2021, 6:24 p.m. UTC | #1
15/04/2021 04:26, Min Hu (Connor):
> From: Chengchang Tang <tangchengchang@huawei.com>
> 
> According to the programming guide, the rte_eal_init should be used pairs
> with rte_eal_cleanup.
> 
> This patch add rte_eal_cleanup to examples to encourage new users of
> DPDK to use it.
> 
> Fixes: aec9c13c5257 ("eal: add function to release internal resources")
> Fixes: 3d0fad56b74a ("examples/fips_validation: add crypto FIPS application")
> Fixes: c8e6ceecebc1 ("examples/ioat: add new sample app for ioat driver")
> Fixes: 4ff457986f76 ("examples/l2fwd-event: add default poll mode routines")
> Fixes: 08bd1a174461 ("examples/l3fwd-graph: add graph-based l3fwd skeleton")
> Fixes: c5eebf85badc ("examples/ntb: add example for NTB")
> Fixes: b77f66002812 ("examples/pipeline: add new example application")
> Fixes: edbed86d1cc3 ("examples/vdpa: introduce a new sample for vDPA")
> Fixes: c19beb3f38cd ("examples/vhost_blk: introduce vhost storage sample")
> Fixes: f5188211c721 ("examples/vhost_crypto: add sample application")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Chengchang Tang <tangchengchang@huawei.com>

Applied, thanks
  

Patch

diff --git a/examples/bbdev_app/main.c b/examples/bbdev_app/main.c
index 20cfd32..5251db0 100644
--- a/examples/bbdev_app/main.c
+++ b/examples/bbdev_app/main.c
@@ -1195,5 +1195,8 @@  main(int argc, char **argv)
 		ret |= rte_eal_wait_lcore(lcore_id);
 	}
 
+	/* clean up the EAL */
+	rte_eal_cleanup();
+
 	return ret;
 }
diff --git a/examples/bond/main.c b/examples/bond/main.c
index 81a6fa9..f48400e 100644
--- a/examples/bond/main.c
+++ b/examples/bond/main.c
@@ -876,5 +876,9 @@  main(int argc, char *argv[])
 	prompt(NULL);
 
 	rte_delay_ms(100);
+
+	/* clean up the EAL */
+	rte_eal_cleanup();
+
 	return 0;
 }
diff --git a/examples/cmdline/main.c b/examples/cmdline/main.c
index bb79542..94002f0 100644
--- a/examples/cmdline/main.c
+++ b/examples/cmdline/main.c
@@ -36,5 +36,8 @@  int main(int argc, char **argv)
 	cmdline_interact(cl);
 	cmdline_stdin_exit(cl);
 
+	/* clean up the EAL */
+	rte_eal_cleanup();
+
 	return 0;
 }
diff --git a/examples/distributor/main.c b/examples/distributor/main.c
index caa7c46..1b10296 100644
--- a/examples/distributor/main.c
+++ b/examples/distributor/main.c
@@ -932,5 +932,8 @@  main(int argc, char *argv[])
 	rte_free(pd);
 	rte_free(pr);
 
+	/* clean up the EAL */
+	rte_eal_cleanup();
+
 	return 0;
 }
diff --git a/examples/ethtool/ethtool-app/main.c b/examples/ethtool/ethtool-app/main.c
index c6023a1..21ed85c 100644
--- a/examples/ethtool/ethtool-app/main.c
+++ b/examples/ethtool/ethtool-app/main.c
@@ -299,5 +299,8 @@  int main(int argc, char **argv)
 			return -1;
 	}
 
+	/* clean up the EAL */
+	rte_eal_cleanup();
+
 	return 0;
 }
diff --git a/examples/fips_validation/main.c b/examples/fips_validation/main.c
index b73691d..c175fe6 100644
--- a/examples/fips_validation/main.c
+++ b/examples/fips_validation/main.c
@@ -501,6 +501,9 @@  main(int argc, char *argv[])
 	fips_test_clear();
 	cryptodev_fips_validate_app_uninit();
 
+	/* clean up the EAL */
+	rte_eal_cleanup();
+
 	return ret;
 
 }
diff --git a/examples/flow_classify/flow_classify.c b/examples/flow_classify/flow_classify.c
index 335d7d2..5c3e111 100644
--- a/examples/flow_classify/flow_classify.c
+++ b/examples/flow_classify/flow_classify.c
@@ -853,5 +853,8 @@  main(int argc, char *argv[])
 	/* Call lcore_main on the main core only. */
 	lcore_main(cls_app);
 
+	/* clean up the EAL */
+	rte_eal_cleanup();
+
 	return 0;
 }
diff --git a/examples/flow_filtering/main.c b/examples/flow_filtering/main.c
index 93523d6..932f49f 100644
--- a/examples/flow_filtering/main.c
+++ b/examples/flow_filtering/main.c
@@ -259,5 +259,10 @@  main(int argc, char **argv)
 		rte_exit(EXIT_FAILURE, "error in creating flow");
 	}
 
-	return main_loop();
+	ret = main_loop();
+
+	/* clean up the EAL */
+	rte_eal_cleanup();
+
+	return ret;
 }
diff --git a/examples/helloworld/main.c b/examples/helloworld/main.c
index 8a4cee6..ac72145 100644
--- a/examples/helloworld/main.c
+++ b/examples/helloworld/main.c
@@ -43,5 +43,9 @@  main(int argc, char **argv)
 	lcore_hello(NULL);
 
 	rte_eal_mp_wait_lcore();
+
+	/* clean up the EAL */
+	rte_eal_cleanup();
+
 	return 0;
 }
diff --git a/examples/ioat/ioatfwd.c b/examples/ioat/ioatfwd.c
index 6502e45..845301a 100644
--- a/examples/ioat/ioatfwd.c
+++ b/examples/ioat/ioatfwd.c
@@ -1011,6 +1011,9 @@  main(int argc, char **argv)
 			rte_ring_free(cfg.ports[i].rx_to_tx_ring);
 	}
 
+	/* clean up the EAL */
+	rte_eal_cleanup();
+
 	printf("Bye...\n");
 	return 0;
 }
diff --git a/examples/ip_fragmentation/main.c b/examples/ip_fragmentation/main.c
index 5a96841..77a6a18 100644
--- a/examples/ip_fragmentation/main.c
+++ b/examples/ip_fragmentation/main.c
@@ -1075,5 +1075,8 @@  main(int argc, char **argv)
 			return -1;
 	}
 
+	/* clean up the EAL */
+	rte_eal_cleanup();
+
 	return 0;
 }
diff --git a/examples/ip_reassembly/main.c b/examples/ip_reassembly/main.c
index 954a115..ce8882a 100644
--- a/examples/ip_reassembly/main.c
+++ b/examples/ip_reassembly/main.c
@@ -1201,5 +1201,8 @@  main(int argc, char **argv)
 			return -1;
 	}
 
+	/* clean up the EAL */
+	rte_eal_cleanup();
+
 	return 0;
 }
diff --git a/examples/ipsec-secgw/ipsec-secgw.c b/examples/ipsec-secgw/ipsec-secgw.c
index 20d69ba..1efcb5e 100644
--- a/examples/ipsec-secgw/ipsec-secgw.c
+++ b/examples/ipsec-secgw/ipsec-secgw.c
@@ -3037,6 +3037,9 @@  main(int32_t argc, char **argv)
 		rte_eth_dev_close(portid);
 		printf(" Done\n");
 	}
+
+	/* clean up the EAL */
+	rte_eal_cleanup();
 	printf("Bye...\n");
 
 	return 0;
diff --git a/examples/ipv4_multicast/main.c b/examples/ipv4_multicast/main.c
index e18726a..fd6207a 100644
--- a/examples/ipv4_multicast/main.c
+++ b/examples/ipv4_multicast/main.c
@@ -805,5 +805,8 @@  main(int argc, char **argv)
 			return -1;
 	}
 
+	/* clean up the EAL */
+	rte_eal_cleanup();
+
 	return 0;
 }
diff --git a/examples/kni/main.c b/examples/kni/main.c
index fe93b86..beabb3c 100644
--- a/examples/kni/main.c
+++ b/examples/kni/main.c
@@ -1140,5 +1140,8 @@  main(int argc, char** argv)
 			kni_port_params_array[i] = NULL;
 		}
 
+	/* clean up the EAL */
+	rte_eal_cleanup();
+
 	return 0;
 }
diff --git a/examples/l2fwd-cat/l2fwd-cat.c b/examples/l2fwd-cat/l2fwd-cat.c
index 2e632c5..02288a3 100644
--- a/examples/l2fwd-cat/l2fwd-cat.c
+++ b/examples/l2fwd-cat/l2fwd-cat.c
@@ -201,5 +201,8 @@  main(int argc, char *argv[])
 	/* Call lcore_main on the main core only. */
 	lcore_main();
 
+	/* clean up the EAL */
+	rte_eal_cleanup();
+
 	return 0;
 }
diff --git a/examples/l2fwd-crypto/main.c b/examples/l2fwd-crypto/main.c
index a96cb94..ba60c1a 100644
--- a/examples/l2fwd-crypto/main.c
+++ b/examples/l2fwd-crypto/main.c
@@ -2805,5 +2805,8 @@  main(int argc, char **argv)
 			return -1;
 	}
 
+	/* clean up the EAL */
+	rte_eal_cleanup();
+
 	return 0;
 }
diff --git a/examples/l2fwd-event/main.c b/examples/l2fwd-event/main.c
index 444ee4e..0acfee4 100644
--- a/examples/l2fwd-event/main.c
+++ b/examples/l2fwd-event/main.c
@@ -716,6 +716,9 @@  main(int argc, char **argv)
 			printf(" Done\n");
 		}
 	}
+
+	/* clean up the EAL */
+	rte_eal_cleanup();
 	printf("Bye...\n");
 
 	return 0;
diff --git a/examples/l2fwd-jobstats/main.c b/examples/l2fwd-jobstats/main.c
index 1151769..58a7226 100644
--- a/examples/l2fwd-jobstats/main.c
+++ b/examples/l2fwd-jobstats/main.c
@@ -1022,5 +1022,8 @@  main(int argc, char **argv)
 			return -1;
 	}
 
+	/* clean up the EAL */
+	rte_eal_cleanup();
+
 	return 0;
 }
diff --git a/examples/l2fwd-keepalive/main.c b/examples/l2fwd-keepalive/main.c
index e4c2b27..be66162 100644
--- a/examples/l2fwd-keepalive/main.c
+++ b/examples/l2fwd-keepalive/main.c
@@ -817,5 +817,9 @@  main(int argc, char **argv)
 
 	if (ka_shm != NULL)
 		rte_keepalive_shm_cleanup(ka_shm);
+
+	/* clean up the EAL */
+	rte_eal_cleanup();
+
 	return 0;
 }
diff --git a/examples/l2fwd/main.c b/examples/l2fwd/main.c
index 3377b08..ffb67bb 100644
--- a/examples/l2fwd/main.c
+++ b/examples/l2fwd/main.c
@@ -903,6 +903,9 @@  main(int argc, char **argv)
 		rte_eth_dev_close(portid);
 		printf(" Done\n");
 	}
+
+	/* clean up the EAL */
+	rte_eal_cleanup();
 	printf("Bye...\n");
 
 	return ret;
diff --git a/examples/l3fwd-acl/main.c b/examples/l3fwd-acl/main.c
index 4a17274..a1f457b 100644
--- a/examples/l3fwd-acl/main.c
+++ b/examples/l3fwd-acl/main.c
@@ -2258,5 +2258,8 @@  main(int argc, char **argv)
 			return -1;
 	}
 
+	/* clean up the EAL */
+	rte_eal_cleanup();
+
 	return 0;
 }
diff --git a/examples/l3fwd-graph/main.c b/examples/l3fwd-graph/main.c
index 127c5e8..75c2e0e 100644
--- a/examples/l3fwd-graph/main.c
+++ b/examples/l3fwd-graph/main.c
@@ -1123,6 +1123,9 @@  main(int argc, char **argv)
 		rte_eth_dev_close(portid);
 		printf(" Done\n");
 	}
+
+	/* clean up the EAL */
+	rte_eal_cleanup();
 	printf("Bye...\n");
 
 	return ret;
diff --git a/examples/l3fwd/main.c b/examples/l3fwd/main.c
index bb49e5f..ee156d1 100644
--- a/examples/l3fwd/main.c
+++ b/examples/l3fwd/main.c
@@ -1315,6 +1315,10 @@  main(int argc, char **argv)
 			printf(" Done\n");
 		}
 	}
+
+	/* clean up the EAL */
+	rte_eal_cleanup();
+
 	printf("Bye...\n");
 
 	return ret;
diff --git a/examples/link_status_interrupt/main.c b/examples/link_status_interrupt/main.c
index f1653b4..6cffd5a 100644
--- a/examples/link_status_interrupt/main.c
+++ b/examples/link_status_interrupt/main.c
@@ -731,5 +731,8 @@  main(int argc, char **argv)
 			return -1;
 	}
 
+	/* clean up the EAL */
+	rte_eal_cleanup();
+
 	return 0;
 }
diff --git a/examples/multi_process/client_server_mp/mp_client/client.c b/examples/multi_process/client_server_mp/mp_client/client.c
index 361d90b..6d4c246 100644
--- a/examples/multi_process/client_server_mp/mp_client/client.c
+++ b/examples/multi_process/client_server_mp/mp_client/client.c
@@ -268,4 +268,7 @@  main(int argc, char *argv[])
 
 		need_flush = 1;
 	}
+
+	/* clean up the EAL */
+	rte_eal_cleanup();
 }
diff --git a/examples/multi_process/client_server_mp/mp_server/main.c b/examples/multi_process/client_server_mp/mp_server/main.c
index b18e12d..9bcee46 100644
--- a/examples/multi_process/client_server_mp/mp_server/main.c
+++ b/examples/multi_process/client_server_mp/mp_server/main.c
@@ -304,5 +304,9 @@  main(int argc, char *argv[])
 	rte_eal_mp_remote_launch(sleep_lcore, NULL, SKIP_MAIN);
 
 	do_packet_forwarding();
+
+	/* clean up the EAL */
+	rte_eal_cleanup();
+
 	return 0;
 }
diff --git a/examples/multi_process/simple_mp/main.c b/examples/multi_process/simple_mp/main.c
index 109b8bb..a05404f 100644
--- a/examples/multi_process/simple_mp/main.c
+++ b/examples/multi_process/simple_mp/main.c
@@ -121,5 +121,9 @@  main(int argc, char **argv)
 	cmdline_stdin_exit(cl);
 
 	rte_eal_mp_wait_lcore();
+
+	/* clean up the EAL */
+	rte_eal_cleanup();
+
 	return 0;
 }
diff --git a/examples/multi_process/symmetric_mp/main.c b/examples/multi_process/symmetric_mp/main.c
index ae7f5e0..79e5c61 100644
--- a/examples/multi_process/symmetric_mp/main.c
+++ b/examples/multi_process/symmetric_mp/main.c
@@ -472,5 +472,8 @@  main(int argc, char **argv)
 
 	rte_eal_mp_remote_launch(lcore_main, NULL, CALL_MAIN);
 
+	/* clean up the EAL */
+	rte_eal_cleanup();
+
 	return 0;
 }
diff --git a/examples/ntb/ntb_fwd.c b/examples/ntb/ntb_fwd.c
index 54b7f08..e9a3887 100644
--- a/examples/ntb/ntb_fwd.c
+++ b/examples/ntb/ntb_fwd.c
@@ -1498,5 +1498,8 @@  main(int argc, char **argv)
 		start_pkt_fwd();
 	}
 
+	/* clean up the EAL */
+	rte_eal_cleanup();
+
 	return 0;
 }
diff --git a/examples/packet_ordering/main.c b/examples/packet_ordering/main.c
index bcbda05..d2fe9f6 100644
--- a/examples/packet_ordering/main.c
+++ b/examples/packet_ordering/main.c
@@ -783,5 +783,9 @@  main(int argc, char **argv)
 	}
 
 	print_stats();
+
+	/* clean up the EAL */
+	rte_eal_cleanup();
+
 	return 0;
 }
diff --git a/examples/performance-thread/l3fwd-thread/main.c b/examples/performance-thread/l3fwd-thread/main.c
index b16c19b..2f593ab 100644
--- a/examples/performance-thread/l3fwd-thread/main.c
+++ b/examples/performance-thread/l3fwd-thread/main.c
@@ -3781,5 +3781,8 @@  main(int argc, char **argv)
 		}
 	}
 
+	/* clean up the EAL */
+	rte_eal_cleanup();
+
 	return 0;
 }
diff --git a/examples/performance-thread/pthread_shim/main.c b/examples/performance-thread/pthread_shim/main.c
index 23e3b5e..241267f 100644
--- a/examples/performance-thread/pthread_shim/main.c
+++ b/examples/performance-thread/pthread_shim/main.c
@@ -258,5 +258,9 @@  int main(int argc, char **argv)
 	RTE_LCORE_FOREACH_WORKER(lcore_id) {
 		rte_eal_wait_lcore(lcore_id);
 	}
+
+	/* clean up the EAL */
+	rte_eal_cleanup();
+
 	return 0;
 }
diff --git a/examples/pipeline/main.c b/examples/pipeline/main.c
index fb57ef3..8ea19f9 100644
--- a/examples/pipeline/main.c
+++ b/examples/pipeline/main.c
@@ -190,4 +190,7 @@  main(int argc, char **argv)
 
 		conn_poll_for_msg(conn);
 	}
+
+	/* clean up the EAL */
+	rte_eal_cleanup();
 }
diff --git a/examples/ptpclient/ptpclient.c b/examples/ptpclient/ptpclient.c
index 33b297e..af44052 100644
--- a/examples/ptpclient/ptpclient.c
+++ b/examples/ptpclient/ptpclient.c
@@ -788,5 +788,8 @@  main(int argc, char *argv[])
 	/* Call lcore_main on the main core only. */
 	lcore_main();
 
+	/* clean up the EAL */
+	rte_eal_cleanup();
+
 	return 0;
 }
diff --git a/examples/qos_meter/main.c b/examples/qos_meter/main.c
index f2d9c28..6e724f3 100644
--- a/examples/qos_meter/main.c
+++ b/examples/qos_meter/main.c
@@ -460,5 +460,8 @@  main(int argc, char **argv)
 			return -1;
 	}
 
+	/* clean up the EAL */
+	rte_eal_cleanup();
+
 	return 0;
 }
diff --git a/examples/qos_sched/main.c b/examples/qos_sched/main.c
index a6071b9..dc6a17a 100644
--- a/examples/qos_sched/main.c
+++ b/examples/qos_sched/main.c
@@ -218,5 +218,8 @@  main(int argc, char **argv)
 		}
 	}
 
+	/* clean up the EAL */
+	rte_eal_cleanup();
+
 	return 0;
 }
diff --git a/examples/rxtx_callbacks/main.c b/examples/rxtx_callbacks/main.c
index 35c6c39..b57b2fc 100644
--- a/examples/rxtx_callbacks/main.c
+++ b/examples/rxtx_callbacks/main.c
@@ -338,5 +338,9 @@  main(int argc, char *argv[])
 
 	/* call lcore_main on main core only */
 	lcore_main();
+
+	/* clean up the EAL */
+	rte_eal_cleanup();
+
 	return 0;
 }
diff --git a/examples/server_node_efd/node/node.c b/examples/server_node_efd/node/node.c
index 67a5580..e68606e 100644
--- a/examples/server_node_efd/node/node.c
+++ b/examples/server_node_efd/node/node.c
@@ -383,4 +383,7 @@  main(int argc, char *argv[])
 
 		need_flush = 1;
 	}
+
+	/* clean up the EAL */
+	rte_eal_cleanup();
 }
diff --git a/examples/server_node_efd/server/main.c b/examples/server_node_efd/server/main.c
index 4728960..39b7b63 100644
--- a/examples/server_node_efd/server/main.c
+++ b/examples/server_node_efd/server/main.c
@@ -334,5 +334,9 @@  main(int argc, char *argv[])
 	rte_eal_mp_remote_launch(sleep_lcore, NULL, SKIP_MAIN);
 
 	do_packet_forwarding();
+
+	/* clean up the EAL */
+	rte_eal_cleanup();
+
 	return 0;
 }
diff --git a/examples/service_cores/main.c b/examples/service_cores/main.c
index c7c7928..c5753cc 100644
--- a/examples/service_cores/main.c
+++ b/examples/service_cores/main.c
@@ -220,5 +220,8 @@  main(int argc, char **argv)
 			i = 0;
 	}
 
+	/* clean up the EAL */
+	rte_eal_cleanup();
+
 	return 0;
 }
diff --git a/examples/skeleton/basicfwd.c b/examples/skeleton/basicfwd.c
index 4b2b6ab..a31b288 100644
--- a/examples/skeleton/basicfwd.c
+++ b/examples/skeleton/basicfwd.c
@@ -205,5 +205,8 @@  main(int argc, char *argv[])
 	/* Call lcore_main on the main core only. */
 	lcore_main();
 
+	/* clean up the EAL */
+	rte_eal_cleanup();
+
 	return 0;
 }
diff --git a/examples/timer/main.c b/examples/timer/main.c
index 5a57e48..d67301e 100644
--- a/examples/timer/main.c
+++ b/examples/timer/main.c
@@ -117,5 +117,8 @@  main(int argc, char **argv)
 	/* call it on main lcore too */
 	(void) lcore_mainloop(NULL);
 
+	/* clean up the EAL */
+	rte_eal_cleanup();
+
 	return 0;
 }
diff --git a/examples/vdpa/main.c b/examples/vdpa/main.c
index 97e967b..097a267 100644
--- a/examples/vdpa/main.c
+++ b/examples/vdpa/main.c
@@ -576,5 +576,8 @@  main(int argc, char *argv[])
 		vdpa_sample_quit();
 	}
 
+	/* clean up the EAL */
+	rte_eal_cleanup();
+
 	return 0;
 }
diff --git a/examples/vhost/main.c b/examples/vhost/main.c
index 2ca7d98..ff48ba2 100644
--- a/examples/vhost/main.c
+++ b/examples/vhost/main.c
@@ -1781,6 +1781,8 @@  main(int argc, char *argv[])
 	RTE_LCORE_FOREACH_WORKER(lcore_id)
 		rte_eal_wait_lcore(lcore_id);
 
-	return 0;
+	/* clean up the EAL */
+	rte_eal_cleanup();
 
+	return 0;
 }
diff --git a/examples/vhost_blk/vhost_blk.c b/examples/vhost_blk/vhost_blk.c
index 5c64071..5209da3 100644
--- a/examples/vhost_blk/vhost_blk.c
+++ b/examples/vhost_blk/vhost_blk.c
@@ -906,5 +906,8 @@  int main(int argc, char *argv[])
 	while (1)
 		sleep(1);
 
+	/* clean up the EAL */
+	rte_eal_cleanup();
+
 	return 0;
 }
diff --git a/examples/vhost_crypto/main.c b/examples/vhost_crypto/main.c
index 7ed38fe..dea7dcb 100644
--- a/examples/vhost_crypto/main.c
+++ b/examples/vhost_crypto/main.c
@@ -469,6 +469,9 @@  free_resource(void)
 	}
 
 	memset(&options, 0, sizeof(options));
+
+	/* clean up the EAL */
+	rte_eal_cleanup();
 }
 
 int
diff --git a/examples/vm_power_manager/guest_cli/main.c b/examples/vm_power_manager/guest_cli/main.c
index 4e17f7f..b8fa65e 100644
--- a/examples/vm_power_manager/guest_cli/main.c
+++ b/examples/vm_power_manager/guest_cli/main.c
@@ -200,5 +200,8 @@  main(int argc, char **argv)
 	}
 	run_cli(NULL);
 
+	/* clean up the EAL */
+	rte_eal_cleanup();
+
 	return 0;
 }
diff --git a/examples/vm_power_manager/main.c b/examples/vm_power_manager/main.c
index 799d7b9..7d5bf68 100644
--- a/examples/vm_power_manager/main.c
+++ b/examples/vm_power_manager/main.c
@@ -468,5 +468,8 @@  main(int argc, char **argv)
 
 	free(ci->cd);
 
+	/* clean up the EAL */
+	rte_eal_cleanup();
+
 	return 0;
 }
diff --git a/examples/vmdq/main.c b/examples/vmdq/main.c
index 3cb890f..a19f7db 100644
--- a/examples/vmdq/main.c
+++ b/examples/vmdq/main.c
@@ -659,5 +659,8 @@  main(int argc, char *argv[])
 			return -1;
 	}
 
+	/* clean up the EAL */
+	rte_eal_cleanup();
+
 	return 0;
 }
diff --git a/examples/vmdq_dcb/main.c b/examples/vmdq_dcb/main.c
index 1a74364..ba99280 100644
--- a/examples/vmdq_dcb/main.c
+++ b/examples/vmdq_dcb/main.c
@@ -707,5 +707,8 @@  main(int argc, char *argv[])
 	/* call on main too */
 	(void) lcore_main((void*)i);
 
+	/* clean up the EAL */
+	rte_eal_cleanup();
+
 	return 0;
 }