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

📄 cpu_stats.c

📁 主要进行大规模的电路综合
💻 C
字号:
/* * Revision Control Information * * /projects/hsis/CVS/utilities/util/cpu_stats.c,v * rajeev * 1.4 * 1995/08/08 22:41:17 * *//* LINTLIBRARY */#include <stdio.h>#include "util.h"#include <sys/types.h>//#include <sys/time.h>#ifdef HAVE_SYS_RESOURCE_H#  include <sys/resource.h>#endif#if defined(_IBMR2)#define etext _etext#define edata _edata#define end _end#endif#ifndef __CYGWIN32__extern int end, etext, edata;#endifvoidutil_print_cpu_stats(fp)FILE *fp;{    (void) fprintf(fp, "Usage statistics not available\n");}#if 0voidutil_print_cpu_stats(fp)FILE *fp;{#if HAVE_SYS_RESOURCE_H && !defined(__CYGWIN32__)    struct rusage rusage;#ifdef RLIMIT_DATA    struct rlimit rlp;#endif    int text, data, vm_limit, vm_soft_limit;    double user, system, scale;    char hostname[257];    int vm_text, vm_init_data, vm_uninit_data, vm_sbrk_data;    /* Get the hostname */    (void) gethostname(hostname, 256);    hostname[256] = '\0';		/* just in case */    /* Get the virtual memory sizes */    vm_text = ((int) (&etext)) / 1024.0 + 0.5;    vm_init_data = ((int) (&edata) - (int) (&etext)) / 1024.0 + 0.5;    vm_uninit_data = ((int) (&end) - (int) (&edata)) / 1024.0 + 0.5;    vm_sbrk_data = (sizeof(char) * ((char *) sbrk(0) - (char *) (&end))) / 1024.0 + 0.5;     /* Get virtual memory limits */#ifdef RLIMIT_DATA /* In HP-UX, with cc, this constant does not exist */    (void) getrlimit(RLIMIT_DATA, &rlp);    vm_limit = rlp.rlim_max / 1024.0 + 0.5;    vm_soft_limit = rlp.rlim_cur / 1024.0 + 0.5;#else    vm_limit = -1;    vm_soft_limit = -1;#endif          /* Get usage stats */    (void) getrusage(RUSAGE_SELF, &rusage);    user = rusage.ru_utime.tv_sec + rusage.ru_utime.tv_usec/1.0e6;    system = rusage.ru_stime.tv_sec + rusage.ru_stime.tv_usec/1.0e6;    scale = (user + system)*100.0;    if (scale == 0.0) scale = 0.001;    (void) fprintf(fp, "Runtime Statistics\n");    (void) fprintf(fp, "------------------\n");    (void) fprintf(fp, "Machine name: %s\n", hostname);    (void) fprintf(fp, "User time   %6.1f seconds\n", user);    (void) fprintf(fp, "System time %6.1f seconds\n\n", system);    text = rusage.ru_ixrss / scale + 0.5;    data = (rusage.ru_idrss + rusage.ru_isrss) / scale + 0.5;    (void) fprintf(fp, "Average resident text size       = %5dK\n", text);    (void) fprintf(fp, "Average resident data+stack size = %5dK\n", data);    (void) fprintf(fp, "Maximum resident size            = %5ldK\n\n", 	rusage.ru_maxrss/2);    (void) fprintf(fp, "Virtual text size                = %5dK\n", 	vm_text);    (void) fprintf(fp, "Virtual data size                = %5dK\n", 	vm_init_data + vm_uninit_data + vm_sbrk_data);    (void) fprintf(fp, "    data size initialized        = %5dK\n", 	vm_init_data);    (void) fprintf(fp, "    data size uninitialized      = %5dK\n", 	vm_uninit_data);    (void) fprintf(fp, "    data size sbrk               = %5dK\n", 	vm_sbrk_data);    /* In some platforms, this constant does not exist */#ifdef RLIMIT_DATA     (void) fprintf(fp, "Virtual memory limit             = %5dK (%dK)\n\n", 	vm_soft_limit, vm_limit);#endif    (void) fprintf(fp, "Major page faults = %ld\n", rusage.ru_majflt);    (void) fprintf(fp, "Minor page faults = %ld\n", rusage.ru_minflt);    (void) fprintf(fp, "Swaps = %ld\n", rusage.ru_nswap);    (void) fprintf(fp, "Input blocks = %ld\n", rusage.ru_inblock);    (void) fprintf(fp, "Output blocks = %ld\n", rusage.ru_oublock);    (void) fprintf(fp, "Context switch (voluntary) = %ld\n", rusage.ru_nvcsw);    (void) fprintf(fp, "Context switch (involuntary) = %ld\n", rusage.ru_nivcsw);#else /* Do not have sys/resource.h */    (void) fprintf(fp, "Usage statistics not available\n");#endif}#endif

⌨️ 快捷键说明

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