summaryrefslogtreecommitdiffstats
path: root/contrib
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2003-10-28 20:46:23 +0000
committerjhb <jhb@FreeBSD.org>2003-10-28 20:46:23 +0000
commit6ed78687ed5b2116130d2f07d2bd761989ffc34c (patch)
treeafd6b79800e365b34a8e2bc920e421f08a8c8725 /contrib
parentba29587a94ca9095fb6130b6ebbd3c09132e797a (diff)
downloadFreeBSD-src-6ed78687ed5b2116130d2f07d2bd761989ffc34c.zip
FreeBSD-src-6ed78687ed5b2116130d2f07d2bd761989ffc34c.tar.gz
According to the submitter, POSIX mandates that all interval timers are
reset in a child process after a fork(). Currently, however, only the real timer is cleared while the virtual and profiling timers are inherited. The realtimer is cleared because it lives directly in struct proc in p_realtimer. It is in the zero'd section of struct proc. The other timers live in the p_timer[] array in struct pstats. These timers are copied on fork() rather than zero'd. The fix is to move p_timer[] to the zero'd part of struct pstats so that they are zero'd instead of copied on fork(). Note: Since at least FreeBSD 2.0 (and possibly earlier) we've had storage for two real interval timers. Now that the uarea is less important, perhaps we could move all of p_timer[] over to struct proc and drop the p_realtimer special case to fix that. PR: kern/58647 Reported by: Dan Nelson <dnelson@allantgroup.com> MFC after: 1 week
Diffstat (limited to 'contrib')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud