On Wed, 2009-04-01 at 17:16 +0200, Ingo Molnar wrote:
> * Subrata Modak <[email protected]> wrote:
> 
> > Hi Ingo,
> > 
> > I picked up this simple testcases written by you from:
> > 
> > http://lkml.org/lkml/2008/12/5/17,
> > 
> > If you do not have any issue(s), we would like to include the same
> > in LTP. The following patch does exactly that.
> > 
> > May i request you to kindly let us know if you are developing any
> > test case(s) for any kernel feature in future. Then kindly do,
> > 
> > Cc: Subrata Modak <[email protected]>,
> > Cc: ltp-list <[email protected]>,
> > Ported-To-And-Tested-On-LTP-By: Subrata Modak <[email protected]>,
> 
> Please be advised that the syscall ABI is still under development 
> and may change without notice. Aside that caveat, no objections from 
> me!

Ok. Thanks.

Regards--
Subrata

> 
>       Ingo
> 
> > ---
> > 
> > --- ltp-full-20090331.orig/runalltests.sh   2009-04-01 17:35:09.000000000 
> > +0530
> > +++ ltp-full-20090331/runalltests.sh        2009-04-01 17:51:42.000000000 
> > +0530
> > @@ -197,6 +197,9 @@ export RUN_CONTROLLER_AREA_NETWORK_TESTS
> >  ## as both of them cannot be tested in the same running kernel
> >  export RUN_SMACK_SECURITY_TESTS=0
> >  
> > +##Set this to 1 if you wish to run the Basic PERFORMANCE COUNTER tests
> > +export RUN_PERFORMANCE_COUNTERS_TESTS=0
> > +
> >  export LTP_VERSION=`./runltp -e`
> >  export TEST_START_TIME=`date +"%Y_%b_%d-%Hh_%Mm_%Ss"`
> >  export HARDWARE_TYPE=$(uname -i)
> > @@ -538,3 +541,13 @@ then
> >  fi
> >  ## END => Test Series 28                               ##
> >  
> > +## The next one i plan to run the PERFORMANCE COUNTERS tests
> > +## START => Test Series 29                             ##
> > +if [ $RUN_PERFORMANCE_COUNTERS_TESTS -eq 1 ]
> > +then
> > +     (cd $LTPROOT/testcases/kernel/performance_counters; make && make 
> > install)
> > +     ./runltp -f perfcounters
> > +fi
> > +## END => Test Series 29                               ##
> > +
> > +
> > --- ltp-full-20090331.orig/runtest/perfcounters     1970-01-01 
> > 05:30:00.000000000 +0530
> > +++ ltp-full-20090331/runtest/perfcounters  2009-04-01 17:48:30.000000000 
> > +0530
> > @@ -0,0 +1,4 @@
> > +# Test some Basic Performance Counters
> > +
> > +performance_counter01 performance_counter01
> > +
> > --- ltp-full-20090331.orig/testcases/kernel/performance_counters/Makefile   
> > 1970-01-01 05:30:00.000000000 +0530
> > +++ ltp-full-20090331/testcases/kernel/performance_counters/Makefile        
> > 2009-04-01 17:45:40.000000000 +0530
> > @@ -0,0 +1,31 @@
> > +#
> > +#  Copyright (c) International Business Machines  Corp., 2009
> > +#
> > +#  This program is free software;  you can redistribute it and/or modify
> > +#  it under the terms of the GNU General Public License as published by
> > +#  the Free Software Foundation; either version 2 of the License, or
> > +#  (at your option) any later version.
> > +#
> > +#  This program 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 General Public License for more details.
> > +#
> > +#  You should have received a copy of the GNU General Public License
> > +#  along with this program;  if not, write to the Free Software
> > +#  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  
> > USA
> > +#
> > +
> > +CFLAGS += -I../../../include -Wall
> > +LDLIBS += -L../../../lib -lltp
> > +
> > +SRCS    = $(wildcard *.c)
> > +TARGETS = $(patsubst %.c,%,$(SRCS))
> > +
> > +all: $(TARGETS)
> > +
> > +install:
> > +   @set -e; for i in $(TARGETS); do ln -f $$i ../../bin/$$i ; done
> > +
> > +clean:
> > +   rm -f $(TARGETS)
> > diff -uprN 
> > ltp-full-20090331.orig/testcases/kernel/performance_counters/performance_counter01.c
> >  
> > ltp-full-20090331/testcases/kernel/performance_counters/performance_counter01.c
> > --- 
> > ltp-full-20090331.orig/testcases/kernel/performance_counters/performance_counter01.c
> >     1970-01-01 05:30:00.000000000 +0530
> > +++ 
> > ltp-full-20090331/testcases/kernel/performance_counters/performance_counter01.c
> >  2009-04-01 17:38:05.000000000 +0530
> > @@ -0,0 +1,98 @@
> > +/******************************************************************************/
> > +/*                                                                         
> >    */
> > +/* Ingo Molnar <[email protected]>, 2009                                       
> >       */
> > +/*                                                                         
> >    */
> > +/* This program is free software;  you can redistribute it and/or modify   
> >    */
> > +/* it under the terms of the GNU General Public License as published by    
> >    */
> > +/* the Free Software Foundation; either version 2 of the License, or       
> >    */
> > +/* (at your option) any later version.                                     
> >    */
> > +/*                                                                         
> >    */
> > +/* This program 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 General Public License for more details.                        
> >    */
> > +/*                                                                         
> >    */
> > +/* You should have received a copy of the GNU General Public License       
> >    */
> > +/* along with this program;  if not, write to the Free Software            
> >    */
> > +/* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 
> >    */
> > +/*                                                                         
> >    */
> > +/******************************************************************************/
> > +
> > +/*
> > + * Very simple performance counter testcase.
> > + * Picked up from: http://lkml.org/lkml/2008/12/5/17
> > + */
> > +#include <sys/syscall.h>
> > +#include <sys/types.h>
> > +#include <sys/ioctl.h>
> > +#include <sys/stat.h>
> > +#include <sys/time.h>
> > +#include <sys/uio.h>
> > +#include <linux/unistd.h>
> > +
> > +#include <assert.h>
> > +#include <unistd.h>
> > +#include <stdlib.h>
> > +#include <unistd.h>
> > +#include <string.h>
> > +#include <stdio.h>
> > +#include <fcntl.h>
> > +
> > +/* Harness Specific Include Files. */
> > +#include "test.h"
> > +#include "usctest.h"
> > +
> > +#ifdef __x86_64__
> > +# define __NR_perf_counter_open    295
> > +#endif
> > +
> > +#ifdef __i386__
> > +# define __NR_perf_counter_open 333
> > +#endif
> > +
> > +/* Extern Global Variables */
> > +extern int  Tst_count;               /* counter for tst_xxx routines.      
> >    */
> > +extern char *TESTDIR;                /* temporary dir created by 
> > tst_tmpdir() */
> > +/* Global Variables */
> > +char *TCID     = "performance_counter01"; /* test program identifier.      
> >     */
> > +int  TST_TOTAL = 1; 
> > +
> > +int perf_counter_open(int          hw_event_type,
> > +                      unsigned int hw_event_period,
> > +                      unsigned int record_type,
> > +                      pid_t                pid,
> > +                      int          cpu)
> > +{
> > +   return syscall(__NR_perf_counter_open, hw_event_type, hw_event_period,
> > +                   record_type, pid, cpu);
> > +}
> > +
> > +enum hw_event_types {
> > +   PERF_COUNT_CYCLES,
> > +   PERF_COUNT_INSTRUCTIONS,
> > +   PERF_COUNT_CACHE_REFERENCES,
> > +   PERF_COUNT_CACHE_MISSES,
> > +   PERF_COUNT_BRANCH_INSTRUCTIONS,
> > +   PERF_COUNT_BRANCH_MISSES,
> > +};
> > +
> > +int main(void) {
> > +   unsigned long long count1, count2;
> > +   int fd1, fd2, ret;
> > +   fd1 = perf_counter_open(PERF_COUNT_INSTRUCTIONS, 0, 0, 0, -1);
> > +   assert(fd1 >= 0);
> > +   fd2 = perf_counter_open(PERF_COUNT_CACHE_MISSES, 0, 0, 0, -1);
> > +   assert(fd1 >= 0);
> > +
> > +   for (;;) {
> > +           ret = read(fd1, &count1, sizeof(count1));
> > +           assert(ret == 8);
> > +           ret = read(fd2, &count2, sizeof(count2));
> > +           assert(ret == 8);
> > +           printf("counter1 value: %Ld instructions\n", count1);
> > +           printf("counter2 value: %Ld cachemisses\n",  count2);
> > +           sleep(1);
> > +   }
> > +   return 0;
> > +}
> > +
> > 
> > ---
> > Regards--
> > Subrata


------------------------------------------------------------------------------
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to