“Orhan Ozdengiz” <ozdengiz@axion.net> wrote in message
news:94tavr$sfu$1@inn.qnx.com…
Thank you very much Mario. Your remarks made me understand the situation.
Unfortunately, in the Library Reference of Watcom C/C++, which I am using,
the return value of the Receive() function is given only as the ID of the
sender process; there is no mention of the proxy ID in case the Trigger()
function is used.
To my own surprise, I have to agree with you. The doc is not clear about
that
at all.
Any doc people reading this?
Thanks again!
PS: Thanks to everybody who has shown an interest.
“Mario Charest” <mcharest@void_zinformatic.com> wrote in message
news:94q7ko$hig$> 1@nntp.qnx.com> …
“Orhan Ozdengiz” <> ozdengiz@axion.net> > wrote in message
news:94q714$1lk$> 1@inn.qnx.com> …
Thank you for your interest.
I guess, I have to make the following correction to my original
message:
I
missed a “not” there. The last sentence of my message should read as
follows:
“… But the process ID returned by the Receive() function in the
receiving
process is, for one thing, not the process ID of the sender; secondly,
a
process with that ID does NOT appear in the list of currently running
processes, which can be displayed by issuing the sin command at the
command
prompt.”
Here is additional info that will hopefully clarify certain points:
- The software is running on a single node. No QNX network/no other
nodes.
-The sending process triggers a proxy to communicate with the
receiving
Here is the problem. When you Trigger a proxy, Receive return the
id of the PROXY not of the process that send it. Proxy are not
really meant to send a message since the message is always the same.
process (i.e. in this specific case, I am not using the
Send()/Receive()/Reply() trio). In other words, “Trigger(pxy);” is
used
and
the sending process has no clue about what the message represented by
the
proxy, pxy, is. According to the principles of messaging-via-proxies
(as
it
is the case with the other IPC schemes), it is the Kernel’s
responsibility
to move the ‘canned message’ corresponding to pxy from the receiving
process’ canned-message buffer to its receive buffer and to tell the
receiver process the ID of the sender (of course, you already know
that).
You have misinterpreted the doc, or the doc is fuzzy >
Now, the sending process’ symbolic name and ID can be viewed on the
console
(using the sin command) but the code prints out the sender’s ID as a
few
numbers off the actual ID of the sending process. That is, if the
sending
process’ ID is, say 567, the proxy gets triggered by process 568 (or
569…
the largest difference I have noticed so far was 20, and that, when
the
actual sender’s process ID was a 4 digit number - no consistent
pattern
occurs here). The funny thing is, 568 (or 569, or whatever that number
may
be) is not displayed on the console when the sin command is issued.
If you’d run sin proxy you would see the number 568 belong to a proxy !
-There are no user defined interrut handlers.
“Orhan Ozdengiz” <> ozdengiz@axion.net> > wrote in message
news:94o76h$m99$> 1@inn.qnx.com> …
Hi,
The system I am working on is a multitasking embedded system. The
Receive()
function that I am using in one of the processes does not return the
correct
process ID of the sender of some messages. I know which process is
sending
the messages, I also know the process ID and the symbolic name
attached
to
that process, and I can see that data on the output screen of the
QNX
sin
command when issued at the command prompt. But the process ID
returned
by
the Receive() function in the receiving process is, for one thing,
not
the
process ID of the sender; secondly, a process with that ID does
appear
in
the list of currently running processes, which can be displayed by
issuing
the sin command at the command prompt.
Any comments?
Thank you.
\