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