ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/libstatgrab/src/libstatgrab/page_stats.c
(Generate patch)

Comparing projects/libstatgrab/src/libstatgrab/page_stats.c (file contents):
Revision 1.19 by tdb, Tue Apr 6 14:52:58 2004 UTC vs.
Revision 1.21 by tdb, Wed Apr 7 21:08:40 2004 UTC

# Line 51 | Line 51 | static int page_stats_uninit=1;
51  
52   sg_page_stats *sg_get_page_stats(){
53   #ifdef SOLARIS
54 <        kstat_ctl_t *kc;
55 <        kstat_t *ksp;
56 <        cpu_stat_t cs;
54 >        kstat_ctl_t *kc;
55 >        kstat_t *ksp;
56 >        cpu_stat_t cs;
57   #endif
58   #if defined(LINUX) || defined(CYGWIN)
59          FILE *f;
# Line 67 | Line 67 | sg_page_stats *sg_get_page_stats(){
67   #endif
68  
69          page_stats.systime = time(NULL);
70 <        page_stats.pages_pagein=0;
71 <        page_stats.pages_pageout=0;
70 >        page_stats.pages_pagein=0;
71 >        page_stats.pages_pageout=0;
72  
73   #ifdef SOLARIS
74 <        if ((kc = kstat_open()) == NULL) {
75 <                return NULL;
76 <        }
77 <        for (ksp = kc->kc_chain; ksp!=NULL; ksp = ksp->ks_next) {
78 <                if ((strcmp(ksp->ks_module, "cpu_stat")) != 0) continue;
79 <                if (kstat_read(kc, ksp, &cs) == -1) {
80 <                        continue;
81 <                }
74 >        if ((kc = kstat_open()) == NULL) {
75 >                sg_set_error(SG_ERROR_KSTAT_OPEN, NULL);
76 >                return NULL;
77 >        }
78 >        for (ksp = kc->kc_chain; ksp!=NULL; ksp = ksp->ks_next) {
79 >                if ((strcmp(ksp->ks_module, "cpu_stat")) != 0) continue;
80 >                if (kstat_read(kc, ksp, &cs) == -1) {
81 >                        continue;
82 >                }
83  
84                  page_stats.pages_pagein+=(long long)cs.cpu_vminfo.pgpgin;
85                  page_stats.pages_pageout+=(long long)cs.cpu_vminfo.pgpgout;
# Line 105 | Line 106 | sg_page_stats *sg_get_page_stats(){
106                  fclose(f);
107          } else if ((f = fopen("/proc/stat", "r")) != NULL) {
108                  if ((line_ptr = sg_f_read_line(f, "page")) == NULL) {
109 +                        sg_set_error(SG_ERROR_PARSE, "page");
110                          fclose(f);
111                          return NULL;
112                  }
113  
114                  if (sscanf(line_ptr, "page %lld %lld", &page_stats.pages_pagein, &page_stats.pages_pageout) != 2) {
115 +                        sg_set_error(SG_ERROR_PARSE, "page");
116                          fclose(f);
117                          return NULL;
118                  }
119  
120                  fclose(f);
121          } else {
122 +                sg_set_error(SG_ERROR_OPEN, "/proc/stat");
123                  return NULL;
124          }
125   #endif
126   #if defined(FREEBSD) || defined(DFBSD)
127          size = sizeof page_stats.pages_pagein;
128 <        if (sysctlbyname("vm.stats.vm.v_swappgsin", &page_stats.pages_pagein, &size, NULL, 0) < 0){
129 <                return NULL;
130 <        }
128 >        if (sysctlbyname("vm.stats.vm.v_swappgsin", &page_stats.pages_pagein, &size, NULL, 0) < 0){
129 >                sg_set_error(SG_ERROR_SYSCTLBYNAME, "vm.stats.vm.v_swappgsin");
130 >                return NULL;
131 >        }
132          size = sizeof page_stats.pages_pageout;
133 <        if (sysctlbyname("vm.stats.vm.v_swappgsout", &page_stats.pages_pageout, &size, NULL, 0) < 0){
134 <                return NULL;
135 <        }
133 >        if (sysctlbyname("vm.stats.vm.v_swappgsout", &page_stats.pages_pageout, &size, NULL, 0) < 0){
134 >                sg_set_error(SG_ERROR_SYSCTLBYNAME, "vm.stats.vm.v_swappgsout");
135 >                return NULL;
136 >        }
137   #endif
138   #if defined(NETBSD) || defined(OPENBSD)
139          if ((uvm = sg_get_uvmexp()) == NULL) {
# Line 163 | Line 169 | sg_page_stats *sg_get_page_stats_diff(){
169                  return NULL;
170          }
171  
172 <        page_stats_diff.pages_pagein=page_stats.pages_pagein-page_stats_diff.pages_pagein;
173 <        page_stats_diff.pages_pageout=page_stats.pages_pageout-page_stats_diff.pages_pageout;
174 <        page_stats_diff.systime=page_stats.systime-page_stats_diff.systime;
172 >        page_stats_diff.pages_pagein=page_stats.pages_pagein-page_stats_diff.pages_pagein;
173 >        page_stats_diff.pages_pageout=page_stats.pages_pageout-page_stats_diff.pages_pageout;
174 >        page_stats_diff.systime=page_stats.systime-page_stats_diff.systime;
175          
176          return &page_stats_diff;
177   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines