]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
allow for flags passed to worker.
authorAlan T. DeKok <aland@freeradius.org>
Sun, 18 Jun 2017 18:58:37 +0000 (14:58 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Mon, 19 Jun 2017 13:31:12 +0000 (09:31 -0400)
ideally for debug...

src/lib/io/schedule.c
src/lib/io/worker.c
src/lib/io/worker.h
src/tests/util/radius1_test.c
src/tests/util/worker_test.c

index d4d388c8fea5d25e8a5e0f536c279e7ff8d1cd84..1bd6bb360824ba3f62f046db226a2e516dd904d6 100644 (file)
@@ -132,6 +132,8 @@ struct fr_schedule_t {
        fr_schedule_thread_instantiate_t        worker_thread_instantiate;      //!< thread instantiation callback
        void                                    *worker_instantiate_ctx;        //!< thread instantiation context
 
+       uint32_t        worker_flags;           //!< for debugging the worker
+
        fr_heap_t       *workers;               //!< heap of workers
        fr_heap_t       *done_workers;          //!< heap of done workers
 
@@ -206,7 +208,7 @@ static void *fr_schedule_worker_thread(void *arg)
                goto fail;
        }
 
-       sw->worker = fr_worker_create(ctx, sc->log);
+       sw->worker = fr_worker_create(ctx, sc->log, sc->worker_flags);
        if (!sw->worker) {
                fr_log(sc->log, L_ERR, "Worker %d - Failed creating worker: %s", sw->id, fr_strerror());
                goto fail;
index d7b4056c217a10d2ab1809dfb8378199a47d3268..fe697f2e7bea4fa2aff26dae64f0eca6ec5fa8b9 100644 (file)
@@ -81,6 +81,8 @@ typedef struct fr_worker_heap_t {
 struct fr_worker_t {
        char const              *name;          //!< name of this worker
 
+       uint32_t                flags;          //!< various debugging options, etc.
+
        int                     kq;             //!< my kq
 
        fr_log_t                *log;                   //!< log destination
@@ -996,7 +998,7 @@ void fr_worker_destroy(fr_worker_t *worker)
  *     - NULL on error
  *     - fr_worker_t on success
  */
-fr_worker_t *fr_worker_create(TALLOC_CTX *ctx, fr_log_t *logger)
+fr_worker_t *fr_worker_create(TALLOC_CTX *ctx, fr_log_t *logger, uint32_t flags)
 {
        int max_channels = 64;
        fr_worker_t *worker;
@@ -1009,6 +1011,7 @@ nomem:
        }
 
        worker->name = "";
+       worker->flags = flags;
 
        worker->channel = talloc_zero_array(worker, fr_channel_t *, max_channels);
        if (!worker->channel) {
index e1428cdd11c24db3b928916aefe642913d4ed9ff..c54735a1017d6db81fa722ba8a3a9648db392f3c 100644 (file)
@@ -44,7 +44,7 @@ extern "C" {
  */
 typedef struct fr_worker_t fr_worker_t;
 
-fr_worker_t *fr_worker_create(TALLOC_CTX *ctx, fr_log_t *logger);
+fr_worker_t *fr_worker_create(TALLOC_CTX *ctx, fr_log_t *logger, uint32_t flags);
 void fr_worker_destroy(fr_worker_t *worker) CC_HINT(nonnull);
 int fr_worker_kq(fr_worker_t *worker) CC_HINT(nonnull);
 fr_event_list_t *fr_worker_el(fr_worker_t *worker) CC_HINT(nonnull);
index 44b5078302ec914cff3a8e03776d5733e1b5c4ae..6116fc30efaa8cde4180fd0e432f379e499daca2 100644 (file)
@@ -159,7 +159,7 @@ static void *worker_thread(void *arg)
        ctx = talloc_init("worker");
        if (!ctx) _exit(1);
 
-       worker = sw->worker = fr_worker_create(ctx, &default_log);
+       worker = sw->worker = fr_worker_create(ctx, &default_log, ~0);
        if (!worker) {
                fprintf(stderr, "radius_test: Failed to create the worker\n");
                exit(1);
index 596eb88a6fc43e53f6f667c8933899e8c4c84a6a..3e0716859fc8364fcc924169d4f2980688a60b7b 100644 (file)
@@ -162,7 +162,7 @@ static void *worker_thread(void *arg)
        ctx = talloc_init("worker");
        if (!ctx) _exit(1);
 
-       worker = sw->worker = fr_worker_create(ctx, &default_log);
+       worker = sw->worker = fr_worker_create(ctx, &default_log, ~0);
        if (!worker) {
                fprintf(stderr, "worker_test: Failed to create the worker\n");
                exit(1);