- 论坛徽章:
- 0
|
- static struct list_head xfrm_km_list = LIST_HEAD_INIT(xfrm_km_list);
- static DEFINE_RWLOCK(xfrm_km_lock);
- void km_policy_notify(struct xfrm_policy *xp, int dir, struct km_event *c)
- {
- struct xfrm_mgr *km;
- //read_lock(&xfrm_km_lock);
- rcu_read_lock();
- //list_for_each_entry(km, &xfrm_km_list, list)
- list_for_each_entry_rcu(km, &xfrm_km_list, list)
- if (km->notify_policy)
- km->notify_policy(xp, dir, c);
- //read_unlock(&xfrm_km_lock);
- rcu_read_unlock();
- }
- //int xfrm_register_km(struct xfrm_mgr *km)
- void xfrm_register_km(struct xfrm_mgr *km)
- {
- write_lock_bh(&xfrm_km_lock);
- //list_add_tail(&km->list, &xfrm_km_list);
- list_add_tail_rcu(&km->list, &xfrm_km_list);
- write_unlock_bh(&xfrm_km_lock);
- //return 0;
- }
复制代码 |
|