mirror of
https://github.com/clearml/go-nvlib
synced 2025-02-07 05:17:43 +00:00
Allow clients of the pciids API to set the pci.ids filepath
Signed-off-by: Christopher Desiniotis <cdesiniotis@nvidia.com>
This commit is contained in:
parent
c48c1fc89f
commit
76018d282e
@ -172,24 +172,48 @@ type parser struct {
|
||||
}
|
||||
}
|
||||
|
||||
// Various locations of pci.ids for different distributions. These may be more
|
||||
// up to date then the embedded pci.ids db
|
||||
var defaultPCIdbPaths = []string{
|
||||
"/usr/share/misc/pci.ids", // Ubuntu
|
||||
"/usr/local/share/pci.ids", // RHEL like with manual update
|
||||
"/usr/share/hwdata/pci.ids", // RHEL like
|
||||
"/usr/share/pci.ids", // SUSE
|
||||
}
|
||||
|
||||
// This is a fallback if all of the locations fail
|
||||
//go:embed default_pci.ids
|
||||
var defaultPCIdb []byte
|
||||
|
||||
// NewDB Parse the PCI DB in its default locations or use the default
|
||||
// builtin pci.ids db.
|
||||
func NewDB() Interface {
|
||||
// Various locations of pci.ids for differente distributions these may be more
|
||||
// up to date then the embedded pci.ids db
|
||||
pcidbs := []string{
|
||||
"/usr/share/misc/pci.ids", // Ubuntu
|
||||
"/usr/local/share/pci.ids", // RHEL like with manual update
|
||||
"/usr/share/hwdata/pci.ids", // RHEL like
|
||||
"/usr/share/pci.ids", // SUSE
|
||||
func NewDB(opts ...Option) Interface {
|
||||
db := &pcidb{}
|
||||
for _, opt := range opts {
|
||||
opt(db)
|
||||
}
|
||||
|
||||
pcidbs := defaultPCIdbPaths
|
||||
if db.path != "" {
|
||||
pcidbs = append([]string{db.path}, defaultPCIdbPaths...)
|
||||
}
|
||||
|
||||
return newParser(pcidbs).parse()
|
||||
}
|
||||
|
||||
// Option defines a function for passing options to the NewDB() call
|
||||
type Option func(*pcidb)
|
||||
|
||||
// WithFilePath provides an Option to set the file path
|
||||
// for the pciids database used by pciids interface.
|
||||
// The file path provided takes precedence over all other
|
||||
// paths.
|
||||
func WithFilePath(path string) Option {
|
||||
return func(db *pcidb) {
|
||||
db.path = path
|
||||
}
|
||||
}
|
||||
|
||||
// newParser will attempt to read the db pci.ids from well known places or fall
|
||||
// back to an internal db
|
||||
func newParser(pcidbs []string) *parser {
|
||||
@ -247,6 +271,7 @@ func (d *pcidb) GetClassName(classID uint32) string {
|
||||
type pcidb struct {
|
||||
vendors map[uint16]vendor
|
||||
classes map[uint32]class
|
||||
path string
|
||||
}
|
||||
|
||||
// vendor PCI vendors/devices/subVendors/SubDevices
|
||||
|
Loading…
Reference in New Issue
Block a user