| 52 | }; |
| 53 | |
| 54 | struct rte_hash * |
| 55 | rte_hash_find_existing(const char *name) |
| 56 | { |
| 57 | struct rte_hash *h = NULL; |
| 58 | struct rte_tailq_entry *te; |
| 59 | struct rte_hash_list *hash_list; |
| 60 | |
| 61 | hash_list = RTE_TAILQ_CAST(rte_hash_tailq.head, rte_hash_list); |
| 62 | |
| 63 | rte_mcfg_tailq_read_lock(); |
| 64 | TAILQ_FOREACH(te, hash_list, next) { |
| 65 | h = (struct rte_hash *) te->data; |
| 66 | if (strncmp(name, h->name, RTE_HASH_NAMESIZE) == 0) |
| 67 | break; |
| 68 | } |
| 69 | rte_mcfg_tailq_read_unlock(); |
| 70 | |
| 71 | if (te == NULL) { |
| 72 | rte_errno = ENOENT; |
| 73 | return NULL; |
| 74 | } |
| 75 | return h; |
| 76 | } |
| 77 | |
| 78 | static inline struct rte_hash_bucket * |
| 79 | rte_hash_get_last_bkt(struct rte_hash_bucket *lst_bkt) |