diff options
Diffstat (limited to '')
-rw-r--r-- | c/src/exec/score/ChangeLog | 7 | ||||
-rw-r--r-- | c/src/exec/score/src/threadinitialize.c | 14 | ||||
-rw-r--r-- | cpukit/score/ChangeLog | 7 | ||||
-rw-r--r-- | cpukit/score/src/threadinitialize.c | 14 |
4 files changed, 42 insertions, 0 deletions
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 <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/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 @@ -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 */ 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 */ |