|
|
/home/brennan/n-sim/OrbisQuartus/server/l4/patches/lwip-ore/include/arch/perf.hGo to the documentation of this file.00001 00006 /* 00007 * Copyright (c) 2001-2003 Swedish Institute of Computer Science. 00008 * All rights reserved. 00009 * 00010 * Redistribution and use in source and binary forms, with or without modification, 00011 * are permitted provided that the following conditions are met: 00012 * 00013 * 1. Redistributions of source code must retain the above copyright notice, 00014 * this list of conditions and the following disclaimer. 00015 * 2. Redistributions in binary form must reproduce the above copyright notice, 00016 * this list of conditions and the following disclaimer in the documentation 00017 * and/or other materials provided with the distribution. 00018 * 3. The name of the author may not be used to endorse or promote products 00019 * derived from this software without specific prior written permission. 00020 * 00021 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED 00022 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 00023 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 00024 * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 00025 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 00026 * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 00027 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 00028 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 00029 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 00030 * OF SUCH DAMAGE. 00031 * 00032 * This file is part of the lwIP TCP/IP stack. 00033 * 00034 * Author: Adam Dunkels <adam@sics.se> 00035 * 00036 */ 00037 #ifndef __ARCH_PERF_H__ 00038 #define __ARCH_PERF_H__ 00039 00040 #include <sys/times.h> 00041 00042 #ifdef PERF 00043 #define PERF_START { \ 00044 unsigned long __c1l, __c1h, __c2l, __c2h; \ 00045 __asm__(".byte 0x0f, 0x31" : "=a" (__c1l), "=d" (__c1h)) 00046 #define PERF_STOP(x) __asm__(".byte 0x0f, 0x31" : "=a" (__c2l), "=d" (__c2h)); \ 00047 perf_print(__c1l, __c1h, __c2l, __c2h, x);} 00048 00049 /*#define PERF_START do { \ 00050 struct tms __perf_start, __perf_end; \ 00051 times(&__perf_start) 00052 #define PERF_STOP(x) times(&__perf_end); \ 00053 perf_print_times(&__perf_start, &__perf_end, x);\ 00054 } while(0)*/ 00055 #else /* PERF */ 00056 #define PERF_START /* null definition */ 00057 #define PERF_STOP(x) /* null definition */ 00058 #endif /* PERF */ 00059 00060 void perf_print(unsigned long c1l, unsigned long c1h, 00061 unsigned long c2l, unsigned long c2h, 00062 char *key); 00063 00064 void perf_print_times(struct tms *start, struct tms *end, char *key); 00065 00066 void perf_init(char *fname); 00067 00068 #endif /* __ARCH_PERF_H__ */ |