aboutsummaryrefslogtreecommitdiff
path: root/platform/linux-dpdk/odp_init.c
diff options
context:
space:
mode:
authorVenkatesh Vivekanandan <venkatesh.vivekanandan@linaro.org>2014-10-06 14:00:52 +0530
committerVenkatesh Vivekanandan <venkatesh.vivekanandan@linaro.org>2014-10-06 14:00:52 +0530
commit7d0090a443072ed354cc9e1cd81d16aacb26d64a (patch)
treeb85c8cd81b2271ef58fa042a42fab9e31b7f4eb8 /platform/linux-dpdk/odp_init.c
parent885542fb76691c49fd61f279f07d3d92841c249b (diff)
Revert "git split: delete dpdk"
This reverts commit d8cda8b0f395d00902a50690fee3679f65780013.
Diffstat (limited to 'platform/linux-dpdk/odp_init.c')
-rw-r--r--platform/linux-dpdk/odp_init.c113
1 files changed, 113 insertions, 0 deletions
diff --git a/platform/linux-dpdk/odp_init.c b/platform/linux-dpdk/odp_init.c
new file mode 100644
index 000000000..ecc206669
--- /dev/null
+++ b/platform/linux-dpdk/odp_init.c
@@ -0,0 +1,113 @@
+/* Copyright (c) 2013, Linaro Limited
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#include <odp_init.h>
+#include <odp_internal.h>
+#include <odp_debug.h>
+#include <odp_packet_dpdk.h>
+
+int odp_init_dpdk(void)
+{
+ int test_argc = 5;
+ char *test_argv[6];
+ int core_count, i, num_cores = 0;
+ char core_mask[8];
+
+ core_count = odp_sys_core_count();
+ for (i = 0; i < core_count; i++)
+ num_cores += (0x1 << i);
+ sprintf(core_mask, "%x", num_cores);
+
+ test_argv[0] = malloc(sizeof("odp_dpdk"));
+ strcpy(test_argv[0], "odp_dpdk");
+ test_argv[1] = malloc(sizeof("-c"));
+ strcpy(test_argv[1], "-c");
+ test_argv[2] = malloc(sizeof(core_mask));
+ strcpy(test_argv[2], core_mask);
+ test_argv[3] = malloc(sizeof("-n"));
+ strcpy(test_argv[3], "-n");
+ test_argv[4] = malloc(sizeof("3"));
+ strcpy(test_argv[4], "3");
+
+ if (rte_eal_init(test_argc, (char **)test_argv) < 0) {
+ ODP_ERR("Cannot init the Intel DPDK EAL!");
+ return -1;
+ }
+
+ if (rte_pmd_init_all() < 0) {
+ ODP_ERR("Cannot init pmd\n");
+ return -1;
+ }
+
+ if (rte_eal_pci_probe() < 0) {
+ ODP_ERR("Cannot probe PCI\n");
+ return -1;
+ }
+
+ return 0;
+}
+
+int odp_init_global(void)
+{
+ odp_thread_init_global();
+
+ odp_system_info_init();
+
+ if (odp_init_dpdk()) {
+ ODP_ERR("ODP dpdk init failed.\n");
+ return -1;
+ }
+
+ if (odp_shm_init_global()) {
+ ODP_ERR("ODP shm init failed.\n");
+ return -1;
+ }
+
+ if (odp_buffer_pool_init_global()) {
+ ODP_ERR("ODP buffer pool init failed.\n");
+ return -1;
+ }
+
+ if (odp_queue_init_global()) {
+ ODP_ERR("ODP queue init failed.\n");
+ return -1;
+ }
+
+ if (odp_schedule_init_global()) {
+ ODP_ERR("ODP schedule init failed.\n");
+ return -1;
+ }
+
+ if (odp_pktio_init_global()) {
+ ODP_ERR("ODP packet io init failed.\n");
+ return -1;
+ }
+
+ if (odp_timer_init_global()) {
+ ODP_ERR("ODP timer init failed.\n");
+ return -1;
+ }
+
+ return 0;
+}
+
+
+int odp_init_local(int thr_id)
+{
+ odp_thread_init_local(thr_id);
+
+ if (odp_pktio_init_local()) {
+ ODP_ERR("ODP packet io local init failed.\n");
+ return -1;
+ }
+
+ if (odp_schedule_init_local()) {
+ ODP_ERR("ODP schedule local init failed.\n");
+ return -1;
+ }
+
+ return 0;
+}