Changeset 59e07c91 in mainline
- Timestamp:
- 2005-11-10T13:56:26Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 0172eba
- Parents:
- 13fe013
- Files:
-
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
arch/ia32/include/atomic.h
r13fe013 r59e07c91 32 32 #include <arch/types.h> 33 33 34 static inline void atomic_inc(volatile int *val) { 34 typedef volatile __u32 atomic_t; 35 36 static inline void atomic_inc(atomic_t *val) { 35 37 #ifdef CONFIG_SMP 36 38 __asm__ volatile ("lock incl %0\n" : "=m" (*val)); … … 40 42 } 41 43 42 static inline void atomic_dec( volatile int *val) {44 static inline void atomic_dec(atomic_t *val) { 43 45 #ifdef CONFIG_SMP 44 46 __asm__ volatile ("lock decl %0\n" : "=m" (*val)); -
arch/ia64/include/atomic.h
r13fe013 r59e07c91 30 30 #define __ia64_ATOMIC_H__ 31 31 32 /* 33 * TODO: these are just placeholders for real implementations of atomic_inc and atomic_dec. 34 * WARNING: the following functions cause the code to be preemption-unsafe !!! 32 #include <arch/types.h> 33 34 typedef volatile __u64 atomic_t; 35 36 static inline atomic_t atomic_add(atomic_t *val, int imm) 37 { 38 atomic_t v; 39 40 /* 41 * __asm__ volatile ("fetchadd8.rel %0 = %1, %2\n" : "=r" (v), "=m" (val) : "i" (imm)); 35 42 */ 36 37 static inline atomic_inc(volatile int *val) { 38 *val++;43 *val += imm; 44 45 return v; 39 46 } 40 47 41 static inline atomic_dec(volatile int *val) { 42 *val--; 43 } 48 static inline atomic_t atomic_inc(atomic_t *val) { return atomic_add(val, 1); } 49 static inline atomic_t atomic_dec(atomic_t *val) { return atomic_add(val, -1); } 44 50 45 51 #endif -
arch/mips32/include/atomic.h
r13fe013 r59e07c91 30 30 #define __mips32_ATOMIC_H__ 31 31 32 #include <arch/types.h> 33 32 34 #define atomic_inc(x) (a_add(x,1)) 33 35 #define atomic_dec(x) (a_sub(x,1)) 36 37 typedef volatile __u32 atomic_t; 34 38 35 39 /* … … 42 46 * the same location, the SC (store-conditional) instruction fails. 43 47 */ 44 static inline int a_add( volatile int *val, int i)48 static inline atomic_t a_add(atomic_t *val, int i) 45 49 { 46 int tmp, tmp2;50 atomic_t tmp, tmp2; 47 51 48 52 asm volatile ( … … 70 74 * Implemented in the same manner as a_add, except we substract the value. 71 75 */ 72 static inline int a_sub( volatile int *val, int i)76 static inline atomic_t a_sub(atomic_t *val, int i) 73 77 74 78 { 75 int tmp, tmp2;79 atomic_t tmp, tmp2; 76 80 77 81 asm volatile ( -
arch/ppc32/include/atomic.h
r13fe013 r59e07c91 30 30 #define __ppc32_ATOMIC_H__ 31 31 32 #include <arch/types.h> 33 34 typedef volatile __u32 atomic_t; 35 32 36 /* 33 37 * TODO: these are just placeholders for real implementations of atomic_inc and atomic_dec. … … 35 39 */ 36 40 37 static inline atomic_inc(volatile int *val) {41 static inline void atomic_inc(atomic_t *val) { 38 42 *val++; 39 43 } 40 44 41 static inline atomic_dec(volatile int *val) {45 static inline void atomic_dec(atomic_t *val) { 42 46 *val--; 43 47 } -
arch/sparc64/include/atomic.h
r13fe013 r59e07c91 30 30 #define __sparc64_ATOMIC_H__ 31 31 32 #include <arch/types.h> 33 34 typedef volatile __u64 atomic_t; 35 32 36 /* 33 37 * TODO: these are just placeholders for real implementations of atomic_inc and atomic_dec. … … 35 39 */ 36 40 37 static inline atomic_inc(volatile int *val) {41 static inline void atomic_inc(atomic_t *val) { 38 42 *val++; 39 43 } 40 44 41 static inline atomic_dec(volatile int *val) {45 static inline void atomic_dec(atomic_t *val) { 42 46 *val--; 43 47 } -
generic/include/proc/scheduler.h
r13fe013 r59e07c91 33 33 #include <time/clock.h> /* HZ */ 34 34 #include <typedefs.h> 35 #include <arch/atomic.h> 35 36 #include <list.h> 36 37 … … 44 45 }; 45 46 46 extern volatile count_t nrdy;47 extern atomic_t nrdy; 47 48 extern void scheduler_init(void); 48 49 -
generic/src/proc/scheduler.c
r13fe013 r59e07c91 49 49 #include <debug.h> 50 50 51 volatile count_t nrdy;51 atomic_t nrdy; 52 52 53 53 … … 182 182 spinlock_unlock(&CPU->lock); 183 183 184 atomic_dec( (int *)&nrdy);184 atomic_dec(&nrdy); 185 185 r->n--; 186 186 … … 558 558 spinlock_unlock(&cpu->lock); 559 559 560 atomic_dec( (int *)&nrdy);560 atomic_dec(&nrdy); 561 561 562 562 r->n--; -
generic/src/proc/thread.c
r13fe013 r59e07c91 137 137 spinlock_unlock(&r->lock); 138 138 139 atomic_inc( (int *)&nrdy);139 atomic_inc(&nrdy); 140 140 avg = nrdy / config.cpu_active; 141 141 -
test/synch/rwlock4/test.c
r13fe013 r59e07c91 50 50 static waitq_t can_start; 51 51 52 __u32 seed = 0xdeadbe af;52 __u32 seed = 0xdeadbeef; 53 53 54 54 static __u32 random(__u32 max); -
test/synch/rwlock5/test.c
r13fe013 r59e07c91 42 42 43 43 static waitq_t can_start; 44 static volatile int items_read;45 static volatile int items_written;44 static atomic_t items_read; 45 static atomic_t items_written; 46 46 47 47 static void writer(void *arg); -
test/synch/semaphore1/test.c
r13fe013 r59e07c91 43 43 44 44 static waitq_t can_start; 45 static volatile int items_produced;46 static volatile int items_consumed;45 static atomic_t items_produced; 46 static atomic_t items_consumed; 47 47 48 48 static void consumer(void *arg); -
test/synch/semaphore2/test.c
r13fe013 r59e07c91 45 45 static waitq_t can_start; 46 46 47 __u32 seed = 0xdeadbe af;47 __u32 seed = 0xdeadbeef; 48 48 49 49 static __u32 random(__u32 max);
Note:
See TracChangeset
for help on using the changeset viewer.