173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/*
273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * dspbridge/src/api/linux/Timer.c
373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *
473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * DSP-BIOS Bridge driver support functions for TI OMAP processors.
573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *
673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Copyright (C) 2007 Texas Instruments, Inc.
773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *
873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * This program is free software; you can redistribute it and/or modify it
973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * under the terms of the GNU Lesser General Public License as published
1073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * by the Free Software Foundation version 2.1 of the License.
1173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *
1273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * This program is distributed .as is. WITHOUT ANY WARRANTY of any kind,
1373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * whether express or implied; without even the implied warranty of
1473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
1573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Lesser General Public License for more details.
1673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */
1773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
1873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
1973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/*
2073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  ======== Timer.c ========
2173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *  Description:
2273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *      Source for API time measurements. For Debugging only
2373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *
2473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *
2573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! Revision History
2673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! =================
2773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 01-May-2008 RG: Initial version
2873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *
2973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */
3073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
3173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/*  ----------------------------------- Host OS */
3273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#include <perfutils.h>
3373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
3473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
3573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/*
3673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * ======== StartTimer ========
3773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */
3873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz ZavinINT getTimeStamp(struct timeval *tv)
3973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin{
4073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	INT Result = 0;
4173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	struct timezone tz;
4273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	Result = gettimeofday(tv, &tz);
4373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	if (Result != 0)
4473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		fprintf(stdout, "FAIL: gettimeofday is failed\n");
4573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
4673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	return Result;
4773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin}
4873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/*
4973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * ======== PrintStatisticsStartTimer ========
5073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */
5173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavinvoid PrintStatistics(struct timeval *tv_beg, struct timeval *tv_end,
5273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin			char *ModuleName, INT BufferSize)
5373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin{
5473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	ULONG   totalTimeuSec = 0;
5573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
5673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	if (tv_end->tv_usec < tv_beg->tv_usec) {
5773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		tv_end->tv_usec += 1000000;
5873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		tv_end->tv_sec  -= 1;
5973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	}
6073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
6173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	totalTimeuSec = (tv_end->tv_sec - tv_beg->tv_sec) * 1000000 +
6273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin			(tv_end->tv_usec - tv_beg->tv_usec);
6373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	fprintf(stdout, "LOG: *********BEGIN STATISTICS************"
6473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin				"********************\n");
6573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	fprintf(stdout, "LOG: MODULE: %s \n", ModuleName);
6673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	if (BufferSize != 0)
6773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin		fprintf(stdout, "LOG: BufferSize: 0x%x \n", BufferSize);
6873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
6973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	fprintf(stdout, "LOG: RESULT: %lu\n", totalTimeuSec);
7073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin	fprintf(stdout, "LOG: **********END STATISTICS*************"
7173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin				"******************\n");
7273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin
7373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin}
74