Hello all!

I started EDF implementation to eCos. I did basic works for it, such
as adding scheduler to eCosConfigTool, extending thread's structure
with properties needed for EDF (deadline, period and wcet), and
creating EDF scheduler files (edf.hxx and edf.cxx) in kernel folder
structure. I was able to build eCos library target from modified eCos
repository. But, I have problem with my application.

When I "make" my application (which creates eCos threads with extended
deadline, period and wcet) it gives me compile errors. Here is excerpt
of common error and full error and my application code you can find in
attached files.

> /my_dev/ecos_edf_rep/ecos-3.0/packages/kernel/v3_0/src/common/thread.cxx:7
> 68: undefined reference 
> to `Cyg_Scheduler_Implementation::rem_thread (Cyg_Thread*)'
> /my_dev/ecos_edf/install/lib/libtarget.a (kernel_thread.o): In function 
> `Cyg_Thread':
> /my_dev/ecos_edf_rep/ecos-3.0/packages/kernel/v3_0/src/common/thread.cxx:2
> 19: undefined reference 
> to `Cyg_Scheduler_Implementation::register_thread (Cyg_Thread*)'
> ...

Last two days I am struggling with them, if you have some idea to fix
it, please let me know.
Regards,
Nodir.

2010/1/8 Nodir Kodirov <nodir.qodi...@gmail.com>
>
> Hello all,
>
> I am going to implement EDF (Earliest Deadline First) scheduling
> algorithm in eCos. I had a survey of mailing list and I found very
> useful tips here
> http://sourceware.org/ml/ecos-discuss/2005-10/msg00209.html and here
> http://sourceware.org/ml/ecos-discuss/2005-11/msg00059.html. However,
> I did not find any evidence about successful completion of
> implementation.
>
> My approach is adding two more additional fields to thread's
> properties. Those are:
> cyg_tick_count_t wcet /*worst case execution time*/
> cyg_tick_count_t deadline /* absolute deadline thread to be finished */
>
> Currently, I don't need TCP/IP and I don't use POSIX. It has been 5
> years, since these question was aroused. So, my question to those
> people who has already tried implementation is: do you see any errors
> in my approach?
>
> Regards,
> Nodir.
$ make
i386-elf-gcc -c -I/my_dev/ecos_edf/install/include 
-I/opt/ecos/gnutools/i386-elf/i386-elf/include sixthreads.c -Wall 
-Wpointer-arith -Wstrict-prototypes -Wundef -Woverloaded-virtual 
-Wno-write-strings -g -O2 -ffunction-sections -fdata-sections -fno-rtti 
-fno-exceptions sixthreads.c
cc1: warning: command line option "-Woverloaded-virtual" is valid for 
C++/ObjC++ but not for C
cc1: warning: command line option "-fno-rtti" is valid for C++/ObjC++ but not 
for C
cc1: warning: command line option "-Woverloaded-virtual" is valid for 
C++/ObjC++ but not for C
cc1: warning: command line option "-fno-rtti" is valid for C++/ObjC++ but not 
for C
i386-elf-gcc -I/my_dev/ecos_edf/install/include 
-I/opt/ecos/gnutools/i386-elf/i386-elf/include -nostartfiles 
-L/my_dev/ecos_edf/install/lib -Ttarget.ld -g -nostdlib -Wl,--gc-sections 
-Wl,-static -o sixthreads sixthreads.o
/my_dev/ecos_edf/install/lib/libtarget.a(kernel_thread.o): In function 
`Cyg_Thread::exit()':
/my_dev/ecos_edf_rep/ecos-3.0/packages/kernel/v3_0/src/common/thread.cxx:768: 
undefined reference to `Cyg_Scheduler_Implementation::rem_thread(Cyg_Thread*)'
/my_dev/ecos_edf/install/lib/libtarget.a(kernel_thread.o): In function 
`Cyg_Thread':
/my_dev/ecos_edf_rep/ecos-3.0/packages/kernel/v3_0/src/common/thread.cxx:219: 
undefined reference to 
`Cyg_Scheduler_Implementation::register_thread(Cyg_Thread*)'
/my_dev/ecos_edf/install/lib/libtarget.a(kernel_thread.o): In function 
`Cyg_Thread::reinitialize()':
/my_dev/ecos_edf_rep/ecos-3.0/packages/kernel/v3_0/src/common/thread.cxx:249: 
undefined reference to 
`Cyg_Scheduler_Implementation::deregister_thread(Cyg_Thread*)'
/my_dev/ecos_edf/install/lib/libtarget.a(kernel_thread.o): In function 
`Cyg_Thread::suspend()':
/my_dev/ecos_edf_rep/ecos-3.0/packages/kernel/v3_0/src/common/thread.cxx:578: 
undefined reference to `Cyg_Scheduler_Implementation::rem_thread(Cyg_Thread*)'
/my_dev/ecos_edf/install/lib/libtarget.a(kernel_thread.o): In function 
`Cyg_Thread::sleep()':
/my_dev/ecos_edf_rep/ecos-3.0/packages/kernel/v3_0/src/common/thread.cxx:349: 
undefined reference to `Cyg_Scheduler_Implementation::rem_thread(Cyg_Thread*)'
/my_dev/ecos_edf/install/lib/libtarget.a(kernel_thread.o): In function 
`Cyg_Thread::resume()':
/my_dev/ecos_edf_rep/ecos-3.0/packages/kernel/v3_0/src/common/thread.cxx:617: 
undefined reference to `Cyg_Scheduler_Implementation::add_thread(Cyg_Thread*)'
/my_dev/ecos_edf/install/lib/libtarget.a(kernel_thread.o): In function 
`Cyg_ThreadQueue::remove(Cyg_Thread*)':
/my_dev/ecos_edf/install/include/cyg/kernel/thread.inl:623: undefined reference 
to `Cyg_ThreadQueue_Implementation::remove(Cyg_Thread*)'
/my_dev/ecos_edf/install/lib/libtarget.a(kernel_thread.o): In function 
`Cyg_Thread::wake()':
/my_dev/ecos_edf_rep/ecos-3.0/packages/kernel/v3_0/src/common/thread.cxx:383: 
undefined reference to `Cyg_Scheduler_Implementation::add_thread(Cyg_Thread*)'
/my_dev/ecos_edf/install/lib/libtarget.a(kernel_thread.o): In function 
`~Cyg_Thread':
/my_dev/ecos_edf_rep/ecos-3.0/packages/kernel/v3_0/src/common/thread.cxx:276: 
undefined reference to 
`Cyg_Scheduler_Implementation::deregister_thread(Cyg_Thread*)'
/my_dev/ecos_edf_rep/ecos-3.0/packages/kernel/v3_0/src/common/thread.cxx:276: 
undefined reference to 
`Cyg_Scheduler_Implementation::deregister_thread(Cyg_Thread*)'
/my_dev/ecos_edf/install/lib/libtarget.a(kernel_thread.o): In function 
`Cyg_Thread':
/my_dev/ecos_edf_rep/ecos-3.0/packages/kernel/v3_0/src/common/thread.cxx:219: 
undefined reference to 
`Cyg_Scheduler_Implementation::register_thread(Cyg_Thread*)'
/my_dev/ecos_edf/install/lib/libtarget.a(kernel_thread.o): In function 
`Cyg_IdleThread':
/my_dev/ecos_edf_rep/ecos-3.0/packages/kernel/v3_0/src/common/thread.cxx:1279: 
undefined reference to 
`Cyg_Scheduler_Implementation::set_idle_thread(Cyg_Thread*, unsigned int)'
/my_dev/ecos_edf/install/lib/libtarget.a(kernel_sched.o): In function 
`Cyg_Scheduler':
/my_dev/ecos_edf/install/include/cyg/kernel/sched.hxx:147: undefined reference 
to `Cyg_Scheduler_Implementation::Cyg_Scheduler_Implementation()'
/my_dev/ecos_edf/install/lib/libtarget.a(kernel_sched.o): In function 
`Cyg_SchedThread':
/my_dev/ecos_edf_rep/ecos-3.0/packages/kernel/v3_0/src/sched/sched.cxx:484: 
undefined reference to 
`Cyg_SchedThread_Implementation::Cyg_SchedThread_Implementation(unsigned int)'
/my_dev/ecos_edf/install/lib/libtarget.a(kernel_sched.o): In function 
`Cyg_Scheduler::start_cpu()':
/my_dev/ecos_edf_rep/ecos-3.0/packages/kernel/v3_0/src/sched/sched.cxx:385: 
undefined reference to `Cyg_Scheduler_Implementation::schedule()'
/my_dev/ecos_edf/install/lib/libtarget.a(kernel_sched.o): In function 
`Cyg_Scheduler::unlock_inner(unsigned int)':
/my_dev/ecos_edf_rep/ecos-3.0/packages/kernel/v3_0/src/sched/sched.cxx:184: 
undefined reference to `Cyg_Scheduler_Implementation::schedule()'
/my_dev/ecos_edf/install/lib/libtarget.a(kernel_sched.o): In function 
`Cyg_SchedThread_Implementation::timeslice_save()':
/my_dev/ecos_edf/install/include/cyg/kernel/edf.hxx:312: undefined reference to 
`Cyg_Scheduler_Implementation::timeslice_count'
/my_dev/ecos_edf/install/lib/libtarget.a(kernel_sched.o): In function 
`Cyg_SchedThread_Implementation::timeslice_restore()':
/my_dev/ecos_edf/install/include/cyg/kernel/edf.hxx:317: undefined reference to 
`Cyg_Scheduler_Implementation::timeslice_count'
/my_dev/ecos_edf/install/include/cyg/kernel/edf.hxx:317: undefined reference to 
`Cyg_Scheduler_Implementation::timeslice_count'
/my_dev/ecos_edf/install/lib/libtarget.a(kernel_mutex.o): In function 
`Cyg_ThreadQueue::enqueue(Cyg_Thread*)':
/my_dev/ecos_edf/install/include/cyg/kernel/thread.inl:602: undefined reference 
to `Cyg_ThreadQueue_Implementation::enqueue(Cyg_Thread*)'
/my_dev/ecos_edf/install/lib/libtarget.a(kernel_mutex.o): In function 
`Cyg_ThreadQueue::dequeue()':
/my_dev/ecos_edf/install/include/cyg/kernel/thread.inl:616: undefined reference 
to `Cyg_ThreadQueue_Implementation::dequeue()'
/my_dev/ecos_edf/install/include/cyg/kernel/thread.inl:616: undefined reference 
to `Cyg_ThreadQueue_Implementation::dequeue()'
/my_dev/ecos_edf/install/lib/libtarget.a(kernel_mutex.o): In function 
`Cyg_ThreadQueue::enqueue(Cyg_Thread*)':
/my_dev/ecos_edf/install/include/cyg/kernel/thread.inl:602: undefined reference 
to `Cyg_ThreadQueue_Implementation::enqueue(Cyg_Thread*)'
/my_dev/ecos_edf/install/lib/libtarget.a(kernel_clock.o): In function 
`Cyg_RealTimeClock::dsr(unsigned int, unsigned int, unsigned int)':
/my_dev/ecos_edf_rep/ecos-3.0/packages/kernel/v3_0/src/common/clock.cxx:930: 
undefined reference to `Cyg_Scheduler_Implementation::timeslice()'
/my_dev/ecos_edf/install/lib/libtarget.a(services_memalloc_common_malloc.o): In 
function `Cyg_ThreadQueue::dequeue()':
/my_dev/ecos_edf/install/include/cyg/kernel/thread.inl:616: undefined reference 
to `Cyg_ThreadQueue_Implementation::dequeue()'
/my_dev/ecos_edf/install/lib/libtarget.a(services_memalloc_common_malloc.o): In 
function `Cyg_ThreadQueue::enqueue(Cyg_Thread*)':
/my_dev/ecos_edf/install/include/cyg/kernel/thread.inl:602: undefined reference 
to `Cyg_ThreadQueue_Implementation::enqueue(Cyg_Thread*)'
/my_dev/ecos_edf/install/lib/libtarget.a(services_memalloc_common_malloc.o): In 
function `Cyg_ThreadQueue::dequeue()':
/my_dev/ecos_edf/install/include/cyg/kernel/thread.inl:616: undefined reference 
to `Cyg_ThreadQueue_Implementation::dequeue()'
/my_dev/ecos_edf/install/lib/libtarget.a(services_memalloc_common_malloc.o): In 
function `Cyg_ThreadQueue::enqueue(Cyg_Thread*)':
/my_dev/ecos_edf/install/include/cyg/kernel/thread.inl:602: undefined reference 
to `Cyg_ThreadQueue_Implementation::enqueue(Cyg_Thread*)'
/my_dev/ecos_edf/install/lib/libtarget.a(services_memalloc_common_heaps.o): In 
function `Cyg_ThreadQueue::dequeue()':
/my_dev/ecos_edf/install/include/cyg/kernel/thread.inl:616: undefined reference 
to `Cyg_ThreadQueue_Implementation::dequeue()'
collect2: ld returned 1 exit status
make: *** [all] Error 1

Attachment: twothreads.c
Description: Binary data

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

Reply via email to