POK(kernelpart)
spinlock.h
Go to the documentation of this file.
1 /*
2  * POK header
3  *
4  * The following file is a part of the POK project. Any modification should
5  * made according to the POK licence. You CANNOT use this file or a part of
6  * this file is this part of a file for your own project
7  *
8  * For more information on the POK licence, please see our LICENCE FILE
9  *
10  * Please follow the coding guidelines described in doc/CODING_GUIDELINES
11  *
12  * Copyright (c) 2007-2009 POK team
13  *
14  * Created by julien on Thu Jan 15 23:34:13 2009
15  */
16 
17 
18 #ifndef __POK_SPINLOCK_H__
19 #define __POK_SPINLOCK_H__
20 
21 typedef unsigned char pok_spinlock_t;
22 
23 #define SPIN_UNLOCK(_spin_) \
24 { \
25  (_spin_) = 0; \
26 }
27 
28 #define SPIN_LOCK(_spin_) \
29  asm volatile ("mov $1, %%al \n\t" \
30  "1: \n\t" \
31  "lock xchg %0, %%al \n\t" \
32  "test %%al, %%al \n\t" \
33  "jnz 1b \n\t" \
34  : \
35  : "m" (_spin_) \
36  : "%al")
37 
38 #endif /* !__POK_SPINLOCK_H__ */