aboutsummaryrefslogtreecommitdiffstats
path: root/build-root
AgeCommit message (Expand)AuthorFilesLines
2020-06-15build: remove un-needed scriptSimon Chatterjee2-308/+1
2020-05-09build: reject merge conflict checkin attemptsDave Barach1-0/+5
2020-02-28ebuild: fix the distclean targetDave Barach1-16/+13
2020-02-08misc: fix the MAKE_PARALLEL_JOBS for 'make verify' targetAndrew Yourtchenko1-4/+2
2019-11-26build: remove valgrind leftoversBenoƮt Ganne1-7/+0
2019-10-03ebuild: Unite default build platform to vppjuraj.linkes1-1/+1
2019-05-31tools: FEATURE.yaml meta-data infrastructureOle Troan1-0/+1
2019-01-26Run vpp-configure on change to cmake config files.Burt Silverman1-0/+4
2019-01-20Rework of debian packagingDamjan Marion23-588/+1
2018-12-01Delete shared memory segment files when vpp startsDave Barach2-3/+1
2018-10-25Add x86_64 perfmon tablesDave Barach1-2/+2
2018-10-22X86_64 perf counter pluginDave Barach1-0/+5
2018-09-12Always use 'lib' instead of 'lib64'Damjan Marion1-2/+2
2018-08-01Move java api to extras/Damjan Marion1-1/+1
2018-03-24allow specifying number of concurrent jobsKlement Sekera1-0/+4
2018-03-15remove bootstrap from top-level MakefileDamjan Marion1-46/+0
2018-03-15use system provided ccache linksDamjan Marion3-15/+4
2018-03-14Clean up vpp build bootstrap stepDave Barach5-60/+38
2018-03-12License text cleanupDave Barach18-1/+240
2018-02-21vpp-csit-verify: use latest verified CSIT branch by defaultJan Gelety1-1/+1
2018-01-30VPP-899: Run VPP under SELinuxBilly McFall1-0/+1
2018-01-25Update CSIT tests 180115 -> 180122Jan Gelety1-1/+1
2018-01-23VPPAPIGEN: vppapigen replacement in Python PLY.Ole Troan1-1/+1
2018-01-16Update CSIT tests 171218 -> 180115Jan Gelety1-1/+1
2018-01-10makefile set CXXFLAGS so they are propageted to sub-buildsNeale Ranns1-0/+4
2017-12-18Update CSIT tests 171204 -> 171218Jan Gelety1-1/+1
2017-12-04Update CSIT tests 171127 -> 171204Jan Gelety1-1/+1
2017-11-27Update CSIT tests 171030 -> 171127Jan Gelety1-1/+1
2017-11-22 Makefile: make_parallel_flags via env variableEd Kern1-1/+1
2017-11-13Reduce number of parallel buildsDamjan Marion1-1/+1
2017-11-06fix debian packages generation (invalid warning silencing)Gabriel Ganne1-2/+1
2017-11-01Clean up a few historical anomaliesDave Barach1-22/+6
2017-10-31Update CSIT tests 171017 -> 171030Jan Gelety1-1/+1
2017-10-17Update CSIT tests 171002 -> 171017Jan Gelety1-1/+1
2017-10-04checkstyle: add clang-format dependency, fix bugKlement Sekera1-1/+1
2017-10-04Update CSIT tests 170926 -> 171002Jan Gelety1-1/+1
2017-09-27Update CSIT tests 1700906 -> 170926Jan Gelety1-1/+1
2017-09-26checkstyle: ignore old clang-format (centos)Klement Sekera1-2/+9
2017-09-19Add C++ APIKlement Sekera1-12/+50
2017-09-07The missing variable (added with this patch) was causing the build on AARCH64Marco Varlese1-0/+1
2017-09-07Update CSIT tests 170814 -> 170906Jan Gelety1-1/+1
2017-08-18Update CSIT tests 170731 -> 170814Jan Gelety1-1/+1
2017-08-02Update CSIT tests 170724 -> 170731Jan Gelety1-1/+1
2017-07-24Update CSIT tests 170626 -> 170724Jan Gelety1-1/+1
2017-06-26Update CSIT tests 170622 -> 170626Jan Gelety1-1/+1
2017-06-24make: Fix parallel building with some container platforms (VPP-880)Chris Luke1-10/+7
2017-06-22Update CSIT tests 170612 -> 170622Jan Gelety1-1/+1
2017-06-12Update CSIT tests 170605 -> 170612Jan Gelety1-1/+1
2017-06-06Update CSIT tests 170529 -> 170605Jan Gelety1-1/+1
2017-06-02Update CSIT tests 170518 -> 170529Peter Mikus1-1/+1
>if (BIHASH_KVP_CACHE_SIZE > 3) mask |= slot << 9; if (BIHASH_KVP_CACHE_SIZE > 4) mask |= slot << 12; value = b->cache_lru; tmp = value ^ mask; /* Already the most-recently used? */ if ((tmp & 7) == 0) return; found_lru_pos = ((tmp & (7 << 3)) == 0) ? 1 : 0; if (BIHASH_KVP_CACHE_SIZE > 2) found_lru_pos = ((tmp & (7 << 6)) == 0) ? 2 : found_lru_pos; if (BIHASH_KVP_CACHE_SIZE > 3) found_lru_pos = ((tmp & (7 << 9)) == 0) ? 3 : found_lru_pos; if (BIHASH_KVP_CACHE_SIZE > 4) found_lru_pos = ((tmp & (7 << 12)) == 0) ? 4 : found_lru_pos; ASSERT (found_lru_pos); /* create a mask to kill bits in or above slot */ mask = 0xFFFF << found_lru_pos; mask <<= found_lru_pos; mask <<= found_lru_pos; mask ^= 0xFFFF; tmp = value & mask; /* Save bits above slot */ mask ^= 0xFFFF; mask <<= 3; save_hi = value & mask; value = save_hi | (tmp << 3) | slot; b->cache_lru = value; } void BV (clib_bihash_update_lru_not_inline) (BVT (clib_bihash_bucket) * b, u8 slot); static inline u8 BV (clib_bihash_get_lru) (BVT (clib_bihash_bucket) * b) { #if BIHASH_KVP_CACHE_SIZE > 0 return (b->cache_lru >> (3 * (BIHASH_KVP_CACHE_SIZE - 1))) & 7; #else return 0; #endif } static inline void BV (clib_bihash_reset_cache) (BVT (clib_bihash_bucket) * b) { #if BIHASH_KVP_CACHE_SIZE > 0 u16 initial_lru_value; memset (b->cache, 0xff, sizeof (b->cache)); /* * We'll want the cache to be loaded from slot 0 -> slot N, so * the initial LRU order is reverse index order. */ if (BIHASH_KVP_CACHE_SIZE == 1) initial_lru_value = 0; else if (BIHASH_KVP_CACHE_SIZE == 2) initial_lru_value = (0 << 3) | (1 << 0); else if (BIHASH_KVP_CACHE_SIZE == 3) initial_lru_value = (0 << 6) | (1 << 3) | (2 << 0); else if (BIHASH_KVP_CACHE_SIZE == 4) initial_lru_value = (0 << 9) | (1 << 6) | (2 << 3) | (3 << 0); else if (BIHASH_KVP_CACHE_SIZE == 5) initial_lru_value = (0 << 12) | (1 << 9) | (2 << 6) | (3 << 3) | (4 << 0); b->cache_lru = initial_lru_value; #endif } static inline int BV (clib_bihash_lock_bucket) (BVT (clib_bihash_bucket) * b) { BVT (clib_bihash_bucket) tmp_b; u64 rv; tmp_b.as_u64 = 0; tmp_b.cache_lru = 1 << 15; rv = __sync_fetch_and_or (&b->as_u64, tmp_b.as_u64); tmp_b.as_u64 = rv; /* Was already locked? */ if (tmp_b.cache_lru & (1 << 15)) return 0; return 1; } static inline void BV (clib_bihash_unlock_bucket) (BVT (clib_bihash_bucket) * b) { BVT (clib_bihash_bucket) tmp_b; tmp_b.as_u64 = b->as_u64; tmp_b.cache_lru &= ~(1 << 15); b->as_u64 = tmp_b.as_u64; } static inline void *BV (clib_bihash_get_value) (BVT (clib_bihash) * h, uword offset) { u8 *hp = h->mheap; u8 *vp = hp + offset; return (void *) vp; } static inline uword BV (clib_bihash_get_offset) (BVT (clib_bihash) * h, void *v) { u8 *hp, *vp; hp = (u8 *) h->mheap; vp = (u8 *) v; ASSERT ((vp - hp) < 0x100000000ULL); return vp - hp; } void BV (clib_bihash_init) (BVT (clib_bihash) * h, char *name, u32 nbuckets, uword memory_size); void BV (clib_bihash_free) (BVT (clib_bihash) * h); int BV (clib_bihash_add_del) (BVT (clib_bihash) * h, BVT (clib_bihash_kv) * add_v, int is_add); int BV (clib_bihash_search) (BVT (clib_bihash) * h, BVT (clib_bihash_kv) * search_v, BVT (clib_bihash_kv) * return_v); void BV (clib_bihash_foreach_key_value_pair) (BVT (clib_bihash) * h, void *callback, void *arg); format_function_t BV (format_bihash); format_function_t BV (format_bihash_kvp); format_function_t BV (format_bihash_lru); static inline int BV (clib_bihash_search_inline) (BVT (clib_bihash) * h, BVT (clib_bihash_kv) * key_result) { u64 hash; u32 bucket_index; BVT (clib_bihash_value) * v; BVT (clib_bihash_bucket) * b; #if BIHASH_KVP_CACHE_SIZE > 0 BVT (clib_bihash_kv) * kvp; #endif int i, limit; hash = BV (clib_bihash_hash) (key_result); bucket_index = hash & (h->nbuckets - 1); b = &h->buckets[bucket_index]; if (b->offset == 0) return -1; #if BIHASH_KVP_CACHE_SIZE > 0 /* Check the cache, if not currently locked */ if (PREDICT_TRUE ((b->cache_lru & (1 << 15)) == 0)) { limit = BIHASH_KVP_CACHE_SIZE; kvp = b->cache; for (i = 0; i < limit; i++) { if (BV (clib_bihash_key_compare) (kvp[i].key, key_result->key)) { *key_result = kvp[i]; h->cache_hits++; return 0; } } } #endif hash >>= h->log2_nbuckets; v = BV (clib_bihash_get_value) (h, b->offset); /* If the bucket has unresolvable collisions, use linear search */ limit = BIHASH_KVP_PER_PAGE; v += (b->linear_search == 0) ? hash & ((1 << b->log2_pages) - 1) : 0; if (PREDICT_FALSE (b->linear_search)) limit <<= b->log2_pages; for (i = 0; i < limit; i++) { if (BV (clib_bihash_key_compare) (v->kvp[i].key, key_result->key)) { *key_result = v->kvp[i]; #if BIHASH_KVP_CACHE_SIZE > 0 u8 cache_slot; /* Try to lock the bucket */ if (BV (clib_bihash_lock_bucket) (b)) { cache_slot = BV (clib_bihash_get_lru) (b); b->cache[cache_slot] = v->kvp[i]; BV (clib_bihash_update_lru) (b, cache_slot); /* Unlock the bucket */ BV (clib_bihash_unlock_bucket) (b); h->cache_misses++; } #endif return 0; } } return -1; } static inline int BV (clib_bihash_search_inline_2) (BVT (clib_bihash) * h, BVT (clib_bihash_kv) * search_key, BVT (clib_bihash_kv) * valuep) { u64 hash; u32 bucket_index; BVT (clib_bihash_value) * v; BVT (clib_bihash_bucket) * b; #if BIHASH_KVP_CACHE_SIZE > 0 BVT (clib_bihash_kv) * kvp; #endif int i, limit; ASSERT (valuep); hash = BV (clib_bihash_hash) (search_key); bucket_index = hash & (h->nbuckets - 1); b = &h->buckets[bucket_index]; if (b->offset == 0) return -1; /* Check the cache, if currently unlocked */ #if BIHASH_KVP_CACHE_SIZE > 0 if (PREDICT_TRUE ((b->cache_lru & (1 << 15)) == 0)) { limit = BIHASH_KVP_CACHE_SIZE; kvp = b->cache; for (i = 0; i < limit; i++) { if (BV (clib_bihash_key_compare) (kvp[i].key, search_key->key)) { *valuep = kvp[i]; h->cache_hits++; return 0; } } } #endif hash >>= h->log2_nbuckets; v = BV (clib_bihash_get_value) (h, b->offset); /* If the bucket has unresolvable collisions, use linear search */ limit = BIHASH_KVP_PER_PAGE; v += (b->linear_search == 0) ? hash & ((1 << b->log2_pages) - 1) : 0; if (PREDICT_FALSE (b->linear_search)) limit <<= b->log2_pages; for (i = 0; i < limit; i++) { if (BV (clib_bihash_key_compare) (v->kvp[i].key, search_key->key)) { *valuep = v->kvp[i]; #if BIHASH_KVP_CACHE_SIZE > 0 u8 cache_slot; /* Try to lock the bucket */ if (BV (clib_bihash_lock_bucket) (b)) { cache_slot = BV (clib_bihash_get_lru) (b); b->cache[cache_slot] = v->kvp[i]; BV (clib_bihash_update_lru) (b, cache_slot); /* Reenable the cache */ BV (clib_bihash_unlock_bucket) (b); h->cache_misses++; } #endif return 0; } } return -1; } #endif /* __included_bihash_template_h__ */ /** @endcond */ /* * fd.io coding-style-patch-verification: ON * * Local Variables: * eval: (c-set-style "gnu") * End: */