Annotation of parser3/src/types/pa_vstatus.C, revision 1.15.2.4

1.1       paf         1: /** @file
                      2:        Parser: @b status class impl.
                      3: 
1.15.2.1  paf         4:        Copyright (c) 2001-2003 ArtLebedev Group (http://www.artlebedev.com)
1.6       paf         5:        Author: Alexandr Petrosian <paf@design.ru> (http://paf.design.ru)
1.8       paf         6: */
1.1       paf         7: 
1.15.2.4! paf         8: static const char* IDENT_VSTATUS_C="$Date: 2003/02/03 12:40:26 $";
1.1       paf         9: 
1.15.2.2  paf        10: #include "pa_value_includes.h"
1.1       paf        11: #include "pa_vstatus.h"
                     12: #include "pa_cache_managers.h"
1.2       paf        13: #include "pa_vhash.h"
                     14: #include "pa_vdouble.h"
                     15: 
                     16: #ifdef HAVE_SYS_RESOURCE_H
                     17: // rusage
                     18: #include <sys/resource.h>
                     19: #endif
1.1       paf        20: 
1.15.2.2  paf        21: ValuePtr VStatus::get_element(StringPtr aname, Value& /*aself*/, bool /*looking_up*/) {
1.1       paf        22:        // getstatus
1.15.2.3  paf        23:        if(Cache_manager* manager=cache_managers.get(aname))
1.15.2.2  paf        24:                return manager->get_status(fpool, aname);
1.1       paf        25: 
                     26: #ifdef HAVE_GETRUSAGE
                     27:        // rusage
1.15.2.4! paf        28:        if(*aname=="rusage") {
        !            29:                VHashPtr rusage=VHashPtr(new VHash);
1.1       paf        30:            struct rusage u;
1.13      paf        31:            if(getrusage(RUSAGE_SELF,&u)<0)
1.7       paf        32:                        throw Exception(0,
1.15.2.4! paf        33:                                aname,
1.13      paf        34:                                "getrusage failed (#%d)", errno);
                     35: 
                     36: #ifdef HAVE_GETTIMEOFDAY
                     37:                struct timeval tp;
                     38:                if(gettimeofday(&tp, NULL)<0)
                     39:                        throw Exception(0,
1.15.2.4! paf        40:                                aname,
1.13      paf        41:                                "gettimeofday failed (#%d)", errno);
                     42: #endif
1.1       paf        43: 
1.15.2.4! paf        44:                HashStringValue& hash=rusage->hash(aname);
        !            45:                hash.put(StringPtr(new String("utime")), ValuePtr(new VDouble(
        !            46:                        u.ru_utime.tv_sec+u.ru_utime.tv_usec/1000000.0)));
        !            47:                hash.put(StringPtr(new String("stime")), ValuePtr(new VDouble(
        !            48:                        u.ru_stime.tv_sec+u.ru_stime.tv_usec/1000000.0)));
        !            49:                hash.put(StringPtr(new String("maxrss")), ValuePtr(new VDouble(u.ru_maxrss)));
        !            50:                hash.put(StringPtr(new String("ixrss")), ValuePtr(new VDouble(u.ru_ixrss)));
        !            51:                hash.put(StringPtr(new String("idrss")), ValuePtr(new VDouble(u.ru_idrss)));
        !            52:                hash.put(StringPtr(new String("isrss")), ValuePtr(new VDouble(u.ru_isrss)));
1.13      paf        53: 
                     54: #ifdef HAVE_GETTIMEOFDAY
1.15.2.4! paf        55:                hash.put(StringPtr(new String("tv_sec")), ValuePtr(new VDouble(tp.tv_sec)));
        !            56:                hash.put(StringPtr(new String("tv_usec")), ValuePtr(new VDouble(tp.tv_usec)));
1.13      paf        57: #endif
1.1       paf        58: 
1.15.2.4! paf        59:                return rusage;
1.1       paf        60:        }
                     61: 
                     62: #endif
                     63: 
1.15.2.4! paf        64:        return ValuePtr(0);
1.1       paf        65: }

E-mail: