From f40139bb9bc4b091c0ddc516dd9d1eed7fbdec45 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Thu, 22 Sep 2011 07:16:06 +0000 Subject: [PATCH] 2011-09-22 Sebastian Huber PR 1914/cpukit * rtems/score/cpu.h: Document CPU_TIMESTAMP_USE_STRUCT_TIMESPEC, CPU_TIMESTAMP_USE_INT64, and CPU_TIMESTAMP_USE_INT64_INLINE. --- cpukit/score/cpu/no_cpu/ChangeLog | 6 ++ cpukit/score/cpu/no_cpu/rtems/score/cpu.h | 70 +++++++++++++++++++++++ 2 files changed, 76 insertions(+) diff --git a/cpukit/score/cpu/no_cpu/ChangeLog b/cpukit/score/cpu/no_cpu/ChangeLog index 5646d802c9..054d67219c 100644 --- a/cpukit/score/cpu/no_cpu/ChangeLog +++ b/cpukit/score/cpu/no_cpu/ChangeLog @@ -1,3 +1,9 @@ +2011-09-22 Sebastian Huber + + PR 1914/cpukit + * rtems/score/cpu.h: Document CPU_TIMESTAMP_USE_STRUCT_TIMESPEC, + CPU_TIMESTAMP_USE_INT64, and CPU_TIMESTAMP_USE_INT64_INLINE. + 2011-07-24 Joel Sherrill * cpu.c: Remove /*PAGE markers which were interpreted by a long dead diff --git a/cpukit/score/cpu/no_cpu/rtems/score/cpu.h b/cpukit/score/cpu/no_cpu/rtems/score/cpu.h index 82b7ce629e..4e48d912e3 100644 --- a/cpukit/score/cpu/no_cpu/rtems/score/cpu.h +++ b/cpukit/score/cpu/no_cpu/rtems/score/cpu.h @@ -355,6 +355,76 @@ extern "C" { */ #define CPU_STRUCTURE_ALIGNMENT +/** + * @defgroup CPUTimestamp Processor Dependent Timestamp Support + * + * This group assists in issues related to timestamp implementation. + * + * The port must choose exactly one of the following defines: + * - #define CPU_TIMESTAMP_USE_STRUCT_TIMESPEC TRUE + * - #define CPU_TIMESTAMP_USE_INT64 TRUE + * - #define CPU_TIMESTAMP_USE_INT64_INLINE TRUE + * + * Performance of int64_t versus struct timespec + * ============================================= + * + * On PowerPC/psim, inlined int64_t saves ~50 instructions on each + * _Thread_Dispatch operation which results in a context switch. + * This works out to be about 10% faster dispatches and 7.5% faster + * blocking semaphore obtains. The following numbers are in instructions + * and from tm02 and tm26. + * + * timespec int64 inlined int64 + * dispatch: 446 446 400 + * blocking sem obtain: 627 626 581 + * + * On SPARC/sis, inlined int64_t shows the same percentage gains. + * The following numbers are in microseconds and from tm02 and tm26. + * + * timespec int64 inlined int64 + * dispatch: 59 61 53 + * blocking sem obtain: 98 100 92 + * + * Inlining appears to have a tendency to increase the size of + * some executables. + * Not inlining reduces the execution improvement but does not seem to + * be an improvement on the PowerPC and SPARC. The struct timespec + * and the executables with int64 not inlined are about the same size. + */ + +/** + * @ingroup CPUTimestamp + * + * Selects the timestamp implementation using struct timespec. + * + * Port Specific Information: + * + * XXX document implementation including references if appropriate + */ +#define CPU_TIMESTAMP_USE_STRUCT_TIMESPEC TRUE + +/** + * @ingroup CPUTimestamp + * + * Selects the timestamp implementation using int64_t and no inlined methods. + * + * Port Specific Information: + * + * XXX document implementation including references if appropriate + */ +#define CPU_TIMESTAMP_USE_INT64 TRUE + +/** + * @ingroup CPUTimestamp + * + * Selects the timestamp implementation using int64_t and inlined methods. + * + * Port Specific Information: + * + * XXX document implementation including references if appropriate + */ +#define CPU_TIMESTAMP_USE_INT64_INLINE TRUE + /** * @defgroup CPUEndian Processor Dependent Endianness Support *