diff options
Diffstat (limited to 'sys/dev/pci/pci.c')
-rw-r--r-- | sys/dev/pci/pci.c | 30 |
1 files changed, 14 insertions, 16 deletions
diff --git a/sys/dev/pci/pci.c b/sys/dev/pci/pci.c index b774f8b..71897e3 100644 --- a/sys/dev/pci/pci.c +++ b/sys/dev/pci/pci.c @@ -23,7 +23,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: pci.c,v 1.100 1999/05/08 21:59:40 dfr Exp $ + * $Id: pci.c,v 1.101 1999/05/09 15:54:04 peter Exp $ * */ @@ -537,6 +537,7 @@ static int pci_ioctl(dev_t dev, u_long cmd, caddr_t data, int flag, struct proc *p) { struct pci_io *io; + const char *name; int error; if (!(flag & FWRITE)) @@ -711,6 +712,18 @@ pci_ioctl(dev_t dev, u_long cmd, caddr_t data, int flag, struct proc *p) if (i < cio->offset) continue; + /* Populate pd_name and pd_unit */ + name = NULL; + if (dinfo->cfg.dev && dinfo->conf.pd_name[0] == '\0') + name = device_get_name(dinfo->cfg.dev); + if (name) { + strncpy(dinfo->conf.pd_name, name, + sizeof(dinfo->conf.pd_name)); + dinfo->conf.pd_name[PCI_MAXNAMELEN] = 0; + dinfo->conf.pd_unit = + device_get_unit(dinfo->cfg.dev); + } + if ((pattern_buf == NULL) || (pci_conf_match(pattern_buf, num_patterns, &dinfo->conf) == 0)) { @@ -886,21 +899,6 @@ pci_compat_attach(device_t dev) *dvp->pd_count = unit; if (dvp->pd_attach) dvp->pd_attach(cfg, unit); - - /* - * XXX KDM for some devices, dvp->pd_name winds up NULL. - * I haven't investigated enough to figure out why this - * would happen. - */ - if (dvp->pd_name != NULL) - strncpy(dinfo->conf.pd_name, dvp->pd_name, - sizeof(dinfo->conf.pd_name)); - else - strncpy(dinfo->conf.pd_name, "????", - sizeof(dinfo->conf.pd_name)); - dinfo->conf.pd_name[sizeof(dinfo->conf.pd_name) - 1] = 0; - dinfo->conf.pd_unit = unit; - return 0; } |