示例#1
0
static int test_resource_dpdk(void)
{
	const struct resource *r;

	r = resource_find("test_resource_dpdk");
	TEST_ASSERT_NOT_NULL(r, "Could not find test_resource_dpdk");
	TEST_ASSERT(!strcmp(r->name, "test_resource_dpdk"),
			"Found resource %s, expected test_resource_dpdk",
			r->name);

	TEST_ASSERT(!strncmp("DPDK", r->begin, 4),
			"Unexpected payload: %.4s...", r->begin);

	return 0;
}
示例#2
0
int
resource_string_value(const char *name, int unit, const char *resname,
    const char **result)
{
	int error;
	const char *str;
	int line;

	line = 0;
	error = resource_find(&line, NULL, name, &unit, resname, NULL,
	    NULL, NULL, NULL, NULL, NULL, &str);
	if (error)
		return error;
	*result = str;
	return 0;
}
示例#3
0
/*
 * err = resource_find_dev(&anchor, name, &unit, res, value);
 * Iterate through a list of devices, returning their unit numbers.
 * res and value are optional restrictions.  eg: "at", "scbus0".
 * *unit is set to the value.
 * set *anchor to zero before starting.
 */
int
resource_find_dev(int *anchor, const char *name, int *unit,
    const char *resname, const char *value)
{
	int found_unit;
	int newln;
	int ret;

	newln = *anchor;
	ret = resource_find(anchor, &newln, name, NULL, resname, value,
	    NULL, NULL, &found_unit, NULL, NULL, NULL);
	if (ret == 0) {
		*unit = found_unit;
	}
	*anchor = newln;
	return ret;
}
示例#4
0
/*
 * err = resource_find_match(&anchor, &name, &unit, resname, value)
 * Iteratively fetch a list of devices wired "at" something
 * res and value are restrictions.  eg: "at", "scbus0".
 * For practical purposes, res = required, value = optional.
 * *name and *unit are set.
 * set *anchor to zero before starting.
 */
int
resource_find_match(int *anchor, const char **name, int *unit,
    const char *resname, const char *value)
{
	const char *found_name;
	int found_namelen;
	int found_unit;
	int ret;
	int newln;

	newln = *anchor;
	ret = resource_find(anchor, &newln, NULL, NULL, resname, value,
	    &found_name, &found_namelen, &found_unit, NULL, NULL, NULL);
	if (ret == 0) {
		*name = resource_string_copy(found_name, found_namelen);
		*unit = found_unit;
	}
	*anchor = newln;
	return ret;
}
示例#5
0
int
resource_int_value(const char *name, int unit, const char *resname, int *result)
{
	int error;
	const char *str;
	char *op;
	unsigned long val;
	int line;

	line = 0;
	error = resource_find(&line, NULL, name, &unit, resname, NULL,
	    NULL, NULL, NULL, NULL, NULL, &str);
	if (error)
		return error;
	if (*str == '\0') 
		return EFTYPE;
	val = strtoul(str, &op, 0);
	if (*op != '\0') 
		return EFTYPE;
	*result = val;
	return 0;
}
示例#6
0
static int test_resource_c(void)
{
	const struct resource *r;
	FILE *f;

	r = resource_find("test_resource_c");
	TEST_ASSERT_NOT_NULL(r, "No test_resource_c found");
	TEST_ASSERT(!strcmp(r->name, "test_resource_c"),
			"Found resource %s, expected test_resource_c",
			r->name);

	TEST_ASSERT_SUCCESS(resource_fwrite_file(r, "test_resource.c"),
			"Failed to to write file %s", r->name);

	f = fopen("test_resource.c", "r");
	TEST_ASSERT_NOT_NULL(f,
			"Missing extracted file resource.c");
	fclose(f);
	remove("test_resource.c");

	return 0;
}
示例#7
0
static int test_resource_tar(void)
{
	const struct resource *r;
	FILE *f;

	r = resource_find("test_resource_tar");
	TEST_ASSERT_NOT_NULL(r, "No test_resource_tar found");
	TEST_ASSERT(!strcmp(r->name, "test_resource_tar"),
			"Found resource %s, expected test_resource_tar",
			r->name);

	TEST_ASSERT_SUCCESS(resource_untar(r),
			"Failed to to untar %s", r->name);

	f = fopen("test_resource.c", "r");
	TEST_ASSERT_NOT_NULL(f,
			"Missing extracted file test_resource.c");
	fclose(f);

	TEST_ASSERT_SUCCESS(resource_rm_by_tar(r),
			"Failed to remove extracted contents of %s", r->name);
	return 0;
}