コード例 #1
0
static int
check_number(kdump_ctx *ctx, const char *attrpath, long long expect)
{
	kdump_attr_t attr;
	kdump_status status;

	status = kdump_get_attr(ctx, attrpath, &attr);
	if (status != kdump_ok) {
		fprintf(stderr, "%s: Cannot get value: %s\n",
			attrpath, kdump_err_str(ctx));
		return TEST_ERR;
	}
	if (attr.type != kdump_number) {
		fprintf(stderr, "%s: Wrong attribute type: %d\n",
			attrpath, (int) attr.type);
		return TEST_FAIL;
	}
	if (attr.val.number != expect) {
		fprintf(stderr, "%s: Invalid attribute value: %lld != %lld\n",
			attrpath, (long long) attr.val.number, expect);
		return TEST_FAIL;
	}

	printf("%s: %lld\n", attrpath, (long long) attr.val.number);

	return TEST_OK;
}
コード例 #2
0
static int
check_string(kdump_ctx *ctx, const char *attrpath, const char *expect)
{
	kdump_attr_t attr;
	kdump_status status;

	status = kdump_get_attr(ctx, attrpath, &attr);
	if (status != kdump_ok) {
		fprintf(stderr, "%s: Cannot get value: %s\n",
			attrpath, kdump_err_str(ctx));
		return TEST_ERR;
	}
	if (attr.type != kdump_string) {
		fprintf(stderr, "%s: Wrong attribute type: %d\n",
			attrpath, (int) attr.type);
		return TEST_FAIL;
	}
	if (strcmp(attr.val.string, expect)) {
		fprintf(stderr, "%s: Invalid attribute value: '%s' != '%s'\n",
			attrpath, attr.val.string, expect);
		return TEST_FAIL;
	}

	printf("%s: %s\n", attrpath, attr.val.string);
	return TEST_OK;
}
コード例 #3
0
ファイル: vmci-cleanup.c プロジェクト: ptesarik/libkdumpfile
static int
check(kdump_ctx_t *ctx)
{
	unsigned cnt;
	kdump_attr_t attr;
	kdump_status status;

	/* First value. */
	cnt = 1;

	attr.type = KDUMP_STRING;
	attr.val.string = vmcore1;
	status = kdump_set_attr(ctx, "linux.vmcoreinfo.raw", &attr);
	if (status != KDUMP_OK) {
		fprintf(stderr, "#%d: Cannot set vmcoreinfo: %s\n",
			cnt, kdump_get_err(ctx));
		return TEST_ERR;
	}

	status = kdump_get_attr(ctx, "linux.vmcoreinfo.lines.DIR.SUB.VAL",
				&attr);
	if (status != KDUMP_OK) {
		fprintf(stderr, "#%d: Cannot get vmcoreinfo: %s\n",
			cnt, kdump_get_err(ctx));
		return TEST_ERR;
	}

	if (attr.type != KDUMP_STRING || strcmp(attr.val.string, "test1")) {
		fprintf(stderr, "#%d: Invalid attribute value\n", cnt);
		return TEST_FAIL;
	}
	printf("#%d: DIR.SUB.VAL=%s\n", cnt, attr.val.string);

	/* (Conflicting) second value */
	cnt = 2;

	attr.type = KDUMP_STRING;
	attr.val.string = vmcore2;
	status = kdump_set_attr(ctx, "linux.vmcoreinfo.raw", &attr);
	if (status != KDUMP_OK) {
		fprintf(stderr, "#%d: Cannot set vmcoreinfo: %s\n",
			cnt, kdump_get_err(ctx));
		return TEST_ERR;
	}

	status = kdump_get_attr(ctx, "linux.vmcoreinfo.lines.DIR.SUB", &attr);
	if (status != KDUMP_OK) {
		fprintf(stderr, "#%d: Cannot get vmcoreinfo: %s\n",
			cnt, kdump_get_err(ctx));
		return TEST_ERR;
	}

	if (attr.type != KDUMP_STRING || strcmp(attr.val.string, "test2")) {
		fprintf(stderr, "#%d: Invalid attribute value\n", cnt);
		return TEST_FAIL;
	}
	printf("#%d: DIR.SUB=%s\n", cnt, attr.val.string);

	attr.type = KDUMP_NIL;
	status = kdump_set_attr(ctx, "linux.vmcoreinfo.raw", &attr);
	if (status != KDUMP_OK) {
		fprintf(stderr, "Cannot clear vmcoreinfo: %s\n",
			kdump_get_err(ctx));
		return TEST_ERR;
	}

	status = kdump_get_attr(ctx, "linux.vmcoreinfo.lines.DIR.SUB", &attr);
	if (status == KDUMP_OK) {
		fprintf(stderr, "vmcoreinfo not cleared!\n");
		return TEST_ERR;
	} else if (status != KDUMP_ERR_NOKEY) {
		fprintf(stderr, "Unexpected failure after unset: %s\n",
			kdump_get_err(ctx));
		return TEST_ERR;
	}
	printf("DIR.SUB is now clear\n");

	return TEST_OK;
}