"kvm_open")) == NULL) {
CRIT_ERR(NULL, NULL, "cannot read kvm");
}
+ pthread_mutex_init(&kvm_proc_mutex, NULL);
#endif
while (1) {
#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
kvm_close(kd);
+ pthread_mutex_destroy(&kvm_proc_mutex);
#endif
return 0;
{
int n_processes;
+ pthread_mutex_lock(&kvm_proc_mutex);
kvm_getprocs(kd, KERN_PROC_ALL, 0, &n_processes);
+ pthread_mutex_unlock(&kvm_proc_mutex);
info.procs = n_processes;
return 0;
int n_processes;
int i, cnt = 0;
+ pthread_mutex_lock(&kvm_proc_mutex);
p = kvm_getprocs(kd, KERN_PROC_ALL, 0, &n_processes);
for (i = 0; i < n_processes; i++) {
#if (__FreeBSD__ < 5) && (__FreeBSD_kernel__ < 5)
cnt++;
}
}
+ pthread_mutex_unlock(&kvm_proc_mutex);
info.run_procs = cnt;
return 0;
CRIT_ERR(NULL, NULL, "Cannot read sysctl \"vm.stats.vm.v_page_count\"");
}
+ pthread_mutex_lock(&kvm_proc_mutex);
p = kvm_getprocs(kd, KERN_PROC_PROC, 0, &n_processes);
processes = malloc(n_processes * sizeof(struct process));
j++;
}
}
+ pthread_mutex_unlock(&kvm_proc_mutex);
qsort(processes, j - 1, sizeof(struct process), comparemem);
for (i = 0; i < 10 && i < n_processes; i++) {
#include <sys/ucred.h>
#include <fcntl.h>
#include <kvm.h>
+#include <pthread.h>
#if (defined(i386) || defined(__i386__))
#include <machine/apm_bios.h>
#endif /* i386 || __i386__ */
kvm_t *kd;
+pthread_mutex_t kvm_proc_mutex;
int get_entropy_avail(unsigned int *);
int get_entropy_poolsize(unsigned int *);