#include #include #include #include static LIST_HEAD(g_transport_list); static DEFINE_MUTEX(transport_mutex); struct iscsit_transport *iscsit_get_transport(int type) { struct iscsit_transport *t; mutex_lock(&transport_mutex); list_for_each_entry(t, &g_transport_list, t_node) { if (t->transport_type == type) { if (t->owner && !try_module_get(t->owner)) { t = NULL; } mutex_unlock(&transport_mutex); return t; } } mutex_unlock(&transport_mutex); return NULL; } void iscsit_put_transport(struct iscsit_transport *t) { module_put(t->owner); } int iscsit_register_transport(struct iscsit_transport *t) { INIT_LIST_HEAD(&t->t_node); mutex_lock(&transport_mutex); list_add_tail(&t->t_node, &g_transport_list); mutex_unlock(&transport_mutex); pr_debug("Registered iSCSI transport: %s\n", t->name); return 0; } EXPORT_SYMBOL(iscsit_register_transport); void iscsit_unregister_transport(struct iscsit_transport *t) { mutex_lock(&transport_mutex); list_del(&t->t_node); mutex_unlock(&transport_mutex); pr_debug("Unregistered iSCSI transport: %s\n", t->name); } EXPORT_SYMBOL(iscsit_unregister_transport); acket-rx-pump-back net-next plumbingsTobias Klauser
summaryrefslogtreecommitdiff
net-next.git/log/include/net/bluetooth/l2cap.h?id=3f6159dbfc24c5e61fb5deb9b69e0abb934609bb&showmsg=1'>Expand)
AgeCommit message (Expand)AuthorFilesLines
AuthorFilesLines