fdo_ptr texture_fdb::make_fdo(const key_mapper_ptr& keys) const { int x = get_int_attr("x", keys, 0); int y = get_int_attr("y", keys, 0); int w = get_int_attr("w", keys, 0); int h = get_int_attr("h", keys, 0); std::string texture = get_string_attr("file", keys, ""); bool tile = get_bool_attr("tile", keys, true); return fdo_ptr(new texture_fdo(x,y,w,h,texture,tile)); }
static int attr_ivalue(attr_list l, char *name) { atom_t atom = attr_atom_from_string(name); int i = 0; if (atom == 0 ) return 0; get_int_attr(l, atom, &i); return i; }
int get_ndims_attr(const char *field_name, attr_list attrs) { char atom_name[200] = ""; strcat(atom_name, FP_NDIMS_ATTR_NAME); strcat(atom_name, "_"); strcat(atom_name, field_name); int num_dims; atom_t atm = attr_atom_from_string(atom_name); get_int_attr(attrs, atm, &num_dims); return num_dims; }
int frame_draw_builder::get_int_attr(const std::string& name, const key_mapper_ptr& keys, int deflt, int min, int max) const { int ret = get_int_attr(name, keys, deflt); if(ret > max) { ret = max; } else if(ret < min) { ret = min; } return ret; }
fdo_ptr rect_fdb::make_fdo(const key_mapper_ptr& keys) const { int x = get_int_attr("x", keys, 0); int y = get_int_attr("y", keys, 0); int w = get_int_attr("w", keys, 0); int h = get_int_attr("h", keys, 0); bool fill = get_bool_attr("fill", keys, true); SDL_Color color; color.r = get_int_attr("r", keys, 0, 0, 255); color.g = get_int_attr("g", keys, 0, 0, 255); color.b = get_int_attr("b", keys, 0, 0, 255); color.unused = 255; int alpha = get_int_attr("a", keys, 255, 0, 255); return fdo_ptr(new rect_fdo(x,y,w,h,fill,color,alpha)); }
fdo_ptr text_fdb::make_fdo(const key_mapper_ptr& keys) const { int x = get_int_attr("x", keys, 0); int y = get_int_attr("y", keys, 0); int size = get_int_attr("size", keys, 0); std::string text = get_string_attr("text", keys, ""); SDL_Color color; color.r = get_int_attr("r", keys, 0, 0, 255); color.g = get_int_attr("g", keys, 0, 0, 255); color.b = get_int_attr("b", keys, 0, 0, 255); color.unused = 255; return fdo_ptr(new text_fdo(x,y,size,color,text)); }
static uint64_t calc_ffspacket_size(FMField *f, attr_list attrs, void *buffer) { uint64_t size = 0; while(f->field_name){ char atom_name[200] = ""; strcat(atom_name, FP_NDIMS_ATTR_NAME); strcat(atom_name, "_"); strcat(atom_name, f->field_name); int num_dims = 0; get_int_attr(attrs, attr_atom_from_string(atom_name), &num_dims); if(num_dims == 0){ size += (uint64_t)f->field_size; } else{ int i; uint64_t tmpsize = (uint64_t)f->field_size; for(i=0; i<num_dims; i++){ char *dim; char atom_name[200] =""; strcat(atom_name, FP_DIM_ATTR_NAME); strcat(atom_name, "_"); strcat(atom_name, f->field_name); strcat(atom_name, "_"); char dim_num[10] = ""; sprintf(dim_num, "%d", i+1); strcat(atom_name, dim_num); get_string_attr(attrs, attr_atom_from_string(atom_name), &dim); FMField *temp_field = find_field_by_name(dim, f); uint64_t *temp_val = get_FMfieldAddr_by_name(temp_field, temp_field->field_name, buffer); uint64_t dimval = *temp_val; tmpsize *= dimval; } size += tmpsize; } f++; } return size; }
static int raw_handler(CManager cm, void *vevent, int len, void *client_data, attr_list attrs) { ADIOS_FILE *adiosfile = client_data; flexpath_reader_file *fp = (flexpath_reader_file*)adiosfile->fh; double data_end = dgettimeofday(); if(fp->time_in == 0.00) fp->time_in = data_end; // used for perf measurements only int condition; int writer_rank; int flush_id; double data_start; get_double_attr(attrs, attr_atom_from_string("fp_starttime"), &data_start); get_int_attr(attrs, attr_atom_from_string("fp_dst_condition"), &condition); get_int_attr(attrs, attr_atom_from_string(FP_RANK_ATTR_NAME), &writer_rank); get_int_attr(attrs, attr_atom_from_string("fp_flush_id"), &flush_id); double format_start = dgettimeofday(); FMContext context = CMget_FMcontext(cm); void *base_data = FMheader_skip(context, vevent); FMFormat format = FMformat_from_ID(context, vevent); // copy //FMfree_struct_desc_list call FMStructDescList struct_list = FMcopy_struct_list(format_list_of_FMFormat(format)); FMField *f = struct_list[0].field_list; #if 0 uint64_t packet_size = calc_ffspacket_size(f, attrs, base_data); fp->data_read += packet_size; #endif /* setting up initial vars from the format list that comes along with the message. Message contains both an FFS description and the data. */ if(fp->num_vars == 0){ int var_count = 0; fp->var_list = setup_flexpath_vars(f, &var_count); adiosfile->var_namelist = malloc(var_count * sizeof(char *)); int i = 0; while(f->field_name != NULL) { adiosfile->var_namelist[i++] = strdup(f->field_name); f++; } adiosfile->nvars = var_count; fp->num_vars = var_count; } f = struct_list[0].field_list; char *curr_offset = NULL; while(f->field_name){ char atom_name[200] = ""; flexpath_var *var = find_fp_var(fp->var_list, f->field_name); if(!var){ adios_error(err_file_open_error, "file not opened correctly. var does not match format.\n"); return err_file_open_error; } int num_dims = get_ndims_attr(f->field_name, attrs); var->num_dims = num_dims; flexpath_var_chunk *curr_chunk = &var->chunks[0]; // has the var been scheduled? if(var->sel){ if(var->sel->type == ADIOS_SELECTION_WRITEBLOCK){ if(num_dims == 0){ // writeblock selection for scalar if(var->sel->u.block.index == writer_rank){ void *tmp_data = get_FMfieldAddr_by_name(f, f->field_name, base_data); memcpy(var->chunks[0].user_buf, tmp_data, f->field_size); } } else { // writeblock selection for arrays /* if(var->num_dims == 0){ */ /* var->global_dims = malloc(sizeof(uint64_t)*num_dims); */ /* } */ if(var->sel->u.block.index == writer_rank){ var->array_size = var->type_size; int i; for(i=0; i<num_dims; i++){ char *dim; atom_name[0] ='\0'; strcat(atom_name, FP_DIM_ATTR_NAME); strcat(atom_name, "_"); strcat(atom_name, f->field_name); strcat(atom_name, "_"); char dim_num[10] = ""; sprintf(dim_num, "%d", i+1); strcat(atom_name, dim_num); get_string_attr(attrs, attr_atom_from_string(atom_name), &dim); FMField *temp_field = find_field_by_name(dim, f); if(!temp_field){ adios_error(err_corrupted_variable, "Could not find fieldname: %s\n", dim); } else{ int *temp_data = get_FMfieldAddr_by_name(temp_field, temp_field->field_name, base_data); uint64_t dim = (uint64_t)(*temp_data); var->array_size = var->array_size * dim; } } void *arrays_data = get_FMPtrField_by_name(f, f->field_name, base_data, 1); memcpy(var->chunks[0].user_buf, arrays_data, var->array_size); } } } else if(var->sel->type == ADIOS_SELECTION_BOUNDINGBOX){ if(num_dims == 0){ // scalars; throw error adios_error(err_offset_required, "Only scalars can be scheduled with write_block selection.\n"); } else{ // arrays int i; global_var *gv = find_gbl_var(fp->gp->vars, var->varname, fp->gp->num_vars); array_displacements * disp = find_displacement(var->displ, writer_rank, var->num_displ); if(disp){ // does this writer hold a chunk we've asked for, for this var? uint64_t *temp = gv->offsets[0].local_dimensions; int offsets_per_rank = gv->offsets[0].offsets_per_rank; uint64_t *writer_sizes = &temp[offsets_per_rank * writer_rank]; uint64_t *sel_start = disp->start; uint64_t *sel_count = disp->count; char *writer_array = (char*)get_FMPtrField_by_name(f, f->field_name, base_data, 1); char *reader_array = (char*)var->chunks[0].user_buf; uint64_t reader_start_pos = disp->pos; var->start_position += copyarray(writer_sizes, sel_start, sel_count, disp->ndims, f->field_size, 0, writer_array, reader_array+reader_start_pos); } } } } else { //var has not been scheduled; if(num_dims == 0){ // only worry about scalars flexpath_var_chunk *chunk = &var->chunks[0]; if(!chunk->has_data){ void *tmp_data = get_FMfieldAddr_by_name(f, f->field_name, base_data); chunk->data = malloc(f->field_size); memcpy(chunk->data, tmp_data, f->field_size); chunk->has_data = 1; } } } f++; } if(condition == -1){ fp->completed_requests++; if(fp->completed_requests == fp->pending_requests){ pthread_mutex_lock(&fp->data_mutex); pthread_cond_signal(&fp->data_condition); pthread_mutex_unlock(&fp->data_mutex); } } else{ CMCondition_signal(fp_read_data->fp_cm, condition); } free_fmstructdesclist(struct_list); return 0; }
int rmm_cfg_get_baudrate(void) { return get_int_attr(PROC_IPMI_MODULE, ATTR_IPMID_SERIAL_BAUDRATE); }
int rmm_cfg_get_port(int port_attr) { switch (port_attr) { case ASSETD_PORT: return get_int_attr(PROC_ASSETD, ATTR_PORT); case RESTD_PORT: return get_int_attr(PROC_RESTD, ATTR_PORT); case MEMDBD_PORT: return get_int_attr(PROC_MEMDBD, ATTR_PORT); case IPMIMODULE_PORT: return get_int_attr(PROC_IPMI_MODULE, ATTR_PORT); case REDFISHD_PORT: return get_int_attr(PROC_REDFISHD, ATTR_PORT); case SNMPAGENTD_PORT: return get_int_attr(PROC_SNMP_SUBAGENTD, ATTR_PORT); case SENSORD_PORT: return get_int_attr(PROC_SENSORD, ATTR_PORT); case UPGRADED_PORT: return get_int_attr(PROC_UPGRADED, ATTR_PORT); case LOGD_PORT: return get_int_attr(PROC_RMM_LOGD, ATTR_PORT); case DBSYNCD_PORT: return get_int_attr(PROC_DB_SYNCD, ATTR_PORT); case RMMKEEPERD_PORT: return get_int_attr(PROC_RMM_KEEPERD, ATTR_PORT); case SYNCDB_VER_PORT: return get_int_attr(PROC_RMM_KEEPERD, ATTR_SYNC_DB_VER_PORT); case KEEPERDB_PORT: return get_int_attr(PROC_RMM_KEEPERD, ATTR_KEEPER_DDB_PORT); case SNAPSHOT_SYNC_PORT: return get_int_attr(PROC_DB_SYNCD, ATTR_SNAPSHOT_SYNC_PORT); case IPMIRMCPCLIENT_PORT: return get_int_attr(PROC_IPMI_MODULE, ATTR_IPMI_RMCP_CLIENT_PORT); case IPMIIPMB_PORT: return get_int_attr(PROC_IPMI_MODULE, ATTR_IPMI_IPMB_UDP_PORT); case IPMII2CD_PORT: return get_int_attr(PROC_IPMI_MODULE, ATTR_IPMI_I2CD_UDP_PORT); case IPMI_LISTEN_PORT: return get_int_attr(PROC_IPMI_MODULE, ATTR_IPMI_LISTEN_PORT); case IPMICOOLINGCTRL_PORT: return get_int_attr(PROC_IPMI_MODULE, ATTR_IPMI_COOLING_CTRL_PORT); case IPMIPOWERMGMT_PORT: return get_int_attr(PROC_IPMI_MODULE, ATTR_IPMI_POWER_MGMT_PORT); case IPMIASSETMODULE_PORT: return get_int_attr(PROC_IPMI_MODULE, ATTR_IPMI_ASSET_MODULE_PORT); case IPMISENSORD_PORT: return get_int_attr(PROC_IPMI_MODULE, ATTR_IPMI_SENSOR_MONITOR_PORT); case IPMITEST_PORT: return get_int_attr(PROC_IPMI_MODULE, ATTR_IPMI_TEST_PORT); case IPMIUARTTGTCFG_PORT: return get_int_attr(PROC_IPMI_MODULE, ATTR_IPMI_UART_TGT_CFG_PORT); case IPMIWEBSOCKET_PORT: return get_int_attr(PROC_IPMI_MODULE, ATTR_IPMI_WEBSOCKET_PORT); case IPMIJSONRPC_SERVER_PORT: return get_int_attr(PROC_IPMI_MODULE, ATTR_IPMI_JSON_RPC_SERVER_PORT); case IPMIJSONRPC_IPMID_PORT: return get_int_attr(PROC_IPMI_MODULE, ATTR_IPMI_JSON_RPC_IPMID_PORT); case ASSETMGR_JSONRPC_PORT: return get_int_attr(PROC_ASSETD, ATTR_JRPC_PORT); case IPMIJSONRPC_SNMP_SUBAGENT_PORT: return get_int_attr(PROC_IPMI_MODULE, ATTR_IPMI_JSON_RPC_SNMP_SUBAGNETD_PORT); case ASSET_MODULE_PORT: return get_int_attr(PROC_ASSET_MODULE, ATTR_PORT); case REGISTERD_PORT: return get_int_attr(PROC_REGISTERD, ATTR_PORT); case REGISTERD_JSONRPC_PORT: return get_int_attr(PROC_REGISTERD, ATTR_JRPC_PORT); default: break; } return -1; }