Annotation of embedaddon/strongswan/src/libstrongswan/threading/mutex.h, revision 1.1
1.1 ! misho 1: /*
! 2: * Copyright (C) 2008-2009 Tobias Brunner
! 3: * Copyright (C) 2008 Martin Willi
! 4: * HSR Hochschule fuer Technik Rapperswil
! 5: *
! 6: * This program is free software; you can redistribute it and/or modify it
! 7: * under the terms of the GNU General Public License as published by the
! 8: * Free Software Foundation; either version 2 of the License, or (at your
! 9: * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
! 10: *
! 11: * This program is distributed in the hope that it will be useful, but
! 12: * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
! 13: * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
! 14: * for more details.
! 15: */
! 16:
! 17: /**
! 18: * @defgroup mutex mutex
! 19: * @{ @ingroup threading
! 20: */
! 21:
! 22: #ifndef THREADING_MUTEX_H_
! 23: #define THREADING_MUTEX_H_
! 24:
! 25: typedef struct mutex_t mutex_t;
! 26: typedef enum mutex_type_t mutex_type_t;
! 27:
! 28: /**
! 29: * Type of mutex.
! 30: */
! 31: enum mutex_type_t {
! 32: /** default mutex */
! 33: MUTEX_TYPE_DEFAULT = 0,
! 34: /** allow recursive locking of the mutex */
! 35: MUTEX_TYPE_RECURSIVE = 1,
! 36: };
! 37:
! 38: /**
! 39: * Mutex wrapper implements simple, portable and advanced mutex functions.
! 40: */
! 41: struct mutex_t {
! 42:
! 43: /**
! 44: * Acquire the lock to the mutex.
! 45: */
! 46: void (*lock)(mutex_t *this);
! 47:
! 48: /**
! 49: * Release the lock on the mutex.
! 50: */
! 51: void (*unlock)(mutex_t *this);
! 52:
! 53: /**
! 54: * Destroy a mutex instance.
! 55: */
! 56: void (*destroy)(mutex_t *this);
! 57: };
! 58:
! 59: /**
! 60: * Create a mutex instance.
! 61: *
! 62: * @param type type of mutex to create
! 63: * @return unlocked mutex instance
! 64: */
! 65: mutex_t *mutex_create(mutex_type_t type);
! 66:
! 67: #endif /** THREADING_MUTEX_H_ @} */
! 68:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>