diff options
| author | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2015-02-10 14:35:36 -0500 |
|---|---|---|
| committer | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2015-02-10 14:35:36 -0500 |
| commit | 4ba24fef3eb3b142197135223b90ced2f319cd53 (patch) | |
| tree | a20c125b27740ec7b4c761b11d801108e1b316b2 /include/linux/seqlock.h | |
| parent | 47c1ffb2b6b630894e9a16442611c056ab21c057 (diff) | |
| parent | 98a4a59ee31a12105a2b84f5b8b515ac2cb208ef (diff) | |
Merge branch 'next' into for-linus
Prepare first round of input updates for 3.20.
Diffstat (limited to 'include/linux/seqlock.h')
| -rw-r--r-- | include/linux/seqlock.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/include/linux/seqlock.h b/include/linux/seqlock.h index cc359636cfa3..f5df8f687b4d 100644 --- a/include/linux/seqlock.h +++ b/include/linux/seqlock.h | |||
| @@ -456,4 +456,23 @@ read_sequnlock_excl_irqrestore(seqlock_t *sl, unsigned long flags) | |||
| 456 | spin_unlock_irqrestore(&sl->lock, flags); | 456 | spin_unlock_irqrestore(&sl->lock, flags); |
| 457 | } | 457 | } |
| 458 | 458 | ||
| 459 | static inline unsigned long | ||
| 460 | read_seqbegin_or_lock_irqsave(seqlock_t *lock, int *seq) | ||
| 461 | { | ||
| 462 | unsigned long flags = 0; | ||
| 463 | |||
| 464 | if (!(*seq & 1)) /* Even */ | ||
| 465 | *seq = read_seqbegin(lock); | ||
| 466 | else /* Odd */ | ||
| 467 | read_seqlock_excl_irqsave(lock, flags); | ||
| 468 | |||
| 469 | return flags; | ||
| 470 | } | ||
| 471 | |||
| 472 | static inline void | ||
| 473 | done_seqretry_irqrestore(seqlock_t *lock, int seq, unsigned long flags) | ||
| 474 | { | ||
| 475 | if (seq & 1) | ||
| 476 | read_sequnlock_excl_irqrestore(lock, flags); | ||
| 477 | } | ||
| 459 | #endif /* __LINUX_SEQLOCK_H */ | 478 | #endif /* __LINUX_SEQLOCK_H */ |
