Older devkitARM toolchains incorrectly prevent _pthreadtypes.h from being included. Newer versions include it.
In order to make a version of ctr_pthread.h that works under both old and new toolchains, the typedefs are guarded by a define in _pthreadtypes.h that is only active if the other types are defined.
I've also added casts in order to make sure this compiles correctly with the standard pthread.h type definitions.