From 9b7e0dbb6c547e256146b0679f0e918b15d10541 Mon Sep 17 00:00:00 2001 From: David Marchand Date: Wed, 4 Mar 2015 22:50:05 +0100 Subject: [PATCH] tailq: get rid of broken reserve api The "reserve" macros and functions do not check if the requested entry is free. They do nothing more than the lookup function (which itself "creates" entries ...). The rte_tailq api is marked as "internal use" in documentation and these macros are only used in test application, so just get rid of them. Signed-off-by: David Marchand Acked-by: Neil Horman --- app/test/test_tailq.c | 48 +----------- lib/librte_eal/bsdapp/eal/rte_eal_version.map | 2 - lib/librte_eal/common/eal_common_tailqs.c | 12 --- lib/librte_eal/common/include/rte_tailq.h | 75 ++----------------- .../linuxapp/eal/rte_eal_version.map | 2 - 5 files changed, 9 insertions(+), 130 deletions(-) diff --git a/app/test/test_tailq.c b/app/test/test_tailq.c index b0f9a78eef..56656f038f 100644 --- a/app/test/test_tailq.c +++ b/app/test/test_tailq.c @@ -60,7 +60,7 @@ test_tailq_create(void) unsigned i; /* create a first tailq and check its non-null */ - d_head = RTE_TAILQ_RESERVE_BY_IDX(DEFAULT_TAILQ, rte_tailq_entry_head); + d_head = RTE_TAILQ_LOOKUP_BY_IDX(DEFAULT_TAILQ, rte_tailq_entry_head); if (d_head == NULL) do_return("Error allocating dummy_q0\n"); @@ -69,13 +69,13 @@ test_tailq_create(void) TAILQ_INSERT_TAIL(d_head, &d_elem, next); /* try allocating dummy_q0 again, and check for failure */ - if (RTE_TAILQ_RESERVE_BY_IDX(DEFAULT_TAILQ, rte_tailq_entry_head) == NULL) + if (RTE_TAILQ_LOOKUP_BY_IDX(DEFAULT_TAILQ, rte_tailq_entry_head) == NULL) do_return("Error, non-null result returned when attemption to " "re-allocate a tailq\n"); /* now fill up the tailq slots available and check we get an error */ for (i = RTE_TAILQ_NUM; i < RTE_MAX_TAILQ; i++){ - if ((d_head = RTE_TAILQ_RESERVE_BY_IDX(i, + if ((d_head = RTE_TAILQ_LOOKUP_BY_IDX(i, rte_tailq_entry_head)) == NULL) break; } @@ -111,54 +111,12 @@ test_tailq_lookup(void) return 0; } -/* test for deprecated functions - mainly for coverage */ -static int -test_tailq_deprecated(void) -{ - struct rte_tailq_entry_head *d_head; - - /* since TAILQ_RESERVE is not able to create new tailqs, - * we should find an existing one (IOW, RTE_TAILQ_RESERVE behaves identical - * to RTE_TAILQ_LOOKUP). - * - * PCI_RESOURCE_LIST tailq is guaranteed to - * be present in any DPDK app. */ - d_head = RTE_TAILQ_RESERVE("PCI_RESOURCE_LIST", rte_tailq_entry_head); - if (d_head == NULL) - do_return("Error finding PCI_RESOURCE_LIST\n"); - - d_head = RTE_TAILQ_LOOKUP("PCI_RESOURCE_LIST", rte_tailq_entry_head); - if (d_head == NULL) - do_return("Error finding PCI_RESOURCE_LIST\n"); - - /* try doing that with non-existent names */ - d_head = RTE_TAILQ_RESERVE("random name", rte_tailq_entry_head); - if (d_head != NULL) - do_return("Non-existent tailq found!\n"); - - d_head = RTE_TAILQ_LOOKUP("random name", rte_tailq_entry_head); - if (d_head != NULL) - do_return("Non-existent tailq found!\n"); - - /* try doing the same with NULL names */ - d_head = RTE_TAILQ_RESERVE(NULL, rte_tailq_entry_head); - if (d_head != NULL) - do_return("NULL tailq found!\n"); - - d_head = RTE_TAILQ_LOOKUP(NULL, rte_tailq_entry_head); - if (d_head != NULL) - do_return("NULL tailq found!\n"); - - return 0; -} - static int test_tailq(void) { int ret = 0; ret |= test_tailq_create(); ret |= test_tailq_lookup(); - ret |= test_tailq_deprecated(); return ret; } diff --git a/lib/librte_eal/bsdapp/eal/rte_eal_version.map b/lib/librte_eal/bsdapp/eal/rte_eal_version.map index d83524d7d6..c94fe8eec2 100644 --- a/lib/librte_eal/bsdapp/eal/rte_eal_version.map +++ b/lib/librte_eal/bsdapp/eal/rte_eal_version.map @@ -45,8 +45,6 @@ DPDK_2.0 { rte_eal_remote_launch; rte_eal_tailq_lookup; rte_eal_tailq_lookup_by_idx; - rte_eal_tailq_reserve; - rte_eal_tailq_reserve_by_idx; rte_eal_wait_lcore; rte_exit; rte_get_hpet_cycles; diff --git a/lib/librte_eal/common/eal_common_tailqs.c b/lib/librte_eal/common/eal_common_tailqs.c index a61e3f3f57..975ee74ad0 100644 --- a/lib/librte_eal/common/eal_common_tailqs.c +++ b/lib/librte_eal/common/eal_common_tailqs.c @@ -94,18 +94,6 @@ rte_eal_tailq_lookup_by_idx(const unsigned tailq_idx) return &mcfg->tailq_head[tailq_idx]; } -struct rte_tailq_head * -rte_eal_tailq_reserve(const char *name) -{ - return rte_eal_tailq_lookup(name); -} - -inline struct rte_tailq_head * -rte_eal_tailq_reserve_by_idx(const unsigned tailq_idx) -{ - return rte_eal_tailq_lookup_by_idx(tailq_idx); -} - void rte_dump_tailq(FILE *f) { diff --git a/lib/librte_eal/common/include/rte_tailq.h b/lib/librte_eal/common/include/rte_tailq.h index 6ac4b9b6a3..6b7278c6f5 100644 --- a/lib/librte_eal/common/include/rte_tailq.h +++ b/lib/librte_eal/common/include/rte_tailq.h @@ -75,45 +75,6 @@ struct rte_tailq_head { #define RTE_TAILQ_CAST(tailq_entry, struct_name) \ (struct struct_name *)&(tailq_entry)->tailq_head -/** - * Utility macro to make reserving a tailqueue for a particular struct easier. - * - * @param name - * The name to be given to the tailq - used by lookup to find it later - * - * @param struct_name - * The name of the list type we are using. (Generally this is the same as the - * first parameter passed to TAILQ_HEAD macro) - * - * @return - * The return value from rte_eal_tailq_reserve, typecast to the appropriate - * structure pointer type. - * NULL on error, since the tailq_head is the first - * element in the rte_tailq_head structure. - */ -#define RTE_TAILQ_RESERVE(name, struct_name) \ - RTE_TAILQ_CAST(rte_eal_tailq_reserve(name), struct_name) - -/** - * Utility macro to make reserving a tailqueue for a particular struct easier. - * - * @param idx - * The tailq idx defined in rte_tail_t to be given to the tail queue. - * - used by lookup to find it later - * - * @param struct_name - * The name of the list type we are using. (Generally this is the same as the - * first parameter passed to TAILQ_HEAD macro) - * - * @return - * The return value from rte_eal_tailq_reserve, typecast to the appropriate - * structure pointer type. - * NULL on error, since the tailq_head is the first - * element in the rte_tailq_head structure. - */ -#define RTE_TAILQ_RESERVE_BY_IDX(idx, struct_name) \ - RTE_TAILQ_CAST(rte_eal_tailq_reserve_by_idx(idx), struct_name) - /** * Utility macro to make looking up a tailqueue for a particular struct easier. * @@ -152,30 +113,6 @@ struct rte_tailq_head { #define RTE_TAILQ_LOOKUP_BY_IDX(idx, struct_name) \ RTE_TAILQ_CAST(rte_eal_tailq_lookup_by_idx(idx), struct_name) -/** - * Reserve a slot in the tailq list for a particular tailq header - * Note: this function, along with rte_tailq_lookup, is not multi-thread safe, - * and both these functions should only be called from a single thread at a time - * - * @param name - * The name to be given to the tail queue. - * @return - * A pointer to the newly reserved tailq entry - */ -struct rte_tailq_head *rte_eal_tailq_reserve(const char *name); - -/** - * Reserve a slot in the tailq list for a particular tailq header - * Note: this function, along with rte_tailq_lookup, is not multi-thread safe, - * and both these functions should only be called from a single thread at a time - * - * @param idx - * The tailq idx defined in rte_tail_t to be given to the tail queue. - * @return - * A pointer to the newly reserved tailq entry - */ -struct rte_tailq_head *rte_eal_tailq_reserve_by_idx(const unsigned idx); - /** * Dump tail queues to the console. * @@ -187,10 +124,10 @@ void rte_dump_tailq(FILE *f); /** * Lookup for a tail queue. * - * Get a pointer to a tail queue header of an already reserved tail + * Get a pointer to a tail queue header of a tail * queue identified by the name given as an argument. - * Note: this function, along with rte_tailq_reserve, is not multi-thread safe, - * and both these functions should only be called from a single thread at a time + * Note: this function is not multi-thread safe, and should only be called from + * a single thread at a time * * @param name * The name of the queue. @@ -202,10 +139,10 @@ struct rte_tailq_head *rte_eal_tailq_lookup(const char *name); /** * Lookup for a tail queue. * - * Get a pointer to a tail queue header of an already reserved tail + * Get a pointer to a tail queue header of a tail * queue identified by the name given as an argument. - * Note: this function, along with rte_tailq_reserve, is not multi-thread safe, - * and both these functions should only be called from a single thread at a time + * Note: this function is not multi-thread safe, and should only be called from + * a single thread at a time * * @param idx * The tailq idx defined in rte_tail_t to be given to the tail queue. diff --git a/lib/librte_eal/linuxapp/eal/rte_eal_version.map b/lib/librte_eal/linuxapp/eal/rte_eal_version.map index 54f5ff1e12..a1ba203b8e 100644 --- a/lib/librte_eal/linuxapp/eal/rte_eal_version.map +++ b/lib/librte_eal/linuxapp/eal/rte_eal_version.map @@ -49,8 +49,6 @@ DPDK_2.0 { rte_eal_remote_launch; rte_eal_tailq_lookup; rte_eal_tailq_lookup_by_idx; - rte_eal_tailq_reserve; - rte_eal_tailq_reserve_by_idx; rte_eal_vdev_init; rte_eal_vdev_uninit; rte_eal_wait_lcore; -- 2.20.1