Hi - I'm new to TBB though I've done an amount of reading on it and have got the O'Reilly book on TBB so I think I "get it" in principle!
We build our (threaded) application on 3 platforms - Windows (VC++7), Solaris 2.10 (OneStudio8 C++ v5.5) and HP-UX 11.23 (PA-Risc & Itanium, HP aC++).
Other threads in this forum suggest Solaris support is present, though I can't see it stated formally anywhere.
But there's no suggestion that HP-UX is supported.
We might be interested in attempting an HP-UX port, but would need some understanding of the effort involved beforehand. I'm interested in hearing from those involved in the Solaris port for example... how much effort did it take to get it working I wonder?
Thanks Raf. Your reply made me realise I need to dig a bit deeper so I know the right questions. I "get it" only from the point of view of a theoretical TBB user. I suspect there's rather more to learn in order to port TBB.... :-)
The porting instructions suggest that you could start with a minimal implementation (in include/tbb/machine) and extend it with inline assembly code to improve performance. From your answer above, it sounds like Ishould be able to get the basic TBB up and running in"a day or so", and the assembly code extensions would take me "a few days".
Have I understood correctly so far?
The only other thing that confused me was that the porting instructions suggest that a new file in include/tbb/machine is required. But there's none present for SunOS.
I think you won't get anywhere without at least about the amount of assembler code that mac_ppc.h provides for the PowerPC (tbb_machine.h tests for 3 macros, but if you don't define __TBB_fence_for_acquire and __TBB_fence_for_release you're depending on a misguided interpretation of "volatile" semantics that is not provided by all compilers), if you have a 64-bit data bus and you trust your compiler to do the obvious (I like to err on the pedantic side and would use much more assembler code, and even then I have lingering doubts, e.g., whether the trick to load and store 8-byte values on x86 really works on all hardware versions). Apparently you don't need to worry about alignment issues, which are taken care of for you and unit tested as well.
Those time estimates are obviously very rough, and depend on how much you already know (I didn't really look at the instructions very carefully) and how much you get distracted (you might guess that I do), but a few hours (that would be impressive...) to a few days should be enough.
(Added) Some information to save you some time with Solaris (this works with SXDE 1/08 on x86) until there are instructions (I didn't find any): add /usr/sfw/bin to your PATH (to find gtar, gmake and g++ during the build), unpack the distribution file (nothing earlier than tbb20_20080402oss_src) using gtar (because of how GNU tar deals with long file names), change suncc to gcc in build/SunOS.inc (twice, for native_compiler and compiler, on consecutive lines), and then use gmake to build.