diff options
Diffstat (limited to 'usr.sbin/xntpd/xntpd/ntpd.c')
-rw-r--r-- | usr.sbin/xntpd/xntpd/ntpd.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/usr.sbin/xntpd/xntpd/ntpd.c b/usr.sbin/xntpd/xntpd/ntpd.c index abe86d9..6c9d640 100644 --- a/usr.sbin/xntpd/xntpd/ntpd.c +++ b/usr.sbin/xntpd/xntpd/ntpd.c @@ -28,8 +28,12 @@ #include "ntp_stdlib.h" #ifdef LOCK_PROCESS +#ifdef SYS_SOLARIS +#include <sys/mman.h> +#else #include <sys/lock.h> #endif +#endif /* * Signals we catch for debugging. If not debugging we ignore them. @@ -139,7 +143,7 @@ main(argc, argv) (void) dup2(0, 1); (void) dup2(0, 2); #ifdef NTP_POSIX_SOURCE -#if defined(SOLARIS) || defined(SYS_PTX) || defined(SYS_AUX3) || defined(SYS_AIX) +#if defined(SOLARIS) || defined(SYS_PTX) || defined(SYS_AUX3) || defined(SYS_AIX) || defined(SYS_ULTRIX) (void) setsid(); #else (void) setpgid(0, 0); @@ -219,13 +223,23 @@ main(argc, argv) if (rtprio(0, 120) < 0) syslog(LOG_ERR, "rtprio() error: %m"); #else -#if defined(PROCLOCK) && defined(LOCK_PROCESS) +#if defined(LOCK_PROCESS) +#if defined(MCL_CURRENT) && defined(MCL_FUTURE) + /* + * lock the process into memory + */ + if (mlockall(MCL_CURRENT|MCL_FUTURE) < 0) + syslog(LOG_ERR, "mlockall(): %m"); +#else +#if defined(PROCLOCK) /* * lock the process into memory */ if (plock(PROCLOCK) < 0) syslog(LOG_ERR, "plock(): %m"); #endif +#endif +#endif #if defined(NTPD_PRIO) && NTPD_PRIO != 0 /* * Set the priority. |