New PHP5 APC - version 3.0.19, using PHP5 5.2.0-8+etch11,
[php5-apc.git] / apc_futex.h
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_futex.h,v 3.2.2.1 2008/05/11 18:57:00 rasmus Exp $ */
21
22 #ifndef APC_FUTEX_H
23 #define APC_FUTEX_H
24
25 #include "apc.h"
26
27 #ifdef APC_FUTEX_LOCKS 
28
29 #include <asm/types.h>
30 #include <unistd.h>
31 #include <linux/futex.h>
32
33 #include "arch/atomic.h"
34
35 #define sys_futex(futex, op, val, timeout) syscall(SYS_futex, futex, op, val, timeout)
36 #define apc_futex_wait(val, oldval) sys_futex((void*)val, FUTEX_WAIT, oldval, NULL)
37 #define apc_futex_wake(val, count) sys_futex((void*)val, FUTEX_WAKE, count, NULL)
38
39 int apc_futex_create();
40 void apc_futex_destroy(volatile int* lock);
41 void apc_futex_lock(volatile int* lock);
42 void apc_futex_unlock(volatile int* lock);
43
44 #endif
45
46 #endif
47
48 /*
49  * Local variables:
50  * tab-width: 4
51  * c-basic-offset: 4
52  * End:
53  * vim600: expandtab sw=4 ts=4 sts=4 fdm=marker
54  * vim<600: expandtab sw=4 ts=4 sts=4
55  */