[SLOF] [PATCH v2 1/1] Fix output word
segher at kernel.crashing.org
Fri Nov 24 03:53:31 AEDT 2017
On Thu, Nov 23, 2017 at 10:26:13AM +0100, Laurent Vivier wrote:
> >> We can select the console output, but it does not really work
It used to work, what broke?
> >> Implement term-io-emit, as we have term-io-key to really
> >> send characters to the output selected by stdout.
This is a nice optimisation of course (caching the xt), but term-io-key
should do the same thing then.
> >> +0 VALUE stdout_ihandle
> >> +0 VALUE write_xt
Please use dashes instead of underscores.
> >> : output ( dev-str dev-len -- )
> >> open-dev ?dup IF
> >> \ Close old stdout:
> >> @@ -29,7 +32,10 @@
> >> decode-int nip nip ?dup IF close-dev THEN
> >> THEN
> >> \ Now set the new stdout:
> >> + dup to stdout_ihandle
> >> encode-int s" stdout" set-chosen
> >> + s" write" stdout_ihandle ihandle>phandle find-method
> >> + 0= IF 0 THEN to write_xt
> >> THEN
> >> ;
An xt of zero will crash the system if you try to execute it. Use
['] 2drop instead? Or similar. Or don't do a term-io-emit but
just a term-io-type.
> >> @@ -40,6 +46,15 @@
> >> 1 BUFFER: (term-io-char-buf)
> >> +: term-io-emit ( char -- )
> >> + write_xt 0= IF [ ' emit behavior compile, ] EXIT THEN
That is very problematic. If the xt of term-io-emit already is the
behaviour of emit, this will loop. It sounds like you just want the
"system emit"; just assign that to the hook, don't do extra redirections?
More information about the SLOF