⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 time.c

📁 spice中支持多层次元件模型仿真的可单独运行的插件源码
💻 C
字号:
/**********Copyright 1990 Regents of the University of California.  All rights reserved.**********//* * Date and time utility functions */#include "spice.h"#include "stdio.h"#include "misc.h"#ifdef HAS_LOCALTIME#include <time.h>#endif#ifdef HAS_BSDRUSAGE#include <sys/types.h>#include <sys/time.h>#include <sys/resource.h>#else#ifdef HAS_SYSVRUSAGE#include <sys/types.h>#include <sys/times.h>#include <sys/param.h>#else#ifdef HAS_FTIME/* default to ftime if we can't get real CPU times */#include <sys/types.h>#include <sys/timeb.h>#endif#endif#endif#include "suffix.h"/* Return the date. Return value is static data. */char *datestring(){#ifdef HAS_LOCALTIME    static char tbuf[45];    struct tm *tp;    char *ap;    int i;    time_t tloc;    time(&tloc);    tp = localtime(&tloc);    ap = asctime(tp);    (void) sprintf(tbuf, "%.20s", ap);    (void) strcat(tbuf, ap + 19);    i = strlen(tbuf);    tbuf[i - 1] = '\0';    return (tbuf);#else    return ("today");#endif}/* return time interval in seconds and milliseconds */#ifndef HAS_BSDRUSAGE#ifndef HAS_SYSVRUSAGE#ifdef HAS_FTIMEstruct timeb timebegin;timediff(now, begin, sec, msec)struct timeb *now, *begin;int *sec, *msec;{    *msec = now->millitm - begin->millitm;    *sec = now->time - begin->time;    if (*msec < 0) {      *msec += 1000;      (*sec)--;    }    return;}#endif#endif#endif/* How many seconds have elapsed in running time. */doubleseconds(){#ifdef HAS_BSDRUSAGE    struct rusage ruse;#ifdef PARALLEL_ARCH    return (TCGTIME_());#else    (void) getrusage(RUSAGE_SELF, &ruse);    return (ruse.ru_utime.tv_sec + (double) ruse.ru_utime.tv_usec / 1000000.0);#endif /* PARALLEL_ARCH */#else#ifdef HAS_SYSVRUSAGE#ifdef ipsc/* times() doesn't work on hypercube nodes, use the double-prec. clock */   double dclock();   return( dclock() );#else    struct tms tmsbuf;    times(&tmsbuf);    return((double) tmsbuf.tms_utime / HZ);#endif#else#ifdef HAS_FTIME    struct timeb timenow;    int sec, msec;    ftime(&timenow);    timediff(&timenow, &timebegin, &sec, &msec);    return(sec + (double) msec / 1000.0);#else#ifdef HAS_VMSHACK    return((double)clock()/(double)CLK_TCK);#else#ifdef HAS_MACCLOCK    return((double)clock()/(double)CLOCKS_PER_SEC);#else /* unknown */    /* don't know how to do this in general. */    return(-1.0);	/* Obvious error condition */#endif /* !CLOCKS_PER_SEC */#endif /* !VMS */#endif /* !FTIME */#endif /* !SYSV */#endif /* !BSD */}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -