aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator
diff options
context:
space:
mode:
authorAdrian Mangeac <[email protected]>2014-03-03 11:18:52 +0100
committerLukas Larsson <[email protected]>2014-03-23 22:06:54 +0100
commit483161dd3e05d5d4285bae90ac625e761c7b8214 (patch)
tree6dea4a3f9a8ff0e2d08a58bba90f1d4485df0345 /erts/emulator
parenta74e66a68f3b4ed590f928b4fd4f0808c6287a32 (diff)
downloadotp-483161dd3e05d5d4285bae90ac625e761c7b8214.tar.gz
otp-483161dd3e05d5d4285bae90ac625e761c7b8214.tar.bz2
otp-483161dd3e05d5d4285bae90ac625e761c7b8214.zip
ose: Restore the owner of the signal
As any scheduler process can consume any message we have to make sure that the message is owned by the scheduler before returning it in erl_drv_ose_get_signal.
Diffstat (limited to 'erts/emulator')
-rw-r--r--erts/emulator/sys/ose/erl_poll.c1
-rw-r--r--erts/emulator/sys/ose/sys.c1
2 files changed, 1 insertions, 1 deletions
diff --git a/erts/emulator/sys/ose/erl_poll.c b/erts/emulator/sys/ose/erl_poll.c
index ca1ed6e53a..f0a9097252 100644
--- a/erts/emulator/sys/ose/erl_poll.c
+++ b/erts/emulator/sys/ose/erl_poll.c
@@ -737,6 +737,7 @@ union SIGNAL *erl_drv_ose_get_signal(ErlDrvEvent drv_ev) {
ev->msgs = msg->next;
ethr_mutex_unlock(&ev->mtx);
erts_free(ERTS_ALC_T_FD_SIG_LIST,msg);
+ restore(sig);
return sig;
}
}
diff --git a/erts/emulator/sys/ose/sys.c b/erts/emulator/sys/ose/sys.c
index c892cc69c7..e3041ff1ca 100644
--- a/erts/emulator/sys/ose/sys.c
+++ b/erts/emulator/sys/ose/sys.c
@@ -213,7 +213,6 @@ static volatile int children_died;
/* When we have several schedulers, we need to make sure
* that scheduler issuing aio_dispatch() is the owner on the signal */
#define DISPATCH_AIO(sig) do { \
- restore(sig); \
aio_dispatch(sig); \
} while(0)