Edit the interrupt name strings to shorten them. This is believed to
only affect amd64 and i386. alpha uses "intr N" instead of "irqN" and mostly has no device names. ia64 uses only device names. - Edit interrupt names once after they are read from the kernel and not every time they are displayed. - Discard bogus trailing spaces so that the next step doesn't move things to oblivion. - If an interrupt name starts with "irqN:" (as it usually does in on amd64 and i386), then move "irqN" to the end and strip ":", since we have no space for the ":" and don't want to start descriptions with "N" after stripping "irq" in the next step (since "N" would look like a count). This step may need reworking for interrupt names containing several device names -- then moving the irq number to the end would lose it instead of losing some device names. - Remove "irq" from an interrupt name if and only if the original name is too long to display.
This commit is contained in:
parent
18d3a03e13
commit
4545c62547
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=158154
@ -207,7 +207,7 @@ closekre(w)
|
||||
int
|
||||
initkre()
|
||||
{
|
||||
char *intrnamebuf, *cp;
|
||||
char *cp, *cp1, *cp2, *intrnamebuf, *nextcp;
|
||||
int i;
|
||||
size_t sz;
|
||||
|
||||
@ -249,8 +249,39 @@ initkre()
|
||||
return(0);
|
||||
}
|
||||
for (cp = intrnamebuf, i = 0; i < nintr; i++) {
|
||||
nextcp = cp + strlen(cp) + 1;
|
||||
|
||||
/* Discard trailing spaces. */
|
||||
for (cp1 = nextcp - 1; cp1 > cp && *(cp1 - 1) == ' '; )
|
||||
*--cp1 = '\0';
|
||||
|
||||
/* Convert "irqN: name" to "name irqN". */
|
||||
if (strncmp(cp, "irq", 3) == 0) {
|
||||
cp1 = cp + 3;
|
||||
while (isdigit((u_char)*cp1))
|
||||
cp1++;
|
||||
if (cp1 != cp && *cp1 == ':' &&
|
||||
*(cp1 + 1) == ' ') {
|
||||
*cp1 = '\0';
|
||||
cp1 = cp1 + 2;
|
||||
cp2 = strdup(cp);
|
||||
bcopy(cp1, cp, strlen(cp1) + 1);
|
||||
strcat(cp, " ");
|
||||
strcat(cp, cp2);
|
||||
free(cp2);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Convert "name irqN" to "name N" if the former is
|
||||
* longer than the field width.
|
||||
*/
|
||||
if ((cp1 = strstr(cp, "irq")) != NULL &&
|
||||
strlen(cp) > 10)
|
||||
bcopy(cp1 + 3, cp1, strlen(cp1 + 3) + 1);
|
||||
|
||||
intrname[i] = cp;
|
||||
cp += strlen(cp) + 1;
|
||||
cp = nextcp;
|
||||
}
|
||||
nextintsrow = INTSROW + 2;
|
||||
allocinfo(&s);
|
||||
|
Loading…
Reference in New Issue
Block a user