[alsa-devel] RFC: snd_card_create() function

James Courtier-Dutton james.dutton at gmail.com
Mon Jan 12 15:42:06 CET 2009


Sounds good to me.
One can keep the wrapper outside of the kernel, and only available in
alsa-driver for those out of tree people.

Kind Regards

James




2009/1/12 Takashi Iwai <tiwai at suse.de>:
> Hi,
>
> so far, we use snd_card_new() function to create a card instance.
> A known problem regarding this API is that it doesn't return a proper
> error code, thus the probe callback always returns -ENOMEM (or
> whatever the driver defines) no matter which error occurred actually.
> A typical case is the card slot conflict.  Even in such a case, it
> returns -ENOMEM, which may mislead the user.
>
> For fixing this situation, I'd like to convert from snd_card_new() to
> a new function, snd_card_create():
>
> int snd_card_create(int idx, const char *id,
>                    struct module *module, int extra_size,
>                    struct snd_card **card_ret);
>
> and provides snd_card_new() as a wrapper with deprecated flag:
>
> static inline __deprecated
> struct snd_card *snd_card_new(int idx, const char *id,
>                              struct module *module, int extra_size)
> {
>        struct snd_card *card;
>        if (snd_card_create(idx, id, module, extra_size, &card) < 0)
>                return NULL;
>        return card;
> }
>
> The merit of creating a new function is that the older and out-of-tree
> codes (like xfi) work without modification.  There is alternative
> option, namely to use PTR_ERR() and keep the function as is.
> But this has no advantage in practice -- it can't detect the old API
> at build time, and it may Oops.
>
> The preliminary patches are found in test/snd_card_new-err branch
> of sound git tree:
>  git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6.git test/snd_card_new-err
>
> If anyone finds problems with this, please let me know.
>
>
> thanks,
>
> Takashi
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel at alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
>


More information about the Alsa-devel mailing list