Lines Matching +full:sub +full:-

28  * maintained at http://pci-ids.ucw.cz/ and in the gate at cmd/hwdata. This
143 list_create(&vend->pv_devs, sizeof (pcidb_device_t), in parse_vendor()
145 vend->pv_hdl = hdl; in parse_vendor()
146 list_insert_tail(&hdl->ph_vendors, vend); in parse_vendor()
149 vend->pv_id = strtol(buf, NULL, 16); in parse_vendor()
152 (void) strlcpy(vend->pv_name, buf, PCI_NAME_MAX); in parse_vendor()
166 list_create(&dev->pd_subs, sizeof (pcidb_subvd_t), in parse_device()
168 dev->pd_vend = vend; in parse_device()
169 list_insert_tail(&vend->pv_devs, dev); in parse_device()
173 dev->pd_id = strtol(buf, NULL, 16); in parse_device()
176 (void) strlcpy(dev->pd_name, buf, PCI_NAME_MAX); in parse_device()
183 pcidb_subvd_t *sub; in parse_subdev() local
185 sub = malloc(sizeof (pcidb_subvd_t)); in parse_subdev()
186 if (sub == NULL) in parse_subdev()
189 sub->ps_dev = dev; in parse_subdev()
190 sub->ps_vend = dev->pd_vend; in parse_subdev()
191 list_insert_tail(&dev->pd_subs, sub); in parse_subdev()
195 sub->ps_vid = strtol(buf, NULL, 16); in parse_subdev()
198 sub->ps_did = strtol(buf, NULL, 16); in parse_subdev()
201 (void) strlcpy(sub->ps_name, buf, PCI_NAME_MAX); in parse_subdev()
203 return (sub); in parse_subdev()
215 list_create(&class->pc_subclass, sizeof (pcidb_subclass_t), in pcidb_parse_class()
217 class->pc_hdl = hdl; in pcidb_parse_class()
218 list_insert_tail(&hdl->ph_classes, class); in pcidb_parse_class()
222 class->pc_code = strtol(buf, NULL, 16); in pcidb_parse_class()
224 (void) strlcpy(class->pc_name, buf, PCI_NAME_MAX); in pcidb_parse_class()
232 pcidb_subclass_t *sub; in pcidb_parse_subclass() local
234 sub = malloc(sizeof (pcidb_subclass_t)); in pcidb_parse_subclass()
235 if (sub == NULL) in pcidb_parse_subclass()
238 list_create(&sub->psc_progifs, sizeof (pcidb_progif_t), in pcidb_parse_subclass()
240 sub->psc_class = class; in pcidb_parse_subclass()
241 list_insert_tail(&class->pc_subclass, sub); in pcidb_parse_subclass()
245 sub->psc_code = strtol(buf, NULL, 16); in pcidb_parse_subclass()
247 (void) strlcpy(sub->psc_name, buf, PCI_NAME_MAX); in pcidb_parse_subclass()
249 return (sub); in pcidb_parse_subclass()
253 pcidb_parse_progif(char *buf, pcidb_subclass_t *sub) in pcidb_parse_progif() argument
262 prog->pp_subclass = sub; in pcidb_parse_progif()
263 list_insert_tail(&sub->psc_progifs, prog); in pcidb_parse_progif()
267 prog->pp_code = strtol(buf, NULL, 16); in pcidb_parse_progif()
269 (void) strlcpy(prog->pp_name, buf, PCI_NAME_MAX); in pcidb_parse_progif()
281 return (-1); in readline()
297 pcidb_subclass_t *sub = NULL; in parse_db() local
306 return (-1); in parse_db()
317 sub = NULL; in parse_db()
327 return (-1); in parse_db()
360 return (-1); in parse_db()
379 sub = pcidb_parse_subclass(buf, class); in parse_db()
380 if (sub == NULL) { in parse_db()
381 return (-1); in parse_db()
395 assert(sub != NULL); in parse_db()
396 if (pcidb_parse_progif(buf, sub) == NULL) { in parse_db()
397 return (-1); in parse_db()
419 list_create(&h->ph_vendors, sizeof (pcidb_vendor_t), in pcidb_open()
421 list_create(&h->ph_classes, sizeof (pcidb_class_t), in pcidb_open()
450 while ((vend = list_remove_head(&hdl->ph_vendors)) != NULL) { in pcidb_close()
453 while ((dev = list_remove_head(&vend->pv_devs)) != NULL) { in pcidb_close()
454 pcidb_subvd_t *sub; in pcidb_close() local
456 while ((sub = list_remove_head(&dev->pd_subs)) != in pcidb_close()
458 free(sub); in pcidb_close()
460 list_destroy(&dev->pd_subs); in pcidb_close()
463 list_destroy(&vend->pv_devs); in pcidb_close()
466 list_destroy(&hdl->ph_vendors); in pcidb_close()
468 while ((class = list_remove_head(&hdl->ph_classes)) != NULL) { in pcidb_close()
469 pcidb_subclass_t *sub; in pcidb_close() local
471 while ((sub = list_remove_head(&class->pc_subclass)) != NULL) { in pcidb_close()
474 while ((prog = list_remove_head(&sub->psc_progifs)) != in pcidb_close()
478 list_destroy(&sub->psc_progifs); in pcidb_close()
479 free(sub); in pcidb_close()
481 list_destroy(&class->pc_subclass); in pcidb_close()
484 list_destroy(&hdl->ph_classes); in pcidb_close()
494 for (v = list_head(&hdl->ph_vendors); v != NULL; in pcidb_lookup_vendor()
495 v = list_next(&hdl->ph_vendors, v)) { in pcidb_lookup_vendor()
496 if (v->pv_id == id) in pcidb_lookup_vendor()
506 return (vend->pv_name); in pcidb_vendor_name()
512 return (vend->pv_id); in pcidb_vendor_id()
518 return (list_head(&hdl->ph_vendors)); in pcidb_vendor_iter()
525 return (list_next(&vend->pv_hdl->ph_vendors, vend)); in pcidb_vendor_iter_next()
533 for (pcidb_device_t *dev = list_head(&vend->pv_devs); dev != NULL; in pcidb_lookup_device_by_vendor()
534 dev = list_next(&vend->pv_devs, dev)) { in pcidb_lookup_device_by_vendor()
535 if (dev->pd_id == id) in pcidb_lookup_device_by_vendor()
557 return (list_head(&vend->pv_devs)); in pcidb_device_iter()
563 return (list_next(&dev->pd_vend->pv_devs, dev)); in pcidb_device_iter_next()
569 return (dev->pd_name); in pcidb_device_name()
575 return (dev->pd_id); in pcidb_device_id()
581 return (dev->pd_vend); in pcidb_device_vendor()
587 pcidb_subvd_t *sub; in pcidb_lookup_subvd_by_device() local
591 for (sub = list_head(&dev->pd_subs); sub != NULL; in pcidb_lookup_subvd_by_device()
592 sub = list_next(&dev->pd_subs, sub)) { in pcidb_lookup_subvd_by_device()
593 if (sub->ps_vid == svid && sub->ps_did == sdid) in pcidb_lookup_subvd_by_device()
594 return (sub); in pcidb_lookup_subvd_by_device()
631 return (list_head(&dev->pd_subs)); in pcidb_subvd_iter()
635 pcidb_subvd_iter_next(pcidb_subvd_t *sub) in pcidb_subvd_iter_next() argument
637 return (list_next(&sub->ps_dev->pd_subs, sub)); in pcidb_subvd_iter_next()
641 pcidb_subvd_name(pcidb_subvd_t *sub) in pcidb_subvd_name() argument
643 return (sub->ps_name); in pcidb_subvd_name()
647 pcidb_subvd_svid(pcidb_subvd_t *sub) in pcidb_subvd_svid() argument
649 return (sub->ps_vid); in pcidb_subvd_svid()
653 pcidb_subvd_sdid(pcidb_subvd_t *sub) in pcidb_subvd_sdid() argument
655 return (sub->ps_did); in pcidb_subvd_sdid()
659 pcidb_subvd_device(pcidb_subvd_t *sub) in pcidb_subvd_device() argument
661 return (sub->ps_dev); in pcidb_subvd_device()
665 pcidb_subvd_vendor(pcidb_subvd_t *sub) in pcidb_subvd_vendor() argument
667 return (sub->ps_vend); in pcidb_subvd_vendor()
674 for (pcidb_class_t *class = list_head(&hdl->ph_classes); class != NULL; in pcidb_lookup_class()
675 class = list_next(&hdl->ph_classes, class)) { in pcidb_lookup_class()
676 if (class->pc_code == code) { in pcidb_lookup_class()
687 return (list_head(&hdl->ph_classes)); in pcidb_class_iter()
693 return (list_next(&class->pc_hdl->ph_classes, class)); in pcidb_class_iter_next()
699 return (class->pc_name); in pcidb_class_name()
705 return (class->pc_code); in pcidb_class_code()
724 for (pcidb_subclass_t *sub = list_head(&class->pc_subclass); in pcidb_lookup_subclass_by_class() local
725 sub != NULL; sub = list_next(&class->pc_subclass, sub)) { in pcidb_lookup_subclass_by_class()
726 if (sub->psc_code == code) { in pcidb_lookup_subclass_by_class()
727 return (sub); in pcidb_lookup_subclass_by_class()
737 return (list_head(&class->pc_subclass)); in pcidb_subclass_iter()
741 pcidb_subclass_iter_next(pcidb_subclass_t *sub) in pcidb_subclass_iter_next() argument
743 return (list_next(&sub->psc_class->pc_subclass, sub)); in pcidb_subclass_iter_next()
747 pcidb_subclass_name(pcidb_subclass_t *sub) in pcidb_subclass_name() argument
749 return (sub->psc_name); in pcidb_subclass_name()
753 pcidb_subclass_code(pcidb_subclass_t *sub) in pcidb_subclass_code() argument
755 return (sub->psc_code); in pcidb_subclass_code()
762 pcidb_subclass_t *sub; in pcidb_lookup_progif() local
764 sub = pcidb_lookup_subclass(hdl, ccode, scode); in pcidb_lookup_progif()
765 if (sub == NULL) { in pcidb_lookup_progif()
769 return (pcidb_lookup_progif_by_subclass(sub, pcode)); in pcidb_lookup_progif()
773 pcidb_lookup_progif_by_subclass(pcidb_subclass_t *sub, uint8_t code) in pcidb_lookup_progif_by_subclass() argument
775 for (pcidb_progif_t *prog = list_head(&sub->psc_progifs); prog != NULL; in pcidb_lookup_progif_by_subclass()
776 prog = list_next(&sub->psc_progifs, prog)) { in pcidb_lookup_progif_by_subclass()
777 if (prog->pp_code == code) { in pcidb_lookup_progif_by_subclass()
786 pcidb_progif_iter(pcidb_subclass_t *sub) in pcidb_progif_iter() argument
788 return (list_head(&sub->psc_progifs)); in pcidb_progif_iter()
794 return (list_next(&prog->pp_subclass->psc_progifs, prog)); in pcidb_progif_iter_next()
800 return (prog->pp_name); in pcidb_progif_name()
806 return (prog->pp_code); in pcidb_progif_code()