Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 055a7da0 authored by Stefan Richter's avatar Stefan Richter
Browse files

ieee1394: video1394: reorder module init, prepare BKL removal



This prepares video1394 for removal of the BKL (big kernel lock):
It allows video1394_open() to be called while video1394_init_module()
is still in progress.

Signed-off-by: default avatarStefan Richter <stefanr@s5r6.in-berlin.de>
parent fde675fa
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -228,10 +228,8 @@ void hpsb_register_highlevel(struct hpsb_highlevel *hl)
{
	unsigned long flags;

	hpsb_init_highlevel(hl);
	INIT_LIST_HEAD(&hl->addr_list);
	INIT_LIST_HEAD(&hl->host_info_list);

	rwlock_init(&hl->host_info_lock);

	down_write(&hl_drivers_sem);
	list_add_tail(&hl->hl_list, &hl_drivers);
+12 −1
Original line number Diff line number Diff line
@@ -2,7 +2,7 @@
#define IEEE1394_HIGHLEVEL_H

#include <linux/list.h>
#include <linux/spinlock_types.h>
#include <linux/spinlock.h>
#include <linux/types.h>

struct module;
@@ -103,6 +103,17 @@ int highlevel_lock64(struct hpsb_host *host, int nodeid, octlet_t *store,
void highlevel_fcp_request(struct hpsb_host *host, int nodeid, int direction,
			   void *data, size_t length);

/**
 * hpsb_init_highlevel - initialize a struct hpsb_highlevel
 *
 * This is only necessary if hpsb_get_hostinfo_bykey can be called
 * before hpsb_register_highlevel.
 */
static inline void hpsb_init_highlevel(struct hpsb_highlevel *hl)
{
	rwlock_init(&hl->host_info_lock);
	INIT_LIST_HEAD(&hl->host_info_list);
}
void hpsb_register_highlevel(struct hpsb_highlevel *hl);
void hpsb_unregister_highlevel(struct hpsb_highlevel *hl);

+2 −0
Original line number Diff line number Diff line
@@ -1503,6 +1503,8 @@ static int __init video1394_init_module (void)
{
	int ret;

	hpsb_init_highlevel(&video1394_highlevel);

	cdev_init(&video1394_cdev, &video1394_fops);
	video1394_cdev.owner = THIS_MODULE;
	ret = cdev_add(&video1394_cdev, IEEE1394_VIDEO1394_DEV, 16);