From f918e74b5bbc11a71d1b9723ba89eedc3c2eb521 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Tue, 16 Apr 2002 13:42:31 +0000 Subject: 2002-04-16 Chris Johns * src/threadinitialize.c: Per PR181, clear the array of user extension pointers. This lets user extensions that have hooked the switch handler know if a task has been processed by the user extension before. If a user extension is created after a task is started it may not know it. --- c/src/exec/score/ChangeLog | 7 +++++++ c/src/exec/score/src/threadinitialize.c | 14 ++++++++++++++ 2 files changed, 21 insertions(+) (limited to 'c/src') diff --git a/c/src/exec/score/ChangeLog b/c/src/exec/score/ChangeLog index ea3930ba09..605154be0e 100644 --- a/c/src/exec/score/ChangeLog +++ b/c/src/exec/score/ChangeLog @@ -1,3 +1,10 @@ +2002-04-16 Chris Johns + + * src/threadinitialize.c: Per PR181, clear the array of user extension + pointers. This lets user extensions that have hooked the switch handler + know if a task has been processed by the user extension before. If a + user extension is created after a task is started it may not know it. + 2002-04-12 Ralf Corsepius * include/rtems/system.h: Add i386 to multilib-able targets. diff --git a/c/src/exec/score/src/threadinitialize.c b/c/src/exec/score/src/threadinitialize.c index 9617f24665..feb07836e3 100644 --- a/c/src/exec/score/src/threadinitialize.c +++ b/c/src/exec/score/src/threadinitialize.c @@ -138,6 +138,20 @@ boolean _Thread_Initialize( the_thread->extensions = (void **) extensions_area; + /* + * Clear the extensions area so extension users can determine + * if they are linked to the thread. An extension user may + * create the extension long after tasks have been created + * so they cannot rely on the thread create user extension + * call. + */ + + if ( the_thread->extensions ) { + int i; + for ( i = 0; i < (_Thread_Maximum_extensions + 1); i++ ) + the_thread->extensions[i] = NULL; + } + /* * General initialization */ -- cgit v1.2.3