Exemplo n.º 1
0
const char *fdt_get_alias_namelen(const void *fdt,
				  const char *name, int namelen)
{
	int aliasoffset;

	aliasoffset = fdt_path_offset(fdt, "/aliases");
	if (aliasoffset < 0)
		return NULL;

	return fdt_getprop_namelen(fdt, aliasoffset, name, namelen, NULL);
}
Exemplo n.º 2
0
int fdt_path_offset(const void *fdt, const char *path)
{
	const char *end = path + strlen(path);
	const char *p = path;
	int offset = 0;

	FDT_CHECK_HEADER(fdt);

	/* see if we have an alias */
	if (*path != '/') {
		const char *q;
		int aliasoffset = fdt_path_offset(fdt, "/aliases");

		if (aliasoffset < 0)
			return -FDT_ERR_BADPATH;

		q = strchr(path, '/');
		if (!q)
			q = end;

		p = fdt_getprop_namelen(fdt, aliasoffset, path, q - p, NULL);
		if (!p)
			return -FDT_ERR_BADPATH;
		offset = fdt_path_offset(fdt, p);

		p = q;
	}

	while (*p) {
		const char *q;

		while (*p == '/')
			p++;
		if (! *p)
			return offset;
		q = strchr(p, '/');
		if (! q)
			q = end;

		offset = fdt_subnode_offset_namelen(fdt, offset, p, q-p);
		if (offset < 0)
			return offset;

		p = q;
	}

	return offset;
}
Exemplo n.º 3
0
/*
 * name: alias
 * namelen: alias 길이
*/
const char *fdt_get_alias_namelen(const void *fdt,
				  const char *name, int namelen)
{
	int aliasoffset;

	// aliases에 정의된 alias가 있는지 찾아보고 alias offset을 가져옴
	aliasoffset = fdt_path_offset(fdt, "/aliases");
	// alias offset이 에러값이라면 NULL 리턴
	if (aliasoffset < 0)
		return NULL;

	/*
	 * alias offset이 유효하다면
	 * alias에 해당하는 property의 value를 가져옴
	*/
	return fdt_getprop_namelen(fdt, aliasoffset, name, namelen, NULL);
}
Exemplo n.º 4
0
const void *fdt_getprop(const void *fdt, int nodeoffset,
			const char *name, int *lenp)
{
	return fdt_getprop_namelen(fdt, nodeoffset, name, strlen(name), lenp);
}