bluetooth: macroize two small inlines to avoid module.h
These two small inlines make calls to try_module_get() and module_put() which would force us to keep module.h present within yet another common include header. We can avoid this by turning them into macros. The hci_dev_hold construct is patterned off of raw_spin_trylock_irqsave() in spinlock.h Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
This commit is contained in:
Родитель
69e7dae409
Коммит
1d58996da6
|
@ -513,11 +513,15 @@ static inline void __hci_dev_put(struct hci_dev *d)
|
|||
d->destruct(d);
|
||||
}
|
||||
|
||||
static inline void hci_dev_put(struct hci_dev *d)
|
||||
{
|
||||
__hci_dev_put(d);
|
||||
module_put(d->owner);
|
||||
}
|
||||
/*
|
||||
* hci_dev_put and hci_dev_hold are macros to avoid dragging all the
|
||||
* overhead of all the modular infrastructure into this header.
|
||||
*/
|
||||
#define hci_dev_put(d) \
|
||||
do { \
|
||||
__hci_dev_put(d); \
|
||||
module_put(d->owner); \
|
||||
} while (0)
|
||||
|
||||
static inline struct hci_dev *__hci_dev_hold(struct hci_dev *d)
|
||||
{
|
||||
|
@ -525,12 +529,10 @@ static inline struct hci_dev *__hci_dev_hold(struct hci_dev *d)
|
|||
return d;
|
||||
}
|
||||
|
||||
static inline struct hci_dev *hci_dev_hold(struct hci_dev *d)
|
||||
{
|
||||
if (try_module_get(d->owner))
|
||||
return __hci_dev_hold(d);
|
||||
return NULL;
|
||||
}
|
||||
#define hci_dev_hold(d) \
|
||||
({ \
|
||||
try_module_get(d->owner) ? __hci_dev_hold(d) : NULL; \
|
||||
})
|
||||
|
||||
#define hci_dev_lock(d) spin_lock(&d->lock)
|
||||
#define hci_dev_unlock(d) spin_unlock(&d->lock)
|
||||
|
|
Загрузка…
Ссылка в новой задаче