IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 10122


Ignore:
Timestamp:
Nov 21, 2006, 9:23:02 AM (19 years ago)
Author:
magnier
Message:

cleaned up psTimer functions, changed psTimerStop to return bool (changed SDRS as well)

Location:
trunk/psLib/src/astro
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/psLib/src/astro/psTime.c

    r10092 r10122  
    1010 *  @author Ross Harman, MHPCC
    1111 *
    12  *  @version $Revision: 1.105 $ $Name: not supported by cvs2svn $
    13  *  @date $Date: 2006-11-20 05:22:15 $
     12 *  @version $Revision: 1.106 $ $Name: not supported by cvs2svn $
     13 *  @date $Date: 2006-11-21 19:23:02 $
    1414 *
    1515 *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
     
    17741774}
    17751775
    1776 static psHash *timers = NULL;
    1777 static char timerName[256] = "\0";
    1778 
    1779 static void psTimerFree ()
    1780 {
    1781     p_psTimeFinalize();
    1782     psFree(timers);
    1783     timers = NULL;
    1784     timerName[0] = '\0';
    1785 
    1786     return;
    1787 }
    1788 
    1789 // start/restart a named timer
    1790 bool psTimerStart (char *name)
    1791 {
    1792 
    1793     psTime *start;
    1794 
    1795     if (timers == NULL) {
    1796         timers = psHashAlloc (16);
    1797         //        psMemSetDeallocator(timers, (psFreeFunc)psTimerFree);
    1798     }
    1799     strncpy(timerName, name, 256);
    1800     // XXX EAM : TAI timer makes more sense (monotonically increasing seconds)
    1801     start = psTimeGetNow (PS_TIME_TAI);
    1802     psHashAdd (timers, name, start);
    1803     psFree (start);
    1804     return (true);
    1805 }
    1806 
    1807 psF64 psTimerClear (char *name)
    1808 {
    1809     psF64 timerTime = 0.0;
    1810     bool status;
    1811 
    1812     if (name == NULL)
    1813         return false;
    1814     timerTime = psTimerMark(name);
    1815     status = psHashRemove (timers, name);
    1816     strncpy(timerName, "\0", 256);
    1817     if ( !status )
    1818         return 0.0;
    1819     else
    1820         return timerTime;
    1821 }
    1822 
    1823 // get current elapsed time on named timer
    1824 psF64 psTimerMark (char *name)
    1825 {
    1826 
    1827     psTime *start;
    1828     psTime *mark;
    1829     psF64   delta;
    1830 
    1831     if (timers == NULL)
    1832         return (0);
    1833     start = (psTime*)psHashLookup (timers, name);
    1834     if (start == NULL)
    1835         return (0);
    1836     mark = psTimeGetNow (PS_TIME_TAI);
    1837     delta = psTimeDelta (mark, start);
    1838     psFree (mark);
    1839     // psFree (start); -- XXX is psHashLookup not psMemCopying?
    1840 
    1841     return (delta);
    1842 }
    1843 
    1844 psF64 psTimerStop(void)
    1845 {
    1846     psF64 timerTime = 0.0;
    1847 
    1848     if ( strncmp(timerName, "\0", 256) )
    1849         timerTime = psTimerMark(timerName);
    1850     strncpy(timerName, "\0", 2);
    1851     psTimerFree();
    1852     return timerTime;
    1853 }
    1854 
    18551776void psTimeInitialize(const char *timeConfig)
    18561777{
     
    18791800}
    18801801
    1881 
     1802// XXX EAM : I've changed the timers to report TAI
     1803// this makes more sense because it has monotonically increasing seconds
     1804// would be even better if we could get a TAI value without doing a big lookup...
     1805
     1806static psHash *timers = NULL;
     1807
     1808// free all timers
     1809static void psTimerFree ()
     1810{
     1811    p_psTimeFinalize();
     1812    psFree(timers);
     1813    timers = NULL;
     1814    return;
     1815}
     1816
     1817// start/restart a named timer
     1818bool psTimerStart (char *name)
     1819{
     1820    if (name == NULL)
     1821        return false;
     1822    if (timers == NULL) {
     1823        timers = psHashAlloc (16);
     1824    }
     1825    psTime *start = psTimeGetNow (PS_TIME_TAI);
     1826    psHashAdd (timers, name, start);
     1827    psFree (start);
     1828    return true;
     1829}
     1830
     1831// clear the timer, return elapsed time to date, or NAN if not previously defined
     1832psF64 psTimerClear (char *name)
     1833{
     1834    if (name == NULL)
     1835        return NAN;
     1836    psF64 delta = psTimerMark(name);
     1837
     1838    psTime *start = psTimeGetNow (PS_TIME_TAI);
     1839    psHashAdd (timers, name, start);
     1840    psFree (start);
     1841    return delta;
     1842}
     1843
     1844// get current elapsed time on named timer (NAN if not defined)
     1845psF64 psTimerMark (char *name)
     1846{
     1847    if (timers == NULL)
     1848        return (NAN);
     1849    psTime *start = psHashLookup (timers, name);
     1850    if (start == NULL)
     1851        return (NAN);
     1852
     1853    psTime *mark = psTimeGetNow (PS_TIME_TAI);
     1854    psF64  delta = psTimeDelta (mark, start);
     1855    psFree (mark);
     1856    return delta;
     1857}
     1858
     1859bool psTimerStop(void)
     1860{
     1861    psTimerFree();
     1862    return true;
     1863}
     1864
  • trunk/psLib/src/astro/psTime.h

    r10100 r10122  
    1111 *  @author Ross Harman, MHPCC
    1212 *
    13  *  @version $Revision: 1.52 $ $Name: not supported by cvs2svn $
    14  *  @date $Date: 2006-11-20 17:49:56 $
     13 *  @version $Revision: 1.53 $ $Name: not supported by cvs2svn $
     14 *  @date $Date: 2006-11-21 19:23:02 $
    1515 *
    1616 *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
     
    467467 *  @return psF64:      The maximum time expended.
    468468 */
    469 psF64 psTimerStop(void);
     469bool psTimerStop(void);
    470470
    471471/** Copy a psTime.
Note: See TracChangeset for help on using the changeset viewer.