365 break;
366 }
367 }
368 if (tdip == NULL) {
369 UNLOCK_DEV_OPS(dmp);
370 return (inst);
371 }
372 }
373 UNLOCK_DEV_OPS(dmp);
374 return (-1);
375 }
376
377 static int
378 pseudonex_ctl(dev_info_t *dip, dev_info_t *rdip, ddi_ctl_enum_t ctlop,
379 void *arg, void *result)
380 {
381 switch (ctlop) {
382 case DDI_CTLOPS_REPORTDEV:
383 if (rdip == NULL)
384 return (DDI_FAILURE);
385 cmn_err(CE_CONT, "?pseudo-device: %s%d\n",
386 ddi_driver_name(rdip), ddi_get_instance(rdip));
387 return (DDI_SUCCESS);
388
389 case DDI_CTLOPS_INITCHILD:
390 {
391 char name[12]; /* enough for a decimal integer */
392 int instance = -1;
393 dev_info_t *child = (dev_info_t *)arg;
394 const char *childname = ddi_driver_name(child);
395 char **childlist;
396 uint_t nelems;
397 int auto_assign = 0;
398
399 /*
400 * If this pseudonex node has a valid-children property,
401 * then that acts as an access control list for children
402 * allowed to attach beneath this node. Honor it.
403 */
404 if (ddi_prop_lookup_string_array(DDI_DEV_T_ANY, dip,
405 DDI_PROP_DONTPASS, "valid-children", &childlist,
406 &nelems) == DDI_PROP_SUCCESS) {
|
365 break;
366 }
367 }
368 if (tdip == NULL) {
369 UNLOCK_DEV_OPS(dmp);
370 return (inst);
371 }
372 }
373 UNLOCK_DEV_OPS(dmp);
374 return (-1);
375 }
376
377 static int
378 pseudonex_ctl(dev_info_t *dip, dev_info_t *rdip, ddi_ctl_enum_t ctlop,
379 void *arg, void *result)
380 {
381 switch (ctlop) {
382 case DDI_CTLOPS_REPORTDEV:
383 if (rdip == NULL)
384 return (DDI_FAILURE);
385 return (DDI_SUCCESS);
386
387 case DDI_CTLOPS_INITCHILD:
388 {
389 char name[12]; /* enough for a decimal integer */
390 int instance = -1;
391 dev_info_t *child = (dev_info_t *)arg;
392 const char *childname = ddi_driver_name(child);
393 char **childlist;
394 uint_t nelems;
395 int auto_assign = 0;
396
397 /*
398 * If this pseudonex node has a valid-children property,
399 * then that acts as an access control list for children
400 * allowed to attach beneath this node. Honor it.
401 */
402 if (ddi_prop_lookup_string_array(DDI_DEV_T_ANY, dip,
403 DDI_PROP_DONTPASS, "valid-children", &childlist,
404 &nelems) == DDI_PROP_SUCCESS) {
|