Hi Giuseppe, On Fri, 2009-11-13 at 08:40 +0100, Giuseppe CAVALLARO wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > Sripathi Kodi wrote: > > On Mon, 09 Nov 2009 23:09:16 +0530 > > Subrata Modak <[email protected]> wrote: > > > >> Hi Giuseppe, > >> > >> Thanks for the patch. Meanwhile i did not find the RT guys saying > >> anything about this patch. > >> > >> Gowri/Amrith/Sripathi, > >> > >> Any views on this patch ? > > > > Hi Subrata, > > > > I think separating out the tests that need TSC from the others is > > the right thing to do. In future it may be useful to do something > > similar for atomic_* functions as well. > > > > In my opinion this patch would have been better split into 2 > > parts: one that separates out TSC parts and the other that adds atomic > > functions for SH. That would make changelogs easier to search through > > in future. > > if you like I can resend the patch splitted into two parts. > Let me know.
Yah, Please do so. I will do separate check-ins with separate LOG messages. Regards-- Subrata > Regards, > Peppe > > > Thanks, > > Sripathi. > > > >> Regards-- > >> Subrata > >> > >> ** Also, this fails to apply: > >> patching file testcases/realtime/func/async_handler/async_handler_tsc.c > >> Hunk #1 succeeded at 46 (offset 1 line). > >> Hunk #2 succeeded at 193 (offset 2 lines). > >> patching file testcases/realtime/func/measurement/preempt_timing.c > >> patching file testcases/realtime/func/measurement/rdtsc-latency.c > >> patching file testcases/realtime/include/librttest.h > >> Hunk #2 succeeded at 98 (offset 1 line). > >> Hunk #4 succeeded at 138 (offset 1 line). > >> Hunk #5 succeeded at 337 (offset 8 lines). > >> patching file testcases/realtime/include/libtsc.h > >> --- > >> > >> On Wed, 2009-11-04 at 16:48 +0100, Giuseppe CAVALLARO wrote: > >>> Hoping somebody will find useful it. > >>> > >>> Regards > >>> Peppe > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> differences > >>> between files > >>> attachment > >>> (ltp-full-20090731-sh_RT.patch) > >>> > >>> > >>> [PATCH] compiling realtime tests for SH. > >>> > >>> This patch adds the atomi_add() define for __sh__; > >>> ltp realtime tests seem to show that it works. > >>> > >>> The patch also moves the tsc macros form the librttest.h > >>> to another header file (named libtsc.h). > >>> > >>> Without this I got the following error and no tests were built. > >>> > >>> [snip] > >>> In file included from librttest.c:43: > >>> ../include/librttest.h:127:2: error: #error > >>> ../include/librttest.h:169:2: error: #error > >>> In file included from librttest.c:43: > >>> ../include/librttest.h: In function ‘atomic_add’: > >>> [snip] > >>> > >>> The tsc macros header is only included in the following tests > >>> (thus where necessary): > >>> > >>> o async_handler_tsc.c > >>> o preempt_timing.c > >>> o rdtsc-latency.c > >>> > >>> Note1: instead of touching the make process the patch allows to build > >>> the tests above also for architecture that do not support tsc, yet. > >>> These tests will fail at run-time with ENOTSUP. A warning will > >>> appear while compiling as well. > >>> hmm, I do know if it is the right solution but it's simple and > >>> a good starting point for me. > >>> > >>> Note2: I've just started running this part of the ltp on stlinux > >>> targets so I cannot provide results and I don't know which > >>> tests will fail. > >>> > >>> Note3: realtime tests continues to build and apparently work on i386. > >>> > >>> Signed-off-by: Giuseppe Cavallaro <[email protected]> > >>> > >>> diff -urN > >>> ltp-full-20090731/testcases/realtime.orig/func/async_handler/async_handler_tsc.c > >>> > >>> ltp-full-20090731/testcases/realtime/func/async_handler/async_handler_tsc.c > >>> --- > >>> ltp-full-20090731/testcases/realtime.orig/func/async_handler/async_handler_tsc.c > >>> 2009-11-04 15:55:58.000000000 +0100 > >>> +++ > >>> ltp-full-20090731/testcases/realtime/func/async_handler/async_handler_tsc.c > >>> 2009-11-04 15:39:21.000000000 +0100 > >>> @@ -45,6 +45,7 @@ > >>> #include <pthread.h> > >>> #include <librttest.h> > >>> #include <libstats.h> > >>> +#include <libtsc.h> > >>> > >>> #define HANDLER_PRIO 98 > >>> #define SIGNAL_PRIO 99 > >>> @@ -190,6 +191,11 @@ > >>> int main(int argc, char *argv[]) > >>> { > >>> int signal_id, handler_id; > >>> + > >>> +#ifdef TSC_UNSUPPORTED > >>> + printf("Error: test cannot be executed on an arch wihout > >>> TSC.\n"); > >>> + return ENOTSUP; > >>> +#endif > >>> setup(); > >>> > >>> rt_init("h", parse_args, argc, argv); > >>> diff -urN > >>> ltp-full-20090731/testcases/realtime.orig/func/measurement/preempt_timing.c > >>> ltp-full-20090731/testcases/realtime/func/measurement/preempt_timing.c > >>> --- > >>> ltp-full-20090731/testcases/realtime.orig/func/measurement/preempt_timing.c > >>> 2009-11-04 15:55:58.000000000 +0100 > >>> +++ > >>> ltp-full-20090731/testcases/realtime/func/measurement/preempt_timing.c > >>> 2009-11-04 15:39:26.000000000 +0100 > >>> @@ -52,7 +52,7 @@ > >>> #include <sys/mman.h> > >>> #include <stdint.h> > >>> #include <librttest.h> > >>> - > >>> +#include <libtsc.h> > >>> > >>> #define ITERATIONS 1000000ULL > >>> #define INTERVALS 10 > >>> @@ -86,6 +86,12 @@ > >>> struct sched_param param; > >>> cpu_set_t mask; > >>> int err; > >>> + > >>> +#ifdef TSC_UNSUPPORTED > >>> + printf("Error: test cannot be executed on an arch wihout > >>> TSC.\n"); > >>> + return ENOTSUP; > >>> +#endif > >>> + > >>> max = avg = 0; > >>> min = -1; > >>> setup(); > >>> diff -urN > >>> ltp-full-20090731/testcases/realtime.orig/func/measurement/rdtsc-latency.c > >>> ltp-full-20090731/testcases/realtime/func/measurement/rdtsc-latency.c > >>> --- > >>> ltp-full-20090731/testcases/realtime.orig/func/measurement/rdtsc-latency.c > >>> 2009-11-04 15:55:58.000000000 +0100 > >>> +++ > >>> ltp-full-20090731/testcases/realtime/func/measurement/rdtsc-latency.c > >>> 2009-11-04 15:38:49.000000000 +0100 > >>> @@ -44,6 +44,7 @@ > >>> #include <errno.h> > >>> #include <stdint.h> > >>> #include <librttest.h> > >>> +#include <libtsc.h> > >>> > >>> #define ITERATIONS 1000000 > >>> > >>> @@ -101,6 +102,12 @@ > >>> unsigned long long deltas[ITERATIONS]; > >>> unsigned long long max, min, avg, tsc_a, tsc_b, tsc_period; > >>> struct sched_param param; > >>> + > >>> +#ifdef TSC_UNSUPPORTED > >>> + printf("Error: test cannot be executed on an arch wihout > >>> TSC.\n"); > >>> + return ENOTSUP; > >>> +#endif > >>> + > >>> setup(); > >>> > >>> rt_init("h",parse_args,argc,argv); > >>> diff -urN > >>> ltp-full-20090731/testcases/realtime.orig/include/librttest.h > >>> ltp-full-20090731/testcases/realtime/include/librttest.h > >>> --- > >>> ltp-full-20090731/testcases/realtime.orig/include/librttest.h > >>> 2009-11-04 15:55:58.000000000 +0100 > >>> +++ > >>> ltp-full-20090731/testcases/realtime/include/librttest.h 2009-11-04 > >>> 14:21:22.000000000 +0100 > >>> @@ -36,6 +36,7 @@ > >>> * 2006-May-09: improved command line argument handling > >>> * 2007-Jul-12: Added latency tracing functions -- Josh Triplett > >>> * 2007-Jul-26: Renamed to librttest.h -- Josh Triplett > >>> + * 2009-Nov-4: TSC macros within another header -- Giuseppe > >>> Cavallaro > >>> * > >>> > >>> *****************************************************************************/ > >>> > >>> @@ -96,36 +97,7 @@ > >>> #define thread_quit(T) (((T)->flags) & THREAD_QUIT) > >>> > >>> #define PRINT_BUFFER_SIZE (1024*1024*4) > >>> - > >>> -/* TSC macros */ > >>> #define ULL_MAX 18446744073709551615ULL // (1 << 64) - 1 > >>> -#if defined(__i386__) > >>> -#define rdtscll(val) __asm__ __volatile__("rdtsc" : "=A" (val)) > >>> -#elif defined(__x86_64__) > >>> -#define rdtscll(val) \ > >>> - do { \ > >>> - uint32_t low, high; \ > >>> - __asm__ __volatile__ ("rdtsc" : "=a" (low), > >>> "=d" (high)); \ > >>> - val = (uint64_t)high << 32 | low; \ > >>> - } while(0) > >>> -#elif defined(__powerpc__) > >>> -#if defined(__powerpc64__) /* 64bit version */ > >>> -#define rdtscll(val) \ > >>> - do > >>> { \ > >>> - __asm__ __volatile__ ("mfspr %0, 268" : > >>> "=r" (val)); \ > >>> - } while(0) > >>> -#else /*__powerpc__ 32bit version */ > >>> -#define > >>> rdtscll(val) \ > >>> - do > >>> { \ > >>> - uint32_t tbhi, > >>> tblo ; \ > >>> - __asm__ __volatile__ ("mftbu %0" : > >>> "=r" (tbhi)); \ > >>> - __asm__ __volatile__ ("mftbl %0" : > >>> "=r" (tblo)); \ > >>> - val = 1000 * ((uint64_t) tbhi << 32) | > >>> tblo; \ > >>> - } while(0) > >>> -#endif > >>> -#else > >>> -#error > >>> -#endif > >>> > >>> extern pthread_mutex_t _buffer_mutex; > >>> extern char * _print_buffer; > >>> @@ -135,7 +107,7 @@ > >>> > >>> /* function prototypes */ > >>> > >>> -/* atomic_add - add integer to atomic variable > >>> +/* atomic_add - add integer to atomic variable and returns a value. > >>> * i: integer value to add > >>> * v: pointer of type atomic_t > >>> */ > >>> @@ -165,6 +137,20 @@ > >>> : "cc", "memory"); > >>> > >>> return t; > >>> +#elif defined(__sh__) > >>> + unsigned long t; > >>> + > >>> + __asm__ __volatile__ ( > >>> +"1: movli.l @%2, %0 ! atomic_add_return \n" > >>> +" add %1, %0 \n" > >>> +" movco.l %0, @%2 \n" > >>> +" bf 1b \n" > >>> +" synco \n" > >>> + : "=&z" (t) > >>> + : "r" (i), "r" (&v->counter) > >>> + : "t"); > >>> + > >>> + return t; > >>> #else > >>> #error > >>> #endif > >>> @@ -343,7 +329,6 @@ > >>> */ > >>> int ts_to_nsec(struct timespec *ts, nsec_t *ns); > >>> > >>> -/* return difference in microseconds */ > >>> unsigned long long tsc_minus(unsigned long long tsc_start, unsigned > >>> long long tsc_end); > >>> > >>> /* rt_nanosleep: sleep for ns nanoseconds using clock_nanosleep > >>> diff -urN ltp-full-20090731/testcases/realtime.orig/include/libtsc.h > >>> ltp-full-20090731/testcases/realtime/include/libtsc.h > >>> --- > >>> ltp-full-20090731/testcases/realtime.orig/include/libtsc.h 1970-01-01 > >>> 01:00:00.000000000 +0100 > >>> +++ > >>> ltp-full-20090731/testcases/realtime/include/libtsc.h 2009-11-04 > >>> 15:41:03.000000000 +0100 > >>> @@ -0,0 +1,72 @@ > >>> +/****************************************************************************** > >>> + * > >>> + * Copyright © International Business Machines Corp., 2006-2008 > >>> + * > >>> + * 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 > >>> + * > >>> + * NAME > >>> + * libtsc.h > >>> + * > >>> + * DESCRIPTION > >>> + * > >>> + * USAGE: > >>> + * To be included in some testcases. > >>> + * > >>> + * AUTHOR > >>> + * Darren Hart <[email protected]> > >>> + * Giuseppe Cavallaro <peppe.cavallarost.com> > >>> + * > >>> + * HISTORY > >>> + * It directly comes from the librttest.h (see its HISTORY). > >>> + * > >>> + > >>> *****************************************************************************/ > >>> + > >>> +#undef TSC_UNSUPPORTED > >>> + > >>> +/* TSC macros */ > >>> +#if defined(__i386__) > >>> +#define rdtscll(val) __asm__ __volatile__("rdtsc" : "=A" (val)) > >>> +#elif defined(__x86_64__) > >>> +#define rdtscll(val) \ > >>> + do { \ > >>> + uint32_t low, high; \ > >>> + __asm__ __volatile__ ("rdtsc" : "=a" (low), > >>> "=d" (high)); \ > >>> + val = (uint64_t)high << 32 | low; \ > >>> + } while (0) > >>> +#elif defined(__powerpc__) > >>> +#if defined(__powerpc64__) /* 64bit version */ > >>> +#define rdtscll(val) \ > >>> + do > >>> { \ > >>> + __asm__ __volatile__ ("mfspr %0, 268" : > >>> "=r" (val)); \ > >>> + } while (0) > >>> +#else /*__powerpc__ 32bit version */ > >>> +#define > >>> rdtscll(val) \ > >>> + do > >>> { \ > >>> + uint32_t tbhi, > >>> tblo ; \ > >>> + __asm__ __volatile__ ("mftbu %0" : > >>> "=r" (tbhi)); \ > >>> + __asm__ __volatile__ ("mftbl %0" : > >>> "=r" (tblo)); \ > >>> + val = 1000 * ((uint64_t) tbhi << 32) | > >>> tblo; \ > >>> + } while (0) > >>> +#endif > >>> +#else > >>> +#warning TSC UNSUPPORTED > >>> +/* All tests will be compiled also for the > >>> + * architecture without TSC support (e.g. SH). > >>> + * At run-time these will fail with ENOTSUP. > >>> + */ > >>> +#define rdtscll(val) do { } while (0) > >>> +#define TSC_UNSUPPORTED > >>> +#endif > >>> + > >>> > >> > >> ------------------------------------------------------------------------------ > >> Let Crystal Reports handle the reporting - Free Crystal Reports 2008 > >> 30-Day > >> trial. Simplify your report design, integration and deployment - and focus > >> on > >> what you do best, core application coding. Discover what's new with > >> Crystal Reports now. http://p.sf.net/sfu/bobj-july > >> _______________________________________________ > >> Ltp-list mailing list > >> [email protected] > >> https://lists.sourceforge.net/lists/listinfo/ltp-list > > > > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v1.4.9 (GNU/Linux) > Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org > > iEYEARECAAYFAkr9DXwACgkQ2Xo3j31MSSKO7wCgsH3KAqveTZfPlZhTeQDMLrMl > +w4An0XRbe7MZQa/Nk5Rs6D58rvIHIZk > =MRBR > -----END PGP SIGNATURE----- ------------------------------------------------------------------------------ Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july _______________________________________________ Ltp-list mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/ltp-list
