From owner-acpi-jp@jp.freebsd.org  Tue Aug 15 23:53:29 2000
Received: (from daemon@localhost)
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) id XAA28844;
	Tue, 15 Aug 2000 23:53:29 +0900 (JST)
	(envelope-from owner-acpi-jp@jp.FreeBSD.org)
Received: from tasogare.imasy.or.jp (daemon@tasogare.imasy.or.jp [202.227.24.5])
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) with ESMTP id XAA28837
	for <acpi-jp@jp.freebsd.org>; Tue, 15 Aug 2000 23:53:28 +0900 (JST)
	(envelope-from iwasaki@jp.FreeBSD.org)
Received: from localhost (iwasaki.imasy.or.jp [202.227.24.92])
	by tasogare.imasy.or.jp (8.10.2+3.3W/3.7W-tasogare/smtpfeed 1.07) with ESMTP id e7FErPr66305
	for <acpi-jp@jp.freebsd.org>; Tue, 15 Aug 2000 23:53:26 +0900 (JST)
	(envelope-from iwasaki@jp.FreeBSD.org)
To: acpi-jp@jp.freebsd.org
In-Reply-To: <20000814181553D.iwasaki@jp.FreeBSD.org>
References: <20000814181553D.iwasaki@jp.FreeBSD.org>
X-Mailer: Mew version 1.94.1 on Emacs 19.34 / Mule 2.3 (SUETSUMUHANA)
Mime-Version: 1.0
Content-Type: Text/Plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit
Message-Id: <20000815235321X.iwasaki@jp.FreeBSD.org>
Date: Tue, 15 Aug 2000 23:53:21 +0900
From: Mitsuru IWASAKI <iwasaki@jp.freebsd.org>
X-Dispatcher: imput version 20000228(IM140)
Lines: 144
Reply-To: acpi-jp@jp.freebsd.org
Precedence: list
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+000315
X-Sequence: acpi-jp 574
Subject: [acpi-jp 574] Re: PowerResource control
Errors-To: owner-acpi-jp@jp.freebsd.org
Sender: owner-acpi-jp@jp.freebsd.org
X-Originator: iwasaki@jp.freebsd.org

> $B$H$$$&;0$D$,$"$k$N$G$9$,!"(BS1 $BA+0\A0$K(B PIHD $B$H(B PFAN $B$r(B OFF $B$K!"(B
> PDOC $B$r(B ON $B$K$9$kI,MW$,$"$k46$8$G$9!#$^$?!"3F(B Device $B$N(B state $B$r(B

$B$U$H!"$3$NA0DI2C$7$?(B aml_apply_foreach_found_objects() $B$N;EAH$_$r;H$C$F(B
$B$d$k$3$H$K$9$k$H!"$I$N(B systemlevel $B$N(B PowerResource $B$,BP>]$,$J$k$+$r(B
$B;XDj$G$-$J$5$=$&$J$N$G!"(Bcallback $B$X2DJQ8D0z?t$rEO$;$k$h$&$K=$@5$7$F$_$^$7$?!#(B
$BL@F|$"$?$j(B commit $B$7$^$9!#(B
commit log $B$O!"(B
Add an argument `va_list' to callback so that the caller can pass
argument list to callback function.
$B$3$s$J46$8(B?

Index: sys/dev/acpi/aml//aml_evalobj.c
===================================================================
RCS file: /home/cvs/ACPI/sys/dev/acpi/aml/aml_evalobj.c,v
retrieving revision 1.26
diff -u -r1.26 aml_evalobj.c
--- sys/dev/acpi/aml//aml_evalobj.c	2000/08/09 14:47:43	1.26
+++ sys/dev/acpi/aml//aml_evalobj.c	2000/08/15 11:10:48
@@ -306,7 +306,7 @@
  */
 
 int
-aml_eval_name_simple(struct aml_name *name)
+aml_eval_name_simple(struct aml_name *name, va_list ap)
 {
 	struct	aml_environ *env;
 	union	aml_object *ret;
Index: sys/dev/acpi/aml//aml_evalobj.h
===================================================================
RCS file: /home/cvs/ACPI/sys/dev/acpi/aml/aml_evalobj.h,v
retrieving revision 1.10
diff -u -r1.10 aml_evalobj.h
--- sys/dev/acpi/aml//aml_evalobj.h	2000/08/08 14:12:05	1.10
+++ sys/dev/acpi/aml//aml_evalobj.h	2000/08/15 11:44:23
@@ -30,11 +30,13 @@
 #ifndef _AML_EVALOBJ_H_
 #define _AML_EVALOBJ_H_
 
+#include <machine/stdarg.h>
+
 union aml_object	*aml_eval_objref(struct aml_environ *,
 					 union aml_object *);
 union aml_object	*aml_eval_name(struct aml_environ *,
 				       struct aml_name *);
-int			 aml_eval_name_simple(struct aml_name *);
+int			 aml_eval_name_simple(struct aml_name *, va_list);
 int			 aml_objtonum(struct aml_environ *,
 				      union aml_object *);
 struct aml_name		*aml_execute_method(struct aml_environ *);
Index: sys/dev/acpi/aml//aml_name.c
===================================================================
RCS file: /home/cvs/ACPI/sys/dev/acpi/aml/aml_name.c,v
retrieving revision 1.14
diff -u -r1.14 aml_name.c
--- sys/dev/acpi/aml//aml_name.c	2000/08/09 14:47:43	1.14
+++ sys/dev/acpi/aml//aml_name.c	2000/08/15 11:48:59
@@ -116,9 +116,9 @@
 	return (NULL);
 }
 
-void
-aml_apply_foreach_found_objects(struct aml_name *parent, char *name,
-    int (*func)(struct aml_name *))
+static void
+_aml_apply_foreach_found_objects(struct aml_name *parent, char *name,
+    int (*func)(struct aml_name *, va_list), va_list ap)
 {
 	struct	aml_name *child, *ptr;
 
@@ -129,15 +129,26 @@
 
 	if ((child = aml_find_from_namespace(parent, name)) != NULL) {
 		/* if function call was failed, stop searching */
-		if (func(child) != 0) {
+		if (func(child, ap) != 0) {
 			return;
 		}
 	}
 
 	for (ptr = parent->child; ptr; ptr = ptr->brother) {
 		/* do more searching */
-		aml_apply_foreach_found_objects(ptr, name, func);
+		_aml_apply_foreach_found_objects(ptr, name, func, ap);
 	}
+}
+
+void
+aml_apply_foreach_found_objects(struct aml_name *parent, char *name,
+    int (*func)(struct aml_name *, va_list), ...)
+{
+	va_list	ap;
+
+	va_start(ap, func);
+	_aml_apply_foreach_found_objects(parent, name, func, ap);
+	va_end(ap);
 }
 
 struct aml_name_group *
Index: sys/dev/acpi/aml//aml_name.h
===================================================================
RCS file: /home/cvs/ACPI/sys/dev/acpi/aml/aml_name.h,v
retrieving revision 1.16
diff -u -r1.16 aml_name.h
--- sys/dev/acpi/aml//aml_name.h	2000/08/09 14:47:43	1.16
+++ sys/dev/acpi/aml//aml_name.h	2000/08/15 11:44:59
@@ -32,6 +32,8 @@
 #ifndef _AML_NAME_H_
 #define _AML_NAME_H_
 
+#include <machine/stdarg.h>
+
 #include <dev/acpi/aml/aml_obj.h>
 
 struct aml_name {
@@ -69,7 +71,7 @@
 
 struct aml_name		*aml_find_from_namespace(struct aml_name *, char *);
 void			 aml_apply_foreach_found_objects(struct aml_name *,
-			     char *, int (*)(struct aml_name *));
+			     char *, int (*)(struct aml_name *, va_list), ...);
 struct aml_name		*aml_search_name(struct aml_environ *, u_int8_t *);
 struct aml_name		*aml_create_name(struct aml_environ *, u_int8_t *);
 
Index: usr.sbin/acpi/amldb/debug.c
===================================================================
RCS file: /home/cvs/ACPI/usr.sbin/acpi/amldb/debug.c,v
retrieving revision 1.18
diff -u -r1.18 debug.c
--- usr.sbin/acpi/amldb/debug.c	2000/08/09 14:47:56	1.18
+++ usr.sbin/acpi/amldb/debug.c	2000/08/15 11:41:14
@@ -52,8 +52,9 @@
 #include "debug.h"
 
 static int
-print_named_object(struct aml_name *name)
+print_named_object(struct aml_name *name, va_list ap)
 {
+
 	aml_print_curname(name);
 	printf("\n");
 


