[ECOS] How to know whether currently there is any thread ready to run?

sandeep kumar sandeep@codito.com
Fri Mar 5 09:41:00 GMT 2004


> Thank you for your reply. I tried, but it doesn't give the result I need.
> When I referred to an eCos book, "Embedded Software Development with eCos",
> which is written by Anthony J. Massa, I noticed that the function
cyg_thread_self
> returns the handle of current thread, and can only be called by current
thread.
>
> Thus I think I can't use this function in interrupt_end or RTC's DSR to seek
the
> current thread ready to run. Right?
> > >>
> > >>In my design, when performing the real time clock interrupt ISR, I'd
> > >>like to know if there is any thread just getting ready to run after a
> > >>time delay. Thus I can decide whether the system power mode should be
> > >>changed. Is there a function designed for this need? Thanks a lot for
> > >>you concern.

different answers to your problem are possible, depending upon what is this
*time delay* you are talking about (and also whether i understand what you
intend to do)  --
  are you  interested in knowing that there will definitely be a thread ready to
run after some time X?
   in this case you might possibly examine the alarms that are set (if any) and
do some jugglary to figure
  out that if any alarm will trigger leading to runnable threads b/w
current-time and current-time+X.

  but say, there are no alarms set or none is likely to trigger leading to
runnable thread(s), in time
  window mentioned above - will it be right to change the system power mode now?
(may be, in your
  setup it is. granularity of X can also be a deciding factor) what if some
threads continue to run
  otherwise too and/or they/new-thread add another alarm(s) that trigger in this
time-window?

  if what you mean is - just to find out if there is any runnable thread other
than idle-thread, after
  currently executing non-idle thread (but remember that current thread might
continue being runnable
  further and might get loaded again if no-other non-idle runnable thread is
there )..
  you can try adding a new function peek_next_schedulable_thread (similar to
implementation specific
  schedule function, and it doesn't update the thread-queue but just peeks the
head rather than getting the
  head) whose outcome you can compare to find if there is any non-idle thread
available to run or not.

hope something makes sense as per your requirements!
sandeep



-- 
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss



More information about the Ecos-discuss mailing list