On 07/11/2018 08:23, Ian Caddy wrote:


Or should this be fixed to check whether multi-tasking is running before checking the currently running thread, we do this in some of our other code?

Code which runs before the idle threads are created should not use complex Newlib functions. Unfortunately snprintf() is a complex Newlib function. I think we need a low level replacement for snprintf() which could be used during BSP initialization for example. This could be a simple wrapper for _IO_Printf().

I had a similar issue here:

https://lists.rtems.org/pipermail/devel/2018-September/023013.html


Thanks, I must have skipped over that one from a short time ago.

The problem is that we end up doing quite a lot of complicated things before multi-tasking is started, and there is not going to be a simple way around that for us with quite a large code base.

I am still wondering whether or not I can change the __getreent function to detect whether multi-tasking has started yet or not and either return the task executing element or return the _GLOBAL_REENT for the time before.

I am wondering what other side effects there will be and whether this is better than defining CONFIGURE_DISABLE_NEWLIB_REENTRANCY. I might try an experiment to check which method might be better for us.

If you update to the current master

https://git.rtems.org/rtems/commit/?id=d1f7204649ff7c8bed36eab5af20c1a108af8b14

then you could try to add this to the module which contains your application configuration:

#define CONFIGURE_DISABLE_NEWLIB_REENTRANCY

struct _reent *__getreent(void)
{
  Thread_Control *executing;

  executing = _Thread_Get_executing();

  if (executing != NULL) {
    return executing->libc_reent;
  } else {
    return _GLOBAL_REENT;
  }
}

--
Sebastian Huber, embedded brains GmbH

Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone   : +49 89 189 47 41-16
Fax     : +49 89 189 47 41-09
E-Mail  : sebastian.hu...@embedded-brains.de
PGP     : Public key available on request.

Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.

_______________________________________________
users mailing list
users@rtems.org
http://lists.rtems.org/mailman/listinfo/users

Reply via email to