X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fsrc%2Flib%2Flockmgr.h;h=17dd2a9985d657d686dc2cedba87de348249d059;hb=897707854a8240d026e933215009f931bb9c5762;hp=008ba37da8546f02871e59358684d016309ce59b;hpb=bcbaeadfcd37dcd6753bae8939557fd1c7d628cf;p=bacula%2Fbacula diff --git a/bacula/src/lib/lockmgr.h b/bacula/src/lib/lockmgr.h index 008ba37da8..17dd2a9985 100644 --- a/bacula/src/lib/lockmgr.h +++ b/bacula/src/lib/lockmgr.h @@ -6,7 +6,7 @@ The main author of Bacula is Kern Sibbald, with contributions from many others, a complete list can be found in the file AUTHORS. This program is Free Software; you can redistribute it and/or - modify it under the terms of version two of the GNU General Public + modify it under the terms of version three of the GNU Affero General Public License as published by the Free Software Foundation, which is listed in the file LICENSE. @@ -15,7 +15,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - You should have received a copy of the GNU General Public License + You should have received a copy of the GNU Affero General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -86,6 +86,12 @@ int bthread_mutex_lock_p(bthread_mutex_t *m, int bthread_mutex_unlock_p(bthread_mutex_t *m, const char *file="*unknown*", int line=0); +/* Test if this mutex is locked by the current thread + * 0 - not locked by the current thread + * 1 - locked by the current thread + */ +int lmgr_mutex_is_locked(void *m); + /* * Use them when you want use your lock yourself (ie rwlock) */ @@ -152,6 +158,12 @@ int lmgr_thread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void*), void *arg); +/* + * Can use SAFEKILL to check if the argument is a valid threadid + */ +int bthread_kill(pthread_t thread, int sig, + const char *file="*unknown*", int line=0); + #define BTHREAD_MUTEX_NO_PRIORITY {PTHREAD_MUTEX_INITIALIZER, 0} #define BTHREAD_MUTEX_INITIALIZER BTHREAD_MUTEX_NO_PRIORITY @@ -182,6 +194,10 @@ int lmgr_thread_create(pthread_t *thread, # define pthread_mutex_unlock(x) bthread_mutex_unlock(x) # define pthread_cond_wait(x,y) bthread_cond_wait(x,y) # define pthread_cond_timedwait(x,y,z) bthread_cond_timedwait(x,y,z) + +# ifdef USE_LOCKMGR_SAFEKILL +# define pthread_kill(a,b) bthread_kill((a),(b), __FILE__, __LINE__) +# endif #endif #else /* _USE_LOCKMGR */ @@ -196,16 +212,20 @@ int lmgr_thread_create(pthread_t *thread, # define lmgr_do_unlock(m) # define lmgr_cleanup_main() # define bthread_mutex_set_priority(a,b) -# define bthread_mutex_lock(a) pthread_mutex_lock(a) -# define bthread_mutex_unlock(a) pthread_mutex_unlock(a) -# define lmgr_cond_wait(a,b) pthread_cond_wait(a,b) -# define lmgr_cond_timedwait(a,b,c) pthread_cond_timedwait(a,b,c) -# define bthread_mutex_t pthread_mutex_t +# define bthread_mutex_lock(a) pthread_mutex_lock(a) +# define bthread_mutex_lock_p(a, f, l) pthread_mutex_lock(a) +# define bthread_mutex_unlock(a) pthread_mutex_unlock(a) +# define bthread_mutex_unlock_p(a, f, l) pthread_mutex_unlock(a) +# define lmgr_cond_wait(a,b) pthread_cond_wait(a,b) +# define lmgr_cond_timedwait(a,b,c) pthread_cond_timedwait(a,b,c) +# define bthread_mutex_t pthread_mutex_t # define P(x) lmgr_p(&(x)) # define V(x) lmgr_v(&(x)) # define BTHREAD_MUTEX_PRIORITY(p) PTHREAD_MUTEX_INITIALIZER # define BTHREAD_MUTEX_NO_PRIORITY PTHREAD_MUTEX_INITIALIZER # define BTHREAD_MUTEX_INITIALIZER PTHREAD_MUTEX_INITIALIZER +# define lmgr_mutex_is_locked(m) (1) + #endif /* _USE_LOCKMGR */ #endif /* _LOCKMGR_H */