Skip to content
Snippets Groups Projects
Commit 2c842f08 authored by Amin Ben Romdhane's avatar Amin Ben Romdhane
Browse files

Process: Delete Instance refresh handler

parent 711ed361
No related branches found
No related tags found
1 merge request!28Process: Delete Instance refresh handler
Pipeline #199426 passed
...@@ -46,7 +46,6 @@ typedef struct process_ctx { ...@@ -46,7 +46,6 @@ typedef struct process_ctx {
struct uloop_timeout instance_timer; struct uloop_timeout instance_timer;
struct list_head list; struct list_head list;
int refresh_interval; int refresh_interval;
int process_num;
} process_ctx; } process_ctx;
typedef struct cpu_info { typedef struct cpu_info {
...@@ -205,41 +204,10 @@ static void procps_get_cmdline(char *buf, int bufsz, const char *pid, const char ...@@ -205,41 +204,10 @@ static void procps_get_cmdline(char *buf, int bufsz, const char *pid, const char
} }
} }
static void broadcast_add_del_event(int diff)
{
struct blob_buf bb = {0};
char method_name[64] = {0};
// On the first run, add and delete events are managed by the instance refresh mechanism defined in bbfdm
if (g_process_ctx.process_num == 0)
return;
memset(&bb, 0, sizeof(struct blob_buf));
blob_buf_init(&bb, 0);
void *a = blobmsg_open_array(&bb, "instances");
for (int i = 0; i < abs(diff); i++) {
char obj_path[256] = {0};
snprintf(obj_path, sizeof(obj_path), "Device.DeviceInfo.ProcessStatus.Process.%d", (diff > 0) ? g_process_ctx.process_num + i + 1 : g_process_ctx.process_num - i);
blobmsg_add_string(&bb, NULL, obj_path);
BBFDM_DEBUG("#%s:: %s #", (diff > 0) ? "Add" : "Del", obj_path);
}
blobmsg_close_array(&bb, a);
snprintf(method_name, sizeof(method_name), "%s.%s", "bbfdm", (diff > 0) ? "AddObj" : "DelObj");
ubus_send_event(g_process_ctx.ubus_ctx, method_name, bb.head);
blob_buf_free(&bb);
}
static void init_process_list(void) static void init_process_list(void)
{ {
struct dirent *entry = NULL; struct dirent *entry = NULL;
DIR *dir = NULL; DIR *dir = NULL;
unsigned int cur_process_num = 0;
dir = opendir("/proc"); dir = opendir("/proc");
if (dir == NULL) if (dir == NULL)
...@@ -310,7 +278,6 @@ static void init_process_list(void) ...@@ -310,7 +278,6 @@ static void init_process_list(void)
} }
list_add_tail(&pentry->list, &g_process_ctx.list); list_add_tail(&pentry->list, &g_process_ctx.list);
cur_process_num++;
DM_STRNCPY(pentry->pid, entry->d_name, sizeof(pentry->pid)); DM_STRNCPY(pentry->pid, entry->d_name, sizeof(pentry->pid));
DM_STRNCPY(pentry->command, command, sizeof(pentry->command)); DM_STRNCPY(pentry->command, command, sizeof(pentry->command));
...@@ -321,12 +288,6 @@ static void init_process_list(void) ...@@ -321,12 +288,6 @@ static void init_process_list(void)
} }
closedir(dir); closedir(dir);
int diff = cur_process_num - g_process_ctx.process_num;
if (diff) {
broadcast_add_del_event(diff);
g_process_ctx.process_num = cur_process_num;
}
} }
static void free_process_list(void) static void free_process_list(void)
...@@ -587,7 +548,6 @@ void sysmngr_process_init(struct ubus_context *ubus_ctx) ...@@ -587,7 +548,6 @@ void sysmngr_process_init(struct ubus_context *ubus_ctx)
g_process_ctx.refresh_interval = get_instance_refresh_interval(); g_process_ctx.refresh_interval = get_instance_refresh_interval();
g_process_ctx.instance_timer.cb = process_refresh_instance_timer; g_process_ctx.instance_timer.cb = process_refresh_instance_timer;
INIT_LIST_HEAD(&g_process_ctx.list); INIT_LIST_HEAD(&g_process_ctx.list);
g_process_ctx.process_num = 0;
run_refresh_process_list(); run_refresh_process_list();
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment