New PHP5 APC - version 3.0.19, using PHP5 5.2.0-8+etch11,
[php5-apc.git] / apc_spin.c
1 /*
2   +----------------------------------------------------------------------+
3   | APC                                                                  |
4   +----------------------------------------------------------------------+
5   | Copyright (c) 2008 The PHP Group                                     |
6   +----------------------------------------------------------------------+
7   | This source file is subject to version 3.01 of the PHP license,      |
8   | that is bundled with this package in the file LICENSE, and is        |
9   | available through the world-wide-web at the following url:           |
10   | http://www.php.net/license/3_01.txt                                  |
11   | If you did not receive a copy of the PHP license and are unable to   |
12   | obtain it through the world-wide-web, please send a note to          |
13   | license@php.net so we can mail you a copy immediately.               |
14   +----------------------------------------------------------------------+
15   | Authors: Brian Shire <shire@php.net>                                 |
16   +----------------------------------------------------------------------+
17
18  */
19
20 /* $Id: apc_spin.c,v 3.1.2.1 2008/05/11 18:57:00 rasmus Exp $ */
21
22 #include "apc_spin.h"
23
24 #ifdef APC_SPIN_LOCKS
25
26 slock_t *apc_slock_create(slock_t *lock) 
27 {
28    S_INIT_LOCK(lock); 
29 }
30
31 void apc_slock_destroy(slock_t *lock)
32 {
33     S_LOCK_FREE(lock);
34 }
35
36 void apc_slock_lock(slock_t *lock)
37 {
38     S_LOCK(lock);
39 }
40
41 void apc_slock_unlock(slock_t *lock)
42 {
43     S_UNLOCK(lock);
44 }
45
46 zend_bool apc_slock_nonblocking_lock(slock_t *lock)
47 {
48     /* Technically we aren't supposed to call this directly, but the original
49      *  code provides no method for absolute non-blocking locks, so we'll call into
50      *  the TAS (test and set) functionality directly 
51      */
52     return !(TAS(lock));  /* if TAS returns 0 we obtained the lock, otherwise we failed */
53 }
54
55
56 #endif
57
58 /*
59  * Local variables:
60  * tab-width: 4
61  * c-basic-offset: 4
62  * End:
63  * vim600: expandtab sw=4 ts=4 sts=4 fdm=marker
64  * vim<600: expandtab sw=4 ts=4 sts=4
65  */