This patch implements the OpenMP pinned memory trait for Linux hosts. On other hosts and on devices the trait becomes a no-op (instead of being rejected). The memory is locked via the mlock syscall, which is both the "correct" way to do it on Linux, and a problem because the default ulimit for pinned memory is very small (and most users don't have permission to increase it (much?)). Therefore the code emits a non-fatal warning message if locking fails. Another approach might be to use cudaHostAlloc to allocate the memory in the first place, which bypasses the ulimit somehow, but this would not help non-NVidia users. The tests work on Linux and will xfail on other hosts; neither libgomp nor the test knows how to allocate or query pinned memory elsewhere. The patch applies on top of the text of my previously submitted patches, but does not actually depend on the functionality of those patches. OK for stage 1? I'll commit a backport to OG11 shortly. Andrew