pass: resmon: Remove dependency of monitor->result and monitor->ops 76/269976/3
authorChanwoo Choi <cw00.choi@samsung.com>
Thu, 13 Jan 2022 05:58:45 +0000 (14:58 +0900)
committerChanwoo Choi <cw00.choi@samsung.com>
Mon, 24 Jan 2022 09:23:58 +0000 (18:23 +0900)
Remove dependency of monitor->result and monitor->ops for supporting
the basic timer functionality. If monitor->ops is NULL, pass_resmon.c
just creates the periodic timer and uevent timer.

Change-Id: I43839a1b27f961d933e40177e1b2821b8ce775f0
Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
src/pass/pass-resmon.c

index fad1304979d411c945f1e466f2e9517041412a2e..d1931eed674a6ed746358ce8caf838550b0fe284 100644 (file)
@@ -201,9 +201,6 @@ static gboolean resmon_timer_func(gpointer data)
                = container_of(resmon, struct pass_resource, resmon);;
        int ret = 0;
 
-       if (!monitor->result)
-               return false;
-
        /* Collect resource data according to enum resmon_src_type */
        if (monitor->ops && monitor->ops->timer_handler) {
                ret = monitor->ops->timer_handler(monitor, monitor->result);
@@ -310,10 +307,6 @@ int pass_resmon_register_timer(struct pass_resource *res,
 
        /* Get instance of struct resmon_ops according to resmon_src_type */
        monitor->ops = resmon_get_ops(src_type);
-       if (!monitor->ops) {
-               ret = -EINVAL;
-               goto err;
-       }
 
        /* Add timer-based resource monitor */
        ret = resmon_timer_add(monitor, timer_interval);
@@ -466,6 +459,11 @@ static int resmon_uevent_add(struct resmon *monitor)
        int fd;
        int i;
 
+       if (!monitor->ops) {
+               _E("failed to add the udev-monitor\n");
+               return -EINVAL;
+       }
+
        /* Initialize the udev-monitor instance and set buffer size */
        udev_monitor = udev_monitor_new_from_netlink(g_udev, "kernel");
        if (!udev_monitor) {
@@ -537,7 +535,7 @@ static int resmon_uevent_add(struct resmon *monitor)
         * Invoke the .init of each RESMON_SRC_* source
         * before enabling the udev monitoring.
         */
-       if (monitor->ops && monitor->ops->init) {
+       if (monitor->ops->init) {
                ret = monitor->ops->init(monitor);
                if (ret < 0) {
                        _E("failed to invoke .init of resmon source  " \
@@ -657,12 +655,6 @@ int pass_resmon_register_uevent(struct pass_resource *res,
 
        /* Get instance of struct resmon_ops according to resmon_src_type */
        monitor->ops = resmon_get_ops(src_type);
-       if (!monitor->ops) {
-               _E("failed to get resmon_ops (res_name: %s, type: 0x%x)\n",
-                                       res->config_data.res_name, src_type);
-               ret = -EINVAL;
-               goto err;
-       }
 
        /* Add uevent-based resource monitor */
        ret = resmon_uevent_add(monitor);