]> rtime.felk.cvut.cz Git - frescor/frsh.git/commitdiff
Make the framework compilable without acpi_xxx libraries
authorMichal Sojka <sojkam1@fel.cvut.cz>
Sun, 10 May 2009 15:54:21 +0000 (17:54 +0200)
committerMichal Sojka <sojkam1@fel.cvut.cz>
Sun, 10 May 2009 18:07:44 +0000 (20:07 +0200)
This commit introduces CONFIG_ACPI_XXX config parameters which can be
used to compile the framework for platforms, where ACPI is not
available.

frsh_api/Makefile.omk
frsh_api/frsh_power.c
resources/acpi_cpu/Makefile.omk
resources/acpi_lcd/Makefile.omk

index 297c52bb3d03dc9a40caa2a0f67a1496a1687b51..ded3da6ad97ce5ab033540937d7d4309abe630b6 100644 (file)
@@ -4,7 +4,7 @@ shared_LIBRARIES = frsh
 frsh_SOURCES = frsh_contract.c frsh_vres.c frsh_synchobj.c frsh_distributed.c frsh_core.c \
                frsh_spare_capacity.c frsh_error.c frsh_thread.c frsh_sharedobj.c frsh_power.c frsh_feedback.c
 include_HEADERS = frsh_opaque_types.h frsh_forb.h
-frsh_LIBS = fna fcb_client forb contract synchobj sharedobj acpi_cpu acpi_lcd fra ulut fosa $(allocator-libs-y)
+frsh_LIBS = fna fcb_client forb contract synchobj sharedobj fra ulut fosa $(allocator-libs-y) $(platform-libs-y)
 
 config_include_HEADERS = frsh_resources.h
 frsh_resources_DEFINES = CONFIG_RESOURCE_DUMMY \
@@ -12,7 +12,9 @@ frsh_resources_DEFINES = CONFIG_RESOURCE_DUMMY \
                         CONFIG_CPUCG\
                         CONFIG_DISKBFQ\
                         CONFIG_FWP \
-                        CONFIG_RESOURCE_ITEM
+                        CONFIG_RESOURCE_ITEM \
+                        CONFIG_ACPI_LCD \
+                        CONFIG_ACPI_CPU
 
 allocator-libs-$(CONFIG_RESOURCE_DUMMY) += fra_dummy
 allocator-libs-$(CONFIG_RESOURCE_ITEM) += fra_item
@@ -21,6 +23,9 @@ allocator-libs-$(CONFIG_AQUOSA) += frshaqcpu
 allocator-libs-$(CONFIG_CPUCG) += frshcpucg
 allocator-libs-$(CONFIG_DISKBFQ) += frshdiskbfq
 
+platform-libs-$(CONFIG_ACPI_CPU) += acpi_cpu
+platform-libs-$(CONFIG_ACPI_LCD) += acpi_lcd
+
 ifneq ($(AQUOSA_ROOT),)
 LOADLIBES += -L $(AQUOSA_ROOT)/lib
 LDFLAGS += -L $(AQUOSA_ROOT)/lib
index 56381090975f2114270a0c1fa2eabaa426b5c104..4bcf6c2d97ed51ef198561d01a79cd51aef9d234 100644 (file)
 #include <fcb.h>
 #include <fra_generic.h>
 #include <frsh_forb.h>
-#include <fra_acpi_cpu.h>
-#include <fra_acpi_lcd.h>
+#include "frsh_resources.h"
+#ifdef CONFIG_ACPI_CPU
+#  include <fra_acpi_cpu.h>
+#endif
+#ifdef CONFIG_ACPI_LCD
+#  include <fra_acpi_lcd.h>
+#endif
 #include <frsh.h>
 
 static inline int __is_a_valid_power(level)
@@ -172,48 +177,59 @@ int frsh_contract_get_utilization_pow
        return FRSH_ERR_NOT_IMPLEMENTED;;
 }
 
+/* FIXME: What happens when one application set one power-level and
+ * second application different level. I think this function should
+ * not be part of API. It should be used internally (e.g. by contract
+ * broker) to achieve the requirements specified by
+ * frsh_contract_set_min_expiration() and similar functions.
+ *
+ * This implementation also skips FCB when doing changes to resources,
+ * which is certainly not good, because resource manager does not know
+ * about the change.
+ */
 int frsh_resource_set_power_level
   (frsh_resource_type_t resource_type,
    frsh_resource_id_t resource_id,
    frsh_power_level_t power_level)
 {
-       int ret;
 
        switch(resource_type)
        {
+#ifdef CONFIG_ACPI_CPU
                case FRSH_RT_PROCESSOR:
                {
+                       int ret;
                        ret = fra_CPU_frequency_init(resource_id);
-                       if (ret) goto err;
+                       if (ret) return FRSH_ERR_INTERNAL_ERROR;
 
                        ret = fra_CPU_set_frequency(resource_id, power_level);
-                       if (ret) goto err;
+                       if (ret) return FRSH_ERR_INTERNAL_ERROR;
 
                        /**
                         * @TODO:
                         * if (i budget sono effettivamente diversi)
                         *      rinegozia i contratti coi nuovi valori
                         **/
-       
                        break;
                }
+#endif
+#ifdef CONFIG_ACPI_LCD
                case FRSH_RT_LCD:
                {
+                       int ret;
                        ret = fra_LCD_brightness_init(resource_id);
-                       if (ret) goto err;
+                       if (ret) return FRSH_ERR_INTERNAL_ERROR;
 
                        ret = fra_LCD_set_brightness(resource_id, power_level);
-                       if (ret) goto err;
-
+                       if (ret) return FRSH_ERR_INTERNAL_ERROR;
                        break;
                }
+#endif
                default:
                        return FRSH_ERR_NOT_IMPLEMENTED;
        }
 
        return FRSH_NO_ERROR;
-err:
-       return FRSH_ERR_INTERNAL_ERROR;
 }
 
 int frsh_resource_get_power_level
@@ -221,33 +237,35 @@ int frsh_resource_get_power_level
    frsh_resource_id_t resource_id,
    frsh_power_level_t *power_level)
 {
-       int ret;
-
        switch(resource_type)
        {
+#ifdef CONFIG_ACPI_CPU
                case FRSH_RT_PROCESSOR:
                {
+                       int ret;
                        ret = fra_CPU_get_level(resource_id,
                                                (int*) power_level);
-                       if (ret) goto err;
+                       if (ret) return FRSH_ERR_INTERNAL_ERROR;
 
                        break;
                }
+#endif
+#ifdef CONFIG_ACPI_LCD
                case FRSH_RT_LCD:
                {
+                       int ret;
                        ret = fra_LCD_get_level(resource_id,
                                                (int*) power_level);
-                       if (ret) goto err;
+                       if (ret) return FRSH_ERR_INTERNAL_ERROR;
 
                        break;
                }
+#endif
                default:
                        return FRSH_ERR_NOT_IMPLEMENTED;
        }
 
        return FRSH_NO_ERROR;
-err:
-       return FRSH_ERR_INTERNAL_ERROR;
 }
 
 int frsh_resource_get_num_power_levels
@@ -267,6 +285,7 @@ int frsh_resource_get_num_power_levels
 
 int frsh_battery_get_expiration(frsh_abs_time_t *expiration)
 {
+#ifdef CONFIG_ACPI_CPU
        frsh_rel_time_t interval;
        int ret;
 
@@ -277,5 +296,8 @@ int frsh_battery_get_expiration(frsh_abs_time_t *expiration)
        *expiration = fosa_abs_time_incr(*expiration, interval);
 
        return FRSH_NO_ERROR;
+#else
+       return FRSH_ERR_NOT_IMPLEMENTED;        
+#endif
 }
 
index 2e25bfb347459d8b4e049f90c4b36d270225e7b4..bc77ebb28fd05436a72ddb923c07ce4c5b91cceb 100644 (file)
@@ -1,3 +1,6 @@
+default_CONFIG = CONFIG_ACPI_CPU=y
+
+ifeq ($(CONFIG_ACPI_CPU),y)
 shared_LIBRARIES = acpi_cpu
 
 acpi_cpu_SOURCES = fra_acpi_cpu.c
@@ -7,3 +10,4 @@ include_HEADERS = fra_acpi_cpu.h
 
 
 #SUBDIRS=
+endif
index d711011cd4205fb62e241599062bc181c06b0424..0809562c3c0b411b7fb8a194658f68ee0b520301 100644 (file)
@@ -1,3 +1,6 @@
+default_CONFIG = CONFIG_ACPI_LCD=y
+
+ifeq ($(CONFIG_ACPI_LCD),y)
 shared_LIBRARIES = acpi_lcd
 
 acpi_lcd_SOURCES = fra_acpi_lcd.c
@@ -5,3 +8,4 @@ acpi_lcd_LIBS += fosa rt m acpi
 
 include_HEADERS = fra_acpi_lcd.h
 
+endif