]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/acpi/namespace/nseval.c
math-emu: Fix thinko in _FP_DIV
[linux-2.6-omap-h63xx.git] / drivers / acpi / namespace / nseval.c
index 97b2ac57c16be69d7ad94c1899410f806164e9af..d369164e00b0bc16d594e8617e93be3ada99d95f 100644 (file)
@@ -5,7 +5,7 @@
  ******************************************************************************/
 
 /*
- * Copyright (C) 2000 - 2007, R. Byron Moore
+ * Copyright (C) 2000 - 2008, Intel Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -138,6 +138,41 @@ acpi_status acpi_ns_evaluate(struct acpi_evaluate_info * info)
                        return_ACPI_STATUS(AE_NULL_OBJECT);
                }
 
+               /*
+                * Calculate the number of arguments being passed to the method
+                */
+
+               info->param_count = 0;
+               if (info->parameters) {
+                       while (info->parameters[info->param_count])
+                               info->param_count++;
+               }
+
+               /* Error if too few arguments were passed in */
+
+               if (info->param_count < info->obj_desc->method.param_count) {
+                       ACPI_ERROR((AE_INFO,
+                                   "Insufficient arguments - "
+                                   "method [%4.4s] needs %d, found %d",
+                                   acpi_ut_get_node_name(info->resolved_node),
+                                   info->obj_desc->method.param_count,
+                                   info->param_count));
+                       return_ACPI_STATUS(AE_MISSING_ARGUMENTS);
+               }
+
+               /* Just a warning if too many arguments */
+
+               else if (info->param_count >
+                               info->obj_desc->method.param_count) {
+                       ACPI_WARNING((AE_INFO,
+                                     "Excess arguments - "
+                                     "method [%4.4s] needs %d, found %d",
+                                     acpi_ut_get_node_name(info->
+                                                           resolved_node),
+                                     info->obj_desc->method.param_count,
+                                     info->param_count));
+               }
+
                ACPI_DUMP_PATHNAME(info->resolved_node, "Execute Method:",
                                   ACPI_LV_INFO, _COMPONENT);