*
*/
-#include "config.h"
+#include "mem_config.h"
+
+#if defined(HAVE_SYS_TIME_H)
+# include <sys/time.h>
+#endif
+
+#if defined(HAVE_TIME_H)
+# include <time.h>
+#endif
#include "ms_thread.h"
#include "ms_setting.h"
static void ms_set_current_time(void);
static void ms_check_sock_timeout(void);
static void ms_clock_handler(const int fd, const short which, void *arg);
-static int ms_set_thread_cpu_affinity(int cpu);
+static uint32_t ms_set_thread_cpu_affinity(uint32_t cpu);
static int ms_setup_thread(ms_thread_ctx_t *thread_ctx);
static void *ms_worker_libevent(void *arg);
static void ms_create_worker(void *(*func)(void *), void *arg);
ms_conn_t *c= NULL;
int time_diff= 0;
- for (int i= 0; i < ms_thread->thread_ctx->nconns; i++)
+ for (uint32_t i= 0; i < ms_thread->thread_ctx->nconns; i++)
{
c= &ms_thread->conn[i];
static void ms_reconn_thread_socks(void)
{
ms_thread_t *ms_thread= pthread_getspecific(ms_thread_key);
- for (int i= 0; i < ms_thread->thread_ctx->nconns; i++)
+ for (uint32_t i= 0; i < ms_thread->thread_ctx->nconns; i++)
{
ms_reconn_socks(&ms_thread->conn[i]);
}
*
* @param cpu, cpu index
*
- * @return if success, return 0, else return -1
+ * @return if success, return EXIT_SUCCESS, else return -1
*/
-static int ms_set_thread_cpu_affinity(int cpu)
+static uint32_t ms_set_thread_cpu_affinity(uint32_t cpu)
{
- int ret= 0;
+ uint32_t ret= 0;
#ifdef HAVE_CPU_SET_T
cpu_set_t cpu_set;
*
* @param thread_ctx, pointer of the thread context structure
*
- * @return if success, return 0, else return -1
+ * @return if success, return EXIT_SUCCESS, else return -1
*/
static int ms_setup_thread(ms_thread_ctx_t *thread_ctx)
{
}
memset(ms_thread->conn, 0, (size_t)thread_ctx->nconns * sizeof(ms_conn_t));
- for (int i= 0; i < thread_ctx->nconns; i++)
+ for (uint32_t i= 0; i < thread_ctx->nconns; i++)
{
ms_thread->conn[i].conn_idx= i;
if (ms_setup_conn(&ms_thread->conn[i]) != 0)
}
}
- return 0;
+ return EXIT_SUCCESS;
} /* ms_setup_thread */
*/
static void *ms_worker_libevent(void *arg)
{
- ms_thread_t *ms_thread= pthread_getspecific(ms_thread_key);
+ ms_thread_t *ms_thread= NULL;
ms_thread_ctx_t *thread_ctx= (ms_thread_ctx_t *)arg;
/**
/* each thread with a timer */
ms_clock_handler(0, 0, 0);
+ pthread_mutex_lock(&ms_global.init_lock.lock);
+ ms_global.init_lock.count++;
+ pthread_cond_signal(&ms_global.init_lock.cond);
+ pthread_mutex_unlock(&ms_global.init_lock.lock);
+
+ ms_thread= pthread_getspecific(ms_thread_key);
event_base_loop(ms_thread->base, 0);
return NULL;
exit(1);
}
- for (int i= 0; i < ms_setting.nthreads; i++)
+ for (uint32_t i= 0; i < ms_setting.nthreads; i++)
{
ms_thread_ctx[i].thd_idx= i;
ms_thread_ctx[i].nconns= ms_setting.nconns / ms_setting.nthreads;
*/
ms_thread_ctx[i].srv_idx= i % ms_setting.srv_cnt;
ms_thread_ctx[i].tps_perconn= ms_setting.expected_tps
- / ms_setting.nconns;
+ / (int)ms_setting.nconns;
ms_thread_ctx[i].exec_num_perconn= ms_setting.exec_num
/ ms_setting.nconns;
}
exit(1);
}
/* Create threads after we've done all the epoll setup. */
- for (int i= 0; i < ms_setting.nthreads; i++)
+ for (uint32_t i= 0; i < ms_setting.nthreads; i++)
{
ms_create_worker(ms_worker_libevent, (void *)&ms_thread_ctx[i]);
}