at v3.3-rc2 25 lines 508 B view raw
1#ifndef _ASM_MICROBLAZE_ATOMIC_H 2#define _ASM_MICROBLAZE_ATOMIC_H 3 4#include <asm-generic/atomic.h> 5#include <asm-generic/atomic64.h> 6 7/* 8 * Atomically test *v and decrement if it is greater than 0. 9 * The function returns the old value of *v minus 1. 10 */ 11static inline int atomic_dec_if_positive(atomic_t *v) 12{ 13 unsigned long flags; 14 int res; 15 16 local_irq_save(flags); 17 res = v->counter - 1; 18 if (res >= 0) 19 v->counter = res; 20 local_irq_restore(flags); 21 22 return res; 23} 24 25#endif /* _ASM_MICROBLAZE_ATOMIC_H */