]> git.itanic.dy.fi Git - rrdd/blob - utils.h
onewire_parser.c: Fix compiler warnings about string lengths
[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 char *_strlcat(char *dst, const char *src, size_t len)
29 {
30         strncat(dst, src, len - strnlen(dst, len) - 1);
31         dst[len - 1] = '\0';
32
33         return dst;
34 }
35
36 static inline int mutex_init(struct mutex *mutex)
37 {
38         mutex->line = 0;
39         mutex->owner_name[0] = '\0';
40         mutex->lock_time = 0;
41         mutex->name = NULL;
42
43         return pthread_mutex_init(&mutex->lock, NULL);
44 }
45
46 #define ROUND_UP(a, m) ((a) + (m) - (a) % (m))
47
48 #endif