PR misc/50046

Remove the expensive tests in _have_rc_postprocessor(), as proposed by apb@.
It more than halves the multiuser boot time on slow machines and brings
it back near to the previous level.
This commit is contained in:
phx 2015-10-31 12:31:37 +00:00
parent feca107492
commit 8e58c9596b
1 changed files with 4 additions and 14 deletions

View File

@ -1,4 +1,4 @@
# $NetBSD: rc.subr,v 1.96 2014/10/07 19:09:45 roy Exp $
# $NetBSD: rc.subr,v 1.97 2015/10/31 12:31:37 phx Exp $
#
# Copyright (c) 1997-2011 The NetBSD Foundation, Inc.
# All rights reserved.
@ -814,19 +814,9 @@ $command $rc_flags $command_args"
_have_rc_postprocessor()
{
# Cheap tests that fd and pid are set, fd is writable.
[ -n "${_rc_postprocessor_fd}" ] || return 1
[ -n "${_rc_pid}" ] || return 1
eval ": >&${_rc_postprocessor_fd}" 2>/dev/null || return 1
# More expensive test that pid is running.
# Unset _rc_pid if this fails.
kill -0 "${_rc_pid}" 2>/dev/null \
|| { unset _rc_pid; return 1; }
# More expensive test that pid appears to be
# a shell running an rc script.
# Unset _rc_pid if this fails.
expr "$(ps -p "${_rc_pid}" -o command=)" : ".*sh .*/rc.*" >/dev/null \
[ -n "${_rc_pid}" ] || { unset _rc_pid; return 1; }
[ -n "${_rc_postprocessor_fd}" ] || { unset _rc_pid; return 1; }
eval ": >&${_rc_postprocessor_fd}" 2>/dev/null \
|| { unset _rc_pid; return 1; }
return 0