Irix joblimits failure (was: Re: New snapshot)

Ben Lindstrom mouring at etoh.eviladmin.org
Sun Apr 7 04:33:44 EST 2002


Am I going to see the fix for IRIX that you promised?  Or am I going to
have to do a code revert before 3.2 release?

- Ben

On Thu, 7 Mar 2002, David Kaelbling wrote:

> IRIX has a compatibility mechanism that lets you test for optional symbols (like jlimit_start) at run-time.  I think these patches will let all all IRIX 6.5 systems build images that will test for job limit support dynamically:
>
> --- ./configure.ac	Wed Feb 27 01:12:35 2002
> +++ ../openssh-3.1p1/./configure.ac	Thu Mar  7 15:50:21 2002
> @@ -115,7 +115,7 @@
>  	AC_DEFINE(WITH_IRIX_ARRAY)
>  	AC_DEFINE(WITH_IRIX_PROJECT)
>  	AC_DEFINE(WITH_IRIX_AUDIT)
> -	AC_CHECK_FUNC(jlimit_startjob, [AC_DEFINE(WITH_IRIX_JOBS)])
> +	AC_DEFINE(WITH_IRIX_JOBS)
>  	AC_DEFINE(BROKEN_INET_NTOA)
>  	;;
>  *-*-linux*)
>
>
> --- ./openbsd-compat/port-irix.c	Tue Feb 19 15:02:49 2002
> +++ ../openssh-3.1p1/./openbsd-compat/port-irix.c	Thu Mar  7 15:35:21 2002
> @@ -3,13 +3,20 @@
>  #if defined(WITH_IRIX_PROJECT) || defined(WITH_IRIX_JOBS) || defined(WITH_IRIX_ARRAY)
>
>  #ifdef WITH_IRIX_PROJECT
> -#include <proj.h>
> +# include <proj.h>
>  #endif /* WITH_IRIX_PROJECT */
>  #ifdef WITH_IRIX_JOBS
> -#include <sys/resource.h>
> -#endif
> +# include <sys/resource.h>
> +# include <optional_sym.h>
> +# if !defined(JLIMIT_CPU)
> +/* Simulate job limit support so we can still test for it at runtime. */
> +typedef __int64_t jid_t;
> +extern jid_t jlimit_startjob(char *, uid_t, char *);
> +#  pragma optional jlimit_startjob
> +# endif
> +#endif /* WITH_IRIX_JOBS */
>  #ifdef WITH_IRIX_AUDIT
> -#include <sat.h>
> +# include <sat.h>
>  #endif /* WITH_IRIX_AUDIT */
>
>  void
> @@ -27,10 +34,16 @@
>  #endif /* WITH_IRIX_JOBS */
>
>  #ifdef WITH_IRIX_JOBS
> -        jid = jlimit_startjob(pw->pw_name, pw->pw_uid, "interactive");
> -        if (jid == -1)
> -                fatal("Failed to create job container: %.100s",
> +	if (_MIPS_SYMBOL_PRESENT(jlimit_startjob)) {
> +	  jid = jlimit_startjob(pw->pw_name, pw->pw_uid, "interactive");
> +	  if (jid == -1) {
> +	    if (errno == ENOPKG)
> +	      jid = 0;
> +	    else
> +	      fatal("Failed to create job container: %.100s",
>                      strerror(errno));
> +	  }
> +	}
>  #endif /* WITH_IRIX_JOBS */
>  #ifdef WITH_IRIX_ARRAY
>          /* initialize array session */
>
> (Hopefully that didn't get line-wrapped.  If it did I can try again.)
> The JLIMIT_CPU test is to try and recognize when we are compiling on a system without the job limit headers.
>
> 	Thanks,
> 	David
>
> --
> David KAELBLING <drk at sgi.com>	    Silicon Graphics Computer Systems
> 1 Cabot Rd, suite 250; Hudson, MA 01749	    781.839.2157, fax ...2357
> _______________________________________________
> openssh-unix-dev at mindrot.org mailing list
> http://www.mindrot.org/mailman/listinfo/openssh-unix-dev
>




More information about the openssh-unix-dev mailing list