On Thu, 14 Jul 2016 16:07:17 +0200, Takashi Sakamoto wrote: > > Hi, > > A batch of this patchset is to save storage consumption and to improve > execution performance, just for a little. > > Currently, ALSA userspace library doesn't disclose layouts of major > structures to applications. The applications call some APIs in the > library to get memory objects for the structures, then operates to > corresponding opaque pointers. In most cases, the objects are kept on > stack by calls of alloca(3). > > On the other hand, inner the library, the layouts are decided in > pre-compile or compile time. Therefore, there's little needs to call > of alloca(3). > > However, inner the library, we can see some usages of alloca(3). This > brings two disadvantages to system. One is to execute more instructions > to use stack than automatic variables, for the same task. Another is to > enlarge size of shared object. Although both disadvantages are not so > remarkable, it's better to improve them. > > This patchset replaces usages of alloca() with automatic variables just > to raw structures. Additionally, this commit improves code formats in > related functions. > > I can see below effect on my environment (Ubuntu 16.04, amd64, gcc) > $ git checkout master > $ git show HEAD > commit 941bd150bef2560f3e38a3bf74d546447e3126d1 > ... > $ ./gitcompile --with-plugindir=/usr/lib/x86_64-linux-gnu/alsa-lib/ > ... > $ ls -l src/.libs/libasound.so.2.0.0 > -rwxrwxr-x 1 mocchi mocchi 4794528 7月 14 22:22 src/.libs/libasound.so.2.0.0 > $ git checkout remove-alloca-asound > $ make > ... > $ ls -l src/.libs/libasound.so.2.0.0 > -rwxrwxr-x 1 mocchi mocchi 4783712 7月 14 22:21 src/.libs/libasound.so.2.0.0 > $ gcc -v > ... > gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.1) > > Takashi Sakamoto (34): > pcm: change code formatting for snd_pcm_set_params() > pcm: remove alloca() from snd_pcm_set_params() > pcm: change code formatting for snd_pcm_get_params() > pcm: remove alloca() from snd_pcm_get_params > pcm: change code formatting for snd_pcm_direct_initialize_slave() > pcm: remove alloca() from snd_pcm_direct_initialize_slave > pcm: change code formatting for snd_pcm_direct_initialize_poll_fd() > pcm: remove alloca() from snd_pcm_direct_initialize_poll_fd() > pcm: change code formatting for snd_pcm_direct_set_timer_params() > pcm: remove alloca() from snd_pcm_direct_set_timer_params > pcm: remove alloca() from _snd_pcm_hook_ctl_elems_install() > pcm: change code formatting for snd_pcm_hw_change_timer() > pcm: remove alloca() from snd_pcm_hw_change_timer() > pcm: remove alloca() from snd_pcm_query_chmaps_from_hw() > pcm: remove alloca() from snd_pcm_hw_get_chmap() > pcm: remove alloca() from snd_pcm_hw_set_chmap() > pcm: remove alloca() from snd_spcm_init() > pcm: remove alloca() from snd_spcm_init_duplex() > pcm: change code formatting for softvol_load_control() > pcm: remove alloca() from softvol_load_control() > pcm: change code formatting for _snd_pcm_softvol_open() > pcm: remove alloca() from _snd_pcm_softvol_open() > conf: remove alloca() from snd_determine_driver() > conf: remove alloca() from snd_func_card_id() > conf: remove alloca() from snd_func_card_name() > conf: remove alloca() from snd_func_pcm_id() > conf: remove alloca() from snd_func_pcm_args_by_class() > conf: remove alloca() from snd_func_private_pcm_subdevice() > alisp: remove alloca() from FA_card_info() > alisp: remove alloca() from FA_hctl_find_elem() > alisp: remove alloca() from FA_hctl_elem_info() > alisp: remove alloca() from FA_hctl_elem_read() > alisp: remove alloca() from FA_hctl_elem_write() > alisp: remove alloca() from FA_pcm_info() Thanks, it's a nice cleanup. Applied all patches now. Takashi _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel