summaryrefslogtreecommitdiff
path: root/cpukit
diff options
context:
space:
mode:
authorAmar Takhar <amar@rtems.org>2014-12-28 17:17:16 -0500
committerAmar Takhar <amar@rtems.org>2015-12-13 14:12:21 -0500
commit9216d4e8abc689ad1b7f60476338ec12e90c29f5 (patch)
treee9b88285732dad9ffe56226d27c68e9a713920bd /cpukit
parent0d53be8e9f84b329e6e021d07e1a54a0770d15f7 (diff)
Move the score MP headers.
Diffstat (limited to 'cpukit')
-rw-r--r--cpukit/score/include/rtems/score/mpci.h135
-rw-r--r--cpukit/score/include/rtems/score/mppkt.h121
-rw-r--r--cpukit/score/include/rtems/score/objectmp.h228
-rw-r--r--cpukit/score/include/rtems/score/threadmp.h127
4 files changed, 0 insertions, 611 deletions
diff --git a/cpukit/score/include/rtems/score/mpci.h b/cpukit/score/include/rtems/score/mpci.h
deleted file mode 100644
index c20b45c3e1..0000000000
--- a/cpukit/score/include/rtems/score/mpci.h
+++ /dev/null
@@ -1,135 +0,0 @@
-/**
- * @file
- *
- * @ingroup ScoreMPCI
- *
- * @brief MPCI Layer API
- */
-
-/*
- * COPYRIGHT (c) 1989-2009.
- * On-Line Applications Research Corporation (OAR).
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#ifndef _RTEMS_SCORE_MPCI_H
-#define _RTEMS_SCORE_MPCI_H
-
-#include <rtems/score/mppkt.h>
-#include <rtems/score/thread.h>
-#include <rtems/score/threadq.h>
-#include <rtems/score/watchdog.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup ScoreMPCI MPCI Handler
- *
- * @ingroup Score
- *
- * The MPCI Handler encapsulates functionality which is related to the
- * generation, receipt, and processing of remote operations in a
- * multiprocessor system. This handler contains the message passing
- * support for making remote service calls as well as the server thread
- * which processes requests from remote nodes.
-*/
-/**@{*/
-
-/**
- * The following defines the node number used when a broadcast is desired.
- */
-#define MPCI_ALL_NODES 0
-
-/**
- * This type is returned by all user provided MPCI routines.
- */
-typedef void MPCI_Entry;
-
-/**
- * This type defines the prototype for the initization entry point
- * in an Multiprocessor Communications Interface.
- */
-typedef MPCI_Entry ( *MPCI_initialization_entry )( void );
-
-/**
- * This type defines the prototype for the get packet entry point
- * in an Multiprocessor Communications Interface. The single
- * parameter will point to the packet allocated.
- */
-typedef MPCI_Entry ( *MPCI_get_packet_entry )(
- MP_packet_Prefix **
- );
-
-/**
- * This type defines the prototype for the return packet entry point
- * in an Multiprocessor Communications Interface. The single
- * parameter will point to a packet previously allocated by the
- * get packet MPCI entry.
- */
-typedef MPCI_Entry ( *MPCI_return_packet_entry )(
- MP_packet_Prefix *
- );
-
-/**
- * This type defines the prototype for send get packet entry point
- * in an Multiprocessor Communications Interface. The single
- * parameter will point to a packet previously allocated by the
- * get packet entry point that has been filled in by the caller.
- */
-typedef MPCI_Entry ( *MPCI_send_entry )(
- uint32_t,
- MP_packet_Prefix *
- );
-
-/**
- * This type defines the prototype for the receive packet entry point
- * in an Multiprocessor Communications Interface. The single
- * parameter will point to a packet allocated and filled in by the
- * receive packet handler. The caller will block until a packet is
- * received.
- */
-typedef MPCI_Entry ( *MPCI_receive_entry )(
- MP_packet_Prefix **
- );
-
-/**
- * This type defines 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 struct {
- /** This fields contains the timeout for MPCI operations in ticks. */
- uint32_t default_timeout;
- /** This field contains the maximum size of a packet supported by this
- * MPCI layer. This size places a limit on the size of a message
- * which can be transmitted over this interface.
- **/
- size_t maximum_packet_size;
- /** This field points to the MPCI initialization entry point. */
- MPCI_initialization_entry initialization;
- /** This field points to the MPCI get packet entry point. */
- MPCI_get_packet_entry get_packet;
- /** This field points to the MPCI return packet entry point. */
- MPCI_return_packet_entry return_packet;
- /** This field points to the MPCI send packet entry point. */
- MPCI_send_entry send_packet;
- /** This field points to the MPCI receive packet entry point. */
- MPCI_receive_entry receive_packet;
-} MPCI_Control;
-
-/**@}*/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/score/include/rtems/score/mppkt.h b/cpukit/score/include/rtems/score/mppkt.h
deleted file mode 100644
index cd1d9b9cb2..0000000000
--- a/cpukit/score/include/rtems/score/mppkt.h
+++ /dev/null
@@ -1,121 +0,0 @@
-/**
- * @file rtems/score/mppkt.h
- *
- * @brief Specification for the Packet Handler
- *
- * 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-2011.
- * On-Line Applications Research Corporation (OAR).
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#ifndef _RTEMS_SCORE_MPPKT_H
-#define _RTEMS_SCORE_MPPKT_H
-
-#include <rtems/score/object.h>
-#include <rtems/score/priority.h>
-#include <rtems/score/watchdog.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup ScoreMPPacket MP Packet Handler
- *
- * @ingroup Score
- *
- * This handler encapsulates the primary definition of MPCI packets. This
- * handler defines the part of the packet that is common to all remote
- * operations.
- */
-/**@{*/
-
-/**
- * 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;
-
-/**
- * This constant defines the first entry in the MP_packet_Classes enumeration.
- */
-#define MP_PACKET_CLASSES_FIRST MP_PACKET_MPCI_INTERNAL
-
-/**
- * This constant defines the last entry in the MP_packet_Classes enumeration.
- */
-#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 ensure that anything following it
- * is on a 16 byte boundary. This is the most stringent structure
- * alignment rule encountered yet.
- */
-typedef struct {
- /** This field indicates the API class of the operation being performed. */
- MP_packet_Classes the_class;
- /** This field is the id of the object to be acted upon. */
- Objects_Id id;
- /** This field is the ID of the originating thread. */
- Objects_Id source_tid;
- /** This field is the priority of the originating thread. */
- Priority_Control source_priority;
- /** This field is where the status of the operation will be returned. */
- uint32_t return_code;
- /** This field is the length of the data following the prefix. */
- uint32_t length;
- /** This field is the length of the data which required network conversion. */
- uint32_t to_convert;
- /** This field is the requested timeout for this operation. */
- 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 uint32_t's
- * in a packet which must be converted to native format in a
- * heterogeneous system. In packets longer than
- * MP_PACKET_MINIMUN_HETERO_CONVERSION uint32_t'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( uint32_t ) )
-
-/**@}*/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/score/include/rtems/score/objectmp.h b/cpukit/score/include/rtems/score/objectmp.h
deleted file mode 100644
index 934b3981ef..0000000000
--- a/cpukit/score/include/rtems/score/objectmp.h
+++ /dev/null
@@ -1,228 +0,0 @@
-/**
- * @file rtems/score/objectmp.h
- *
- * @brief Data Associated with the Manipulation of Global RTEMS Objects
- *
- * This include file contains all the constants and structures associated
- * with the manipulation of Global RTEMS Objects.
- */
-
-/*
- * COPYRIGHT (c) 1989-2009.
- * On-Line Applications Research Corporation (OAR).
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#ifndef _RTEMS_SCORE_OBJECTMP_H
-#define _RTEMS_SCORE_OBJECTMP_H
-
-#ifndef _RTEMS_SCORE_OBJECTIMPL_H
-# error "Never use <rtems/rtems/objectmp.h> directly; include <rtems/rtems/objectimpl.h> instead."
-#endif
-
-#include <rtems/score/chainimpl.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup ScoreObjectMP Object Handler Multiprocessing Support
- *
- * @ingroup Score
- *
- * This handler encapsulates functionality which is used to manage
- * objects which have been declared to be globally visible. This handler
- * knows objects from all of the nodes in the system.
- */
-/**@{*/
-
-/**
- * @brief Intializes the inactive global object chain
- * based on the maximum number of global objects configured.
- *
- * This routine intializes the inactive global object chain
- * based on the maximum number of global objects configured.
- */
-void _Objects_MP_Handler_initialization(void);
-
-/**
- * @brief Intializes the global object node number
- * used in the ID field of all objects.
- *
- * This routine intializes the global object node number
- * used in the ID field of all objects.
- */
-void _Objects_MP_Handler_early_initialization(void);
-
-/**
- * @brief Place the specified global object in the
- * specified information table.
- *
- * This routine place the specified global object in the
- * specified information table.
- *
- * @param[in] information points to the object information table for this
- * object class.
- * @param[in] the_global_object points to the object being opened.
- * @param[in] the_name is the name of the object being opened.
- * @param[in] the_id is the Id of the object being opened.
- *
- * @todo This method only works for object types with 4 byte object names.
- * It does not support variable length object names.
- */
-void _Objects_MP_Open (
- Objects_Information *information,
- Objects_MP_Control *the_global_object,
- uint32_t the_name,
- Objects_Id the_id
-);
-
-/**
- * @brief Allocates a global object control block
- * and places it in the specified information table.
- *
- * 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.
- *
- * @param[in] information points to the object information table for this
- * object class.
- * @param[in] the_name is the name of the object being opened.
- * @param[in] the_id is the Id of the object being opened.
- * @param[in] is_fatal_error is true if not being able to allocate the
- * object is considered a fatal error.
- *
- * @todo This method only works for object types with 4 byte object names.
- * It does not support variable length object names.
- */
-bool _Objects_MP_Allocate_and_open (
- Objects_Information *information,
- uint32_t the_name,
- Objects_Id the_id,
- bool is_fatal_error
-);
-
-/**
- * @brief Removes a global object from the specified information table.
- *
- * 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
-);
-
-/**
- * @brief Look for the object with the_name in the global
- * object tables indicated by information.
- *
- * 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.
- *
- * @param[in] information points to the object information table for this
- * object class.
- * @param[in] the_name is the name of the object being searched for.
- * @param[in] nodes_to_search indicates the set of nodes to search.
- * @param[in] the_id will contain the Id of the object if found.
- *
- * @retval This method returns one of the
- * @ref Objects_Name_or_id_lookup_errors. If successful, @a the_id
- * will contain the Id of the object.
- */
-Objects_Name_or_id_lookup_errors _Objects_MP_Global_name_search (
- Objects_Information *information,
- Objects_Name the_name,
- uint32_t nodes_to_search,
- Objects_Id *the_id
-);
-
-/**
- * @brief Searches the Global Object Table managed
- * by information for the object indicated by ID.
- *
- * 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.
- *
- * @param[in] information points to the object information table for this
- * object class.
- * @param[in] the_id is the Id of the object being opened.
- * @param[in] location will contain the location of the object.
- * @param[in] the_object will contain a pointer to the object.
- *
- * @retval This method fills in @a location to indicate successful location
- * of the object or error. On success, @a the_object will be
- * filled in.
- */
-void _Objects_MP_Is_remote (
- Objects_Information *information,
- Objects_Id the_id,
- Objects_Locations *location,
- Objects_Control **the_object
-);
-
-/**
- * This is the maximum number of global objects configured.
- */
-SCORE_EXTERN uint32_t _Objects_MP_Maximum_global_objects;
-
-/**
- * The following chain header is used to manage the set of
- * inactive global object control blocks.
- */
-SCORE_EXTERN Chain_Control _Objects_MP_Inactive_global_objects;
-
-/**
- * This function allocates a Global Object control block.
- */
-
-RTEMS_INLINE_ROUTINE Objects_MP_Control *_Objects_MP_Allocate_global_object (
- void
-)
-{
- return (Objects_MP_Control *)
- _Chain_Get( &_Objects_MP_Inactive_global_objects );
-}
-
-/**
- * This routine deallocates a Global Object control block.
- */
-
-RTEMS_INLINE_ROUTINE void _Objects_MP_Free_global_object (
- Objects_MP_Control *the_object
-)
-{
- _Chain_Append(
- &_Objects_MP_Inactive_global_objects,
- &the_object->Object.Node
- );
-}
-
-/**
- * This function returns whether the global object is NULL or not.
- */
-
-RTEMS_INLINE_ROUTINE bool _Objects_MP_Is_null_global_object (
- Objects_MP_Control *the_object
-)
-{
- return( the_object == NULL );
-}
-
-/**@}*/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/score/include/rtems/score/threadmp.h b/cpukit/score/include/rtems/score/threadmp.h
deleted file mode 100644
index 27b6989893..0000000000
--- a/cpukit/score/include/rtems/score/threadmp.h
+++ /dev/null
@@ -1,127 +0,0 @@
-/**
- * @file rtems/score/threadmp.h
- *
- * @brief Multiprocessing Portion of the Thread Package
- *
- * This include file contains the specification for all routines
- * and data specific to the multiprocessing portion of the thread package.
- */
-
-/*
- * COPYRIGHT (c) 1989-2009.
- * On-Line Applications Research Corporation (OAR).
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#ifndef _RTEMS_SCORE_THREADMP_H
-#define _RTEMS_SCORE_THREADMP_H
-
-#ifndef _RTEMS_SCORE_THREADIMPL_H
-# error "Never use <rtems/score/threadmp.h> directly; include <rtems/score/threadimpl.h> instead."
-#endif
-
-#include <rtems/score/mpciimpl.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup ScoreThreadMP Thread Handler Multiprocessing Support
- *
- * @ingroup Score
- *
- * This handler encapsulates functionality which is related to managing
- * threads in a multiprocessor system configuration. This handler must
- * manage proxies which represent remote threads blocking on local
- * operations.
- */
-/**@{*/
-
-/**
- * @brief Initialize MP thread handler.
- *
- * This routine initializes the multiprocessing portion of the Thread Handler.
- */
-void _Thread_MP_Handler_initialization (
- uint32_t maximum_proxies
-);
-
-/**
- * @brief Allocate a MP proxy control block from
- * the inactive chain of free proxy control blocks.
- *
- * 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
-);
-
-/**
- * @brief Removes the MP proxy control block for the specified
- * id from the active chain of proxy control blocks.
- *
- * 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
-);
-
-/**
- * @brief Manage the active set MP proxies.
- *
- * The following chain is used to manage the active set proxies.
- */
-SCORE_EXTERN Chain_Control _Thread_MP_Active_proxies;
-
-/**
- * @brief Manage the inactive set of MP proxies.
- *
- * The following chain is used to manage the inactive set of proxies.
- */
-SCORE_EXTERN Chain_Control _Thread_MP_Inactive_proxies;
-
-/**
- * This function returns true if the thread in question is the
- * multiprocessing receive thread.
- *
- * @note This is a macro to avoid needing a prototype for
- * _MPCI_Receive_server_tcb until it is used.
- */
-#define _Thread_MP_Is_receive(_the_thread) \
- ((_the_thread) == _MPCI_Receive_server_tcb)
-
-/**
- * This routine frees a proxy control block to the
- * inactive chain of free proxy control blocks.
- */
-
-RTEMS_INLINE_ROUTINE void _Thread_MP_Free_proxy (
- Thread_Control *the_thread
-)
-{
- Thread_Proxy_control *the_proxy;
-
- the_proxy = (Thread_Proxy_control *) the_thread;
-
- _Chain_Extract( &the_proxy->Active );
-
- _Chain_Append( &_Thread_MP_Inactive_proxies, &the_thread->Object.Node );
-}
-
-/**@}*/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */