• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/linux/linux-2.6.36/arch/microblaze/include/asm/
1#ifndef _ASM_MICROBLAZE_ATOMIC_H
2#define _ASM_MICROBLAZE_ATOMIC_H
3
4#include <asm-generic/atomic.h>
5
6/*
7 * Atomically test *v and decrement if it is greater than 0.
8 * The function returns the old value of *v minus 1.
9 */
10static inline int atomic_dec_if_positive(atomic_t *v)
11{
12	unsigned long flags;
13	int res;
14
15	local_irq_save(flags);
16	res = v->counter - 1;
17	if (res >= 0)
18		v->counter = res;
19	local_irq_restore(flags);
20
21	return res;
22}
23
24#endif /* _ASM_MICROBLAZE_ATOMIC_H */
25