00001 /* 00002 * $Id: locking.h 4597 2008-08-06 11:04:06Z klaus_darilion $ * 00003 * 00004 * Copyright (C) 2001-2003 FhG Fokus 00005 * 00006 * This file is part of Kamailio, a free SIP server. 00007 * 00008 * Kamailio is free software; you can redistribute it and/or modify 00009 * it under the terms of the GNU General Public License as published by 00010 * the Free Software Foundation; either version 2 of the License, or 00011 * (at your option) any later version 00012 * 00013 * Kamailio is distributed in the hope that it will be useful, 00014 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00015 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00016 * GNU General Public License for more details. 00017 * 00018 * You should have received a copy of the GNU General Public License 00019 * along with this program; if not, write to the Free Software 00020 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00021 * 00022 * History: 00023 * ------- 00024 * 2002-12-16 created by andrei 00025 * 2003-02-20 s/gen_lock_t/gen_lock_t/ to avoid a type conflict 00026 * on solaris (andrei) 00027 * 2003-03-05 lock set support added for FAST_LOCK & SYSV (andrei) 00028 * 2003-03-06 split in two: lock_ops.h & lock_alloc.h, to avoid 00029 * shm_mem.h<->locking.h interdependency (andrei) 00030 * 2004-07-28 s/lock_set_t/gen_lock_set_t/ because of a type conflict 00031 * on darwin (andrei) 00032 */ 00033 00034 /*! 00035 * \file 00036 * \brief Kamailio locking library 00037 * 00038 * Implements (in lock_ops.h & lock_alloc.h): 00039 * 00040 * simple locks: 00041 * - type: gen_lock_t 00042 * - gen_lock_t* lock_alloc(); - allocates a lock in shared mem. 00043 * - gen_lock_t* lock_init(gen_lock_t* lock); - inits the lock 00044 * - void lock_destroy(gen_lock_t* lock); - removes the lock (e.g sysv rmid) 00045 * - void lock_dealloc(gen_lock_t* lock); - deallocates the lock's shared m. 00046 * - void lock_get(gen_lock_t* lock); - lock (mutex down) 00047 * - void lock_release(gen_lock_t* lock); - unlock (mutex up) 00048 * 00049 * lock sets: 00050 * - type: gen_lock_set_t 00051 * - gen_lock_set_t* lock_set_alloc(no) - allocs a lock set in shm. 00052 * - gen_lock_set_t* lock_set_init(gen_lock_set_t* set); - inits the lock set 00053 * - void lock_set_destroy(gen_lock_set_t* s); - removes the lock set 00054 * - void lock_set_dealloc(gen_lock_set_t* s); - deallocs the lock set shm. 00055 * - void lock_set_get(gen_lock_set_t* s, int i); - locks sem i from the set 00056 * - void lock_set_release(gen_lock_set_t* s, int i)- unlocks sem i from the set 00057 * 00058 * WARNING: 00059 * - lock_set_init may fail for large number of sems (e.g. sysv). 00060 * - signals are not treated! (some locks are "awakened" by the signals) 00061 */ 00062 00063 #ifndef _locking_h 00064 #define _locking_h 00065 00066 /* the order is important */ 00067 #include "lock_ops.h" 00068 #include "lock_alloc.h" 00069 00070 #endif
1.5.6