grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] Detect key modifier status in 'sleep --interruptible'


From: Vladimir 'phcoder' Serbinenko
Subject: Re: [PATCH] Detect key modifier status in 'sleep --interruptible'
Date: Mon, 24 Aug 2009 00:46:29 +0200

>> Constants are i386-pc specific. In particular left and right shift are
>> distinguished but not ctrl or alt. We should either distinguish them
>> all or none.
>
> The values I picked for the constants were convenient for i386-pc, but
> that's because it's the only architecture that currently needs an
> assembly implementation and it seemed to make sense to me to put the
> harder work of transforming values around into C code.
>
> I'm not sure what you mean by "distinguish" here though. I included
> constants for control and alt that are currently unused, which may
> actually have been a mistake since the original Red Hat patch to GRUB 1
> honoured those too in its hiddenmenu handling. Is that what you mean?
I mean that upper layer code knows whether it was left or right shift
but it doesn't know whether it was left or right alt.
>
>> Going to real mode to retrieve keyboard status is absolutely
>> unnecessary: same info is available in BDA. Perhaps our console driver
>> should switch to BDA altogether but I'm not sure that this will work
>> since grub2 disables interrupts (tests needed) but it definitly works
>> with keyboard status.
>
> OK, fair enough. The attached updated patch makes this change.
>
Why is it still asm? It can be done easily in C.
Actually here we have 2 extremes: nice code (C, transform to nice
flags (only one shift or 2 conrols and alts)) or small code (asm,
crude value). Where we choose the compromise is a question for
maintainer, not me.
Another possibility is to put this code outside of kernel altogether.
It saves bytes but may make approach ugly.

-- 
Regards
Vladimir 'phcoder' Serbinenko

Personal git repository: http://repo.or.cz/w/grub2/phcoder.git




reply via email to

[Prev in Thread] Current Thread [Next in Thread]