コード例 #1
0
ファイル: fabrics.c プロジェクト: safl/nvme-cli
static int disconnect_by_device(char *device)
{
	int instance;
	int ret;

	ret = sscanf(device, "nvme%d", &instance);
	if (ret < 0)
		return ret;

	return remove_ctrl(instance);
}
コード例 #2
0
ファイル: fabrics.c プロジェクト: safl/nvme-cli
static int do_discover(char *argstr, bool connect)
{
	struct nvmf_disc_rsp_page_hdr *log = NULL;
	char *dev_name;
	int instance, numrec = 0, ret;

	instance = add_ctrl(argstr);
	if (instance < 0)
		return instance;

	if (asprintf(&dev_name, "/dev/nvme%d", instance) < 0)
		return errno;
	ret = nvmf_get_log_page_discovery(dev_name, &log, &numrec);
	free(dev_name);
	remove_ctrl(instance);

	switch (ret) {
	case DISC_OK:
		if (connect)
			connect_ctrls(log, numrec);
		else if (cfg.raw)
			save_discovery_log(log, numrec);
		else
			print_discovery_log(log, numrec);
		break;
	case DISC_GET_NUMRECS:
		fprintf(stderr,
			"Get number of discovery log entries failed.\n");
		break;
	case DISC_GET_LOG:
		fprintf(stderr, "Get discovery log entries failed.\n");
		break;
	case DISC_NO_LOG:
		fprintf(stderr, "No discovery log entries to fetch.\n");
		break;
	case DISC_NOT_EQUAL:
		fprintf(stderr,
		"Numrec values of last two get dicovery log page not equal\n");
		break;
	default:
		fprintf(stderr, "Get dicovery log page failed: %d\n", ret);
		break;
	}

	return ret;
}
コード例 #3
0
main(int argc, char **argv)
{
    uint64_t diff;
    struct timespec start, end;
    int i;
    
    int sumDiff = 0;
    int nTime = 100000;
    std::string s("1 2 3 4  5 d  df df d f df e rwe g d vf g g er g fg f gerg rg erg df g d fg r g");
    /* measure monotonic time */
    clock_gettime(CLOCK_MONOTONIC, &start); /* mark start time */
    //sleep(1);   /* do stuff */
    for(int i=0; i<nTime;i++)
    {
        std::string result = remove_ctrl(s);
    }
    clock_gettime(CLOCK_MONOTONIC, &end);   /* mark the end time */

    sumDiff = BILLION * (end.tv_sec - start.tv_sec) + end.tv_nsec - start.tv_nsec;
    diff = sumDiff / nTime;
    printf("elapsed time = %llu nanoseconds\n", (long long unsigned int) diff);

    clock_gettime(CLOCK_MONOTONIC, &start); /* mark start time */
    //sleep(1);   /* do stuff */
    for(int i=0; i<nTime;i++)
    {
        std::string result = remove_ctrl_mutating(s);
    }
    clock_gettime(CLOCK_MONOTONIC, &end);   /* mark the end time */

    sumDiff = BILLION * (end.tv_sec - start.tv_sec) + end.tv_nsec - start.tv_nsec;
    diff = sumDiff / nTime;
    printf("elapsed time = %llu nanoseconds\n", (long long unsigned int) diff);

    clock_gettime(CLOCK_MONOTONIC, &start); /* mark start time */
    //sleep(1);   /* do stuff */
    for(int i=0; i<nTime;i++)
    {
        std::string result = remove_ctrl_reserve(s);
    }
    clock_gettime(CLOCK_MONOTONIC, &end);   /* mark the end time */

    sumDiff = BILLION * (end.tv_sec - start.tv_sec) + end.tv_nsec - start.tv_nsec;
    diff = sumDiff / nTime;
    printf("elapsed time = %llu nanoseconds\n", (long long unsigned int) diff);

    clock_gettime(CLOCK_MONOTONIC, &start); /* mark start time */
    //sleep(1);   /* do stuff */
    for(int i=0; i<nTime;i++)
    {
        std::string result = remove_ctrl_ref_args(s);
    }
    clock_gettime(CLOCK_MONOTONIC, &end);   /* mark the end time */

    sumDiff = BILLION * (end.tv_sec - start.tv_sec) + end.tv_nsec - start.tv_nsec;
    diff = sumDiff / nTime;
    printf("elapsed time = %llu nanoseconds\n", (long long unsigned int) diff);

    clock_gettime(CLOCK_MONOTONIC, &start); /* mark start time */
    //sleep(1);   /* do stuff */
    for(int i=0; i<nTime;i++)
    {
        std::string result = remove_ctrl_ref_args_it(s);
    }
    clock_gettime(CLOCK_MONOTONIC, &end);   /* mark the end time */

    sumDiff = BILLION * (end.tv_sec - start.tv_sec) + end.tv_nsec - start.tv_nsec;
    diff = sumDiff / nTime;
    printf("elapsed time = %llu nanoseconds\n", (long long unsigned int) diff);
    
    // initialize char *
    char* result = (char*)malloc(sizeof(char)*(s.length()+1));
    clock_gettime(CLOCK_MONOTONIC, &start); /* mark start time */
    //sleep(1);   /* do stuff */
    for(int i=0; i<nTime;i++)
    {
        remove_ctrl_cstrings(result,s.c_str(),s.length());
    }
    clock_gettime(CLOCK_MONOTONIC, &end);   /* mark the end time */

    sumDiff = BILLION * (end.tv_sec - start.tv_sec) + end.tv_nsec - start.tv_nsec;
    diff = sumDiff / nTime;
    printf("elapsed time = %llu nanoseconds\n", (long long unsigned int) diff);
    printf("result : %s\n",result);
    /* now re-do this and measure CPU time */
    /* the time spent sleeping will not count (but there is a bit of overhead */
    clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &start);    /* mark start time */
    sleep(1);   /* do stuff */
    clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &end);      /* mark the end time */

    diff = BILLION * (end.tv_sec - start.tv_sec) + end.tv_nsec - start.tv_nsec;
    printf("elapsed process CPU time = %llu nanoseconds\n", (long long unsigned int) diff);

    exit(0);
}