函数逻辑报告 |
Source Code:include\linux\rhashtable.h |
Create Date:2022-07-27 07:05:12 |
Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
首页 | 函数Tree |
注解内核,赢得工具 | 下载SCCT | English |
函数名称:Internal function, please use rhashtable_insert_fast() instead. This* function returns the existing element already in hashes in there is a clash,* otherwise it returns an error via ERR_PTR().
函数原型:static inline void *__rhashtable_insert_fast(struct rhashtable *ht, const void *key, struct rhash_head *obj, const struct rhashtable_params params, bool rhlist)
返回类型:void
参数:
类型 | 参数 | 名称 |
---|---|---|
struct rhashtable * | ht | |
const void * | key | |
struct rhash_head * | obj | |
const struct rhashtable_params | params | |
bool | rhlist |
722 | tbl等于rht_dereference_rcu(tbl, ht) |
724 | elasticity等于Maximum chain length before rehash* The maximum (not average) chain length grows with the size of the hash* table, at a rate of (log N)/(log log N) |
725 | bkt等于rht_bucket_insert(ht, tbl, hash) |
729 | pprev = NULL |
733 | slow_path : |
734 | rht_unlock(tbl, bkt) |
736 | 返回:rhashtable_insert_slow(ht, key, obj) |
743 | elasticity自减 |
754 | 如果非rhlist则转到:out_unlock |
762 | head等于rht_dereference_bucket(next, tbl, hash) |
764 | 如果pprev则 |
766 | rht_unlock(tbl, bkt) |
767 | 否则rht_assign_unlock(tbl, bkt, obj) |
769 | data = NULL |
770 | 转到:out |
773 | 如果elasticity小于等于0则转到:slow_path |
777 | 如果此条件成立可能性小(为编译器优化)(表溢出)则转到:out_unlock |
780 | 如果此条件成立可能性小(为编译器优化)(ht_grow_above_100 - returns true if nelems > table-size*@ht: hash table*@tbl: current table)则转到:slow_path |
787 | 如果rhlist则 |
794 | atomic_inc( & nelems) |
795 | rht_assign_unlock(tbl, bkt, obj) |
800 | data = NULL |
801 | out : |
804 | 返回:data |
806 | out_unlock : |
807 | rht_unlock(tbl, bkt) |
808 | 转到:out |
名称 | 描述 |
---|---|
rhashtable_insert_fast | hashtable_insert_fast - insert object into hash table*@ht: hash table*@obj: pointer to hash head inside object*@params: hash table parameters* Will take the per bucket bitlock to protect against mutual mutations* on the same bucket |
rhltable_insert_key | hltable_insert_key - insert object into hash list table*@hlt: hash list table*@key: the pointer to the key*@list: pointer to hash list head inside object*@params: hash table parameters* Will take the per bucket bitlock to protect against mutual mutations |
rhashtable_lookup_insert_fast | hashtable_lookup_insert_fast - lookup and insert object into hash table*@ht: hash table*@obj: pointer to hash head inside object*@params: hash table parameters* This lookup function may only be used for fixed key hash table (key_len* parameter set) |
rhashtable_lookup_get_insert_fast | hashtable_lookup_get_insert_fast - lookup and insert object into hash table*@ht: hash table*@obj: pointer to hash head inside object*@params: hash table parameters* Just like rhashtable_lookup_insert_fast(), but this function returns the* object if it |
rhashtable_lookup_insert_key | hashtable_lookup_insert_key - search and insert object to hash table* with explicit key*@ht: hash table*@key: key*@obj: pointer to hash head inside object*@params: hash table parameters* Lookups may occur in parallel with hashtable mutations and resizing |
rhashtable_lookup_get_insert_key | hashtable_lookup_get_insert_key - lookup and insert object into hash table*@ht: hash table*@obj: pointer to hash head inside object*@params: hash table parameters*@data: pointer to element data already in hashes* Just like rhashtable_lookup_insert_key(), |
源代码转换工具 开放的插件接口 | X |
---|---|
支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |