Hi David, On 3/14/23 11:11, David Laight wrote: > From: Hans Verkuil >> Sent: 14 March 2023 08:55 > ... >> Why not start with a dynamically allocated array of 32 vb2_buffer pointers? >> And keep doubling the size (reallocing) whenever more buffers are needed, >> up to some maximum (1024 would be a good initial value for that, I think). >> This max could be even a module option. > > I don't know the typical uses (or the code at all). > But it might be worth having a small array in the structure itself. > Useful if there are typically always (say) less than 8 buffers. > For larger sizes use the (IIRC) kmalloc_size() to find the actual > size of the structure that will be allocate and set the array > size appropriately. The typical usage is that applications allocate N buffers with the VIDIOC_REQBUFS ioctl, and in most cases that's all they use. The current max is 32 buffers, so allocating that initially (usually during probe()) will cover all current cases with a single one-time kzalloc. Only if the application wants to allocate more than 32 buffers will there be a slight overhead. Regards, Hans > > David > > - > Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK > Registration No: 1397386 (Wales)