Subject: kern/6778: wscons fixes for bzero/bcopy -> memxxx transition
To: None <gnats-bugs@gnats.netbsd.org>
From: Erik Bertelsen <erik@q610.ebe.uni-c.dk>
List: netbsd-bugs
Date: 01/09/1999 22:31:13
>Number: 6778
>Category: kern
>Synopsis: wscons fixes for bzero/bcopy -> memxxx transition
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: kern-bug-people (Kernel Bug People)
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Sat Jan 9 13:50:01 1999
>Last-Modified:
>Originator: Erik Bertelsen
>Organization:
>Release: NetBSD-current 9 Jan 1999
>Environment:
System: NetBSD q610.ebe.uni-c.dk 1.3I NetBSD 1.3I (Q610) #86: Fri Jan 8 18:10:52 MET 1999 erik@q610.ebe.uni-c.dk:/home/src/sys/arch/mac68k/compile/Q610 mac68k
(really: NetBSD/macppc-current).
>Description:
I'm building my NetBSD/macppc kernels on a homegrown crosscompilation
setup on the same PowerMac running Linux/ppc. In this setup, I don't
have the bzero, bcopy, etc. functions, and as I have noticed that the
NetBSD kernel is in a transistion to use the memxxx functions, I have
not bothered including the bxxx functions, but rather patched the
sources to use the memxxx functions. The patch below contains the
patches that I have made to avoid the older functions in the
sys/dev/wscons files.
regards
Erik Bertelsen
>How-To-Repeat:
>Fix:
Index: wsemul_sun.c
===================================================================
RCS file: /home/cvs-base/src/sys/dev/wscons/wsemul_sun.c,v
retrieving revision 1.1.1.7
diff -c -r1.1.1.7 wsemul_sun.c
*** wsemul_sun.c 1998/06/21 17:49:17 1.1.1.7
--- wsemul_sun.c 1999/01/09 21:22:29
***************
*** 337,343 ****
switch (c) {
case '[': /* continuation of multi-char sequence */
! bzero(edp->args, sizeof (edp->args));
newstate = SUN_EMUL_STATE_CONTROL;
break;
--- 337,343 ----
switch (c) {
case '[': /* continuation of multi-char sequence */
! memset(edp->args, 0, sizeof (edp->args));
newstate = SUN_EMUL_STATE_CONTROL;
break;
Index: wsemul_vt100.c
===================================================================
RCS file: /home/cvs-base/src/sys/dev/wscons/wsemul_vt100.c,v
retrieving revision 1.1.1.4
diff -c -r1.1.1.4 wsemul_vt100.c
*** wsemul_vt100.c 1998/08/13 17:43:49 1.1.1.4
--- wsemul_vt100.c 1999/01/09 21:22:29
***************
*** 219,225 ****
edp->tabs = malloc(edp->ncols, M_DEVBUF, M_NOWAIT);
edp->dblwid = malloc(edp->nrows, M_DEVBUF, M_NOWAIT);
! bzero(edp->dblwid, edp->nrows);
edp->dw = 0;
edp->dcsarg = malloc(DCS_MAXLEN, M_DEVBUF, M_NOWAIT);
edp->isolatin1tab = malloc(128 * sizeof(int), M_DEVBUF, M_NOWAIT);
--- 219,225 ----
edp->tabs = malloc(edp->ncols, M_DEVBUF, M_NOWAIT);
edp->dblwid = malloc(edp->nrows, M_DEVBUF, M_NOWAIT);
! memset(edp->dblwid, 0, edp->nrows);
edp->dw = 0;
edp->dcsarg = malloc(DCS_MAXLEN, M_DEVBUF, M_NOWAIT);
edp->isolatin1tab = malloc(128 * sizeof(int), M_DEVBUF, M_NOWAIT);
***************
*** 268,274 ****
edp->scrreg_startrow = 0;
edp->scrreg_nrows = edp->nrows;
if (edp->tabs) {
! bzero(edp->tabs, edp->ncols);
for (i = 8; i < edp->ncols; i += 8)
edp->tabs[i] = 1;
}
--- 268,274 ----
edp->scrreg_startrow = 0;
edp->scrreg_nrows = edp->nrows;
if (edp->tabs) {
! memset(edp->tabs, 0, edp->ncols);
for (i = 8; i < edp->ncols; i += 8)
edp->tabs[i] = 1;
}
***************
*** 394,407 ****
case CSI: /* 8-bit */
/* XXX cancel current escape sequence */
edp->nargs = 0;
! bzero(edp->args, sizeof (edp->args));
edp->modif1 = edp->modif2 = '\0';
edp->state = VT100_EMUL_STATE_CSI;
break;
case DCS: /* 8-bit */
/* XXX cancel current escape sequence */
edp->nargs = 0;
! bzero(edp->args, sizeof (edp->args));
edp->state = VT100_EMUL_STATE_DCS;
break;
case ST: /* string end 8-bit */
--- 394,407 ----
case CSI: /* 8-bit */
/* XXX cancel current escape sequence */
edp->nargs = 0;
! memset(edp->args, 0, sizeof (edp->args));
edp->modif1 = edp->modif2 = '\0';
edp->state = VT100_EMUL_STATE_CSI;
break;
case DCS: /* 8-bit */
/* XXX cancel current escape sequence */
edp->nargs = 0;
! memset(edp->args, 0, sizeof (edp->args));
edp->state = VT100_EMUL_STATE_DCS;
break;
case ST: /* string end 8-bit */
***************
*** 432,438 ****
switch (c) {
case '[': /* CSI */
edp->nargs = 0;
! bzero(edp->args, sizeof (edp->args));
edp->modif1 = edp->modif2 = '\0';
newstate = VT100_EMUL_STATE_CSI;
break;
--- 432,438 ----
switch (c) {
case '[': /* CSI */
edp->nargs = 0;
! memset(edp->args, 0, sizeof (edp->args));
edp->modif1 = edp->modif2 = '\0';
newstate = VT100_EMUL_STATE_CSI;
break;
***************
*** 512,518 ****
break;
case 'P': /* DCS */
edp->nargs = 0;
! bzero(edp->args, sizeof (edp->args));
newstate = VT100_EMUL_STATE_DCS;
break;
case 'c': /* RIS */
--- 512,518 ----
break;
case 'P': /* DCS */
edp->nargs = 0;
! memset(edp->args, 0, sizeof (edp->args));
newstate = VT100_EMUL_STATE_DCS;
break;
case 'c': /* RIS */
Index: wsemul_vt100_subr.c
===================================================================
RCS file: /home/cvs-base/src/sys/dev/wscons/wsemul_vt100_subr.c,v
retrieving revision 1.1.1.4
diff -c -r1.1.1.4 wsemul_vt100_subr.c
*** wsemul_vt100_subr.c 1998/08/13 17:43:51 1.1.1.4
--- wsemul_vt100_subr.c 1999/01/09 21:22:29
***************
*** 68,82 ****
edp->scrreg_startrow,
help);
if (edp->dblwid)
! bcopy(&edp->dblwid[edp->scrreg_startrow + n],
! &edp->dblwid[edp->scrreg_startrow],
! help);
}
(*edp->emulops->eraserows)(edp->emulcookie,
edp->scrreg_startrow + help, n,
edp->defattr);
if (edp->dblwid)
! bzero(&edp->dblwid[edp->scrreg_startrow + help], n);
CHECK_DW;
}
--- 68,82 ----
edp->scrreg_startrow,
help);
if (edp->dblwid)
! memmove(&edp->dblwid[edp->scrreg_startrow],
! &edp->dblwid[edp->scrreg_startrow + n],
! help);
}
(*edp->emulops->eraserows)(edp->emulcookie,
edp->scrreg_startrow + help, n,
edp->defattr);
if (edp->dblwid)
! memset(&edp->dblwid[edp->scrreg_startrow + help], 0, n);
CHECK_DW;
}
***************
*** 100,114 ****
edp->scrreg_startrow + n,
help);
if (edp->dblwid)
! bcopy(&edp->dblwid[edp->scrreg_startrow],
! &edp->dblwid[edp->scrreg_startrow + n],
! help);
}
(*edp->emulops->eraserows)(edp->emulcookie,
edp->scrreg_startrow, n,
edp->defattr);
if (edp->dblwid)
! bzero(&edp->dblwid[edp->scrreg_startrow], n);
CHECK_DW;
}
--- 100,114 ----
edp->scrreg_startrow + n,
help);
if (edp->dblwid)
! memmove(&edp->dblwid[edp->scrreg_startrow + n],
! &edp->dblwid[edp->scrreg_startrow],
! help);
}
(*edp->emulops->eraserows)(edp->emulcookie,
edp->scrreg_startrow, n,
edp->defattr);
if (edp->dblwid)
! memset(&edp->dblwid[edp->scrreg_startrow], 0, n);
CHECK_DW;
}
***************
*** 131,137 ****
edp->crow + 1, n,
edp->defattr);
if (edp->dblwid)
! bzero(&edp->dblwid[edp->crow + 1], n);
}
break;
case 1: /* beginning to cursor */
--- 131,137 ----
edp->crow + 1, n,
edp->defattr);
if (edp->dblwid)
! memset(&edp->dblwid[edp->crow + 1], 0, n);
}
break;
case 1: /* beginning to cursor */
***************
*** 140,146 ****
0, edp->crow,
edp->defattr);
if (edp->dblwid)
! bzero(&edp->dblwid[0], edp->crow);
}
ERASECOLS(0, edp->ccol + 1, edp->defattr);
break;
--- 140,146 ----
0, edp->crow,
edp->defattr);
if (edp->dblwid)
! memset(&edp->dblwid[0], 0, edp->crow);
}
ERASECOLS(0, edp->ccol + 1, edp->defattr);
break;
***************
*** 149,155 ****
0, edp->nrows,
edp->defattr);
if (edp->dblwid)
! bzero(&edp->dblwid[0], edp->nrows);
break;
default:
#ifdef VT100_PRINTUNKNOWN
--- 149,155 ----
0, edp->nrows,
edp->defattr);
if (edp->dblwid)
! memset(&edp->dblwid[0], 0, edp->nrows);
break;
default:
#ifdef VT100_PRINTUNKNOWN
***************
*** 467,473 ****
edp->tabs[edp->ccol] = 0;
break;
case 3:
! bzero(edp->tabs, edp->ncols);
break;
default:
#ifdef VT100_PRINTUNKNOWN
--- 467,473 ----
edp->tabs[edp->ccol] = 0;
break;
case 3:
! memset(edp->tabs, 0, edp->ncols);
break;
default:
#ifdef VT100_PRINTUNKNOWN
***************
*** 704,710 ****
return;
case DCSTYPE_TABRESTORE:
KASSERT(edp->tabs != 0);
! bzero(edp->tabs, edp->ncols);
pos = 0;
for (i = 0; i < edp->dcspos; i++) {
char c = edp->dcsarg[i];
--- 704,710 ----
return;
case DCSTYPE_TABRESTORE:
KASSERT(edp->tabs != 0);
! memset(edp->tabs, 0, edp->ncols);
pos = 0;
for (i = 0; i < edp->dcspos; i++) {
char c = edp->dcsarg[i];
Index: wsevent.c
===================================================================
RCS file: /home/cvs-base/src/sys/dev/wscons/wsevent.c,v
retrieving revision 1.1.1.2
diff -c -r1.1.1.2 wsevent.c
*** wsevent.c 1998/08/19 14:51:49 1.1.1.2
--- wsevent.c 1999/01/09 21:22:29
***************
*** 106,112 ****
ev->get = ev->put = 0;
ev->q = malloc((u_long)WSEVENT_QSIZE * sizeof(struct wscons_event),
M_DEVBUF, M_WAITOK);
! bzero((caddr_t)ev->q, WSEVENT_QSIZE * sizeof(struct wscons_event));
}
/*
--- 106,112 ----
ev->get = ev->put = 0;
ev->q = malloc((u_long)WSEVENT_QSIZE * sizeof(struct wscons_event),
M_DEVBUF, M_WAITOK);
! memset((caddr_t)ev->q, 0, WSEVENT_QSIZE * sizeof(struct wscons_event));
}
/*
Index: wskbd.c
===================================================================
RCS file: /home/cvs-base/src/sys/dev/wscons/wskbd.c,v
retrieving revision 1.1.1.13
diff -c -r1.1.1.13 wskbd.c
*** wskbd.c 1998/12/30 23:06:02 1.1.1.13
--- wskbd.c 1999/01/09 21:22:29
***************
*** 723,729 ****
if (error == 0) {
wskbd_init_keymap(umdp->maplen,
&sc->sc_map, &sc->sc_maplen);
! bcopy(buf, sc->sc_map, len);
sc->sc_layout = KB_USER;
}
free(buf, M_TEMP);
--- 723,729 ----
if (error == 0) {
wskbd_init_keymap(umdp->maplen,
&sc->sc_map, &sc->sc_maplen);
! memcpy(sc->sc_map, buf, len);
sc->sc_layout = KB_USER;
}
free(buf, M_TEMP);
>Audit-Trail:
>Unformatted: