void __func_trace_enter (const char *const function_name,
                         const char *const file_name, int line_number, void **const user_data)
{
    UNREFERENCED_PARAMETER (file_name);
    UNREFERENCED_PARAMETER (line_number);
    UNREFERENCED_PARAMETER (user_data);

    if (mpitrace_on && UF_names_count > 0)
    {
        if (LookForUF (function_name))
        {
            UINT64 ip = get_caller(3);
            TRACE_EVENTANDCOUNTERS (TIME, USRFUNC_EV, ip, tracejant_hwc_uf);
        }
    }
}
int main(int argc, char **argv)
{
	unsigned long long t1, t2;
	struct timespec start, stop;
	int n = 1000000, i;
	Extrae_init();
	clock_gettime (CLOCK_MONOTONIC, &start);
	for (i = 0; i < n; i++)
		get_caller (2);
	clock_gettime (CLOCK_MONOTONIC, &stop);
	t1 = start.tv_nsec;
	t1 += start.tv_sec * 1000000000;
	t2 = stop.tv_nsec;
	t2 += stop.tv_sec * 1000000000;
	printf ("RESULT : Extrae_eventandcounters() %Lu ns\n", (t2 - t1) / n);
	Extrae_fini();
}