From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 30643 invoked by alias); 17 Oct 2014 15:14:17 -0000 Mailing-List: contact ecos-discuss-help@ecos.sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: ecos-discuss-owner@ecos.sourceware.org Received: (qmail 30596 invoked by uid 89); 17 Oct 2014 15:14:16 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-0.4 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_NONE,RP_MATCHES_RCVD,SPF_PASS autolearn=ham version=3.3.2 X-HELO: mx2.zhaw.ch Received: from srv-mail-012.zhaw.ch (HELO mx2.zhaw.ch) (160.85.104.122) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 17 Oct 2014 15:14:15 +0000 Received: from mx2.zhaw.ch (localhost [127.0.0.1]) by localhost (Postfix) with SMTP id B78B3C2 for ; Fri, 17 Oct 2014 17:14:13 +0200 (CEST) Received: from srv-mail-002.zhaw.ch (srv-mail-002.zhaw.ch [160.85.196.31]) by mx2.zhaw.ch (Postfix) with ESMTP id B0948BF for ; Fri, 17 Oct 2014 17:14:13 +0200 (CEST) Received: from SRV-MAIL-121.zhaw.ch ([fe80::fc06:8920:2469:cee2]) by srv-mail-002.zhaw.ch ([fe80::c57f:68ac:510b:2893%12]) with mapi id 14.03.0210.002; Fri, 17 Oct 2014 17:14:13 +0200 From: "Leschke Serafin (lesc)" To: "ecos-discuss@ecos.sourceware.org" Date: Fri, 17 Oct 2014 15:14:00 -0000 Message-ID: Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-IsSubscribed: yes Subject: [ECOS] cyg_thread_delay vs cyg_flag_wait behavior X-SW-Source: 2014-10/txt/msg00029.txt.bz2 hi and sorry to awake this zombie but I could not find anything other then this old thread relating to my problem: I have a programm (part of a driver ethernet driver) wich is needed to do some perodic duties (sending special packets) and waiting for events (handling special packets wich are not to be deleviered to the OS). Waiting for this events is realised via flags because I get only one interrupt for all packet and events ariving. My Code loocks something like this: initalize_threads(){ /*init timer thread this is only used to create the timer so it can has a custom priority*/ cyg_thread_create(TIMER_PRIOROTY, initialize_timer, 0, "timer thread", timer_stack, TIMER_STACK_SIZE, &timer_thread_hdl, &timer_thread_obj); cyg_thread_resume(timer_thread_hdl); /*init irq dispatcher thread*/ cyg_thread_create(DISPATCHER_PRIOROTY, irq_dispatcher, 0, "dispatcher thread", dispatcher_stack, DISPATCHER_STACK_SIZE, &dispatcher_hdl, &dispatcher_obj); cyg_thread_resume(dispatcher_hdl); } initialize_timer(cyg_addrword_t data){ sys_clk=3D cyg_real_time_clock(); cyg_clock_to_counter(sys_clk, &counter_hld); cyg_alarm_create(delay_req_counter_hld, timer_handler, (cyg_addrword_t)&_index, &alarm_hld, &alarm); cyg_alarm_initialize(alarm_hld, START_DELAY, TIMER_INTERVAL); } timer_handler(cyg_handle_t delay_req_alarm_hld, cyg_addrword_t data){ printf("WORKS!"); } irq_dispatcher(cyg_addrword_t data){ cyg_uint32 flags =3D 0; while (1){ /*This do-while is not really imperative, it's just for the case that the thread is woken up force-fully, which is probably never*/ do{ /* if I put a cyg_thread_delay() here everything works */ flags =3D cyg_flag_wait(&isr_flags,PTCP_IRQ_FLAGS, CYG_FLAG_WAITMODE_OR); }while(! flags); { /*Handling the events*/ } } The Problem now is this only works if TIMER_PRIOROTY < DISPATCHER_PRIOROTY otherwise the timer_handler is never called. On the other hand it works if i put a cyg_thread_delay before my wait. I hope I stated my problem clear, this is my first ecos project and I still have quite a lot of trouble with it. best regards Serafin --=20 Serafin Leschke, BSc in Computer Sience UAS Zurich Research Assistant ZHAW, Zurich University of Applied Sciences InES, Institute of Embedded Systems Postfach Technikumstr. 22 CH-8401 Winterthur -- Tel: +41 58 934 69 79 Fax: +41 58 935 76 87 E-Mail: serafin.lescke@zhaw.ch Web: http://ines.zhaw.ch -- -- Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss