[ECOS] redboot info threads problem

Andrew Lunn andrew.lunn@ascom.ch
Thu Dec 7 03:05:00 GMT 2000


Hi Folks

Im trying to work out how redboot does its info threads call. I think
i understand whats going. The redboot stub calls into the RAM app
using the virtual vector support. dbg_threadinfo calls
dbg_thread_syscal which jumps through the vector thus

static __inline__ int dbg_thread_syscall(
                                     enum dbg_syscall_ids id)
{
  dbg_syscall_func f ; /* double indirect via */
  if (0 ==(f = *dbg_syscall_ptr)) return 0 ; /* no pointer to vector */
  if (0 == *f) return 0 ; /* vector not initialized */
  return (*f)(id,&tcall);
}

What im missing is when is dbg_syscall_ptr initialised? There is a
function to do it, init_threads_syscall, but its not getting
called. This should be called as part of hal_if_init but its not. Its
surrouned by conditional compilations which are evaluating to
false. The conditions are 

!defined(CYGPKG_KERNEL) && defined(CYGDBG_HAL_DEBUG_GDB_THREAD_SUPPORT)

I don't have a kernel, this is plain redboot. Looking at ecos.ecc
CYGDBG_HAL_DEBUG_GDB_THREAD_SUPPORT is not active.

    # ActiveIf constraint:  CYGSEM_HAL_ROM_MONITOR || CYGDBG_KERNEL_DEBUG_GD
B_THREAD_SUPPORT 
    #     CYGSEM_HAL_ROM_MONITOR == 0
    #     CYGDBG_KERNEL_DEBUG_GDB_THREAD_SUPPORT (unknown) == 0
    #   --> 0

The redboot.txt shipped with 1.4.4 says to disable
CYGSEM_HAL_ROM_MONITOR.  CYGDBG_KERNEL_DEBUG_GDB_THREAD_SUPPORT is
defined in kernel.cdl which since im not using it is not included.

So whats wrong?

        Thanks
                Andrew



More information about the Ecos-discuss mailing list