firewire: Move fw_card kref functions into linux/firewire.h
authorChris Boot <bootc@bootc.net>
Wed, 1 Feb 2012 22:36:02 +0000 (22:36 +0000)
committerNicholas Bellinger <nab@linux-iscsi.org>
Wed, 9 May 2012 22:25:17 +0000 (15:25 -0700)
When writing a firewire driver that doesn't deal with struct fw_device
objects (e.g. it only publishes FireWire units and doesn't subscribe to
them), you likely need to keep referenced to struct fw_card objects so
that you can send messages to other nodes. This patch moves
fw_card_put(), fw_card_get() and fw_card_release() into the public
include/linux/firewire.h header instead of drivers/firewire/core.h, and
adds EXPORT_SYMBOL_GPL(fw_card_release).

The firewire-sbp-target module requires these so it can keep a reference
to the fw_card object in order that it can fetch ORBs to execute and
read/write related data and status information.

Signed-off-by: Chris Boot <bootc@bootc.net>
Acked-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Cc: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
drivers/firewire/core-card.c
drivers/firewire/core.h
include/linux/firewire.h

index cc595eba7ba969833bc278167b6494706b77c339..f5552b362efc1cc061dbca84373d15b2b15e280a 100644 (file)
@@ -676,6 +676,7 @@ void fw_card_release(struct kref *kref)
 
        complete(&card->done);
 }
+EXPORT_SYMBOL_GPL(fw_card_release);
 
 void fw_core_remove_card(struct fw_card *card)
 {
index 9047f5547d985bb89ac384c6e858fc5eeeffdd62..b5a2f619705375d582f92f1495cd136672c68a93 100644 (file)
@@ -120,21 +120,6 @@ int fw_compute_block_crc(__be32 *block);
 void fw_schedule_bus_reset(struct fw_card *card, bool delayed, bool short_reset);
 void fw_schedule_bm_work(struct fw_card *card, unsigned long delay);
 
-static inline struct fw_card *fw_card_get(struct fw_card *card)
-{
-       kref_get(&card->kref);
-
-       return card;
-}
-
-void fw_card_release(struct kref *kref);
-
-static inline void fw_card_put(struct fw_card *card)
-{
-       kref_put(&card->kref, fw_card_release);
-}
-
-
 /* -cdev */
 
 extern const struct file_operations fw_device_ops;
index 46831303b0b9c068f4ee9ab1fd8c36dd5c5f0c82..e83c24af358a11c980e1162db74c0ea8148002f2 100644 (file)
@@ -135,6 +135,20 @@ struct fw_card {
        __be32 maint_utility_register;
 };
 
+static inline struct fw_card *fw_card_get(struct fw_card *card)
+{
+       kref_get(&card->kref);
+
+       return card;
+}
+
+void fw_card_release(struct kref *kref);
+
+static inline void fw_card_put(struct fw_card *card)
+{
+       kref_put(&card->kref, fw_card_release);
+}
+
 struct fw_attribute_group {
        struct attribute_group *groups[2];
        struct attribute_group group;
This page took 0.030542 seconds and 5 git commands to generate.