14038Sbinkertn@umich.edu/* 24038Sbinkertn@umich.edu * Copyright (c) 2002-2005 The Regents of The University of Michigan 34038Sbinkertn@umich.edu * All rights reserved. 44038Sbinkertn@umich.edu * 54038Sbinkertn@umich.edu * Redistribution and use in source and binary forms, with or without 64038Sbinkertn@umich.edu * modification, are permitted provided that the following conditions are 74038Sbinkertn@umich.edu * met: redistributions of source code must retain the above copyright 84038Sbinkertn@umich.edu * notice, this list of conditions and the following disclaimer; 94038Sbinkertn@umich.edu * redistributions in binary form must reproduce the above copyright 104038Sbinkertn@umich.edu * notice, this list of conditions and the following disclaimer in the 114038Sbinkertn@umich.edu * documentation and/or other materials provided with the distribution; 124038Sbinkertn@umich.edu * neither the name of the copyright holders nor the names of its 134038Sbinkertn@umich.edu * contributors may be used to endorse or promote products derived from 144038Sbinkertn@umich.edu * this software without specific prior written permission. 154038Sbinkertn@umich.edu * 164038Sbinkertn@umich.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 174038Sbinkertn@umich.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 184038Sbinkertn@umich.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 194038Sbinkertn@umich.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 204038Sbinkertn@umich.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 214038Sbinkertn@umich.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 224038Sbinkertn@umich.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 234038Sbinkertn@umich.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 244038Sbinkertn@umich.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 254038Sbinkertn@umich.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 264038Sbinkertn@umich.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 274038Sbinkertn@umich.edu * 284038Sbinkertn@umich.edu * Authors: Nathan Binkert 294038Sbinkertn@umich.edu */ 304038Sbinkertn@umich.edu 314038Sbinkertn@umich.edu#include <iostream> 324038Sbinkertn@umich.edu#include <list> 338229Snate@binkert.org#include <sstream> 344038Sbinkertn@umich.edu#include <string> 354038Sbinkertn@umich.edu 364038Sbinkertn@umich.edu#include "base/cprintf.hh" 374038Sbinkertn@umich.edu 384038Sbinkertn@umich.eduusing namespace std; 394038Sbinkertn@umich.edu 404038Sbinkertn@umich.eduvolatile int stop = false; 414038Sbinkertn@umich.edu 424038Sbinkertn@umich.eduvoid 434038Sbinkertn@umich.eduhandle_alarm(int signal) 444038Sbinkertn@umich.edu{ 454038Sbinkertn@umich.edu stop = true; 464038Sbinkertn@umich.edu} 474038Sbinkertn@umich.edu 484038Sbinkertn@umich.eduvoid 494038Sbinkertn@umich.edudo_test(int seconds) 504038Sbinkertn@umich.edu{ 514038Sbinkertn@umich.edu stop = false; 524038Sbinkertn@umich.edu alarm(seconds); 534038Sbinkertn@umich.edu} 544038Sbinkertn@umich.edu 554038Sbinkertn@umich.eduint 564038Sbinkertn@umich.edumain() 574038Sbinkertn@umich.edu{ 584038Sbinkertn@umich.edu stringstream result; 594038Sbinkertn@umich.edu int iterations = 0; 604038Sbinkertn@umich.edu 614038Sbinkertn@umich.edu signal(SIGALRM, handle_alarm); 624038Sbinkertn@umich.edu 634038Sbinkertn@umich.edu do_test(10); 644038Sbinkertn@umich.edu while (!stop) { 654038Sbinkertn@umich.edu stringstream result; 664038Sbinkertn@umich.edu ccprintf(result, 674038Sbinkertn@umich.edu "this is a %s of %d iterations %3.2f %#x\n", 684038Sbinkertn@umich.edu "test", iterations, 51.934, &result); 694038Sbinkertn@umich.edu 704038Sbinkertn@umich.edu iterations += 1; 714038Sbinkertn@umich.edu } 724038Sbinkertn@umich.edu 734038Sbinkertn@umich.edu cprintf("completed %d iterations of ccprintf in 10s, %f iterations/s\n", 744038Sbinkertn@umich.edu iterations, iterations / 10.0); 754038Sbinkertn@umich.edu 764038Sbinkertn@umich.edu do_test(10); 774038Sbinkertn@umich.edu while (!stop) { 784038Sbinkertn@umich.edu char result[1024]; 794038Sbinkertn@umich.edu sprintf(result, 804038Sbinkertn@umich.edu "this is a %s of %d iterations %3.2f %#x\n", 814038Sbinkertn@umich.edu "test", iterations, 51.934, &result); 824038Sbinkertn@umich.edu 834038Sbinkertn@umich.edu iterations += 1; 844038Sbinkertn@umich.edu } 854038Sbinkertn@umich.edu 864038Sbinkertn@umich.edu cprintf("completed %d iterations of sprintf in 10s, %f iterations/s\n", 874038Sbinkertn@umich.edu iterations, iterations / 10.0); 884038Sbinkertn@umich.edu 894038Sbinkertn@umich.edu return 0; 904038Sbinkertn@umich.edu} 91