Tuan Ta has submitted this change and it was merged. (
https://gem5-review.googlesource.com/c/public/gem5/+/9628 )
Change subject: sim: handle the case when there're not enough HW thread
contexts
......................................................................
sim: handle the case when there're not enough HW thread contexts
In SE mode, since there's no OS scheduler, the number of active SW
threads is limited by the number of HW thread contexts. Previously, if
there is no spare HW thread context, the simulator just fails and stops.
Instead, this patch returns EAGAIN error code from a clone syscall if
there's no available HW thread context. Then it's up to the simulated
program to handle the error.
Linux man page reference:
http://man7.org/linux/man-pages/man2/clone.2.html
http://man7.org/linux/man-pages/man2/fork.2.html
Change-Id: Ib4e092433e49de4dde376c8cb81f7d3f7851cbc0
Reviewed-on: https://gem5-review.googlesource.com/c/9628
Reviewed-by: Brandon Potter <[email protected]>
Maintainer: Brandon Potter <[email protected]>
---
M src/sim/syscall_emul.hh
1 file changed, 5 insertions(+), 2 deletions(-)
Approvals:
Brandon Potter: Looks good to me, approved; Looks good to me, approved
diff --git a/src/sim/syscall_emul.hh b/src/sim/syscall_emul.hh
index dcd6b5d..295598c 100644
--- a/src/sim/syscall_emul.hh
+++ b/src/sim/syscall_emul.hh
@@ -1431,8 +1431,11 @@
return -EINVAL;
ThreadContext *ctc;
- if (!(ctc = p->findFreeContext()))
- fatal("clone: no spare thread context in system");
+ if (!(ctc = p->findFreeContext())) {
+ DPRINTF_SYSCALL(Verbose, "clone: no spare thread context in system"
+ "[cpu %d, thread %d]", tc->cpuId(),
tc->threadId());
+ return -EAGAIN;
+ }
/**
* Note that ProcessParams is generated by swig and there are no other
--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/9628
To unsubscribe, or for help writing mail filters, visit
https://gem5-review.googlesource.com/settings
Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-Change-Id: Ib4e092433e49de4dde376c8cb81f7d3f7851cbc0
Gerrit-Change-Number: 9628
Gerrit-PatchSet: 10
Gerrit-Owner: Tuan Ta <[email protected]>
Gerrit-Reviewer: Brandon Potter <[email protected]>
Gerrit-Reviewer: Jason Lowe-Power <[email protected]>
Gerrit-Reviewer: Tuan Ta <[email protected]>
Gerrit-MessageType: merged
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev