Shorter version of question:
Which C header contains the macro that corresponds to the machine architecture of the system (e.g., __x86_64__
, __ia64__
, __mips__
?)
Longer version of question:
I'd like to run the ganglia monitoring tools on a Tilera-based system that runs Linux.
Ganglia doesn't currently have support for Tilera. To get this to work, I ned to modify a C function called machine_type_func that returns the machine architecture. The body of this function is determined at compile-time, it looks like this:
g_val_t
machine_type_func ( void )
{
g_val_t val;
#ifdef __i386__
snprintf(val.str, MAX_G_STRING_SIZE, "x86");
#endif
#ifdef __x86_64__
snprintf(val.str, MAX_G_STRING_SIZE, "x86_64");
#endif
...
return val;
}
I need to add the appropriate line for Tilera, but I don't know the name of the macro that specifies a Tilera-based system. I'm guessing this macro is defined in one of the standard Linux headers, but I don't know which one to look in.
Best Answer
No header file defines it - those macros are predefined by the compiler. To find out the full list of predefined macros do this:
Then look through the results for likely macros.