Lines Matching refs:srv

34 #define SEARCH_GROUP_BY_ID(srv, id)     (get_group_by_id(srv, id))  argument
125 static void service_put_group(MppBufferService *srv, MppBufferGroupImpl *p, const char *caller);
126 static void service_dump(MppBufferService *srv, const char *info);
128 static MppBufferGroupImpl *get_group_by_id(MppBufferService *srv, rk_u32 id) in get_group_by_id() argument
132 hash_for_each_possible(srv->hash_group, impl, hlist, id) { in get_group_by_id()
290 static void service_put_buffer(MppBufferService *srv, MppBufferGroupImpl *group, in service_put_buffer() argument
301 if (!srv && !srv->finalizing) { in service_put_buffer()
347 if (group->mode == MPP_BUFFER_INTERNAL && srv) in service_put_buffer()
348 MPP_FETCH_SUB(&srv->total_size, size); in service_put_buffer()
356 service_put_group(srv, group, caller); in service_put_buffer()
396 MppBufferService *srv = get_srv_buffer(); in inc_buffer_ref() local
398 if (srv) { in inc_buffer_ref()
399 mpp_mutex_lock(&srv->lock); in inc_buffer_ref()
400 group = SEARCH_GROUP_BY_ID(srv, buffer->group_id); in inc_buffer_ref()
401 mpp_mutex_unlock(&srv->lock); in inc_buffer_ref()
512 MppBufferService *srv = get_srv_buffer(); in mpp_buffer_create() local
514 if (srv) { in mpp_buffer_create()
515 rk_u32 total = MPP_ADD_FETCH(&srv->total_size, info->size); in mpp_buffer_create()
519 rk_u32 old_max = srv->total_max; in mpp_buffer_create()
522 cas_ret = MPP_BOOL_CAS(&srv->total_max, old_max, new_max); in mpp_buffer_create()
588 MppBufferService *srv = get_srv_buffer(); in mpp_buffer_ref_dec() local
590 if (srv) { in mpp_buffer_ref_dec()
591 mpp_mutex_lock(&srv->lock); in mpp_buffer_ref_dec()
592 group = SEARCH_GROUP_BY_ID(srv, buffer->group_id); in mpp_buffer_ref_dec()
593 mpp_mutex_unlock(&srv->lock); in mpp_buffer_ref_dec()
603 service_put_buffer(srv, group, buffer, reuse, caller); in mpp_buffer_ref_dec()
619 MppBufferService *srv = get_srv_buffer(); in mpp_buffer_discard() local
624 if (srv) { in mpp_buffer_discard()
625 mpp_mutex_lock(&srv->lock); in mpp_buffer_discard()
626 group = SEARCH_GROUP_BY_ID(srv, buffer->group_id); in mpp_buffer_discard()
627 mpp_mutex_unlock(&srv->lock); in mpp_buffer_discard()
856 MppBufferService *srv = get_srv_buffer(); in mpp_buffer_group_reset() local
860 service_put_buffer(srv, p, pos, 0, __FUNCTION__); in mpp_buffer_group_reset()
887 MppBufferService *srv = get_srv_buffer(); in mpp_buffer_total_now() local
890 if (srv) in mpp_buffer_total_now()
891 size = srv->total_size; in mpp_buffer_total_now()
898 MppBufferService *srv = get_srv_buffer(); in mpp_buffer_total_max() local
901 if (srv) in mpp_buffer_total_max()
902 size = srv->total_max; in mpp_buffer_total_max()
923 static rk_u32 service_get_misc(MppBufferService *srv, MppBufferMode mode, MppBufferType type) in service_get_misc() argument
935 return srv->misc[mode][type][flag]; in service_get_misc()
940 MppBufferService *srv = get_srv_buffer(); in mpp_buffer_get_misc_group() local
943 MppMutex *lock = &srv->lock; in mpp_buffer_get_misc_group()
955 id = service_get_misc(srv, mode, type); in mpp_buffer_get_misc_group()
969 misc = get_group_by_id(srv, id); in mpp_buffer_get_misc_group()
977 MppBufferService *srv = srv_buffer; in mpp_buffer_service_init() local
980 if (srv) in mpp_buffer_service_init()
985 srv = mpp_calloc(MppBufferService, 1); in mpp_buffer_service_init()
986 if (!srv) { in mpp_buffer_service_init()
991 srv_buffer = srv; in mpp_buffer_service_init()
998 srv->group_id = 1; in mpp_buffer_service_init()
1000 INIT_LIST_HEAD(&srv->list_group); in mpp_buffer_service_init()
1001 INIT_LIST_HEAD(&srv->list_orphan); in mpp_buffer_service_init()
1007 srv->misc[i][j][k] = 0; in mpp_buffer_service_init()
1009 for (i = 0; i < (rk_s32)HASH_SIZE(srv->hash_group); i++) in mpp_buffer_service_init()
1010 INIT_HLIST_HEAD(&srv->hash_group[i]); in mpp_buffer_service_init()
1012 mpp_mutex_init(&srv->lock); in mpp_buffer_service_init()
1017 MppBufferService *srv = srv_buffer; in mpp_buffer_service_deinit() local
1020 if (!srv) in mpp_buffer_service_deinit()
1023 srv->finalizing = 1; in mpp_buffer_service_deinit()
1026 if (srv->misc_count) { in mpp_buffer_service_deinit()
1031 rk_u32 id = srv->misc[i][j][k]; in mpp_buffer_service_deinit()
1034 service_put_group(srv, get_group_by_id(srv, id), __FUNCTION__); in mpp_buffer_service_deinit()
1035 srv->misc[i][j][k] = 0; in mpp_buffer_service_deinit()
1041 if (!list_empty(&srv->list_group)) { in mpp_buffer_service_deinit()
1045 service_dump(srv, "leaked group found"); in mpp_buffer_service_deinit()
1048 list_for_each_entry_safe(pos, n, &srv->list_group, MppBufferGroupImpl, list_group) { in mpp_buffer_service_deinit()
1049 service_put_group(srv, pos, __FUNCTION__); in mpp_buffer_service_deinit()
1054 if (!list_empty(&srv->list_orphan)) { in mpp_buffer_service_deinit()
1059 list_for_each_entry_safe(pos, n, &srv->list_orphan, MppBufferGroupImpl, list_group) { in mpp_buffer_service_deinit()
1062 service_put_group(srv, pos, __FUNCTION__); in mpp_buffer_service_deinit()
1068 if (srv->allocator[i][j]) in mpp_buffer_service_deinit()
1069 mpp_allocator_put(&(srv->allocator[i][j])); in mpp_buffer_service_deinit()
1072 mpp_mutex_destroy(&srv->lock); in mpp_buffer_service_deinit()
1078 rk_u32 service_get_group_id(MppBufferService *srv) in service_get_group_id() argument
1085 if (srv->group_id) in service_get_group_id()
1086 id = srv->group_id++; in service_get_group_id()
1089 srv->group_id = 1; in service_get_group_id()
1094 id = srv->group_id++; in service_get_group_id()
1097 while (get_group_by_id(srv, id)) in service_get_group_id()
1098 id = srv->group_id++; in service_get_group_id()
1101 srv->group_count++; in service_get_group_id()
1112 MppBufferService *srv = get_srv_buffer(); in service_get_group() local
1125 if (!srv) { in service_get_group()
1130 lock = &srv->lock; in service_get_group()
1147 allocator = srv->allocator[buffer_type][flag]; in service_get_group()
1148 alloc_api = srv->allocator_api[buffer_type]; in service_get_group()
1153 srv->allocator[buffer_type][flag] = allocator; in service_get_group()
1154 srv->allocator_api[buffer_type] = alloc_api; in service_get_group()
1199 id = service_get_group_id(srv); in service_get_group()
1207 list_add_tail(&p->list_group, &srv->list_group); in service_get_group()
1208 hash_add(srv->hash_group, &p->hlist, id); in service_get_group()
1213 srv->misc[mode][buffer_type][flag] = id; in service_get_group()
1215 srv->misc_count++; in service_get_group()
1223 static void destroy_group(MppBufferService *srv, MppBufferGroupImpl *group) in destroy_group() argument
1246 if (srv) { in destroy_group()
1252 srv->group_count--; in destroy_group()
1254 if (id == srv->misc[mode][type][flag]) { in destroy_group()
1255 srv->misc[mode][type][flag] = 0; in destroy_group()
1256 srv->misc_count--; in destroy_group()
1264 static void service_put_group(MppBufferService *srv, MppBufferGroupImpl *p, const char *caller) in service_put_group() argument
1268 if (!srv) in service_put_group()
1271 lock = &srv->lock; in service_put_group()
1273 if (!srv->finalizing) in service_put_group()
1283 service_put_buffer(srv, p, pos, 0, caller); in service_put_group()
1288 destroy_group(srv, p); in service_put_group()
1290 if (!srv->finalizing || (srv->finalizing && p->dump_on_exit)) { in service_put_group()
1309 service_put_buffer(srv, p, pos, 0, caller); in service_put_group()
1312 destroy_group(srv, p); in service_put_group()
1317 list_add_tail(&p->list_group, &srv->list_orphan); in service_put_group()
1322 if (!srv->finalizing) in service_put_group()
1327 static void service_dump(MppBufferService *srv, const char *info) in service_dump() argument
1333 mpp_mutex_lock(&srv->lock); in service_dump()
1337 if (hash_empty(srv->hash_group)) { in service_dump()
1340 hash_for_each_safe(srv->hash_group, key, n, group, hlist) { in service_dump()
1345 mpp_mutex_unlock(&srv->lock); in service_dump()