Skip to content
Snippets Groups Projects
Commit 3f6f5e56 authored by Ionuț-Alex Oprea's avatar Ionuț-Alex Oprea
Browse files

Merge branch 'processes' into devel refs #14911

parents d3a77fae 577c1cc7
No related branches found
No related tags found
No related merge requests found
...@@ -31,6 +31,7 @@ ...@@ -31,6 +31,7 @@
#include <libubox/blobmsg.h> #include <libubox/blobmsg.h>
#include <libubus.h> #include <libubus.h>
#include <time.h>
#include "system.h" #include "system.h"
#include "tools.h" #include "tools.h"
...@@ -261,7 +262,8 @@ quest_router_processes(struct ubus_context *ctx, struct ubus_object *obj, ...@@ -261,7 +262,8 @@ quest_router_processes(struct ubus_context *ctx, struct ubus_object *obj,
struct ubus_request_data *req, const char *method, struct ubus_request_data *req, const char *method,
struct blob_attr *msg) struct blob_attr *msg)
{ {
FILE *top; int rv;
FILE *top, *input;
char line[1024]; char line[1024];
void *f, *l, *t; void *f, *l, *t;
int pid, ppid, vsz; int pid, ppid, vsz;
...@@ -270,6 +272,13 @@ quest_router_processes(struct ubus_context *ctx, struct ubus_object *obj, ...@@ -270,6 +272,13 @@ quest_router_processes(struct ubus_context *ctx, struct ubus_object *obj,
char vszp[8]; char vszp[8];
char cpup[8]; char cpup[8];
char command[128]; char command[128];
char *procstatfile = NULL;
long priority;
unsigned long utime;
unsigned long stime;
long cutime;
long cstime;
long cputime;
blob_buf_init(&bb, 0); blob_buf_init(&bb, 0);
...@@ -282,6 +291,8 @@ quest_router_processes(struct ubus_context *ctx, struct ubus_object *obj, ...@@ -282,6 +291,8 @@ quest_router_processes(struct ubus_context *ctx, struct ubus_object *obj,
blobmsg_add_string(&bb, "", "%VSZ"); blobmsg_add_string(&bb, "", "%VSZ");
blobmsg_add_string(&bb, "", "%CPU"); blobmsg_add_string(&bb, "", "%CPU");
blobmsg_add_string(&bb, "", "COMMAND"); blobmsg_add_string(&bb, "", "COMMAND");
blobmsg_add_string(&bb, "", "PRIORITY");
blobmsg_add_string(&bb, "", "CPUTIME");
blobmsg_close_array(&bb, f); blobmsg_close_array(&bb, f);
if ((top = popen("top -bn1", "r"))) { if ((top = popen("top -bn1", "r"))) {
...@@ -300,6 +311,23 @@ quest_router_processes(struct ubus_context *ctx, struct ubus_object *obj, ...@@ -300,6 +311,23 @@ quest_router_processes(struct ubus_context *ctx, struct ubus_object *obj,
blobmsg_add_string(&bb, "%VSZ", vszp); blobmsg_add_string(&bb, "%VSZ", vszp);
blobmsg_add_string(&bb, "%CPU", cpup); blobmsg_add_string(&bb, "%CPU", cpup);
blobmsg_add_string(&bb, "COMMAND", command); blobmsg_add_string(&bb, "COMMAND", command);
priority = 0;
cputime = 0;
rv = asprintf(&procstatfile, "/proc/%d/stat", pid);
if (rv != -1) {
input = fopen(procstatfile, "r");
if (input) {
rv = fscanf(input, "%*d %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %lu %lu %ld %ld %ld", &utime, &stime, &cutime, &cstime, &priority);
if (rv == 5)
cputime = ((stime + utime + cstime + cutime) * 1000)/CLOCKS_PER_SEC;
fclose(input);
}
free(procstatfile);
procstatfile = NULL;
}
blobmsg_add_u32(&bb, "PRIORITY", priority);
blobmsg_add_u32(&bb, "CPUTIME", cputime);
blobmsg_close_table(&bb, t); blobmsg_close_table(&bb, t);
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment