函数逻辑报告 |
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 插件可实现:逻辑报告 代码生成和批量转换代码 |