More thoughts/observations on QNX

I just posted something in which I referred to drivers I wrote and to this day maintain for a multi-port serial I/O product called the “RocketPort”.I started this in 1995 when QNX4 was the common flavour of QNX. Neutrino (QNX6) was just getting started. The following is to state some history but also illustrate how convenient it has been to work with such a stable OS architecture. For simple minds such as mine it has been a real boon! :slight_smile:

Eventually QNX6.0 was released (I forget which year) and I was asked to produce a RocketPort driver for it. As the specific QNX6 architecture was completely different to that of QNX4 (the overall architecture was very similar however) a new driver was required from the ground up. So I started from scratch (as did all other driver developers).

Eventually we got to QNX 6.3.2. The original 6.0 driver worked with 6.3.2 but had a few bugs so these were fixed and the driver was re-built and re-released.

The point I’m trying to make is this: The original 6.0 RocketPort driver built without modification under 6.3.2 and worked. The 6.3.2 driver worked through 6.4, 6.5, and 6.6 - a period of many years!

So stable has the underlying Neutrino architecture been (through 6.x and now 7.x - 20+ years!) that when I was asked to produce a driver for 7.0 last year, it basically ported across. So the 7.0 driver is fundamentally the same driver that was released some 17 years ago!

The word “ported” is not really correct. It was more a “migration” of the code. I did have to make a few changes, mainly in the PCI area and had to remove interrupt driven capabilities, but in no way did I have to redesign the driver or litter the code with #define’s to tell the compiler to compile for this kernal or that kernel or whatever. Mainly because the driver was really just a special kind of application and because the underlying architecture of the QNX kernel had not changed, the driver didn’t have to either.

I did have to alter a few things to cater for both 32-bit and 64-bit implementations though buit that wasn’t a big deal. And it’s x86 only of course.

I would imagine that the 64-bit 7.0 driver will also work with 7.1. Probably without a re-build also (as was the case through the various 6.x versions). I shall see once I get my hands on 7.1! :slight_smile: