What is the correct way to write code that is conditionally compiled depending on 32/64 bit? I found CONFIG_X86_64 CONFIG_64BIT Do we still support other word sizes? thanks, Tobin.
On Mon, Oct 16, 2017 at 09:37:17PM +1100, Tobin C. Harding wrote:
What is the correct way to write code that is conditionally compiled depending on 32/64 bit?
Not to write code that is dependent on such a thing in the first place :)
I found
CONFIG_X86_64 CONFIG_64BIT
Do we still support other word sizes?
No, but those are not what you should be looking for, it all depends on the architecture and where in the kernel you need to do this (arch specific code, driver, kernel, networking, etc.) Any specific hints on why you think you need this? thanks, greg k-h
On Mon, Oct 16, 2017 at 06:10:53PM +0200, Greg KH wrote:
On Mon, Oct 16, 2017 at 09:37:17PM +1100, Tobin C. Harding wrote:
What is the correct way to write code that is conditionally compiled depending on 32/64 bit?
Not to write code that is dependent on such a thing in the first place :)
I found
CONFIG_X86_64 CONFIG_64BIT
Do we still support other word sizes?
No, but those are not what you should be looking for, it all depends on the architecture and where in the kernel you need to do this (arch specific code, driver, kernel, networking, etc.)
Any specific hints on why you think you need this?
Hashing the kernel pointers. Wanting to call the SipHash functions. We need to call a different function depending on the size of the pointer. u64 siphash_1u64(const u64 a, const siphash_key_t *key); u64 siphash_1u32(const u32 a, const siphash_key_t *key); Jason A. Donenfeld suggested (offered to) add a helper function in siphash, along the lines of siphash_1u() but we still need to know the exact size of the return value (so we can drop half of it if it is 64 bits). We just want a 32 bit identifier returned after hashing the address. thanks, Tobin.
On Tue, 17 Oct 2017 07:36:42 +1100, "Tobin C. Harding" said:
Jason A. Donenfeld suggested (offered to) add a helper function in siphash, along the lines of siphash_1u() but we still need to know the exact size of the return value (so we can drop half of it if it is 64 bits). We just want a 32 bit identifier returned after hashing the address.
Why is truncating to 32 bits needed? Just either use a 32/64 bit value as appropriate for the architecture, or just declare "This is 32 bits regardless" or "this is 64 regardless". What problem are you trying to solve by hashing addresses? (Hint - the two in-kernel users of siphash are net/core/secure_seq.c and net/ipv4/syncookies.c, both of which know how big the hashed value has to be, and the size isn't architecture dependent as it's fixed by the size of a protocol header field)
participants (3)
-
Greg KH -
Tobin C. Harding -
valdis.kletnieks@vt.edu