clockevents: Restructure clock_event_device members
authorThomas Gleixner <tglx@linutronix.de>
Wed, 18 May 2011 21:33:41 +0000 (21:33 +0000)
committerThomas Gleixner <tglx@linutronix.de>
Thu, 19 May 2011 12:24:15 +0000 (14:24 +0200)
Group the hot path members of struct clock_event_device together so we
have a better cache line footprint. Make it cacheline aligned.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: John Stultz <john.stultz@linaro.org>
Reviewed-by: Ingo Molnar <mingo@elte.hu>
Link: http://lkml.kernel.org/r/%3C20110518210136.223607682%40linutronix.de%3E
include/linux/clockchips.h

index fc53492..9466eeb 100644 (file)
@@ -56,46 +56,47 @@ enum clock_event_nofitiers {
 
 /**
  * struct clock_event_device - clock event device descriptor
- * @name:              ptr to clock event name
- * @features:          features
+ * @event_handler:     Assigned by the framework to be called by the low
+ *                     level handler of the event source
+ * @set_next_event:    set next event function
+ * @next_event:                local storage for the next event in oneshot mode
  * @max_delta_ns:      maximum delta value in ns
  * @min_delta_ns:      minimum delta value in ns
  * @mult:              nanosecond to cycles multiplier
  * @shift:             nanoseconds to cycles divisor (power of two)
+ * @mode:              operating mode assigned by the management code
+ * @features:          features
+ * @retries:           number of forced programming retries
+ * @set_mode:          set mode function
+ * @broadcast:         function to broadcast events
+ * @name:              ptr to clock event name
  * @rating:            variable to rate clock event devices
  * @irq:               IRQ number (only for non CPU local devices)
  * @cpumask:           cpumask to indicate for which CPUs this device works
- * @set_next_event:    set next event function
- * @set_mode:          set mode function
- * @event_handler:     Assigned by the framework to be called by the low
- *                     level handler of the event source
- * @broadcast:         function to broadcast events
  * @list:              list head for the management code
- * @mode:              operating mode assigned by the management code
- * @next_event:                local storage for the next event in oneshot mode
- * @retries:           number of forced programming retries
  */
 struct clock_event_device {
-       const char              *name;
-       unsigned int            features;
+       void                    (*event_handler)(struct clock_event_device *);
+       int                     (*set_next_event)(unsigned long evt,
+                                                 struct clock_event_device *);
+       ktime_t                 next_event;
        u64                     max_delta_ns;
        u64                     min_delta_ns;
        u32                     mult;
        u32                     shift;
+       enum clock_event_mode   mode;
+       unsigned int            features;
+       unsigned long           retries;
+
+       void                    (*broadcast)(const struct cpumask *mask);
+       void                    (*set_mode)(enum clock_event_mode mode,
+                                           struct clock_event_device *);
+       const char              *name;
        int                     rating;
        int                     irq;
        const struct cpumask    *cpumask;
-       int                     (*set_next_event)(unsigned long evt,
-                                                 struct clock_event_device *);
-       void                    (*set_mode)(enum clock_event_mode mode,
-                                           struct clock_event_device *);
-       void                    (*event_handler)(struct clock_event_device *);
-       void                    (*broadcast)(const struct cpumask *mask);
        struct list_head        list;
-       enum clock_event_mode   mode;
-       ktime_t                 next_event;
-       unsigned long           retries;
-};
+} ____cacheline_aligned;
 
 /*
  * Calculate a multiplication factor for scaled math, which is used to convert