From: Takashi Iwai <tiwai@suse.de>
To: Adam Goode <agoode@google.com>
Cc: alsa-devel@alsa-project.org
Subject: Re: [PATCH - seq 1/1] ALSA seq: expose the card number of ALSA seq clients
Date: Mon, 08 Jun 2015 13:23:52 +0200 [thread overview]
Message-ID: <s5hvbeyigtz.wl-tiwai@suse.de> (raw)
In-Reply-To: <1433466290-31244-1-git-send-email-agoode@google.com>
At Thu, 4 Jun 2015 21:04:50 -0400,
Adam Goode wrote:
>
> Expose the card number of seq clients. This allows interested userspace
> programs to discover the hardware device that backs a particular seq
> client. Before this change, the only way to get information about the
> hardware for a client was by using brittle heuristics.
>
> Signed-off-by: Adam Goode <agoode@google.com>
The patch looks almost good. (One coding style fix about one-line if
would be better, though.)
However, if we want to have more changes, I'd prefer the protocol
version bump after all changes are merged.
Are you going to submit any further changes?
thanks,
Takashi
>
> diff --git a/include/uapi/sound/asequencer.h b/include/uapi/sound/asequencer.h
> index 5a5fa49..c2a659be 100644
> --- a/include/uapi/sound/asequencer.h
> +++ b/include/uapi/sound/asequencer.h
> @@ -25,7 +25,7 @@
> #include <sound/asound.h>
>
> /** version of the sequencer */
> -#define SNDRV_SEQ_VERSION SNDRV_PROTOCOL_VERSION (1, 0, 1)
> +#define SNDRV_SEQ_VERSION SNDRV_PROTOCOL_VERSION (1, 0, 2)
>
> /**
> * definition of sequencer event types
> @@ -357,7 +357,8 @@ struct snd_seq_client_info {
> unsigned char event_filter[32]; /* event filter bitmap */
> int num_ports; /* RO: number of ports */
> int event_lost; /* number of lost events */
> - char reserved[64]; /* for future use */
> + int card_number; /* RO: card number, or -1 if no card. Added in protocol version 1.0.2 */
> + char reserved[60]; /* for future use */
> };
>
>
> diff --git a/sound/core/seq/seq_clientmgr.c b/sound/core/seq/seq_clientmgr.c
> index edbdab8..fcae784 100644
> --- a/sound/core/seq/seq_clientmgr.c
> +++ b/sound/core/seq/seq_clientmgr.c
> @@ -216,7 +216,7 @@ int __init client_init_data(void)
> }
>
>
> -static struct snd_seq_client *seq_create_client1(int client_index, int poolsize)
> +static struct snd_seq_client *seq_create_client1(int client_index, int poolsize, int card_number)
> {
> unsigned long flags;
> int c;
> @@ -232,6 +232,7 @@ static struct snd_seq_client *seq_create_client1(int client_index, int poolsize)
> return NULL;
> }
> client->type = NO_CLIENT;
> + client->card_number = card_number;
> snd_use_lock_init(&client->use_lock);
> rwlock_init(&client->ports_lock);
> mutex_init(&client->ports_mutex);
> @@ -327,7 +328,7 @@ static int snd_seq_open(struct inode *inode, struct file *file)
>
> if (mutex_lock_interruptible(®ister_mutex))
> return -ERESTARTSYS;
> - client = seq_create_client1(-1, SNDRV_SEQ_DEFAULT_EVENTS);
> + client = seq_create_client1(-1, SNDRV_SEQ_DEFAULT_EVENTS, -1);
> if (client == NULL) {
> mutex_unlock(®ister_mutex);
> return -ENOMEM; /* failure code */
> @@ -1194,6 +1195,7 @@ static void get_client_info(struct snd_seq_client *cptr,
> info->event_lost = cptr->event_lost;
> memcpy(info->event_filter, cptr->event_filter, 32);
> info->num_ports = cptr->num_ports;
> + info->card_number = cptr->card_number;
> memset(info->reserved, 0, sizeof(info->reserved));
> }
>
> @@ -2239,6 +2241,7 @@ int snd_seq_create_kernel_client(struct snd_card *card, int client_index,
> {
> struct snd_seq_client *client;
> va_list args;
> + int card_number = -1;
>
> if (snd_BUG_ON(in_interrupt()))
> return -EBUSY;
> @@ -2252,6 +2255,7 @@ int snd_seq_create_kernel_client(struct snd_card *card, int client_index,
> return -ERESTARTSYS;
>
> if (card) {
> + card_number = card->number;
> client_index += SNDRV_SEQ_GLOBAL_CLIENTS
> + card->number * SNDRV_SEQ_CLIENTS_PER_CARD;
> if (client_index >= SNDRV_SEQ_DYNAMIC_CLIENTS_BEGIN)
> @@ -2259,7 +2263,7 @@ int snd_seq_create_kernel_client(struct snd_card *card, int client_index,
> }
>
> /* empty write queue as default */
> - client = seq_create_client1(client_index, 0);
> + client = seq_create_client1(client_index, 0, card_number);
> if (client == NULL) {
> mutex_unlock(®ister_mutex);
> return -EBUSY; /* failure code */
> @@ -2533,9 +2537,13 @@ void snd_seq_info_clients_read(struct snd_info_entry *entry,
> continue;
> }
>
> - snd_iprintf(buffer, "Client %3d : \"%s\" [%s]\n",
> + snd_iprintf(buffer, "Client %3d : \"%s\" [%s]",
> c, client->name,
> client->type == USER_CLIENT ? "User" : "Kernel");
> + if (client->card_number != -1) {
> + snd_iprintf(buffer, ", card %d", client->card_number);
> + }
> + snd_iprintf(buffer, "\n");
> snd_seq_info_dump_ports(buffer, client);
> if (snd_seq_write_pool_allocated(client)) {
> snd_iprintf(buffer, " Output pool :\n");
> diff --git a/sound/core/seq/seq_clientmgr.h b/sound/core/seq/seq_clientmgr.h
> index 20f0a72..627be9d 100644
> --- a/sound/core/seq/seq_clientmgr.h
> +++ b/sound/core/seq/seq_clientmgr.h
> @@ -50,6 +50,7 @@ struct snd_seq_client {
> accept_output: 1;
> char name[64]; /* client name */
> int number; /* client number */
> + int card_number; /* card number, or -1 if no card */
> unsigned int filter; /* filter flags */
> DECLARE_BITMAP(event_filter, 256);
> snd_use_lock_t use_lock;
> --
> 2.2.0.rc0.207.ga3a616c
>
next prev parent reply other threads:[~2015-06-08 11:23 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-05 1:04 [PATCH - seq 1/1] ALSA seq: expose the card number of ALSA seq clients Adam Goode
2015-06-08 11:23 ` Takashi Iwai [this message]
2015-06-12 3:43 ` Adam Goode
2015-06-12 5:22 ` Takashi Iwai
2015-06-12 16:13 ` Adam Goode
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=s5hvbeyigtz.wl-tiwai@suse.de \
--to=tiwai@suse.de \
--cc=agoode@google.com \
--cc=alsa-devel@alsa-project.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox