Module Name: src
Committed By: palle
Date: Mon Jan 19 19:46:08 UTC 2015
Modified Files:
src/sys/arch/sparc64/include: mdesc.h
src/sys/arch/sparc64/sparc64: mdesc.c
Log Message:
sun4v: Add two new functions to the mdesc api: mdesc_find_node_by_idx() and
mdesc_next_node()
To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/sparc64/include/mdesc.h
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/sparc64/sparc64/mdesc.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/sparc64/include/mdesc.h
diff -u src/sys/arch/sparc64/include/mdesc.h:1.1 src/sys/arch/sparc64/include/mdesc.h:1.2
--- src/sys/arch/sparc64/include/mdesc.h:1.1 Sat Jan 10 22:19:26 2015
+++ src/sys/arch/sparc64/include/mdesc.h Mon Jan 19 19:46:08 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: mdesc.h,v 1.1 2015/01/10 22:19:26 palle Exp $ */
+/* $NetBSD: mdesc.h,v 1.2 2015/01/19 19:46:08 palle Exp $ */
/* $OpenBSD: mdesc.h,v 1.3 2014/11/30 22:26:14 kettenis Exp $ */
/*
* Copyright (c) 2009 Mark Kettenis
@@ -48,4 +48,6 @@ const char *mdesc_get_prop_data(int, con
int mdesc_find(const char *, uint64_t);
int mdesc_find_child(int, const char *, uint64_t);
int mdesc_find_node(const char *);
+int mdesc_find_node_by_idx(int, const char *);
+int mdesc_next_node(int);
#endif
Index: src/sys/arch/sparc64/sparc64/mdesc.c
diff -u src/sys/arch/sparc64/sparc64/mdesc.c:1.2 src/sys/arch/sparc64/sparc64/mdesc.c:1.3
--- src/sys/arch/sparc64/sparc64/mdesc.c:1.2 Sun Jan 11 13:40:22 2015
+++ src/sys/arch/sparc64/sparc64/mdesc.c Mon Jan 19 19:46:08 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: mdesc.c,v 1.2 2015/01/11 13:40:22 palle Exp $ */
+/* $NetBSD: mdesc.c,v 1.3 2015/01/19 19:46:08 palle Exp $ */
/* $OpenBSD: mdesc.c,v 1.7 2014/11/30 22:26:15 kettenis Exp $ */
/*
* Copyright (c) 2009 Mark Kettenis
@@ -217,19 +217,18 @@ mdesc_find_child(int idx, const char *na
}
int
-mdesc_find_node(const char *name)
+mdesc_find_node_by_idx(int idx, const char *name)
{
struct md_header *hdr;
struct md_element *elem;
const char *name_blk;
const char *str;
- int idx;
hdr = (struct md_header *)mdesc;
elem = (struct md_element *)(mdesc + sizeof(struct md_header));
name_blk = (char *)mdesc + sizeof(struct md_header) + hdr->node_blk_sz;
- for (idx = 0; elem[idx].tag == 'N'; idx = elem[idx].d.val) {
+ for ( ; elem[idx].tag == 'N'; idx = elem[idx].d.val) {
str = name_blk + elem[idx].name_offset;
if (str && strcmp(str, name) == 0)
return (idx);
@@ -237,3 +236,20 @@ mdesc_find_node(const char *name)
return (-1);
}
+
+int
+mdesc_find_node(const char *name)
+{
+ return mdesc_find_node_by_idx(0, name);
+}
+
+int
+mdesc_next_node(int idx)
+{
+ struct md_element *elem;
+
+ elem = (struct md_element *)(mdesc + sizeof(struct md_header));
+
+ return elem[idx].d.val;
+}
+