コード例 #1
0
ファイル: task.c プロジェクト: zhilongC/MyButler
int start_tasks()
{
    BU_UINT32 ulRet = 0;
    int i = 0;

    for(; i < BU_ARRAY_NUM(s_task_info); i++)
    {
        if(s_task_info[i].name[0] != 0
            && s_task_info[i].task_enter_func_p != NULL)
        {

            ulRet = pthread_create(
                    &(s_task_info[i].thread_id), 
                    NULL, 
                    (void* (*)(void*))s_task_info[i].task_enter_func_p, 
                    NULL);   

            if (ulRet)
            {
                E_LOG("'%s' task create fail!\n", s_task_info[i].name);
            }
            else
            {
                I_LOG("'%s' task create success!\n", s_task_info[i].name);
                if(s_task_info[i].queue_head != NULL)
                {
                    msg_list_init(s_task_info[i].queue_head);
                }
            }
        }
    }
    return BU_OK;
}
コード例 #2
0
ファイル: msilo.c プロジェクト: miettal/armadillo420_standard
/**
 * init module function
 */
static int mod_init(void)
{
	load_tm_f  load_tm;

	DBG("MSILO: initializing ...\n");

	/* binding to mysql module  */
	if (bind_dbmod())
	{
		DBG("MSILO: ERROR: Database module not found\n");
		return -1;
	}

	/* import the TM auto-loading function */
	if ( !(load_tm=(load_tm_f)find_export("load_tm", NO_SCRIPT, 0))) {
		LOG(L_ERR, "ERROR: msilo: mod_init: can't import load_tm\n");
		return -1;
	}
	/* let the auto-loading function load all TM stuff */
	if (load_tm( &tmb )==-1)
		return -1;

	ml = msg_list_init();
	if(!ml)
	{
		DBG("ERROR: msilo: mod_init: can't initialize msg list\n");
		return -1;
	}
	register_timer( m_clean_silo, 0, check_time);

	reg_addr.s = registrar;
	reg_addr.len = (registrar)?strlen(registrar):0;

	return 0;
}
コード例 #3
0
ファイル: task.c プロジェクト: zhilongC/MyButler
task_id register_task(task_info_t* task)
{
    BU_UINT32 ulRet = 0;
    BU_UINT32 i = 0;

    if(task == NULL)
    {
        E_LOG("regist task fail, wrong input\n");
        return -1;
    }
    if(task->name[0] == 0 || task->task_enter_func_p == NULL)
    {
        E_LOG("regist task fail, wrong input\n");
        return -1;
    }

    for(; i < BU_ARRAY_NUM(s_task_info); i++)
    {
        if(s_task_info[i].name[0] == 0
            && s_task_info[i].task_enter_func_p == NULL)
        {
            memcpy(&(s_task_info[i]), task, sizeof(task_info_t));

            ulRet = pthread_create(
                    &(s_task_info[i].thread_id), 
                    NULL, 
                    (void* (*)(void*))s_task_info[i].task_enter_func_p, 
                    NULL);   

            if (ulRet)
            {
                E_LOG("'%s' task create fail!\n", s_task_info[i].name);
                return -1;
            }
            else
            {
                I_LOG("'%s' task create success!\n", s_task_info[i].name);
                msg_list_init(s_task_info[i].queue_head);
                return i;
            }
        }
    }
    E_LOG("register task fail,task pool full!\n");
    return -1;
}