Description of problem: Seeing libusb start up is currently painful. usb_find_devices open all kinds of files and tries to read from them. This can never work for directories and since we know when a directory entry is a directory, why not skip them? This is what d_type is for. The patch adds support for it. The next optimization is to use openat() instead of open() to open files in directories. Not only is this more efficient, it also does not impose file name length limits, and is potentially more secure. For this to work the autoconf tests must be extended for openat (and define HAVE_OPENAT) and define _GNU_SOURCE in CFLAGS. I didn't attach a patch for that part. Lastly, while we are at it, I changed a couple of malloc+memset in calloc. It's more efficient (sometimes significantly so) and it is more safe because in future two places don't have to be changed in lockstep. Version-Release number of selected component (if applicable): 0.1.12-7.fc7 How reproducible: always Steps to Reproduce: 1.start any program using usb_find_devices 2. 3. Actual results: lots of unnecessary opens Expected results: skip those directory entries Additional info: I'll file the problem also upstream but we should apply these changes even before upstream uses them. Let's reduce startup times.
Created attachment 184501 [details] Small set of optimizations
Applied, thanks.