qnx4->qnx6 porting philosophy

I’m porting a multiple process application from QNX4 to Neutrino… I’m
using the porting docs from the QNX folks, and also Mr. Krten’s very
useful “Getting Started…” book.

I chose the manager/worker, “report for work” architecture, using the
Send/Reply behavior.

In my QNX4 app, I use the “name locate” strategy to locate the manager
from my workers. Mr. Krten covers this, and indicates an upgrade path,
but then asks why not do it the Neutrino way, and convert the server to
a resource manager? Always wanting to modernize, I looked into this,
and see how nice open() is for locating the resource manager. But using
the read()/write() framework for interprocess communication and
synchronization seems to throw out the message passing framework that
QNX is famous for.

Now, I know that under the hood, it’s all message passing, but on the
surface of it, the read/write framework seems completely
divorced from a send/receive framework. Is this so? Can a
report-for-work model fit into the resource manager framework? Can I
have my workers locate the manager in a non-deprecated way?

Or is it a one-or-the-other kind of thing? I think Yogi Berra said,
“When you see a fork in the road, take it!” Am I at a fork?


Jeffrey W Percival, Senior Scientist and Associate Director
Space Astronomy Laboratory, University of Wisconsin - Madison
1150 University Ave, Madison, WI 53706 USA
608-262-8686 (fax 608-263-0361) jwp@sal.wisc.edu
http://www.sal.wisc.edu/~jwp

Jeffrey W Percival <jwp@sal.wisc.edu> wrote:

I’m porting a multiple process application from QNX4 to Neutrino… I’m
using the porting docs from the QNX folks, and also Mr. Krten’s very
useful “Getting Started…” book.

I chose the manager/worker, “report for work” architecture, using the
Send/Reply behavior.

In my QNX4 app, I use the “name locate” strategy to locate the manager
from my workers. Mr. Krten covers this, and indicates an upgrade path,
but then asks why not do it the Neutrino way, and convert the server to
a resource manager? Always wanting to modernize, I looked into this,
and see how nice open() is for locating the resource manager. But using
the read()/write() framework for interprocess communication and
synchronization seems to throw out the message passing framework that
QNX is famous for.

Now, I know that under the hood, it’s all message passing, but on the
surface of it, the read/write framework seems completely
divorced from a send/receive framework. Is this so? Can a
report-for-work model fit into the resource manager framework? Can I
have my workers locate the manager in a non-deprecated way?

name_attach() and name_open() are supported for QNX6, and are the
closed model to replacing the QNX4 name location mechanism.

Going with a resource manager does gain some things – the
fact that it looks like a file system can have some real
advantages, and the “known” open/read/write interface can
too.

But, if the model doesn’t buy you much in YOUR design, I
personally wouldn’t suggest trying to shoe-horn your particular
application into that model.

BTW, you can do a resource manager that clients address by:

fd = open()
MsgSend(fd,…)

-David

QNX Training Services
http://www.qnx.com/support/training/
Please followup in this newsgroup if you have further questions.