Date: Sat, 15 Dec 2012 13:42:07 +0200 From: Alexander Motin <mav@FreeBSD.org> To: Bruce Evans <brde@optusnet.com.au> Cc: svn-src-projects@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r244249 - projects/calloutng/sys/dev/syscons Message-ID: <50CC620F.9040005@FreeBSD.org> In-Reply-To: <20121215222500.Q2309@besplex.bde.org> References: <201212151044.qBFAiG70038633@svn.freebsd.org> <20121215222500.Q2309@besplex.bde.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On 15.12.2012 13:33, Bruce Evans wrote: > On Sat, 15 Dec 2012, Alexander Motin wrote: > >> Log: >> Switch syscons from timeout() to callout_reset_flags() and specify that >> precision is not important there -- anything from 20 to 30Hz will be >> fine. > > 20-30 is still a lot. It could use adaptive timeouts of many seconds > when there is no i/o, except for the blinking cursor. OTOH, precision > might be important for the blinking cursor -- it would probably be > even more distracting if it has uneven timing. Yes, that's true. I just don't know syscons internals to do it. Somebody is welcome to do it, as syscons now is the main source of time events. >> Modified: projects/calloutng/sys/dev/syscons/syscons.c >> ============================================================================== >> >> --- projects/calloutng/sys/dev/syscons/syscons.c Sat Dec 15 >> 10:30:06 2012 (r244248) >> +++ projects/calloutng/sys/dev/syscons/syscons.c Sat Dec 15 >> 10:44:16 2012 (r244249) >> ... >> @@ -1831,7 +1833,8 @@ scrn_timer(void *arg) >> /* don't do anything when we are performing some I/O operations */ >> if (suspend_in_progress || sc->font_loading_in_progress) { >> if (again) >> - timeout(scrn_timer, sc, hz / 10); >> + callout_reset_flags(&sc->ctimeout, hz / 15, scrn_timer, sc, >> + C_PRELSET(0)); >> return; >> } >> s = spltty(); > > Why reduce the timeout? Respecting specified precision, it will be 7.5-15Hz. I just tried to stay about original value. Also that seems to be a rare case and so not really important. >> ... >> @@ -1899,7 +1903,8 @@ scrn_timer(void *arg) >> #endif >> >> if (again) >> - timeout(scrn_timer, sc, hz / 25); >> + callout_reset_flags(&sc->ctimeout, hz / 30, scrn_timer, sc, >> + C_PRELSET(1)); >> splx(s); >> } > > Most syscons timeouts except this were hz / 10. Now they are hz / 15. > I increase this one too to hz / 10 in some kernels, and have never noticed > the difference. The update rate for a movie needs to be 100 or 200 Hz, > but for some reason an update rate of just 10 Hz is enough for syscons. > At least for me. I notice flicker at 60 Hz. My laptops are running at 10Hz, but I don't know average user wishes, so prefer to leave it as-is. -- Alexander Motin
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?50CC620F.9040005>