MCPcopy Create free account
hub / github.com/F-Stack/f-stack / table_del

Function table_del

dpdk/lib/table/rte_swx_table_em.c:357–392  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

355}
356
357static int
358table_del(void *table, struct rte_swx_table_entry *entry)
359{
360 struct table *t = table;
361 struct bucket_extension *bkt0, *bkt, *bkt_prev;
362 uint32_t input_sig, bkt_id, i;
363
364 CHECK(t, EINVAL);
365 CHECK(entry, EINVAL);
366 CHECK(entry->key, EINVAL);
367
368 input_sig = t->params.hash_func(entry->key, t->params.key_size, 0);
369 bkt_id = input_sig & (t->n_buckets - 1);
370 bkt0 = &t->buckets[bkt_id];
371 input_sig = (input_sig >> 16) | 1;
372
373 /* Key is present in the bucket. */
374 for (bkt = bkt0, bkt_prev = NULL; bkt; bkt_prev = bkt, bkt = bkt->next)
375 for (i = 0; i < KEYS_PER_BUCKET; i++)
376 if (bkt_keycmp(t, bkt, entry->key, i, input_sig)) {
377 /* Key free. */
378 bkt->sig[i] = 0;
379 t->key_stack[t->key_stack_tos++] = bkt->key_id[i];
380
381 /* Bucket extension free if empty and not the 1st in bucket. */
382 if (bkt_prev && bkt_is_empty(bkt)) {
383 bkt_prev->next = bkt->next;
384 bkt_id = bkt - t->buckets_ext;
385 t->bkt_ext_stack[t->bkt_ext_stack_tos++] = bkt_id;
386 }
387
388 return 0;
389 }
390
391 return 0;
392}
393
394static uint64_t
395table_mailbox_size_get_unoptimized(void)

Callers

nothing calls this directly

Calls 2

bkt_keycmpFunction · 0.85
bkt_is_emptyFunction · 0.85

Tested by

no test coverage detected