mirror of
https://github.com/cuberite/libevent.git
synced 2025-09-10 04:50:37 -04:00
Remove the obsolete evthread interfaces
These were added in 2.0.1, and deprecated in 2.0.4 and 2.0.5; we've promised that they would be removed, and warned whenever they were invoked. Users should call evthread_set_lock_callbacks instead... or ideally just call evthread_use_windows_threads or evthread_use_pthreads.
This commit is contained in:
parent
9cb5bc86a9
commit
c5bab56002
62
evthread.c
62
evthread.c
@ -74,80 +74,26 @@ evthread_set_lock_callbacks(const struct evthread_lock_callbacks *cbs)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef DISABLE_OBSOLETE_LOCK_API
|
|
||||||
/* Obsolete: for compatibility only. Remove these before 2.0.x-stable! */
|
|
||||||
|
|
||||||
static void (*_obsolete_locking_fn)(int, void *) = NULL;
|
|
||||||
static void *(*_obsolete_lock_alloc_fn)(void) = NULL;
|
|
||||||
static void (*_obsolete_lock_free_fn)(void *) = NULL;
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
api_warn(void)
|
api_error(void)
|
||||||
{
|
{
|
||||||
static int warned = 0;
|
event_errx(1, "evthread_set_locking_callback and "
|
||||||
if (!warned) {
|
|
||||||
warned = 1;
|
|
||||||
event_warnx("evthread_set_locking_callback and "
|
|
||||||
"evthread_set_lock_create_callbacks are obsolete; use "
|
"evthread_set_lock_create_callbacks are obsolete; use "
|
||||||
"evthread_set_lock_callbacks instead.");
|
"evthread_set_lock_callbacks instead.");
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void *
|
|
||||||
compat_lock_alloc(unsigned locktype)
|
|
||||||
{
|
|
||||||
if (_obsolete_lock_alloc_fn)
|
|
||||||
return _obsolete_lock_alloc_fn();
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
compat_lock_free(void *lock, unsigned locktype)
|
|
||||||
{
|
|
||||||
if (_obsolete_lock_free_fn)
|
|
||||||
_obsolete_lock_free_fn(lock);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
compat_lock_lock(unsigned mode, void *lock)
|
|
||||||
{
|
|
||||||
_obsolete_locking_fn(EVTHREAD_LOCK|EVTHREAD_WRITE, lock);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static int
|
|
||||||
compat_lock_unlock(unsigned mode, void *lock)
|
|
||||||
{
|
|
||||||
_obsolete_locking_fn(EVTHREAD_UNLOCK|EVTHREAD_WRITE, lock);
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
evthread_set_locking_callback(void (*locking_fn)(int mode, void *lock))
|
evthread_set_locking_callback(void (*locking_fn)(int mode, void *lock))
|
||||||
{
|
{
|
||||||
api_warn();
|
api_error();
|
||||||
if (locking_fn) {
|
|
||||||
_evthread_lock_fns.lock = compat_lock_lock;
|
|
||||||
_evthread_lock_fns.unlock = compat_lock_unlock;
|
|
||||||
} else {
|
|
||||||
_evthread_lock_fns.lock = NULL;
|
|
||||||
_evthread_lock_fns.unlock = NULL;
|
|
||||||
}
|
|
||||||
_obsolete_locking_fn = locking_fn;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
evthread_set_lock_create_callbacks(void *(*alloc_fn)(void),
|
evthread_set_lock_create_callbacks(void *(*alloc_fn)(void),
|
||||||
void (*free_fn)(void *))
|
void (*free_fn)(void *))
|
||||||
{
|
{
|
||||||
api_warn();
|
api_error();
|
||||||
_obsolete_lock_alloc_fn = alloc_fn;
|
|
||||||
_obsolete_lock_free_fn = free_fn;
|
|
||||||
_evthread_lock_fns.alloc = alloc_fn ? compat_lock_alloc : NULL;
|
|
||||||
_evthread_lock_fns.free = free_fn ? compat_lock_free : NULL;
|
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
struct debug_lock {
|
struct debug_lock {
|
||||||
unsigned locktype;
|
unsigned locktype;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user