/* * Main function */ static GtkWidget * dmm_init(struct osc_plugin *plugin, GtkWidget *notebook, const char *ini_fn) { GtkBuilder *builder; GtkWidget *dmm_panel; builder = gtk_builder_new(); nbook = GTK_NOTEBOOK(notebook); ctx = osc_create_context(); if (!ctx) return NULL; if (osc_load_glade_file(builder, "dmm") < 0) return NULL; dmm_panel = GTK_WIDGET(gtk_builder_get_object(builder, "dmm_panel")); device_list_widget = GTK_WIDGET(gtk_builder_get_object(builder, "device_list_view")); device_list_store = GTK_LIST_STORE(gtk_builder_get_object(builder, "device_list")); dmm_button = GTK_WIDGET(gtk_builder_get_object(builder, "dmm_button")); channel_list_store = GTK_LIST_STORE(gtk_builder_get_object(builder, "channel_list")); dmm_results = GTK_WIDGET(gtk_builder_get_object(builder, "dmm_results")); select_all_channels = GTK_WIDGET(gtk_builder_get_object(builder, "all_channels")); g_builder_connect_signal(builder, "device_toggle", "toggled", G_CALLBACK(device_toggled), device_list_store); g_builder_connect_signal(builder, "channel_toggle", "toggled", G_CALLBACK(channel_toggle), channel_list_store); g_builder_connect_signal(builder, "all_channels", "clicked", G_CALLBACK(pick_all_channels), channel_list_store); g_builder_connect_signal(builder, "dmm_button", "toggled", G_CALLBACK(dmm_button_clicked), channel_list_store); g_builder_bind_property(builder, "dmm_button", "active", "channel_list_view", "sensitive", G_BINDING_INVERT_BOOLEAN); g_builder_bind_property(builder, "dmm_button", "active", "device_list_view", "sensitive", G_BINDING_INVERT_BOOLEAN); g_object_bind_property_full(dmm_button, "active", dmm_button, "stock-id", 0, dmm_button_icon_transform, NULL, NULL, NULL); gtk_widget_show_all(dmm_panel); gtk_widget_hide(select_all_channels); init_device_list(); /* we are looking for almost random numbers, so this will work */ srand((unsigned int)time(NULL)); return dmm_panel; }
static ucs_status_t uct_ugni_md_open(const char *md_name, const uct_md_config_t *md_config, uct_md_h *md_p) { int domain_id; ucs_status_t status = UCS_OK; pthread_mutex_lock(&uct_ugni_global_lock); static uct_md_ops_t md_ops = { .close = uct_ugni_md_close, .query = uct_ugni_md_query, .mem_alloc = (void*)ucs_empty_function, .mem_free = (void*)ucs_empty_function, .mem_reg = uct_ugni_mem_reg, .mem_dereg = uct_ugni_mem_dereg, .mkey_pack = uct_ugni_rkey_pack }; static uct_ugni_md_t md = { .super.ops = &md_ops, .super.component = &uct_ugni_md_component, .ref_count = 0 }; *md_p = &md.super; if (!md.ref_count) { status = init_device_list(&job_info); if (UCS_OK != status) { ucs_error("Failed to init device list, Error status: %d", status); goto error; } status = uct_ugni_init_nic(0, &domain_id, &md.cdm_handle, &md.nic_handle, &md.address); if (UCS_OK != status) { ucs_error("Failed to UGNI NIC, Error status: %d", status); goto error; } } md.ref_count++; error: pthread_mutex_unlock(&uct_ugni_global_lock); return status; } uct_ugni_device_t * uct_ugni_device_by_name(const char *dev_name) { uct_ugni_device_t *dev; unsigned dev_index; if ((NULL == dev_name)) { ucs_error("Bad parameter. Device name is set to NULL"); return NULL; } for (dev_index = 0; dev_index < job_info.num_devices; ++dev_index) { dev = &job_info.devices[dev_index]; if ((strlen(dev_name) == strlen(dev->fname)) && (0 == strncmp(dev_name, dev->fname, strlen(dev->fname)))) { ucs_info("Device found: %s", dev_name); return dev; } } /* Device not found */ ucs_error("Cannot find: %s", dev_name); return NULL; } UCT_MD_COMPONENT_DEFINE(uct_ugni_md_component, UCT_UGNI_MD_NAME, uct_ugni_query_md_resources, uct_ugni_md_open, NULL, uct_ugni_rkey_unpack, uct_ugni_rkey_release, "UGNI_", uct_md_config_table, uct_md_config_t);