diff --git a/bufferevent.c b/bufferevent.c index 75ff9b72..8d3f7cba 100644 --- a/bufferevent.c +++ b/bufferevent.c @@ -825,3 +825,17 @@ _bufferevent_add_event(struct event *ev, const struct timeval *tv) else return event_add(ev, tv); } + +/* For use by user programs only; internally, we should be calling + either _bufferevent_incref_and_lock(), or BEV_LOCK. */ +void +bufferevent_lock(struct bufferevent *bev) +{ + _bufferevent_incref_and_lock(bev); +} + +void +bufferevent_unlock(struct bufferevent *bev) +{ + _bufferevent_decref_and_unlock(bev); +} diff --git a/include/event2/bufferevent.h b/include/event2/bufferevent.h index 02cabe67..55e44f9c 100644 --- a/include/event2/bufferevent.h +++ b/include/event2/bufferevent.h @@ -423,6 +423,18 @@ int bufferevent_set_timeouts(struct bufferevent *bufev, void bufferevent_setwatermark(struct bufferevent *bufev, short events, size_t lowmark, size_t highmark); +/** + Acquire the lock on a bufferevent. Has no effect if locking was not + enabled with BEV_OPT_THREADSAFE. + */ +void bufferevent_lock(struct bufferevent *bufev); + +/** + Release the lock on a bufferevent. Has no effect if locking was not + enabled with BEV_OPT_THREADSAFE. + */ +void bufferevent_unlock(struct bufferevent *bufev); + /** Flags that can be passed into filters to let them know how to deal with the incoming data.