fixup! Move mutexes and condition from static memory allocation to dynamic 28/214228/1
authorYoungHun Kim <yh8004.kim@samsung.com>
Fri, 30 Aug 2019 06:04:11 +0000 (15:04 +0900)
committerYoungHun Kim <yh8004.kim@samsung.com>
Wed, 18 Sep 2019 02:17:25 +0000 (11:17 +0900)
 - Add missing mutex lock

Change-Id: I6554ead33d02b3578b9442c89e262dc8ce1fd172

packaging/murphy.spec
src/common/mainloop.c

index 52a5ac57a1b3d43c2da336745935131cb98c73dc..0cc4b5ffb423985d8d608a64322d5a790fef5de3 100644 (file)
@@ -29,7 +29,7 @@
 Summary: Resource policy framework
 Name: murphy
 Version: 0.0.75
-Release: 15
+Release: 16
 License: BSD-3-Clause
 Group: System/Service
 URL: http://01.org/murphy/
index cff438512a9fdaf616b05e91e0163ea87610b347..950c5819942a6c4e4643ec03f4d6fa68b89b185e 100644 (file)
@@ -2140,12 +2140,15 @@ static void dispatch_subloops(mrp_mainloop_t *ml)
 }
 
 
-static void dispatch_slaves(mrp_io_watch_t *w, struct epoll_event *e)
+static void dispatch_slaves(mrp_mainloop_t *ml, mrp_io_watch_t *w, struct epoll_event *e)
 {
     mrp_io_watch_t  *s;
     mrp_list_hook_t *p, *n;
     mrp_io_event_t   events;
 
+    if (ml->quit)
+        return;
+
     events = e->events & ~(MRP_IO_EVENT_INOUT & w->events);
 
     mrp_list_foreach(&w->slave, p, n) {
@@ -2156,7 +2159,9 @@ static void dispatch_slaves(mrp_io_watch_t *w, struct epoll_event *e)
 
         if (!is_deleted(s)) {
             mrp_debug("dispatching slave I/O watch %p (fd %d)", s, s->fd);
+            pthread_mutex_unlock(&ml->lock);
             s->cb(s, s->fd, events, s->user_data);
+            pthread_mutex_lock(&ml->lock);
         }
         else
             mrp_debug("skipping slave I/O watch %p (fd %d)", s, s->fd);
@@ -2191,7 +2196,7 @@ static void dispatch_poll_events(mrp_mainloop_t *ml)
             mrp_debug("skipping deleted I/O watch %p (fd %d)", w, fd);
 
         if (!mrp_list_empty(&w->slave))
-            dispatch_slaves(w, e);
+            dispatch_slaves(ml, w, e);
 
         if (e->events & EPOLLRDHUP) {
             tblw = fdtbl_lookup(ml->fdtbl, w->fd);