diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2002-04-16 13:42:31 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2002-04-16 13:42:31 +0000 |
commit | f918e74b5bbc11a71d1b9723ba89eedc3c2eb521 (patch) | |
tree | b1c0772b4cd96c65ef663f1316bede5e0a6341a1 /cpukit/score | |
parent | 2002-04-16 Ralf Corsepius <corsepiu@faw.uni-ulm.de> (diff) | |
download | rtems-f918e74b5bbc11a71d1b9723ba89eedc3c2eb521.tar.bz2 |
2002-04-16 Chris Johns <ccj@acm.org>
* 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.
Diffstat (limited to 'cpukit/score')
-rw-r--r-- | cpukit/score/ChangeLog | 7 | ||||
-rw-r--r-- | cpukit/score/src/threadinitialize.c | 14 |
2 files changed, 21 insertions, 0 deletions
diff --git a/cpukit/score/ChangeLog b/cpukit/score/ChangeLog index ea3930ba09..605154be0e 100644 --- a/cpukit/score/ChangeLog +++ b/cpukit/score/ChangeLog @@ -1,3 +1,10 @@ +2002-04-16 Chris Johns <ccj@acm.org> + + * 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 <corsepiu@faw.uni-ulm.de> * include/rtems/system.h: Add i386 to multilib-able targets. diff --git a/cpukit/score/src/threadinitialize.c b/cpukit/score/src/threadinitialize.c index 9617f24665..feb07836e3 100644 --- a/cpukit/score/src/threadinitialize.c +++ b/cpukit/score/src/threadinitialize.c @@ -139,6 +139,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 */ |