[Toybox] [PATCH] lspci: use a different default location for pci.ids on Android.
Rob Landley
rob at landley.net
Fri Feb 11 15:08:57 PST 2022
On 2/11/22 1:29 PM, enh wrote:
> Heads up that there's another one in lsusb.c.
>
> thanks, but we may as well wait until someone has a specific use case. (although
> it's unfortunate that there's no workaround with lsusb to specify a path like
> there is with lspci.)
Just noticed the discrepancy last email. :)
> (Android's not likely to want the gz
> version, Saving a megabyte is a rounding error there, it's probably on a
> compressed flash filesystem anyway, and keeping it be directly human readable
> may count as a slight win in that context. So it would check /etc and
> /usr/share/misc for pci.ids.gz before finding /vendor/pci.ids...)
>
> well, that's part of the background for why the patch says /vendor --- the
> assumption is that no-one wants to pay to ship a pci id database, and even the
> one user i have is for the virtualized cuttlefish stuff, not for an actual
> device, and even they seem to just have a database with the pci ids they care
> about, rather than a full database.
Simple gzip brings them down to ~250k each. xz brings them down to 201 and 189
but I learn towards just gzip because it's fast and cheap and I've got
decompression code for that built-in already. I even already wrote most of the
compressor but got derailed trying to make it match other gzip implementations'
output for sha3sum reasons. (Mostly a question of when to do dictionary resets,
and knowing when to use the builtin dictionary vs the calculated one. Alas, not
things the RFC covers...)
> in a sense you're right, that this is small (compared to, say, a sample
> wallpaper or whatever), but the pressure in the other direction is that it's a
> lot easier to justify space for user-visible stuff like wallpapers (even if most
> users don't use most wallpapers) than it is for a database of debugging info.
>
> (i haven't yet checked, but i'm curious whether this database code actually
> works? the cuttlefish folks seem to think it does, but that might be because
> they have a cut down database? i did test this quickly on my laptop last night
> but got seemingly nonsense results.
Hmmm...
$ toybox lspci
00:1f.2 Class 0106: 02a PCI Hotplug Controller A:1e03
00:1c.0 Class 0604: 02a PCI Hotplug Controller A:1e10
00:1f.0 Class 0601: 02a PCI Hotplug Controller A:1e55
02:00.0 Class 0280: 02a PCI Hotplug Controller A:0087
0b:00.0 Class 0805: EN-1217 Ethernet Adapter:8221
00:1c.5 Class 0604: 02a PCI Hotplug Controller A:1e1a
00:16.0 Class 0780: 02a PCI Hotplug Controller A:1e3a
00:1b.0 Class 0403: 02a PCI Hotplug Controller A:1e20
00:1c.3 Class 0604: 02a PCI Hotplug Controller A:1e16
00:19.0 Class 0200: 02a PCI Hotplug Controller A:1502
00:1f.3 Class 0c05: 02a PCI Hotplug Controller A:1e22
00:00.0 Class 0600: 02a PCI Hotplug Controller A:0154
00:1c.1 Class 0604: 02a PCI Hotplug Controller A:1e12
00:1a.0 Class 0c03: 02a PCI Hotplug Controller A:1e2d
00:1d.0 Class 0c03: 02a PCI Hotplug Controller A:1e26
00:02.0 Class 0300: 02a PCI Hotplug Controller A:0166
00:14.0 Class 0c03: 02a PCI Hotplug Controller A:1e31
00:1c.2 Class 0604: 02a PCI Hotplug Controller A:1e14
No, it does not. I'll have a go...
> it wasn't obvious to me how the loop through
> the file is actually taking into account the indentation level that's actually
> meaningful for the database? at least for the full database i have on my
> laptop... i might rewrite it one weekend, but i should probably find the time to
> send you my gpiod.c and my strace fixes that have been lying around on my
> raspberry pi for months first!)
I have recently cleared more time to work on this, as you know. :)
> But if I do that I need to teach pci.ids to read the data into memory in one
> pass the way usb.ids does, or else it'll try to lseek() a pipe.
>
> (tbh, that was my first thought for rewriting this code anyway.)
Indeed. I'd forgotten that lspci already had database reading code when I added
it to lsusb. The two file formats actually look identical, except that pci.ids
has a third indentation level. Should be easy to get them to share code...
Rob
More information about the Toybox
mailing list