Skip to content
Snippets Groups Projects
Commit 53c0f270 authored by Guy Zana's avatar Guy Zana
Browse files

net: go back to rwlock in radix.c

parent 4d34da9e
No related branches found
No related tags found
No related merge requests found
...@@ -36,6 +36,7 @@ ...@@ -36,6 +36,7 @@
#include <osv/mutex.h> #include <osv/mutex.h>
#include <bsd/porting/netport.h> #include <bsd/porting/netport.h>
#include <bsd/porting/rwlock.h>
#include <bsd/sys/sys/param.h> #include <bsd/sys/sys/param.h>
#include <bsd/sys/net/radix.h> #include <bsd/sys/net/radix.h>
......
...@@ -122,7 +122,7 @@ struct radix_node_head { ...@@ -122,7 +122,7 @@ struct radix_node_head {
(struct radix_node *rn, struct radix_node_head *head); (struct radix_node *rn, struct radix_node_head *head);
struct radix_node rnh_nodes[3]; /* empty tree for common case */ struct radix_node rnh_nodes[3]; /* empty tree for common case */
#ifdef _KERNEL #ifdef _KERNEL
struct cmutex rnh_lock; /* locks entire radix tree */ struct rwlock rnh_lock; /* locks entire radix tree */
#endif #endif
}; };
...@@ -132,16 +132,18 @@ struct radix_node_head { ...@@ -132,16 +132,18 @@ struct radix_node_head {
} while (0) } while (0)
#define Free(p) free((char *)p); #define Free(p) free((char *)p);
/* FIXME: This was an encapsulation for rwlock, now a mutex */ #define RADIX_NODE_HEAD_LOCK_INIT(rnh) \
#define RADIX_NODE_HEAD_LOCK_INIT(rnh) bzero((void*)&rnh->rnh_lock, sizeof(struct cmutex)) rw_init_flags(&(rnh)->rnh_lock, "radix node head", 0)
#define RADIX_NODE_HEAD_LOCK(rnh) mutex_lock(&rnh->rnh_lock) #define RADIX_NODE_HEAD_LOCK(rnh) rw_wlock(&(rnh)->rnh_lock)
#define RADIX_NODE_HEAD_UNLOCK(rnh) mutex_unlock(&rnh->rnh_lock) #define RADIX_NODE_HEAD_UNLOCK(rnh) rw_wunlock(&(rnh)->rnh_lock)
#define RADIX_NODE_HEAD_RLOCK(rnh) mutex_lock(&rnh->rnh_lock) #define RADIX_NODE_HEAD_RLOCK(rnh) rw_rlock(&(rnh)->rnh_lock)
#define RADIX_NODE_HEAD_RUNLOCK(rnh) mutex_unlock(&rnh->rnh_lock) #define RADIX_NODE_HEAD_RUNLOCK(rnh) rw_runlock(&(rnh)->rnh_lock)
#define RADIX_NODE_HEAD_LOCK_TRY_UPGRADE(rnh) rw_try_upgrade(&(rnh)->rnh_lock)
#define RADIX_NODE_HEAD_DESTROY(rnh) do{}while(0)
#define RADIX_NODE_HEAD_LOCK_ASSERT(rnh) do{}while(0) #define RADIX_NODE_HEAD_DESTROY(rnh) rw_destroy(&(rnh)->rnh_lock)
#define RADIX_NODE_HEAD_WLOCK_ASSERT(rnh) do{}while(0) #define RADIX_NODE_HEAD_LOCK_ASSERT(rnh) rw_assert(&(rnh)->rnh_lock, RA_LOCKED)
#define RADIX_NODE_HEAD_WLOCK_ASSERT(rnh) rw_assert(&(rnh)->rnh_lock, RA_WLOCKED)
void rn_init(int); void rn_init(int);
int rn_inithead(void **, int); int rn_inithead(void **, int);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment