source: rtems/cpukit/score/src/userextthreadbegin.c @ d7c3883

4.115
Last change on this file since d7c3883 was ce002b16, checked in by Sebastian Huber <sebastian.huber@…>, on 11/25/10 at 09:27:06

2010-11-25 Sebastian Huber <sebastian.huber@…>

  • libfs/src/dosfs/fat_file.c, libfs/src/imfs/imfs_debug.c, libfs/src/imfs/imfs_directory.c, libfs/src/imfs/imfs_getchild.c, posix/src/killinfo.c, score/inline/rtems/score/schedulerpriority.inl, score/inline/rtems/score/watchdog.inl, score/src/apiext.c, score/src/chain.c, score/src/coremsgflushsupp.c, score/src/coremsginsert.c, score/src/objectshrinkinformation.c, score/src/schedulerpriorityyield.c, score/src/threadqdequeuepriority.c, score/src/threadqenqueuepriority.c, score/src/threadqextractpriority.c, score/src/threadqfirstfifo.c, score/src/threadqfirstpriority.c, score/src/threadyieldprocessor.c, score/src/userextthreadbegin.c, score/src/userextthreadcreate.c, score/src/userextthreaddelete.c, score/src/userextthreadrestart.c, score/src/userextthreadstart.c, score/src/userextthreadswitch.c, score/src/watchdogreportchain.c: Avoid chain API violations.
  • Property mode set to 100644
File size: 2.0 KB
Line 
1/**
2 * @file
3 *
4 * @ingroup ScoreUserExt
5 *
6 * @brief User Extension Handler implementation.
7 */
8
9/*
10 *  COPYRIGHT (c) 1989-2007.
11 *  On-Line Applications Research Corporation (OAR).
12 *
13 *  The license and distribution terms for this file may be
14 *  found in the file LICENSE in this distribution or at
15 *  http://www.rtems.com/license/LICENSE.
16 *
17 *  $Id$
18 */
19
20#if HAVE_CONFIG_H
21#include "config.h"
22#endif
23
24#include <rtems/system.h>
25#include <rtems/score/userext.h>
26
27void _User_extensions_Thread_begin (
28  Thread_Control *executing
29)
30{
31  Chain_Node              *the_node;
32  User_extensions_Control *the_extension;
33
34  for ( the_node = _Chain_First( &_User_extensions_List );
35        !_Chain_Is_tail( &_User_extensions_List, the_node ) ;
36        the_node = the_node->next ) {
37
38    the_extension = (User_extensions_Control *) the_node;
39
40    if ( the_extension->Callouts.thread_begin != NULL )
41      (*the_extension->Callouts.thread_begin)( executing );
42  }
43}
44
45void _User_extensions_Thread_exitted (
46  Thread_Control *executing
47)
48{
49  Chain_Node              *the_node;
50  User_extensions_Control *the_extension;
51
52  for ( the_node = _Chain_Last( &_User_extensions_List );
53        !_Chain_Is_head( &_User_extensions_List, the_node ) ;
54        the_node = the_node->previous ) {
55
56    the_extension = (User_extensions_Control *) the_node;
57
58    if ( the_extension->Callouts.thread_exitted != NULL )
59      (*the_extension->Callouts.thread_exitted)( executing );
60  }
61}
62
63void _User_extensions_Fatal (
64  Internal_errors_Source  the_source,
65  bool                    is_internal,
66  Internal_errors_t       the_error
67)
68{
69  Chain_Node              *the_node;
70  User_extensions_Control *the_extension;
71
72  for ( the_node = _Chain_Last( &_User_extensions_List );
73        !_Chain_Is_head( &_User_extensions_List, the_node ) ;
74        the_node = the_node->previous ) {
75
76    the_extension = (User_extensions_Control *) the_node;
77
78    if ( the_extension->Callouts.fatal != NULL )
79      (*the_extension->Callouts.fatal)( the_source, is_internal, the_error );
80  }
81}
Note: See TracBrowser for help on using the repository browser.