From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 22310 invoked by alias); 25 Nov 2003 12:58:35 -0000 Mailing-List: contact ecos-discuss-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: ecos-discuss-owner@sources.redhat.com Received: (qmail 22302 invoked from network); 25 Nov 2003 12:58:33 -0000 Received: from unknown (HELO hermes.chez-thomas.org) (63.225.98.241) by sources.redhat.com with SMTP; 25 Nov 2003 12:58:33 -0000 Received: by hermes.chez-thomas.org (Postfix, from userid 2000) id 331DF50D958; Tue, 25 Nov 2003 05:58:33 -0700 (MST) Received: from localhost (localhost.localdomain [127.0.0.1]) by hermes.chez-thomas.org (Postfix) with ESMTP id CA04850D89F; Tue, 25 Nov 2003 05:58:31 -0700 (MST) From: Gary Thomas To: Andrew Lunn Cc: Aravind B , ecos-discuss@sources.redhat.com In-Reply-To: <20031125083030.GC21161@lunn.ch> References: <1069738146.1002.23.camel@ambica> <20031125083030.GC21161@lunn.ch> Content-Type: text/plain Organization: MLB Associates Message-Id: <1069765111.22988.1364.camel@hermes> Mime-Version: 1.0 Date: Tue, 25 Nov 2003 12:58:00 -0000 Content-Transfer-Encoding: 7bit X-Spam-Status: No, hits=-4.4 required=5.0 tests=AWL,EMAIL_ATTRIBUTION,IN_REP_TO,QUOTED_EMAIL_TEXT, REFERENCES,REPLY_WITH_QUOTES,USER_AGENT_XIMIAN autolearn=ham version=2.55 X-Spam-Level: X-Spam-Checker-Version: SpamAssassin 2.55 (1.174.2.19-2003-05-19-exp) Subject: Re: [ECOS] therad delay problem X-SW-Source: 2003-11/txt/msg00372.txt.bz2 On Tue, 2003-11-25 at 01:30, Andrew Lunn wrote: > On Tue, Nov 25, 2003 at 10:59:06AM +0530, Aravind B wrote: > > hi, > > i have written a program which contains 3 thread as shown. > > > > cyg_user_start(void) > > { > > > > printf("entering two threads cyg_user_start() function\n"); > > > > cyg_mutex_init(&cliblock); > > cyg_thread_create(3,simple_program,(cyg_addrword_t)2, > > "simple_program_Thread ",(void*) stack[2],4096, > > &simple_program_Thread,&thread_s[2]); > > cyg_thread_create(4,simple_program1,(cyg_addrword_t)3, > > "simple_program1_Thread",(void*) stack[3],4096, > > &simple_program1_Thread,&thread_s[3]); > > cyg_thread_create(5,simple_program2,(cyg_addrword_t)4, > > "simple_program2_Thread",(void*) stack[4],4096, > > &simple_program2_Thread,&thread_s[4]); > > > > cyg_thread_resume(simple_program_Thread); > > cyg_thread_resume(simple_program1_Thread); > > cyg_thread_resume(simple_program2_Thread); > > } > > cyg_alarm_t alarm_Tbcn_func; > > > > void simple_program(cyg_addrword_t data ) > > { > > int message=(int) data; > > unsigned int i; > > printf("i am thread %d before delay\n",message); > > > > curr_time=cyg_real_time_clock(); > > cyg_clock_to_counter(curr_time,&handle_counterTbcn); > > cyg_alarm_create(handle_counterTbcn, alarm_Tbcn_func,5500, > > &handle_alarmTbcn, &alarm_Tbcn); > > cyg_alarm_initialize(handle_alarmTbcn,cyg_current_time()+200,0); > > > > cyg_thread_delay(3); > > while(1) > > { > > if(var==1) > > { > > printf(" hello"); > > break; > > } > > } > > } > > > > void simple_program1(cyg_addrword_t data ) > > { > > int message=(int) data; > > printf("i am thread %d\n",message); > > } > > > > void simple_program2(cyg_addrword_t data ) > > { > > int message=(int) data; > > printf("i am thread %d\n",message); > > while(1) > > { > > } > > } > > void alarm_Tbcn_func( cyg_handle_t alarmTbcn,cyg_addrword_t data) > > { > > var=1; > > printf(" i am in alarm function\n"); > > } > > > > > > there is cyg_thread _delay(3) in t1.the control goes to t2 and then > > t3.In t3 i have infinite while loop.The control is not going to t1.Is > > there any way so that i can signal to t1 that thread delay is over and > > it can continue its flow.If so then how it is? > > Does the alarm hander get called? > > it var a volatile? Does your program include See: http://ecos.sourceware.org/fom-serv/ecos/cache/94.html -- Gary Thomas MLB Associates -- Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos and search the list archive: http://sources.redhat.com/ml/ecos-discuss