aboutsummaryrefslogtreecommitdiffstats
path: root/litmus/ikglp_lock.c
diff options
context:
space:
mode:
authorGlenn Elliott <gelliott@cs.unc.edu>2013-03-28 18:10:23 -0400
committerGlenn Elliott <gelliott@cs.unc.edu>2013-03-28 18:10:23 -0400
commitb9f67e64d84081f7dbba8dc380af8c39ac8d0a37 (patch)
tree05cc5c56f469aa17ac0e81d94e3a2284b28e07ab /litmus/ikglp_lock.c
parent4e28e863475df7c27c2e9ecba4e2cdd409bf044e (diff)
inheritance management of budget.exp while blocked
Diffstat (limited to 'litmus/ikglp_lock.c')
-rw-r--r--litmus/ikglp_lock.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/litmus/ikglp_lock.c b/litmus/ikglp_lock.c
index b0c8afe90122..160998f466ed 100644
--- a/litmus/ikglp_lock.c
+++ b/litmus/ikglp_lock.c
@@ -484,7 +484,7 @@ static void ikglp_refresh_owners_prio_decrease(struct fifo_queue *fq,
484 } 484 }
485 485
486 // beware: recursion 486 // beware: recursion
487 litmus->nested_decrease_prio(owner, decreased_prio, &sem->lock, flags); // will unlock mutex->lock 487 litmus->nested_decrease_prio(owner, decreased_prio, &sem->lock, flags, 0); // will unlock mutex->lock
488 } 488 }
489 else { 489 else {
490 TRACE_TASK(owner, "No need to propagate priority decrease forward.\n"); 490 TRACE_TASK(owner, "No need to propagate priority decrease forward.\n");
@@ -535,7 +535,7 @@ static void ikglp_remove_donation_from_owner(struct binheap_node *n,
535 } 535 }
536 536
537 // beware: recursion 537 // beware: recursion
538 litmus->nested_decrease_prio(owner, decreased_prio, &sem->lock, flags); // will unlock mutex->lock 538 litmus->nested_decrease_prio(owner, decreased_prio, &sem->lock, flags, 0); // will unlock mutex->lock
539 } 539 }
540 else { 540 else {
541 TRACE_TASK(owner, "No need to propagate priority decrease forward.\n"); 541 TRACE_TASK(owner, "No need to propagate priority decrease forward.\n");
@@ -1382,7 +1382,7 @@ int ikglp_unlock(struct litmus_lock* l)
1382 ++count; 1382 ++count;
1383 } 1383 }
1384 if (count) { 1384 if (count) {
1385 litmus->decrease_prio(t, NULL); 1385 litmus->decrease_prio(t, NULL, 0);
1386 } 1386 }
1387 WARN_ON(count > 2); // should not be greater than 2. only local fq inh and donation can be possible. 1387 WARN_ON(count > 2); // should not be greater than 2. only local fq inh and donation can be possible.
1388 } 1388 }
@@ -1606,6 +1606,17 @@ out:
1606} 1606}
1607 1607
1608 1608
1609void ikglp_budget_exhausted(struct litmus_lock* l, struct task_struct* t)
1610{
1611 TRACE_TASK(t, "TODO!\n");
1612}
1613
1614void ikglp_virtual_unlock(struct litmus_lock* l, struct task_struct* t)
1615{
1616 TRACE_TASK(t, "TODO!\n");
1617}
1618
1619
1609 1620
1610int ikglp_close(struct litmus_lock* l) 1621int ikglp_close(struct litmus_lock* l)
1611{ 1622{