modula-2: Fix stack size request in initPreemptive [PR108405]
Checks
Commit Message
Given that, currently, this value is not configurable per target the
short-term solution is to avoid a bad request.
Tested on x86_64-darwin21, OK for trunk?
thanks
Iain
--- 8< ---
As noted in the PR, the problem is that we make a request for additional
stack that violates the constraints on some systems.
This patch chooses a value that is divisible by common OS page sizes.
TODO: the user value should be checked and then an exception thrown if it
is not suitable.
Signed-off-by: Iain Sandoe <iain@sandoe.co.uk>
PR modula2/108405
gcc/m2/ChangeLog:
* gm2-libs-iso/Preemptive.mod (initPreemptive): Use a value for
extra space that is divisible by common OS pagesizes.
---
gcc/m2/gm2-libs-iso/Preemptive.mod | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
Comments
Iain Sandoe <iains.gcc@gmail.com> writes:
> Given that, currently, this value is not configurable per target the
> short-term solution is to avoid a bad request.
>
> Tested on x86_64-darwin21, OK for trunk?
> thanks
> Iain
Hi Iain,
yes this is fine. LGTM - thanks
regards,
Gaius
@@ -33,6 +33,9 @@ FROM libc IMPORT printf ;
CONST
debugging = FALSE ;
+ (* The space we request becomes part of a stack request, which generally
+ has constraints on size and alignment. *)
+ extraWorkSpace = 10 * 1024 * 1024 ;
(*
timer - the timer process which runs at maximum scheduling priority with
@@ -107,7 +110,7 @@ BEGIN
IF NOT init
THEN
init := TRUE ;
- Create (timer, 10000000, MAX (Urgency), NIL, timerId) ;
+ Create (timer, extraWorkSpace, MAX (Urgency), NIL, timerId) ;
Activate (timerId)
END
END initPreemptive ;