From: Chanwoo Choi Date: Wed, 6 Jan 2021 04:55:33 +0000 (+0900) Subject: pass: hal: Replace HAL interface with hal-api-power X-Git-Tag: accepted/tizen/unified/20210204.134448~4 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F55%2F251355%2F5;p=platform%2Fcore%2Fsystem%2Fpass.git pass: hal: Replace HAL interface with hal-api-power Tizen 6.5 provides new HAL API layer to make tizen porting easy. Power HAL API (hal-api-power) provides HAL C API for controlling the h/w resources such as CPU/GPU/Memory Bus/Memory devices and provides HAL interface for HAL backend developer for using Tizen platform on new h/w device. PASS daemon just calls the Power HAL API without handling the HAL backend anymore. Describe the detailed changes as following: 1. Remove self-defined HAL functions and don't open HAL backend library directly. Instead, use hal-api-power to control the h/w resources. PASS deamon doesn't need to handle the HAL backend library anymore. 2. Remove pass-hal-devel package because of moving HAL interface defintion (src/hal/hal.h) into hal-api-power (hal-power-interface.h). 3. Change the open path of pass configuration files. - /etc/pass/ -> /hal/etc/pass/ Change-Id: I73a1c29c7af000335021faac62157b5342065682 Signed-off-by: Chanwoo Choi --- diff --git a/CMakeLists.txt b/CMakeLists.txt index a069f15..d8f2591 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,7 +7,6 @@ PROJECT(pass C) SET(EXEC_PREFIX "${CMAKE_INSTALL_PREFIX}/bin") SET(INCLUDEDIR "${CMAKE_INSTALL_PREFIX}/include/${PROJECT_NAME}") SET(VERSION 0.1.0) -SET(PASS_HAL_NAME pass-hal-devel) SET(SRCS src/pass/pass.c @@ -25,7 +24,6 @@ SET(SRCS src/pmqos/pmqos-parser.c src/thermal/thermal.c src/thermal/thermal-parser.c - src/hal/hal.c src/core/common.c src/core/config-parser.c src/core/device-notifier.c @@ -52,6 +50,8 @@ SET(PKG_MODULES gio-unix-2.0 libudev libsystemd + hal-api-common + hal-api-power ) INCLUDE(FindPkgConfig) @@ -65,6 +65,7 @@ SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -fvisibility=hidden -fPIE") SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -g -fno-omit-frame-pointer -finstrument-functions") SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -lrt") SET(CMAKE_EXE_LINKER_FLAGS "-pie") +SET(LIBDIR ${CMAKE_LIBDIR_PREFIX}) ADD_DEFINITIONS("-DLOG_TAG=\"PASS\"") ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"") @@ -94,23 +95,21 @@ ADD_CUSTOM_COMMAND( COMMENT "Generating GDBus stub for thermal interface") ADD_EXECUTABLE(${PROJECT_NAME} ${SRCS}) -TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS} "-ldl" "-lm") +TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS} -ldl -lm) INSTALL(TARGETS ${PROJECT_NAME} DESTINATION bin) INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/scripts/${PROJECT_NAME}.conf DESTINATION /etc/dbus-1/system.d) INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/scripts/pass-pmqos.conf DESTINATION /etc/pass) INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/scripts/pass-thermal.conf DESTINATION /etc/pass) +CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/systemd/${PROJECT_NAME}.service.in ${CMAKE_SOURCE_DIR}/systemd/${PROJECT_NAME}.service @ONLY) INSTALL(FILES ${CMAKE_SOURCE_DIR}/systemd/org.tizen.system.pass.service DESTINATION /usr/share/dbus-1/system-services) INSTALL(FILES ${CMAKE_SOURCE_DIR}/systemd/org.tizen.system.thermal.service DESTINATION /usr/share/dbus-1/system-services) CONFIGURE_FILE(${PROJECT_NAME}.pc.in ${PROJECT_NAME}.pc @ONLY) INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig) -CONFIGURE_FILE(${PASS_HAL_NAME}.pc.in ${PASS_HAL_NAME}.pc @ONLY) -INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PASS_HAL_NAME}.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig) INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/systemd/ DESTINATION lib/systemd/system FILES_MATCHING PATTERN "*.service" ) -ADD_SUBDIRECTORY(src/hal) ADD_SUBDIRECTORY(unittest) diff --git a/include/pass/hal/hal.h b/include/pass/hal/hal.h deleted file mode 100644 index 3e41493..0000000 --- a/include/pass/hal/hal.h +++ /dev/null @@ -1,245 +0,0 @@ -/* - * Copyright (c) 2017 Samsung Electronics Co., Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _PASS_HAL_H_ -#define _PASS_HAL_H_ - -#include -#include -#include - -#define BUFF_MAX 255 - -#define MAKE_4B_CODE_4(A, B, C, D) \ - ((((A) & 0xff) << 24) | (((B) & 0xff) << 16) | \ - (((C) & 0xff) << 8) | (((D) & 0xff))) -#define MAKE_TAG_CONSTANT(A, B, C, D) MAKE_4B_CODE_4(A, B, C, D) - -#define HAL_INFO_TAG MAKE_TAG_CONSTANT('P', 'A', 'S', 'S') - -/* Symbolic name of the HAL info (PASS HAL Info) */ -#define HAL_INFO_SYM PassHalInfo - -#define PASS_RESOURCE_UNKNOWN 0 -#define PASS_RESOURCE_CPU_ID 1 -#define PASS_RESOURCE_BUS_ID 2 -#define PASS_RESOURCE_GPU_ID 3 -#define PASS_RESOURCE_MEMORY_ID 4 -#define PASS_RESOURCE_NONSTANDARD_ID 99 - -#define PASS_RESOURCE_CPU_NAME "cpu" -#define PASS_RESOURCE_BUS_NAME "bus" -#define PASS_RESOURCE_GPU_NAME "gpu" -#define PASS_RESOURCE_MEMORY_NAME "memory" -#define PASS_RESOURCE_NONSTANDARD_NAME "nonstandard" - -/** - * Define the common structure - */ - -struct pass_resource_common; - -/* - * pass_resource_info - Define the information structure for the resource. - * - * @magic : magic must be initialized to HAL_INFO_TAG - * @hal_version : HAL version - * @device_version: device version - * @id : device id, can have the following value. - * - PASS_RESOURCE_CPU_ID - * - PASS_RESOURCE_BUS_ID - * - PASS_RESOURCE_GPU_ID - * - PASS_RESOURCE_MEMORY_ID - * - PASS_RESOURCE_NONSTANDARD_ID - * @name : device name, can have the following value. - * - PASS_RESOURCE_CPU_NAME - * - PASS_RESOURCE_BUS_NAME - * - PASS_RESOURCE_GPU_NAME - * - PASS_RESOURCE_MEMORY_NAME - * - PASS_RESOURCE_NONSTANDARD_NAME - * @dso : module's dso - * @resourced[] : reserved for future use - * @open : function pointer to open device - * @close : function pointer to close device - */ -struct pass_resource_info { - uint32_t magic; - uint16_t hal_version; - uint16_t device_version; - const int id; - const char *name; - void *dso; - uint32_t reserved[8]; - - int (*open)(char *res_name, struct pass_resource_info *info, - struct pass_resource_common **common); - int (*close)(char *res_name, struct pass_resource_common *common); -}; - -struct pass_resource_common { - /* indicate to this device information structure */ - struct pass_resource_info *info; -}; - -/* - * Define the ops (operations) structure which are used on specific resource. - */ -struct pass_resource_dvfs_ops { - /* Get and set the current governor. */ - int (*get_curr_governor)(char *res_name, char *governor); - int (*set_curr_governor)(char *res_name, char *governor); - - int (*get_avail_governor)(char *res_name, char **avail_governor); - - /* Get the current frequency. */ - int (*get_curr_freq)(char *res_name); - - /* Get and set the minimum frequency. */ - int (*get_min_freq)(char *res_name); - int (*set_min_freq)(char *res_name, int freq); - - /* Get and set the maximum frequency. */ - int (*get_max_freq)(char *res_name); - int (*set_max_freq)(char *res_name, int freq); - - /* Get the minimum/maximum frequency which can be set to resource. */ - int (*get_available_min_freq)(char *res_name); - int (*get_available_max_freq)(char *res_name); - - /* Get and set the up_threshold to support boosting. */ - int (*get_up_threshold)(char *res_name); - int (*set_up_threshold)(char *res_name, int up_threshold); - - /* Get the load_table of each resource to estimate the system load. */ - int (*get_load_table)(char *name, void *pass_cpu_load_table); -}; - -struct pass_resource_hotplug_ops { - /* Get and set the online status of resource. */ - int (*get_online_state)(char *res_name, int cpu); - int (*set_online_state)(char *res_name, int cpu, int on); - /* Get and set the minimum number of online CPUs */ - int (*get_online_min_num) (char *res_name); - int (*set_online_min_num) (char *res_name, int min_num); - /* Get and set the maximum number of online CPUs */ - int (*get_online_max_num) (char *res_name); - int (*set_online_max_num) (char *res_name, int max_num); -}; - -struct pass_resource_tmu_ops { - /* Get the current temperature of resource. */ - int (*get_temp)(char *res_thermal_name); - - /* Get the policy of thermal management unit. */ - int (*get_policy)(char *res_thermal_name, char *policy); -}; - -/* - * Define the resource structure for CPU H/W. - * - * @common : common resource structure. - * @dvfs : function lists for the DVFS (Dynamic Volt. & Freq. Scaling). - * @tmu : function lists for the TMU (Thermal Management Unit). - * @hotplug : function lists for the CPU on/off. - */ -struct pass_resource_cpu { - struct pass_resource_common common; - - struct pass_resource_dvfs_ops dvfs; - struct pass_resource_tmu_ops tmu; - struct pass_resource_hotplug_ops hotplug; -}; - -/* - * Define the resource structure for Memory Bus H/W. - * - * @common : common resource structure. - * @dvfs : function lists for the DVFS (Dynamic Volt. & Freq. Scaling). - * @tmu : function lists for the TMU (Thermal Management Unit). - */ -struct pass_resource_bus { - struct pass_resource_common common; - - struct pass_resource_dvfs_ops dvfs; - struct pass_resource_tmu_ops tmu; -}; - -/* - * Define the resource structure for GPU H/W. - * - * @common : common resource structure. - * @dvfs : function lists for the DVFS (Dynamic Volt. & Freq. Scaling). - * @tmu : function lists for the TMU (Thermal Management Unit). - */ -struct pass_resource_gpu { - struct pass_resource_common common; - - struct pass_resource_dvfs_ops dvfs; - struct pass_resource_tmu_ops tmu; -}; - -/* - * Define the resource structure for Memory H/W. - * - * @common : common resource structure. - */ -struct pass_resource_memory { - struct pass_resource_common common; - - /* Get and set the /sys/kernel/debug/fault_around_bytes */ - int (*get_fault_around_bytes)(char *res_name); - int (*set_fault_around_bytes)(char *res_name, int fault_around_bytes); -}; - -/* - * Define the resource structure for nonstandard H/W. - * - * Following function is Deprecated. (Not recommended for use) - * @set_pmqos_data : function to bypass the scenario data to HAL. - * - * This structure indicates the nonstandard H/W which doesn't have - * the official supported framework (e.g., cpufreq, devfreq and so on) - * in Linux Kernel. But, the specific device might be controlled - * according to PMQoS scenario or other cases. - */ -struct pass_resource_nonstandard { - struct pass_resource_common common; - - /* - * NOTE: It is not propper method. But PASS must need to keep - * the backwards compatibility, set the PMQoS's data from - * platform to hal. So, It is not recommended to use it. - * - * This function will be removed after finding the proper method. - */ - int (*set_pmqos_data)(char *res_name, void *data); -}; - -int pass_get_hal_info(const char *id, const struct pass_resource_info **info); - -/** - * Structure define of HAL info module - * - * All HAL module should be use below define to make a specific - * structure for Tizen HAL. pass_get_resource_info function - * will load a pass_resource_data structure by using TizenHwInfo name - * at runtime. TizenHwInfo means Tizen Hardware Info. - */ -#define HAL_MODULE_STRUCTURE \ - __attribute__ ((visibility("default"))) \ - struct pass_resource_info HAL_INFO_SYM - -#endif /* _PASS_HAL_H_ */ diff --git a/packaging/pass.spec b/packaging/pass.spec index 89d837b..9e16a7a 100644 --- a/packaging/pass.spec +++ b/packaging/pass.spec @@ -1,7 +1,6 @@ %define _unpackaged_files_terminate_build 0 %define daemon_name pass -%define hal_name pass-hal-devel %define haltest_name pass-haltests %define unittest_name pass-unittest @@ -13,7 +12,6 @@ Group: System/Kernel License: Apache-2.0 Source0: %{name}-%{version}.tar.gz Source1: %{name}.manifest -Source2: %{hal_name}.manifest BuildRequires: cmake BuildRequires: pkgconfig(dlog) @@ -24,6 +22,8 @@ BuildRequires: pkgconfig(glib-2.0) BuildRequires: pkgconfig(gmock) BuildRequires: pkgconfig(libudev) BuildRequires: pkgconfig(libsystemd) +BuildRequires: pkgconfig(hal-api-common) +BuildRequires: pkgconfig(hal-api-power) %description PASS (Power-Aware System Service) @@ -35,14 +35,6 @@ Group: main %description %{daemon_name} PASS systemd daemon. -%package -n %{hal_name} -Summary: PASS HAL Header files -Group: Development/Library -Requires: pass = %{version}-%{release} - -%description -n %{hal_name} -Header files required to build pass-hal packages for specific boards. - %package -n %{haltest_name} Summary: PASS HAL test package with gtest Group: Development/Tools @@ -65,11 +57,11 @@ PASS unit test package with gtest %cmake . \ -DTZ_SYS_ETC=%TZ_SYS_ETC \ -DCMAKE_INSTALL_PREFIX=%{_prefix} \ + -DCMAKE_LIBDIR_PREFIX=%{_libdir} \ #eol %build cp %{SOURCE1} . -cp %{SOURCE2} . make %{?jobs:-j%jobs} %install @@ -106,13 +98,6 @@ systemctl daemon-reload %{_datadir}/dbus-1/system-services/org.tizen.system.pass.service %{_datadir}/dbus-1/system-services/org.tizen.system.thermal.service -%files -n %{hal_name} -%defattr(-,root,root,-) -%manifest %{hal_name}.manifest -%{_includedir}/%{daemon_name}/hal.h -%{_includedir}/%{daemon_name}/hal-log.h -%{_libdir}/pkgconfig/%{hal_name}.pc - %files -n %{haltest_name} %defattr(-,root,root,-) %{_bindir}/pass_haltests diff --git a/src/hal/CMakeLists.txt b/src/hal/CMakeLists.txt deleted file mode 100755 index c0f1fbc..0000000 --- a/src/hal/CMakeLists.txt +++ /dev/null @@ -1,15 +0,0 @@ -CMAKE_MINIMUM_REQUIRED(VERSION 2.6) -PROJECT(pass-hal-devel C) - -SET(HAL_HEADERS - ../../include/pass/hal/hal.h - hal-log.h -) - -INCLUDE(FindPkgConfig) -pkg_check_modules(pkgs REQUIRED - dlog) - -FOREACH(hheader ${HAL_HEADERS}) - INSTALL(FILES ${hheader} DESTINATION ${INCLUDEDIR}) -ENDFOREACH(hheader) diff --git a/src/hal/hal-log.h b/src/hal/hal-log.h deleted file mode 100644 index 4b43f61..0000000 --- a/src/hal/hal-log.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - * PASS (Power Aware System Service) - * - * Copyright (c) 2017 Samsung Electronics Co., Ltd. - * - * Licensed under the Apache License, Version 2.0 (the License); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __HAL_LOG_H__ -#define __HAL_LOG_H__ - -#include - -#define _D(fmt, arg...) do { SLOGD(fmt, ##arg); } while (0) -#define _I(fmt, arg...) do { SLOGI(fmt, ##arg); } while (0) -#define _W(fmt, arg...) do { SLOGW(fmt, ##arg); } while (0) -#define _E(fmt, arg...) do { SLOGE(fmt, ##arg); } while (0) - -#endif /* __HAL_LOG_H__ */ diff --git a/src/hal/hal.c b/src/hal/hal.c deleted file mode 100644 index 0b2cffa..0000000 --- a/src/hal/hal.c +++ /dev/null @@ -1,92 +0,0 @@ -/* - * PASS (Power Aware System Service) HAL - * - * Copyright (c) 2017 Samsung Electronics Co., Ltd. - * - * Licensed under the Apache License, Version 2.0 (the License); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * @file hal.c - * @brief Provide a helper function to load shared library, like cpu.so - * /gpu.so/bus.so etc, from HAL (Hardware Abstract Layer) - * package according to the type of h/w resource. - * @ingroup COM_POWER_MGNT - */ - -#include -#include -#include -#include -#include -#include -#include - -#include - -#include "hal-log.h" - -#ifndef EXPORT -#define EXPORT __attribute__ ((visibility("default"))) -#endif - -#ifndef LIBPATH -#error LIBPATH is not defined. -#endif - -#define MODULE_PATH LIBPATH"/pass" - -#define STRINGIZE2(s) #s -#define STRINGIZE(s) STRINGIZE2(s) - -EXPORT -int pass_get_hal_info(const char *name, const struct pass_resource_info **info) -{ - char path[PATH_MAX]; - void *handle; - struct pass_resource_info *it; - - if (!info || !name) - return -EINVAL; - - /* Load module */ - snprintf(path, sizeof(path), "%s/%s.so", MODULE_PATH, name); - handle = dlopen(path, RTLD_NOW); - if (!handle) { - _E("fail to open module : %s", dlerror()); - goto error; - } - - it = dlsym(handle, STRINGIZE(HAL_INFO_SYM)); - if (!it) { - _E("fail to find symbol : %s", dlerror()); - goto error; - } - - /* Check id */ - if (strncmp(name, it->name, strlen(name)) != 0) { - _E("fail to match name : name(%s), it->name(%s)", name, - it->name); - goto error; - } - - it->dso = handle; - *info = it; - return 0; - -error: - if (handle) - dlclose(handle); - - return -ENOENT; -} diff --git a/src/pass/pass-hal.c b/src/pass/pass-hal.c index 0ba680f..f2229f7 100644 --- a/src/pass/pass-hal.c +++ b/src/pass/pass-hal.c @@ -38,64 +38,6 @@ #include "pass.h" #include "pass-hal.h" -static struct pass_resource_dvfs_ops *get_dvfs(struct pass_resource *res, - int res_type) -{ - struct pass_resource_dvfs_ops *dvfs = NULL; - - switch (res_type) { - case PASS_RESOURCE_CPU_ID: - dvfs = &(res->hal.cpu->dvfs); - break; - case PASS_RESOURCE_BUS_ID: - dvfs = &(res->hal.bus->dvfs); - break; - case PASS_RESOURCE_GPU_ID: - dvfs = &(res->hal.gpu->dvfs); - break; - } - - return dvfs; -} - -static struct pass_resource_tmu_ops *get_tmu(struct pass_resource *res, - int res_type) -{ - struct pass_resource_tmu_ops *tmu = NULL; - - switch (res_type) { - case PASS_RESOURCE_CPU_ID: - tmu = &(res->hal.cpu->tmu); - break; - case PASS_RESOURCE_BUS_ID: - tmu = &(res->hal.bus->tmu); - break; - case PASS_RESOURCE_GPU_ID: - tmu = &(res->hal.gpu->tmu); - break; - } - - return tmu; -} - -static struct pass_resource_hotplug_ops *get_hotplug(struct pass_resource *res, - int res_type) -{ - struct pass_resource_hotplug_ops *hotplug = NULL; - - switch (res_type) { - case PASS_RESOURCE_CPU_ID: - hotplug = &(res->hal.cpu->hotplug); - break; - case PASS_RESOURCE_BUS_ID: - case PASS_RESOURCE_GPU_ID: - hotplug = NULL; - break; - } - - return hotplug; -} - /** * @brief Get the current governor for DVFS(Dynamic Voltage and Frequency * Scaling) resource @@ -104,23 +46,16 @@ static struct pass_resource_hotplug_ops *get_hotplug(struct pass_resource *res, * @return @c 0 on success, otherwise error value * @retval -22 Invalid argument (-EINVAL) * @retval -1 Operation not permitted (-EPERM) - * @retval -19 Operation not supported (-ENODEV) + * @retval -19 Operation not supported (-ENOTSUP) */ int pass_hal_get_curr_governor(struct pass_resource *res, char *governor) { - struct pass_resource_dvfs_ops *dvfs; - if (!res || !governor) return -EINVAL; - dvfs = get_dvfs(res, res->config_data.res_type); - if (!dvfs) - return -EPERM; - - if (!dvfs->get_curr_governor) - return -ENODEV; - - return dvfs->get_curr_governor(res->config_data.res_name, governor); + return hal_power_dvfs_get_curr_governor(res->config_data.res_type, + res->config_data.res_name, + governor); } /** @@ -131,23 +66,16 @@ int pass_hal_get_curr_governor(struct pass_resource *res, char *governor) * @return @c 0 on success, otherwise error value * @retval -22 Invalid argument (-EINVAL) * @retval -1 Operation not permitted (-EPERM) - * @retval -19 Operation not supported (-ENODEV) + * @retval -19 Operation not supported (-ENOTSUP) */ int pass_hal_set_curr_governor(struct pass_resource *res, char *governor) { - struct pass_resource_dvfs_ops *dvfs; - if (!res || !governor) return -EINVAL; - dvfs = get_dvfs(res, res->config_data.res_type); - if (!dvfs) - return -EPERM; - - if (!dvfs->set_curr_governor) - return -ENODEV; - - return dvfs->set_curr_governor(res->config_data.res_name, governor); + return hal_power_dvfs_set_curr_governor(res->config_data.res_type, + res->config_data.res_name, + governor); } /** @@ -157,23 +85,15 @@ int pass_hal_set_curr_governor(struct pass_resource *res, char *governor) * @return @c positive integer on success, otherwise error value * @retval -22 Invalid argument (-EINVAL) * @retval -1 Operation not permitted (-EPERM) - * @retval -19 Operation not supported (-ENODEV) + * @retval -19 Operation not supported (-ENOTSUP) */ int pass_hal_get_curr_freq(struct pass_resource *res) { - struct pass_resource_dvfs_ops *dvfs; - if (!res) return -EINVAL; - dvfs = get_dvfs(res, res->config_data.res_type); - if (!dvfs) - return -EPERM; - - if (!dvfs->get_curr_freq) - return -ENODEV; - - return dvfs->get_curr_freq(res->config_data.res_name); + return hal_power_dvfs_get_curr_freq(res->config_data.res_type, + res->config_data.res_name); } /** @@ -183,23 +103,15 @@ int pass_hal_get_curr_freq(struct pass_resource *res) * @return @c positive integer on success, otherwise error value * @retval -22 Invalid argument (-EINVAL) * @retval -1 Operation not permitted (-EPERM) - * @retval -19 Operation not supported (-ENODEV) + * @retval -19 Operation not supported (-ENOTSUP) */ int pass_hal_get_min_freq(struct pass_resource *res) { - struct pass_resource_dvfs_ops *dvfs; - if (!res) return -EINVAL; - dvfs = get_dvfs(res, res->config_data.res_type); - if (!dvfs) - return -EPERM; - - if (!dvfs->get_min_freq) - return -ENODEV; - - return dvfs->get_min_freq(res->config_data.res_name); + return hal_power_dvfs_get_min_freq(res->config_data.res_type, + res->config_data.res_name); } /** @@ -210,23 +122,16 @@ int pass_hal_get_min_freq(struct pass_resource *res) * @return @c positive integer on success, otherwise error value * @retval -22 Invalid argument (-EINVAL) * @retval -1 Operation not permitted (-EPERM) - * @retval -19 Operation not supported (-ENODEV) + * @retval -19 Operation not supported (-ENOTSUP) */ int pass_hal_set_min_freq(struct pass_resource *res, int freq) { - struct pass_resource_dvfs_ops *dvfs; - if (!res || freq < 0) return -EINVAL; - dvfs = get_dvfs(res, res->config_data.res_type); - if (!dvfs) - return -EPERM; - - if (!dvfs->set_min_freq) - return -ENODEV; - - return dvfs->set_min_freq(res->config_data.res_name, freq); + return hal_power_dvfs_set_min_freq(res->config_data.res_type, + res->config_data.res_name, + freq); } /** @@ -236,23 +141,15 @@ int pass_hal_set_min_freq(struct pass_resource *res, int freq) * @return @c positive integer on success, otherwise error value * @retval -22 Invalid argument (-EINVAL) * @retval -1 Operation not permitted (-EPERM) - * @retval -19 Operation not supported (-ENODEV) + * @retval -19 Operation not supported (-ENOTSUP) */ int pass_hal_get_max_freq(struct pass_resource *res) { - struct pass_resource_dvfs_ops *dvfs; - if (!res) return -EINVAL; - dvfs = get_dvfs(res, res->config_data.res_type); - if (!dvfs) - return -EPERM; - - if (!dvfs->get_max_freq) - return -ENODEV; - - return dvfs->get_max_freq(res->config_data.res_name); + return hal_power_dvfs_get_max_freq(res->config_data.res_type, + res->config_data.res_name); } /** @@ -263,23 +160,16 @@ int pass_hal_get_max_freq(struct pass_resource *res) * @return @c positive integer on success, otherwise error value * @retval -22 Invalid argument (-EINVAL) * @retval -1 Operation not permitted (-EPERM) - * @retval -19 Operation not supported (-ENODEV) + * @retval -19 Operation not supported (-ENOTSUP) */ int pass_hal_set_max_freq(struct pass_resource *res, int freq) { - struct pass_resource_dvfs_ops *dvfs; - if (!res || freq < 0) return -EINVAL; - dvfs = get_dvfs(res, res->config_data.res_type); - if (!dvfs) - return -EPERM; - - if (!dvfs->set_max_freq) - return -ENODEV; - - return dvfs->set_max_freq(res->config_data.res_name, freq); + return hal_power_dvfs_set_max_freq(res->config_data.res_type, + res->config_data.res_name, + freq); } /** @@ -289,23 +179,15 @@ int pass_hal_set_max_freq(struct pass_resource *res, int freq) * @return @c positive integer on success, otherwise error value * @retval -22 Invalid argument (-EINVAL) * @retval -1 Operation not permitted (-EPERM) - * @retval -19 Operation not supported (-ENODEV) + * @retval -19 Operation not supported (-ENOTSUP) */ int pass_hal_get_available_min_freq(struct pass_resource *res) { - struct pass_resource_dvfs_ops *dvfs; - if (!res) return -EINVAL; - dvfs = get_dvfs(res, res->config_data.res_type); - if (!dvfs) - return -EPERM; - - if (!dvfs->get_available_min_freq) - return -ENODEV; - - return dvfs->get_available_min_freq(res->config_data.res_name); + return hal_power_dvfs_get_available_min_freq(res->config_data.res_type, + res->config_data.res_name); } /** @@ -315,23 +197,15 @@ int pass_hal_get_available_min_freq(struct pass_resource *res) * @return @c positive integer on success, otherwise error value * @retval -22 Invalid argument (-EINVAL) * @retval -1 Operation not permitted (-EPERM) - * @retval -19 Operation not supported (-ENODEV) + * @retval -19 Operation not supported (-ENOTSUP) */ int pass_hal_get_available_max_freq(struct pass_resource *res) { - struct pass_resource_dvfs_ops *dvfs; - if (!res) return -EINVAL; - dvfs = get_dvfs(res, res->config_data.res_type); - if (!dvfs) - return -EPERM; - - if (!dvfs->get_available_max_freq) - return -ENODEV; - - return dvfs->get_available_max_freq(res->config_data.res_name); + return hal_power_dvfs_get_available_max_freq(res->config_data.res_type, + res->config_data.res_name); } /** @@ -341,23 +215,15 @@ int pass_hal_get_available_max_freq(struct pass_resource *res) * @return @c positive integer on success, otherwise error value * @retval -22 Invalid argument (-EINVAL) * @retval -1 Operation not permitted (-EPERM) - * @retval -19 Operation not supported (-ENODEV) + * @retval -19 Operation not supported (-ENOTSUP) */ int pass_hal_get_up_threshold(struct pass_resource *res) { - struct pass_resource_dvfs_ops *dvfs; - if (!res) return -EINVAL; - dvfs = get_dvfs(res, res->config_data.res_type); - if (!dvfs) - return -EPERM; - - if (!dvfs->get_up_threshold) - return -ENODEV; - - return dvfs->get_up_threshold(res->config_data.res_name); + return hal_power_dvfs_get_up_threshold(res->config_data.res_type, + res->config_data.res_name); } /** @@ -368,23 +234,16 @@ int pass_hal_get_up_threshold(struct pass_resource *res) * @return @c positive integer on success, otherwise error value * @retval -22 Invalid argument (-EINVAL) * @retval -1 Operation not permitted (-EPERM) - * @retval -19 Operation not supported (-ENODEV) + * @retval -19 Operation not supported (-ENOTSUP) */ int pass_hal_set_up_threshold(struct pass_resource *res, int up_threshold) { - struct pass_resource_dvfs_ops *dvfs; - if (!res || up_threshold < 0) return -EINVAL; - dvfs = get_dvfs(res, res->config_data.res_type); - if (!dvfs) - return -EPERM; - - if (!dvfs->set_up_threshold) - return -ENODEV; - - return dvfs->set_up_threshold(res->config_data.res_name, up_threshold); + return hal_power_dvfs_set_up_threshold(res->config_data.res_type, + res->config_data.res_name, + up_threshold); } /** @@ -394,23 +253,16 @@ int pass_hal_set_up_threshold(struct pass_resource *res, int up_threshold) * @return @c positive integer on success, otherwise error value * @retval -22 Invalid argument (-EINVAL) * @retval -1 Operation not permitted (-EPERM) - * @retval -19 Operation not supported (-ENODEV) + * @retval -19 Operation not supported (-ENOTSUP) */ int pass_hal_get_online_state(struct pass_resource *res, int cpu) { - struct pass_resource_hotplug_ops *hotplug; - if (!res || cpu < 0) return -EINVAL; - hotplug = get_hotplug(res, res->config_data.res_type); - if (!hotplug) - return -EPERM; - - if (!hotplug->get_online_state) - return -ENODEV; - - return hotplug->get_online_state(res->config_data.res_name, cpu); + return hal_power_hotplug_get_online_state(res->config_data.res_type, + res->config_data.res_name, + cpu); } /** @@ -421,23 +273,16 @@ int pass_hal_get_online_state(struct pass_resource *res, int cpu) * @return @c 0 on success, otherwise error value * @retval -22 Invalid argument (-EINVAL) * @retval -1 Operation not permitted (-EPERM) - * @retval -19 Operation not supported (-ENODEV) + * @retval -19 Operation not supported (-ENOTSUP) */ int pass_hal_set_online_state(struct pass_resource *res, int cpu, int on) { - struct pass_resource_hotplug_ops *hotplug; - if (!res || cpu < 0 || on < 0) return -EINVAL; - hotplug = get_hotplug(res, res->config_data.res_type); - if (!hotplug) - return -EPERM; - - if (!hotplug->set_online_state) - return -ENODEV; - - return hotplug->set_online_state(res->config_data.res_name, cpu, on); + return hal_power_hotplug_set_online_state(res->config_data.res_type, + res->config_data.res_name, + cpu, on); } /** @@ -446,23 +291,15 @@ int pass_hal_set_online_state(struct pass_resource *res, int cpu, int on) * @return @c positive integer on success, otherwise error value * @retval -22 Invalid argument (-EINVAL) * @retval -1 Operation not permitted (-EPERM) - * @retval -19 Operation not supported (-ENODEV) + * @retval -19 Operation not supported (-ENOTSUP) */ int pass_hal_get_online_min_num(struct pass_resource *res) { - struct pass_resource_hotplug_ops *hotplug; - if (!res) return -EINVAL; - hotplug = get_hotplug(res, res->config_data.res_type); - if (!hotplug) - return -EPERM; - - if (!hotplug->get_online_min_num) - return -ENODEV; - - return hotplug->get_online_min_num(res->config_data.res_name); + return hal_power_hotplug_get_online_min_num(res->config_data.res_type, + res->config_data.res_name); } /** @@ -472,23 +309,16 @@ int pass_hal_get_online_min_num(struct pass_resource *res) * @return @c 0 on success, otherwise error value * @retval -22 Invalid argument (-EINVAL) * @retval -1 Operation not permitted (-EPERM) - * @retval -19 Operation not supported (-ENODEV) + * @retval -19 Operation not supported (-ENOTSUP) */ int pass_hal_set_online_min_num(struct pass_resource *res, int num) { - struct pass_resource_hotplug_ops *hotplug; - if ((!res) || (num < 0)) return -EINVAL; - hotplug = get_hotplug(res, res->config_data.res_type); - if (!hotplug) - return -EPERM; - - if (!hotplug->set_online_min_num) - return -ENODEV; - - return hotplug->set_online_min_num(res->config_data.res_name, num); + return hal_power_hotplug_set_online_min_num(res->config_data.res_type, + res->config_data.res_name, + num); } /** @@ -497,23 +327,15 @@ int pass_hal_set_online_min_num(struct pass_resource *res, int num) * @return @c positive integer on success, otherwise error value * @retval -22 Invalid argument (-EINVAL) * @retval -1 Operation not permitted (-EPERM) - * @retval -19 Operation not supported (-ENODEV) + * @retval -19 Operation not supported (-ENOTSUP) */ int pass_hal_get_online_max_num(struct pass_resource *res) { - struct pass_resource_hotplug_ops *hotplug; - if (!res) return -EINVAL; - hotplug = get_hotplug(res, res->config_data.res_type); - if (!hotplug) - return -EPERM; - - if (!hotplug->get_online_max_num) - return -ENODEV; - - return hotplug->get_online_max_num(res->config_data.res_name); + return hal_power_hotplug_get_online_max_num(res->config_data.res_type, + res->config_data.res_name); } /** @@ -523,23 +345,16 @@ int pass_hal_get_online_max_num(struct pass_resource *res) * @return @c 0 on success, otherwise error value * @retval -22 Invalid argument (-EINVAL) * @retval -1 Operation not permitted (-EPERM) - * @retval -19 Operation not supported (-ENODEV) + * @retval -19 Operation not supported (-ENOTSUP) */ int pass_hal_set_online_max_num(struct pass_resource *res, int num) { - struct pass_resource_hotplug_ops *hotplug; - if ((!res) || (num < 0)) return -EINVAL; - hotplug = get_hotplug(res, res->config_data.res_type); - if (!hotplug) - return -EPERM; - - if (!hotplug->set_online_max_num) - return -ENODEV; - - return hotplug->set_online_max_num(res->config_data.res_name, num); + return hal_power_hotplug_set_online_max_num(res->config_data.res_type, + res->config_data.res_name, + num); } /** @@ -548,27 +363,19 @@ int pass_hal_set_online_max_num(struct pass_resource *res, int num) * @return @c integer (both positive and negative are possible) on success * @retval -22 Invalid argument (-EINVAL) * @retval -1 Operation not permitted (-EPERM) - * @retval -19 Operation not supported (-ENODEV) + * @retval -19 Operation not supported (-ENOTSUP) */ int pass_hal_get_temp(struct pass_resource *res) { - struct pass_resource_tmu_ops *tmu; - if (!res) return -EINVAL; - tmu = get_tmu(res, res->config_data.res_type); - if (!tmu) - return -EPERM; - - if (!tmu->get_temp) - return -ENODEV; - /* * In the case of the HAL TMU ops, res_thermal_name is used * as the first argument instead of res_name. */ - return tmu->get_temp(res->config_data.res_thermal_name); + return hal_power_thermal_get_temp(res->config_data.res_type, + res->config_data.res_thermal_name); } /** @@ -578,27 +385,20 @@ int pass_hal_get_temp(struct pass_resource *res) * @return @c 0 on success, otherwise error value * @retval -22 Invalid argument (-EINVAL) * @retval -1 Operation not permitted (-EPERM) - * @retval -19 Operation not supported (-ENODEV) + * @retval -19 Operation not supported (-ENOTSUP) */ int pass_hal_get_tmu_policy(struct pass_resource *res, char *policy) { - struct pass_resource_tmu_ops *tmu; - if (!res || !policy) return -EINVAL; - tmu = get_tmu(res, res->config_data.res_type); - if (!tmu) - return -EPERM; - - if (!tmu->get_policy) - return -ENODEV; - /* * In the case of the HAL TMU ops, res_thermal_name is used * as the first argument instead of res_name. */ - return tmu->get_policy(res->config_data.res_thermal_name, policy); + return hal_power_thermal_get_policy(res->config_data.res_type, + res->config_data.res_thermal_name, + policy); } /** @@ -609,28 +409,17 @@ int pass_hal_get_tmu_policy(struct pass_resource *res, char *policy) * @return @c 0 on success, otherwise error value * @retval -22 Invalid argument (-EINVAL) * @retval -1 Operation not permitted (-EPERM) - * @retval -19 Operation not supported (-ENODEV) + * @retval -19 Operation not supported (-ENOTSUP) */ int pass_hal_set_fault_around_bytes(struct pass_resource *res, int fault_around_bytes) { - struct pass_resource_memory *memory; - if (!res) return -EINVAL; - switch (res->config_data.res_type) { - case PASS_RESOURCE_MEMORY_ID: - memory = res->hal.memory; - break; - default: - return -EPERM; - } - - if (!memory->set_fault_around_bytes) - return -ENODEV; - - return memory->set_fault_around_bytes(res->config_data.res_name, fault_around_bytes); + return hal_power_memory_set_fault_around_bytes(res->config_data.res_type, + res->config_data.res_name, + fault_around_bytes); } /** @@ -639,27 +428,15 @@ int pass_hal_set_fault_around_bytes(struct pass_resource *res, * @return @c positive integer on success, otherwise error value * @retval -22 Invalid argument (-EINVAL) * @retval -1 Operation not permitted (-EPERM) - * @retval -19 Operation not supported (-ENODEV) + * @retval -19 Operation not supported (-ENOTSUP) */ int pass_hal_get_fault_around_bytes(struct pass_resource *res) { - struct pass_resource_memory *memory; - if (!res) return -EINVAL; - switch (res->config_data.res_type) { - case PASS_RESOURCE_MEMORY_ID: - memory = res->hal.memory; - break; - default: - return -EPERM; - } - - if (!memory->get_fault_around_bytes) - return -ENODEV; - - return memory->get_fault_around_bytes(res->config_data.res_name); + return hal_power_memory_get_fault_around_bytes(res->config_data.res_type, + res->config_data.res_name); } /** @@ -668,27 +445,15 @@ int pass_hal_get_fault_around_bytes(struct pass_resource *res) * @return @c 0 on success, otherwise error value * @retval -22 Invalid argument (-EINVAL) * @retval -1 Operation not permitted (-EPERM) - * @retval -19 Operation not supported (-ENODEV) + * @retval -19 Operation not supported (-ENOTSUP) */ int pass_hal_set_pmqos_data(struct pass_resource *res, void *data) { - struct pass_resource_nonstandard *nonstandard = NULL; - if (!res || !data) return -EINVAL; - switch (res->config_data.res_type) { - case PASS_RESOURCE_NONSTANDARD_ID: - nonstandard = (res->hal.nonstandard); - break; - default: - return -EPERM; - } - - if (!nonstandard->set_pmqos_data) - return -ENODEV; - - return nonstandard->set_pmqos_data(res->config_data.res_name, data); + return hal_power_misc_set_pmqos_data(res->config_data.res_type, + res->config_data.res_name, data); } /** @@ -990,79 +755,10 @@ int pass_hal_restore_initdata(struct pass_resource *res) */ int pass_hal_get_resource(struct pass_resource *res) { - struct pass_resource_info *info; - const char *name; - int ret; - if (!res) return -EINVAL; - switch (res->config_data.res_type) { - case PASS_RESOURCE_CPU_ID: - name = PASS_RESOURCE_CPU_NAME; - break; - case PASS_RESOURCE_BUS_ID: - name = PASS_RESOURCE_BUS_NAME; - break; - case PASS_RESOURCE_GPU_ID: - name = PASS_RESOURCE_GPU_NAME; - break; - case PASS_RESOURCE_MEMORY_ID: - name = PASS_RESOURCE_MEMORY_NAME; - break; - case PASS_RESOURCE_NONSTANDARD_ID: - name = PASS_RESOURCE_NONSTANDARD_NAME; - break; - default: - _E("Unsupported resource type (type: %d)\n", - res->config_data.res_type); - return -EINVAL; - }; - - ret = pass_get_hal_info(name, - (const struct pass_resource_info **)&info); - if (ret < 0) { - _E("Failed to get %s.so for '%s' resource\n", - name, res->config_data.res_name); - return -EINVAL; - } - - if (!info->open || !info->close) { - _E("Failed to get functions of %s.so for '%s' resource\n", - name, res->config_data.res_name); - return -EPERM; - } - - switch (res->config_data.res_type) { - case PASS_RESOURCE_CPU_ID: - ret = info->open(res->config_data.res_name, info, - (struct pass_resource_common**)&res->hal.cpu); - break; - case PASS_RESOURCE_BUS_ID: - ret = info->open(res->config_data.res_name, info, - (struct pass_resource_common**)&res->hal.bus); - break; - case PASS_RESOURCE_GPU_ID: - ret = info->open(res->config_data.res_name, info, - (struct pass_resource_common**)&res->hal.gpu); - break; - case PASS_RESOURCE_MEMORY_ID: - ret = info->open(res->config_data.res_name, info, - (struct pass_resource_common**)&res->hal.memory); - break; - case PASS_RESOURCE_NONSTANDARD_ID: - ret = info->open(res->config_data.res_name, info, - (struct pass_resource_common**)&res->hal.nonstandard); - break; - }; - - if (ret < 0) { - _E("Failed to open %s.so for '%s' resource\n", - name, res->config_data.res_name); - return -EINVAL; - } - - return 0; + return hal_power_get_backend(res->config_data.res_type); } /** @@ -1073,48 +769,8 @@ int pass_hal_get_resource(struct pass_resource *res) */ int pass_hal_put_resource(struct pass_resource *res) { - struct pass_resource_common *common; - struct pass_resource_info *info; - int ret; - if (!res) return -EINVAL; - switch (res->config_data.res_type) { - case PASS_RESOURCE_CPU_ID: - common = (struct pass_resource_common*)res->hal.cpu; - info = res->hal.cpu->common.info; - ret = info->close(res->config_data.res_name, common); - break; - case PASS_RESOURCE_BUS_ID: - common = (struct pass_resource_common*)res->hal.bus; - info = res->hal.bus->common.info; - ret = info->close(res->config_data.res_name, common); - break; - case PASS_RESOURCE_GPU_ID: - common = (struct pass_resource_common*)res->hal.gpu; - info = res->hal.gpu->common.info; - ret = info->close(res->config_data.res_name, common); - break; - case PASS_RESOURCE_MEMORY_ID: - common = (struct pass_resource_common*)res->hal.memory; - info = res->hal.memory->common.info; - ret = info->close(res->config_data.res_name, common); - break; - case PASS_RESOURCE_NONSTANDARD_ID: - common = (struct pass_resource_common*)res->hal.nonstandard; - info = res->hal.nonstandard->common.info; - ret = info->close(res->config_data.res_name, common); - break; - default: - return -EINVAL; - }; - - if (ret < 0) { - _E("Failed to close %s.so for '%s' resource\n", - info->name, res->config_data.res_name); - return -EINVAL; - } - - return 0; + return hal_power_put_backend(); } diff --git a/src/pass/pass-hal.h b/src/pass/pass-hal.h index 6329602..43b45e3 100644 --- a/src/pass/pass-hal.h +++ b/src/pass/pass-hal.h @@ -31,7 +31,9 @@ #ifndef __PASS_HAL__ #define __PASS_HAL__ -#include +#include + +struct pass_resource; /*** * Functions for all H/W resources diff --git a/src/pass/pass-parser.c b/src/pass/pass-parser.c index 38c6392..dac9724 100644 --- a/src/pass/pass-parser.c +++ b/src/pass/pass-parser.c @@ -40,7 +40,7 @@ #include #include -#include +#include #include "pass.h" diff --git a/src/pass/pass-resmon.c b/src/pass/pass-resmon.c index faf7fc7..8c42e08 100644 --- a/src/pass/pass-resmon.c +++ b/src/pass/pass-resmon.c @@ -40,7 +40,7 @@ #include #include -#include +#include #include "pass.h" #include "pass-hal.h" diff --git a/src/pass/pass-thermal.c b/src/pass/pass-thermal.c index fc3b088..5ef9eb3 100644 --- a/src/pass/pass-thermal.c +++ b/src/pass/pass-thermal.c @@ -26,8 +26,8 @@ */ #include -#include #include +#include #include "pass.h" #include "pass-rescon.h" diff --git a/src/pass/pass.c b/src/pass/pass.c index 764df84..ae9592f 100644 --- a/src/pass/pass.c +++ b/src/pass/pass.c @@ -42,7 +42,7 @@ #include "pass-parser.h" #include "pass-hal.h" -#define PASS_CONF_PATH "/etc/pass/pass.conf" +#define PASS_CONF_PATH "/hal/etc/pass/pass.conf" /** * @brief Specify the supported modules according to the type of h/w diff --git a/systemd/pass.service b/systemd/pass.service.in similarity index 84% rename from systemd/pass.service rename to systemd/pass.service.in index 13b8bcf..a774f5f 100644 --- a/systemd/pass.service +++ b/systemd/pass.service.in @@ -10,6 +10,7 @@ RestartSec=0 KillSignal=SIGUSR1 User=system_fw Group=system_fw +Environment=LD_LIBRARY_PATH=@LIBDIR@/hal [Install] WantedBy=delayed.target diff --git a/unittest/CMakeLists.txt b/unittest/CMakeLists.txt index 99c5bdc..7aeae05 100644 --- a/unittest/CMakeLists.txt +++ b/unittest/CMakeLists.txt @@ -1,7 +1,6 @@ PROJECT(pass C CXX) -SET(SRCS ${CMAKE_SOURCE_DIR}/src/hal/hal.c - ${CMAKE_SOURCE_DIR}/src/pass/pass-hal.c +SET(SRCS ${CMAKE_SOURCE_DIR}/src/pass/pass-hal.c ${CMAKE_SOURCE_DIR}/src/pass/pass-parser.c ${CMAKE_SOURCE_DIR}/src/core/common.c ${CMAKE_SOURCE_DIR}/src/core/config-parser.c @@ -13,7 +12,14 @@ INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/pass) INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include) INCLUDE(FindPkgConfig) -pkg_check_modules(gtest_pkgs REQUIRED glib-2.0 gio-2.0 gmock dlog) +pkg_check_modules(gtest_pkgs REQUIRED + glib-2.0 + gio-2.0 + gmock + dlog + hal-api-common + hal-api-power +) FOREACH(flag ${gtest_pkgs_CFLAGS}) SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}") @@ -29,6 +35,6 @@ FOREACH(src ${sources}) GET_FILENAME_COMPONENT(src_name ${src} NAME_WE) MESSAGE("${src_name}") ADD_EXECUTABLE(${src_name} ${SRCS} ${src}) - TARGET_LINK_LIBRARIES(${src_name} ${gtest_LDFLAGS} ${gtest_pkgs_LDFLAGS} -ldl) + TARGET_LINK_LIBRARIES(${src_name} ${gtest_LDFLAGS} ${gtest_pkgs_LDFLAGS} -ldl -L${LIBDIR}/hal) INSTALL(TARGETS ${src_name} DESTINATION bin) ENDFOREACH() diff --git a/unittest/pass_haltests.cpp b/unittest/pass_haltests.cpp index de98ee0..3cb6f7b 100644 --- a/unittest/pass_haltests.cpp +++ b/unittest/pass_haltests.cpp @@ -57,7 +57,7 @@ TEST_F(PowerMgntHalTest, GetResourceConfig_HandlesValidInput) { int ret = 0; unsigned int i; - char path[] = "/etc/pass/pass.conf"; + char path[] = "/hal/etc/pass/pass.conf"; /* Stop PASS daemon before HAL testing */ ret = system("/bin/systemctl stop pass.service");