Added new methods introduced in freebsd head that encapsulate macros to allow better binary compatibility if the locking way ever changes. These are not really useful, but needed for newer drivers sourcecode.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33714 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
32c8ab89a9
commit
e78ad19f6b
@ -239,6 +239,16 @@ typedef void if_init_f_t(void *);
|
|||||||
#define IF_ADDR_LOCK_DESTROY(if) mtx_destroy(&(if)->if_addr_mtx)
|
#define IF_ADDR_LOCK_DESTROY(if) mtx_destroy(&(if)->if_addr_mtx)
|
||||||
#define IF_ADDR_LOCK(if) mtx_lock(&(if)->if_addr_mtx)
|
#define IF_ADDR_LOCK(if) mtx_lock(&(if)->if_addr_mtx)
|
||||||
#define IF_ADDR_UNLOCK(if) mtx_unlock(&(if)->if_addr_mtx)
|
#define IF_ADDR_UNLOCK(if) mtx_unlock(&(if)->if_addr_mtx)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Function variations on locking macros intended to be used by loadable
|
||||||
|
* kernel modules in order to divorce them from the internals of address list
|
||||||
|
* locking.
|
||||||
|
*/
|
||||||
|
void if_addr_rlock(struct ifnet *ifp); /* if_addrhead */
|
||||||
|
void if_addr_runlock(struct ifnet *ifp); /* if_addrhead */
|
||||||
|
void if_maddr_rlock(struct ifnet *ifp); /* if_multiaddrs */
|
||||||
|
void if_maddr_runlock(struct ifnet *ifp); /* if_multiaddrs */
|
||||||
#define IF_ADDR_LOCK_ASSERT(if) mtx_assert(&(if)->if_addr_mtx, MA_OWNED)
|
#define IF_ADDR_LOCK_ASSERT(if) mtx_assert(&(if)->if_addr_mtx, MA_OWNED)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -413,3 +413,36 @@ ether_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Wrapper functions for struct ifnet address list locking macros. These are
|
||||||
|
* used by kernel modules to avoid encoding programming interface or binary
|
||||||
|
* interface assumptions that may be violated when kernel-internal locking
|
||||||
|
* approaches change.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
if_addr_rlock(struct ifnet *ifp)
|
||||||
|
{
|
||||||
|
|
||||||
|
IF_ADDR_LOCK(ifp);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
if_addr_runlock(struct ifnet *ifp)
|
||||||
|
{
|
||||||
|
|
||||||
|
IF_ADDR_UNLOCK(ifp);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
if_maddr_rlock(struct ifnet *ifp)
|
||||||
|
{
|
||||||
|
|
||||||
|
IF_ADDR_LOCK(ifp);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
if_maddr_runlock(struct ifnet *ifp)
|
||||||
|
{
|
||||||
|
|
||||||
|
IF_ADDR_UNLOCK(ifp);
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user