]> arthur.barton.de Git - netatalk.git/blob - libatalk/adouble/ad_lock.h
Rename ad_private.h to ad_lock.h
[netatalk.git] / libatalk / adouble / ad_lock.h
1 #ifndef LIBATALK_ADOUBLE_AD_PRIVATE_H
2 #define LIBATALK_ADOUBLE_AD_PRIVATE_H 1
3
4 #include <atalk/adouble.h>
5
6 /* this is so that we can keep lists of fds referencing the same file
7  * around. that way, we can honor locks created by the same process
8  * with the same file. */
9
10 #define adf_lock_init(a)                            \
11     do {                                            \
12         (a)->adf_lockmax = (a)->adf_lockcount = 0;  \
13         (a)->adf_excl = 0;(a)->adf_lock = NULL;     \
14     } while (0)
15
16 #define adf_lock_free(a)                                      \
17     do {                                                      \
18         int i;                                                \
19         if ((a)->adf_lock != NULL) {                          \
20             for (i = 0; i < (a)->adf_lockcount; i++) {        \
21                 adf_lock_t *lock = (a)->adf_lock + i;         \
22                 if (--(*lock->refcount) < 1)                  \
23                     free(lock->refcount);                     \
24             }                                                 \
25             free((a)->adf_lock);                              \
26             adf_lock_init(a);                                 \
27         }                                                     \
28     } while (0)
29
30 #endif /* libatalk/adouble/ad_private.h */