Exemplo n.º 1
0
int main(void)
{
	int ret;
	pthread_t id;                             //创建线程
	pthread_attr_t thread_attr;               //设置线程属性
	
	ret = pthread_attr_init(&thread_attr);  
	Error_print(ret,"Init error\n");

	ret = pthread_attr_setdetachstate(&thread_attr, PTHREAD_CREATE_DETACHED);  //设线程属性为脱离,线程结束后不需要返回,能在后台与主线同时执行 
	Error_print(ret,"Init error\n");

	ret = pthread_mutex_init(&mutex,NULL);
	Error_print(ret,"Init error\n");
	
	ret = pthread_create(&id, &thread_attr,thread_play_0,NULL);
	Error_print(ret,"Create error\n");
	
	while(scanf("%s",buffer)) {                     //设置恢复和退出条件
		if(strncmp("stop",buffer,LENTH) == 0) {      //退出
			pthread_mutex_lock(&mutex); 
		        printf("-------Goodbye-------\n");
			sleep(1);  
			break;
		}
		if(strncmp("start",buffer,TIMER) == 0) {      //恢复线程
			pthread_mutex_lock(&mutex);
			pthread_cond_signal(&cond);
			pthread_mutex_unlock(&mutex);
			sleep(1);
		}
	}

    	exit(EXIT_SUCCESS);
}
/*
 *  ======== AppMain_errorHook ========
 */
Void AppMain_errorHook(Error_Block *eb)
{
    String fmt;
    Error_Data *data;
    Types_Site *site;

    if (eb == NULL) {
        return;
    }

    fmt = Error_getMsg(eb);

    if (fmt != NULL) {
        data = Error_getData(eb);
        Log_print2(Diags_USER8, fmt, (IArg)data->arg[0], (IArg)data->arg[1]);
        site = Error_getSite(eb);
        Log_print2(Diags_USER8,
            "Site: %s: line: %d", (IArg)site->file, (IArg)site->line);
        Error_print(eb);
    }
}
Exemplo n.º 3
0
/*!
 * ======== postCrashToMailbox ========
 */
Void postCrashToMailbox(Error_Block * eb)
{
    Error_print(eb);
    InterruptM3_intSend(0, (UInt)RP_MSG_MBOX_CRASH);
}