diff options
author | Nicolas Morey-Chaisemartin <nmorey@kalray.eu> | 2015-07-24 13:51:23 +0200 |
---|---|---|
committer | Maxim Uvarov <maxim.uvarov@linaro.org> | 2015-07-28 14:04:09 +0300 |
commit | 0c09c95d12eddd3deb6eb01e31cb27773e93f6f1 (patch) | |
tree | 363a49d6a634650a7232179d7d24106fe2dc9c46 /platform/linux-generic | |
parent | 1338a46573b2c602e3565cb1f372dabef3497eb4 (diff) |
linux-generic: pktio: add global init and term function for pktios
Each pktio type can now provide an optional init and term function to set
and clean itself up.
Signed-off-by: Nicolas Morey-Chaisemartin <nmorey@kalray.eu>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
Diffstat (limited to 'platform/linux-generic')
-rw-r--r-- | platform/linux-generic/include/odp_packet_io_internal.h | 2 | ||||
-rw-r--r-- | platform/linux-generic/odp_packet_io.c | 16 | ||||
-rw-r--r-- | platform/linux-generic/pktio/loop.c | 2 | ||||
-rw-r--r-- | platform/linux-generic/pktio/socket.c | 4 | ||||
-rw-r--r-- | platform/linux-generic/pktio/socket_mmap.c | 2 |
5 files changed, 26 insertions, 0 deletions
diff --git a/platform/linux-generic/include/odp_packet_io_internal.h b/platform/linux-generic/include/odp_packet_io_internal.h index f23093686..f5a5824ca 100644 --- a/platform/linux-generic/include/odp_packet_io_internal.h +++ b/platform/linux-generic/include/odp_packet_io_internal.h @@ -66,6 +66,8 @@ typedef struct { } pktio_table_t; typedef struct pktio_if_ops { + int (*init)(void); + int (*term)(void); int (*open)(odp_pktio_t pktio, pktio_entry_t *pktio_entry, const char *devname, odp_pool_t pool); int (*close)(pktio_entry_t *pktio_entry); diff --git a/platform/linux-generic/odp_packet_io.c b/platform/linux-generic/odp_packet_io.c index c159baf41..2bfec523c 100644 --- a/platform/linux-generic/odp_packet_io.c +++ b/platform/linux-generic/odp_packet_io.c @@ -37,6 +37,7 @@ int odp_pktio_init_global(void) odp_queue_t qid; int id; odp_shm_t shm; + int pktio_if; shm = odp_shm_reserve("odp_pktio_entries", sizeof(pktio_table_t), @@ -72,6 +73,13 @@ int odp_pktio_init_global(void) queue_entry->s.pktout = _odp_cast_scalar(odp_pktio_t, id); } + for (pktio_if = 0; pktio_if_ops[pktio_if]; ++pktio_if) { + if (!pktio_if_ops[pktio_if]->init) + if (pktio_if_ops[pktio_if]->init()) + ODP_ERR("failed to initialized pktio type %d", + pktio_if); + } + return 0; } @@ -80,6 +88,14 @@ int odp_pktio_term_global(void) pktio_entry_t *pktio_entry; int ret = 0; int id; + int pktio_if; + + for (pktio_if = 0; pktio_if_ops[pktio_if]; ++pktio_if) { + if (!pktio_if_ops[pktio_if]->term) + if (pktio_if_ops[pktio_if]->term()) + ODP_ERR("failed to terminaye pktio type %d", + pktio_if); + } for (id = 1; id <= ODP_CONFIG_PKTIO_ENTRIES; ++id) { pktio_entry = &pktio_tbl->entries[id - 1]; diff --git a/platform/linux-generic/pktio/loop.c b/platform/linux-generic/pktio/loop.c index 0e7313fdd..188a9eeef 100644 --- a/platform/linux-generic/pktio/loop.c +++ b/platform/linux-generic/pktio/loop.c @@ -104,6 +104,8 @@ static int loopback_promisc_mode_get(pktio_entry_t *pktio_entry) } const pktio_if_ops_t loopback_pktio_ops = { + .init = NULL, + .term = NULL, .open = loopback_open, .close = loopback_close, .recv = loopback_recv, diff --git a/platform/linux-generic/pktio/socket.c b/platform/linux-generic/pktio/socket.c index 400897dfe..202608aca 100644 --- a/platform/linux-generic/pktio/socket.c +++ b/platform/linux-generic/pktio/socket.c @@ -532,6 +532,8 @@ static int sock_promisc_mode_get(pktio_entry_t *pktio_entry) } const pktio_if_ops_t sock_basic_pktio_ops = { + .init = NULL, + .term = NULL, .open = sock_basic_open, .close = sock_close, .recv = sock_basic_recv, @@ -543,6 +545,8 @@ const pktio_if_ops_t sock_basic_pktio_ops = { }; const pktio_if_ops_t sock_mmsg_pktio_ops = { + .init = NULL, + .term = NULL, .open = sock_mmsg_open, .close = sock_close, .recv = sock_mmsg_recv, diff --git a/platform/linux-generic/pktio/socket_mmap.c b/platform/linux-generic/pktio/socket_mmap.c index 62f95f34e..7d42678be 100644 --- a/platform/linux-generic/pktio/socket_mmap.c +++ b/platform/linux-generic/pktio/socket_mmap.c @@ -536,6 +536,8 @@ static int sock_mmap_promisc_mode_get(pktio_entry_t *pktio_entry) } const pktio_if_ops_t sock_mmap_pktio_ops = { + .init = NULL, + .term = NULL, .open = sock_mmap_open, .close = sock_mmap_close, .recv = sock_mmap_recv, |