resource manager

hello guys!!!

       there is a small problem ..i am not able to figure it out what is the difference between QNX DEVICE DRIVER and QNX RESOURCE MANAGER....
      i have also gone through all the docs availabe but still not clear.
      please help me and if there is any kind of doc available plz let me know ....


The simple answer is… there is no difference.

Ok a little more info:
Device drivers can ce simple applications, they do not need to be resource managers.
A simple io card for example only needs a simple driver.
QNX provide what they call the Resource Manager Framework.
This is a library of functions that makes it a bit easier to write resource managers.
A Resource Manager (in its full form) will regster a name under .dev, e.g. /dev/myDevice
It will provide a message handler to simplify inter process communications.
It will provide facilities for open read write interfaces.
Resource managers are generally only needed when more than one process needs to access the hardware.

The documentation is quite clear on this, it just takes a bit of reading.
Also, look at Rob Krtens book -
He gives a great simple explanation, with sample code.

There is one more layer here. There are also DDK’s (driver development kits) where there is another library between the resource manager library and the code that you write. This additional library implements the nature of a particular class of hardware devices, and relieves the developer of any interaction with the resource manager library (i.e. you simply write the hardware specific parts, and all the rest is done for you).

Example DDKs are:

  • Network Driver DDK
  • Character Driver DDK
  • USB Driver DDK (typically a driver links against this as well as one of the other DDKs)

Quite often even application specific hardware devices can utilize one of the DDKs; for instance a custom backplane shared memory device is an obvious candidate to implement using the network DDK (makes the shared memory look like an ethernet NIC).

Even oddball devices like joint controllers can fit well with something like the character DDK.

If your device doesn’t fit any of the DDKs then yes, the next step is to write directly to the resource manager API.

Only if your device is so unique that only one client could ever reasonably be expected to utilize it should you consider using direct messaging.

Writing a driver as a resource manager (whether directly or by using a DDK), even one that will only be accessed from one process, makes the application source more portable.

THNX everybody now i have a clear picture n can start my real work…