summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNIIBE Yutaka <gniibe@fsij.org>2015-09-08 17:14:43 +0900
committerNIIBE Yutaka <gniibe@fsij.org>2015-09-08 17:14:43 +0900
commit1b25cc5dcb32562bb92ca5e8e4e8cf1fedcc1943 (patch)
tree5bd2cb3a6d509b0362f53038726e970c3408cf17
parentee3c5d4e6f7b8ef003d940a9e2c75b5068599577 (diff)
fix more spin lock
-rw-r--r--ChangeLog2
-rw-r--r--chopstx.c2
2 files changed, 4 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 73651f5..2895f53 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -4,6 +4,8 @@
the condition inside.
(chx_timer_expired, chx_handle_intr): Call unconditionally.
(intr_lock): New variable.
+ (chx_handle_intr, chopstx_claim_irq, chopstx_release_irq)
+ (chopstx_release_irq_thread): Add spin lock with intr_lock.
* chopstx.h (chx_intr): Remove member LOCK.
diff --git a/chopstx.c b/chopstx.c
index 2df444a..914b372 100644
--- a/chopstx.c
+++ b/chopstx.c
@@ -1331,6 +1331,7 @@ chopstx_release_irq_thread (struct chx_thread *tp)
chopstx_intr_t *intr, *intr_prev;
chx_cpu_sched_lock ();
+ chx_spin_lock (&intr_lock);
intr_prev = intr_top;
for (intr = intr_top; intr; intr = intr->next)
if (intr->tp == tp)
@@ -1344,6 +1345,7 @@ chopstx_release_irq_thread (struct chx_thread *tp)
else
intr_prev->next = intr->next;
}
+ chx_spin_unlock (&intr_lock);
chx_cpu_sched_unlock ();
}