# HG changeset patch # User dbateman # Date 1142959018 0 # Node ID e33aff8ba3780d20a229c30b0f119c4d08007462 # Parent 2fe20065a545777c62b9e80455bac8f9b47a82ea [project @ 2006-03-21 16:36:58 by dbateman] diff --git a/src/DLD-FUNCTIONS/getrusage.cc b/src/DLD-FUNCTIONS/getrusage.cc --- a/src/DLD-FUNCTIONS/getrusage.cc +++ b/src/DLD-FUNCTIONS/getrusage.cc @@ -35,6 +35,10 @@ #include #endif +#if defined (__MINGW32__) +#include +#endif + #if defined (HAVE_TIMES) && defined (HAVE_SYS_TIMES_H) #if defined (HAVE_SYS_PARAM_H) @@ -133,6 +137,7 @@ Octave_map m; Octave_map tv_tmp; + // XXX FIXME XX -- maybe encapsulate all of this in a liboctave class #if defined (HAVE_GETRUSAGE) struct rusage ru; @@ -191,6 +196,20 @@ tv_tmp.assign ("usec", static_cast (fraction * 1e6 / HZ)); m.assign ("stime", octave_value (tv_tmp)); +#elif defined (__MINGW32__) + HANDLE hProcess = GetCurrentProcess (); + FILETIME ftCreation, ftExit, ftUser, ftKernel; + GetProcessTimes (hProcess, &ftCreation, &ftExit, &ftKernel, &ftUser); + + EIGHT_BYTE_INT itmp = *(reinterpret_cast (&ftUser)); + tv_tmp.assign ("sec", static_cast (itmp / 10000000U)); + tv_tmp.assign ("usec", static_cast (itmp % 10000000U) / 10.); + m.assign ("utime", octave_value (tv_tmp)); + + itmp = *(reinterpret_cast (&ftKernel)); + tv_tmp.assign ("sec", static_cast (itmp / 10000000U)); + tv_tmp.assign ("usec", static_cast (itmp % 10000000U) / 10.); + m.assign ("stime", octave_value (tv_tmp)); #else tv_tmp.assign ("sec", 0);