[OpenIndiana-discuss] Openindiana in VMWare and usb devices
Andrew Gabriel
illumos at cucumber.demon.co.uk
Sun Jun 26 10:10:23 UTC 2011
Gabriele Bulfon wrote:
> No way.........USB CDC modem/fax under VMWare Esxi 4.1 does not work....
> Everything looks fine under the OS (devices, dev/cua, messages from the USB management),
> but then tip does not attach as if the dev file is missing, or maybe just not responding....
> Anyone does have the ability to check this why?
>
Try running this dtrace script while doing the failing tip, to see
where in the kernel the ENXIO is coming from. Drop it into a
file with the #! as the first line and with +x access, and just run
the file.
#!/usr/sbin/dtrace -Fs
#pragma D option bufsize=1m
#pragma D option specsize=1m
syscall::open:entry
/execname == "tip"/
{
/*
* The call to speculation() creates a new speculation. If this
fails,
* dtrace(1M) will generate an error message indicating the
reason for
* the failed speculation(), but subsequent speculative tracing
will be
* silently discarded.
*/
self->spec = speculation();
speculate(self->spec);
/*
* Because this printf() follows the speculate(), it is being
* speculatively traced; it will only appear in the data buffer
if the
* speculation is subsequently commited.
*/
printf("%s", stringof(copyinstr(arg0)));
}
fbt:::entry
/self->spec/
{
/*
* A speculate() with no other actions speculates the default
action:
* tracing the EPID.
*/
speculate(self->spec);
printf("%x %x %x %x %x", arg0, arg1, arg2, arg3, arg4);
}
fbt:::return
/self->spec/
{
/*
* A speculate() with no other actions speculates the default
action:
* tracing the EPID.
*/
speculate(self->spec);
printf("%x errno=%d", arg1, errno);
}
syscall::open:return
/self->spec/
{
/*
* To balance the output with the -F option, we want to be sure that
* every entry has a matching return. Because we speculated the
* open entry above, we want to also speculate the open return.
* This is also a convenient time to trace the errno value.
*/
speculate(self->spec);
trace(errno);
}
syscall::open:return
/self->spec && errno == ENXIO/
{
/*
* If errno is ENXIO, we want to commit the speculation.
*/
commit(self->spec);
self->spec = 0;
}
syscall::open:return
/self->spec && errno != ENXIO/
{
/*
* If errno is not ENXIO, we discard the speculation.
*/
discard(self->spec);
self->spec = 0;
}
--
Andrew
More information about the OpenIndiana-discuss
mailing list