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); } }
/*! * ======== postCrashToMailbox ======== */ Void postCrashToMailbox(Error_Block * eb) { Error_print(eb); InterruptM3_intSend(0, (UInt)RP_MSG_MBOX_CRASH); }