Browse Source

firewire: nosy: unroll some simple functions

nosy_start/stop_snoop() and nosy_add/remove_client() are simple enough
to be inlined into their callers.

Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Stefan Richter 15 years ago
parent
commit
55e77c06c6
1 changed files with 29 additions and 46 deletions
  1. 29 46
      drivers/firewire/nosy.c

+ 29 - 46
drivers/firewire/nosy.c

@@ -260,68 +260,44 @@ set_phy_reg(struct pcilynx *lynx, int addr, int val)
 	return 0;
 }
 
-static void
-nosy_start_snoop(struct client *client)
-{
-	spin_lock_irq(&client->lynx->client_list_lock);
-	list_add_tail(&client->link, &client->lynx->client_list);
-	spin_unlock_irq(&client->lynx->client_list_lock);
-}
-
-static void
-nosy_stop_snoop(struct client *client)
-{
-	spin_lock_irq(&client->lynx->client_list_lock);
-	list_del_init(&client->link);
-	spin_unlock_irq(&client->lynx->client_list_lock);
-}
-
-static struct client *
-nosy_add_client(struct pcilynx *lynx)
+static int
+nosy_open(struct inode *inode, struct file *file)
 {
+	int minor = iminor(inode);
 	struct client *client;
 
+	if (minor > MAX_MINORS || minors[minor] == NULL)
+		return -ENODEV;
+
 	client = kmalloc(sizeof *client, GFP_KERNEL);
+	if (client == NULL)
+		return -ENOMEM;
+
 	client->tcode_mask = ~0;
-	client->lynx = lynx;
+	client->lynx = minors[minor];
 	INIT_LIST_HEAD(&client->link);
 
 	if (packet_buffer_init(&client->buffer, 128 * 1024) < 0) {
 		kfree(client);
-		debug("Failed to allocate packet buffer\n");
-		return NULL;
+		return -ENOMEM;
 	}
 
-	return client;
-}
+	file->private_data = client;
 
-static void
-nosy_remove_client(struct client *client)
-{
-	nosy_stop_snoop(client);
-	packet_buffer_destroy(&client->buffer);
-	kfree(client);
+	return 0;
 }
 
 static int
-nosy_open(struct inode *inode, struct file *file)
+nosy_release(struct inode *inode, struct file *file)
 {
-	int minor = iminor(inode);
-
-	if (minor > MAX_MINORS || minors[minor] == NULL)
-		return -ENODEV;
+	struct client *client = file->private_data;
 
-	file->private_data = nosy_add_client(minors[minor]);
-	if (file->private_data == NULL)
-		return -ENOMEM;
-	else
-		return 0;
-}
+	spin_lock_irq(&client->lynx->client_list_lock);
+	list_del_init(&client->link);
+	spin_unlock_irq(&client->lynx->client_list_lock);
 
-static int
-nosy_release(struct inode *inode, struct file *file)
-{
-	nosy_remove_client(file->private_data);
+	packet_buffer_destroy(&client->buffer);
+	kfree(client);
 
 	return 0;
 }
@@ -367,17 +343,24 @@ nosy_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
 			return 0;
 
 	case NOSY_IOC_START:
-		nosy_start_snoop(client);
+		spin_lock_irq(client_list_lock);
+		list_add_tail(&client->link, &client->lynx->client_list);
+		spin_unlock_irq(client_list_lock);
+
 		return 0;
 
 	case NOSY_IOC_STOP:
-		nosy_stop_snoop(client);
+		spin_lock_irq(client_list_lock);
+		list_del_init(&client->link);
+		spin_unlock_irq(client_list_lock);
+
 		return 0;
 
 	case NOSY_IOC_FILTER:
 		spin_lock_irq(client_list_lock);
 		client->tcode_mask = arg;
 		spin_unlock_irq(client_list_lock);
+
 		return 0;
 
 	default: