OpenBSD: Use process argument list.
This commit is contained in:
parent
42dd49f3c1
commit
6dd238dcc1
|
@ -332,8 +332,10 @@ proc_info_by_pid(int pid)
|
|||
{
|
||||
struct kinfo_proc *kp;
|
||||
kvm_t *kern;
|
||||
char **args;
|
||||
char errbuf[_POSIX2_LINE_MAX];
|
||||
int count, pagesize, pid_count;
|
||||
Eina_Bool have_command = EINA_FALSE;
|
||||
|
||||
kern = kvm_openfiles(NULL, NULL, NULL, KVM_NO_FILES, errbuf);
|
||||
if (!kern) return NULL;
|
||||
|
@ -350,7 +352,6 @@ proc_info_by_pid(int pid)
|
|||
p->pid = kp->p_pid;
|
||||
p->uid = kp->p_uid;
|
||||
p->cpu_id = kp->p_cpuid;
|
||||
snprintf(p->command, sizeof(p->command), "%s", kp->p_comm);
|
||||
p->state = _process_state_name(kp->p_stat);
|
||||
p->cpu_time = kp->p_uticks + kp->p_sticks + kp->p_iticks;
|
||||
p->mem_size = (kp->p_vm_tsize * pagesize) + (kp->p_vm_dsize * pagesize) + (kp->p_vm_ssize * pagesize);
|
||||
|
@ -359,6 +360,17 @@ proc_info_by_pid(int pid)
|
|||
p->nice = kp->p_nice - NZERO;
|
||||
p->numthreads = -1;
|
||||
|
||||
if ((args = kvm_getargv(kern, kp, sizeof(p->command)-1)))
|
||||
{
|
||||
if (args[0])
|
||||
{
|
||||
snprintf(p->command, sizeof(p->command), "%s", args[0]);
|
||||
have_command = EINA_TRUE;
|
||||
}
|
||||
}
|
||||
if (!have_command)
|
||||
snprintf(p->command, sizeof(p->command), "%s", kp->p_comm);
|
||||
|
||||
kp = kvm_getprocs(kern, KERN_PROC_SHOW_THREADS, 0, sizeof(*kp), &pid_count);
|
||||
|
||||
for (int i = 0; i < pid_count; i++)
|
||||
|
@ -375,18 +387,18 @@ proc_info_by_pid(int pid)
|
|||
static Eina_List *
|
||||
_process_list_openbsd_get(void)
|
||||
{
|
||||
struct kinfo_proc *kp;
|
||||
struct kinfo_proc *kps, *kp;
|
||||
Proc_Info *p;
|
||||
char errbuf[4096];
|
||||
kvm_t *kern;
|
||||
int pid_count, pagesize;
|
||||
Eina_List *l, *list = NULL;
|
||||
Eina_List *list = NULL;
|
||||
|
||||
kern = kvm_openfiles(NULL, NULL, NULL, KVM_NO_FILES, errbuf);
|
||||
if (!kern) return NULL;
|
||||
|
||||
kp = kvm_getprocs(kern, KERN_PROC_ALL, 0, sizeof(*kp), &pid_count);
|
||||
if (!kp) return NULL;
|
||||
kps = kvm_getprocs(kern, KERN_PROC_ALL, 0, sizeof(*kps), &pid_count);
|
||||
if (!kps) return NULL;
|
||||
|
||||
pagesize = getpagesize();
|
||||
|
||||
|
@ -395,20 +407,28 @@ _process_list_openbsd_get(void)
|
|||
p = calloc(1, sizeof(Proc_Info));
|
||||
if (!p) return NULL;
|
||||
|
||||
p->pid = kp[i].p_pid;
|
||||
p->uid = kp[i].p_uid;
|
||||
p->cpu_id = kp[i].p_cpuid;
|
||||
snprintf(p->command, sizeof(p->command), "%s", kp[i].p_comm);
|
||||
p->state = _process_state_name(kp[i].p_stat);
|
||||
p->cpu_time = kp[i].p_uticks + kp[i].p_sticks + kp[i].p_iticks;
|
||||
p->mem_size = (kp[i].p_vm_tsize * pagesize) + (kp[i].p_vm_dsize * pagesize) + (kp[i].p_vm_ssize * pagesize);
|
||||
p->mem_rss = kp[i].p_vm_rssize * pagesize;
|
||||
p->priority = kp[i].p_priority - PZERO;
|
||||
p->nice = kp[i].p_nice - NZERO;
|
||||
kp = &kps[i];
|
||||
p->pid = kp->p_pid;
|
||||
p->uid = kp->p_uid;
|
||||
p->cpu_id = kp->p_cpuid;
|
||||
p->state = _process_state_name(kp->p_stat);
|
||||
p->cpu_time = kp->p_uticks + kp->p_sticks + kp->p_iticks;
|
||||
p->mem_size = (kp->p_vm_tsize * pagesize) + (kp->p_vm_dsize * pagesize) + (kp->p_vm_ssize * pagesize);
|
||||
p->mem_rss = kp->p_vm_rssize * pagesize;
|
||||
p->priority = kp->p_priority - PZERO;
|
||||
p->nice = kp->p_nice - NZERO;
|
||||
p->numthreads = -1;
|
||||
|
||||
snprintf(p->command, sizeof(p->command), "%s", kp->p_comm);
|
||||
|
||||
list = eina_list_append(list, p);
|
||||
}
|
||||
|
||||
/* We don't need to count the threads for our usage in Evisum.
|
||||
|
||||
If necessary this can be re-enabled. Our single process query is
|
||||
sufficient.
|
||||
|
||||
kp = kvm_getprocs(kern, KERN_PROC_SHOW_THREADS, 0, sizeof(*kp), &pid_count);
|
||||
|
||||
EINA_LIST_FOREACH(list, l, p)
|
||||
|
@ -419,6 +439,7 @@ _process_list_openbsd_get(void)
|
|||
p->numthreads++;
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
kvm_close(kern);
|
||||
|
||||
|
|
|
@ -568,6 +568,7 @@ _memory_usage_get(meminfo_t *memory)
|
|||
struct uvmexp uvmexp;
|
||||
int nswap, rnswap;
|
||||
struct swapent *swdev = NULL;
|
||||
(void) miblen;
|
||||
|
||||
len = sizeof(memory->total);
|
||||
if (sysctl(mib, 2, &memory->total, &len, NULL, 0) == -1)
|
||||
|
|
|
@ -1912,7 +1912,7 @@ _ui_process_panel_add(Ui *ui)
|
|||
elm_box_pack_end(hbox, frame);
|
||||
|
||||
label = elm_label_add(parent);
|
||||
elm_object_text_set(label, "Name:");
|
||||
elm_object_text_set(label, "Command:");
|
||||
evas_object_show(label);
|
||||
elm_table_pack(table, label, 0, 0, 1, 1);
|
||||
|
||||
|
|
Loading…
Reference in New Issue