Date: Wed, 13 Jan 1999 08:57:13 +1100 From: Bruce Evans <bde@zeta.org.au> To: fenner@parc.xerox.com, jgreco@solaria.sol.net Cc: current@FreeBSD.ORG Subject: Re: Lots of arpresolve: can't allocate llinfo for <addr>rt Message-ID: <199901122157.IAA32727@godzilla.zeta.org.au>
next in thread | raw e-mail | index | archive | help
>getting a bit irritating... I'm using a serial console and during very >heavy message-spews, the machine seems to "freeze" for seconds at a time >and I'm pretty sure its because the system is waiting for the 9600 baud >console to print. I've got a whole different set of complaints about the >serial console handling, oh well. Try this patch. ttymsg() can fill up the process table for heavy message-spews. Serial console handling is relatively perfect :-). Bruce diff -c2 ttymsg.c~ ttymsg.c *** ttymsg.c~ Sat Jul 25 04:51:47 1998 --- ttymsg.c Sat Jul 25 04:52:56 1998 *************** *** 42,45 **** --- 42,46 ---- #include <sys/types.h> #include <sys/uio.h> + #include <sys/wait.h> #include <dirent.h> #include <errno.h> *************** *** 70,74 **** register int cnt, fd, left, wret; struct iovec localiov[7]; ! int forked = 0; if (iovcnt > sizeof(localiov) / sizeof(localiov[0])) --- 71,92 ---- register int cnt, fd, left, wret; struct iovec localiov[7]; ! int forked = 0, status; ! static pid_t cpid = 0; ! pid_t pid; ! ! /* ! * Don't do anything if a child is still alive. Interleaved ! * output would not be good, and filling the process table with ! * as many children as we can fork before the timeout kills them ! * would be worse. Waiting here also reduces the need to handle ! * SIGCHLD in callers. ! */ ! if (cpid) { ! pid = waitpid(cpid, &status, WNOHANG); ! if (pid == cpid || (pid == -1 || errno == ECHILD)) ! cpid = 0; ! else ! return (NULL); ! } if (iovcnt > sizeof(localiov) / sizeof(localiov[0])) *************** *** 121,125 **** } if (errno == EWOULDBLOCK) { ! int cpid, off = 0; if (forked) { --- 139,143 ---- } if (errno == EWOULDBLOCK) { ! int off = 0; if (forked) { To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199901122157.IAA32727>