diff options
Diffstat (limited to 'dev/kernel/src/PEFCodeMgr.cc')
| -rw-r--r-- | dev/kernel/src/PEFCodeMgr.cc | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/dev/kernel/src/PEFCodeMgr.cc b/dev/kernel/src/PEFCodeMgr.cc index 632d5baa..40a0cff9 100644 --- a/dev/kernel/src/PEFCodeMgr.cc +++ b/dev/kernel/src/PEFCodeMgr.cc @@ -12,6 +12,7 @@ #include <NewKit/KString.h> #include <NewKit/KernelPanic.h> #include <NewKit/OwnPtr.h> +#include "KernelKit/UserProcessScheduler.h" /// @brief PEF stack size symbol. #define kPefStackSizeSymbol "__PEFSizeOfReserveStack" @@ -242,7 +243,11 @@ namespace Utils { auto stacksym = exec.FindSymbol(kPefStackSizeSymbol, kPefData); if (!symname) { - stacksym = ErrorOr<VoidPtr>{(VoidPtr) new UIntPtr(mib_cast(16))}; + stacksym = ErrorOr<VoidPtr>{(VoidPtr) new UIntPtr(kSchedMaxStackSz)}; + } + + if ((*(volatile UIntPtr*)stacksym.Leak().Leak()) > kSchedMaxStackSz) { + *(volatile UIntPtr*)stacksym.Leak().Leak() = kSchedMaxStackSz; } UserProcessScheduler::The().CurrentTeam().AsArray()[id].Kind = process_kind; |
