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@xxxxxxx>: > 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@xxxxxxxxxxxxxxxx > http://mailman.alsa-project.org/mailman/listinfo/alsa-devel > _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel