]> git.itanic.dy.fi Git - rrdd/blob - utils.h
304e32a69013d8205aad1d46b06ed8685ea9424f
[rrdd] / utils.h
1 #ifndef _UTILS_H_
2 #define _UTILS_H_
3
4 #include <pthread.h>
5
6 #define min(a, b) ((a) < (b) ? (a) : (b))
7 #define max(a,b) (a) < (b) ? (b) : (a)
8
9 #define ARRAY_SIZE(a) (sizeof(a) / (sizeof((a)[0])))
10
11 struct mutex {
12         pthread_mutex_t lock;
13         int line;
14         char *file;
15         char owner_name[16];
16         time_t lock_time;
17         char *name;
18 };
19
20 void _mutex_lock_acquired(struct mutex *lock, char *file, int line);
21 int _mutex_lock(struct mutex *lock, char *file, int line);
22 int _mutex_unlock(struct mutex *lock);
23
24 #define mutex_lock(lock) _mutex_lock(lock, __FILE__, __LINE__)
25 #define mutex_unlock(lock) _mutex_unlock(lock)
26 #define mutex_lock_acquired(lock) _mutex_lock_acquired(lock, __FILE__, __LINE__)
27
28 static inline int mutex_init(struct mutex *mutex)
29 {
30         mutex->line = 0;
31         mutex->owner_name[0] = '\0';
32         mutex->lock_time = 0;
33         mutex->name = NULL;
34
35         return pthread_mutex_init(&mutex->lock, NULL);
36 }
37
38 #define ROUND_UP(a, m) ((a) + (m) - (a) % (m))
39
40 #endif