All,

As a part of the GLDv3 conversion work on dnet, I updated quite a bit of 
the STREAMS initialization code. After doing a bit of testing this 
evening, it looks like dnet is having an issue in _info (the _init 
breakpoint was never reached).

My gut is telling me I botched the STREAMS init which is causing 
mod_info (and subsequently _info) to return a non 0 condition.

Essentially, I changed this older block of STREAMS init:

  293 /* Standard Streams initialization */
  294 static struct module_info minfo = {
  295         DNETIDNUM, "dnet", 0, INFPSZ, DNETHIWAT, DNETLOWAT
  296 };
  297
  298 static struct qinit rinit = {   /* read queues */
  299         NULL, gld_rsrv, gld_open, gld_close, NULL, &minfo, NULL
  300 };
  301
  302 static struct qinit winit = {   /* write queues */
  303         gld_wput, gld_wsrv, NULL, NULL, NULL, &minfo, NULL
  304 };
  305
  306 static struct streamtab dnetinfo = {&rinit, &winit, NULL, NULL};
  ...
  310
  311 static struct cb_ops cb_dnetops = {
  312         nulldev,                /* cb_open */
  313         nulldev,                /* cb_close */
  314         nodev,                  /* cb_strategy */
  315         nodev,                  /* cb_print */
  316         nodev,                  /* cb_dump */
  317         nodev,                  /* cb_read */
  318         nodev,                  /* cb_write */
  319         nodev,                  /* cb_ioctl */
  320         nodev,                  /* cb_devmap */
  321         nodev,                  /* cb_mmap */
  322         nodev,                  /* cb_segmap */
  323         nochpoll,               /* cb_chpoll */
  324         ddi_prop_op,            /* cb_prop_op */
  325         &dnetinfo,          /* cb_stream */
  326         (int)(D_MP | D_HOTPLUG) /* cb_flag */
  327 };
  328
  329 static struct dev_ops dnetops = {
  330         DEVO_REV,               /* devo_rev */
  331         0,                      /* devo_refcnt */
  332         gld_getinfo,            /* devo_getinfo */
  333         nulldev,                /* devo_identify */
  334         dnetprobe,              /* devo_probe */
  335         dnetattach,             /* devo_attach */
  336         dnetdetach,             /* devo_detach */
  337         nodev,                  /* devo_reset */
  338         &cb_dnetops,                /* devo_cb_ops */
  339         (struct bus_ops *)NULL  /* devo_bus_ops */
  340 };

To (similar to afe):

  293 DDI_DEFINE_STREAM_OPS(dnet_ops, nulldev, dnet_probe, dnet_attach, 
dnet_detach,
  294     nodev, NULL, D_MP, NULL);


Looking back, cutting 293 - 306 seems wrong, but unfortunately I do not 
have enough experience with STREAMS to say why, or if there is a more 
appropriate route to take to remove the gld_getinfo reference in dnetops.

Does anyone have any advice?

TIA,

Steve

-- 
Yet magic and hierarchy
arise from the same source,
and this source has a null pointer.

Reference the NULL within NULL,
it is the gateway to all wizardry.
_______________________________________________
driver-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/driver-discuss

Reply via email to