07-21-2008
2,
0
Join Date: Jul 2008
Last Activity: 8 September 2008, 6:20 AM EDT
Posts: 2
Thanks Given: 0
Thanked 0 Times in 0 Posts
ndi_devi_offline and ddi_prop_lookup_int_array - Solaris 10
Hello All,
I am facing a problem in running a kernel modules on Solaris 10, which
were working on Solaris 9. Following are my observations.
A module calls 'ndi_devi_offline' to keep the device offline but does
not remove it.
The call is - 'ndi_devi_offline(dNode, 0);'.
After this call another module tries to read the properties of this
node, using 'ddi_prop_lookup_int_array' which is failing. This call
is to to find the 'dev_info_t' of the node. This module, then removes
the node by calling 'ndi_devi_offline( tmpDI, NDI_DEVI_REMOVE );'.
As the property read call fails, the module can not get the
'dev_info_t' value hence can not remove the node.
Is the 'ndi_devi_offline' is supposed to differ like this between
'Solaris 10' and 'Solaris 9'?
Is there any work around to my probelm?
Currently, the second module reads a particular property (by
'ddi_prop_lookup_int_array') of all the node starting from the root.
If the property value matches with the property values the module is
looking for, then this is the required 'dev_info_t'. The value of
'dev_info_t' found in this way is used to NDI_DEVI_REMOVE the node.
On Solaris 10, the 'ddi_prop_lookup_int_array' call is failing for the
node for which 'ndi_devi_offline(dNode, 0);' was called but the node
is still exists (after this call) in the tree (not removed).
Thanks and regards,
chandra