722d1f91104a269bc6867567abee203ce2efd504
[sip-router] / modules / tm / lock.h
1 /*
2  * $Id$
3  */
4
5
6 #ifndef _SEMAPHORE_H
7 #define _SEMAPHORE_H
8
9 #include <sys/types.h>
10 #include <sys/ipc.h>
11 #include <sys/sem.h>
12
13
14 /* typedef to structure we use for mutexing;
15    currently, index to a semaphore set identifier now */
16 typedef struct {
17         int semaphore_set;
18         int semaphore_index;
19 } ser_lock_t;
20
21
22 #include "h_table.h"
23 #include "timer.h"
24
25 /* Uni*x permissions for IPC */
26 #define IPC_PERMISSIONS 0666
27
28
29 int lock_initialize();
30 int init_semaphore_set( int size );
31 void lock_cleanup();
32
33
34 #ifdef DBG_LOCK
35 int _lock( ser_lock_t s , char *file, char *function, unsigned int line );
36 int _unlock( ser_lock_t s, char *file, char *function, unsigned int line );
37 #       define lock(_s) _lock( (_s), __FILE__, __FUNCTION__, __LINE__ )
38 #       define unlock(_s) _unlock( (_s), __FILE__, __FUNCTION__, __LINE__ )
39 #else
40 int _lock( ser_lock_t s );
41 int _unlock( ser_lock_t s );
42 #       define lock(_s) _lock( (_s) )
43 #       define unlock(_s) _unlock( (_s) )
44 #endif
45
46 int change_semaphore( ser_lock_t s  , int val );
47
48 int init_cell_lock( struct cell *cell );
49 int init_entry_lock( struct s_table* hash_table, struct entry *entry );
50 // int init_timerlist_lock( struct s_table* hash_table, enum lists timerlist_id);
51 //int init_retr_timer_lock( struct s_table* hash_table, enum retransmission_lists list_id );
52
53 int release_cell_lock( struct cell *cell );
54 int release_entry_lock( struct entry *entry );
55 int release_timerlist_lock( struct timer *timerlist );
56
57 #endif
58