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

Comparing projects/libstatgrab/src/libstatgrab/process_stats.c (file contents):
Revision 1.23 by pajs, Sun Mar 28 18:04:14 2004 UTC vs.
Revision 1.24 by pajs, Sun Mar 28 18:22:58 2004 UTC

# Line 60 | Line 60 | int get_proc_snapshot(proc_state_t **ps){
60          proc_state_t *proc_state = NULL;
61          proc_state_t *proc_state_ptr;
62          int proc_state_size = 0;
63 < #if defined(SOLARIS)    
63 > #if defined(SOLARIS) || defined(LINUX)
64          DIR *proc_dir;
65          struct dirent *dir_entry;
66          char filename[MAX_FILE_LENGTH];
67          FILE *f;
68 + #ifdef SOLARIS
69          psinfo_t process_info;
70 + #endif
71  
72          if((proc_dir=opendir(PROC_LOCATION))==NULL){
73                  return NULL;
# Line 74 | Line 76 | int get_proc_snapshot(proc_state_t **ps){
76          while((dir_entry=readdir(proc_dir))!=NULL){
77                  if(atoi(dir_entry->d_name) == 0) continue;
78  
79 + #ifdef SOLARIS
80                  snprintf(filename, MAX_FILE_LENGTH, "/proc/%s/psinfo", dir_entry->d_name);
81 <
81 > #endif
82                  if((f=fopen(filename, "r"))==NULL){
83                          /* Open failed.. Process since vanished, or the path was too long.
84                           * Ah well, move onwards to the next one */
85                          continue;
86                  }
87 + #ifdef SOLARIS
88                  fread(&process_info, sizeof(psinfo_t), 1, f);
89  
90                  proc_state = realloc(proc_state, (1+proc_state_size)*sizeof(proc_state_t));
87
91                  proc_state_ptr = proc_state+proc_state_size;
92                  
93                  proc_state_ptr->pid = process_info.pr_pid;
# Line 100 | Line 103 | int get_proc_snapshot(proc_state_t **ps){
103                  proc_state_ptr->cpu_percent = (process_info.pr_pctcpu * 100.0) / 0x8000;
104                  proc_state_ptr->process_name = strdup(process_info.pr_fname);
105                  proc_state_ptr->proctitle = strdup(process_info.pr_psargs);
106 +
107 +                if(process_info.pr_lwp.pr_state==1) proc_state_ptr->state = SLEEPING;
108 +                if(process_info.pr_lwp.pr_state==2) proc_state_ptr->state = RUNNING;
109 +                if(process_info.pr_lwp.pr_state==3) proc_state_ptr->state = ZOMBIE;
110 +                if(process_info.pr_lwp.pr_state==4) proc_state_ptr->state = STOPPED;
111 +                if(process_info.pr_lwp.pr_state==6) proc_state_ptr->state = RUNNING;
112 + #endif
113  
114                  proc_state_size++;
115   #endif

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines