public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] vc bell config
@ 2007-10-05 11:55 Jan Engelhardt
  2007-10-06  0:00 ` Andrew Morton
  2007-10-11 18:11 ` Pavel Machek
  0 siblings, 2 replies; 8+ messages in thread
From: Jan Engelhardt @ 2007-10-05 11:55 UTC (permalink / raw)
  To: Andrew Morton; +Cc: Linux Kernel Mailing List, adaplas


It is already possible to deactivate the vc bell on a per-tty basis,
by using echo -en "\e[11;0]", but this is reset on reset(1).

This adds a sysfs parameter to globally control the vc bell, as well
as sysfs parameters for default pitch and duration.

Signed-off-by: Jan Engelhardt <jengelh@gmx.de>

---
 drivers/char/vt.c |   18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

Index: linux-2.6.23/drivers/char/vt.c
===================================================================
--- linux-2.6.23.orig/drivers/char/vt.c
+++ linux-2.6.23/drivers/char/vt.c
@@ -134,8 +134,12 @@ const struct consw *conswitchp;
 /*
  * Here is the default bell parameters: 750HZ, 1/8th of a second
  */
-#define DEFAULT_BELL_PITCH	750
-#define DEFAULT_BELL_DURATION	(HZ/8)
+static unsigned int default_bell_pitch = 750;
+static unsigned int default_bell_duration = HZ / 8;
+static unsigned int vc_bell_enabled = true;
+module_param_named(bell_pitch, default_bell_pitch, uint, S_IRUGO | S_IWUSR);
+module_param_named(bell_duration, default_bell_duration, uint, S_IRUGO | S_IWUSR);
+module_param_named(bell_enabled, vc_bell_enabled, uint, S_IRUGO | S_IWUSR);
 
 struct vc vc_cons [MAX_NR_CONSOLES];
 
@@ -1401,14 +1405,14 @@ static void setterm_command(struct vc_da
 			if (vc->vc_npar >= 1)
 				vc->vc_bell_pitch = vc->vc_par[1];
 			else
-				vc->vc_bell_pitch = DEFAULT_BELL_PITCH;
+				vc->vc_bell_pitch = default_bell_pitch;
 			break;
 		case 11: /* set bell duration in msec */
 			if (vc->vc_npar >= 1)
 				vc->vc_bell_duration = (vc->vc_par[1] < 2000) ?
 					vc->vc_par[1] * HZ / 1000 : 0;
 			else
-				vc->vc_bell_duration = DEFAULT_BELL_DURATION;
+				vc->vc_bell_duration = default_bell_duration;
 			break;
 		case 12: /* bring specified console to the front */
 			if (vc->vc_par[1] >= 1 && vc_cons_allocated(vc->vc_par[1] - 1))
@@ -1554,8 +1558,8 @@ static void reset_terminal(struct vc_dat
 	vc->vc_tab_stop[3]	=
 	vc->vc_tab_stop[4]	= 0x01010101;
 
-	vc->vc_bell_pitch = DEFAULT_BELL_PITCH;
-	vc->vc_bell_duration = DEFAULT_BELL_DURATION;
+	vc->vc_bell_pitch = default_bell_pitch;
+	vc->vc_bell_duration = default_bell_duration;
 
 	gotoxy(vc, 0, 0);
 	save_cur(vc);
@@ -1574,7 +1578,7 @@ static void do_con_trol(struct tty_struc
 	case 0:
 		return;
 	case 7:
-		if (vc->vc_bell_duration)
+		if (vc_bell_enabled && vc->vc_bell_duration)
 			kd_mksound(vc->vc_bell_pitch, vc->vc_bell_duration);
 		return;
 	case 8:


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] vc bell config
  2007-10-05 11:55 [PATCH] vc bell config Jan Engelhardt
@ 2007-10-06  0:00 ` Andrew Morton
  2007-10-06  9:55   ` Alan Cox
  2007-10-06 10:10   ` Jan Engelhardt
  2007-10-11 18:11 ` Pavel Machek
  1 sibling, 2 replies; 8+ messages in thread
From: Andrew Morton @ 2007-10-06  0:00 UTC (permalink / raw)
  To: Jan Engelhardt; +Cc: linux-kernel, adaplas

On Fri, 5 Oct 2007 13:55:52 +0200 (CEST)
Jan Engelhardt <jengelh@computergmbh.de> wrote:

> 
> It is already possible to deactivate the vc bell on a per-tty basis,
> by using echo -en "\e[11;0]", but this is reset on reset(1).
> 
> This adds a sysfs parameter to globally control the vc bell, as well
> as sysfs parameters for default pitch and duration.
> 

Why do we need this?  To fix the stupid-app-makes-my-box-beep problem, I
guess.  Is there no other way of suppressing the beep? (no jokes about wire
cutters or earplugs, please).


> ---
>  drivers/char/vt.c |   18 +++++++++++-------
>  1 file changed, 11 insertions(+), 7 deletions(-)
> 
> Index: linux-2.6.23/drivers/char/vt.c
> ===================================================================
> --- linux-2.6.23.orig/drivers/char/vt.c
> +++ linux-2.6.23/drivers/char/vt.c
> @@ -134,8 +134,12 @@ const struct consw *conswitchp;
>  /*
>   * Here is the default bell parameters: 750HZ, 1/8th of a second
>   */
> -#define DEFAULT_BELL_PITCH	750
> -#define DEFAULT_BELL_DURATION	(HZ/8)
> +static unsigned int default_bell_pitch = 750;
> +static unsigned int default_bell_duration = HZ / 8;

It is inapt to call these default_X.  Because once they have been altered
by the user, they aren't defaults any more.

They should be just bell_pitch and bell_duration.


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] vc bell config
  2007-10-06  0:00 ` Andrew Morton
@ 2007-10-06  9:55   ` Alan Cox
  2007-10-06 10:02     ` Jan Engelhardt
  2007-10-06 10:10   ` Jan Engelhardt
  1 sibling, 1 reply; 8+ messages in thread
From: Alan Cox @ 2007-10-06  9:55 UTC (permalink / raw)
  To: Andrew Morton; +Cc: Jan Engelhardt, linux-kernel, adaplas

On Fri, 5 Oct 2007 17:00:11 -0700
Andrew Morton <akpm@linux-foundation.org> wrote:

> On Fri, 5 Oct 2007 13:55:52 +0200 (CEST)
> Jan Engelhardt <jengelh@computergmbh.de> wrote:
> 
> > 
> > It is already possible to deactivate the vc bell on a per-tty basis,
> > by using echo -en "\e[11;0]", but this is reset on reset(1).
> > 
> > This adds a sysfs parameter to globally control the vc bell, as well
> > as sysfs parameters for default pitch and duration.
> > 
> 
> Why do we need this?  To fix the stupid-app-makes-my-box-beep problem, I
> guess.  Is there no other way of suppressing the beep? (no jokes about wire
> cutters or earplugs, please).

man setterm

See -blength and -bfreq

Alan

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] vc bell config
  2007-10-06  9:55   ` Alan Cox
@ 2007-10-06 10:02     ` Jan Engelhardt
  0 siblings, 0 replies; 8+ messages in thread
From: Jan Engelhardt @ 2007-10-06 10:02 UTC (permalink / raw)
  To: Alan Cox; +Cc: Andrew Morton, linux-kernel, adaplas


On Oct 6 2007 10:55, Alan Cox wrote:
>> > 
>> > It is already possible to deactivate the vc bell on a per-tty basis,
>> > by using echo -en "\e[11;0]", but this is reset on reset(1).
>> > 
>> > This adds a sysfs parameter to globally control the vc bell, as well
>> > as sysfs parameters for default pitch and duration.
>> 
>man setterm
>
>See -blength and -bfreq

Only sets length and freq of current tty, and only until `reset`.
It's equivalent to \e[10;x] and \e[11;x].

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] vc bell config
  2007-10-06  0:00 ` Andrew Morton
  2007-10-06  9:55   ` Alan Cox
@ 2007-10-06 10:10   ` Jan Engelhardt
  1 sibling, 0 replies; 8+ messages in thread
From: Jan Engelhardt @ 2007-10-06 10:10 UTC (permalink / raw)
  To: Andrew Morton; +Cc: linux-kernel, adaplas


On Oct 5 2007 17:00, Andrew Morton wrote:
>> 
>> It is already possible to deactivate the vc bell on a per-tty basis,
>> by using echo -en "\e[11;0]", but this is reset on reset(1).
>> 
>> This adds a sysfs parameter to globally control the vc bell, as well
>> as sysfs parameters for default pitch and duration.
>
>Why do we need this?  To fix the stupid-app-makes-my-box-beep problem, I
>guess.  Is there no other way of suppressing the beep?

The user has a number of choices:
- rmmod pcspkr, to disable all beeps (including X)
- vt.bell_enabled=0, to disable beeps on all VCs, but not X
- vt.default_bell_pitch=400, to give VC the frequency used in X
  (400 is perceived less penetrant than 750)

>>   * Here is the default bell parameters: 750HZ, 1/8th of a second
>>   */
>> -#define DEFAULT_BELL_PITCH	750
>> -#define DEFAULT_BELL_DURATION	(HZ/8)
>> +static unsigned int default_bell_pitch = 750;
>> +static unsigned int default_bell_duration = HZ / 8;
>
>It is inapt to call these default_X.  Because once they have been altered
>by the user, they aren't defaults any more.

They are still default, as in: they will define the initial
pitch/duration when a tty is created, or when the tty is reset.

If they were just 'bell_pitch', one culd assume that changing it
changes the pitch of all ttys, which it does not. Whether it's good
or not that the vc subsytem has per-tty pitches is a different story.

Well, that's what I am thinking about it.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] vc bell config
  2007-10-05 11:55 [PATCH] vc bell config Jan Engelhardt
  2007-10-06  0:00 ` Andrew Morton
@ 2007-10-11 18:11 ` Pavel Machek
  2007-10-17 16:35   ` Jan Engelhardt
  1 sibling, 1 reply; 8+ messages in thread
From: Pavel Machek @ 2007-10-11 18:11 UTC (permalink / raw)
  To: Jan Engelhardt; +Cc: Andrew Morton, Linux Kernel Mailing List, adaplas

Hi!

> It is already possible to deactivate the vc bell on a per-tty basis,
> by using echo -en "\e[11;0]", but this is reset on reset(1).
> 
> This adds a sysfs parameter to globally control the vc bell, as well
> as sysfs parameters for default pitch and duration.
> 
> Signed-off-by: Jan Engelhardt <jengelh@gmx.de>

There are more parameters that should be set during reset... like
cursor size and color, palette, .... What about /sys/.../string_to_interpret
_on_reset ?
							Pavel

-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] vc bell config
  2007-10-11 18:11 ` Pavel Machek
@ 2007-10-17 16:35   ` Jan Engelhardt
  2007-10-17 22:21     ` Pavel Machek
  0 siblings, 1 reply; 8+ messages in thread
From: Jan Engelhardt @ 2007-10-17 16:35 UTC (permalink / raw)
  To: Pavel Machek; +Cc: Andrew Morton, Linux Kernel Mailing List, adaplas


On Oct 11 2007 18:11, Pavel Machek wrote:
>
>> It is already possible to deactivate the vc bell on a per-tty basis,
>> by using echo -en "\e[11;0]", but this is reset on reset(1).
>> 
>> This adds a sysfs parameter to globally control the vc bell, as well
>> as sysfs parameters for default pitch and duration.
>> 
>> Signed-off-by: Jan Engelhardt <jengelh@gmx.de>
>
>There are more parameters that should be set during reset... like
>cursor size and color, palette, .... What about /sys/.../string_to_interpret
>_on_reset ?

On reset(1), cursor size, palette, and bell parameters _do_ get reset
to the defaults. Some defaults may already be changed by the user,
like palette or default_utf8.

Bell configuration is currently not one of them so, should a program
decide to reset the tty, or should it happen that your output is
garbled (forcing you to do reset), some settings change back to
"unwanted defaults".

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] vc bell config
  2007-10-17 16:35   ` Jan Engelhardt
@ 2007-10-17 22:21     ` Pavel Machek
  0 siblings, 0 replies; 8+ messages in thread
From: Pavel Machek @ 2007-10-17 22:21 UTC (permalink / raw)
  To: Jan Engelhardt; +Cc: Andrew Morton, Linux Kernel Mailing List, adaplas

Hi!

> >> It is already possible to deactivate the vc bell on a per-tty basis,
> >> by using echo -en "\e[11;0]", but this is reset on reset(1).
> >> 
> >> This adds a sysfs parameter to globally control the vc bell, as well
> >> as sysfs parameters for default pitch and duration.
> >> 
> >> Signed-off-by: Jan Engelhardt <jengelh@gmx.de>
> >
> >There are more parameters that should be set during reset... like
> >cursor size and color, palette, .... What about /sys/.../string_to_interpret
> >_on_reset ?
> 
> On reset(1), cursor size, palette, and bell parameters _do_ get reset
> to the defaults. Some defaults may already be changed by the user,
> like palette or default_utf8.
> 
> Bell configuration is currently not one of them so, should a program
> decide to reset the tty, or should it happen that your output is
> garbled (forcing you to do reset), some settings change back to
> "unwanted defaults".

Ok, and I'm suggesting general method for the "unwanted defaults"
problem. Just have a /sys/.../terminal_init_string.

During reset, let console code interpret terminal_init_string, to set
_wanted_ defaults. So you'd do:

echo -en "\e[11;0]" > /sys/.../terminal_init_string... and I'd do
something similar with softcursor settings. (Which are currently reset
to compiled-in defaults, and that is "unwanted defaults" to me).
								Pavel
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2007-10-17 22:21 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-10-05 11:55 [PATCH] vc bell config Jan Engelhardt
2007-10-06  0:00 ` Andrew Morton
2007-10-06  9:55   ` Alan Cox
2007-10-06 10:02     ` Jan Engelhardt
2007-10-06 10:10   ` Jan Engelhardt
2007-10-11 18:11 ` Pavel Machek
2007-10-17 16:35   ` Jan Engelhardt
2007-10-17 22:21     ` Pavel Machek

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox