Message ID | alpine.DEB.2.11.1503261352200.2411@local (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 26 Mar 2015 13:54, Scot Doyle wrote: > Add an escape sequence to specify the current console's cursor blink > interval. The interval is specified as a number of milliseconds until > the next cursor display state toggle, from 50 to 65535. /proc/loadavg > did not show a difference with a one msec interval, but the lower > bound is set to 50 msecs since slower hardware wasn't tested. if they want to be crazy, why not let them ? it's not like we generally prevent the user from destroying their machine. i.e. just require the value to be > 0 (unless you want to let 0 disable things). -mike
On Fri 2015-03-27 20:35:03, Mike Frysinger wrote: > On 26 Mar 2015 13:54, Scot Doyle wrote: > > Add an escape sequence to specify the current console's cursor blink > > interval. The interval is specified as a number of milliseconds until > > the next cursor display state toggle, from 50 to 65535. /proc/loadavg > > did not show a difference with a one msec interval, but the lower > > bound is set to 50 msecs since slower hardware wasn't tested. > > if they want to be crazy, why not let them ? it's not like we generally prevent > the user from destroying their machine. i.e. just require the value to be > 0 > (unless you want to let 0 disable things). Because anyone with access to console can do this, and we only allow root users to destroy the machine. Pavel
diff --git a/drivers/tty/vt/vt.c b/drivers/tty/vt/vt.c index 6e00572..ab1f173 100644 --- a/drivers/tty/vt/vt.c +++ b/drivers/tty/vt/vt.c @@ -135,6 +135,7 @@ const struct consw *conswitchp; */ #define DEFAULT_BELL_PITCH 750 #define DEFAULT_BELL_DURATION (HZ/8) +#define DEFAULT_CURSOR_BLINK_MS 200 struct vc vc_cons [MAX_NR_CONSOLES]; @@ -1590,6 +1591,13 @@ static void setterm_command(struct vc_data *vc) case 15: /* activate the previous console */ set_console(last_console); break; + case 16: /* set cursor blink duration in msec */ + if (vc->vc_npar >= 1 && vc->vc_par[1] >= 50 && + vc->vc_par[1] <= USHRT_MAX) + vc->vc_cur_blink_ms = vc->vc_par[1]; + else + vc->vc_cur_blink_ms = DEFAULT_CURSOR_BLINK_MS; + break; } } @@ -1717,6 +1725,7 @@ static void reset_terminal(struct vc_data *vc, int do_clear) vc->vc_bell_pitch = DEFAULT_BELL_PITCH; vc->vc_bell_duration = DEFAULT_BELL_DURATION; + vc->vc_cur_blink_ms = DEFAULT_CURSOR_BLINK_MS; gotoxy(vc, 0, 0); save_cur(vc); diff --git a/include/linux/console_struct.h b/include/linux/console_struct.h index e859c98..e329ee2 100644 --- a/include/linux/console_struct.h +++ b/include/linux/console_struct.h @@ -104,6 +104,7 @@ struct vc_data { unsigned int vc_resize_user; /* resize request from user */ unsigned int vc_bell_pitch; /* Console bell pitch */ unsigned int vc_bell_duration; /* Console bell duration */ + unsigned short vc_cur_blink_ms; /* Cursor blink duration */ struct vc_data **vc_display_fg; /* [!] Ptr to var holding fg console for this display */ struct uni_pagedir *vc_uni_pagedir; struct uni_pagedir **vc_uni_pagedir_loc; /* [!] Location of uni_pagedir variable for this console */