Introduce private worker header
This commit is contained in:
@ -37,14 +37,6 @@ enum mxs_worker_msg_id
|
|||||||
MXS_WORKER_MSG_PING
|
MXS_WORKER_MSG_PING
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* Initialize the worker mechanism.
|
|
||||||
*
|
|
||||||
* To be called once at process startup. This will cause as many workers
|
|
||||||
* to be created as the number of threads defined.
|
|
||||||
*/
|
|
||||||
void mxs_worker_init();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the worker associated with the provided worker id.
|
* Return the worker associated with the provided worker id.
|
||||||
*
|
*
|
||||||
|
@ -68,7 +68,6 @@
|
|||||||
#include <maxscale/utils.h>
|
#include <maxscale/utils.h>
|
||||||
#include <maxscale/version.h>
|
#include <maxscale/version.h>
|
||||||
#include <maxscale/random_jkiss.h>
|
#include <maxscale/random_jkiss.h>
|
||||||
#include <maxscale/worker.h>
|
|
||||||
|
|
||||||
#include "maxscale/config.h"
|
#include "maxscale/config.h"
|
||||||
#include "maxscale/dcb.h"
|
#include "maxscale/dcb.h"
|
||||||
@ -78,6 +77,7 @@
|
|||||||
#include "maxscale/poll.h"
|
#include "maxscale/poll.h"
|
||||||
#include "maxscale/service.h"
|
#include "maxscale/service.h"
|
||||||
#include "maxscale/statistics.h"
|
#include "maxscale/statistics.h"
|
||||||
|
#include "maxscale/worker.h"
|
||||||
|
|
||||||
#define STRING_BUFFER_SIZE 1024
|
#define STRING_BUFFER_SIZE 1024
|
||||||
#define PIDFD_CLOSED -1
|
#define PIDFD_CLOSED -1
|
||||||
|
27
server/core/maxscale/worker.h
Normal file
27
server/core/maxscale/worker.h
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
#pragma once
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2016 MariaDB Corporation Ab
|
||||||
|
*
|
||||||
|
* Use of this software is governed by the Business Source License included
|
||||||
|
* in the LICENSE.TXT file and at www.mariadb.com/bsl11.
|
||||||
|
*
|
||||||
|
* Change Date: 2019-07-01
|
||||||
|
*
|
||||||
|
* On the date above, in accordance with the Business Source License, use
|
||||||
|
* of this software will be governed by version 2 or later of the General
|
||||||
|
* Public License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <maxscale/worker.h>
|
||||||
|
|
||||||
|
MXS_BEGIN_DECLS
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize the worker mechanism.
|
||||||
|
*
|
||||||
|
* To be called once at process startup. This will cause as many workers
|
||||||
|
* to be created as the number of threads defined.
|
||||||
|
*/
|
||||||
|
void mxs_worker_init();
|
||||||
|
|
||||||
|
MXS_END_DECLS
|
@ -11,7 +11,7 @@
|
|||||||
* Public License.
|
* Public License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <maxscale/worker.h>
|
#include "maxscale/worker.h"
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@ -20,24 +20,32 @@
|
|||||||
#include <maxscale/config.h>
|
#include <maxscale/config.h>
|
||||||
#include <maxscale/log_manager.h>
|
#include <maxscale/log_manager.h>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unit variables.
|
||||||
|
*/
|
||||||
static struct worker_unit
|
static struct worker_unit
|
||||||
{
|
{
|
||||||
int n_workers;
|
int n_workers;
|
||||||
MXS_WORKER** workers;
|
MXS_WORKER** workers;
|
||||||
} this_unit;
|
} this_unit;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Structure used for sending cross-thread messages.
|
||||||
|
*/
|
||||||
typedef struct worker_message
|
typedef struct worker_message
|
||||||
{
|
{
|
||||||
int id;
|
int id; /*< Message id. */
|
||||||
int64_t arg1;
|
int64_t arg1; /*< Message specific first argument. */
|
||||||
void* arg2;
|
void* arg2; /*< Message specific second argument. */
|
||||||
} WORKER_MESSAGE;
|
} WORKER_MESSAGE;
|
||||||
|
|
||||||
|
|
||||||
static MXS_WORKER* worker_create(int worker_id);
|
static MXS_WORKER* worker_create(int worker_id);
|
||||||
static void worker_free(MXS_WORKER* worker);
|
static void worker_free(MXS_WORKER* worker);
|
||||||
static void worker_message_handler(MXS_WORKER* worker, int msg_id, int64_t arg1, void* arg2);
|
static void worker_message_handler(MXS_WORKER* worker, int msg_id, int64_t arg1, void* arg2);
|
||||||
static uint32_t worker_poll_handler(MXS_POLL_DATA *data, int worker_id, uint32_t events);
|
static uint32_t worker_poll_handler(MXS_POLL_DATA *data, int worker_id, uint32_t events);
|
||||||
|
|
||||||
|
|
||||||
void mxs_worker_init()
|
void mxs_worker_init()
|
||||||
{
|
{
|
||||||
this_unit.n_workers = config_threadcount();
|
this_unit.n_workers = config_threadcount();
|
||||||
|
Reference in New Issue
Block a user