You are making it harder than it is.
There have been two major possibilities discussed as far as a 32-bit pid:
1 The 32-bit pid is constructed of a 16-bit pid and a 16-bit "other"
that might include tid or some clustering information.
The discussion indicated that other applications (Beowolf clusters) were
using the high bits of the pid to indicate a machine number, and Linus
responded that it would be perfectly fine to store the thread ID in a
separate variable and have a "gettid" function which returned it. Given
the POSIX kill semantics, it's probably better that way anyway.
- Ted