sysbeep: Adjust interface to take a duration as a sbt
Change the 'period' argument to 'duration' and change its type to sbintime_t so we can more easily express different durations. Reviewed by: tsoome, glebius Differential Revision: https://reviews.freebsd.org/D32619
This commit is contained in:
parent
6b67753488
commit
072d5b98c4
@ -1083,7 +1083,7 @@ mlx_periodic(void *data)
|
||||
|
||||
mlx_pause_action(sc); /* pause is running */
|
||||
sc->mlx_pause.mp_when = 0;
|
||||
sysbeep(500, hz);
|
||||
sysbeep(500, SBT_1S);
|
||||
|
||||
/*
|
||||
* Bus pause still running?
|
||||
@ -1095,9 +1095,9 @@ mlx_periodic(void *data)
|
||||
if (time_second >= sc->mlx_pause.mp_howlong) {
|
||||
mlx_pause_action(sc);
|
||||
sc->mlx_pause.mp_which = 0; /* pause is complete */
|
||||
sysbeep(500, hz);
|
||||
sysbeep(500, SBT_1S);
|
||||
} else {
|
||||
sysbeep((time_second % 5) * 100 + 500, hz/8);
|
||||
sysbeep((time_second % 5) * 100 + 500, SBT_1S / 8);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -4258,6 +4258,11 @@ sc_respond(scr_stat *scp, const u_char *p, int count, int wakeup)
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* pitch is the divisor for 1.193182MHz PIT clock. By dividing 1193172 / pitch,
|
||||
* we convert it back to Hz.
|
||||
* duration is in ticks of 1/hz.
|
||||
*/
|
||||
void
|
||||
sc_bell(scr_stat *scp, int pitch, int duration)
|
||||
{
|
||||
@ -4277,7 +4282,7 @@ sc_bell(scr_stat *scp, int pitch, int duration)
|
||||
} else if (duration != 0 && pitch != 0) {
|
||||
if (scp != scp->sc->cur_scp)
|
||||
pitch *= 2;
|
||||
sysbeep(1193182 / pitch, duration);
|
||||
sysbeep(1193182 / pitch, SBT_1S * duration / hz);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -118,8 +118,8 @@ const struct terminal_class vt_termclass = {
|
||||
#define VT_TIMERFREQ 25
|
||||
|
||||
/* Bell pitch/duration. */
|
||||
#define VT_BELLDURATION ((5 * hz + 99) / 100)
|
||||
#define VT_BELLPITCH 800
|
||||
#define VT_BELLDURATION (SBT_1S / 20)
|
||||
#define VT_BELLPITCH (1193182 / 800) /* Approx 1491Hz */
|
||||
|
||||
#define VT_UNIT(vw) ((vw)->vw_device->vd_unit * VT_MAXWINDOWS + \
|
||||
(vw)->vw_number)
|
||||
@ -1100,7 +1100,7 @@ vtterm_bell(struct terminal *tm)
|
||||
if (vd->vd_flags & VDF_QUIET_BELL)
|
||||
return;
|
||||
|
||||
sysbeep(1193182 / VT_BELLPITCH, VT_BELLDURATION);
|
||||
sysbeep(VT_BELLPITCH, VT_BELLDURATION);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -1116,7 +1116,7 @@ vtterm_beep(struct terminal *tm, u_int param)
|
||||
return;
|
||||
}
|
||||
|
||||
period = ((param >> 16) & 0xffff) * hz / 1000;
|
||||
period = ((param >> 16) & 0xffff) * SBT_1MS;
|
||||
freq = 1193182 / (param & 0xffff);
|
||||
|
||||
sysbeep(freq, period);
|
||||
|
@ -414,7 +414,7 @@ trap(struct trapframe *frame)
|
||||
#endif
|
||||
if (time_second - lastalert > 10) {
|
||||
log(LOG_WARNING, "NMI: power fail\n");
|
||||
sysbeep(880, hz);
|
||||
sysbeep(880, SBT_1S);
|
||||
lastalert = time_second;
|
||||
}
|
||||
return;
|
||||
@ -671,7 +671,7 @@ trap(struct trapframe *frame)
|
||||
#ifdef POWERFAIL_NMI
|
||||
if (time_second - lastalert > 10) {
|
||||
log(LOG_WARNING, "NMI: power fail\n");
|
||||
sysbeep(880, hz);
|
||||
sysbeep(880, SBT_1S);
|
||||
lastalert = time_second;
|
||||
}
|
||||
return;
|
||||
|
@ -658,7 +658,7 @@ constty_timeout(void *arg)
|
||||
|
||||
#ifdef HAS_TIMER_SPKR
|
||||
|
||||
static int beeping;
|
||||
static bool beeping;
|
||||
static struct callout beeping_timer;
|
||||
|
||||
static void
|
||||
@ -666,11 +666,11 @@ sysbeepstop(void *chan)
|
||||
{
|
||||
|
||||
timer_spkr_release();
|
||||
beeping = 0;
|
||||
beeping = false;
|
||||
}
|
||||
|
||||
int
|
||||
sysbeep(int pitch, int period)
|
||||
sysbeep(int pitch, sbintime_t duration)
|
||||
{
|
||||
|
||||
if (timer_spkr_acquire()) {
|
||||
@ -681,8 +681,9 @@ sysbeep(int pitch, int period)
|
||||
}
|
||||
timer_spkr_setfreq(pitch);
|
||||
if (!beeping) {
|
||||
beeping = period;
|
||||
callout_reset(&beeping_timer, period, sysbeepstop, NULL);
|
||||
beeping = true;
|
||||
callout_reset_sbt(&beeping_timer, duration, 0, sysbeepstop,
|
||||
NULL, C_PREL(5));
|
||||
}
|
||||
return (0);
|
||||
}
|
||||
@ -701,7 +702,7 @@ SYSINIT(sysbeep, SI_SUB_SOFTINTR, SI_ORDER_ANY, sysbeep_init, NULL);
|
||||
*/
|
||||
|
||||
int
|
||||
sysbeep(int pitch __unused, int period __unused)
|
||||
sysbeep(int pitch __unused, sbintime_t duration __unused)
|
||||
{
|
||||
|
||||
return (ENODEV);
|
||||
|
@ -467,7 +467,7 @@ int SAN_INTERCEPTOR(casueword)(volatile u_long *p, u_long oldval,
|
||||
|
||||
void realitexpire(void *);
|
||||
|
||||
int sysbeep(int hertz, int period);
|
||||
int sysbeep(int hertz, sbintime_t duration);
|
||||
|
||||
void hardclock(int cnt, int usermode);
|
||||
void hardclock_sync(int cpu);
|
||||
|
Loading…
Reference in New Issue
Block a user