Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 109979
b: refs/heads/master
c: 27ce4cb
h: refs/heads/master
i:
  109977: 19c7dfc
  109975: 20da3b3
v: v3
  • Loading branch information
Thomas Gleixner committed Sep 23, 2008
1 parent 2240246 commit 0dc2fa2
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 2 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 302745699c1b675b5d2a1af87271de10e4d96b6a
refs/heads/master: 27ce4cb4a0c7cf59b9a9952266883862f2e4c99f
8 changes: 8 additions & 0 deletions trunk/kernel/time/tick-broadcast.c
Original file line number Diff line number Diff line change
Expand Up @@ -575,4 +575,12 @@ void tick_shutdown_broadcast_oneshot(unsigned int *cpup)
spin_unlock_irqrestore(&tick_broadcast_lock, flags);
}

/*
* Check, whether the broadcast device is in one shot mode
*/
int tick_broadcast_oneshot_active(void)
{
return tick_broadcast_device.mode == TICKDEV_MODE_ONESHOT;
}

#endif
3 changes: 2 additions & 1 deletion trunk/kernel/time/tick-common.c
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,8 @@ void tick_setup_periodic(struct clock_event_device *dev, int broadcast)
if (!tick_device_is_functional(dev))
return;

if (dev->features & CLOCK_EVT_FEAT_PERIODIC) {
if ((dev->features & CLOCK_EVT_FEAT_PERIODIC) &&
!tick_broadcast_oneshot_active()) {
clockevents_set_mode(dev, CLOCK_EVT_MODE_PERIODIC);
} else {
unsigned long seq;
Expand Down
2 changes: 2 additions & 0 deletions trunk/kernel/time/tick-internal.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ extern void tick_broadcast_oneshot_control(unsigned long reason);
extern void tick_broadcast_switch_to_oneshot(void);
extern void tick_shutdown_broadcast_oneshot(unsigned int *cpup);
extern int tick_resume_broadcast_oneshot(struct clock_event_device *bc);
extern int tick_broadcast_oneshot_active(void);
# else /* BROADCAST */
static inline void tick_broadcast_setup_oneshot(struct clock_event_device *bc)
{
Expand All @@ -43,6 +44,7 @@ static inline void tick_broadcast_setup_oneshot(struct clock_event_device *bc)
static inline void tick_broadcast_oneshot_control(unsigned long reason) { }
static inline void tick_broadcast_switch_to_oneshot(void) { }
static inline void tick_shutdown_broadcast_oneshot(unsigned int *cpup) { }
static inline int tick_broadcast_oneshot_active(void) { return 0; }
# endif /* !BROADCAST */

#else /* !ONESHOT */
Expand Down

0 comments on commit 0dc2fa2

Please sign in to comment.