diff --git a/pgworker/pgworker/pg_worker.c b/pgworker/pgworker/pg_worker.c index 4273705..9e6f280 100644 --- a/pgworker/pgworker/pg_worker.c +++ b/pgworker/pgworker/pg_worker.c @@ -26,20 +26,22 @@ #include #include "htmalloc.h" +#include "smmapd.h" int pg_worker_init(cfgl_t *cfg, void **handle); -int pg_worker_setup(void *handle, void **work_handle); -int pg_worker_destroy(void *handle, void *work_handle); +int pg_worker_destroy(void *handle); +int pg_worker_work_setup(void *handle, void **work_handle); +int pg_worker_work_destroy(void *handle, void *work_handle); int pg_worker_work(void *handle, void *work_handle, char *input, char *output); class_descriptor_t pgworker = { "pgworker", &pg_worker_init, - NULL, - &pg_worker_setup, + &pg_worker_destroy, + &pg_worker_work_setup, &pg_worker_work, - &pg_worker_destroy + &pg_worker_work_destroy }; @@ -60,14 +62,20 @@ int pg_worker_init(cfgl_t *cfg, void **handle) { return 0; } -int pg_worker_setup(void *handle, void **work_handle) { +int pg_worker_destroy(void *handle) { + pg_container_handle_t *pch = (pg_container_handle_t*)handle; + free(pch); + return 0; +} + +int pg_worker_work_setup(void *handle, void **work_handle) { pg_worker_handle_t *pwh = (pg_worker_handle_t*)htmalloc(sizeof(pg_worker_handle_t)); pwh->counter = 0; *work_handle = pwh; return 0; } -int pg_worker_destroy(void *handle, void *work_handle) { +int pg_worker_work_destroy(void *handle, void *work_handle) { syslog(LOG_DEBUG, "pg_worker_destroy: freeing the worker handle"); free(work_handle); } @@ -77,7 +85,7 @@ int pg_worker_work(void *handle, void *work_handle, char *input, char *output) { pg_worker_handle_t *pwh = (pg_worker_handle_t*) work_handle; sprintf(output, "pg-worker receives %s (pch %p, pwh %p) (called %d)\n", input, pch, pwh, pwh->counter++); - return 0; + return SMM_OK; }