ALSA: seq: Simplify snd_seq_kernel_client_enqueue() helper
authorTakashi Iwai <tiwai@suse.de>
Fri, 12 Apr 2019 10:10:14 +0000 (12:10 +0200)
committerTakashi Iwai <tiwai@suse.de>
Fri, 12 Apr 2019 10:51:22 +0000 (12:51 +0200)
We have two helpers for queuing a sequencer event from the kernel
client, and both are used only from OSS sequencer layer without any
hop and atomic set.  Let's simplify and unify two helpers into one.

No functional change, just a call pattern change.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
include/sound/seq_kernel.h
sound/core/seq/oss/seq_oss_rw.c
sound/core/seq/oss/seq_oss_writeq.c
sound/core/seq/seq_clientmgr.c
sound/core/seq/seq_clientmgr.h

index 4b9ee3009aa09b46e749509f85cd0fcb60d49b8b..c7a5433e109a85c07183499440becbafc0ccdf6d 100644 (file)
@@ -73,7 +73,8 @@ __printf(3, 4)
 int snd_seq_create_kernel_client(struct snd_card *card, int client_index,
                                 const char *name_fmt, ...);
 int snd_seq_delete_kernel_client(int client);
-int snd_seq_kernel_client_enqueue(int client, struct snd_seq_event *ev, int atomic, int hop);
+int snd_seq_kernel_client_enqueue(int client, struct snd_seq_event *ev,
+                                 struct file *file, bool blocking);
 int snd_seq_kernel_client_dispatch(int client, struct snd_seq_event *ev, int atomic, int hop);
 int snd_seq_kernel_client_ctl(int client, unsigned int cmd, void *arg);
 
index 30886f5fb1001084e2904610c6f634b79a3f0dfd..eb1ef12181f3d2237a186add22dc34185dc3f8ec 100644 (file)
@@ -180,14 +180,11 @@ insert_queue(struct seq_oss_devinfo *dp, union evrec *rec, struct file *opt)
                return 0; /* invalid event - no need to insert queue */
 
        event.time.tick = snd_seq_oss_timer_cur_tick(dp->timer);
-       if (dp->timer->realtime || !dp->timer->running) {
+       if (dp->timer->realtime || !dp->timer->running)
                snd_seq_oss_dispatch(dp, &event, 0, 0);
-       } else {
-               if (is_nonblock_mode(dp->file_mode))
-                       rc = snd_seq_kernel_client_enqueue(dp->cseq, &event, 0, 0);
-               else
-                       rc = snd_seq_kernel_client_enqueue_blocking(dp->cseq, &event, opt, 0, 0);
-       }
+       else
+               rc = snd_seq_kernel_client_enqueue(dp->cseq, &event, opt,
+                                                  !is_nonblock_mode(dp->file_mode));
        return rc;
 }
                
index 5e04f4df10e41690c3e15f299f0fa4ae39bc75a2..b2f69617591fb7d32fa57bf0083fa2ff49a115bb 100644 (file)
@@ -116,7 +116,7 @@ snd_seq_oss_writeq_sync(struct seq_oss_writeq *q)
                rec->t.code = SEQ_SYNCTIMER;
                rec->t.time = time;
                q->sync_event_put = 1;
-               snd_seq_kernel_client_enqueue_blocking(dp->cseq, &ev, NULL, 0, 0);
+               snd_seq_kernel_client_enqueue(dp->cseq, &ev, NULL, true);
        }
 
        wait_event_interruptible_timeout(q->sync_sleep, ! q->sync_event_put, HZ);
index de320b1b90deb157afdd9520f95685c1286f6e7a..0af5b1440b335ea8a1e806ea3c4cefac4996cbbf 100644 (file)
@@ -2218,12 +2218,13 @@ int snd_seq_delete_kernel_client(int client)
 }
 EXPORT_SYMBOL(snd_seq_delete_kernel_client);
 
-/* skeleton to enqueue event, called from snd_seq_kernel_client_enqueue
- * and snd_seq_kernel_client_enqueue_blocking
+/*
+ * exported, called by kernel clients to enqueue events (w/o blocking)
+ *
+ * RETURN VALUE: zero if succeed, negative if error
  */
-static int kernel_client_enqueue(int client, struct snd_seq_event *ev,
-                                struct file *file, int blocking,
-                                int atomic, int hop)
+int snd_seq_kernel_client_enqueue(int client, struct snd_seq_event *ev,
+                                 struct file *file, bool blocking)
 {
        struct snd_seq_client *cptr;
        int result;
@@ -2250,37 +2251,13 @@ static int kernel_client_enqueue(int client, struct snd_seq_event *ev,
                result = -EPERM;
        else /* send it */
                result = snd_seq_client_enqueue_event(cptr, ev, file, blocking,
-                                                     atomic, hop, NULL);
+                                                     false, 0, NULL);
 
        snd_seq_client_unlock(cptr);
        return result;
 }
-
-/*
- * exported, called by kernel clients to enqueue events (w/o blocking)
- *
- * RETURN VALUE: zero if succeed, negative if error
- */
-int snd_seq_kernel_client_enqueue(int client, struct snd_seq_event * ev,
-                                 int atomic, int hop)
-{
-       return kernel_client_enqueue(client, ev, NULL, 0, atomic, hop);
-}
 EXPORT_SYMBOL(snd_seq_kernel_client_enqueue);
 
-/*
- * exported, called by kernel clients to enqueue events (with blocking)
- *
- * RETURN VALUE: zero if succeed, negative if error
- */
-int snd_seq_kernel_client_enqueue_blocking(int client, struct snd_seq_event * ev,
-                                          struct file *file,
-                                          int atomic, int hop)
-{
-       return kernel_client_enqueue(client, ev, file, 1, atomic, hop);
-}
-EXPORT_SYMBOL(snd_seq_kernel_client_enqueue_blocking);
-
 /* 
  * exported, called by kernel clients to dispatch events directly to other
  * clients, bypassing the queues.  Event time-stamp will be updated.
index 0611e1e0ed5ba01e053ac3a53c5f09ae681e02a2..66ad3d5479164aa5f394dc574cce63f537ef3b4a 100644 (file)
@@ -93,10 +93,6 @@ struct snd_seq_client *snd_seq_client_use_ptr(int clientid);
 /* dispatch event to client(s) */
 int snd_seq_dispatch_event(struct snd_seq_event_cell *cell, int atomic, int hop);
 
-/* exported to other modules */
-int snd_seq_kernel_client_enqueue(int client, struct snd_seq_event *ev, int atomic, int hop);
-int snd_seq_kernel_client_enqueue_blocking(int client, struct snd_seq_event * ev,
-                                          struct file *file, int atomic, int hop);
 int snd_seq_kernel_client_write_poll(int clientid, struct file *file, poll_table *wait);
 int snd_seq_client_notify_subscription(int client, int port,
                                       struct snd_seq_port_subscribe *info, int evtype);