From df0ac0bf32310449649eec0073531c74b79d31c1 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Thu, 18 Feb 1999 16:09:25 +0000 Subject: Should have been removed from cvs early. --- c/src/exec/score/headers/Makefile.in | 48 --- c/src/exec/score/headers/address.h | 31 -- c/src/exec/score/headers/apiext.h | 102 ------ c/src/exec/score/headers/bitfield.h | 98 ------ c/src/exec/score/headers/chain.h | 168 --------- c/src/exec/score/headers/context.h | 134 -------- c/src/exec/score/headers/copyrt.h | 42 --- c/src/exec/score/headers/coremsg.h | 267 --------------- c/src/exec/score/headers/coremutex.h | 172 ---------- c/src/exec/score/headers/coresem.h | 156 --------- c/src/exec/score/headers/debug.h | 98 ------ c/src/exec/score/headers/heap.h | 226 ------------- c/src/exec/score/headers/interr.h | 95 ------ c/src/exec/score/headers/isr.h | 231 ------------- c/src/exec/score/headers/mpci.h | 412 ---------------------- c/src/exec/score/headers/mppkt.h | 101 ------ c/src/exec/score/headers/object.h | 399 ---------------------- c/src/exec/score/headers/objectmp.h | 152 --------- c/src/exec/score/headers/priority.h | 97 ------ c/src/exec/score/headers/stack.h | 50 --- c/src/exec/score/headers/states.h | 84 ----- c/src/exec/score/headers/sysstate.h | 67 ---- c/src/exec/score/headers/system.h | 153 --------- c/src/exec/score/headers/thread.h | 637 ----------------------------------- c/src/exec/score/headers/threadmp.h | 89 ----- c/src/exec/score/headers/threadq.h | 301 ----------------- c/src/exec/score/headers/tod.h | 277 --------------- c/src/exec/score/headers/tqdata.h | 90 ----- c/src/exec/score/headers/userext.h | 211 ------------ c/src/exec/score/headers/watchdog.h | 194 ----------- c/src/exec/score/headers/wkspace.h | 71 ---- 31 files changed, 5253 deletions(-) delete mode 100644 c/src/exec/score/headers/Makefile.in delete mode 100644 c/src/exec/score/headers/address.h delete mode 100644 c/src/exec/score/headers/apiext.h delete mode 100644 c/src/exec/score/headers/bitfield.h delete mode 100644 c/src/exec/score/headers/chain.h delete mode 100644 c/src/exec/score/headers/context.h delete mode 100644 c/src/exec/score/headers/copyrt.h delete mode 100644 c/src/exec/score/headers/coremsg.h delete mode 100644 c/src/exec/score/headers/coremutex.h delete mode 100644 c/src/exec/score/headers/coresem.h delete mode 100644 c/src/exec/score/headers/debug.h delete mode 100644 c/src/exec/score/headers/heap.h delete mode 100644 c/src/exec/score/headers/interr.h delete mode 100644 c/src/exec/score/headers/isr.h delete mode 100644 c/src/exec/score/headers/mpci.h delete mode 100644 c/src/exec/score/headers/mppkt.h delete mode 100644 c/src/exec/score/headers/object.h delete mode 100644 c/src/exec/score/headers/objectmp.h delete mode 100644 c/src/exec/score/headers/priority.h delete mode 100644 c/src/exec/score/headers/stack.h delete mode 100644 c/src/exec/score/headers/states.h delete mode 100644 c/src/exec/score/headers/sysstate.h delete mode 100644 c/src/exec/score/headers/system.h delete mode 100644 c/src/exec/score/headers/thread.h delete mode 100644 c/src/exec/score/headers/threadmp.h delete mode 100644 c/src/exec/score/headers/threadq.h delete mode 100644 c/src/exec/score/headers/tod.h delete mode 100644 c/src/exec/score/headers/tqdata.h delete mode 100644 c/src/exec/score/headers/userext.h delete mode 100644 c/src/exec/score/headers/watchdog.h delete mode 100644 c/src/exec/score/headers/wkspace.h diff --git a/c/src/exec/score/headers/Makefile.in b/c/src/exec/score/headers/Makefile.in deleted file mode 100644 index 792ca73fce..0000000000 --- a/c/src/exec/score/headers/Makefile.in +++ /dev/null @@ -1,48 +0,0 @@ -# -# $Id$ -# - -@SET_MAKE@ -srcdir = @srcdir@ -VPATH = @srcdir@ -RTEMS_ROOT = @top_srcdir@ -PROJECT_ROOT = @PROJECT_ROOT@ - -# We only build multiprocessing related files if HAS_MP was defined -MP_PIECES_yes_V = mpci mppkt objectmp threadmp -MP_PIECES = $(MP_PIECES_$(HAS_MP)_V) - -# H_FILES that get installed in the rtems/score subdirectoy -H_PIECES= address apiext bitfield chain context copyrt coremsg coremutex \ - coresem heap interr isr object \ - priority stack states sysstate thread threadq \ - tod tqdata userext watchdog wkspace -H_FILES=$(H_PIECES:%=$(srcdir)/%.h) - -# H_FILES that get installed in the rtems subdirectoy -SAPI_H_PIECES=debug system -SAPI_H_FILES=$(SAPI_H_PIECES:%=$(srcdir)/%.h) - -# H_FILES that get installed at the top level -EXTERNAL_H_PIECES = -EXTERNAL_H_FILES=$(EXTERNAL_H_PIECES:%=$(srcdir)/%.h) - -SRCS=$(H_FILES) $(SAPI_H_FILES) $(EXTERNAL_H_FILES) - -include $(RTEMS_ROOT)/make/custom/$(RTEMS_BSP).cfg -include $(RTEMS_ROOT)/make/leaf.cfg - -# -# Add your list of files to delete here. The config files -# already know how to delete some stuff, so you may want -# to just run 'make clean' first to see what gets missed. -# 'make clobber' already includes 'make clean' -# - -CLEAN_ADDITIONS += -CLOBBER_ADDITIONS += - -all: $(SRCS) - $(INSTALL) -m 444 ${H_FILES} $(PROJECT_INCLUDE)/rtems/score - $(INSTALL) -m 444 ${SAPI_H_FILES} $(PROJECT_INCLUDE)/rtems/ -# $(INSTALL) -m 444 ${EXTERNAL_H_FILES} $(PROJECT_INCLUDE) diff --git a/c/src/exec/score/headers/address.h b/c/src/exec/score/headers/address.h deleted file mode 100644 index e64cd54931..0000000000 --- a/c/src/exec/score/headers/address.h +++ /dev/null @@ -1,31 +0,0 @@ -/* address.h - * - * This include file contains the information required to manipulate - * physical addresses. - * - * COPYRIGHT (c) 1989-1998. - * On-Line Applications Research Corporation (OAR). - * Copyright assigned to U.S. Government, 1994. - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#ifndef __RTEMS_ADDRESSES_h -#define __RTEMS_ADDRESSES_h - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -#ifdef __cplusplus -} -#endif - -#endif -/* end of include file */ diff --git a/c/src/exec/score/headers/apiext.h b/c/src/exec/score/headers/apiext.h deleted file mode 100644 index 804b2dea4c..0000000000 --- a/c/src/exec/score/headers/apiext.h +++ /dev/null @@ -1,102 +0,0 @@ -/* apiext.h - * - * XXX - * - * COPYRIGHT (c) 1989-1998. - * On-Line Applications Research Corporation (OAR). - * Copyright assigned to U.S. Government, 1994. - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - - -#ifndef __API_EXTENSIONS_h -#define __API_EXTENSIONS_h - -#include -#include - -/* - * The control structure which defines the points at which an API - * can add an extension to the system initialization thread. - */ - -typedef void (*API_extensions_Predriver_hook)(void); -typedef void (*API_extensions_Postdriver_hook)(void); -typedef void (*API_extensions_Postswitch_hook)( - Thread_Control * - ); - - -typedef struct { - Chain_Node Node; - API_extensions_Predriver_hook predriver_hook; - API_extensions_Postdriver_hook postdriver_hook; - API_extensions_Postswitch_hook postswitch_hook; -} API_extensions_Control; - -/* - * This is the list of API extensions to the system initialization. - */ - -SCORE_EXTERN Chain_Control _API_extensions_List; - -/* - * _API_extensions_Initialization - * - * DESCRIPTION: - * - * This routine initializes the API extension handler. - * - */ - -void _API_extensions_Initialization( void ); - -/* - * _API_extensions_Add - * - * DESCRIPTION: - * - * XXX - */ - -void _API_extensions_Add( - API_extensions_Control *the_extension -); - -/* - * _API_extensions_Run_predriver - * - * DESCRIPTION: - * - * XXX - */ - -void _API_extensions_Run_predriver( void ); - -/* - * _API_extensions_Run_postdriver - * - * DESCRIPTION: - * - * XXX - */ - -void _API_extensions_Run_postdriver( void ); - -/* - * _API_extensions_Run_postswitch - * - * DESCRIPTION: - * - * XXX - */ - -void _API_extensions_Run_postswitch( void ); - -#endif -/* end of include file */ diff --git a/c/src/exec/score/headers/bitfield.h b/c/src/exec/score/headers/bitfield.h deleted file mode 100644 index bbced47652..0000000000 --- a/c/src/exec/score/headers/bitfield.h +++ /dev/null @@ -1,98 +0,0 @@ -/* bitfield.h - * - * This include file contains all bit field manipulation routines. - * - * COPYRIGHT (c) 1989-1998. - * On-Line Applications Research Corporation (OAR). - * Copyright assigned to U.S. Government, 1994. - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#ifndef __RTEMS_BITFIELD_h -#define __RTEMS_BITFIELD_h - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * _Bitfield_Find_first_bit - * - * DESCRIPTION: - * - * This routine returns the bit_number of the first bit set - * in the specified value. The correspondence between bit_number - * and actual bit position is processor dependent. The search for - * the first bit set may run from most to least significant bit - * or vice-versa. - * - * NOTE: - * - * This routine is used when the executing thread is removed - * from the ready state and, as a result, its performance has a - * significant impact on the performance of the executive as a whole. - */ - -#if ( CPU_USE_GENERIC_BITFIELD_DATA == TRUE ) - -#ifndef SCORE_INIT -extern const unsigned char __log2table[256]; -#else -const unsigned char __log2table[256] = { - 7, 7, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 -}; -#endif - -#endif - -#if ( CPU_USE_GENERIC_BITFIELD_CODE == FALSE ) - -#define _Bitfield_Find_first_bit( _value, _bit_number ) \ - _CPU_Bitfield_Find_first_bit( _value, _bit_number ) - -#else - -/* - * The following must be a macro because if a CPU specific version - * is used it will most likely use inline assembly. - */ - -#define _Bitfield_Find_first_bit( _value, _bit_number ) \ - { \ - register unsigned32 __value = (unsigned32) (_value); \ - register const unsigned char *__p = __log2table; \ - \ - if ( __value < 0x100 ) \ - (_bit_number) = __p[ __value ] + 8; \ - else \ - (_bit_number) = __p[ __value >> 8 ]; \ - } - -#endif - -#ifdef __cplusplus -} -#endif - -#endif -/* end of include file */ diff --git a/c/src/exec/score/headers/chain.h b/c/src/exec/score/headers/chain.h deleted file mode 100644 index 910f5e4414..0000000000 --- a/c/src/exec/score/headers/chain.h +++ /dev/null @@ -1,168 +0,0 @@ -/* chain.h - * - * This include file contains all the constants and structures associated - * with the Doubly Linked Chain Handler. - * - * COPYRIGHT (c) 1989-1998. - * On-Line Applications Research Corporation (OAR). - * Copyright assigned to U.S. Government, 1994. - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#ifndef __RTEMS_CHAIN_h -#define __RTEMS_CHAIN_h - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -/* - * This is used to manage each element (node) which is placed - * on a chain. - * - * NOTE: Typically, a more complicated structure will use the - * chain package. The more complicated structure will - * include a chain node as the first element in its - * control structure. It will then call the chain package - * with a pointer to that node element. The node pointer - * and the higher level structure start at the same address - * so the user can cast the pointers back and forth. - * - */ - -typedef struct Chain_Node_struct Chain_Node; - -struct Chain_Node_struct { - Chain_Node *next; - Chain_Node *previous; -}; - -/* - * This is used to manage a chain. A chain consists of a doubly - * linked list of zero or more nodes. - * - * NOTE: This implementation does not require special checks for - * manipulating the first and last elements on the chain. - * To accomplish this the chain control structure is - * treated as two overlapping chain nodes. The permanent - * head of the chain overlays a node structure on the - * first and permanent_null fields. The permanent tail - * of the chain overlays a node structure on the - * permanent_null and last elements of the structure. - * - */ - -typedef struct { - Chain_Node *first; - Chain_Node *permanent_null; - Chain_Node *last; -} Chain_Control; - -/* - * _Chain_Initialize - * - * DESCRIPTION: - * - * This routine initializes the_chain structure to manage the - * contiguous array of number_nodes nodes which starts at - * starting_address. Each node is of node_size bytes. - * - */ - -void _Chain_Initialize( - Chain_Control *the_chain, - void *starting_address, - unsigned32 number_nodes, - unsigned32 node_size -); - -/* - * _Chain_Get_first_unprotected - */ - -#ifndef USE_INLINES -Chain_Node *_Chain_Get_first_unprotected( - Chain_Control *the_chain -); -#endif - -/* - * _Chain_Extract - * - * DESCRIPTION: - * - * This routine extracts the_node from the chain on which it resides. - * It disables interrupts to insure the atomicity of the - * extract operation. - * - */ - -void _Chain_Extract( - Chain_Node *the_node -); - -/* - * _Chain_Get - * - * DESCRIPTION: - * - * This function removes the first node from the_chain and returns - * a pointer to that node. If the_chain is empty, then NULL is returned. - * It disables interrupts to insure the atomicity of the - * get operation. - * - */ - -Chain_Node *_Chain_Get( - Chain_Control *the_chain -); - -/* - * _Chain_Insert - * - * DESCRIPTION: - * - * This routine inserts the_node on a chain immediately following - * after_node. It disables interrupts to insure the atomicity - * of the extract operation. - * - */ - -void _Chain_Insert( - Chain_Node *after_node, - Chain_Node *the_node -); - -/* - * _Chain_Append - * - * DESCRIPTION: - * - * This routine appends the_node onto the end of the_chain. - * It disables interrupts to insure the atomicity of the - * append operation. - * - */ - -void _Chain_Append( - Chain_Control *the_chain, - Chain_Node *the_node -); - -#ifndef __RTEMS_APPLICATION__ -#include -#endif - -#ifdef __cplusplus -} -#endif - -#endif -/* end of include file */ diff --git a/c/src/exec/score/headers/context.h b/c/src/exec/score/headers/context.h deleted file mode 100644 index 5a22fd4b6d..0000000000 --- a/c/src/exec/score/headers/context.h +++ /dev/null @@ -1,134 +0,0 @@ -/* context.h - * - * This include file contains all information about a context. - * - * COPYRIGHT (c) 1989-1998. - * On-Line Applications Research Corporation (OAR). - * Copyright assigned to U.S. Government, 1994. - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#ifndef __RTEMS_CONTEXT_h -#define __RTEMS_CONTEXT_h - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -/* - * The following constant defines the number of bytes required - * to store a full floating point context. - */ - -#define CONTEXT_FP_SIZE CPU_CONTEXT_FP_SIZE - -/* - * The following variable is set to TRUE when a reschedule operation - * has determined that the processor should be taken away from the - * currently executing thread and given to the heir thread. - */ - -SCORE_EXTERN volatile boolean _Context_Switch_necessary; - -/* - * _Context_Initialize - * - * DESCRIPTION: - * - * This routine initializes THE_CONTEXT such that the stack - * pointer, interrupt level, and entry point are correct for the - * thread's initial state. - */ - -#define \ - _Context_Initialize( _the_context, _stack, _size, _isr, _entry, _is_fp ) \ - _CPU_Context_Initialize( _the_context, _stack, _size, _isr, _entry, _is_fp ) - -/* - * _Context_Switch - * - * DESCRIPTION: - * - * This routine saves the current context into the EXECUTING - * context record and restores the context specified by HEIR. - */ - -#define _Context_Switch( _executing, _heir ) \ - _CPU_Context_switch( _executing, _heir ) - -/* - * _Context_Restart_self - * - * DESCRIPTION: - * - * This routine restarts the calling thread by restoring its initial - * stack pointer and returning to the thread's entry point. - */ - -#define _Context_Restart_self( _the_context ) \ - _CPU_Context_Restart_self( _the_context ) - -/* - * _Context_Fp_start - * - * DESCRIPTION: - * - * This function returns the starting address of the floating - * point context save area. It is assumed that the are reserved - * for the floating point save area is large enough. - */ - -#define _Context_Fp_start( _base, _offset ) \ - _CPU_Context_Fp_start( (_base), (_offset) ) - -/* - * _Context_Initialize_fp - * - * DESCRIPTION: - * - * This routine initializes the floating point context save - * area to contain an initial known state. - */ - -#define _Context_Initialize_fp( _fp_area ) \ - _CPU_Context_Initialize_fp( _fp_area ) - -/* - * _Context_Restore_fp - * - * DESCRIPTION: - * - * This routine restores the floating point context contained - * in the FP_CONTEXT area. It is assumed that the current - * floating point context has been saved by a previous invocation - * of SAVE_FP. - */ - -#define _Context_Restore_fp( _fp ) \ - _CPU_Context_restore_fp( _fp ) - -/* - * _Context_Save_fp - * - * DESCRIPTION: - * - * This routine saves the current floating point context - * in the FP_CONTEXT area. - */ - -#define _Context_Save_fp( _fp ) \ - _CPU_Context_save_fp( _fp ) - -#ifdef __cplusplus -} -#endif - -#endif -/* end of include file */ diff --git a/c/src/exec/score/headers/copyrt.h b/c/src/exec/score/headers/copyrt.h deleted file mode 100644 index 3a9a5a5c60..0000000000 --- a/c/src/exec/score/headers/copyrt.h +++ /dev/null @@ -1,42 +0,0 @@ -/* copyrt.h - * - * This include file contains the copyright notice for RTEMS - * which is included in every binary copy of the executive. - * - * COPYRIGHT (c) 1989-1998. - * On-Line Applications Research Corporation (OAR). - * Copyright assigned to U.S. Government, 1994. - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#ifndef __RTEMS_COPYRIGHT_h -#define __RTEMS_COPYRIGHT_h - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef SCORE_INIT - -const char _Copyright_Notice[] = -"COPYRIGHT (c) 1989-1998.\n\ -On-Line Applications Research Corporation (OAR).\n\ -Copyright assigned to U.S. Government, 1994.\n"; - -#else - -extern const char _Copyright_Notice[]; - -#endif - -#ifdef __cplusplus -} -#endif - -#endif -/* end of include file */ diff --git a/c/src/exec/score/headers/coremsg.h b/c/src/exec/score/headers/coremsg.h deleted file mode 100644 index 03277e12b7..0000000000 --- a/c/src/exec/score/headers/coremsg.h +++ /dev/null @@ -1,267 +0,0 @@ -/* coremsg.h - * - * This include file contains all the constants and structures associated - * with the Message queue Handler. - * - * COPYRIGHT (c) 1989-1998. - * On-Line Applications Research Corporation (OAR). - * Copyright assigned to U.S. Government, 1994. - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#ifndef __RTEMS_CORE_MESSAGE_QUEUE_h -#define __RTEMS_CORE_MESSAGE_QUEUE_h - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include -#include - -/* - * The following type defines the callout which the API provides - * to support global/multiprocessor operations on message_queues. - */ - -typedef void ( *CORE_message_queue_API_mp_support_callout )( - Thread_Control *, - Objects_Id - ); - -/* - * The following defines the data types needed to manipulate - * the contents of message buffers. - * - * NOTE: The buffer field is normally longer than a single unsigned32. - * but since messages are variable length we just make a ptr to 1. - */ - -typedef struct { - unsigned32 size; - unsigned32 buffer[1]; -} CORE_message_queue_Buffer; - -/* - * The following records define the organization of a message - * buffer. - */ - -typedef struct { - Chain_Node Node; - CORE_message_queue_Buffer Contents; -} CORE_message_queue_Buffer_control; - -/* - * Blocking disciplines for a message_queue. - */ - -typedef enum { - CORE_MESSAGE_QUEUE_DISCIPLINES_FIFO, - CORE_MESSAGE_QUEUE_DISCIPLINES_PRIORITY -} CORE_message_queue_Disciplines; - -/* - * The following enumerated type details the modes in which a message - * may be submitted to a message queue. The message may be posted - * in a send or urgent fashion. - */ - -typedef enum { - CORE_MESSAGE_QUEUE_SEND_REQUEST = 0, - CORE_MESSAGE_QUEUE_URGENT_REQUEST = 1 -} CORE_message_queue_Submit_types; - -/* - * Core Message queue handler return statuses. - */ - -typedef enum { - CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL, - CORE_MESSAGE_QUEUE_STATUS_INVALID_SIZE, - CORE_MESSAGE_QUEUE_STATUS_TOO_MANY, - CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED, - CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_NOWAIT, - CORE_MESSAGE_QUEUE_STATUS_WAS_DELETED, - CORE_MESSAGE_QUEUE_STATUS_TIMEOUT -} CORE_message_queue_Status; - -/* - * The following defines the control block used to manage the - * attributes of each message queue. - */ - -typedef struct { - CORE_message_queue_Disciplines discipline; -} CORE_message_queue_Attributes; - -/* - * The following defines the type for a Notification handler. A notification - * handler is invoked when the message queue makes a 0->1 transition on - * pending messages. - */ - -typedef void (*CORE_message_queue_Notify_Handler)( void * ); - -/* - * The following defines the control block used to manage each - * counting message_queue. - */ - -typedef struct { - Thread_queue_Control Wait_queue; - CORE_message_queue_Attributes Attributes; - unsigned32 maximum_pending_messages; - unsigned32 number_of_pending_messages; - unsigned32 maximum_message_size; - Chain_Control Pending_messages; - CORE_message_queue_Buffer *message_buffers; - CORE_message_queue_Notify_Handler notify_handler; - void *notify_argument; - Chain_Control Inactive_messages; -} CORE_message_queue_Control; - -/* - * _CORE_message_queue_Initialize - * - * DESCRIPTION: - * - * This routine initializes the message_queue based on the parameters passed. - */ - -boolean _CORE_message_queue_Initialize( - CORE_message_queue_Control *the_message_queue, - Objects_Classes the_class, - CORE_message_queue_Attributes *the_message_queue_attributes, - unsigned32 maximum_pending_messages, - unsigned32 maximum_message_size, - Thread_queue_Extract_callout proxy_extract_callout -); - -/* - * _CORE_message_queue_Close - * - * DESCRIPTION: - * - * This function closes a message by returning all allocated space and - * flushing the message_queue's task wait queue. - */ - -void _CORE_message_queue_Close( - CORE_message_queue_Control *the_message_queue, - Thread_queue_Flush_callout remote_extract_callout, - unsigned32 status -); - -/* - * - * _CORE_message_queue_Flush - * - * DESCRIPTION: - * - * This function flushes the message_queue's task wait queue. The number - * messages flushed from the queue is returned. - * - */ - -unsigned32 _CORE_message_queue_Flush( - CORE_message_queue_Control *the_message_queue -); - -/* - * _CORE_message_queue_Flush_support - * - * DESCRIPTION: - * - * This routine flushes all outstanding messages and returns - * them to the inactive message chain. - */ - -unsigned32 _CORE_message_queue_Flush_support( - CORE_message_queue_Control *the_message_queue -); - -/* - * - * _CORE_message_queue_Broadcast - * - * DESCRIPTION: - * - * This function sends a message for every thread waiting on the queue and - * returns the number of threads made ready by the message. - * - */ - -CORE_message_queue_Status _CORE_message_queue_Broadcast( - CORE_message_queue_Control *the_message_queue, - void *buffer, - unsigned32 size, - Objects_Id id, - CORE_message_queue_API_mp_support_callout api_message_queue_mp_support, - unsigned32 *count -); - -/* - * - * _CORE_message_queue_Submit - * - * DESCRIPTION: - * - * This routine implements the send and urgent message functions. It - * processes a message that is to be submitted to the designated - * message queue. The message will either be processed as a - * send message which it will be inserted at the rear of the queue - * or it will be processed as an urgent message which will be inserted - * at the front of the queue. - * - */ - -CORE_message_queue_Status _CORE_message_queue_Submit( - CORE_message_queue_Control *the_message_queue, - void *buffer, - unsigned32 size, - Objects_Id id, - CORE_message_queue_API_mp_support_callout api_message_queue_mp_support, - CORE_message_queue_Submit_types submit_type -); - -/* - * - * _CORE_message_queue_Seize - * - * DESCRIPTION: - * - * This kernel routine dequeues a message, copies the message buffer to - * a given destination buffer, and frees the message buffer to the - * inactive message pool. The thread will be blocked if wait is TRUE, - * otherwise an error will be given to the thread if no messages are available. - * - */ - -void _CORE_message_queue_Seize( - CORE_message_queue_Control *the_message_queue, - Objects_Id id, - void *buffer, - unsigned32 *size, - boolean wait, - Watchdog_Interval timeout -); - -#ifndef __RTEMS_APPLICATION__ -#include -#endif - -#ifdef __cplusplus -} -#endif - -#endif -/* end of include file */ - diff --git a/c/src/exec/score/headers/coremutex.h b/c/src/exec/score/headers/coremutex.h deleted file mode 100644 index 7145e4f19f..0000000000 --- a/c/src/exec/score/headers/coremutex.h +++ /dev/null @@ -1,172 +0,0 @@ -/* mutex.h - * - * This include file contains all the constants and structures associated - * with the Mutex Handler. A mutex is an enhanced version of the standard - * Dijkstra binary semaphore used to provide synchronization and mutual - * exclusion capabilities. - * - * COPYRIGHT (c) 1989-1998. - * On-Line Applications Research Corporation (OAR). - * Copyright assigned to U.S. Government, 1994. - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#ifndef __RTEMS_CORE_MUTEX_h -#define __RTEMS_CORE_MUTEX_h - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include -#include - -/* - * The following type defines the callout which the API provides - * to support global/multiprocessor operations on mutexes. - */ - -typedef void ( *CORE_mutex_API_mp_support_callout )( - Thread_Control *, - Objects_Id - ); - -/* - * Blocking disciplines for a mutex. - */ - -typedef enum { - CORE_MUTEX_DISCIPLINES_FIFO, - CORE_MUTEX_DISCIPLINES_PRIORITY, - CORE_MUTEX_DISCIPLINES_PRIORITY_INHERIT, - CORE_MUTEX_DISCIPLINES_PRIORITY_CEILING -} CORE_mutex_Disciplines; - -/* - * Mutex handler return statuses. - */ - -typedef enum { - CORE_MUTEX_STATUS_SUCCESSFUL, - CORE_MUTEX_STATUS_UNSATISFIED_NOWAIT, - CORE_MUTEX_STATUS_NESTING_NOT_ALLOWED, - CORE_MUTEX_STATUS_NOT_OWNER_OF_RESOURCE, - CORE_MUTEX_WAS_DELETED, - CORE_MUTEX_TIMEOUT, - CORE_MUTEX_STATUS_CEILING_VIOLATED -} CORE_mutex_Status; - -/* - * Locked and unlocked values - */ - -#define CORE_MUTEX_UNLOCKED 1 -#define CORE_MUTEX_LOCKED 0 - -/* - * The following defines the control block used to manage the - * attributes of each mutex. - */ - -typedef struct { - boolean allow_nesting; - CORE_mutex_Disciplines discipline; - Priority_Control priority_ceiling; -} CORE_mutex_Attributes; - -/* - * The following defines the control block used to manage each mutex. - */ - -typedef struct { - Thread_queue_Control Wait_queue; - CORE_mutex_Attributes Attributes; - unsigned32 lock; - unsigned32 nest_count; - Thread_Control *holder; - Objects_Id holder_id; -} CORE_mutex_Control; - -/* - * _CORE_mutex_Initialize - * - * DESCRIPTION: - * - * This routine initializes the mutex based on the parameters passed. - */ - -void _CORE_mutex_Initialize( - CORE_mutex_Control *the_mutex, - Objects_Classes the_class, - CORE_mutex_Attributes *the_mutex_attributes, - unsigned32 initial_lock, - Thread_queue_Extract_callout proxy_extract_callout -); - -/* - * _CORE_mutex_Seize - * - * DESCRIPTION: - * - * This routine attempts to receive a unit from the_mutex. - * If a unit is available or if the wait flag is FALSE, then the routine - * returns. Otherwise, the calling task is blocked until a unit becomes - * available. - */ - -void _CORE_mutex_Seize( - CORE_mutex_Control *the_mutex, - Objects_Id id, - boolean wait, - Watchdog_Interval timeout -); - -/* - * _CORE_mutex_Surrender - * - * DESCRIPTION: - * - * This routine frees a unit to the mutex. If a task was blocked waiting for - * a unit from this mutex, then that task will be readied and the unit - * given to that task. Otherwise, the unit will be returned to the mutex. - */ - -CORE_mutex_Status _CORE_mutex_Surrender( - CORE_mutex_Control *the_mutex, - Objects_Id id, - CORE_mutex_API_mp_support_callout api_mutex_mp_support -); - -/* - * _CORE_mutex_Flush - * - * DESCRIPTION: - * - * This routine assists in the deletion of a mutex by flushing the associated - * wait queue. - */ - -void _CORE_mutex_Flush( - CORE_mutex_Control *the_mutex, - Thread_queue_Flush_callout remote_extract_callout, - unsigned32 status -); - -#ifndef __RTEMS_APPLICATION__ -#include -#endif - -#ifdef __cplusplus -} -#endif - -#endif -/* end of include file */ - diff --git a/c/src/exec/score/headers/coresem.h b/c/src/exec/score/headers/coresem.h deleted file mode 100644 index 2ef1371e8d..0000000000 --- a/c/src/exec/score/headers/coresem.h +++ /dev/null @@ -1,156 +0,0 @@ -/* core_sem.h - * - * This include file contains all the constants and structures associated - * with the Counting Semaphore Handler. A counting semaphore is the - * standard Dijkstra binary semaphore used to provide synchronization - * and mutual exclusion capabilities. - * - * COPYRIGHT (c) 1989-1998. - * On-Line Applications Research Corporation (OAR). - * Copyright assigned to U.S. Government, 1994. - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#ifndef __RTEMS_CORE_COUNTING_SEMAPHORE_h -#define __RTEMS_CORE_COUNTING_SEMAPHORE_h - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include -#include - -/* - * The following type defines the callout which the API provides - * to support global/multiprocessor operations on semaphores. - */ - -typedef void ( *CORE_semaphore_API_mp_support_callout )( - Thread_Control *, - Objects_Id - ); - -/* - * Blocking disciplines for a semaphore. - */ - -typedef enum { - CORE_SEMAPHORE_DISCIPLINES_FIFO, - CORE_SEMAPHORE_DISCIPLINES_PRIORITY -} CORE_semaphore_Disciplines; - -/* - * Core Semaphore handler return statuses. - */ - -typedef enum { - CORE_SEMAPHORE_STATUS_SUCCESSFUL, - CORE_SEMAPHORE_STATUS_UNSATISFIED_NOWAIT, - CORE_SEMAPHORE_WAS_DELETED, - CORE_SEMAPHORE_TIMEOUT -} CORE_semaphore_Status; - -/* - * The following defines the control block used to manage the - * attributes of each semaphore. - */ - -typedef struct { - CORE_semaphore_Disciplines discipline; -} CORE_semaphore_Attributes; - -/* - * The following defines the control block used to manage each - * counting semaphore. - */ - -typedef struct { - Thread_queue_Control Wait_queue; - CORE_semaphore_Attributes Attributes; - unsigned32 count; -} CORE_semaphore_Control; - -/* - * _CORE_semaphore_Initialize - * - * DESCRIPTION: - * - * This routine initializes the semaphore based on the parameters passed. - */ - -void _CORE_semaphore_Initialize( - CORE_semaphore_Control *the_semaphore, - Objects_Classes the_class, - CORE_semaphore_Attributes *the_semaphore_attributes, - unsigned32 initial_value, - Thread_queue_Extract_callout proxy_extract_callout -); - -/* - * _CORE_semaphore_Seize - * - * DESCRIPTION: - * - * This routine attempts to receive a unit from the_semaphore. - * If a unit is available or if the wait flag is FALSE, then the routine - * returns. Otherwise, the calling task is blocked until a unit becomes - * available. - */ - -void _CORE_semaphore_Seize( - CORE_semaphore_Control *the_semaphore, - Objects_Id id, - boolean wait, - Watchdog_Interval timeout -); - -/* - * _CORE_semaphore_Surrender - * - * DESCRIPTION: - * - * This routine frees a unit to the semaphore. If a task was blocked waiting - * for a unit from this semaphore, then that task will be readied and the unit - * given to that task. Otherwise, the unit will be returned to the semaphore. - */ - -CORE_semaphore_Status _CORE_semaphore_Surrender( - CORE_semaphore_Control *the_semaphore, - Objects_Id id, - CORE_semaphore_API_mp_support_callout api_semaphore_mp_support -); - -/* - * _CORE_semaphore_Flush - * - * DESCRIPTION: - * - * This routine assists in the deletion of a semaphore by flushing the - * associated wait queue. - */ - -void _CORE_semaphore_Flush( - CORE_semaphore_Control *the_semaphore, - Thread_queue_Flush_callout remote_extract_callout, - unsigned32 status -); - -#ifndef __RTEMS_APPLICATION__ -#include -#endif - -#ifdef __cplusplus -} -#endif - -#endif -/* end of include file */ - diff --git a/c/src/exec/score/headers/debug.h b/c/src/exec/score/headers/debug.h deleted file mode 100644 index 5c83e67d05..0000000000 --- a/c/src/exec/score/headers/debug.h +++ /dev/null @@ -1,98 +0,0 @@ -/* debug.h - * - * This include file contains the information pertaining to the debug - * support within RTEMS. It is currently cast in the form of a - * Manager since it is externally accessible. - * - * - * COPYRIGHT (c) 1989-1998. - * On-Line Applications Research Corporation (OAR). - * Copyright assigned to U.S. Government, 1994. - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#ifndef __RTEMS_DEBUG_h -#define __RTEMS_DEBUG_h - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * The following type is used to manage the debug mask. - */ - -typedef unsigned32 rtems_debug_control; - -/* - * These constants represent various classes of debugging. - */ - -#define RTEMS_DEBUG_ALL_MASK 0xffffffff -#define RTEMS_DEBUG_REGION 0x00000001 - -/* - * This variable contains the current debug level. - */ - -SCORE_EXTERN rtems_debug_control _Debug_Level; - -/* - * _Debug_Manager_initialization - * - * DESCRIPTION: - * - * This routine performs the initialization necessary for this manager. - */ - -void _Debug_Manager_initialization( void ); - -/* - * rtems_debug_enable - * - * DESCRIPTION: - * - * This routine enables the specified types of debug checks. - */ - -void rtems_debug_enable ( - rtems_debug_control to_be_enabled -); - -/* - * rtems_debug_disable - * - * DESCRIPTION: - * - * This routine disables the specified types of debug checks. - */ - -void rtems_debug_disable ( - rtems_debug_control to_be_disabled -); - -/* - * - * _Debug_Is_enabled - * - * DESCRIPTION: - * - * This routine returns TRUE if the requested debug level is - * enabled, and FALSE otherwise. - */ - -boolean _Debug_Is_enabled( - rtems_debug_control level -); - -#ifdef __cplusplus -} -#endif - -#endif -/* end of include file */ diff --git a/c/src/exec/score/headers/heap.h b/c/src/exec/score/headers/heap.h deleted file mode 100644 index eaee7cde3f..0000000000 --- a/c/src/exec/score/headers/heap.h +++ /dev/null @@ -1,226 +0,0 @@ -/* heap.h - * - * This include file contains the information pertaining to the Heap - * Handler. A heap is a doubly linked list of variable size - * blocks which are allocated using the first fit method. Garbage - * collection is performed each time a block is returned to the heap by - * coalescing neighbor blocks. Control information for both allocated - * and unallocated blocks is contained in the heap space. A heap header - * contains control information for the heap. - * - * COPYRIGHT (c) 1989-1998. - * On-Line Applications Research Corporation (OAR). - * Copyright assigned to U.S. Government, 1994. - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#ifndef __RTEMS_HEAP_h -#define __RTEMS_HEAP_h - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Status codes for heap_extend - */ - -typedef enum { - HEAP_EXTEND_SUCCESSFUL, - HEAP_EXTEND_ERROR, - HEAP_EXTEND_NOT_IMPLEMENTED -} Heap_Extend_status; - -/* - * Constants used in the size/used field of each heap block to - * indicate when a block is free or in use. - */ - -#define HEAP_BLOCK_USED 1 /* indicates block is in use */ -#define HEAP_BLOCK_FREE 0 /* indicates block is free */ - -/* - * The size/used field value for the dummy front and back flags. - */ - -#define HEAP_DUMMY_FLAG (0 + HEAP_BLOCK_USED) - -/* - * The following constants reflect various requirements of the - * heap data structures which impact the management of a heap. - * - * NOTE: Because free block overhead is greater than used block - * overhead AND a portion of the allocated space is from - * the extra free block overhead, the absolute lower bound - * of the minimum fragment size is equal to the size of - * the free block overhead. - */ - -#define HEAP_OVERHEAD \ - (sizeof( unsigned32 ) * 2) /* size dummy first and last blocks */ -#define HEAP_BLOCK_USED_OVERHEAD \ - (sizeof( void * ) * 2) /* num bytes overhead in used block */ -#define HEAP_MINIMUM_SIZE \ - (HEAP_OVERHEAD + sizeof (Heap_Block)) - /* min number of bytes the user may */ - /* specify for the heap size */ - -/* - * The following defines the data structure used to manage - * individual blocks in a heap. When the block is allocated, the - * next and previous fields are not used by the Heap Handler - * and thus the address returned for the block starts at - * the address of the next field. - * - * NOTE: The next and previous pointers are only valid when the - * block is free. Caution must be exercised to insure that - * allocated blocks are large enough to contain them and - * that they are not accidentally overwritten when the - * block is actually allocated. - */ - -typedef struct Heap_Block_struct Heap_Block; - -struct Heap_Block_struct { - unsigned32 back_flag; /* size and status of prev block */ - unsigned32 front_flag; /* size and status of block */ - Heap_Block *next; /* pointer to next block */ - Heap_Block *previous; /* pointer to previous block */ -}; - -/* - * The following defines the control block used to manage each heap. - * - * NOTE: - * - * This structure is layed out such that it can be used a a dummy - * first and last block on the free block chain. The extra padding - * insures the dummy last block is the correct size. - * - * The first Heap_Block starts at first while the second starts at - * final. This is effectively the same trick as is used in the Chain - * Handler. - */ - -typedef struct { - Heap_Block *start; /* first valid block address in heap */ - Heap_Block *final; /* last valid block address in heap */ - - Heap_Block *first; /* pointer to first block in heap */ - Heap_Block *permanent_null; /* always NULL pointer */ - Heap_Block *last; /* pointer to last block in heap */ - unsigned32 page_size; /* allocation unit */ - unsigned32 reserved; -} Heap_Control; - -/* - * _Heap_Initialize - * - * DESCRIPTION: - * - * This routine initializes the_heap record to manage the - * contiguous heap of size bytes which starts at starting_address. - * Blocks of memory are allocated from the heap in multiples of - * page_size byte units. - */ - -unsigned32 _Heap_Initialize( - Heap_Control *the_heap, - void *starting_address, - unsigned32 size, - unsigned32 page_size -); - -/* - * _Heap_Extend - * - * DESCRIPTION: - * - * This routine grows the_heap memory area using the size bytes which - * begin at starting_address. - */ - -Heap_Extend_status _Heap_Extend( - Heap_Control *the_heap, - void *starting_address, - unsigned32 size, - unsigned32 *amount_extended -); - -/* - * _Heap_Allocate - * - * DESCRIPTION: - * - * DESCRIPTION: - * - * This function attempts to allocate a block of size bytes from - * the_heap. If insufficient memory is free in the_heap to allocate - * a block of the requested size, then NULL is returned. - */ - -void *_Heap_Allocate( - Heap_Control *the_heap, - unsigned32 size -); - -/* - * _Heap_Size_of_user_area - * - * DESCRIPTION: - * - * This kernel routine sets size to the size of the given heap block. - * It returns TRUE if the starting_address is in the heap, and FALSE - * otherwise. - */ - -boolean _Heap_Size_of_user_area( - Heap_Control *the_heap, - void *starting_address, - unsigned32 *size -); - -/* - * _Heap_Free - * - * DESCRIPTION: - * - * This routine returns the block of memory which begins - * at starting_address to the_heap. Any coalescing which is - * possible with the freeing of this routine is performed. - */ - -boolean _Heap_Free( - Heap_Control *the_heap, - void *start_address -); - -/* - * _Heap_Walk - * - * DESCRIPTION: - * - * This routine walks the heap to verify its integrity. - */ - -void _Heap_Walk( - Heap_Control *the_heap, - int source, - boolean do_dump -); - -#ifndef __RTEMS_APPLICATION__ -#include -#endif - -#ifdef __cplusplus -} -#endif - -#endif -/* end of include file */ diff --git a/c/src/exec/score/headers/interr.h b/c/src/exec/score/headers/interr.h deleted file mode 100644 index e999ceff7a..0000000000 --- a/c/src/exec/score/headers/interr.h +++ /dev/null @@ -1,95 +0,0 @@ -/* interr.h - * - * This include file contains constants and prototypes related - * to the Internal Error Handler. - * - * - * COPYRIGHT (c) 1989-1998. - * On-Line Applications Research Corporation (OAR). - * Copyright assigned to U.S. Government, 1994. - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#ifndef __RTEMS_INTERNAL_ERROR_h -#define __RTEMS_INTERNAL_ERROR_h - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * This type lists the possible sources from which an error - * can be reported. - */ - -typedef enum { - INTERNAL_ERROR_CORE, - INTERNAL_ERROR_RTEMS_API, - INTERNAL_ERROR_POSIX_API -} Internal_errors_Source; - -/* - * A list of errors which are generated internally by the executive core. - */ - -typedef enum { - INTERNAL_ERROR_NO_CONFIGURATION_TABLE, - INTERNAL_ERROR_NO_CPU_TABLE, - INTERNAL_ERROR_INVALID_WORKSPACE_ADDRESS, - INTERNAL_ERROR_TOO_LITTLE_WORKSPACE, - INTERNAL_ERROR_WORKSPACE_ALLOCATION, - INTERNAL_ERROR_INTERRUPT_STACK_TOO_SMALL, - INTERNAL_ERROR_THREAD_EXITTED, - INTERNAL_ERROR_INCONSISTENT_MP_INFORMATION, - INTERNAL_ERROR_INVALID_NODE, - INTERNAL_ERROR_NO_MPCI, - INTERNAL_ERROR_BAD_PACKET, - INTERNAL_ERROR_OUT_OF_PACKETS, - INTERNAL_ERROR_OUT_OF_GLOBAL_OBJECTS, - INTERNAL_ERROR_OUT_OF_PROXIES, - INTERNAL_ERROR_INVALID_GLOBAL_ID, - INTERNAL_ERROR_BAD_STACK_HOOK -} Internal_errors_Core_list; - -/* - * This type holds the fatal error information. - */ - -typedef struct { - Internal_errors_Source the_source; - boolean is_internal; - unsigned32 the_error; -} Internal_errors_Information; - -/* - * When a fatal error occurs, the error information is stored here. - */ - -SCORE_EXTERN Internal_errors_Information Internal_errors_What_happened; - -/* - * _Internal_error_Occurred - * - * DESCRIPTION: - * - * This routine is invoked when the application or the executive itself - * determines that a fatal error has occurred. - */ - -void volatile _Internal_error_Occurred( - Internal_errors_Source the_source, - boolean is_internal, - unsigned32 the_error -); - -#ifdef __cplusplus -} -#endif - -#endif -/* end of include file */ diff --git a/c/src/exec/score/headers/isr.h b/c/src/exec/score/headers/isr.h deleted file mode 100644 index 97ffe7f2ec..0000000000 --- a/c/src/exec/score/headers/isr.h +++ /dev/null @@ -1,231 +0,0 @@ -/* isr.h - * - * This include file contains all the constants and structures associated - * with the management of processor interrupt levels. This handler - * supports interrupt critical sections, vectoring of user interrupt - * handlers, nesting of interrupts, and manipulating interrupt levels. - * - * COPYRIGHT (c) 1989-1998. - * On-Line Applications Research Corporation (OAR). - * Copyright assigned to U.S. Government, 1994. - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#ifndef __ISR_h -#define __ISR_h - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * The following type defines the control block used to manage - * the interrupt level portion of the status register. - */ - -typedef unsigned32 ISR_Level; - -/* - * The following type defines the type used to manage the vectors. - */ - -typedef unsigned32 ISR_Vector_number; - -/* - * Return type for ISR Handler - */ - -typedef void ISR_Handler; - -/* - * Pointer to an ISR Handler - */ - -#if (CPU_ISR_PASSES_FRAME_POINTER == 1) -typedef ISR_Handler ( *ISR_Handler_entry )( - ISR_Vector_number, - CPU_Interrupt_frame * - ); -#else -typedef ISR_Handler ( *ISR_Handler_entry )( - ISR_Vector_number - ); -#endif -/* - * This constant promotes out the number of vectors truly supported by - * the current CPU being used. This is usually the number of distinct vectors - * the cpu can vector. - */ - -#define ISR_NUMBER_OF_VECTORS CPU_INTERRUPT_NUMBER_OF_VECTORS - -/* - * This constant promotes out the highest valid interrupt vector number. - */ - -#define ISR_INTERRUPT_MAXIMUM_VECTOR_NUMBER CPU_INTERRUPT_MAXIMUM_VECTOR_NUMBER - -/* - * The following is TRUE if signals have been sent to the currently - * executing thread by an ISR handler. - */ - -SCORE_EXTERN boolean _ISR_Signals_to_thread_executing; - -/* - * The following contains the interrupt service routine nest level. - * When this variable is zero, a thread is executing. - */ - -SCORE_EXTERN unsigned32 _ISR_Nest_level; - -/* - * The following declares the Vector Table. Application - * interrupt service routines are vectored by the ISR Handler via this table. - */ - -SCORE_EXTERN ISR_Handler_entry _ISR_Vector_table[ ISR_NUMBER_OF_VECTORS ]; - -/* - * _ISR_Handler_initialization - * - * DESCRIPTION: - * - * This routine performs the initialization necessary for this handler. - */ - -void _ISR_Handler_initialization ( void ); - -/* - * _ISR_Disable - * - * DESCRIPTION: - * - * This routine disables all interrupts so that a critical section - * of code can be executing without being interrupted. Upon return, - * the argument _level will contain the previous interrupt mask level. - */ - -#define _ISR_Disable( _level ) \ - _CPU_ISR_Disable( _level ) - -/* - * _ISR_Enable - * - * DESCRIPTION: - * - * This routine enables interrupts to the previous interrupt mask - * LEVEL. It is used at the end of a critical section of code to - * enable interrupts so they can be processed again. - */ - -#define _ISR_Enable( _level ) \ - _CPU_ISR_Enable( _level ) - -/* - * _ISR_Flash - * - * DESCRIPTION: - * - * This routine temporarily enables interrupts to the previous - * interrupt mask level and then disables all interrupts so that - * the caller can continue into the second part of a critical - * section. This routine is used to temporarily enable interrupts - * during a long critical section. It is used in long sections of - * critical code when a point is reached at which interrupts can - * be temporarily enabled. Deciding where to flash interrupts - * in a long critical section is often difficult and the point - * must be selected with care to insure that the critical section - * properly protects itself. - */ - -#define _ISR_Flash( _level ) \ - _CPU_ISR_Flash( _level ) - -/* - * _ISR_Install_vector - * - * DESCRIPTION: - * - * This routine installs new_handler as the interrupt service routine - * for the specified vector. The previous interrupt service routine is - * returned as old_handler. - */ - -#define _ISR_Install_vector( _vector, _new_handler, _old_handler ) \ - _CPU_ISR_install_vector( _vector, _new_handler, _old_handler ) - -/* - * _ISR_Get_level - * - * DESCRIPTION: - * - * This routine returns the current interrupt level. - */ - -#define _ISR_Get_level() \ - _CPU_ISR_Get_level() - -/* - * _ISR_Set_level - * - * DESCRIPTION: - * - * This routine sets the current interrupt level to that specified - * by new_level. The new interrupt level is effective when the - * routine exits. - */ - -#define _ISR_Set_level( _new_level ) \ - _CPU_ISR_Set_level( _new_level ) - -/* - * _ISR_Handler - * - * DESCRIPTION: - * - * This routine is the interrupt dispatcher. ALL interrupts - * are vectored to this routine so that minimal context can be saved - * and setup performed before the application's high-level language - * interrupt service routine is invoked. After the application's - * interrupt service routine returns control to this routine, it - * will determine if a thread dispatch is necessary. If so, it will - * insure that the necessary thread scheduling operations are - * performed when the outermost interrupt service routine exits. - * - * NOTE: Implemented in assembly language. - */ - -void _ISR_Handler( void ); - -/* - * _ISR_Dispatch - * - * DESCRIPTION: - * - * This routine provides a wrapper so that the routine - * _Thread_Dispatch can be invoked when a reschedule is necessary - * at the end of the outermost interrupt service routine. This - * wrapper is necessary to establish the processor context needed - * by _Thread_Dispatch and to save the processor context which is - * corrupted by _Thread_Dispatch. This context typically consists - * of registers which are not preserved across routine invocations. - * - * NOTE: Implemented in assembly language. - */ - -void _ISR_Dispatch( void ); - -#include - -#ifdef __cplusplus -} -#endif - -#endif -/* end of include file */ diff --git a/c/src/exec/score/headers/mpci.h b/c/src/exec/score/headers/mpci.h deleted file mode 100644 index 4475021eca..0000000000 --- a/c/src/exec/score/headers/mpci.h +++ /dev/null @@ -1,412 +0,0 @@ -/* mpci.h - * - * This include file contains all the constants and structures associated - * with the MPCI layer. It provides mechanisms to utilize packets. - * - * COPYRIGHT (c) 1989-1998. - * On-Line Applications Research Corporation (OAR). - * Copyright assigned to U.S. Government, 1994. - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#ifndef __MPCI_h -#define __MPCI_h - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include -#include -#include -#include -#include - -/* - * The following constants define the stack size requirements for - * the system threads. - */ - -#define MPCI_RECEIVE_SERVER_STACK_SIZE \ - ( STACK_MINIMUM_SIZE + \ - CPU_MPCI_RECEIVE_SERVER_EXTRA_STACK + \ - _CPU_Table.extra_mpci_receive_server_stack \ - ) - -/* - * The following defines the node number used when a broadcast is desired. - */ - -#define MPCI_ALL_NODES 0 - -/* - * For packets associated with requests that don't already have a timeout, - * use the one specified by this MPCI driver. The value specified by - * the MPCI driver sets an upper limit on how long a remote request - * should take to complete. - */ - -#define MPCI_DEFAULT_TIMEOUT 0xFFFFFFFF - -/* - * The following records define the Multiprocessor Communications - * Interface (MPCI) Table. This table defines the user-provided - * MPCI which is a required part of a multiprocessor system. - * - * For non-blocking local operations that become remote operations, - * we need a timeout. This is a per-driver timeout: default_timeout - */ - -typedef void MPCI_Entry; - -typedef MPCI_Entry ( *MPCI_initialization_entry )( void ); - -typedef MPCI_Entry ( *MPCI_get_packet_entry )( - MP_packet_Prefix ** - ); - -typedef MPCI_Entry ( *MPCI_return_packet_entry )( - MP_packet_Prefix * - ); - -typedef MPCI_Entry ( *MPCI_send_entry )( - unsigned32, - MP_packet_Prefix * - ); - -typedef MPCI_Entry ( *MPCI_receive_entry )( - MP_packet_Prefix ** - ); - -typedef struct { - unsigned32 default_timeout; /* in ticks */ - unsigned32 maximum_packet_size; - MPCI_initialization_entry initialization; - MPCI_get_packet_entry get_packet; - MPCI_return_packet_entry return_packet; - MPCI_send_entry send_packet; - MPCI_receive_entry receive_packet; -} MPCI_Control; - -/* - * The following defines the type for packet processing routines - * invoked by the MPCI Receive server. - */ - -typedef void (*MPCI_Packet_processor)( MP_packet_Prefix * ); - -/* - * The following enumerated type defines the list of - * internal MP operations. - */ - -typedef enum { - MPCI_PACKETS_SYSTEM_VERIFY = 0 -} MPCI_Internal_Remote_operations; - -/* - * The following data structure defines the packet used to perform - * remote event operations. - */ - -typedef struct { - MP_packet_Prefix Prefix; - MPCI_Internal_Remote_operations operation; - unsigned32 maximum_nodes; - unsigned32 maximum_global_objects; -} MPCI_Internal_packet; - -/* - * This is the core semaphore which the MPCI Receive Server blocks on. - */ - -SCORE_EXTERN CORE_semaphore_Control _MPCI_Semaphore; -/* - * The following thread queue is used to maintain a list of tasks - * which currently have outstanding remote requests. - */ - -SCORE_EXTERN Thread_queue_Control _MPCI_Remote_blocked_threads; - -/* - * The following define the internal pointers to the user's - * configuration information. - */ - -SCORE_EXTERN MPCI_Control *_MPCI_table; - -/* - * The following points to the MPCI Receive Server. - */ - -SCORE_EXTERN Thread_Control *_MPCI_Receive_server_tcb; - -/* - * The following table contains the process packet routines provided - * by each object that supports MP operations. - */ - -SCORE_EXTERN MPCI_Packet_processor - _MPCI_Packet_processors[MP_PACKET_CLASSES_LAST+1]; - -/* - * _MPCI_Handler_initialization - * - * DESCRIPTION: - * - * This routine performs the initialization necessary for this handler. - */ - -void _MPCI_Handler_initialization( - MPCI_Control *users_mpci_table, - unsigned32 timeout_status -); - -/* - * _MPCI_Create_server - * - * DESCRIPTION: - * - * This routine creates the packet receive server used in MP systems. - */ - -void _MPCI_Create_server( void ); - -/* - * _MPCI_Initialization - * - * DESCRIPTION: - * - * This routine initializes the MPCI driver by - * invoking the user provided MPCI initialization callout. - */ - -void _MPCI_Initialization ( void ); - -/* - * _MPCI_Register_packet_processor - * - * DESCRIPTION: - * - * This routine registers the MPCI packet processor for the - * designated object class. - */ - -void _MPCI_Register_packet_processor( - MP_packet_Classes the_class, - MPCI_Packet_processor the_packet_processor - -); - -/* - * _MPCI_Get_packet - * - * DESCRIPTION: - * - * This function obtains a packet by invoking the user provided - * MPCI get packet callout. - */ - -MP_packet_Prefix *_MPCI_Get_packet ( void ); - -/* - * _MPCI_Return_packet - * - * DESCRIPTION: - * - * This routine returns a packet by invoking the user provided - * MPCI return packet callout. - */ - -void _MPCI_Return_packet ( - MP_packet_Prefix *the_packet -); - -/* - * _MPCI_Send_process_packet - * - * DESCRIPTION: - * - * This routine sends a process packet by invoking the user provided - * MPCI send callout. - */ - -void _MPCI_Send_process_packet ( - unsigned32 destination, - MP_packet_Prefix *the_packet -); - -/* - * _MPCI_Send_request_packet - * - * DESCRIPTION: - * - * This routine sends a request packet by invoking the user provided - * MPCI send callout. - */ - -unsigned32 _MPCI_Send_request_packet ( - unsigned32 destination, - MP_packet_Prefix *the_packet, - States_Control extra_state -); - -/* - * _MPCI_Send_response_packet - * - * DESCRIPTION: - * - * This routine sends a response packet by invoking the user provided - * MPCI send callout. - */ - -void _MPCI_Send_response_packet ( - unsigned32 destination, - MP_packet_Prefix *the_packet -); - -/* - * _MPCI_Receive_packet - * - * DESCRIPTION: - * - * This routine receives a packet by invoking the user provided - * MPCI receive callout. - */ - -MP_packet_Prefix *_MPCI_Receive_packet ( void ); - -/* - * _MPCI_Process_response - * - * DESCRIPTION: - * - * This routine obtains a packet by invoking the user provided - * MPCI get packet callout. - */ - -Thread_Control *_MPCI_Process_response ( - MP_packet_Prefix *the_packet -); - -/*PAGE - * - * _MPCI_Receive_server - * - */ - -Thread _MPCI_Receive_server( - unsigned32 ignored -); - -/*PAGE - * - * _MPCI_Announce - * - * DESCRIPTION: - * - * XXX - */ - -void _MPCI_Announce ( void ); - -/* - * _MPCI_Internal_packets_Send_process_packet - * - * DESCRIPTION: - * - * This routine performs a remote procedure call so that a - * process operation can be performed on another node. - */ - -void _MPCI_Internal_packets_Send_process_packet ( - MPCI_Internal_Remote_operations operation -); - -/* - * _MPCI_Internal_packets_Send_request_packet - * - * DESCRIPTION: - * - * This routine performs a remote procedure call so that a - * directive operation can be initiated on another node. - * - * This routine is not needed since there are no request - * packets to be sent by this manager. - */ - -/* - * _MPCI_Internal_packets_Send_response_packet - * - * DESCRIPTION: - * - * This routine performs a remote procedure call so that a - * directive can be performed on another node. - * - * This routine is not needed since there are no response - * packets to be sent by this manager. - */ - -/* - * - * _MPCI_Internal_packets_Process_packet - * - * DESCRIPTION: - * - * This routine performs the actions specific to this package for - * the request from another node. - */ - -void _MPCI_Internal_packets_Process_packet ( - MP_packet_Prefix *the_packet_prefix -); - -/* - * _MPCI_Internal_packets_Send_object_was_deleted - * - * DESCRIPTION: - * - * This routine is invoked indirectly by the thread queue - * when a proxy has been removed from the thread queue and - * the remote node must be informed of this. - * - * This routine is not needed since there are no objects - * deleted by this manager. - */ - -/* - * _MPCI_Internal_packets_Send_extract_proxy - * - * DESCRIPTION: - * - * This routine is invoked when a task is deleted and it - * has a proxy which must be removed from a thread queue and - * the remote node must be informed of this. - * - * This routine is not needed since there are no objects - * deleted by this manager. - */ - -/* - * _MPCI_Internal_packets_Get_packet - * - * DESCRIPTION: - * - * This routine is used to obtain a internal threads mp packet. - */ - - MPCI_Internal_packet *_MPCI_Internal_packets_Get_packet ( void ); - -#ifdef __cplusplus -} -#endif - -#endif -/* end of include file */ diff --git a/c/src/exec/score/headers/mppkt.h b/c/src/exec/score/headers/mppkt.h deleted file mode 100644 index 1838d92336..0000000000 --- a/c/src/exec/score/headers/mppkt.h +++ /dev/null @@ -1,101 +0,0 @@ -/* mppkt.h - * - * This package is the specification for the Packet Handler. - * This handler defines the basic packet and provides - * mechanisms to utilize packets based on this prefix. - * Packets are the fundamental basis for messages passed between - * nodes in an MP system. - * - * - * COPYRIGHT (c) 1989-1998. - * On-Line Applications Research Corporation (OAR). - * Copyright assigned to U.S. Government, 1994. - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#ifndef __MP_PACKET_h -#define __MP_PACKET_h - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include - -/* - * The following enumerated type defines the packet classes. - * - * NOTE: In general, each class corresponds to a manager - * which supports global operations. Each manager - * defines the set of supported operations. - */ - -typedef enum { - MP_PACKET_MPCI_INTERNAL = 0, - MP_PACKET_TASKS = 1, - MP_PACKET_MESSAGE_QUEUE = 2, - MP_PACKET_SEMAPHORE = 3, - MP_PACKET_PARTITION = 4, - MP_PACKET_REGION = 5, - MP_PACKET_EVENT = 6, - MP_PACKET_SIGNAL = 7 -} MP_packet_Classes; - -#define MP_PACKET_CLASSES_FIRST MP_PACKET_MPCI_INTERNAL -#define MP_PACKET_CLASSES_LAST MP_PACKET_SIGNAL - -/* - * The following record contains the prefix for every packet - * passed between nodes in an MP system. - * - * NOTE: This structure is padded to insure that anything - * following it is on a 16 byte boundary. This is - * the most stringent structure alignment rule - * encountered yet (i960CA). - */ - -typedef struct { - MP_packet_Classes the_class; - Objects_Id id; - Objects_Id source_tid; - Priority_Control source_priority; - unsigned32 return_code; - unsigned32 length; - unsigned32 to_convert; - Watchdog_Interval timeout; -} MP_packet_Prefix; - -/* - * An MPCI must support packets of at least this size. - */ - -#define MP_PACKET_MINIMUM_PACKET_SIZE 64 - -/* - * The following constant defines the number of unsigned32's - * in a packet which must be converted to native format in a - * heterogeneous system. In packets longer than - * MP_PACKET_MINIMUN_HETERO_CONVERSION unsigned32's, some of the "extra" data - * may a user message buffer which is not automatically endian swapped. - */ - -#define MP_PACKET_MINIMUN_HETERO_CONVERSION \ - ( sizeof( MP_packet_Prefix ) / sizeof( unsigned32 ) ) - -#ifndef __RTEMS_APPLICATION__ -#include -#endif - -#ifdef __cplusplus -} -#endif - -#endif -/* end of include file */ diff --git a/c/src/exec/score/headers/object.h b/c/src/exec/score/headers/object.h deleted file mode 100644 index a0bf3707b6..0000000000 --- a/c/src/exec/score/headers/object.h +++ /dev/null @@ -1,399 +0,0 @@ -/* object.h - * - * This include file contains all the constants and structures associated - * with the Object Handler. This Handler provides mechanisms which - * can be used to initialize and manipulate all objects which have - * ids. - * - * COPYRIGHT (c) 1989-1998. - * On-Line Applications Research Corporation (OAR). - * Copyright assigned to U.S. Government, 1994. - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#ifndef __OBJECTS_h -#define __OBJECTS_h - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -/* - * The following type defines the control block used to manage - * object names. - */ - -typedef void * Objects_Name; - -/* - * Space for object names is allocated in multiples of this. - * - * NOTE: Must be a power of 2. Matches the name manipulation routines. - */ - -#define OBJECTS_NAME_ALIGNMENT sizeof( unsigned32 ) - -/* - * Functions which compare names are prototyped like this. - */ - -typedef boolean (*Objects_Name_comparators)( - void * /* name_1 */, - void * /* name_2 */, - unsigned32 /* length */ -); - -/* - * The following type defines the control block used to manage - * object IDs. The format is as follows (0=LSB): - * - * Bits 0 .. 15 = index - * Bits 16 .. 25 = node - * Bits 26 .. 31 = class - */ - -typedef unsigned32 Objects_Id; - -#define OBJECTS_INDEX_START_BIT 0 -#define OBJECTS_NODE_START_BIT 16 -#define OBJECTS_CLASS_START_BIT 26 - -#define OBJECTS_INDEX_MASK 0x0000ffff -#define OBJECTS_NODE_MASK 0x03ff0000 -#define OBJECTS_CLASS_MASK 0xfc000000 - -#define OBJECTS_INDEX_VALID_BITS 0x0000ffff -#define OBJECTS_NODE_VALID_BITS 0x000003ff -#define OBJECTS_CLASS_VALID_BITS 0x000000cf - -/* - * This enumerated type is used in the class field of the object ID. - */ - -typedef enum { - OBJECTS_NO_CLASS = 0, - OBJECTS_INTERNAL_THREADS = 1, - OBJECTS_RTEMS_TASKS = 2, - OBJECTS_POSIX_THREADS = 3, - OBJECTS_RTEMS_TIMERS = 4, - OBJECTS_RTEMS_SEMAPHORES = 5, - OBJECTS_RTEMS_MESSAGE_QUEUES = 6, - OBJECTS_RTEMS_PARTITIONS = 7, - OBJECTS_RTEMS_REGIONS = 8, - OBJECTS_RTEMS_PORTS = 9, - OBJECTS_RTEMS_PERIODS = 10, - OBJECTS_RTEMS_EXTENSIONS = 11, - OBJECTS_POSIX_KEYS = 12, - OBJECTS_POSIX_INTERRUPTS = 13, - OBJECTS_POSIX_MESSAGE_QUEUES = 14, - OBJECTS_POSIX_MUTEXES = 15, - OBJECTS_POSIX_SEMAPHORES = 16, - OBJECTS_POSIX_CONDITION_VARIABLES = 17 -} Objects_Classes; - -#define OBJECTS_CLASSES_FIRST OBJECTS_NO_CLASS -#define OBJECTS_CLASSES_LAST OBJECTS_POSIX_CONDITION_VARIABLES -#define OBJECTS_CLASSES_FIRST_THREAD_CLASS OBJECTS_INTERNAL_THREADS -#define OBJECTS_CLASSES_LAST_THREAD_CLASS OBJECTS_POSIX_THREADS - -/* - * This enumerated type lists the locations which may be returned - * by _Objects_Get. These codes indicate the success of locating - * an object with the specified ID. - */ - -typedef enum { - OBJECTS_LOCAL = 0, /* object is local */ - OBJECTS_REMOTE = 1, /* object is remote */ - OBJECTS_ERROR = 2 /* id was invalid */ -} Objects_Locations; - -/* - * The following defines the Object Control Block used to manage - * each object local to this node. - */ - -typedef struct { - Chain_Node Node; - Objects_Id id; - Objects_Name name; -} Objects_Control; - -/* - * The following defines the structure for the information used to - * manage each class of objects. - */ - -typedef struct { - Objects_Classes the_class; /* Class of this object */ - Objects_Id minimum_id; /* minimum valid id of this type */ - Objects_Id maximum_id; /* maximum valid id of this type */ - unsigned32 maximum; /* maximum number of objects */ - Objects_Control **local_table; /* table of local object pointers */ - Objects_Name *name_table; /* table of local object names */ - Chain_Control *global_table; /* pointer to global table */ - Chain_Control Inactive; /* chain of inactive ctl blocks */ - boolean is_string; /* TRUE if names are strings */ - unsigned32 name_length; /* maximum length of names */ - boolean is_thread; /* TRUE if these are threads */ - /* irregardless of API */ -} Objects_Information; - -/* - * The following defines the data storage which contains the - * node number of the local node. - */ - -SCORE_EXTERN unsigned32 _Objects_Local_node; -SCORE_EXTERN unsigned32 _Objects_Maximum_nodes; - -/* - * The following is the list of information blocks for each object - * class. From the ID, we can go to one of these information blocks, - * and obtain a pointer to the appropriate object control block. - */ - -SCORE_EXTERN Objects_Information - *_Objects_Information_table[OBJECTS_CLASSES_LAST + 1]; - -/* - * The following defines the constant which may be used - * with _Objects_Get to manipulate the calling task. - * - */ - -#define OBJECTS_ID_OF_SELF ((Objects_Id) 0) - -/* - * The following define the constants which may be used in name searches. - */ - -#define OBJECTS_SEARCH_ALL_NODES 0 -#define OBJECTS_SEARCH_OTHER_NODES 0x7FFFFFFE -#define OBJECTS_SEARCH_LOCAL_NODE 0x7FFFFFFF -#define OBJECTS_WHO_AM_I 0 - -/* - * Parameters and return id's for _Objects_Get_next - */ - -#define OBJECTS_ID_INITIAL_INDEX (0) -#define OBJECTS_ID_FINAL_INDEX (0xffff) - -#define OBJECTS_ID_INITIAL(_class, _node) \ - _Objects_Build_id( (_class), (_node), OBJECTS_ID_INITIAL_INDEX ) - -#define OBJECTS_ID_FINAL ((Objects_Id)~0) - -/* - * _Objects_Handler_initialization - * - * DESCRIPTION: - * - * This function performs the initialization necessary for this handler. - * - */ - -void _Objects_Handler_initialization( - unsigned32 node, - unsigned32 maximum_nodes, - unsigned32 maximum_global_objects -); - -/* - * _Objects_Initialize_information - * - * DESCRIPTION: - * - * This function initializes an object class information record. - * SUPPORTS_GLOBAL is TRUE if the object class supports global - * objects, and FALSE otherwise. Maximum indicates the number - * of objects required in this class and size indicates the size - * in bytes of each control block for this object class. The - * name length and string designator are also set. In addition, - * the class may be a task, therefore this information is also included. - */ - -void _Objects_Initialize_information ( - Objects_Information *information, - Objects_Classes the_class, - boolean supports_global, - unsigned32 maximum, - unsigned32 size, - boolean is_string, - unsigned32 maximum_name_length, - boolean is_task -); - -/* - * _Objects_Clear_name - * - * DESCRIPTION: - * - * XXX - */ - -void _Objects_Clear_name( - void *name, - unsigned32 length -); - -/* - * _Objects_Copy_name_string - * - * DESCRIPTION: - * - * XXX - */ - -void _Objects_Copy_name_string( - void *source, - void *destination -); - -/* - * _Objects_Copy_name_raw - * - * DESCRIPTION: - * - * XXX - */ - -void _Objects_Copy_name_raw( - void *source, - void *destination, - unsigned32 length -); - -/* - * _Objects_Compare_name_string - * - * DESCRIPTION: - * - * XXX - */ - -boolean _Objects_Compare_name_string( - void *name_1, - void *name_2, - unsigned32 length -); - -/* - * _Objects_Compare_name_raw - * - * DESCRIPTION: - * - * XXX - */ - -boolean _Objects_Compare_name_raw( - void *name_1, - void *name_2, - unsigned32 length -); -/* - * _Objects_Name_to_id - * - * DESCRIPTION: - * - * This function implements the common portion of the object - * identification directives. This directive returns the object - * id associated with name. If more than one object of this class - * is named name, then the object to which the id belongs is - * arbitrary. Node indicates the extent of the search for the - * id of the object named name. If the object class supports global - * objects, then the search can be limited to a particular node - * or allowed to encompass all nodes. - * - */ - -typedef enum { - OBJECTS_SUCCESSFUL, - OBJECTS_INVALID_NAME, - OBJECTS_INVALID_NODE -} Objects_Name_to_id_errors; - -#define OBJECTS_NAME_ERRORS_FIRST OBJECTS_SUCCESSFUL -#define OBJECTS_NAME_ERRORS_LAST OBJECTS_INVALID_NODE - -Objects_Name_to_id_errors _Objects_Name_to_id( - Objects_Information *information, - Objects_Name name, - unsigned32 node, - Objects_Id *id -); - -/* - * _Objects_Get - * - * DESCRIPTION: - * - * This function maps object ids to object control blocks. - * If id corresponds to a local object, then it returns - * the_object control pointer which maps to id and location - * is set to OBJECTS_LOCAL. If the object class supports global - * objects and the object id is global and resides on a remote - * node, then location is set to OBJECTS_REMOTE, and the_object - * is undefined. Otherwise, location is set to OBJECTS_ERROR - * and the_object is undefined. - * - */ - -Objects_Control *_Objects_Get ( - Objects_Information *information, - Objects_Id id, - Objects_Locations *location -); - -/* - * _Objects_Get_next - * - * DESCRIPTION: - * - * Like _Objects_Get, but is used to find "next" open object. - * - */ - -Objects_Control *_Objects_Get_next( - Objects_Information *information, - Objects_Id id, - Objects_Locations *location_p, - Objects_Id *next_id_p -); - -/* - * _Objects_Get_information - * - * DESCRIPTION: - * - * Returns the information control block for the class of objects - * corresponding to this id. - */ - -Objects_Information *_Objects_Get_information( - Objects_Id id -); - -/* - * Pieces of object.inl are promoted out to the user - */ - -#include -#if defined(RTEMS_MULTIPROCESSING) -#include -#endif - -#ifdef __cplusplus -} -#endif - -#endif -/* end of include file */ diff --git a/c/src/exec/score/headers/objectmp.h b/c/src/exec/score/headers/objectmp.h deleted file mode 100644 index e307ca4264..0000000000 --- a/c/src/exec/score/headers/objectmp.h +++ /dev/null @@ -1,152 +0,0 @@ -/* objectmp.h - * - * This include file contains all the constants and structures associated - * with the manipulation of Global RTEMS Objects. - * - * COPYRIGHT (c) 1989-1998. - * On-Line Applications Research Corporation (OAR). - * Copyright assigned to U.S. Government, 1994. - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#ifndef __RTEMS_OBJECTS_MP_h -#define __RTEMS_OBJECTS_MP_h - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * This defines the Global Object Control Block used to manage - * objects resident on other nodes. - */ - -typedef struct { - Objects_Control Object; - unsigned32 name; /* XXX broken but works */ - /* XXX If any API is MP with variable length names .. BOOM!!!! */ -} Objects_MP_Control; - -/* - * _Objects_MP_Handler_initialization - * - * DESCRIPTION: - * - * This routine intializes the inactive global object chain - * based on the maximum number of global objects configured. - */ - -void _Objects_MP_Handler_initialization ( - unsigned32 node, - unsigned32 maximum_nodes, - unsigned32 maximum_global_objects -); - -/*PAGE - * - * _Objects_MP_Open - * - * DESCRIPTION: - * - * This routine place the specified global object in the - * specified information table. - */ - -void _Objects_MP_Open ( - Objects_Information *information, - Objects_MP_Control *the_global_object, - unsigned32 the_name, /* XXX -- wrong for variable */ - Objects_Id the_id -); - -/* - * _Objects_MP_Allocate_and_open - * - * DESCRIPTION: - * - * This routine allocates a global object control block - * and places it in the specified information table. If the - * allocation fails, then is_fatal_error determines the - * error processing actions taken. - */ - -boolean _Objects_MP_Allocate_and_open ( - Objects_Information *information, - unsigned32 the_name, /* XXX -- wrong for variable length */ - Objects_Id the_id, - boolean is_fatal_error -); - -/* - * _Objects_MP_Close - * - * DESCRIPTION: - * - * This routine removes a global object from the specified - * information table and deallocates the global object control block. - */ - -void _Objects_MP_Close ( - Objects_Information *information, - Objects_Id the_id -); - -/* - * _Objects_MP_Global_name_search - * - * DESCRIPTION: - * - * This routine looks for the object with the_name in the global - * object tables indicated by information. It returns the ID of the - * object with that name if one is found. - */ - -Objects_Name_to_id_errors _Objects_MP_Global_name_search ( - Objects_Information *information, - Objects_Name the_name, - unsigned32 nodes_to_search, - Objects_Id *the_id -); - -/* - * _Objects_MP_Is_remote - * - * DESCRIPTION: - * - * This function searches the Global Object Table managed - * by information for the object indicated by ID. If the object - * is found, then location is set to objects_remote, otherwise - * location is set to objects_error. In both cases, the_object - * is undefined. - */ - -void _Objects_MP_Is_remote ( - Objects_Information *information, - Objects_Id the_id, - Objects_Locations *location, - Objects_Control **the_object -); - -/* - * The following chain header is used to manage the set of - * inactive global object control blocks. - */ - -SCORE_EXTERN unsigned32 _Objects_MP_Maximum_global_objects; -SCORE_EXTERN Chain_Control _Objects_MP_Inactive_global_objects; - -#ifndef __RTEMS_APPLICATION__ -#include -#endif - -#ifdef __cplusplus -} -#endif - -#endif -/* end of include file */ diff --git a/c/src/exec/score/headers/priority.h b/c/src/exec/score/headers/priority.h deleted file mode 100644 index 7241888242..0000000000 --- a/c/src/exec/score/headers/priority.h +++ /dev/null @@ -1,97 +0,0 @@ -/* priority.h - * - * This include file contains all thread priority manipulation routines. - * This Handler provides mechanisms which can be used to - * initialize and manipulate thread priorities. - * - * COPYRIGHT (c) 1989-1998. - * On-Line Applications Research Corporation (OAR). - * Copyright assigned to U.S. Government, 1994. - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#ifndef __PRIORITY_h -#define __PRIORITY_h - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * The following type defines the control block used to manage - * thread priorities. - * - * NOTE: Priority 0 is reserved for internal threads only. - */ - -typedef unsigned32 Priority_Control; - -#define PRIORITY_MINIMUM 0 /* highest thread priority */ -#define PRIORITY_MAXIMUM 255 /* lowest thread priority */ - -/* - * The following record defines the information associated with - * each thread to manage its interaction with the priority bit maps. - */ - -typedef struct { - Priority_Bit_map_control *minor; /* addr of minor bit map slot */ - Priority_Bit_map_control ready_major; /* priority bit map ready mask */ - Priority_Bit_map_control ready_minor; /* priority bit map ready mask */ - Priority_Bit_map_control block_major; /* priority bit map block mask */ - Priority_Bit_map_control block_minor; /* priority bit map block mask */ -} Priority_Information; - -/* - * The following data items are the priority bit map. - * Each of the sixteen bits used in the _Priority_Major_bit_map is - * associated with one of the sixteen entries in the _Priority_Bit_map. - * Each bit in the _Priority_Bit_map indicates whether or not there are - * threads ready at a particular priority. The mapping of - * individual priority levels to particular bits is processor - * dependent as is the value of each bit used to indicate that - * threads are ready at that priority. - */ - -SCORE_EXTERN volatile Priority_Bit_map_control _Priority_Major_bit_map; -SCORE_EXTERN Priority_Bit_map_control - _Priority_Bit_map[16] CPU_STRUCTURE_ALIGNMENT; - -/* - * The definition of the Priority_Bit_map_control type is CPU dependent. - * - */ - -/* - * Priority Bitfield Manipulation Routines - * - * NOTE: - * - * These may simply be pass throughs to CPU dependent routines. - */ - -#if ( CPU_USE_GENERIC_BITFIELD_CODE == FALSE ) - -#define _Priority_Mask( _bit_number ) \ - _CPU_Priority_Mask( _bit_number ) - -#define _Priority_Bits_index( _priority ) \ - _CPU_Priority_bits_index( _priority ) - -#endif - -#ifndef __RTEMS_APPLICATION__ -#include -#endif - -#ifdef __cplusplus -} -#endif - -#endif -/* end of include file */ diff --git a/c/src/exec/score/headers/stack.h b/c/src/exec/score/headers/stack.h deleted file mode 100644 index 1fc4a13966..0000000000 --- a/c/src/exec/score/headers/stack.h +++ /dev/null @@ -1,50 +0,0 @@ -/* stack.h - * - * This include file contains all information about the thread - * Stack Handler. This Handler provides mechanisms which can be used to - * initialize and utilize stacks. - * - * COPYRIGHT (c) 1989-1998. - * On-Line Applications Research Corporation (OAR). - * Copyright assigned to U.S. Government, 1994. - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#ifndef __STACK_h -#define __STACK_h - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * The following constant defines the minimum stack size which every - * thread must exceed. - */ - -#define STACK_MINIMUM_SIZE CPU_STACK_MINIMUM_SIZE - -/* - * The following defines the control block used to manage each stack. - */ - -typedef struct { - unsigned32 size; /* stack size */ - void *area; /* low memory addr of stack */ -} Stack_Control; - -#ifndef __RTEMS_APPLICATION__ -#include -#endif - -#ifdef __cplusplus -} -#endif - -#endif -/* end of include file */ diff --git a/c/src/exec/score/headers/states.h b/c/src/exec/score/headers/states.h deleted file mode 100644 index a0d7ed8ab8..0000000000 --- a/c/src/exec/score/headers/states.h +++ /dev/null @@ -1,84 +0,0 @@ -/* states.h - * - * This include file contains thread execution state information. - * - * COPYRIGHT (c) 1989-1998. - * On-Line Applications Research Corporation (OAR). - * Copyright assigned to U.S. Government, 1994. - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#ifndef __RTEMS_STATES_h -#define __RTEMS_STATES_h - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * The following type defines the control block used to manage a - * thread's state. - */ - -typedef unsigned32 States_Control; - -/* - * The following constants define the individual states which may be - * be used to compose and manipulate a thread's state. - */ - -#define STATES_ALL_SET 0xfffff /* all states */ -#define STATES_READY 0x00000 /* ready to run */ -#define STATES_DORMANT 0x00001 /* created not started */ -#define STATES_SUSPENDED 0x00002 /* waiting for resume */ -#define STATES_TRANSIENT 0x00004 /* in transition */ -#define STATES_DELAYING 0x00008 /* wait for timeout */ -#define STATES_WAITING_FOR_TIME 0x00010 /* wait for TOD */ -#define STATES_WAITING_FOR_BUFFER 0x00020 -#define STATES_WAITING_FOR_SEGMENT 0x00040 -#define STATES_WAITING_FOR_MESSAGE 0x00080 -#define STATES_WAITING_FOR_EVENT 0x00100 -#define STATES_WAITING_FOR_SEMAPHORE 0x00200 -#define STATES_WAITING_FOR_MUTEX 0x00400 -#define STATES_WAITING_FOR_CONDITION_VARIABLE 0x00800 -#define STATES_WAITING_FOR_JOIN_AT_EXIT 0x01000 -#define STATES_WAITING_FOR_RPC_REPLY 0x02000 -#define STATES_WAITING_FOR_PERIOD 0x04000 -#define STATES_WAITING_FOR_SIGNAL 0x08000 -#define STATES_INTERRUPTIBLE_BY_SIGNAL 0x10000 - -#define STATES_LOCALLY_BLOCKED ( STATES_WAITING_FOR_BUFFER | \ - STATES_WAITING_FOR_SEGMENT | \ - STATES_WAITING_FOR_MESSAGE | \ - STATES_WAITING_FOR_SEMAPHORE | \ - STATES_WAITING_FOR_MUTEX | \ - STATES_WAITING_FOR_CONDITION_VARIABLE | \ - STATES_WAITING_FOR_JOIN_AT_EXIT | \ - STATES_WAITING_FOR_SIGNAL ) - -#define STATES_WAITING_ON_THREAD_QUEUE \ - ( STATES_LOCALLY_BLOCKED | \ - STATES_WAITING_FOR_RPC_REPLY ) - -#define STATES_BLOCKED ( STATES_DELAYING | \ - STATES_WAITING_FOR_TIME | \ - STATES_WAITING_FOR_PERIOD | \ - STATES_WAITING_FOR_EVENT | \ - STATES_WAITING_ON_THREAD_QUEUE | \ - STATES_INTERRUPTIBLE_BY_SIGNAL ) - -#ifndef __RTEMS_APPLICATION__ -#include -#endif - -#ifdef __cplusplus -} -#endif - -#endif -/* end of include file */ diff --git a/c/src/exec/score/headers/sysstate.h b/c/src/exec/score/headers/sysstate.h deleted file mode 100644 index 8451894e97..0000000000 --- a/c/src/exec/score/headers/sysstate.h +++ /dev/null @@ -1,67 +0,0 @@ -/* sysstates.h - * - * This include file contains information regarding the system state. - * - * COPYRIGHT (c) 1989-1998. - * On-Line Applications Research Corporation (OAR). - * Copyright assigned to U.S. Government, 1994. - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#ifndef __RTEMS_SYSTEM_STATE_h -#define __RTEMS_SYSTEM_STATE_h - -#ifdef __cplusplus -extern "C" { -#endif - -/* types */ - -/* enumerated constants */ - -/* - * The following type defines the possible system states. - */ - -typedef enum { - SYSTEM_STATE_BEFORE_INITIALIZATION, /* start -> end of 1st init part */ - SYSTEM_STATE_BEFORE_MULTITASKING, /* end of 1st -> beginning of 2nd */ - SYSTEM_STATE_BEGIN_MULTITASKING, /* just before multitasking starts */ - SYSTEM_STATE_UP, /* normal operation */ - SYSTEM_STATE_SHUTDOWN, /* shutdown */ - SYSTEM_STATE_FAILED /* fatal error occurred */ -} System_state_Codes; - -#define SYSTEM_STATE_CODES_FIRST SYSTEM_STATE_BEFORE_INITIALIZATION -#define SYSTEM_STATE_CODES_LAST SYSTEM_STATE_FAILED - -/* - * The following variable indicates whether or not this is - * an multiprocessing system. - */ - -SCORE_EXTERN boolean _System_state_Is_multiprocessing; - -/* - * The following variable contains the current system state. - */ - -SCORE_EXTERN System_state_Codes _System_state_Current; - -/* - * Make it possible for the application to get the system state information. - */ - -#include - -#ifdef __cplusplus -} -#endif - -#endif -/* end of include file */ diff --git a/c/src/exec/score/headers/system.h b/c/src/exec/score/headers/system.h deleted file mode 100644 index 5e1cc80ed5..0000000000 --- a/c/src/exec/score/headers/system.h +++ /dev/null @@ -1,153 +0,0 @@ -/* system.h - * - * This include file contains information that is included in every - * function in the executive. This must be the first include file - * included in all internal RTEMS files. - * - * COPYRIGHT (c) 1989-1998. - * On-Line Applications Research Corporation (OAR). - * Copyright assigned to U.S. Government, 1994. - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#ifndef __RTEMS_SYSTEM_h -#define __RTEMS_SYSTEM_h - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * The target options include file defines all target dependent - * parameters for this build of RTEMS. It must be included - * first so the basic macro definitions are in place. - */ - -#include - -/* - * The following insures that all data is declared in the space - * of the initialization routine for either the Initialization Manager - * or the initialization file for the appropriate API. It is - * referenced as "external" in every other file. - */ - -#ifdef SCORE_INIT -#undef SCORE_EXTERN -#define SCORE_EXTERN -#else -#undef SCORE_EXTERN -#define SCORE_EXTERN extern -#endif - -#ifdef SAPI_INIT -#undef SAPI_EXTERN -#define SAPI_EXTERN -#else -#undef SAPI_EXTERN -#define SAPI_EXTERN extern -#endif - -#ifdef RTEMS_API_INIT -#undef RTEMS_EXTERN -#define RTEMS_EXTERN -#else -#undef RTEMS_EXTERN -#define RTEMS_EXTERN extern -#endif - -#ifdef POSIX_API_INIT -#undef POSIX_EXTERN -#define POSIX_EXTERN -#else -#undef POSIX_EXTERN -#define POSIX_EXTERN extern -#endif - -/* - * The following (in conjunction with compiler arguments) are used - * to choose between the use of static inline functions and macro - * functions. The static inline implementation allows better - * type checking with no cost in code size or execution speed. - */ - -#ifdef USE_INLINES -# ifdef __GNUC__ -# define RTEMS_INLINE_ROUTINE static __inline__ -# else -# define RTEMS_INLINE_ROUTINE static inline -# endif -#else -# define RTEMS_INLINE_ROUTINE -#endif - -/* - * Include a base set of files. - */ - -/* - * XXX: Eventually proc_ptr needs to disappear!!! - */ - -typedef void * proc_ptr; - -/* - * Define NULL - */ - -#ifndef NULL -#define NULL 0 /* NULL value */ -#endif - -/* - * Boolean constants - */ - -#if !defined( TRUE ) || (TRUE != 1) -#undef TRUE -#define TRUE (1) -#endif - -#if !defined( FALSE ) || (FALSE != 0) -#undef FALSE -#define FALSE (0) -#endif - -#include /* processor specific information */ - -#define stringify( _x ) # _x - -#define RTEMS_offsetof(type, field) \ - ((unsigned32) &(((type *) 0)->field)) - -/* - * The following is the extern for the RTEMS version string. - * The contents of this string are CPU specific. - */ - -extern const char _RTEMS_version[]; /* RTEMS version string */ -extern const char _Copyright_Notice[]; /* RTEMS copyright string */ - -/* - * The following defines the CPU dependent information table. - */ - -SCORE_EXTERN rtems_cpu_table _CPU_Table; /* CPU dependent info */ - -/* - * XXX weird RTEMS stuff - */ - -#define RTEMS_MAXIMUM_NAME_LENGTH 4 - -#ifdef __cplusplus -} -#endif - -#endif -/* end of include file */ diff --git a/c/src/exec/score/headers/thread.h b/c/src/exec/score/headers/thread.h deleted file mode 100644 index 574d0493d2..0000000000 --- a/c/src/exec/score/headers/thread.h +++ /dev/null @@ -1,637 +0,0 @@ -/* thread.h - * - * This include file contains all constants and structures associated - * with the thread control block. - * - * COPYRIGHT (c) 1989-1998. - * On-Line Applications Research Corporation (OAR). - * Copyright assigned to U.S. Government, 1994. - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#ifndef __THREAD_h -#define __THREAD_h - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#if defined(RTEMS_MULTIPROCESSING) -#include -#endif -#include -#include -#include -#include -#include -#include -#include - -/* - * The following defines the "return type" of a thread. - */ - -typedef void Thread; - -/* - * The following defines the ways in which the entry point for a - * thread can be invoked. Basically, it can be passed any - * combination/permutation of a pointer and an unsigned32 value. - * - * NOTE: For now, we are ignoring the return type. - */ - -typedef enum { - THREAD_START_NUMERIC, - THREAD_START_POINTER, - THREAD_START_BOTH_POINTER_FIRST, - THREAD_START_BOTH_NUMERIC_FIRST -} Thread_Start_types; - -typedef Thread ( *Thread_Entry )(); /* basic type */ - -typedef Thread ( *Thread_Entry_numeric )( unsigned32 ); -typedef Thread ( *Thread_Entry_pointer )( void * ); -typedef Thread ( *Thread_Entry_both_pointer_first )( void *, unsigned32 ); -typedef Thread ( *Thread_Entry_both_numeric_first )( unsigned32, void * ); - -/* - * The following lists the algorithms used to manage the thread cpu budget. - * - * Reset Timeslice: At each context switch, reset the time quantum. - * Exhaust Timeslice: Only reset the quantum once it is consumed. - * Callout: Execute routine when budget is consumed. - */ - -typedef enum { - THREAD_CPU_BUDGET_ALGORITHM_NONE, - THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE, - THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE, - THREAD_CPU_BUDGET_ALGORITHM_CALLOUT -} Thread_CPU_budget_algorithms; - -typedef struct Thread_Control_struct Thread_Control; - -typedef void (*Thread_CPU_budget_algorithm_callout )( Thread_Control * ); - -/* - * The following structure contains the information which defines - * the starting state of a thread. - */ - -typedef struct { - Thread_Entry entry_point; /* starting thread address */ - Thread_Start_types prototype; /* how task is invoked */ - void *pointer_argument; /* pointer argument */ - unsigned32 numeric_argument; /* numeric argument */ - /* initial execution modes */ - boolean is_preemptible; - Thread_CPU_budget_algorithms budget_algorithm; - Thread_CPU_budget_algorithm_callout budget_callout; - unsigned32 isr_level; - Priority_Control initial_priority; /* initial priority */ - boolean core_allocated_stack; - Stack_Control Initial_stack; /* stack information */ - void *fp_context; /* initial FP context area address */ - void *stack; /* initial stack area address */ -} Thread_Start_information; - -/* - * The following structure contains the information necessary to manage - * a thread which it is waiting for a resource. - */ - -#define THREAD_STATUS_PROXY_BLOCKING 0x1111111 - -typedef struct { - Objects_Id id; /* waiting on this object */ - unsigned32 count; /* "generic" fields to be used */ - void *return_argument; /* when blocking */ - void *return_argument_1; - unsigned32 option; - - /* - * NOTE: The following assumes that all API return codes can be - * treated as an unsigned32. - */ - unsigned32 return_code; /* status for thread awakened */ - - Chain_Control Block2n; /* 2 - n priority blocked chain */ - Thread_queue_Control *queue; /* pointer to thread queue */ -} Thread_Wait_information; - -/* - * The following defines the control block used to manage - * each thread proxy. - * - * NOTE: It is critical that proxies and threads have identical - * memory images for the shared part. - */ - -typedef struct { - Objects_Control Object; - States_Control current_state; - Priority_Control current_priority; - Priority_Control real_priority; - unsigned32 resource_count; - Thread_Wait_information Wait; - Watchdog_Control Timer; -#if defined(RTEMS_MULTIPROCESSING) - MP_packet_Prefix *receive_packet; -#endif - /****************** end of common block ********************/ - Chain_Node Active; -} Thread_Proxy_control; - - -/* - * The following record defines the control block used - * to manage each thread. - * - * NOTE: It is critical that proxies and threads have identical - * memory images for the shared part. - */ - -typedef enum { - THREAD_API_RTEMS, - THREAD_API_POSIX -} Thread_APIs; - -#define THREAD_API_FIRST THREAD_API_RTEMS -#define THREAD_API_LAST THREAD_API_POSIX - -struct Thread_Control_struct { - Objects_Control Object; - States_Control current_state; - Priority_Control current_priority; - Priority_Control real_priority; - unsigned32 resource_count; - Thread_Wait_information Wait; - Watchdog_Control Timer; -#if defined(RTEMS_MULTIPROCESSING) - MP_packet_Prefix *receive_packet; -#endif - /****************** end of common block ********************/ - boolean is_global; - boolean do_post_task_switch_extension; - - boolean is_preemptible; - void *rtems_ada_self; - unsigned32 cpu_time_budget; - Thread_CPU_budget_algorithms budget_algorithm; - Thread_CPU_budget_algorithm_callout budget_callout; - - unsigned32 ticks_executed; - Chain_Control *ready; - Priority_Information Priority_map; - Thread_Start_information Start; - Context_Control Registers; - void *fp_context; - void *API_Extensions[ THREAD_API_LAST + 1 ]; - void **extensions; -}; - -/* - * Self for the GNU Ada Run-Time - */ - -SCORE_EXTERN void *rtems_ada_self; - -/* - * The following defines the information control block used to - * manage this class of objects. - */ - -SCORE_EXTERN Objects_Information _Thread_Internal_information; - -/* - * The following define the thread control pointers used to access - * and manipulate the idle thread. - */ - -SCORE_EXTERN Thread_Control *_Thread_Idle; - -/* - * The following context area contains the context of the "thread" - * which invoked the start multitasking routine. This context is - * restored as the last action of the stop multitasking routine. Thus - * control of the processor can be returned to the environment - * which initiated the system. - */ - -SCORE_EXTERN Context_Control _Thread_BSP_context; - -/* - * The following declares the dispatch critical section nesting - * counter which is used to prevent context switches at inopportune - * moments. - */ - -SCORE_EXTERN unsigned32 _Thread_Dispatch_disable_level; - -/* - * If this is non-zero, then the post-task switch extension - * is run regardless of the state of the per thread flag. - */ - -SCORE_EXTERN unsigned32 _Thread_Do_post_task_switch_extension; - -/* - * The following holds how many user extensions are in the system. This - * is used to determine how many user extension data areas to allocate - * per thread. - */ - -SCORE_EXTERN unsigned32 _Thread_Maximum_extensions; - -/* - * The following is used to manage the length of a timeslice quantum. - */ - -SCORE_EXTERN unsigned32 _Thread_Ticks_per_timeslice; - -/* - * The following points to the array of FIFOs used to manage the - * set of ready threads. - */ - -SCORE_EXTERN Chain_Control *_Thread_Ready_chain; - -/* - * The following points to the thread which is currently executing. - * This thread is implicitly manipulated by numerous directives. - */ - -SCORE_EXTERN Thread_Control *_Thread_Executing; - -/* - * The following points to the highest priority ready thread - * in the system. Unless the current thread is not preemptibl, - * then this thread will be context switched to when the next - * dispatch occurs. - */ - -SCORE_EXTERN Thread_Control *_Thread_Heir; - -/* - * The following points to the thread whose floating point - * context is currently loaded. - */ - -SCORE_EXTERN Thread_Control *_Thread_Allocated_fp; - -/* - * _Thread_Handler_initialization - * - * DESCRIPTION: - * - * This routine performs the initialization necessary for this handler. - */ - -void _Thread_Handler_initialization ( - unsigned32 ticks_per_timeslice, - unsigned32 maximum_extensions, - unsigned32 maximum_proxies -); - -/* - * _Thread_Create_idle - * - * DESCRIPTION: - * - * This routine creates the idle thread. - * - * WARNING!! No thread should be created before this one. - */ - -void _Thread_Create_idle( void ); - -/* - * _Thread_Start_multitasking - * - * DESCRIPTION: - * - * This routine initiates multitasking. It is invoked only as - * part of initialization and its invocation is the last act of - * the non-multitasking part of the system initialization. - */ - -void _Thread_Start_multitasking( void ); - -/* - * _Thread_Dispatch - * - * DESCRIPTION: - * - * This routine is responsible for transferring control of the - * processor from the executing thread to the heir thread. As part - * of this process, it is responsible for the following actions: - * - * + saving the context of the executing thread - * + restoring the context of the heir thread - * + dispatching any signals for the resulting executing thread - */ - -void _Thread_Dispatch( void ); - -/* - * _Thread_Initialize - * - * DESCRIPTION: - * - * XXX - * - * NOTES: - * - * If stack_area is NULL, it is allocated from the workspace. - * - * If the stack is allocated from the workspace, then it is guaranteed to be - * of at least minimum size. - */ - -boolean _Thread_Initialize( - Objects_Information *information, - Thread_Control *the_thread, - void *stack_area, - unsigned32 stack_size, - boolean is_fp, - Priority_Control priority, - boolean is_preemptible, - Thread_CPU_budget_algorithms budget_algorithm, - Thread_CPU_budget_algorithm_callout budget_callout, - unsigned32 isr_level, - Objects_Name name -); - -/* - * _Thread_Start - * - * DESCRIPTION: - * - * XXX - */ - -boolean _Thread_Start( - Thread_Control *the_thread, - Thread_Start_types the_prototype, - void *entry_point, - void *pointer_argument, - unsigned32 numeric_argument -); - -/* - * _Thread_Restart - * - * DESCRIPTION: - * - * XXX - */ - -/* XXX multiple task arg profiles */ - -boolean _Thread_Restart( - Thread_Control *the_thread, - void *pointer_argument, - unsigned32 numeric_argument -); - -/* - * _Thread_Close - * - * DESCRIPTION: - * - * XXX - */ - -void _Thread_Close( - Objects_Information *information, - Thread_Control *the_thread -); - -/* - * _Thread_Ready - * - * DESCRIPTION: - * - * This routine removes any set states for the_thread. It performs - * any necessary scheduling operations including the selection of - * a new heir thread. - */ - -void _Thread_Ready( - Thread_Control *the_thread -); - -/* - * _Thread_Clear_state - * - * DESCRIPTION: - * - * This routine clears the indicated STATES for the_thread. It performs - * any necessary scheduling operations including the selection of - * a new heir thread. - */ - -void _Thread_Clear_state( - Thread_Control *the_thread, - States_Control state -); - -/* - * _Thread_Set_state - * - * DESCRIPTION: - * - * This routine sets the indicated states for the_thread. It performs - * any necessary scheduling operations including the selection of - * a new heir thread. - * - */ - -void _Thread_Set_state( - Thread_Control *the_thread, - States_Control state -); - -/* - * _Thread_Set_transient - * - * DESCRIPTION: - * - * This routine sets the TRANSIENT state for the_thread. It performs - * any necessary scheduling operations including the selection of - * a new heir thread. - */ - -void _Thread_Set_transient( - Thread_Control *the_thread -); - -/* - * _Thread_Reset_timeslice - * - * DESCRIPTION: - * - * This routine is invoked upon expiration of the currently - * executing thread's timeslice. If no other thread's are ready - * at the priority of the currently executing thread, then the - * executing thread's timeslice is reset. Otherwise, the - * currently executing thread is placed at the rear of the - * FIFO for this priority and a new heir is selected. - */ - -void _Thread_Reset_timeslice( void ); - -/* - * _Thread_Tickle_timeslice - * - * DESCRIPTION: - * - * This routine is invoked as part of processing each clock tick. - * It is responsible for determining if the current thread allows - * timeslicing and, if so, when its timeslice expires. - */ - -void _Thread_Tickle_timeslice( void ); - -/* - * _Thread_Yield_processor - * - * DESCRIPTION: - * - * This routine is invoked when a thread wishes to voluntarily - * transfer control of the processor to another thread of equal - * or greater priority. - */ - -void _Thread_Yield_processor( void ); - -/* - * _Thread_Load_environment - * - * DESCRIPTION: - * - * This routine initializes the context of the_thread to its - * appropriate starting state. - */ - -void _Thread_Load_environment( - Thread_Control *the_thread -); - -/* - * _Thread_Handler - * - * DESCRIPTION: - * - * This routine is the wrapper function for all threads. It is - * the starting point for all threads. The user provided thread - * entry point is invoked by this routine. Operations - * which must be performed immediately before and after the user's - * thread executes are found here. - */ - -void _Thread_Handler( void ); - -/* - * _Thread_Delay_ended - * - * DESCRIPTION: - * - * This routine is invoked when a thread must be unblocked at the - * end of a time based delay (i.e. wake after or wake when). - */ - -void _Thread_Delay_ended( - Objects_Id id, - void *ignored -); - -/* - * _Thread_Change_priority - * - * DESCRIPTION: - * - * This routine changes the current priority of the_thread to - * new_priority. It performs any necessary scheduling operations - * including the selection of a new heir thread. - */ - -void _Thread_Change_priority ( - Thread_Control *the_thread, - Priority_Control new_priority, - boolean prepend_it -); - -/* - * _Thread_Set_priority - * - * DESCRIPTION: - * - * This routine updates the priority related fields in the_thread - * control block to indicate the current priority is now new_priority. - */ - -void _Thread_Set_priority( - Thread_Control *the_thread, - Priority_Control new_priority -); - -/* - * _Thread_Evaluate_mode - * - * DESCRIPTION: - * - * This routine XXX - */ - -boolean _Thread_Evaluate_mode( void ); - -/* - * _Thread_Get - * - * NOTE: If we are not using static inlines, this must be a real - * subroutine call. - */ - -#ifndef USE_INLINES -Thread_Control *_Thread_Get ( - Objects_Id id, - Objects_Locations *location -); -#endif - -/* - * _Thread_Idle_body - * - * DESCRIPTION: - * - * This routine is the body of the system idle thread. - */ - -#if (CPU_PROVIDES_IDLE_THREAD_BODY == FALSE) -Thread _Thread_Idle_body( - unsigned32 ignored -); -#endif - -#ifndef __RTEMS_APPLICATION__ -#include -#endif -#if defined(RTEMS_MULTIPROCESSING) -#include -#endif - -#ifdef __cplusplus -} -#endif - -#endif -/* end of include file */ diff --git a/c/src/exec/score/headers/threadmp.h b/c/src/exec/score/headers/threadmp.h deleted file mode 100644 index 497bdc8c5b..0000000000 --- a/c/src/exec/score/headers/threadmp.h +++ /dev/null @@ -1,89 +0,0 @@ -/* threadmp.h - * - * This include file contains the specification for all routines - * and data specific to the multiprocessing portion of the thread package. - * - * COPYRIGHT (c) 1989-1998. - * On-Line Applications Research Corporation (OAR). - * Copyright assigned to U.S. Government, 1994. - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#ifndef __RTEMS_THREAD_MP_h -#define __RTEMS_THREAD_MP_h - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * _Thread_MP_Handler_initialization - * - * DESCRIPTION: - * - * This routine initializes the multiprocessing portion of the Thread Handler. - */ - -void _Thread_MP_Handler_initialization ( - unsigned32 maximum_proxies -); - -/* - * _Thread_MP_Allocate_proxy - * - * DESCRIPTION: - * - * This allocates a proxy control block from - * the inactive chain of free proxy control blocks. - * - * NOTE: This function returns a thread control pointer - * because proxies are substitutes for remote threads. - */ - -Thread_Control *_Thread_MP_Allocate_proxy ( - States_Control the_state -); - -/* - * _Thread_MP_Find_proxy - * - * DESCRIPTION: - * - * This function removes the proxy control block for the specified - * id from the active chain of proxy control blocks. - */ - -Thread_Control *_Thread_MP_Find_proxy ( - Objects_Id the_id -); - -/* - * The following is used to determine when the multiprocessing receive - * thread is executing so that a proxy can be allocated instead of - * blocking the multiprocessing receive thread. - */ - -SCORE_EXTERN Thread_Control *_Thread_MP_Receive; - -/* - * The following chains are used to manage proxies. - */ - -SCORE_EXTERN Chain_Control _Thread_MP_Active_proxies; -SCORE_EXTERN Chain_Control _Thread_MP_Inactive_proxies; - -#ifndef __RTEMS_APPLICATION__ -#include -#endif - -#ifdef __cplusplus -} -#endif - -#endif -/* end of include file */ diff --git a/c/src/exec/score/headers/threadq.h b/c/src/exec/score/headers/threadq.h deleted file mode 100644 index d3a0f58ad1..0000000000 --- a/c/src/exec/score/headers/threadq.h +++ /dev/null @@ -1,301 +0,0 @@ -/* threadq.h - * - * This include file contains all the constants and structures associated - * with the manipulation of objects. - * - * COPYRIGHT (c) 1989-1998. - * On-Line Applications Research Corporation (OAR). - * Copyright assigned to U.S. Government, 1994. - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#ifndef __THREAD_QUEUE_h -#define __THREAD_QUEUE_h - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -#include -#include -#include - -/* - * Constant for indefinite wait. - */ - -#define THREAD_QUEUE_WAIT_FOREVER WATCHDOG_NO_TIMEOUT - -/* - * The following type defines the callout used when a remote task - * is extracted from a local thread queue. - */ - -typedef void ( *Thread_queue_Flush_callout )( - Thread_Control * - ); - -/* - * The following type defines the callout used when a local task - * is extracted from a remote thread queue (i.e. it's proxy must - * extracted from the remote queue). - */ - -typedef void ( *Thread_queue_Extract_callout )( - Thread_Control * - ); - -SCORE_EXTERN Thread_queue_Extract_callout - _Thread_queue_Extract_table[ OBJECTS_CLASSES_LAST + 1 ]; - -/* - * _Thread_queue_Dequeue - * - * DESCRIPTION: - * - * This function returns a pointer to a thread waiting on - * the_thread_queue. The selection of this thread is based on - * the discipline of the_thread_queue. If no threads are waiting - * on the_thread_queue, then NULL is returned. - */ - -Thread_Control *_Thread_queue_Dequeue( - Thread_queue_Control *the_thread_queue -); - -/* - * _Thread_queue_Enqueue - * - * DESCRIPTION: - * - * This routine enqueues the currently executing thread on - * the_thread_queue with an optional timeout. - */ - -void _Thread_queue_Enqueue( - Thread_queue_Control *the_thread_queue, - Watchdog_Interval timeout -); - -/* - * _Thread_queue_Extract - * - * DESCRIPTION: - * - * This routine removes the_thread from the_thread_queue - * and cancels any timeouts associated with this blocking. - */ - -void _Thread_queue_Extract( - Thread_queue_Control *the_thread_queue, - Thread_Control *the_thread -); - -/* - * _Thread_queue_Extract_with_proxy - * - * DESCRIPTION: - * - * This routine extracts the_thread from the_thread_queue - * and insures that if there is a proxy for this task on - * another node, it is also dealt with. - */ - -boolean _Thread_queue_Extract_with_proxy( - Thread_Control *the_thread -); - -/* - * _Thread_queue_First - * - * DESCRIPTION: - * - * This function returns a pointer to the "first" thread - * on the_thread_queue. The "first" thread is selected - * based on the discipline of the_thread_queue. - */ - -Thread_Control *_Thread_queue_First( - Thread_queue_Control *the_thread_queue -); - -/* - * _Thread_queue_Flush - * - * DESCRIPTION: - * - * This routine unblocks all threads blocked on the_thread_queue - * and cancels any associated timeouts. - */ - -void _Thread_queue_Flush( - Thread_queue_Control *the_thread_queue, - Thread_queue_Flush_callout remote_extract_callout, - unsigned32 status -); - -/* - * _Thread_queue_Initialize - * - * DESCRIPTION: - * - * This routine initializes the_thread_queue based on the - * discipline indicated in attribute_set. The state set on - * threads which block on the_thread_queue is state. - */ - -void _Thread_queue_Initialize( - Thread_queue_Control *the_thread_queue, - Objects_Classes the_class, - Thread_queue_Disciplines the_discipline, - States_Control state, - Thread_queue_Extract_callout proxy_extract_callout, - unsigned32 timeout_status -); - -/* - * _Thread_queue_Dequeue_priority - * - * DESCRIPTION: - * - * This function returns a pointer to the highest priority - * thread waiting on the_thread_queue. If no threads are waiting - * on the_thread_queue, then NULL is returned. - */ - -Thread_Control *_Thread_queue_Dequeue_priority( - Thread_queue_Control *the_thread_queue -); - -/* - * _Thread_queue_Enqueue_priority - * - * DESCRIPTION: - * - * This routine enqueues the currently executing thread on - * the_thread_queue with an optional timeout using the - * priority discipline. - */ - -void _Thread_queue_Enqueue_priority( - Thread_queue_Control *the_thread_queue, - Thread_Control *the_thread, - Watchdog_Interval timeout -); - -/* - * _Thread_queue_Extract_priority - * - * DESCRIPTION: - * - * This routine removes the_thread from the_thread_queue - * and cancels any timeouts associated with this blocking. - */ - -void _Thread_queue_Extract_priority( - Thread_queue_Control *the_thread_queue, - Thread_Control *the_thread -); - -/* - * _Thread_queue_First_priority - * - * DESCRIPTION: - * - * This function returns a pointer to the "first" thread - * on the_thread_queue. The "first" thread is the highest - * priority thread waiting on the_thread_queue. - */ - -Thread_Control *_Thread_queue_First_priority( - Thread_queue_Control *the_thread_queue -); - -/* - * _Thread_queue_Dequeue_FIFO - * - * DESCRIPTION: - * - * This function returns a pointer to the thread which has - * been waiting the longest on the_thread_queue. If no - * threads are waiting on the_thread_queue, then NULL is returned. - */ - -Thread_Control *_Thread_queue_Dequeue_fifo( - Thread_queue_Control *the_thread_queue -); - -/* - * _Thread_queue_Enqueue_FIFO - * - * DESCRIPTION: - * - * This routine enqueues the currently executing thread on - * the_thread_queue with an optional timeout using the - * FIFO discipline. - */ - -void _Thread_queue_Enqueue_fifo( - Thread_queue_Control *the_thread_queue, - Thread_Control *the_thread, - Watchdog_Interval timeout -); - -/* - * _Thread_queue_Extract_FIFO - * - * DESCRIPTION: - * - * This routine removes the_thread from the_thread_queue - * and cancels any timeouts associated with this blocking. - */ - -void _Thread_queue_Extract_fifo( - Thread_queue_Control *the_thread_queue, - Thread_Control *the_thread -); - -/* - * _Thread_queue_First_FIFO - * - * DESCRIPTION: - * - * This function returns a pointer to the "first" thread - * on the_thread_queue. The first thread is the thread - * which has been waiting longest on the_thread_queue. - */ - -Thread_Control *_Thread_queue_First_fifo( - Thread_queue_Control *the_thread_queue -); - -/* - * _Thread_queue_timeout - * - * DESCRIPTION: - * - * This routine is invoked when a task's request has not - * been satisfied after the timeout interval specified to - * enqueue. The task represented by ID will be unblocked and - * its status code will be set in it's control block to indicate - * that a timeout has occurred. - */ - -void _Thread_queue_Timeout ( - Objects_Id id, - void *ignored -); - -#ifdef __cplusplus -} -#endif - -#endif -/* end of include file */ diff --git a/c/src/exec/score/headers/tod.h b/c/src/exec/score/headers/tod.h deleted file mode 100644 index b87486bda1..0000000000 --- a/c/src/exec/score/headers/tod.h +++ /dev/null @@ -1,277 +0,0 @@ -/* tod.h - * - * This include file contains all the constants and structures associated - * with the Time of Day Handler. - * - * COPYRIGHT (c) 1989-1998. - * On-Line Applications Research Corporation (OAR). - * Copyright assigned to U.S. Government, 1994. - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#ifndef __TIME_OF_DAY_h -#define __TIME_OF_DAY_h - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -/* - * The following constants are related to the time of day. - */ - -#define TOD_SECONDS_PER_MINUTE 60 -#define TOD_MINUTES_PER_HOUR 60 -#define TOD_MONTHS_PER_YEAR 12 -#define TOD_DAYS_PER_YEAR 365 -#define TOD_HOURS_PER_DAY 24 -#define TOD_SECONDS_PER_DAY (TOD_SECONDS_PER_MINUTE * \ - TOD_MINUTES_PER_HOUR * \ - TOD_HOURS_PER_DAY) - -#define TOD_SECONDS_PER_NON_LEAP_YEAR (365 * TOD_SECONDS_PER_DAY) - -#define TOD_MILLISECONDS_PER_SECOND 1000 -#define TOD_MICROSECONDS_PER_SECOND 1000000 -#define TOD_NANOSECONDS_PER_SECOND 1000000000 -#define TOD_NANOSECONDS_PER_MICROSECOND 1000 - -/* - * The following constant define the earliest year to which an - * time of day can be initialized. This is considered the - * epoch. - */ - -#define TOD_BASE_YEAR 1988 - -/* - * The following record defines the time of control block. This - * control block is used to maintain the current time of day. - */ - -typedef struct { /* RTEID style time/date */ - unsigned32 year; /* year, A.D. */ - unsigned32 month; /* month, 1 -> 12 */ - unsigned32 day; /* day, 1 -> 31 */ - unsigned32 hour; /* hour, 0 -> 23 */ - unsigned32 minute; /* minute, 0 -> 59 */ - unsigned32 second; /* second, 0 -> 59 */ - unsigned32 ticks; /* elapsed ticks between secs */ -} TOD_Control; - -/* - * The following is TRUE if the application has set the current - * time of day, and FALSE otherwise. - */ - -SCORE_EXTERN boolean _TOD_Is_set; - -/* - * The following contains the current time of day. - */ - -SCORE_EXTERN TOD_Control _TOD_Current; - -/* - * The following contains the number of seconds from 00:00:00 - * January 1, TOD_BASE_YEAR until the current time of day. - */ - -SCORE_EXTERN Watchdog_Interval _TOD_Seconds_since_epoch; - -/* - * The following contains the number of microseconds per tick. - */ - -SCORE_EXTERN unsigned32 _TOD_Microseconds_per_tick; - -/* - * The following contains the number of clock ticks per second. - * - * NOTE: - * - * If one second is NOT evenly divisible by the number of microseconds - * per clock tick, this value will contain only the integer portion - * of the division. This means that the interval between clock ticks - * can be a source of error in the current time of day. - */ - -SCORE_EXTERN unsigned32 _TOD_Ticks_per_second; - -/* - * This is the control structure for the watchdog timer which - * fires to service the seconds chain. - */ - -SCORE_EXTERN Watchdog_Control _TOD_Seconds_watchdog; - -#ifdef SCORE_INIT - -/* - * The following array contains the number of days in all months. - * The first dimension should be 1 for leap years, and 0 otherwise. - * The second dimension should range from 1 to 12 for January to - * February, respectively. - */ - -const unsigned32 _TOD_Days_per_month[ 2 ][ 13 ] = { - { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }, - { 0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 } -}; - -/* - * The following array contains the number of days in all months - * up to the month indicated by the index of the second dimension. - * The first dimension should be 1 for leap years, and 0 otherwise. - */ - -const unsigned16 _TOD_Days_to_date[2][13] = { - { 0, 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 }, - { 0, 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335 } -}; - -/* - * The following array contains the number of days in the years - * since the last leap year. The index should be 0 for leap - * years, and the number of years since the beginning of a leap - * year otherwise. - */ - -const unsigned16 _TOD_Days_since_last_leap_year[4] = { 0, 366, 731, 1096 }; - -#else - -extern const unsigned16 _TOD_Days_to_date[2][13]; /* Julian days */ -extern const unsigned16 _TOD_Days_since_last_leap_year[4]; -extern const unsigned32 _TOD_Days_per_month[2][13]; - -#endif - -/* - * _TOD_Handler_initialization - * - * DESCRIPTION: - * - * This routine performs the initialization necessary for this handler. - */ - -void _TOD_Handler_initialization( - unsigned32 microseconds_per_tick -); - -/* - * _TOD_Set - * - * DESCRIPTION: - * - * This routine sets the current time of day to THE_TOD and - * the equivalent SECONDS_SINCE_EPOCH. - */ - -void _TOD_Set( - TOD_Control *the_tod, - Watchdog_Interval seconds_since_epoch -); - -/* - * _TOD_Validate - * - * DESCRIPTION: - * - * This function returns TRUE if THE_TOD contains - * a valid time of day, and FALSE otherwise. - */ - -boolean _TOD_Validate( - TOD_Control *the_tod -); - -/* - * _TOD_To_seconds - * - * DESCRIPTION: - * - * This function returns the number seconds between the epoch and THE_TOD. - */ - -Watchdog_Interval _TOD_To_seconds( - TOD_Control *the_tod -); - -/* - * _TOD_Tickle - * - * DESCRIPTION: - * - * This routine is scheduled as a watchdog function and is invoked at - * each second boundary. It updates the current time of day to indicate - * that a second has passed and processes the seconds watchdog chain. - */ - -void _TOD_Tickle( - Objects_Id id, - void *ignored -); - -/* - * TOD_MILLISECONDS_TO_MICROSECONDS - * - * DESCRIPTION: - * - * This routine converts an interval expressed in milliseconds to microseconds. - * - * NOTE: - * - * This must be a macro so it can be used in "static" tables. - */ - -#define TOD_MILLISECONDS_TO_MICROSECONDS(_ms) ((_ms) * 1000) - -/* - * TOD_MICROSECONDS_TO_TICKS - * - * DESCRIPTION: - * - * This routine converts an interval expressed in microseconds to ticks. - * - * NOTE: - * - * This must be a macro so it can be used in "static" tables. - */ - -#define TOD_MICROSECONDS_TO_TICKS(_us) \ - ((_us) / _TOD_Microseconds_per_tick) - -/* - * TOD_MILLISECONDS_TO_TICKS - * - * DESCRIPTION: - * - * This routine converts an interval expressed in milliseconds to ticks. - * - * NOTE: - * - * This must be a macro so it can be used in "static" tables. - */ - -#define TOD_MILLISECONDS_TO_TICKS(_ms) \ - (TOD_MILLISECONDS_TO_MICROSECONDS(_ms) / _TOD_Microseconds_per_tick) - -#ifndef __RTEMS_APPLICATION__ -#include -#endif - -#ifdef __cplusplus -} -#endif - -#endif -/* end of include file */ diff --git a/c/src/exec/score/headers/tqdata.h b/c/src/exec/score/headers/tqdata.h deleted file mode 100644 index 6136d35412..0000000000 --- a/c/src/exec/score/headers/tqdata.h +++ /dev/null @@ -1,90 +0,0 @@ -/* tqdata.h - * - * This include file contains all the constants and structures - * needed to declare a thread queue. - * - * COPYRIGHT (c) 1989-1998. - * On-Line Applications Research Corporation (OAR). - * Copyright assigned to U.S. Government, 1994. - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#ifndef __THREAD_QUEUE_DATA_h -#define __THREAD_QUEUE_DATA_h - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include - -/* - * The following enumerated type details all of the disciplines - * supported by the Thread Queue Handler. - */ - -typedef enum { - THREAD_QUEUE_DISCIPLINE_FIFO, /* FIFO queue discipline */ - THREAD_QUEUE_DISCIPLINE_PRIORITY /* PRIORITY queue discipline */ -} Thread_queue_Disciplines; - -/* - * The following enumerated types indicate what happened while the thread - * queue was in the synchronization window. - */ - -typedef enum { - THREAD_QUEUE_SYNCHRONIZED, - THREAD_QUEUE_NOTHING_HAPPENED, - THREAD_QUEUE_TIMEOUT, - THREAD_QUEUE_SATISFIED -} Thread_queue_States; - -/* - * The following constants are used to manage the priority queues. - * - * There are four chains used to maintain a priority -- each chain - * manages a distinct set of task priorities. The number of chains - * is determined by TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS. - * The following set must be consistent. - * - * The set below configures 4 headers -- each contains 64 priorities. - * Header x manages priority range (x*64) through ((x*64)+63). If - * the priority is more than half way through the priority range it - * is in, then the search is performed from the rear of the chain. - * This halves the search time to find the insertion point. - */ - -#define TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS 4 -#define TASK_QUEUE_DATA_PRIORITIES_PER_HEADER 64 -#define TASK_QUEUE_DATA_REVERSE_SEARCH_MASK 0x20 - -typedef struct { - union { - Chain_Control Fifo; /* FIFO discipline list */ - Chain_Control Priority[TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS]; - /* priority discipline list */ - } Queues; - Thread_queue_States sync_state; /* alloc/dealloc critical section */ - Thread_queue_Disciplines discipline; /* queue discipline */ - States_Control state; /* state of threads on Thread_q */ - unsigned32 timeout_status; -} Thread_queue_Control; - -#ifndef __RTEMS_APPLICATION__ -#include -#endif - -#ifdef __cplusplus -} -#endif - -#endif -/* end of include file */ diff --git a/c/src/exec/score/headers/userext.h b/c/src/exec/score/headers/userext.h deleted file mode 100644 index 29b0e9564e..0000000000 --- a/c/src/exec/score/headers/userext.h +++ /dev/null @@ -1,211 +0,0 @@ -/* userext.h - * - * This include file contains all information about user extensions. This - * Handler provides mechanisms which can be used to initialize and manipulate - * all user extensions. - * - * COPYRIGHT (c) 1989-1998. - * On-Line Applications Research Corporation (OAR). - * Copyright assigned to U.S. Government, 1994. - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#ifndef __USER_EXTENSIONS_h -#define __USER_EXTENSIONS_h - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include - -/* - * The following records defines the User Extension Table. - * This table defines the application dependent routines which - * are invoked at critical points in the life of each thread and - * the system as a whole. - */ - -typedef void User_extensions_routine; - -typedef boolean ( *User_extensions_thread_create_extension )( - Thread_Control *, - Thread_Control * - ); - -typedef User_extensions_routine ( *User_extensions_thread_delete_extension )( - Thread_Control *, - Thread_Control * - ); - -typedef User_extensions_routine ( *User_extensions_thread_start_extension )( - Thread_Control *, - Thread_Control * - ); - -typedef User_extensions_routine ( *User_extensions_thread_restart_extension )( - Thread_Control *, - Thread_Control * - ); - -typedef User_extensions_routine ( *User_extensions_thread_switch_extension )( - Thread_Control *, - Thread_Control * - ); - -typedef User_extensions_routine ( - *User_extensions_thread_post_switch_extension )( - Thread_Control * - ); - -typedef User_extensions_routine ( *User_extensions_thread_begin_extension )( - Thread_Control * - ); - -typedef User_extensions_routine ( *User_extensions_thread_exitted_extension )( - Thread_Control * - ); - -typedef User_extensions_routine ( *User_extensions_fatal_extension )( - Internal_errors_Source /* the_source */, - boolean /* is_internal */, - unsigned32 /* the_error */ - ); - - -typedef struct { - User_extensions_thread_create_extension thread_create; - User_extensions_thread_start_extension thread_start; - User_extensions_thread_restart_extension thread_restart; - User_extensions_thread_delete_extension thread_delete; - User_extensions_thread_switch_extension thread_switch; - User_extensions_thread_begin_extension thread_begin; - User_extensions_thread_exitted_extension thread_exitted; - User_extensions_fatal_extension fatal; -} User_extensions_Table; - -/* - * The following is used to manage each user extension set. - */ - -typedef struct { - Chain_Node Node; - User_extensions_Table Callouts; -} User_extensions_Control; - -/* - * The following is used to manage the list of active extensions. - */ - -SCORE_EXTERN Chain_Control _User_extensions_List; - -/* - * _User_extensions_Thread_create - * - * DESCRIPTION: - * - * This routine is used to invoke the user extension for - * the thread creation operate. - */ - -boolean _User_extensions_Thread_create ( - Thread_Control *the_thread -); - -/* - * _User_extensions_Thread_delete - * - * DESCRIPTION: - * - * This routine is used to invoke the user extension for - * the thread deletion operation. - */ - -void _User_extensions_Thread_delete ( - Thread_Control *the_thread -); - -/* - * _User_extensions_Thread_start - * - * DESCRIPTION: - * - * This routine is used to invoke the user extension for - * the thread start operation. - */ - -void _User_extensions_Thread_start ( - Thread_Control *the_thread -); - -/* - * _User_extensions_Thread_restart - * - * DESCRIPTION: - * - * This routine is used to invoke the user extension for - * the thread restart operation. - */ - -void _User_extensions_Thread_restart ( - Thread_Control *the_thread -); - -/* - * _User_extensions_Thread_begin - * - * DESCRIPTION: - * - * This routine is used to invoke the user extension which - * is invoked when a thread begins. - */ - -void _User_extensions_Thread_begin ( - Thread_Control *executing -); - -/* - * _User_extensions_Thread_exitted - * - * DESCRIPTION: - * - * This routine is used to invoke the user extension which - * is invoked when a thread exits. - */ - -void _User_extensions_Thread_exitted ( - Thread_Control *executing -); - -/* - * _User_extensions_Fatal - * - * DESCRIPTION: - * - * This routine is used to invoke the user extension invoked - * when a fatal error occurs. - */ - -void _User_extensions_Fatal ( - Internal_errors_Source the_source, - boolean is_internal, - unsigned32 the_error -); - -#ifndef __RTEMS_APPLICATION__ -#include -#endif - -#ifdef __cplusplus -} -#endif - -#endif -/* end of include file */ diff --git a/c/src/exec/score/headers/watchdog.h b/c/src/exec/score/headers/watchdog.h deleted file mode 100644 index ceb09793f6..0000000000 --- a/c/src/exec/score/headers/watchdog.h +++ /dev/null @@ -1,194 +0,0 @@ -/* watchdog.h - * - * This include file contains all the constants and structures associated - * with watchdog timers. This Handler provides mechanisms which can be - * used to initialize and manipulate watchdog timers. - * - * COPYRIGHT (c) 1989-1998. - * On-Line Applications Research Corporation (OAR). - * Copyright assigned to U.S. Government, 1994. - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#ifndef __WATCHDOG_h -#define __WATCHDOG_h - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -/* - * The following type defines the control block used to manage - * intervals. - */ - -typedef unsigned32 Watchdog_Interval; - -/* - * The following types define a pointer to a watchdog service routine. - */ - -typedef void Watchdog_Service_routine; - -typedef Watchdog_Service_routine ( *Watchdog_Service_routine_entry )( - Objects_Id, - void * - ); - -/* - * Constant for indefinite wait. (actually an illegal interval) - */ - -#define WATCHDOG_NO_TIMEOUT 0 - -/* - * The following enumerated type lists the states in which a - * watchdog timer may be at any given time. - */ - -typedef enum { - WATCHDOG_INACTIVE, /* off all chains */ - WATCHDOG_BEING_INSERTED, /* off all chains, searching for insertion point */ - WATCHDOG_ACTIVE, /* on chain, allowed to fire */ - WATCHDOG_REMOVE_IT /* on chain, remove without firing if expires */ -} Watchdog_States; - -/* - * The following enumerated type details the manner in which - * a watchdog chain may be adjusted by the Watchdog_Adjust - * routine. The direction indicates a movement FORWARD - * or BACKWARD in time. - */ - -typedef enum { - WATCHDOG_FORWARD, /* adjust delta value forward */ - WATCHDOG_BACKWARD /* adjust delta value backward */ -} Watchdog_Adjust_directions; - -/* - * The following record defines the control block used - * to manage each watchdog timer. - */ - -typedef struct { - Chain_Node Node; - Watchdog_States state; - Watchdog_Interval initial; - Watchdog_Interval delta_interval; - Watchdog_Interval start_time; - Watchdog_Interval stop_time; - Watchdog_Service_routine_entry routine; - Objects_Id id; - void *user_data; -} Watchdog_Control; - -/* - * The following are used for synchronization purposes - * during an insert on a watchdog delta chain. - */ - -SCORE_EXTERN volatile unsigned32 _Watchdog_Sync_level; -SCORE_EXTERN volatile unsigned32 _Watchdog_Sync_count; - -/* - * The following contains the number of ticks since the - * system was booted. - */ - -SCORE_EXTERN Watchdog_Interval _Watchdog_Ticks_since_boot; - -/* - * The following defines the watchdog chains which are managed - * on ticks and second boundaries. - */ - -SCORE_EXTERN Chain_Control _Watchdog_Ticks_chain; -SCORE_EXTERN Chain_Control _Watchdog_Seconds_chain; - -/* - * _Watchdog_Handler_initialization - * - * DESCRIPTION: - * - * This routine initializes the watchdog handler. The watchdog - * synchronization flag is initialized and the watchdog chains are - * initialized and emptied. - */ - -void _Watchdog_Handler_initialization( void ); - -/* - * _Watchdog_Remove - * - * DESCRIPTION: - * - * This routine removes THE_WATCHDOG from the watchdog chain on which - * it resides and returns the state THE_WATCHDOG timer was in. - */ - -Watchdog_States _Watchdog_Remove ( - Watchdog_Control *the_watchdog -); - -/* - * _Watchdog_Adjust - * - * DESCRIPTION: - * - * This routine adjusts the HEADER watchdog chain in the forward - * or backward DIRECTION for UNITS ticks. - */ - -void _Watchdog_Adjust ( - Chain_Control *header, - Watchdog_Adjust_directions direction, - Watchdog_Interval units -); - -/* - * _Watchdog_Insert - * - * DESCRIPTION: - * - * This routine inserts THE_WATCHDOG into the HEADER watchdog chain - * for a time of UNITS. The INSERT_MODE indicates whether - * THE_WATCHDOG is to be activated automatically or later, explicitly - * by the caller. - * - */ - -void _Watchdog_Insert ( - Chain_Control *header, - Watchdog_Control *the_watchdog -); - -/* - * _Watchdog_Tickle - * - * DESCRIPTION: - * - * This routine is invoked at appropriate intervals to update - * the HEADER watchdog chain. - */ - -void _Watchdog_Tickle ( - Chain_Control *header -); - -#ifndef __RTEMS_APPLICATION__ -#include -#endif - -#ifdef __cplusplus -} -#endif - -#endif -/* end of include file */ diff --git a/c/src/exec/score/headers/wkspace.h b/c/src/exec/score/headers/wkspace.h deleted file mode 100644 index 3b4b84f95f..0000000000 --- a/c/src/exec/score/headers/wkspace.h +++ /dev/null @@ -1,71 +0,0 @@ -/* wkspace.h - * - * This include file contains information related to the - * RAM Workspace. This Handler provides mechanisms which can be used to - * define, initialize and manipulate the workspace. - * - * COPYRIGHT (c) 1989-1998. - * On-Line Applications Research Corporation (OAR). - * Copyright assigned to U.S. Government, 1994. - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#ifndef __WORKSPACE_h -#define __WORKSPACE_h - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -/* - * The following is used to manage the Workspace. - * - */ - -SCORE_EXTERN Heap_Control _Workspace_Area; /* executive heap header */ - -/* - * _Workspace_Handler_initialization - * - * DESCRIPTION: - * - * This routine performs the initialization necessary for this handler. - */ - -void _Workspace_Handler_initialization( - void *starting_address, - unsigned32 size -); - -/* - * _Workspace_Allocate_or_fatal_error - * - * DESCRIPTION: - * - * This routine returns the address of a block of memory of size - * bytes. If a block of the appropriate size cannot be allocated - * from the workspace, then the internal error handler is invoked. - */ - -void *_Workspace_Allocate_or_fatal_error( - unsigned32 size -); - -#ifndef __RTEMS_APPLICATION__ -#include -#endif - -#ifdef __cplusplus -} -#endif - -#endif -/* end of include file */ -- cgit v1.2.3