distribution features in QNX

Any ideas ? Found this posting outside of inn.qnx.com

Armin


Hello.

I am wondering about the distribution features in QNX and more exactly
about what POSIX features can be distributed in versions 6.x.
Can a QNX process:

  • Access remote devices and files thru local (or universal) pathnames?
  • Open or create such remote resources exclusively?
  • Lock files on remotely-mounted filesystems?
    If yes, are such locks:
  • Advisory?
  • Mandatory?
  • Spawn a process on another node?
    If yes, can this process:
  • Inherit device-type file descriptors?
  • Inherit normal files?
    If inheriting files:
  • Share the current offset inside the file?
  • Manage the “append” mode when writing to files?
  • Debug remote processes?
  • Fork oneself to another node?
  • Migrate oneself to another node?
  • Create network visible synchronization objects?
    Specifically:
  • Distributed binary mutexes?
  • Distributed semaphores?
  • Distributed message queues?
  • Distributed shared memory regions?
  • Create a thread which runs on another node?
  • Migrate threads to other nodes?
  • Do anything from the above automatically, according to the resource
    usage patterns of threads or processes (load balancing)?

Thanks.

  • Access remote devices and files thru local (or universal) pathnames?

Yes. Qnet allows access to files/devices via /net//.

  • Open or create such remote resources exclusively?

Yes, it is no different to the remote side if the opener is local or remote.

  • Lock files on remotely-mounted filesystems?

I don’t belive that system-wide file locking is functional right now.

  • Spawn a process on another node?

Yes. There is a structure passed into spawn() where you can set the
flag SPAWN_SETND and then fille in the nd member with the node you want
to spawn the process on. If you want it to be rooted on the remote node
you can use chroot("/net/machine/").

If yes, can this process:

  • Inherit device-type file descriptors?
  • Inherit normal files?
    If inheriting files:
  • Share the current offset inside the file?
  • Manage the “append” mode when writing to files?

Yes to all.

  • Debug remote processes?

Yes, using pdebug.

  • Fork oneself to another node?

No.

  • Migrate oneself to another node?
  • Migrate threads to other nodes?
  • Create a thread which runs on another node?

No.

  • Create network visible synchronization objects?
    Specifically:
  • Distributed binary mutexes?
  • Distributed semaphores?
  • Distributed message queues?
  • Distributed shared memory regions?

I belive you can use POSIX mq’s and sem’s over the network. There
isn’t anything for doing distributed shared memory.

  • Do anything from the above automatically, according to the resource
    usage patterns of threads or processes (load balancing)?

No.

chris

\

Chris McKillop <cdm@qnx.com> “The faster I go, the behinder I get.”
Software Engineer, QSSL – Lewis Carroll –
http://qnx.wox.org/