task init callback support extra argument
parent
2ab381d5e3
commit
1b777792ab
3
HISTORY
3
HISTORY
|
|
@ -1,4 +1,7 @@
|
||||||
|
|
||||||
|
Version 1.75 2024-09-15
|
||||||
|
* task init callback support extra argument
|
||||||
|
|
||||||
Version 1.74 2024-05-18
|
Version 1.74 2024-05-18
|
||||||
* add functions: get_log_level and get_log_level_caption
|
* add functions: get_log_level and get_log_level_caption
|
||||||
* adapt to FreeBSD 13
|
* adapt to FreeBSD 13
|
||||||
|
|
|
||||||
|
|
@ -53,7 +53,7 @@ static int task_alloc_init(struct fast_task_info *task,
|
||||||
|
|
||||||
task->free_queue = queue;
|
task->free_queue = queue;
|
||||||
if (queue->init_callback != NULL) {
|
if (queue->init_callback != NULL) {
|
||||||
return queue->init_callback(task);
|
return queue->init_callback(task, queue->init_arg);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
@ -62,7 +62,8 @@ int free_queue_init_ex2(struct fast_task_queue *queue, const char *name,
|
||||||
const bool double_buffers, const int max_connections,
|
const bool double_buffers, const int max_connections,
|
||||||
const int alloc_task_once, const int min_buff_size,
|
const int alloc_task_once, const int min_buff_size,
|
||||||
const int max_buff_size, const int padding_size,
|
const int max_buff_size, const int padding_size,
|
||||||
const int arg_size, TaskInitCallback init_callback)
|
const int arg_size, TaskInitCallback init_callback,
|
||||||
|
void *init_arg)
|
||||||
{
|
{
|
||||||
#define MAX_DATA_SIZE (256 * 1024 * 1024)
|
#define MAX_DATA_SIZE (256 * 1024 * 1024)
|
||||||
int alloc_once;
|
int alloc_once;
|
||||||
|
|
@ -127,6 +128,7 @@ int free_queue_init_ex2(struct fast_task_queue *queue, const char *name,
|
||||||
queue->padding_size = aligned_padding_size;
|
queue->padding_size = aligned_padding_size;
|
||||||
queue->arg_size = aligned_arg_size;
|
queue->arg_size = aligned_arg_size;
|
||||||
queue->init_callback = init_callback;
|
queue->init_callback = init_callback;
|
||||||
|
queue->init_arg = init_arg;
|
||||||
queue->release_callback = NULL;
|
queue->release_callback = NULL;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ struct fast_task_info;
|
||||||
typedef int (*ThreadLoopCallback) (struct nio_thread_data *pThreadData);
|
typedef int (*ThreadLoopCallback) (struct nio_thread_data *pThreadData);
|
||||||
typedef int (*TaskFinishCallback) (struct fast_task_info *task);
|
typedef int (*TaskFinishCallback) (struct fast_task_info *task);
|
||||||
typedef void (*TaskCleanUpCallback) (struct fast_task_info *task);
|
typedef void (*TaskCleanUpCallback) (struct fast_task_info *task);
|
||||||
typedef int (*TaskInitCallback)(struct fast_task_info *task);
|
typedef int (*TaskInitCallback)(struct fast_task_info *task, void *arg);
|
||||||
typedef void (*TaskReleaseCallback)(struct fast_task_info *task);
|
typedef void (*TaskReleaseCallback)(struct fast_task_info *task);
|
||||||
|
|
||||||
typedef void (*IOEventCallback) (int sock, short event, void *arg);
|
typedef void (*IOEventCallback) (int sock, short event, void *arg);
|
||||||
|
|
@ -155,6 +155,7 @@ struct fast_task_queue
|
||||||
bool double_buffers; //if send buffer and recv buffer are independent
|
bool double_buffers; //if send buffer and recv buffer are independent
|
||||||
struct fast_mblock_man allocator;
|
struct fast_mblock_man allocator;
|
||||||
TaskInitCallback init_callback;
|
TaskInitCallback init_callback;
|
||||||
|
void *init_arg;
|
||||||
TaskReleaseCallback release_callback;
|
TaskReleaseCallback release_callback;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -166,7 +167,8 @@ int free_queue_init_ex2(struct fast_task_queue *queue, const char *name,
|
||||||
const bool double_buffers, const int max_connections,
|
const bool double_buffers, const int max_connections,
|
||||||
const int alloc_task_once, const int min_buff_size,
|
const int alloc_task_once, const int min_buff_size,
|
||||||
const int max_buff_size, const int padding_size,
|
const int max_buff_size, const int padding_size,
|
||||||
const int arg_size, TaskInitCallback init_callback);
|
const int arg_size, TaskInitCallback init_callback,
|
||||||
|
void *init_arg);
|
||||||
|
|
||||||
static inline int free_queue_init_ex(struct fast_task_queue *queue,
|
static inline int free_queue_init_ex(struct fast_task_queue *queue,
|
||||||
const char *name, const bool double_buffers,
|
const char *name, const bool double_buffers,
|
||||||
|
|
@ -177,7 +179,7 @@ static inline int free_queue_init_ex(struct fast_task_queue *queue,
|
||||||
const int padding_size = 0;
|
const int padding_size = 0;
|
||||||
return free_queue_init_ex2(queue, name, double_buffers, max_connections,
|
return free_queue_init_ex2(queue, name, double_buffers, max_connections,
|
||||||
alloc_task_once, min_buff_size, max_buff_size, padding_size,
|
alloc_task_once, min_buff_size, max_buff_size, padding_size,
|
||||||
arg_size, NULL);
|
arg_size, NULL, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int free_queue_init(struct fast_task_queue *queue,
|
static inline int free_queue_init(struct fast_task_queue *queue,
|
||||||
|
|
|
||||||
|
|
@ -1798,7 +1798,9 @@ struct ibv_pd *fc_alloc_rdma_pd(fc_alloc_pd_callback alloc_pd,
|
||||||
}
|
}
|
||||||
|
|
||||||
end = address_array->addrs + address_array->count;
|
end = address_array->addrs + address_array->count;
|
||||||
for (addr=address_array->addrs, ip_addr=ip_addrs; addr<end; addr++) {
|
for (addr=address_array->addrs, ip_addr=ip_addrs;
|
||||||
|
addr<end; addr++, ip_addr++)
|
||||||
|
{
|
||||||
*ip_addr = (*addr)->conn.ip_addr;
|
*ip_addr = (*addr)->conn.ip_addr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue