diff options
Diffstat (limited to 'generic')
-rw-r--r-- | generic/perfos.c | 137 | ||||
-rw-r--r-- | generic/perfos.h | 120 |
2 files changed, 104 insertions, 153 deletions
diff --git a/generic/perfos.c b/generic/perfos.c index 1b88255..f2f1d05 100644 --- a/generic/perfos.c +++ b/generic/perfos.c @@ -1,84 +1,46 @@ /* - ********************************************************************************** - * - * Project : Imagine - * File : perfos.c - * Version : $Id$ - * Author : Patrick LECOANET - * Created On : - * Purpose : Implementation of perf. - * - ********************************************************************************** - */ - -/* - *----------------- Distribution and Copyright -------------------------- - * - * This software is copyright by the CENA/DGAC/FRANCE - * All rights reserved. - * - * No part of the material protected by this copyright notice - * may be reproduced or utilized for commercial use in any form - * without written permission of the copyright owner. + * perfos.c -- Perfos modules. * - * It may be reproduced or utilized for R&D use in Non Profit - * Organization. + * Authors : Patrick Lecoanet. + * Creation date : * - *----------------------------------------------------------------------- + * $Id$ */ - /* - *----------------- Disclaimer ------------------------------------------ + * Copyright (c) 1993 - 2000 CENA, Patrick Lecoanet -- * - * This software and its documentation are provided "AS IS" and - * without any expressed or implied warranties whatsoever. - * No warranties as to performance, merchantability, or fitness - * for a particular purpose exist. + * This code is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. * - * Because of the diversity of conditions and hardware under - * which this software may be used, no warranty of fitness for - * a particular purpose is offered. The user is advised to - * test the software thoroughly before relying on it. The user - * must assume the entire risk and liability of using this - * software. + * This code is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. * - * In no event shall any person or organization of people be - * held responsible for any direct, indirect, consequential - * or inconsequential damages or lost profits. + * You should have received a copy of the GNU Library General Public + * License along with this code; if not, write to the Free + * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - *----------------------------------------------------------------------- */ -/* - ********************************************************************************** - * - * Incuded files. - * - ********************************************************************************** - */ - #include "perfos.h" #include "List.h" +#include "Types.h" +#include <X11/Xutil.h> -/* - ********************************************************************************** - * - * Constants. - * - ********************************************************************************** - */ static const char rcsid[] = "$Id$"; - - -#ifdef PERFOS +static const char compile_id[]="$Compile: " __FILE__ " " __DATE__ " " __TIME__ " $"; static ZnList Chronos = NULL; + /* ********************************************************************************** * @@ -280,7 +242,7 @@ PrintChronos(void) chrs = (Chrono *) ZnListArray(Chronos); for (i = 0; i < cnt; i++) { if (chrs[i]->actions != 0) { - printf("%s : %d ms on %d times\n", + printf("%s : %ld ms on %d times\n", chrs[i]->message, chrs[i]->total_delay * 10 / chrs[i]->actions, chrs[i]->actions); @@ -292,21 +254,48 @@ PrintChronos(void) /* ********************************************************************************** * - * ResetChronos - Reset all chronos registered so far. + * GetChrono - Return the number of runs and the total time of the Chrono. * ********************************************************************************** */ void -RazChronos(void) +GetChrono(Chrono chrono, + long *time, + int *actions) +{ + if (time) { + *time = chrono->total_delay*10; + } + if (actions) { + *actions = chrono->actions; + } +} + + +/* + ********************************************************************************** + * + * ResetChronos - Reset all chronos or only the specified. + * + ********************************************************************************** + */ +void +ResetChronos(Chrono chrono) { int i, cnt; Chrono *chrs; - cnt = ZnListSize(Chronos); - chrs = (Chrono *) ZnListArray(Chronos); - for (i = 0; i < cnt; i++) { - chrs[i]->actions = 0; - chrs[i]->total_delay = 0; + if (chrono) { + chrono->actions = 0; + chrono->total_delay = 0; + } + else { + cnt = ZnListSize(Chronos); + chrs = (Chrono *) ZnListArray(Chronos); + for (i = 0; i < cnt; i++) { + chrs[i]->actions = 0; + chrs[i]->total_delay = 0; + } } } @@ -328,7 +317,7 @@ NewChrono(char *message) Chronos = ZnListNew(8, sizeof(Chrono)); } - new = (Chrono) malloc(sizeof(ChronoRec)); + new = (Chrono) ZnMalloc(sizeof(ChronoRec)); new->actions = 0; new->total_delay = 0; new->message = message; @@ -348,9 +337,15 @@ NewChrono(char *message) void FreeChrono(Chrono chrono) { - free(chrono); + int i; + Chrono *chrs = ZnListArray(Chronos); + + ZnFree(chrono); - ZnListDelete(Chronos, ZnListHead, &chrono); + for (i = ZnListSize(Chronos)-1; i >= 0; i--) { + if (chrs[i] == chrono) { + ZnListDelete(Chronos, i); + break; + } + } } - -#endif /* PERFOS */ diff --git a/generic/perfos.h b/generic/perfos.h index 74df033..9e5627c 100644 --- a/generic/perfos.h +++ b/generic/perfos.h @@ -1,57 +1,32 @@ /* - *----------------------------------------------------------------------- - *----------------------------------------------------------------------- - * - * File: perfos.h - * - * Project: Hegias - * - * Abstract: Header for perf module. - * - *----------------------------------------------------------------------- - *----------------------------------------------------------------------- - */ - - -/* - *----------------- Distribution and Copyright -------------------------- - * - * This software is copyright by the CENA/DGAC/FRANCE - * All rights reserved. - * - * No part of the material protected by this copyright notice - * may be reproduced or utilized for commercial use in any form - * without written permission of the copyright owner. + * perfos.h -- Header for perf module. * - * It may be reproduced or utilized for R&D use in Non Profit - * Organization. + * Authors : Patrick Lecoanet. + * Creation date : * - *----------------------------------------------------------------------- + * $Id$ */ - /* - *----------------- Disclaimer ------------------------------------------ + * Copyright (c) 1996 2000 CENA, Patrick Lecoanet -- * - * This software and its documentation are provided "AS IS" and - * without any expressed or implied warranties whatsoever. - * No warranties as to performance, merchantability, or fitness - * for a particular purpose exist. + * This code is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. * - * Because of the diversity of conditions and hardware under - * which this software may be used, no warranty of fitness for - * a particular purpose is offered. The user is advised to - * test the software thoroughly before relying on it. The user - * must assume the entire risk and liability of using this - * software. + * This code is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. * - * In no event shall any person or organization of people be - * held responsible for any direct, indirect, consequential - * or inconsequential damages or lost profits. + * You should have received a copy of the GNU Library General Public + * License along with this code; if not, write to the Free + * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - *----------------------------------------------------------------------- */ + #ifndef _perfos_h #define _perfos_h @@ -59,15 +34,6 @@ extern "C" { #endif - -/* - *----------------------------------------------------------------------- - * - * Included files. - * - *----------------------------------------------------------------------- - */ - #include <stdio.h> #include <math.h> #include <sys/types.h> @@ -75,37 +41,27 @@ extern "C" { #include <sys/times.h> #include <X11/Xlib.h> - -typedef struct -{ - long current_correction; - long current_delay; - long total_delay; - int actions; - char *message; -} ChronoRec, *Chrono; - - - -/* - *----------------------------------------------------------------------- - * - * Prototypes for exported functions. - * - *----------------------------------------------------------------------- - */ - -void XStartChrono(Chrono /* chrono */, Display */* display */, Drawable /* window */); -void XStopChrono(Chrono /* chrono */, Display */* display */, Drawable /* window */); -void StartChrono(Chrono /* chrono */); -void StopChrono(Chrono /* chrono */); -void StartUCChrono(Chrono /* chrono */); -void StopUCChrono(Chrono /* chrono */); -Chrono NewChrono(char */* message */); -void FreeChrono(Chrono /* chrono */); -void PrintChronos(void); -void RazChronos(void); - + typedef struct + { + long current_correction; + long current_delay; + long total_delay; + int actions; + char *message; + } ChronoRec, *Chrono; + + + void XStartChrono(Chrono /*chrono*/, Display */*dpy*/, Drawable /*win*/); + void XStopChrono(Chrono /*chrono*/, Display */*dpy*/, Drawable /*win*/); + void StartChrono(Chrono /*chrono*/); + void StopChrono(Chrono /*chrono*/); + void StartUCChrono(Chrono /*chrono*/); + void StopUCChrono(Chrono /*chrono*/); + Chrono NewChrono(char */*message*/); + void FreeChrono(Chrono /*chrono*/); + void PrintChronos(void); + void GetChrono(Chrono /*chrono*/, long */*time*/, int */*actions*/); + void ResetChronos(Chrono /*chrono*/); #ifdef __CPLUSPLUS__ } |