Hi All,
We are migrating a product from RTEMS4.10 to RTEMS5, and I have come up
with a problem that we have not experienced previously.
We have some code that works before RTEMS mulit-tasking has been started.
This code uses some string functions which are causing the system to
crash (bus error out), and I have worked it out to a call to:
_REENT
One example function is:
snprintf
using the newlib 3.0.0 the first few lines of the function are:
int
snprintf (char *__restrict str,
size_t size,
const char *__restrict fmt, ...)
{
int ret;
va_list ap;
FILE f;
struct _reent *ptr = _REENT;
The _REENT macro ends up calling:
cpukit/include/rtems/confdefs.h:2273 __getreent
which ends up returning the thread executing structure:
return _Thread_Get_executing()->libc_reent;
Since this is before multi-tasking, _Thread_Get_executing() returns
NULL, and this is not valid memory.
So, if I want to support this, do I need to configure:
#define CONFIGURE_DISABLE_NEWLIB_REENTRANCY
If I do this will it effect things later?
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?
regards,
Ian Caddy
Goanna Technologies Pty Ltd
_______________________________________________
users mailing list
users@rtems.org
http://lists.rtems.org/mailman/listinfo/users