[SLOF] [PATCH v3 10/17] Add support for a TPM menu to control the state of the TPM

Stefan Berger stefanb at linux.vnet.ibm.com
Thu Nov 16 23:03:50 AEDT 2017


On 11/16/2017 01:15 AM, Thomas Huth wrote:
> On 15.11.2017 17:43, Stefan Berger wrote:
>> On 12/15/2015 07:34 AM, Thomas Huth wrote:
>>> On 30/11/15 23:01, Stefan Berger wrote:
> [...]
>>>> diff --git a/board-qemu/slof/vtpm-sml.fs b/board-qemu/slof/vtpm-sml.fs
>>>> index 193b567..3e17c82 100644
>>>> --- a/board-qemu/slof/vtpm-sml.fs
>>>> +++ b/board-qemu/slof/vtpm-sml.fs
>>>> @@ -120,6 +120,200 @@ log-base LOG-SIZE tpm-set-log-parameters
>>> ...
>>>> +\ wait for keyboard input
>>>> +: menu-key-get
>>>> +    0 0 DO
>>>> +       key? IF
>>>> +           key
>>>> +           UNLOOP EXIT
>>>> +       THEN
>>>> +       100 MS
>>>> +    LOOP
>>>> +    1b
>>>> +;
>>> Is that some kind of timeout that you've tried to do with the "100 MS"
>>> and 1b at the end here? If so, that should have a proper comment. Then I
>>> somewhat doubt that it is working as expected: Since you're looping with
>>> "0 0" that means the loop is running almost forever - and since you're
>>> delaying 256 ms inbetween (yes, we're hex), the loop will likely never
>>> end while the user is sitting in front of the screen.
>>> So if you really want to time-out here, I think you have to rework the
>>> code. If you wanted to do an endless loop instead ... well then please
>>> do not use "DO ... LOOP" and something like BEGIN ... WHILE ... REPEAT
>>> or BEGIN ... UNTIL instead.
>> I may revive this patch series again... and re-learn Forth after the break.
>>
>> Does this look ok? I assume 'key' blocks until it has keyboard input.
>>
>>   \ wait for keyboard input
>>   : menu-key-get
>>      BEGIN key 1 UNTIL
>>   ;
> Well, that would work, but using the loop here is pretty much nonsense.
> Let me translate that to C:
>
> void menu_key_get(void)
> {
> 	int ret;
> 	do {
> 		ret = getchar();
> 	while (0);
> 	return ret;
> }
>
> I hope you'll immediately say "just use getchar() directly instead"
> here. Same with the Forth code: You likely don't need a new function
> here, just use "key" directly to wait for a key press and get it's
> keycode. Or did you want to have a function with a timeout instead?

I realized that later on as well :-)
I think once someone is in that menu I would just wait for reaction from 
the user.

     Stefan



More information about the SLOF mailing list