[alsa-devel] Boundary calculation
    Ricardo Biehl Pasquali 
    pasqualirb at gmail.com
       
    Mon Jul 16 21:25:07 CEST 2018
    
    
  
Hello.
I can't get the tricky boundary calculation. Perhaps I'm
missing some obvious thing, or maybe it's really some
circumvent for a specific case that was not commented.
The current calculation for boundary is:
	boundary = buffer_size;
	while (boundary * 2 <= LONG_MAX - buffer_size)
		boundary *= 2;
I've checked out some repositories, specially alsa-driver
in ALSA git, and I realized this calculation exists at
least since 2001. I guess it was Jaroslav who wrote.
Visualization of the calculation (B = buffer_size):
                           LONG_MAX
-------------------------------
\______________/           \__/
     B * 4                  B
\______/
 B * 2
\__/
 B
Why isn't a simpler calculation used instead? e.g.:
	/* closest multiple of buffer size less or equal LONG_MAX */
	boundary = LONG_MAX - LONG_MAX % buffer_size;
                           LONG_MAX
-------------------------------
\__________________________/
           B * 6
Cheers!
	pasquali
    
    
More information about the Alsa-devel
mailing list