6 instance_start(struct service_instance *in)
12 instance_timeout(struct uloop_timeout *t)
14 struct service_instance *in;
16 in = container_of(t, struct service_instance, timeout);
17 kill(in->proc.pid, SIGKILL);
18 uloop_process_delete(&in->proc);
19 in->proc.cb(&in->proc, -1);
23 instance_exit(struct uloop_process *p, int ret)
25 struct service_instance *in;
27 in = container_of(p, struct service_instance, proc);
28 uloop_timeout_cancel(&in->timeout);
34 instance_stop(struct service_instance *in, bool restart)
36 if (!in->proc.pending)
39 kill(in->proc.pid, SIGTERM);
43 instance_config_changed(struct service_instance *in, struct service_instance *in_new)
45 int len = blob_pad_len(in->config);
47 if (len != blob_pad_len(in_new->config))
50 if (memcmp(in->config, in_new->config, blob_pad_len(in->config)) != 0)
57 instance_update(struct service_instance *in, struct service_instance *in_new)
59 bool changed = instance_config_changed(in, in_new);
61 in->config = in_new->config;
65 instance_stop(in, true);
70 instance_free(struct service_instance *in)
72 uloop_process_delete(&in->proc);
73 uloop_timeout_cancel(&in->timeout);
78 instance_init(struct service_instance *in, struct blob_attr *config)
81 in->timeout.cb = instance_timeout;
82 in->proc.cb = instance_exit;