# endif
/* #endif KERNEL_LINUX */
-#elif HAVE_KVM_H
+#elif HAVE_LIBKVM_GETPROCS
# include <kvm.h>
# include <sys/user.h>
# include <sys/proc.h>
# if HAVE_SYS_SYSCTL_H
# include <sys/sysctl.h>
# endif
-/* #endif HAVE_KVM_H */
+/* #endif HAVE_LIBKVM_GETPROCS */
#else
# error "No applicable input method."
static const char *config_keys[] =
{
"Process",
- "ProcessMatch",
- NULL
+ "ProcessMatch"
};
static int config_keys_num = STATIC_ARRAY_SIZE (config_keys);
#elif KERNEL_LINUX
static long pagesize_g;
-#endif /* KERNEL_LINUX */
+/* #endif KERNEL_LINUX */
+
+#elif HAVE_LIBKVM_GETPROCS
+/* no global variables */
+#endif /* HAVE_LIBKVM_GETPROCS */
/* put name of process from config to list_head_g tree
list_head_g is a list of 'procstat_t' structs with
pagesize_g = sysconf(_SC_PAGESIZE);
DEBUG ("pagesize_g = %li; CONFIG_HZ = %i;",
pagesize_g, CONFIG_HZ);
-#endif /* KERNEL_LINUX */
+/* #endif KERNEL_LINUX */
+
+#elif HAVE_LIBKVM_GETPROCS
+/* no initialization */
+#endif /* HAVE_LIBKVM_GETPROCS */
return (0);
} /* int ps_init */
vl.values = values;
vl.values_len = 1;
vl.time = time (NULL);
- strcpy (vl.host, hostname_g);
- strcpy (vl.plugin, "processes");
- strcpy (vl.plugin_instance, "");
- strcpy (vl.type, "ps_state");
+ sstrncpy (vl.host, hostname_g, sizeof (vl.host));
+ sstrncpy (vl.plugin, "processes", sizeof (vl.plugin));
+ sstrncpy (vl.plugin_instance, "", sizeof (vl.plugin_instance));
+ sstrncpy (vl.type, "ps_state", sizeof (vl.type));
sstrncpy (vl.type_instance, state, sizeof (vl.type_instance));
plugin_dispatch_values (&vl);
vl.values = values;
vl.values_len = 2;
vl.time = time (NULL);
- strcpy (vl.host, hostname_g);
- strcpy (vl.plugin, "processes");
+ sstrncpy (vl.host, hostname_g, sizeof (vl.host));
+ sstrncpy (vl.plugin, "processes", sizeof (vl.plugin));
sstrncpy (vl.plugin_instance, ps->name, sizeof (vl.plugin_instance));
- strcpy (vl.type, "ps_rss");
+ sstrncpy (vl.type, "ps_rss", sizeof (vl.type));
vl.values[0].gauge = ps->vmem_rss;
vl.values_len = 1;
plugin_dispatch_values (&vl);
- strcpy (vl.type, "ps_cputime");
+ sstrncpy (vl.type, "ps_cputime", sizeof (vl.type));
vl.values[0].counter = ps->cpu_user_counter;
vl.values[1].counter = ps->cpu_system_counter;
vl.values_len = 2;
plugin_dispatch_values (&vl);
- strcpy (vl.type, "ps_count");
+ sstrncpy (vl.type, "ps_count", sizeof (vl.type));
vl.values[0].gauge = ps->num_proc;
vl.values[1].gauge = ps->num_lwp;
vl.values_len = 2;
plugin_dispatch_values (&vl);
- strcpy (vl.type, "ps_pagefaults");
+ sstrncpy (vl.type, "ps_pagefaults", sizeof (vl.type));
vl.values[0].counter = ps->vmem_minflt_counter;
vl.values[1].counter = ps->vmem_majflt_counter;
vl.values_len = 2;
{
char filename[64];
char buffer[1024];
- FILE *fh;
char *fields[64];
char fields_len;
ssnprintf (filename, sizeof (filename), "/proc/%i/stat", pid);
- if ((fh = fopen (filename, "r")) == NULL)
+ i = read_file_contents (filename, buffer, sizeof(buffer) - 1);
+ if (i <= 0)
return (-1);
-
- if (fgets (buffer, 1024, fh) == NULL)
- {
- fclose (fh);
- return (-1);
- }
-
- fclose (fh);
+ buffer[i] = 0;
fields_len = strsplit (buffer, fields, 64);
if (fields_len < 24)
* There's only zombie tasks, which are
* handled above. */
default:
- WARNING ("Unknown thread status: %s",
+ WARNING ("Unknown thread status: %i",
thread_data.run_state);
break;
} /* switch (thread_data.run_state) */
ps_submit_proc_list (ps_ptr);
/* #endif KERNEL_LINUX */
-#elif HAVE_LIBKVM
+#elif HAVE_LIBKVM_GETPROCS
int running = 0;
int sleeping = 0;
int zombies = 0;
struct kinfo_proc *procs; /* array of processes */
char **argv;
int count; /* returns number of processes */
- int i, j;
+ int i;
procstat_t *ps_ptr;
procstat_entry_t pse;
for (ps_ptr = list_head_g; ps_ptr != NULL; ps_ptr = ps_ptr->next)
ps_submit_proc_list (ps_ptr);
-#endif /* HAVE_LIBKVM */
+#endif /* HAVE_LIBKVM_GETPROCS */
return (0);
} /* int ps_read */