static void update_read_info_hwnames() { struct ibv_device **dev_list; int num_devices, i; uint64_t dev_guid; char *dev_name; size_t dev_name_len; dev_list = ibv_get_device_list(&num_devices); if (!dev_list) { fprintf(stderr, "No IB devices found\n"); return; } for (i = 0; i < num_devices; ++i) { int j; dev_guid = (uint64_t)ntohll(ibv_get_device_guid(dev_list[i])); dev_name = (char *)ibv_get_device_name(dev_list[i]); dev_name_len = strlen(dev_name) + 1; for (j = 0; j < nd_read_info_cnt; j++) { if (nd_read_info_arr[j].info_valid == B_TRUE && nd_read_info_arr[j].guid == dev_guid) { memcpy(nd_read_info_arr[j].ofuv_name, dev_name, dev_name_len); nd_read_info_arr[j].ofuv_name_valid = B_TRUE; break; } } } ibv_free_device_list(dev_list); }
static int print_device_info(void) { struct ibv_device ** ibv_devs; int i = 0; /*TODO: get num_devs automatically*/ int num_devs = 1; /*NULL => get all devices*/ ibv_devs = ibv_get_device_list(NULL); for (i = 0; i < num_devs; i++) { struct ibv_context *ibv_contxt; struct ibv_device_attr device_attr; char *dev_name; uint64_t dev_guid; ibv_contxt = ibv_open_device (ibv_devs[i]); dev_name = ibv_get_device_name(ibv_devs[i]); dev_guid = ibv_get_device_guid(ibv_devs[i]); printf("%s (%d):\n", dev_name, dev_guid); ibv_query_device (ibv_contxt, &device_attr); printf(" Record : %d\n", i); printf(" max_mr_size : %llu\n", device_attr.max_mr_size); printf(" max_mr : %llu\n", device_attr.max_mr); ibv_close_device (ibv_contxt); } ibv_free_device_list(ibv_devs); return 0; }
int main(int argc, char** argv) { struct ibv_device** devices; int num_devices; int i; devices = ibv_get_device_list(&num_devices); for(i=0; i<num_devices; i++) { uint64_t guid = ibv_get_device_guid(devices[i]); printf("%s \t%s \t%s \t%s \t0x%lx\n", devices[i]->name, devices[i]->dev_name, devices[i]->dev_path, devices[i]->ibdev_path, guid); } return EXIT_SUCCESS; }
int main(int argc, char *argv[]) { struct ibv_device **dev_list; int num_devices, i; dev_list = ibv_get_device_list(&num_devices); if (!dev_list) { perror("Failed to get IB devices list"); return 1; } printf(" %-16s\t node GUID\n", "device"); printf(" %-16s\t----------------\n", "------"); for (i = 0; i < num_devices; ++i) { printf(" %-16s\t%016llx\n", ibv_get_device_name(dev_list[i]), (unsigned long long) ntohll(ibv_get_device_guid(dev_list[i]))); } ibv_free_device_list(dev_list); return 0; }
uint64_t __ibv_get_device_guid_1_0(struct ibv_device_1_0 *device) { return ibv_get_device_guid(device->real_device); }
uint64_t __ibv_get_device_guid_1_0(struct ibv_device_1_0 *device) { fprintf(stderr, "%s:%s:%d \n", __func__, __FILE__, __LINE__); return ibv_get_device_guid(device->real_device); }
static int ucma_init(void) { struct ibv_device **dev_list = NULL; struct cma_device *cma_dev; struct ibv_device_attr attr; int i, ret, dev_cnt; pthread_mutex_lock(&mut); if (cma_dev_cnt) { pthread_mutex_unlock(&mut); return 0; } ret = check_abi_version(); if (ret) goto err1; dev_list = ibv_get_device_list(&dev_cnt); if (!dev_list) { printf("CMA: unable to get RDMA device list\n"); ret = ERR(ENODEV); goto err1; } cma_dev_array = malloc(sizeof *cma_dev * dev_cnt); if (!cma_dev_array) { ret = ERR(ENOMEM); goto err2; } for (i = 0; dev_list[i];) { cma_dev = &cma_dev_array[i]; cma_dev->guid = ibv_get_device_guid(dev_list[i]); cma_dev->verbs = ibv_open_device(dev_list[i]); if (!cma_dev->verbs) { printf("CMA: unable to open RDMA device\n"); ret = ERR(ENODEV); goto err3; } i++; ret = ibv_query_device(cma_dev->verbs, &attr); if (ret) { printf("CMA: unable to query RDMA device\n"); goto err3; } cma_dev->port_cnt = attr.phys_port_cnt; cma_dev->max_initiator_depth = (uint8_t) attr.max_qp_init_rd_atom; cma_dev->max_responder_resources = (uint8_t) attr.max_qp_rd_atom; } cma_dev_cnt = dev_cnt; pthread_mutex_unlock(&mut); ibv_free_device_list(dev_list); return 0; err3: while (i--) ibv_close_device(cma_dev_array[i].verbs); free(cma_dev_array); err2: ibv_free_device_list(dev_list); err1: pthread_mutex_unlock(&mut); return ret; }