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;
+}
+

Reply via email to