summaryrefslogtreecommitdiff
path: root/erts/emulator/beam/erl_process.c
diff options
context:
space:
mode:
Diffstat (limited to 'erts/emulator/beam/erl_process.c')
-rw-r--r--erts/emulator/beam/erl_process.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/erts/emulator/beam/erl_process.c b/erts/emulator/beam/erl_process.c
index 73dc8aa040..990c1ff914 100644
--- a/erts/emulator/beam/erl_process.c
+++ b/erts/emulator/beam/erl_process.c
@@ -9793,7 +9793,7 @@ Process *erts_schedule(ErtsSchedulerData *esdp, Process *p, int calls)
if (is_normal_sched) {
if (state & ERTS_PSFLG_RUNNING_SYS) {
if (state & (ERTS_PSFLG_SIG_Q|ERTS_PSFLG_SIG_IN_Q)) {
- int local_only = (!!(p->flags & F_LOCAL_SIGS_ONLY)
+ int local_only = (!!(p->sig_qs.flags & FS_LOCAL_SIGS_ONLY)
& !(state & (ERTS_PSFLG_SUSPENDED|ERTS_PSFLGS_DIRTY_WORK)));
if (!local_only | !!(state & ERTS_PSFLG_SIG_Q)) {
int sig_reds;
@@ -11391,7 +11391,7 @@ erl_create_process(Process* parent, /* Parent of process (default group leader).
ErlSpawnOpts* so) /* Options for spawn. */
{
int bound = 0;
- Uint flags = 0;
+ Uint flags = 0, qs_flags = 0;
ErtsRunQueue *rq = NULL;
Process *p;
Sint arity; /* Number of arguments. */
@@ -11437,13 +11437,13 @@ erl_create_process(Process* parent, /* Parent of process (default group leader).
if (so->flags & SPO_OFF_HEAP_MSGQ) {
state |= ERTS_PSFLG_OFF_HEAP_MSGQ;
- flags |= F_OFF_HEAP_MSGQ;
+ qs_flags |= FS_OFF_HEAP_MSGQ;
}
else if (so->flags & SPO_ON_HEAP_MSGQ) {
- flags |= F_ON_HEAP_MSGQ;
+ qs_flags |= FS_ON_HEAP_MSGQ;
}
- ASSERT((flags & F_ON_HEAP_MSGQ) || (flags & F_OFF_HEAP_MSGQ));
+ ASSERT((qs_flags & FS_ON_HEAP_MSGQ) || (qs_flags & FS_OFF_HEAP_MSGQ));
if (!rq)
rq = erts_get_runq_proc(parent, NULL);
@@ -11465,6 +11465,7 @@ erl_create_process(Process* parent, /* Parent of process (default group leader).
heap_need = arg_size;
p->flags = flags;
+ p->sig_qs.flags = qs_flags;
p->static_flags = 0;
if (so->flags & SPO_SYSTEM_PROC)