pike.git / src / builtin_functions.c

version» Context lines:

pike.git/src/builtin_functions.c:1:   /*   || This file is part of Pike. For copyright information see COPYRIGHT.   || Pike is distributed under GPL, LGPL and MPL. See the file COPYING   || for more information. - || $Id: builtin_functions.c,v 1.471 2003/02/08 18:37:54 grubba Exp $ + || $Id: builtin_functions.c,v 1.472 2003/02/09 15:30:57 mast Exp $   */      #include "global.h" - RCSID("$Id: builtin_functions.c,v 1.471 2003/02/08 18:37:54 grubba Exp $"); + RCSID("$Id: builtin_functions.c,v 1.472 2003/02/09 15:30:57 mast Exp $");   #include "interpret.h"   #include "svalue.h"   #include "pike_macros.h"   #include "object.h"   #include "program.h"   #include "array.h"   #include "pike_error.h"   #include "constants.h"   #include "mapping.h"   #include "stralloc.h"
pike.git/src/builtin_functions.c:5947:    ref_push_object(master());   }      #ifdef HAVE_SYS_TIME_H   #include <sys/time.h>   #endif      /*! @decl int gethrvtime (void|int nsec)    *!    *! Return the CPU time that has been consumed by this process or -  *! thread. Zero is returned if the system couldn't determine it. The +  *! thread. -1 is returned if the system couldn't determine it. The    *! time is normally returned in microseconds, but if the optional    *! argument @[nsec] is nonzero it's returned in nanoseconds.    *!    *! The CPU time includes both user and system time, i.e. it's    *! approximately the same thing you would get by adding together the    *! "utime" and "stime" fields returned by @[System.getrusage] (but    *! perhaps with better accurancy). It's however system dependent    *! whether or not it's the time consumed in all threads or in the    *! current one only; @[System.CPU_TIME_IS_THREAD_LOCAL] tells which.    *!
pike.git/src/builtin_functions.c:5980:    *!    *! @seealso    *! @[System.CPU_TIME_IS_THREAD_LOCAL], @[gauge()],    *! @[System.getrusage()], @[gethrtime()]    */   PMOD_EXPORT void f_gethrvtime(INT32 args)   {    int nsec = 0;    cpu_time_t time = get_cpu_time();    +  if (time == (cpu_time_t) -1) { +  pop_n_elems (args); +  push_int (-1); +  return; +  } +     /* Don't subtract the gc time at all if we don't know whether it's    * thread local or not, since if we do it wrong we might end up    * returning a negative number. */   #if CPU_TIME_IS_THREAD_LOCAL == YES    time -= OBJ2THREAD(Pike_interpreter.thread_id)->auto_gc_time;   #elif CPU_TIME_IS_THREAD_LOCAL == NO    time -= auto_gc_time;   #endif       nsec = args && !UNSAFE_IS_ZERO(Pike_sp-args);