speakup-r functionality

John Covici covici at ccs.covici.com
Sun Aug 20 23:33:06 EDT 2017


I tried the new patch, but no joy.  I hope you can fix your serial
synth to test.

Thanks for trying.


On Sun, 20 Aug 2017 17:45:27 -0400,
Okash Khawaja wrote:
> 
> Hi,
> 
> Here's one thing I think worth trying. I have updated the patch so that
> the net difference between before and after the patch is that
> speakup_fake_down_arrow() is not called when inside interrupt context.
> 
> Calling speakup_fake_down_arrow() inside interrupt causes the kernel
> lock up because this itself generates same interrupt, leading to
> infinite recursion.
> 
> I didn't think this code was triggered outside of interrupt context, but
> it possibly is when using a serial console - which is the only
> explanation I can think of for the behaviour you've described.
> 
> Thanks
> 
> 
> ---
>  drivers/staging/speakup/main.c |    5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> --- a/drivers/staging/speakup/main.c
> +++ b/drivers/staging/speakup/main.c
> @@ -1408,7 +1408,10 @@ static void read_all_doc(struct vc_data
>  	cursor_track = read_all_mode;
>  	spk_reset_index_count(0);
>  	if (get_sentence_buf(vc, 0) == -1) {
> -		kbd_fakekey2(vc, RA_DOWN_ARROW);
> +		del_timer(&cursor_timer);
> +		if (!in_interrupt())
> +			speakup_fake_down_arrow();
> +		start_read_all_timer(vc, RA_DOWN_ARROW);
>  	} else {
>  		say_sentence_num(0, 0);
>  		synth_insert_next_index(0);

-- 
Your life is like a penny.  You're going to lose it.  The question is:
How do
you spend it?

         John Covici
         covici at ccs.covici.com


More information about the Speakup mailing list