rculfhash.h | rculfhash.h | |||
---|---|---|---|---|
skipping to change at line 179 | skipping to change at line 179 | |||
* cds_lfht_destroy - destroy a hash table. | * cds_lfht_destroy - destroy a hash table. | |||
* @ht: the hash table to destroy. | * @ht: the hash table to destroy. | |||
* @attr: (output) resize worker thread attributes, as received by cds_lfht _new. | * @attr: (output) resize worker thread attributes, as received by cds_lfht _new. | |||
* The caller will typically want to free this pointer if dynamicall y | * The caller will typically want to free this pointer if dynamicall y | |||
* allocated. The attr point can be NULL if the caller does not | * allocated. The attr point can be NULL if the caller does not | |||
* need to be informed of the value passed to cds_lfht_new(). | * need to be informed of the value passed to cds_lfht_new(). | |||
* | * | |||
* Return 0 on success, negative error value on error. | * Return 0 on success, negative error value on error. | |||
* Threads calling this API need to be registered RCU read-side threads. | * Threads calling this API need to be registered RCU read-side threads. | |||
* cds_lfht_destroy should *not* be called from a RCU read-side critical | * cds_lfht_destroy should *not* be called from a RCU read-side critical | |||
* section. | * section. It should *not* be called from call_rcu thread context | |||
* neither. | ||||
* In userspace RCU 0.7.x, for QSBR RCU flavor, cds_lfht_destroy() has a | ||||
* side-effect: it puts the caller thread in "online" state. This will | ||||
* be fixed in userspace RCU 0.8.x. | ||||
*/ | */ | |||
int cds_lfht_destroy(struct cds_lfht *ht, pthread_attr_t **attr); | int cds_lfht_destroy(struct cds_lfht *ht, pthread_attr_t **attr); | |||
/* | /* | |||
* cds_lfht_count_nodes - count the number of nodes in the hash table. | * cds_lfht_count_nodes - count the number of nodes in the hash table. | |||
* @ht: the hash table. | * @ht: the hash table. | |||
* @split_count_before: sample the node count split-counter before traversa l. | * @split_count_before: sample the node count split-counter before traversa l. | |||
* @count: traverse the hash table, count the number of nodes observed. | * @count: traverse the hash table, count the number of nodes observed. | |||
* @split_count_after: sample the node count split-counter after traversal. | * @split_count_after: sample the node count split-counter after traversal. | |||
* | * | |||
skipping to change at line 429 | skipping to change at line 433 | |||
*/ | */ | |||
int cds_lfht_is_node_deleted(struct cds_lfht_node *node); | int cds_lfht_is_node_deleted(struct cds_lfht_node *node); | |||
/* | /* | |||
* cds_lfht_resize - Force a hash table resize | * cds_lfht_resize - Force a hash table resize | |||
* @ht: the hash table. | * @ht: the hash table. | |||
* @new_size: update to this hash table size. | * @new_size: update to this hash table size. | |||
* | * | |||
* Threads calling this API need to be registered RCU read-side threads. | * Threads calling this API need to be registered RCU read-side threads. | |||
* This function does not (necessarily) issue memory barriers. | * This function does not (necessarily) issue memory barriers. | |||
* cds_lfht_resize should *not* be called from a RCU read-side critical | ||||
* section. | ||||
* In userspace RCU 0.7.x, for QSBR RCU flavor, cds_lfht_resize() has a | ||||
* side-effect: it puts the caller thread in "online" state. This will | ||||
* be fixed in userspace RCU 0.8.x. | ||||
*/ | */ | |||
void cds_lfht_resize(struct cds_lfht *ht, unsigned long new_size); | void cds_lfht_resize(struct cds_lfht *ht, unsigned long new_size); | |||
/* | /* | |||
* Note: it is safe to perform element removal (del), replacement, or | * Note: it is safe to perform element removal (del), replacement, or | |||
* any hash table update operation during any of the following hash | * any hash table update operation during any of the following hash | |||
* table traversals. | * table traversals. | |||
* These functions act as rcu_dereference() to read the node pointers. | * These functions act as rcu_dereference() to read the node pointers. | |||
*/ | */ | |||
#define cds_lfht_for_each(ht, iter, node) \ | #define cds_lfht_for_each(ht, iter, node) \ | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 10 lines changed or added | |||
system.h | system.h | |||
---|---|---|---|---|
skipping to change at line 50 | skipping to change at line 50 | |||
/* | /* | |||
* Identify a shared store. A cmm_smp_wmc() or cmm_smp_mc() should | * Identify a shared store. A cmm_smp_wmc() or cmm_smp_mc() should | |||
* follow the store. | * follow the store. | |||
*/ | */ | |||
#define _CMM_STORE_SHARED(x, v) ({ CMM_ACCESS_ONCE(x) = (v); }) | #define _CMM_STORE_SHARED(x, v) ({ CMM_ACCESS_ONCE(x) = (v); }) | |||
/* | /* | |||
* Store v into x, where x is located in shared memory. Performs the | * Store v into x, where x is located in shared memory. Performs the | |||
* required cache flush after writing. Returns v. | * required cache flush after writing. Returns v. | |||
*/ | */ | |||
#define CMM_STORE_SHARED(x, v) \ | #define CMM_STORE_SHARED(x, v) \ | |||
({ \ | ({ \ | |||
__typeof__(x) _v = _CMM_STORE_SHARED(x, v); \ | __typeof__(x) _v = _CMM_STORE_SHARED(x, v); \ | |||
cmm_smp_wmc(); \ | cmm_smp_wmc(); \ | |||
_v; \ | _v = _v; /* Work around clang "unused result" */ \ | |||
}) | }) | |||
#endif /* _URCU_SYSTEM_H */ | #endif /* _URCU_SYSTEM_H */ | |||
End of changes. 1 change blocks. | ||||
5 lines changed or deleted | 5 lines changed or added | |||