Core Update of doxygen, removal of history, changing "ser" to "kamailio"
[sip-router] / locking.h
1 /*
2  *
3  * Copyright (C) 2001-2003 FhG Fokus
4  *
5  * This file is part of Kamailio, a free SIP server.
6  *
7  * Kamailio is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 2 of the License, or
10  * (at your option) any later version
11  *
12  * Kamailio is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License 
18  * along with this program; if not, write to the Free Software 
19  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
20  */
21
22 /*!
23 * \file
24 * \brief Kamailio core :: Kamailio locking library
25 * \ingroup core
26 * \author andrei
27 * Module: \ref core
28  *
29  *
30 Implements (in lock_ops.h & lock_alloc.h):
31
32         simple locks:
33         -------------
34         type: gen_lock_t
35         gen_lock_t* lock_alloc();                - allocates a lock in shared mem.
36         gen_lock_t* lock_init(gen_lock_t* lock); - inits the lock
37         void    lock_destroy(gen_lock_t* lock);  - removes the lock (e.g sysv rmid)
38         void    lock_dealloc(gen_lock_t* lock);  - deallocates the lock's shared m.
39         void    lock_get(gen_lock_t* lock);      - lock (mutex down)
40         void    lock_release(gen_lock_t* lock);  - unlock (mutex up)
41         
42         lock sets:
43         ----------
44         type: gen_lock_set_t
45         gen_lock_set_t* lock_set_alloc(no)               - allocs a lock set in shm.
46         gen_lock_set_t* lock_set_init(gen_lock_set_t* set);  - inits the lock set
47         void lock_set_destroy(gen_lock_set_t* s);        - removes the lock set
48         void lock_set_dealloc(gen_lock_set_t* s);        - deallocs the lock set shm.
49         void lock_set_get(gen_lock_set_t* s, int i);     - locks sem i from the set
50         void lock_set_release(gen_lock_set_t* s, int i)  - unlocks sem i from the set
51
52 WARNING: - lock_set_init may fail for large number of sems (e.g. sysv). 
53          - signals are not treated! (some locks are "awakened" by the signals)
54 */
55
56 #ifndef _locking_h
57 #define _locking_h
58
59 /* the order is important */
60 #include "lock_ops.h"
61 #include "lock_alloc.h" 
62
63 #endif