Both are userspace. The Linux header gives unsigned long
so that should be used. Since as I said, the interger type actually doesn’t matter that much for any architectures, the linux signature is basically an extension to the posix signature.
P.S. On the kernel side, everything is passed as long in completely different way.