33 void *__ao2_global_obj_replace(
struct ao2_global_obj *holder,
void *obj,
const char *tag,
const char *file,
int line,
const char *func,
const char *name)
39 ast_log(LOG_ERROR,
"Must be called with a global object!\n");
43 if (__ast_rwlock_wrlock(file, line, func, &holder->
lock, name)) {
50 __ao2_ref(obj, +1, tag, file, line, func);
52 obj_old = holder->
obj;
55 __ast_rwlock_unlock(file, line, func, &holder->
lock, name);
60 int __ao2_global_obj_replace_unref(
struct ao2_global_obj *holder,
void *obj,
const char *tag,
const char *file,
int line,
const char *func,
const char *name)
64 obj_old = __ao2_global_obj_replace(holder, obj, tag, file, line, func, name);
66 __ao2_ref(obj_old, -1, tag, file, line, func);
72 void *__ao2_global_obj_ref(
struct ao2_global_obj *holder,
const char *tag,
const char *file,
int line,
const char *func,
const char *name)
78 ast_log(LOG_ERROR,
"Must be called with a global object!\n");
83 if (__ast_rwlock_rdlock(file, line, func, &holder->
lock, name)) {
91 __ao2_ref(obj, +1, tag, file, line, func);
94 __ast_rwlock_unlock(file, line, func, &holder->
lock, name);
Asterisk main include file. File version handling, generic pbx functions.