forked from Imagelibrary/rtems
added a task begin extension for unix simulator configurations. This extension
insures that stdout is line buffered (see setvbuf).
This commit is contained in:
@@ -46,6 +46,10 @@
|
|||||||
|
|
||||||
#include <sys/reent.h> /* for extern of _REENT (aka _impure_ptr) */
|
#include <sys/reent.h> /* for extern of _REENT (aka _impure_ptr) */
|
||||||
|
|
||||||
|
#ifdef RTEMS_UNIX
|
||||||
|
#include <stdio.h> /* for setvbuf() */
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "internal.h"
|
#include "internal.h"
|
||||||
|
|
||||||
#define LIBC_NOTEPAD RTEMS_NOTEPAD_LAST
|
#define LIBC_NOTEPAD RTEMS_NOTEPAD_LAST
|
||||||
@@ -110,6 +114,24 @@ libc_start_hook(rtems_tcb *current_task,
|
|||||||
MY_task_set_note(starting_task, LIBC_NOTEPAD, (rtems_unsigned32) ptr);
|
MY_task_set_note(starting_task, LIBC_NOTEPAD, (rtems_unsigned32) ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Called for all user TASKS (system tasks are SYSI and IDLE)
|
||||||
|
*
|
||||||
|
* NOTE: When using RTEMS fake stat, fstat, and isatty, all output
|
||||||
|
* is line buffered so this setvbuf is not necessary. This
|
||||||
|
* setvbuf insures that we can redirect the output of a test
|
||||||
|
* on the UNIX simulator and it is in the same order as for a
|
||||||
|
* real target.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef RTEMS_UNIX
|
||||||
|
rtems_extension
|
||||||
|
libc_begin_hook(rtems_tcb *current_task)
|
||||||
|
{
|
||||||
|
setvbuf( stdout, NULL, _IOLBF, BUFSIZ );
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
rtems_extension
|
rtems_extension
|
||||||
libc_switch_hook(rtems_tcb *current_task,
|
libc_switch_hook(rtems_tcb *current_task,
|
||||||
rtems_tcb *heir_task)
|
rtems_tcb *heir_task)
|
||||||
@@ -244,6 +266,9 @@ libc_init(int reentrant)
|
|||||||
|
|
||||||
libc_extension.thread_create = libc_create_hook;
|
libc_extension.thread_create = libc_create_hook;
|
||||||
libc_extension.thread_start = libc_start_hook;
|
libc_extension.thread_start = libc_start_hook;
|
||||||
|
#ifdef RTEMS_UNIX
|
||||||
|
libc_extension.thread_begin = libc_begin_hook;
|
||||||
|
#endif
|
||||||
libc_extension.thread_switch = libc_switch_hook;
|
libc_extension.thread_switch = libc_switch_hook;
|
||||||
libc_extension.thread_delete = libc_delete_hook;
|
libc_extension.thread_delete = libc_delete_hook;
|
||||||
|
|
||||||
|
|||||||
@@ -46,6 +46,10 @@
|
|||||||
|
|
||||||
#include <sys/reent.h> /* for extern of _REENT (aka _impure_ptr) */
|
#include <sys/reent.h> /* for extern of _REENT (aka _impure_ptr) */
|
||||||
|
|
||||||
|
#ifdef RTEMS_UNIX
|
||||||
|
#include <stdio.h> /* for setvbuf() */
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "internal.h"
|
#include "internal.h"
|
||||||
|
|
||||||
#define LIBC_NOTEPAD RTEMS_NOTEPAD_LAST
|
#define LIBC_NOTEPAD RTEMS_NOTEPAD_LAST
|
||||||
@@ -110,6 +114,24 @@ libc_start_hook(rtems_tcb *current_task,
|
|||||||
MY_task_set_note(starting_task, LIBC_NOTEPAD, (rtems_unsigned32) ptr);
|
MY_task_set_note(starting_task, LIBC_NOTEPAD, (rtems_unsigned32) ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Called for all user TASKS (system tasks are SYSI and IDLE)
|
||||||
|
*
|
||||||
|
* NOTE: When using RTEMS fake stat, fstat, and isatty, all output
|
||||||
|
* is line buffered so this setvbuf is not necessary. This
|
||||||
|
* setvbuf insures that we can redirect the output of a test
|
||||||
|
* on the UNIX simulator and it is in the same order as for a
|
||||||
|
* real target.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef RTEMS_UNIX
|
||||||
|
rtems_extension
|
||||||
|
libc_begin_hook(rtems_tcb *current_task)
|
||||||
|
{
|
||||||
|
setvbuf( stdout, NULL, _IOLBF, BUFSIZ );
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
rtems_extension
|
rtems_extension
|
||||||
libc_switch_hook(rtems_tcb *current_task,
|
libc_switch_hook(rtems_tcb *current_task,
|
||||||
rtems_tcb *heir_task)
|
rtems_tcb *heir_task)
|
||||||
@@ -244,6 +266,9 @@ libc_init(int reentrant)
|
|||||||
|
|
||||||
libc_extension.thread_create = libc_create_hook;
|
libc_extension.thread_create = libc_create_hook;
|
||||||
libc_extension.thread_start = libc_start_hook;
|
libc_extension.thread_start = libc_start_hook;
|
||||||
|
#ifdef RTEMS_UNIX
|
||||||
|
libc_extension.thread_begin = libc_begin_hook;
|
||||||
|
#endif
|
||||||
libc_extension.thread_switch = libc_switch_hook;
|
libc_extension.thread_switch = libc_switch_hook;
|
||||||
libc_extension.thread_delete = libc_delete_hook;
|
libc_extension.thread_delete = libc_delete_hook;
|
||||||
|
|
||||||
|
|||||||
@@ -46,6 +46,10 @@
|
|||||||
|
|
||||||
#include <sys/reent.h> /* for extern of _REENT (aka _impure_ptr) */
|
#include <sys/reent.h> /* for extern of _REENT (aka _impure_ptr) */
|
||||||
|
|
||||||
|
#ifdef RTEMS_UNIX
|
||||||
|
#include <stdio.h> /* for setvbuf() */
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "internal.h"
|
#include "internal.h"
|
||||||
|
|
||||||
#define LIBC_NOTEPAD RTEMS_NOTEPAD_LAST
|
#define LIBC_NOTEPAD RTEMS_NOTEPAD_LAST
|
||||||
@@ -110,6 +114,24 @@ libc_start_hook(rtems_tcb *current_task,
|
|||||||
MY_task_set_note(starting_task, LIBC_NOTEPAD, (rtems_unsigned32) ptr);
|
MY_task_set_note(starting_task, LIBC_NOTEPAD, (rtems_unsigned32) ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Called for all user TASKS (system tasks are SYSI and IDLE)
|
||||||
|
*
|
||||||
|
* NOTE: When using RTEMS fake stat, fstat, and isatty, all output
|
||||||
|
* is line buffered so this setvbuf is not necessary. This
|
||||||
|
* setvbuf insures that we can redirect the output of a test
|
||||||
|
* on the UNIX simulator and it is in the same order as for a
|
||||||
|
* real target.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef RTEMS_UNIX
|
||||||
|
rtems_extension
|
||||||
|
libc_begin_hook(rtems_tcb *current_task)
|
||||||
|
{
|
||||||
|
setvbuf( stdout, NULL, _IOLBF, BUFSIZ );
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
rtems_extension
|
rtems_extension
|
||||||
libc_switch_hook(rtems_tcb *current_task,
|
libc_switch_hook(rtems_tcb *current_task,
|
||||||
rtems_tcb *heir_task)
|
rtems_tcb *heir_task)
|
||||||
@@ -244,6 +266,9 @@ libc_init(int reentrant)
|
|||||||
|
|
||||||
libc_extension.thread_create = libc_create_hook;
|
libc_extension.thread_create = libc_create_hook;
|
||||||
libc_extension.thread_start = libc_start_hook;
|
libc_extension.thread_start = libc_start_hook;
|
||||||
|
#ifdef RTEMS_UNIX
|
||||||
|
libc_extension.thread_begin = libc_begin_hook;
|
||||||
|
#endif
|
||||||
libc_extension.thread_switch = libc_switch_hook;
|
libc_extension.thread_switch = libc_switch_hook;
|
||||||
libc_extension.thread_delete = libc_delete_hook;
|
libc_extension.thread_delete = libc_delete_hook;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user