Lines Matching refs:p

49 static void mod_rrd_free_config(plugin_data * const p) {  in mod_rrd_free_config()  argument
50 if (NULL == p->cvlist) return; in mod_rrd_free_config()
52 for (int i = !p->cvlist[0].v.u2[1], used = p->nconfig; i < used; ++i) { in mod_rrd_free_config()
53 config_plugin_value_t *cpv = p->cvlist + p->cvlist[i].v.u2[0]; in mod_rrd_free_config()
67 plugin_data *p = p_d; in FREE_FUNC() local
68 if (NULL == p->srv) return; in FREE_FUNC()
69 mod_rrd_free_config(p); in FREE_FUNC()
71 if (p->read_fd >= 0) close(p->read_fd); in FREE_FUNC()
72 if (p->write_fd >= 0) close(p->write_fd); in FREE_FUNC()
73 if (p->rrdtool_pid > 0 && p->srv_pid == p->srv->pid) { in FREE_FUNC()
75 fdevent_waitpid(p->rrdtool_pid, NULL, 0); in FREE_FUNC()
79 static int mod_rrd_create_pipe(server *srv, plugin_data *p) { in mod_rrd_create_pipe() argument
100 const char * const path_rrdtool_bin = p->path_rrdtool_bin in mod_rrd_create_pipe()
101 ? p->path_rrdtool_bin->ptr in mod_rrd_create_pipe()
107 …p->rrdtool_pid = fdevent_fork_execve(args[0], args, NULL, to_rrdtool_fds[0], from_rrdtool_fds[1], … in mod_rrd_create_pipe()
109 if (-1 != p->rrdtool_pid) { in mod_rrd_create_pipe()
112 if (p->read_fd >= 0) close(p->read_fd); in mod_rrd_create_pipe()
113 if (p->write_fd >= 0) close(p->write_fd); in mod_rrd_create_pipe()
114 p->write_fd = to_rrdtool_fds[1]; in mod_rrd_create_pipe()
115 p->read_fd = from_rrdtool_fds[0]; in mod_rrd_create_pipe()
116 p->srv_pid = srv->pid; in mod_rrd_create_pipe()
130 static int mod_rrd_exec(server *srv, plugin_data *p) { in mod_rrd_exec() argument
131 return (p->rrdtool_running = mod_rrd_create_pipe(srv, p)); in mod_rrd_exec()
152 static void mod_rrd_patch_config(request_st * const r, plugin_data * const p) { in mod_rrd_patch_config() argument
153 p->conf = p->defaults; /* copy small struct instead of memcpy() */ in mod_rrd_patch_config()
155 for (int i = 1, used = p->nconfig; i < used; ++i) { in mod_rrd_patch_config()
156 if (config_check_cond(r, (uint32_t)p->cvlist[i].k_id)) in mod_rrd_patch_config()
157 mod_rrd_merge_config(&p->conf, p->cvlist + p->cvlist[i].v.u2[0]); in mod_rrd_patch_config()
174 plugin_data * const p = p_d; in SETDEFAULTS_FUNC() local
175 p->srv = srv; in SETDEFAULTS_FUNC()
176 if (!config_plugin_values_init(srv, p, cpk, "mod_rrdtool")) in SETDEFAULTS_FUNC()
183 for (int i = !p->cvlist[0].v.u2[1]; i < p->nconfig; ++i) { in SETDEFAULTS_FUNC()
184 config_plugin_value_t *cpv = p->cvlist + p->cvlist[i].v.u2[0]; in SETDEFAULTS_FUNC()
198 p->path_rrdtool_bin = cpv->v.b; /*(store directly in p)*/ in SETDEFAULTS_FUNC()
207 if (p->nconfig > 0 && p->cvlist->v.u2[1]) { in SETDEFAULTS_FUNC()
208 const config_plugin_value_t *cpv = p->cvlist + p->cvlist->v.u2[0]; in SETDEFAULTS_FUNC()
210 mod_rrd_merge_config(&p->defaults, cpv); in SETDEFAULTS_FUNC()
213 p->rrdtool_running = 0; in SETDEFAULTS_FUNC()
214 p->read_fd = -1; in SETDEFAULTS_FUNC()
215 p->write_fd = -1; in SETDEFAULTS_FUNC()
217 return (!activate || mod_rrd_exec(srv, p)) ? HANDLER_GO_ON : HANDLER_ERROR; in SETDEFAULTS_FUNC()
257 static int mod_rrdtool_create_rrd(server *srv, plugin_data *p, rrd_config *s, char *resp, size_t re… in mod_rrdtool_create_rrd() argument
299 if (-1 == (safe_write(p->write_fd, BUF_PTR_LEN(cmd)))) { in mod_rrdtool_create_rrd()
304 if (-1 == safe_read(p->read_fd, resp, respsz)) { in mod_rrdtool_create_rrd()
319 static int mod_rrd_fatal_error(plugin_data *p) { in mod_rrd_fatal_error() argument
321 p->rrdtool_running = 0; in mod_rrd_fatal_error()
326 static int mod_rrd_write_data(server *srv, plugin_data *p, rrd_config *s) { in mod_rrd_write_data() argument
329 if (HANDLER_GO_ON != mod_rrdtool_create_rrd(srv, p, s, resp, sizeof(resp))) in mod_rrd_write_data()
344 if (-1 == safe_write(p->write_fd, BUF_PTR_LEN(cmd))) { in mod_rrd_write_data()
346 return mod_rrd_fatal_error(p); in mod_rrd_write_data()
349 if (-1 == safe_read(p->read_fd, resp, sizeof(resp))) { in mod_rrd_write_data()
351 return mod_rrd_fatal_error(p); in mod_rrd_write_data()
365 return mod_rrd_fatal_error(p); in mod_rrd_write_data()
371 static void mod_rrd_write_data_loop(server *srv, plugin_data *p) { in mod_rrd_write_data_loop() argument
374 for (int i = !p->cvlist[0].v.u2[1]; i < p->nconfig; ++i) { in mod_rrd_write_data_loop()
375 config_plugin_value_t *cpv = p->cvlist + p->cvlist[i].v.u2[0]; in mod_rrd_write_data_loop()
380 mod_rrd_write_data(srv, p, cpv->v.v); in mod_rrd_write_data_loop()
381 if (!p->rrdtool_running) return; in mod_rrd_write_data_loop()
389 plugin_data *p = p_d; in TRIGGER_FUNC() local
391 if (0 == p->rrdtool_pid) return HANDLER_GO_ON; in TRIGGER_FUNC()
396 if (!p->rrdtool_running) { in TRIGGER_FUNC()
397 if (srv->pid != p->srv_pid) return HANDLER_GO_ON; in TRIGGER_FUNC()
399 if (!mod_rrd_exec(srv, p)) return HANDLER_GO_ON; in TRIGGER_FUNC()
402 mod_rrd_write_data_loop(srv, p); in TRIGGER_FUNC()
407 plugin_data *p = p_d; in mod_rrd_waitpid_cb() local
408 if (pid != p->rrdtool_pid) return HANDLER_GO_ON; in mod_rrd_waitpid_cb()
409 if (srv->pid != p->srv_pid) return HANDLER_GO_ON; in mod_rrd_waitpid_cb()
411 p->rrdtool_running = 0; in mod_rrd_waitpid_cb()
412 p->rrdtool_pid = -1; in mod_rrd_waitpid_cb()
419 plugin_data *p = p_d; in REQUESTDONE_FUNC() local
421 if (0 == p->rrdtool_pid) return HANDLER_GO_ON; in REQUESTDONE_FUNC()
423 mod_rrd_patch_config(r, p); in REQUESTDONE_FUNC()
424 rrd_config * const rrd = p->conf.rrd; in REQUESTDONE_FUNC()
435 int mod_rrdtool_plugin_init(plugin *p);
436 int mod_rrdtool_plugin_init(plugin *p) { in mod_rrdtool_plugin_init() argument
437 p->version = LIGHTTPD_VERSION_ID; in mod_rrdtool_plugin_init()
438 p->name = "rrd"; in mod_rrdtool_plugin_init()
440 p->init = mod_rrd_init; in mod_rrdtool_plugin_init()
441 p->cleanup = mod_rrd_free; in mod_rrdtool_plugin_init()
442 p->set_defaults= mod_rrd_set_defaults; in mod_rrdtool_plugin_init()
444 p->handle_trigger = mod_rrd_trigger; in mod_rrdtool_plugin_init()
445 p->handle_waitpid = mod_rrd_waitpid_cb; in mod_rrdtool_plugin_init()
446 p->handle_request_done = mod_rrd_account; in mod_rrdtool_plugin_init()