static GArray* __handle_acquire_requests(mm_resource_manager_dmn_p manager,
mm_resource_manager_dmn_res_request_s *requests);
static void __handle_release_callbacks(GArray *requests);
-static inline void __add_cb_request(GArray *cb_requests, mm_resource_manager_dmn_p man,
+static inline void __add_cb_request(GArray *cb_requests, mm_resource_manager_dmn_p mgr,
mm_resource_manager_res_type_e type, mm_resource_manager_res_volume volume);
static void __release_all_resources(mm_resource_manager_dmn_s *manager);
static gboolean __wait_for_release_cb_sync(mm_resource_manager_id id);
mm_resource_manager_error_e _mmrm_dmn_create(
mm_resource_manager_app_class_e app_class, mm_resource_manager_id *id)
{
- mm_resource_manager_dmn_p man;
+ mm_resource_manager_dmn_p mgr;
mm_resource_manager_conf_s *conf = mm_resource_manager_get_conf();
int i;
MM_RESOURCE_MANAGER_ERROR_INVALID_PARAMETER,
"App class is not supported for the platform");
- man = g_new0(mm_resource_manager_dmn_s, 1);
- MM_RM_RAND64(man->id);
- man->app_class = app_class;
+ mgr = g_new0(mm_resource_manager_dmn_s, 1);
+ MM_RM_RAND64(mgr->id);
+ mgr->app_class = app_class;
for (i = 0; i < MM_RESOURCE_MANAGER_RES_TYPE_MAX; i++) {
- man->resources[i] = conf->max_volume[i] == MM_RESOURCE_MANAGER_NO_RES ?
+ mgr->resources[i] = conf->max_volume[i] == MM_RESOURCE_MANAGER_NO_RES ?
NULL : g_malloc0(sizeof(mm_resource_manager_dmn_s));
}
- g_ptr_array_add(managers, man);
+ g_ptr_array_add(managers, mgr);
MM_RM_INFO("managers length %d", managers->len);
- *id = man->id;
+ *id = mgr->id;
return MM_RESOURCE_MANAGER_ERROR_NONE;
}
int idx = __search_manager_index(id);
mm_resource_manager_conf_s *conf = mm_resource_manager_get_conf();
mm_resource_manager_res_type_e type = MM_RESOURCE_MANAGER_RES_TYPE_MAX;
- mm_resource_manager_dmn_p i_man = __search_manager(id);
+ mm_resource_manager_dmn_p i_mgr = __search_manager(id);
MM_RM_RETVM_IF(idx == MM_RESOURCE_MANGER_NOT_FOUND, MM_RESOURCE_MANAGER_ERROR_INVALID_PARAMETER,
"Resource manager #%"PRIu64" doesn't exist", _mm_rm_hash64(id));
MM_RM_RETVM_IF(conf == NULL, MM_RESOURCE_MANAGER_ERROR_NONE, "conf is null");
- i_man = (mm_resource_manager_dmn_p)managers->pdata[idx];
+ i_mgr = (mm_resource_manager_dmn_p)managers->pdata[idx];
__release_all_resources((mm_resource_manager_dmn_s *)managers->pdata[idx]);
mm_resource_manager_backend_commit_all();
g_ptr_array_remove_index_fast(managers, idx);
- type = i_man->type;
+ type = i_mgr->type;
MM_RM_INFO("managers length #%d type %d available volume %d", managers->len, type, conf->max_volume[type]);
mm_resource_manager_dmn_res_request_s *requests)
{
mm_resource_manager_res_volume remaining_volume;
- mm_resource_manager_dmn_p i_man;
+ mm_resource_manager_dmn_p i_mgr;
mm_resource_manager_conf_s *conf = mm_resource_manager_get_conf();
int i, j, len;
mm_resource_manager_res_type_e type = MM_RESOURCE_MANAGER_RES_TYPE_MAX;
remaining_volume = conf->max_volume[type];
for (i = 0; i < len; i++) {
- i_man = (mm_resource_manager_dmn_p)managers->pdata[i];
+ i_mgr = (mm_resource_manager_dmn_p)managers->pdata[i];
- if (i_man != manager && conf->priority[i_man->app_class] > conf->priority[manager->app_class] &&
- i_man->resources[type]->is_acquired) {
- if (i_man->resources[type]->parts) {
+ if (i_mgr != manager && conf->priority[i_mgr->app_class] > conf->priority[manager->app_class] &&
+ i_mgr->resources[type]->is_acquired) {
+ if (i_mgr->resources[type]->parts) {
if (requests->volume == MM_RESOURCE_MANAGER_RES_VOLUME_FULL) {
requests->priority_error = TRUE;
MM_RM_DEBUG("Resource conflict. Full volume is requested, but only part is available");
return MM_RESOURCE_MANAGER_ERROR_LOW_PRIORITY;
} else {
- for (j = 0; j < i_man->resources[type]->parts->len; j++)
- remaining_volume -= g_array_index(i_man->resources[type]->parts,
+ for (j = 0; j < i_mgr->resources[type]->parts->len; j++)
+ remaining_volume -= g_array_index(i_mgr->resources[type]->parts,
mm_resource_manager_res_volume, j);
if (remaining_volume < requests->volume) {
}
}
-static inline void __add_cb_request(GArray *cb_requests,mm_resource_manager_dmn_p man,
+static inline void __add_cb_request(GArray *cb_requests,mm_resource_manager_dmn_p mgr,
mm_resource_manager_res_type_e type, mm_resource_manager_res_volume volume)
{
mm_resource_manager_dmn_release_cb_request_s *cb_request;
g_array_set_size(cb_requests, cb_requests->len + 1);
cb_request = &g_array_index(cb_requests, mm_resource_manager_dmn_release_cb_request_s, cb_requests->len - 1);
- cb_request->manager = man;
+ cb_request->manager = mgr;
cb_request->type = type;
cb_request->volume = volume;
}
{
mm_resource_manager_conf_s *conf = mm_resource_manager_get_conf();
mm_resource_manager_res_volume acquired_volume = 0;
- mm_resource_manager_dmn_p i_man = NULL, j_man = NULL;
+ mm_resource_manager_dmn_p i_mgr = NULL, j_mgr = NULL;
const char *res_name = NULL;
GArray *cb_requests = NULL;
GArray *res = NULL;
MM_RM_DEBUG("Full volume of %s is requested [man %p]", res_name, manager);
for (i = 0; i < managers->len; i++) {
- i_man = (mm_resource_manager_dmn_p)managers->pdata[i];
+ i_mgr = (mm_resource_manager_dmn_p)managers->pdata[i];
- if (!i_man->resources[type]->is_acquired ||
- conf->priority[i_man->app_class] >conf->priority[manager->app_class]) {
- i_man->resources[type]->is_acquired = TRUE;
+ if (!i_mgr->resources[type]->is_acquired ||
+ conf->priority[i_mgr->app_class] >conf->priority[manager->app_class]) {
+ i_mgr->resources[type]->is_acquired = TRUE;
if (conf->max_instance[type] > 0)
res_count[type]++;
continue;
}
- res = i_man->resources[type]->parts;
+ res = i_mgr->resources[type]->parts;
if (res) {
for (j = 0; j < res->len; j++) {
- __add_cb_request(cb_requests, i_man, type,
+ __add_cb_request(cb_requests, i_mgr, type,
g_array_index(res, mm_resource_manager_res_volume, j));
mm_resource_manager_backend_release(type);
}
g_array_free(res, TRUE);
- i_man->resources[type]->parts = NULL;
- i_man->resources[type]->is_acquired = FALSE;
+ i_mgr->resources[type]->parts = NULL;
+ i_mgr->resources[type]->is_acquired = FALSE;
MM_RM_DEBUG("All parts of %s are released in RM %"PRIu64,
- res_name, _mm_rm_hash64(i_man->id));
+ res_name, _mm_rm_hash64(i_mgr->id));
} else {
- __add_cb_request(cb_requests, i_man, type, MM_RESOURCE_MANAGER_RES_VOLUME_FULL);
+ __add_cb_request(cb_requests, i_mgr, type, MM_RESOURCE_MANAGER_RES_VOLUME_FULL);
mm_resource_manager_backend_release(type);
- i_man->resources[type]->is_acquired = FALSE;
+ i_mgr->resources[type]->is_acquired = FALSE;
MM_RM_DEBUG("Full resource %s is released in RM %"PRIu64" available volume %d",
- res_name, _mm_rm_hash64(i_man->id), conf->max_volume[type]);
+ res_name, _mm_rm_hash64(i_mgr->id), conf->max_volume[type]);
}
}
} else {
conf->max_instance[type], volume, conf->max_volume[type], res_name);
for (i = 0; i < managers->len; i++) {
- i_man = (mm_resource_manager_dmn_p)managers->pdata[i];
- res = i_man->resources[type]->parts;
+ i_mgr = (mm_resource_manager_dmn_p)managers->pdata[i];
+ res = i_mgr->resources[type]->parts;
- if (!i_man->resources[type]->is_acquired || res ||
- conf->priority[i_man->app_class] > conf->priority[manager->app_class]) {
+ if (!i_mgr->resources[type]->is_acquired || res ||
+ conf->priority[i_mgr->app_class] > conf->priority[manager->app_class]) {
if (conf->volume_would_be_checked[type] && conf->max_volume[type] >= 0 && !res) {
conf->max_volume[type] -= volume;
if (conf->max_instance[type] > 0 && conf->max_instance[type] == res_count[type]
&& !is_released_called_once) {
for (j = 0; j < managers->len; j++) {
- j_man = (mm_resource_manager_dmn_p)managers->pdata[j];
- res = j_man->resources[type]->parts;
+ j_mgr = (mm_resource_manager_dmn_p)managers->pdata[j];
+ res = j_mgr->resources[type]->parts;
- if (res && !j_man->would_be_released) {
+ if (res && !j_mgr->would_be_released) {
MM_RM_INFO("[#%d] [#%d / #%d] would be released %s in RM %"PRIu64,
- managers->len, j + 1, res->len, res_name, _mm_rm_hash64(j_man->id));
+ managers->len, j + 1, res->len, res_name, _mm_rm_hash64(j_mgr->id));
- j_man->would_be_released = TRUE;
- __add_cb_request(cb_requests, j_man, type,
+ j_mgr->would_be_released = TRUE;
+ __add_cb_request(cb_requests, j_mgr, type,
g_array_index(res, mm_resource_manager_res_volume, 0));
mm_resource_manager_backend_release(type);
if (conf->max_instance[type] > 0 && !res)
res_count[type]++;
- i_man->resources[type]->is_acquired = TRUE;
+ i_mgr->resources[type]->is_acquired = TRUE;
if (conf->max_instance[type] < res_count[type])
break;
if (conf->volume_would_be_checked[type] && conf->max_volume[type] < 0
&& acquired_volume < volume) {
for (j = 0; j < managers->len; j++) {
- j_man = (mm_resource_manager_dmn_p)managers->pdata[j];
- res = j_man->resources[type]->parts;
+ j_mgr = (mm_resource_manager_dmn_p)managers->pdata[j];
+ res = j_mgr->resources[type]->parts;
- if (j_man->would_be_released)
+ if (j_mgr->would_be_released)
continue;
acquired_volume += g_array_index(res, mm_resource_manager_res_volume, 0);
MM_RM_INFO("[#%d] [#%d / #%d] There are %d units of %s in RM %"PRIu64,
managers->len, j + 1, res->len, acquired_volume, res_name,
- _mm_rm_hash64(j_man->id));
+ _mm_rm_hash64(j_mgr->id));
- j_man->would_be_released = TRUE;
- __add_cb_request(cb_requests, j_man, type,
+ j_mgr->would_be_released = TRUE;
+ __add_cb_request(cb_requests, j_mgr, type,
g_array_index(res, mm_resource_manager_res_volume, 0));
mm_resource_manager_backend_release(type);
mm_resource_manager_backend_acquire(type);
}
- manager->is_acquired = TRUE;
return cb_requests;
}
mm_resource_manager_dmn_release_cb_request_s *request;
mm_resource_manager_res_type_e type = MM_RESOURCE_MANAGER_RES_TYPE_MAX;
mm_resource_manager_res_volume volume = MM_RESOURCE_MANAGER_RES_VOLUME_FULL;
- mm_resource_manager_dmn_p man = NULL;
+ mm_resource_manager_dmn_p mgr = NULL;
mm_resource_manager_conf_s *conf = mm_resource_manager_get_conf();
MM_RM_RETM_IF(requests == NULL, "requests is NULL");
for (i = 0; i < requests->len; i++) {
request = &g_array_index(requests, mm_resource_manager_dmn_release_cb_request_s, i);
- man = request->manager;
+ mgr = request->manager;
- if (!man->is_acquired)
+ if (!mgr->is_acquired)
continue;
- id = man->id;
+ id = mgr->id;
MM_RM_HASH64(id);
type = request->type;
volume = request->volume;
MM_RM_INFO("Sending release callback to [man %p acquired %d] RM #%"PRIu64" for %s of volume %d",
- man, man->is_acquired, id, _mm_resource_manager_get_res_str(type), volume);
+ mgr, mgr->is_acquired, id, _mm_resource_manager_get_res_str(type), volume);
_mmrm_dmn_dbus_release_callback(id, type, volume);
if (__wait_for_release_cb_sync(id))
res_count[type]--;
MM_RM_INFO("The number of type %d #%d", type, res_count[type]);
}
-
- man->is_acquired = FALSE;
}
}
* the next sync.
*/
sync.revents = 0;
- if (poll(&sync, 1, RELEASE_CB_SYNC_TIMEOUT * 1000) == 0
- || (sync.revents & (POLLHUP | POLLERR)) == 0)
+ if (poll(&sync, 1, RELEASE_CB_SYNC_TIMEOUT * 1000) == 0 || (sync.revents & (POLLHUP | POLLERR)) == 0)
MM_RM_ERROR("The client didn't close the FIFO");
} else {
MM_RM_ERROR("Read is failed (revents=%hd,read_size=%zd)", sync.revents, read_size);