From b00b16c7e8417280e1baf4fd2100eb0289c081ee Mon Sep 17 00:00:00 2001 From: yokota Date: Tue, 15 Jul 1997 14:49:39 +0000 Subject: Incorporated lots of fixes and suggestions from Bruce and changes to facilitate the new saver loading/unloading notification interface in syscons. daemon_saver: - M_NOWAIT was wrong, since NULL returns are not handled. Just use M_WAITOK. - use `ostype' instead of hard-coded "FreeBSD". Now there is no more hard-coded string! (But, who will run this screen saver on other OS?!) - put macros and data declarations in a consistent order. - -DDEAMON_ONLY and -DSHOW_HOSTNAME options added in the previous commit are removed. Options of this kind can go stale and no one notices because no one uses them. DEAMON_ONLY is just removed. SHOW_HOSTNAME is made default. snake_saver: - use `ostype' and `osrelease' as in the daemon saver. The string changes slightly - there was a hyphen after "FreeBSD"; now there is a space. (It is consistent with uname -a, like the daemon server already is.) all screen savers: - Use the new add_scrn_saver()/remove_scrn_saver() in syscons.c to declare loading/unloading of a screen saver. Removed reference to `current_saver' and the variable `old_saver' as they are not necessary anymore. - The blank, fade and green screen savers manipulate VGA registers. Module loading should fail for non-VGA cards. - `scrn_blanked' is consistently treated as a number/counter rather than boolean. - Some savers touch `scp->start' and `scp->end' to force entire screen update when stopping themselves. This is unnecessary now because syscons.c takes care of that. - cleared up many unused or unnecessary #include statements. - Removed -DLKM from Makefiles. YOU NEED TO RECOMPILE BOTH SCREEN SAVERS AND KERNEL AS OF THIS CHANGE. --- lkm/syscons/daemon/Makefile | 10 ++---- lkm/syscons/daemon/daemon_saver.c | 73 ++++++++++++--------------------------- 2 files changed, 25 insertions(+), 58 deletions(-) (limited to 'lkm/syscons/daemon') diff --git a/lkm/syscons/daemon/Makefile b/lkm/syscons/daemon/Makefile index 3c5a320..25d2cfe 100644 --- a/lkm/syscons/daemon/Makefile +++ b/lkm/syscons/daemon/Makefile @@ -1,15 +1,9 @@ -# $Id: Makefile,v 1.1 1997/05/21 14:18:26 yokota Exp $ +# $Id: Makefile,v 1.2 1997/06/24 12:43:18 yokota Exp $ KMOD= daemon_saver_mod SRCS= daemon_saver.c NOMAN= -CFLAGS+= -DLKM -I${.CURDIR}/.. -I${.CURDIR}/../../../sys - -# Omits the bouncing message text and shows only the daemon. -#CFLAGS+= -DDAEMON_ONLY - -# Includes the host name in the message text. -#CFLAGS+= -DSHOW_HOSTNAME +CFLAGS+= -I${.CURDIR}/.. -I${.CURDIR}/../../../sys .include diff --git a/lkm/syscons/daemon/daemon_saver.c b/lkm/syscons/daemon/daemon_saver.c index 232f416..3325ad3 100644 --- a/lkm/syscons/daemon/daemon_saver.c +++ b/lkm/syscons/daemon/daemon_saver.c @@ -25,28 +25,22 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: daemon_saver.c,v 1.4 1997/05/26 01:02:41 yokota Exp $ + * $Id: daemon_saver.c,v 1.5 1997/06/24 12:43:18 yokota Exp $ */ #include #include -#include #include #include #include -#include +#include #include #include -#include #include +#include -#include "saver.h" - -MOD_MISC(daemon_saver); - -void (*current_saver)(int blank); -void (*old_saver)(int blank); +#include #define CONSOLE_VECT(x, y) \ *((u_short*)(Crtat + (y)*cur_console->xsize + (x))) @@ -54,10 +48,10 @@ void (*old_saver)(int blank); #define DAEMON_MAX_WIDTH 32 #define DAEMON_MAX_HEIGHT 19 -/* - * Define this to disable the bouncing text. - */ -#undef DAEMON_ONLY +MOD_MISC(daemon_saver); + +static char *message; +static int messagelen; /* Who is the author of this ASCII pic? */ @@ -152,10 +146,6 @@ draw_daemon(int xpos, int ypos, int dxdir) } } -#ifndef DAEMON_ONLY -static char *message; -static int messagelen; - static void draw_string(int xpos, int ypos, char *s, int len) { @@ -165,15 +155,12 @@ draw_string(int xpos, int ypos, char *s, int len) CONSOLE_VECT(xpos + x, ypos) = scr_map[s[x]]|(FG_LIGHTGREEN|BG_BLACK)<<8; } -#endif static void daemon_saver(int blank) { -#ifndef DAEMON_ONLY static int txpos = 10, typos = 10; static int txdir = -1, tydir = -1; -#endif static int dxpos = 0, dypos = 0; static int dxdir = 1, dydir = 1; static int moved_daemon = 0; @@ -204,7 +191,6 @@ daemon_saver(int blank) dxpos += dxdir; dypos += dydir; } -#ifndef DAEMON_ONLY if (txdir > 0) { if (txpos == scp->xsize - messagelen) txdir = -1; @@ -218,18 +204,13 @@ daemon_saver(int blank) if (typos == 0) tydir = 1; } txpos += txdir; typos += tydir; -#endif draw_daemon(dxpos, dypos, dxdir); -#ifndef DAEMON_ONLY draw_string(txpos, typos, (char *)message, messagelen); -#endif } else { - if (scrn_blanked) { + if (scrn_blanked > 0) { set_border(scp->border); scrn_blanked = 0; - scp->start = 0; - scp->end = scp->xsize * scp->ysize; } } } @@ -237,36 +218,28 @@ daemon_saver(int blank) static int daemon_saver_load(struct lkm_table *lkmtp, int cmd) { -#ifdef SHOW_HOSTNAME - static const char *freebsd = " - FreeBSD "; -#else - static const char *freebsd = "FreeBSD "; -#endif /* SHOW_HOSTNAME */ + int err; - (*current_saver)(0); - old_saver = current_saver; - current_saver = daemon_saver; + messagelen = strlen(hostname) + 3 + strlen(ostype) + 1 + + strlen(osrelease); + message = malloc(messagelen + 1, M_DEVBUF, M_WAITOK); + sprintf(message, "%s - %s %s", hostname, ostype, osrelease); -#ifdef SHOW_HOSTNAME - messagelen = strlen(hostname) + strlen(freebsd) + strlen(osrelease); - message = malloc(messagelen + 1, M_DEVBUF, M_NOWAIT); - sprintf(message, "%s%s%s", hostname, freebsd, osrelease); -#else - messagelen = strlen(freebsd) + strlen(osrelease); - message = malloc(messagelen + 1, M_DEVBUF, M_NOWAIT); - sprintf(message, "%s%s", freebsd, osrelease); -#endif /* SHOW_HOSTNAME */ - return 0; + err = add_scrn_saver(daemon_saver); + if (err != 0) + free(message, M_DEVBUF); + return err; } static int daemon_saver_unload(struct lkm_table *lkmtp, int cmd) { - (*current_saver)(0); - current_saver = old_saver; + int err; - free(message, M_DEVBUF); - return 0; + err = remove_scrn_saver(daemon_saver); + if (err == 0) + free(message, M_DEVBUF); + return err; } int -- cgit v1.1