ideally for debug...
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
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;
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
* - 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;
}
worker->name = "";
+ worker->flags = flags;
worker->channel = talloc_zero_array(worker, fr_channel_t *, max_channels);
if (!worker->channel) {
*/
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);
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);
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);