diff options
author | Paul Gortmaker <paul.gortmaker@windriver.com> | 2011-09-15 17:56:39 -0400 |
---|---|---|
committer | Paul Gortmaker <paul.gortmaker@windriver.com> | 2011-10-31 19:32:34 -0400 |
commit | 1d58996da6a8045c8df2899ce5689a19c721322f (patch) | |
tree | 9398cadb5edfcc97cdbeafc29dd5742349be82f3 | |
parent | 69e7dae4096caeea0a7e2ede376f22a4fdee8456 (diff) |
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>
-rw-r--r-- | include/net/bluetooth/hci_core.h | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h index 5b924423cf20..3779ea362257 100644 --- a/include/net/bluetooth/hci_core.h +++ b/include/net/bluetooth/hci_core.h | |||
@@ -513,11 +513,15 @@ static inline void __hci_dev_put(struct hci_dev *d) | |||
513 | d->destruct(d); | 513 | d->destruct(d); |
514 | } | 514 | } |
515 | 515 | ||
516 | static inline void hci_dev_put(struct hci_dev *d) | 516 | /* |
517 | { | 517 | * hci_dev_put and hci_dev_hold are macros to avoid dragging all the |
518 | __hci_dev_put(d); | 518 | * overhead of all the modular infrastructure into this header. |
519 | module_put(d->owner); | 519 | */ |
520 | } | 520 | #define hci_dev_put(d) \ |
521 | do { \ | ||
522 | __hci_dev_put(d); \ | ||
523 | module_put(d->owner); \ | ||
524 | } while (0) | ||
521 | 525 | ||
522 | static inline struct hci_dev *__hci_dev_hold(struct hci_dev *d) | 526 | static inline struct hci_dev *__hci_dev_hold(struct hci_dev *d) |
523 | { | 527 | { |
@@ -525,12 +529,10 @@ static inline struct hci_dev *__hci_dev_hold(struct hci_dev *d) | |||
525 | return d; | 529 | return d; |
526 | } | 530 | } |
527 | 531 | ||
528 | static inline struct hci_dev *hci_dev_hold(struct hci_dev *d) | 532 | #define hci_dev_hold(d) \ |
529 | { | 533 | ({ \ |
530 | if (try_module_get(d->owner)) | 534 | try_module_get(d->owner) ? __hci_dev_hold(d) : NULL; \ |
531 | return __hci_dev_hold(d); | 535 | }) |
532 | return NULL; | ||
533 | } | ||
534 | 536 | ||
535 | #define hci_dev_lock(d) spin_lock(&d->lock) | 537 | #define hci_dev_lock(d) spin_lock(&d->lock) |
536 | #define hci_dev_unlock(d) spin_unlock(&d->lock) | 538 | #define hci_dev_unlock(d) spin_unlock(&d->lock) |