Well we seem to have beat this death, here’s
a recap to see if this dead horse has anything
else to sayt.
Yes I oversimplified the qnx_name_locate() stuff.
There are two issues to deal with it. One is
that if the process dies and comes back to life
with another pid, you want some mechanism to
re-find the admin. If you want to do this
very efficiently then you implement code that
only gets the pid the first time, and then
subsequently if a Send() fails.
You also might want to watch out for repeated
qnx_name_locate()'s across a network without
a qnx_vc_detach() or you will run out of VC’s
eventually.
A smart sound generator with frequency and period
options is good.
If your process is usually Receive blocked, you
could also set a timer to trigger a proxy for when
you want the sound to stop.
One comment probably deserves some reflection.
You may want to trigger a proxy (non-blocking) rather then
sending a message which will put your client into send and
reply blocked states.
This got me thinking. I don’t really buy the non-blocking
point here. The admin that you send to could use proxy
triggering timers also, so hopefully the admin would almost
always be ready to receive your message and reply
immediatly. It would take more kernel work however,
but if you are willing to call Trigger(), you are
probably no worse off then calling Send() and waiting
for Receive() and Reply(). You are still stuck giving
up control to the OS for however brief a period and if
you don’t want to do this you are stuck. Or are you?
Here’s what I had in mind. Attach an interrupt handler
to the timer interrupt 0. Turn on sound and set a counter.
The interrupt handler counts down, and when it gets to zero,
stop the sound.
Even this is not perfect. The firing of the interrupt, and
running of your code and others is not insignificant, and
may be even more than Trigger() but it should at least be
extremely predictable.
Previously, Hardware Support Account wrote in qdn.public.qnx4:
Hi,
You may want to trigger a proxy (non-blocking) rather then sending a message which will put your client
into send and reply blocked states.
pid = qnx_name_locate(…);
proxy_pid = qnx_proxy_attach(pid,…);
.
.
.
Trigger(proxy_pid); /* request sound form server process */
Regards,
Joe
Mitchell Schoenbrun --------- maschoen@pobox.com