Part II automake reorg by Ralf Corsepius

This commit is contained in:
Joel Sherrill
1998-12-15 21:57:08 +00:00
parent afa3c8ffa5
commit 7e22c7d060
66 changed files with 0 additions and 7521 deletions

View File

@@ -1,42 +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 = eventmp mp msgmp partmp regionmp semmp signalmp taskmp
MP_PIECES = $(MP_PIECES_$(HAS_MP)_V)
H_PIECES=asr attr clock config dpmem event eventset \
intr message modes options part \
ratemon region rtemsapi sem signal status \
support tasks timer types $(MP_PIECES)
H_FILES=$(H_PIECES:%=$(srcdir)/%.h)
# H_FILES that get installed externally
EXTERNAL_H_PIECES = rtems
EXTERNAL_H_FILES=$(EXTERNAL_H_PIECES:%=$(srcdir)/%.h)
SRCS=$(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/rtems
$(INSTALL) -m 444 ${EXTERNAL_H_FILES} $(PROJECT_INCLUDE)

View File

@@ -1,112 +0,0 @@
/* asr.h
*
* This include file contains all the constants and structures associated
* with the Asynchronous Signal Handler. This Handler provides the low-level
* support required by the Signal Manager.
*
* 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_ASR_h
#define __RTEMS_ASR_h
#ifdef __cplusplus
extern "C" {
#endif
#include <rtems/rtems/modes.h>
/*
*
* The following type defines the control block used to manage
* each signal set.
*/
typedef unsigned32 rtems_signal_set;
/*
* Return type for ASR Handler
*/
typedef void rtems_asr;
/*
* The following type corresponds to the applications asynchronous
* signal processing routine.
*/
typedef rtems_asr ( *rtems_asr_entry )(
rtems_signal_set
);
/*
*
* The following defines the control structure used to manage
* signals. Each thread has a copy of this record.
*/
typedef struct {
boolean is_enabled; /* are ASRs enabled currently? */
rtems_asr_entry handler; /* address of RTEMS_ASR */
Modes_Control mode_set; /* RTEMS_ASR mode */
rtems_signal_set signals_posted; /* signal set */
rtems_signal_set signals_pending; /* pending signal set */
unsigned32 nest_level; /* nest level of RTEMS_ASR */
} ASR_Information;
/*
* The following constants define the individual signals which may
* be used to compose a signal set.
*/
#define RTEMS_SIGNAL_0 0x00000001
#define RTEMS_SIGNAL_1 0x00000002
#define RTEMS_SIGNAL_2 0x00000004
#define RTEMS_SIGNAL_3 0x00000008
#define RTEMS_SIGNAL_4 0x00000010
#define RTEMS_SIGNAL_5 0x00000020
#define RTEMS_SIGNAL_6 0x00000040
#define RTEMS_SIGNAL_7 0x00000080
#define RTEMS_SIGNAL_8 0x00000100
#define RTEMS_SIGNAL_9 0x00000200
#define RTEMS_SIGNAL_10 0x00000400
#define RTEMS_SIGNAL_11 0x00000800
#define RTEMS_SIGNAL_12 0x00001000
#define RTEMS_SIGNAL_13 0x00002000
#define RTEMS_SIGNAL_14 0x00004000
#define RTEMS_SIGNAL_15 0x00008000
#define RTEMS_SIGNAL_16 0x00010000
#define RTEMS_SIGNAL_17 0x00020000
#define RTEMS_SIGNAL_18 0x00040000
#define RTEMS_SIGNAL_19 0x00080000
#define RTEMS_SIGNAL_20 0x00100000
#define RTEMS_SIGNAL_21 0x00200000
#define RTEMS_SIGNAL_22 0x00400000
#define RTEMS_SIGNAL_23 0x00800000
#define RTEMS_SIGNAL_24 0x01000000
#define RTEMS_SIGNAL_25 0x02000000
#define RTEMS_SIGNAL_26 0x04000000
#define RTEMS_SIGNAL_27 0x08000000
#define RTEMS_SIGNAL_28 0x10000000
#define RTEMS_SIGNAL_29 0x20000000
#define RTEMS_SIGNAL_30 0x40000000
#define RTEMS_SIGNAL_31 0x80000000
#ifndef __RTEMS_APPLICATION__
#include <rtems/rtems/asr.inl>
#endif
#ifdef __cplusplus
}
#endif
#endif
/* end of include file */

View File

@@ -1,87 +0,0 @@
/* attr.h
*
* This include file contains all information about the Object Attributes
* 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_ATTRIBUTES_h
#define __RTEMS_ATTRIBUTES_h
#ifdef __cplusplus
extern "C" {
#endif
/* types */
typedef unsigned32 rtems_attribute;
/* constants */
#define RTEMS_DEFAULT_ATTRIBUTES 0x00000000
#define RTEMS_NO_FLOATING_POINT 0x00000000 /* don't use FP HW */
#define RTEMS_FLOATING_POINT 0x00000001 /* utilize coprocessor */
#define RTEMS_LOCAL 0x00000000 /* local resource */
#define RTEMS_GLOBAL 0x00000002 /* global resource */
#define RTEMS_FIFO 0x00000000 /* process RTEMS_FIFO */
#define RTEMS_PRIORITY 0x00000004 /* process by priority */
#define RTEMS_COUNTING_SEMAPHORE 0x00000000
#define RTEMS_BINARY_SEMAPHORE 0x00000010
#define RTEMS_NO_INHERIT_PRIORITY 0x00000000
#define RTEMS_INHERIT_PRIORITY 0x00000020
#define RTEMS_NO_PRIORITY_CEILING 0x00000000
#define RTEMS_PRIORITY_CEILING 0x00000040
#define RTEMS_APPLICATION_TASK 0x00000000
#define RTEMS_SYSTEM_TASK 0x00000080
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
#define ATTRIBUTES_NOT_SUPPORTED 0
#else
#define ATTRIBUTES_NOT_SUPPORTED RTEMS_FLOATING_POINT
#endif
#if ( CPU_ALL_TASKS_ARE_FP == TRUE )
#define ATTRIBUTES_REQUIRED RTEMS_FLOATING_POINT
#else
#define ATTRIBUTES_REQUIRED 0
#endif
/*
* _Attributes_Handler_initialization
*
* DESCRIPTION:
*
* This routine performs initialization for this handler.
*
* NOTE: There is no initialization required in C. Conditional compilation
* takes care of this in C.
*/
#define _Attributes_Handler_initialization()
#ifndef __RTEMS_APPLICATION__
#include <rtems/rtems/attr.inl>
#endif
#ifdef __cplusplus
}
#endif
#endif
/* end of include file */

View File

@@ -1,103 +0,0 @@
/* clock.h
*
* This include file contains all the constants and structures associated
* with the Clock Manager. This manager provides facilities to set, obtain,
* and continually update the current date and time.
*
* This manager provides directives to:
*
* + set the current date and time
* + obtain the current date and time
* + announce a clock tick
*
*
* 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_CLOCK_h
#define __RTEMS_CLOCK_h
#ifdef __cplusplus
extern "C" {
#endif
#include <rtems/score/tod.h>
#include <rtems/rtems/types.h>
/*
* List of things which can be returned by the rtems_clock_get directive.
*/
typedef enum {
RTEMS_CLOCK_GET_TOD,
RTEMS_CLOCK_GET_SECONDS_SINCE_EPOCH,
RTEMS_CLOCK_GET_TICKS_SINCE_BOOT,
RTEMS_CLOCK_GET_TICKS_PER_SECOND,
RTEMS_CLOCK_GET_TIME_VALUE
} rtems_clock_get_options;
/*
* Standard flavor style to return TOD in for a rtems_clock_get option.
*/
typedef struct {
unsigned32 seconds;
unsigned32 microseconds;
} rtems_clock_time_value;
/*
* rtems_clock_get
*
* DESCRIPTION:
*
* This routine implements the rtems_clock_get directive. It returns
* one of the following:
* + current time of day
* + seconds since epoch
* + ticks since boot
* + ticks per second
*/
rtems_status_code rtems_clock_get(
rtems_clock_get_options option,
void *time_buffer
);
/*
* rtems_clock_set
*
* DESCRIPTION:
*
* This routine implements the rtems_clock_set directive. It sets
* the current time of day to that in the time_buffer record.
*/
rtems_status_code rtems_clock_set(
rtems_time_of_day *time_buffer
);
/*
* rtems_clock_tick
*
* DESCRIPTION:
*
* This routine implements the rtems_clock_tick directive. It is invoked
* to inform RTEMS of the occurrence of a clock tick.
*/
rtems_status_code rtems_clock_tick( void );
#ifdef __cplusplus
}
#endif
#endif
/* end of include file */

View File

@@ -1,54 +0,0 @@
/* config.h
*
* This include file contains the table of user defined configuration
* parameters specific for the RTEMS API.
*
* 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_RTEMS_CONFIGURATION_h
#define __RTEMS_RTEMS_CONFIGURATION_h
#ifdef __cplusplus
extern "C" {
#endif
#include <rtems/rtems/types.h>
#include <rtems/rtems/tasks.h>
/*
* The following records define the Configuration Table. The
* information contained in this table is required in all
* RTEMS systems, whether single or multiprocessor. This
* table primarily defines the following:
*
* + required number of each object type
*/
typedef struct {
unsigned32 maximum_tasks;
unsigned32 maximum_timers;
unsigned32 maximum_semaphores;
unsigned32 maximum_message_queues;
unsigned32 maximum_partitions;
unsigned32 maximum_regions;
unsigned32 maximum_ports;
unsigned32 maximum_periods;
unsigned32 number_of_initialization_tasks;
rtems_initialization_tasks_table *User_initialization_tasks_table;
} rtems_api_configuration_table;
#ifdef __cplusplus
}
#endif
#endif
/* end of include file */

View File

@@ -1,157 +0,0 @@
/* dpmem.h
*
* This include file contains all the constants and structures associated
* with the Dual Ported Memory Manager. This manager provides a mechanism
* for converting addresses between internal and external representations
* for multiple dual-ported memory areas.
*
* Directives provided are:
*
* + create a port
* + get ID of a port
* + delete a port
* + convert external to internal address
* + convert internal to external address
*
*
* 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_DUAL_PORTED_MEMORY_h
#define __RTEMS_DUAL_PORTED_MEMORY_h
#ifdef __cplusplus
extern "C" {
#endif
#include <rtems/score/object.h>
/*
* The following structure defines the port control block. Each port
* has a control block associated with it. This control block contains
* all information required to support the port related operations.
*/
typedef struct {
Objects_Control Object;
void *internal_base; /* base internal address */
void *external_base; /* base external address */
unsigned32 length; /* length of dual-ported area */
} Dual_ported_memory_Control;
/*
* The following define the internal Dual Ported Memory information.
*/
RTEMS_EXTERN Objects_Information _Dual_ported_memory_Information;
/*
* _Dual_ported_memory_Manager_initialization
*
* DESCRIPTION:
*
* This routine performs the initialization necessary for this manager.
*/
void _Dual_ported_memory_Manager_initialization(
unsigned32 maximum_ports
);
/*
* rtems_port_create
*
* DESCRIPTION:
*
* This routine implements the rtems_port_create directive. The port
* will have the name name. The port maps onto an area of dual ported
* memory of length bytes which has internal_start and external_start
* as the internal and external starting addresses, respectively.
* It returns the id of the created port in ID.
*/
rtems_status_code rtems_port_create(
rtems_name name,
void *internal_start,
void *external_start,
unsigned32 length,
Objects_Id *id
);
/*
* rtems_port_ident
*
* DESCRIPTION:
*
* This routine implements the rtems_port_ident directive. This directive
* returns the port ID associated with name. If more than one port is
* named name, then the port to which the ID belongs is arbitrary.
*/
rtems_status_code rtems_port_ident(
rtems_name name,
Objects_Id *id
);
/*
* rtems_port_delete
*
* DESCRIPTION:
*
* This routine implements the rtems_port_delete directive. It deletes
* the port associated with ID.
*/
rtems_status_code rtems_port_delete(
Objects_Id id
);
/*
* rtems_port_external_to_internal
*
* DESCRIPTION:
*
* This routine implements the rtems_port_external_to_internal directive.
* It returns the internal port address which maps to the provided
* external port address for the specified port ID.
*/
rtems_status_code rtems_port_external_to_internal(
Objects_Id id,
void *external,
void **internal
);
/*
* rtems_port_internal_to_external
*
* DESCRIPTION:
*
* This routine implements the Port_internal_to_external directive.
* It returns the external port address which maps to the provided
* internal port address for the specified port ID.
*/
rtems_status_code rtems_port_internal_to_external(
Objects_Id id,
void *internal,
void **external
);
#ifndef __RTEMS_APPLICATION__
#include <rtems/rtems/dpmem.inl>
#endif
#ifdef __cplusplus
}
#endif
#endif
/* end of include file */

View File

@@ -1,176 +0,0 @@
/* event.h
*
* This include file contains the information pertaining to the Event
* Manager. This manager provides a high performance method of communication
* and synchronization.
*
* Directives provided are:
*
* + send an event set to a task
* + receive event condition
*
*
* 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_EVENT_h
#define __RTEMS_EVENT_h
#ifdef __cplusplus
extern "C" {
#endif
#include <rtems/score/object.h>
#include <rtems/rtems/types.h>
#include <rtems/rtems/options.h>
#include <rtems/score/thread.h>
#include <rtems/score/watchdog.h>
#include <rtems/rtems/eventset.h>
/*
* This constant is passed as the event_in to the
* rtems_event_receive directive to determine which events are pending.
*/
#define EVENT_CURRENT 0
/*
* The following enumerated types indicate what happened while the event
* manager was in the synchronization window.
*/
typedef enum {
EVENT_SYNC_SYNCHRONIZED,
EVENT_SYNC_NOTHING_HAPPENED,
EVENT_SYNC_TIMEOUT,
EVENT_SYNC_SATISFIED
} Event_Sync_states;
/*
* Event_Manager_initialization
*
* DESCRIPTION:
*
* This routine performs the initialization necessary for this manager.
*/
void _Event_Manager_initialization( void );
/*
* rtems_event_send
*
* DESCRIPTION:
*
* This routine implements the rtems_event_send directive. It sends
* event_in to the task specified by ID. If the task is blocked
* waiting to receive events and the posting of event_in satisfies
* the task's event condition, then it is unblocked.
*/
rtems_status_code rtems_event_send (
Objects_Id id,
rtems_event_set event_in
);
/*
* rtems_event_receive
*
* DESCRIPTION:
*
* This routine implements the rtems_event_receive directive. This
* directive is invoked when the calling task wishes to receive
* the event_in event condition. One of the fields in the option_set
* parameter determines whether the receive request is satisfied if
* any or all of the events are pending. If the event condition
* is not satisfied immediately, then the task may block with an
* optional timeout of TICKS clock ticks or return immediately.
* This determination is based on another field in the option_set
* parameter. This directive returns the events received in the
* event_out parameter.
*/
rtems_status_code rtems_event_receive (
rtems_event_set event_in,
rtems_option option_set,
rtems_interval ticks,
rtems_event_set *event_out
);
/*
* _Event_Seize
*
* DESCRIPTION:
*
* This routine determines if the event condition event_in is
* satisfied. If so or if the no_wait option is enabled in option_set,
* then the procedure returns immediately. If neither of these
* conditions is true, then the calling task is blocked with an
* optional timeout of ticks clock ticks.
*/
void _Event_Seize (
rtems_event_set event_in,
rtems_option option_set,
rtems_interval ticks,
rtems_event_set *event_out
);
/*
* _Event_Surrender
*
* DESCRIPTION:
*
* This routine determines if the event condition of the_thread
* has been satisfied. If so, it unblocks the_thread.
*/
void _Event_Surrender (
Thread_Control *the_thread
);
/*
* _Event_Timeout
*
* DESCRIPTION:
*
* This routine is invoked when a task's event receive request
* has not been satisfied after the specified timeout interval.
* 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 _Event_Timeout (
Objects_Id id,
void *ignored
);
/*
* The following defines the synchronization flag used by the
* Event Manager to insure that signals sent to the currently
* executing thread are received properly.
*/
RTEMS_EXTERN volatile Event_Sync_states _Event_Sync_state;
#if defined(RTEMS_MULTIPROCESSING)
#include <rtems/rtems/eventmp.h>
#endif
#ifndef __RTEMS_APPLICATION__
#include <rtems/rtems/event.inl>
#endif
#ifdef __cplusplus
}
#endif
#endif
/* end of include file */

View File

@@ -1,147 +0,0 @@
/* eventmp.h
*
* This include file contains all the constants and structures associated
* with the Multiprocessing Support in the Event Manager.
*
* 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_EVENT_MP_h
#define __RTEMS_EVENT_MP_h
#ifdef __cplusplus
extern "C" {
#endif
#include <rtems/rtems/event.h>
#include <rtems/score/mppkt.h>
#include <rtems/score/object.h>
#include <rtems/score/thread.h>
#include <rtems/score/watchdog.h>
/*
* The following enumerated type defines the list of
* remote event operations.
*/
typedef enum {
EVENT_MP_SEND_REQUEST = 0,
EVENT_MP_SEND_RESPONSE = 1
} Event_MP_Remote_operations;
/*
* The following data structure defines the packet used to perform
* remote event operations.
*/
typedef struct {
rtems_packet_prefix Prefix;
Event_MP_Remote_operations operation;
rtems_event_set event_in;
} Event_MP_Packet;
/*
* _Event_MP_Send_process_packet
*
* DESCRIPTION:
*
* This routine performs a remote procedure call so that a
* process operation can be performed on another node.
*
* This routine is not needed since there are no process
* packets to be sent by this manager.
*/
/*
* _Event_MP_Send_request_packet
*
* DESCRIPTION:
*
* This routine performs a remote procedure call so that a
* directive operation can be initiated on another node.
*/
rtems_status_code _Event_MP_Send_request_packet (
Event_MP_Remote_operations operation,
Objects_Id event_id,
rtems_event_set event_in
);
/*
* _Event_MP_Send_response_packet
*
* DESCRIPTION:
*
* This routine performs a remote procedure call so that a
* directive can be performed on another node.
*/
void _Event_MP_Send_response_packet (
Event_MP_Remote_operations operation,
Thread_Control *the_thread
);
/*
*
* _Event_MP_Process_packet
*
* DESCRIPTION:
*
* This routine performs the actions specific to this package for
* the request from another node.
*/
void _Event_MP_Process_packet (
rtems_packet_prefix *the_packet_prefix
);
/*
* _Event_MP_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.
*/
/*
* _Event_MP_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.
*/
/*
* _Event_MP_Get_packet
*
* DESCRIPTION:
*
* This function is used to obtain a event mp packet.
*/
Event_MP_Packet *_Event_MP_Get_packet ( void );
#ifdef __cplusplus
}
#endif
#endif
/* end of file */

View File

@@ -1,89 +0,0 @@
/* eventset.h
*
* This include file contains the information pertaining to the
* Event Sets Handler. This handler provides methods for the manipulation
* of event sets which will be sent and received by tasks.
*
* 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_EVENT_SET_h
#define __RTEMS_EVENT_SET_h
#ifdef __cplusplus
extern "C" {
#endif
/*
* The following defines the type used to control event sets.
*/
typedef unsigned32 rtems_event_set;
/*
* The following constants define the individual events which may
* be used to compose an event set.
*/
#define RTEMS_PENDING_EVENTS 0 /* receive pending events */
#define RTEMS_ALL_EVENTS 0xFFFFFFFF
#define RTEMS_EVENT_0 0x00000001
#define RTEMS_EVENT_1 0x00000002
#define RTEMS_EVENT_2 0x00000004
#define RTEMS_EVENT_3 0x00000008
#define RTEMS_EVENT_4 0x00000010
#define RTEMS_EVENT_5 0x00000020
#define RTEMS_EVENT_6 0x00000040
#define RTEMS_EVENT_7 0x00000080
#define RTEMS_EVENT_8 0x00000100
#define RTEMS_EVENT_9 0x00000200
#define RTEMS_EVENT_10 0x00000400
#define RTEMS_EVENT_11 0x00000800
#define RTEMS_EVENT_12 0x00001000
#define RTEMS_EVENT_13 0x00002000
#define RTEMS_EVENT_14 0x00004000
#define RTEMS_EVENT_15 0x00008000
#define RTEMS_EVENT_16 0x00010000
#define RTEMS_EVENT_17 0x00020000
#define RTEMS_EVENT_18 0x00040000
#define RTEMS_EVENT_19 0x00080000
#define RTEMS_EVENT_20 0x00100000
#define RTEMS_EVENT_21 0x00200000
#define RTEMS_EVENT_22 0x00400000
#define RTEMS_EVENT_23 0x00800000
#define RTEMS_EVENT_24 0x01000000
#define RTEMS_EVENT_25 0x02000000
#define RTEMS_EVENT_26 0x04000000
#define RTEMS_EVENT_27 0x08000000
#define RTEMS_EVENT_28 0x10000000
#define RTEMS_EVENT_29 0x20000000
#define RTEMS_EVENT_30 0x40000000
#define RTEMS_EVENT_31 0x80000000
/*
* The following constant is the value of an event set which
* has no events pending.
*/
#define EVENT_SETS_NONE_PENDING 0
#ifndef __RTEMS_APPLICATION__
#include <rtems/rtems/eventset.inl>
#endif
#ifdef __cplusplus
}
#endif
#endif
/* end of include file */

View File

@@ -1,160 +0,0 @@
/* intr.h
*
* This include file contains all the constants and structures associated
* with the Interrupt Manager.
*
* 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_INTERRUPT_h
#define __RTEMS_INTERRUPT_h
#ifdef __cplusplus
extern "C" {
#endif
#include <rtems/score/isr.h>
/*
* Interrupt level type
*/
typedef ISR_Level rtems_interrupt_level;
/*
* The following type defines the control block used to manage
* the vectors.
*/
typedef ISR_Vector_number rtems_vector_number;
/*
* Return type for ISR Handler
*/
typedef void rtems_isr;
/*
* Pointer to an ISR Handler
*/
typedef rtems_isr ( *rtems_isr_entry )(
rtems_vector_number
);
/*
* _Interrupt_Manager_initialization
*
* DESCRIPTION:
*
* This routine initializes the interrupt manager.
*
*/
void _Interrupt_Manager_initialization( void );
/*
* rtems_interrupt_catch
*
* DESCRIPTION:
*
* This routine implements the rtems_interrupt_catch directive. This
* directive installs new_isr_handler as the RTEMS interrupt service
* routine for vector. The previous RTEMS interrupt service
* routine is returned in old_isr_handler.
*/
rtems_status_code rtems_interrupt_catch(
rtems_isr_entry new_isr_handler,
rtems_vector_number vector,
rtems_isr_entry *old_isr_handler
);
/*
* rtems_interrupt_disable
*
* DESCRIPTION:
*
* This routine disables all maskable interrupts and returns the
* previous level in _isr_cookie.
*/
#define rtems_interrupt_disable( _isr_cookie ) \
_ISR_Disable(_isr_cookie)
/*
* rtems_interrupt_enable
*
* DESCRIPTION:
*
* This routine enables maskable interrupts to the level indicated
* _isr_cookie.
*/
#define rtems_interrupt_enable( _isr_cookie ) \
_ISR_Enable(_isr_cookie)
/*
* rtems_interrupt_flash
*
* DESCRIPTION:
*
* This routine temporarily enables maskable interrupts to the
* level in _isr_cookie before redisabling them.
*/
#define rtems_interrupt_flash( _isr_cookie ) \
_ISR_Flash(_isr_cookie)
/*
* rtems_interrupt_is_in_progress
*
* DESCRIPTION:
*
* This function returns TRUE if the processor is currently servicing
* an interrupt and FALSE otherwise. A return value of TRUE indicates
* that the caller is an interrupt service routine, NOT a thread. The
* directives available to an interrupt service routine are restricted.
*/
#define rtems_interrupt_is_in_progress() \
_ISR_Is_in_progress()
/*
* rtems_interrupt_cause
*
* DESCRIPTION:
*
* This routine generates an interrupt.
*
* NOTE: No implementation.
*/
#define rtems_interrupt_cause( _interrupt_to_cause )
/*
* rtems_interrupt_cause
*
* DESCRIPTION:
*
* This routine clears the specified interrupt.
*
* NOTE: No implementation.
*/
#define rtems_interrupt_clear( _interrupt_to_clear )
#ifdef __cplusplus
}
#endif
#endif
/* end of include file */

View File

@@ -1,338 +0,0 @@
/* message.h
*
* This include file contains all the constants and structures associated
* with the Message Queue Manager. This manager provides a mechanism for
* communication and synchronization between tasks using messages.
*
* Directives provided are:
*
* + create a queue
* + get ID of a queue
* + delete a queue
* + put a message at the rear of a queue
* + put a message at the front of a queue
* + broadcast N messages to a queue
* + receive message from a queue
* + flush all messages on a 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 __RTEMS_MESSAGE_QUEUE_h
#define __RTEMS_MESSAGE_QUEUE_h
#ifdef __cplusplus
extern "C" {
#endif
#include <rtems/rtems/types.h>
#include <rtems/score/chain.h>
#include <rtems/score/object.h>
#include <rtems/rtems/attr.h>
#include <rtems/score/threadq.h>
#include <rtems/score/coremsg.h>
/*
* 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 {
MESSAGE_QUEUE_SEND_REQUEST = 0,
MESSAGE_QUEUE_URGENT_REQUEST = 1
} Message_queue_Submit_types;
/*
* The following records define the control block used to manage
* each message queue.
*/
typedef struct {
Objects_Control Object;
rtems_attribute attribute_set;
CORE_message_queue_Control message_queue;
} Message_queue_Control;
/*
* The following defines the information control block used to
* manage this class of objects.
*/
RTEMS_EXTERN Objects_Information _Message_queue_Information;
/*
* _Message_queue_Manager_initialization
*
* DESCRIPTION:
*
* This routine performs the initialization necessary for this manager.
*/
void _Message_queue_Manager_initialization(
unsigned32 maximum_message_queues
);
/*
* rtems_message_queue_create
*
* DESCRIPTION:
*
* This routine implements the rtems_message_queue_create directive. The
* message queue will have the name name. If the attribute_set indicates
* that the message queue is to be limited in the number of messages
* that can be outstanding, then count indicates the maximum number of
* messages that will be held. It returns the id of the created
* message queue in ID.
*/
rtems_status_code rtems_message_queue_create(
rtems_name name,
unsigned32 count,
unsigned32 max_message_size,
rtems_attribute attribute_set,
Objects_Id *id
);
/*
* rtems_message_queue_ident
*
* DESCRIPTION:
*
* This routine implements the rtems_message_queue_ident directive.
* This directive returns the message queue ID associated with NAME.
* If more than one message queue is named name, then the message
* queue to which the ID belongs is arbitrary. node indicates the
* extent of the search for the ID of the message queue named name.
* The search can be limited to a particular node or allowed to
* encompass all nodes.
*/
rtems_status_code rtems_message_queue_ident(
rtems_name name,
unsigned32 node,
Objects_Id *id
);
/*
* rtems_message_queue_delete
*
* DESCRIPTION:
*
* This routine implements the rtems_message_queue_delete directive. The
* message queue indicated by ID is deleted.
*/
rtems_status_code rtems_message_queue_delete(
Objects_Id id
);
/*
* rtems_message_queue_send
*
* DESCRIPTION:
*
* This routine implements the rtems_message_queue_send directive.
* This directive sends the message buffer to the message queue
* indicated by ID. If one or more tasks is blocked waiting
* to receive a message from this message queue, then one will
* receive the message. The task selected to receive the
* message is based on the task queue discipline algorithm in
* use by this particular message queue. If no tasks are waiting,
* then the message buffer will be placed at the rear of the
* chain of pending messages for this message queue.
*/
rtems_status_code rtems_message_queue_send(
Objects_Id id,
void *buffer,
unsigned32 size
);
/*
* rtems_message_queue_urgent
*
* DESCRIPTION:
*
* This routine implements the rtems_message_queue_send directive.
* This directive sends the message buffer to the message queue
* indicated by ID. If one or more tasks is blocked waiting
* to receive a message from this message queue, then one will
* receive the message. The task selected to receive the
* message is based on the task queue discipline algorithm in
* use by this particular message queue. If no tasks are waiting,
* then the message buffer will be placed at the rear of the
* chain of pending messages for this message queue.
*/
rtems_status_code rtems_message_queue_urgent(
Objects_Id id,
void *buffer,
unsigned32 size
);
/*
* rtems_message_queue_broadcast
*
* DESCRIPTION:
*
* This routine implements the rtems_message_queue_send directive.
* This directive sends the message buffer to the message queue
* indicated by ID. If one or more tasks is blocked waiting
* to receive a message from this message queue, then one will
* receive the message. The task selected to receive the
* message is based on the task queue discipline algorithm in
* use by this particular message queue. If no tasks are waiting,
* then the message buffer will be placed at the rear of the
* chain of pending messages for this message queue.
*/
rtems_status_code rtems_message_queue_broadcast(
Objects_Id id,
void *buffer,
unsigned32 size,
unsigned32 *count
);
/*
* rtems_message_queue_receive
*
* DESCRIPTION:
*
* This routine implements the rtems_message_queue_receive directive.
* This directive is invoked when the calling task wishes to receive
* a message from the message queue indicated by ID. The received
* message is to be placed in buffer. If no messages are outstanding
* and the option_set indicates that the task is willing to block,
* then the task will be blocked until a message arrives or until,
* optionally, timeout clock ticks have passed.
*/
rtems_status_code rtems_message_queue_receive(
Objects_Id id,
void *buffer,
unsigned32 *size,
unsigned32 option_set,
rtems_interval timeout
);
/*
* rtems_message_queue_flush
*
* DESCRIPTION:
*
* This routine implements the rtems_message_queue_flush directive.
* This directive takes all outstanding messages for the message
* queue indicated by ID and returns them to the inactive message
* chain. The number of messages flushed is returned in COUNT.
*/
rtems_status_code rtems_message_queue_flush(
Objects_Id id,
unsigned32 *count
);
/*
* rtems_message_queue_get_number_pending
*
* DESCRIPTION:
*
* This routine implements the rtems_message_queue_get_number_pending
* directive. This directive returns the number of pending
* messages for the message queue indicated by ID
* chain. The number of messages pending is returned in COUNT.
*/
rtems_status_code rtems_message_queue_get_number_pending(
Objects_Id id,
unsigned32 *count
);
/*
* _Message_queue_Submit
*
* DESCRIPTION:
*
* This routine implements the directives rtems_message_queue_send
* and rtems_message_queue_urgent. It processes a message that is
* to be submitted to the designated message queue. The message will
* either be processed as a send 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.
*/
rtems_status_code _Message_queue_Submit(
Objects_Id id,
void *buffer,
unsigned32 size,
Message_queue_Submit_types submit_type
);
/*
* _Message_queue_Allocate
*
* DESCRIPTION:
*
* This function allocates a message queue control block from
* the inactive chain of free message queue control blocks.
*/
Message_queue_Control *_Message_queue_Allocate (
unsigned32 count,
unsigned32 max_message_size
);
/*
* _Message_queue_Translate_core_message_queue_return_code
*
* DESCRIPTION:
*
* This function returns a RTEMS status code based on the core message queue
* status code specified.
*/
rtems_status_code _Message_queue_Translate_core_message_queue_return_code (
unsigned32 the_message_queue_status
);
/*
*
* _Message_queue_Core_message_queue_mp_support
*
* Input parameters:
* the_thread - the remote thread the message was submitted to
* id - id of the message queue
*
* Output parameters: NONE
*/
#if defined(RTEMS_MULTIPROCESSING)
void _Message_queue_Core_message_queue_mp_support (
Thread_Control *the_thread,
Objects_Id id
);
#endif
#ifndef __RTEMS_APPLICATION__
#include <rtems/rtems/message.inl>
#endif
#if defined(RTEMS_MULTIPROCESSING)
#include <rtems/rtems/msgmp.h>
#endif
#ifdef __cplusplus
}
#endif
#endif
/* end of include file */

View File

@@ -1,89 +0,0 @@
/* modes.h
*
* This include file contains all constants and structures associated
* with the RTEMS thread and RTEMS_ASR modes.
*
* 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_MODES_h
#define __RTEMS_MODES_h
#ifdef __cplusplus
extern "C" {
#endif
#include <rtems/score/isr.h>
/*
* The following type defines the control block used to manage
* each a mode set.
*/
typedef unsigned32 Modes_Control;
/*
* The following constants define the individual modes and masks
* which may be used to compose a mode set and to alter modes.
*/
#define RTEMS_ALL_MODE_MASKS 0x0000ffff
#define RTEMS_DEFAULT_MODES 0x00000000
#define RTEMS_CURRENT_MODE 0
#define RTEMS_PREEMPT_MASK 0x00000100 /* preemption bit */
#define RTEMS_TIMESLICE_MASK 0x00000200 /* timeslice bit */
#define RTEMS_ASR_MASK 0x00000400 /* RTEMS_ASR enable bit */
#define RTEMS_INTERRUPT_MASK CPU_MODES_INTERRUPT_MASK
#define RTEMS_PREEMPT 0x00000000 /* enable preemption */
#define RTEMS_NO_PREEMPT 0x00000100 /* disable preemption */
#define RTEMS_NO_TIMESLICE 0x00000000 /* disable timeslicing */
#define RTEMS_TIMESLICE 0x00000200 /* enable timeslicing */
#define RTEMS_ASR 0x00000000 /* enable RTEMS_ASR */
#define RTEMS_NO_ASR 0x00000400 /* disable RTEMS_ASR */
/*
* The number of bits for interrupt levels is CPU dependent.
* RTEMS supports 0 to 256 levels in bits 0-7 of the mode.
*/
/*PAGE
*
* RTEMS_INTERRUPT_LEVEL
*
* DESCRIPTION:
*
* This function returns the processor dependent interrupt
* level which corresponds to the requested interrupt level.
*
* NOTE: RTEMS supports 256 interrupt levels using the least
* significant eight bits of MODES.CONTROL. On any
* particular CPU, fewer than 256 levels may be supported.
*/
#define RTEMS_INTERRUPT_LEVEL( _mode_set ) \
( (_mode_set) & RTEMS_INTERRUPT_MASK )
#ifndef __RTEMS_APPLICATION__
#include <rtems/rtems/modes.inl>
#endif
#ifdef __cplusplus
}
#endif
#endif
/* end of include file */

View File

@@ -1,53 +0,0 @@
/* mp.h
*
* This include file contains all the constants and structures associated
* with the Multiprocessing Manager.
*
* 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_MP_h
#define __RTEMS_MP_h
#ifdef __cplusplus
extern "C" {
#endif
/*
*
* _Multiprocessing_Manager_initialization
*
* DESCRIPTION:
*
* This routine performs the initialization necessary for this manager.
*/
void _Multiprocessing_Manager_initialization ( void );
/*
*
* rtems_multiprocessing_announce
*
* DESCRIPTION:
*
* This routine implements the MULTIPROCESSING_ANNOUNCE directive.
* It is invoked by the MPCI layer to indicate that an MPCI packet
* has been received.
*/
void rtems_multiprocessing_announce ( void );
#ifdef __cplusplus
}
#endif
#endif
/* end of include file */

View File

@@ -1,177 +0,0 @@
/* msgmp.h
*
* This include file contains all the constants and structures associated
* with the Multiprocessing Support in the Message Manager.
*
* 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_MESSAGE_QUEUE_MP_h
#define __RTEMS_MESSAGE_QUEUE_MP_h
#ifdef __cplusplus
extern "C" {
#endif
#include <rtems/rtems/message.h>
#include <rtems/score/mppkt.h>
#include <rtems/score/object.h>
#include <rtems/rtems/options.h>
#include <rtems/score/thread.h>
#include <rtems/score/watchdog.h>
/*
* The following enumerated type defines the list of
* remote message queue operations.
*/
typedef enum {
MESSAGE_QUEUE_MP_ANNOUNCE_CREATE = 0,
MESSAGE_QUEUE_MP_ANNOUNCE_DELETE = 1,
MESSAGE_QUEUE_MP_EXTRACT_PROXY = 2,
MESSAGE_QUEUE_MP_RECEIVE_REQUEST = 3,
MESSAGE_QUEUE_MP_RECEIVE_RESPONSE = 4,
MESSAGE_QUEUE_MP_SEND_REQUEST = 5,
MESSAGE_QUEUE_MP_SEND_RESPONSE = 6,
MESSAGE_QUEUE_MP_URGENT_REQUEST = 7,
MESSAGE_QUEUE_MP_URGENT_RESPONSE = 8,
MESSAGE_QUEUE_MP_BROADCAST_REQUEST = 9,
MESSAGE_QUEUE_MP_BROADCAST_RESPONSE = 10,
MESSAGE_QUEUE_MP_FLUSH_REQUEST = 11,
MESSAGE_QUEUE_MP_FLUSH_RESPONSE = 12,
MESSAGE_QUEUE_MP_GET_NUMBER_PENDING_REQUEST = 13,
MESSAGE_QUEUE_MP_GET_NUMBER_PENDING_RESPONSE = 14
} Message_queue_MP_Remote_operations;
/*
* The following data structure defines the packet used to perform
* remote message queue operations.
*/
typedef struct {
rtems_packet_prefix Prefix;
Message_queue_MP_Remote_operations operation;
rtems_name name;
rtems_option option_set;
Objects_Id proxy_id;
unsigned32 count;
unsigned32 size;
unsigned32 pad0;
CORE_message_queue_Buffer Buffer;
} Message_queue_MP_Packet;
/*
* _Message_queue_MP_Send_process_packet
*
* DESCRIPTION:
*
* This routine performs a remote procedure call so that a
* process operation can be performed on another node.
*/
void _Message_queue_MP_Send_process_packet (
Message_queue_MP_Remote_operations operation,
Objects_Id message_queue_id,
rtems_name name,
Objects_Id proxy_id
);
/*
* _Message_queue_MP_Send_request_packet
*
* DESCRIPTION:
*
* This routine performs a remote procedure call so that a
* directive operation can be initiated on another node.
*/
rtems_status_code _Message_queue_MP_Send_request_packet (
Message_queue_MP_Remote_operations operation,
Objects_Id message_queue_id,
void *buffer,
unsigned32 *size_p,
rtems_option option_set,
Watchdog_Interval timeout
);
/*
* _Message_queue_MP_Send_response_packet
*
* DESCRIPTION:
*
* This routine performs a remote procedure call so that a
* directive can be performed on another node.
*/
void _Message_queue_MP_Send_response_packet (
Message_queue_MP_Remote_operations operation,
Objects_Id message_queue_id,
Thread_Control *the_thread
);
/*
*
* _Message_queue_MP_Process_packet
*
* DESCRIPTION:
*
* This routine performs the actions specific to this package for
* the request from another node.
*/
void _Message_queue_MP_Process_packet (
rtems_packet_prefix *the_packet_prefix
);
/*
* _Message_queue_MP_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.
*/
void _Message_queue_MP_Send_object_was_deleted (
Thread_Control *the_proxy
);
/*
* _Message_queue_MP_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.
*/
void _Message_queue_MP_Send_extract_proxy (
Thread_Control *the_thread
);
/*
* _Message_queue_MP_Get_packet
*
* DESCRIPTION:
*
* This function is used to obtain a message queue mp packet.
*/
Message_queue_MP_Packet *_Message_queue_MP_Get_packet ( void );
#ifdef __cplusplus
}
#endif
#endif
/* end of file */

View File

@@ -1,53 +0,0 @@
/* options.h
*
* This include file contains information which defines the
* options available on many directives.
*
* 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_OPTIONS_h
#define __RTEMS_OPTIONS_h
#ifdef __cplusplus
extern "C" {
#endif
/*
* The following type defines the control block used to manage
* option sets.
*/
typedef unsigned32 rtems_option;
/*
* The following constants define the individual options which may
* be used to compose an option set.
*/
#define RTEMS_DEFAULT_OPTIONS 0x00000000
#define RTEMS_WAIT 0x00000000 /* wait on resource */
#define RTEMS_NO_WAIT 0x00000001 /* do not wait on resource */
#define RTEMS_EVENT_ALL 0x00000000 /* wait for all events */
#define RTEMS_EVENT_ANY 0x00000002 /* wait on any event */
#ifndef __RTEMS_APPLICATION__
#include <rtems/rtems/options.inl>
#endif
#ifdef __cplusplus
}
#endif
#endif
/* end of include file */

View File

@@ -1,170 +0,0 @@
/* partition.h
*
* This include file contains all the constants and structures associated
* with the Partition Manager. This manager provides facilities to
* dynamically allocate memory in fixed-sized units which are returned
* as buffers.
*
* Directives provided are:
*
* + create a partition
* + get an ID of a partition
* + delete a partition
* + get a buffer from a partition
* + return a buffer to a partition
*
* 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_PARTITION_h
#define __RTEMS_PARTITION_h
#ifdef __cplusplus
extern "C" {
#endif
#include <rtems/score/address.h>
#include <rtems/score/object.h>
#include <rtems/rtems/attr.h>
#include <rtems/rtems/types.h>
/*
* The following defines the control block used to manage each partition.
*/
typedef struct {
Objects_Control Object;
void *starting_address; /* physical address */
unsigned32 length; /* in bytes */
unsigned32 buffer_size; /* in bytes */
rtems_attribute attribute_set; /* attributes */
unsigned32 number_of_used_blocks; /* or allocated buffers */
Chain_Control Memory; /* buffer chain */
} Partition_Control;
/*
* The following defines the information control block used to
* manage this class of objects.
*/
RTEMS_EXTERN Objects_Information _Partition_Information;
/*
* _Partition_Manager_initialization
*
* DESCRIPTION:
*
* This routine performs the initialization necessary for this manager.
*/
void _Partition_Manager_initialization(
unsigned32 maximum_partitions
);
/*
* rtems_partition_create
*
* DESCRIPTION:
*
* This routine implements the rtems_partition_create directive. The
* partition will have the name name. The memory area managed by
* the partition is of length bytes and starts at starting_address.
* The memory area will be divided into as many buffers of
* buffer_size bytes as possible. The attribute_set determines if
* the partition is global or local. It returns the id of the
* created partition in ID.
*/
rtems_status_code rtems_partition_create(
rtems_name name,
void *starting_address,
unsigned32 length,
unsigned32 buffer_size,
rtems_attribute attribute_set,
Objects_Id *id
);
/*
* rtems_partition_ident
*
* DESCRIPTION:
*
* This routine implements the rtems_partition_ident directive.
* This directive returns the partition ID associated with name.
* If more than one partition is named name, then the partition
* to which the ID belongs is arbitrary. node indicates the
* extent of the search for the ID of the partition named name.
* The search can be limited to a particular node or allowed to
* encompass all nodes.
*/
rtems_status_code rtems_partition_ident(
rtems_name name,
unsigned32 node,
Objects_Id *id
);
/*
* rtems_partition_delete
*
* DESCRIPTION:
*
* This routine implements the rtems_partition_delete directive. The
* partition indicated by ID is deleted.
*/
rtems_status_code rtems_partition_delete(
Objects_Id id
);
/*
* rtems_partition_get_buffer
*
* DESCRIPTION:
*
* This routine implements the rtems_partition_get_buffer directive. It
* attempts to allocate a buffer from the partition associated with ID.
* If a buffer is allocated, its address is returned in buffer.
*/
rtems_status_code rtems_partition_get_buffer(
Objects_Id id,
void **buffer
);
/*
* rtems_partition_return_buffer
*
* DESCRIPTION:
*
* This routine implements the rtems_partition_return_buffer directive. It
* frees the buffer to the partition associated with ID. The buffer must
* have been previously allocated from the same partition.
*/
rtems_status_code rtems_partition_return_buffer(
Objects_Id id,
void *buffer
);
#ifndef __RTEMS_APPLICATION__
#include <rtems/rtems/part.inl>
#endif
#if defined(RTEMS_MULTIPROCESSING)
#include <rtems/rtems/partmp.h>
#endif
#ifdef __cplusplus
}
#endif
#endif
/* end of include file */

View File

@@ -1,161 +0,0 @@
/* partmp.h
*
* This include file contains all the constants and structures associated
* with the Multiprocessing Support in the Partition Manager.
*
* 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_PARTITION_MP_h
#define __RTEMS_PARTITION_MP_h
#ifdef __cplusplus
extern "C" {
#endif
#include <rtems/score/mppkt.h>
#include <rtems/score/object.h>
#include <rtems/rtems/options.h>
#include <rtems/score/thread.h>
#include <rtems/rtems/part.h>
/*
* The following enumerated type defines the list of
* remote partition operations.
*/
typedef enum {
PARTITION_MP_ANNOUNCE_CREATE = 0,
PARTITION_MP_ANNOUNCE_DELETE = 1,
PARTITION_MP_EXTRACT_PROXY = 2,
PARTITION_MP_GET_BUFFER_REQUEST = 3,
PARTITION_MP_GET_BUFFER_RESPONSE = 4,
PARTITION_MP_RETURN_BUFFER_REQUEST = 5,
PARTITION_MP_RETURN_BUFFER_RESPONSE = 6
} Partition_MP_Remote_operations;
/*
* The following data structure defines the packet used to perform
* remote partition operations.
*/
typedef struct {
rtems_packet_prefix Prefix;
Partition_MP_Remote_operations operation;
rtems_name name;
void *buffer;
Objects_Id proxy_id;
} Partition_MP_Packet;
/*
* _Partition_MP_Send_process_packet
*
* DESCRIPTION:
*
* This routine performs a remote procedure call so that a
* process operation can be performed on another node.
*/
void _Partition_MP_Send_process_packet (
Partition_MP_Remote_operations operation,
Objects_Id partition_id,
rtems_name name,
Objects_Id proxy_id
);
/*
* _Partition_MP_Send_request_packet
*
* DESCRIPTION:
*
* This routine performs a remote procedure call so that a
* directive operation can be initiated on another node.
*/
rtems_status_code _Partition_MP_Send_request_packet (
Partition_MP_Remote_operations operation,
Objects_Id partition_id,
void *buffer
);
/*
* _Partition_MP_Send_response_packet
*
* DESCRIPTION:
*
* This routine performs a remote procedure call so that a
* directive can be performed on another node.
*/
void _Partition_MP_Send_response_packet (
Partition_MP_Remote_operations operation,
Objects_Id partition_id,
Thread_Control *the_thread
);
/*
*
* _Partition_MP_Process_packet
*
* DESCRIPTION:
*
* This routine performs the actions specific to this package for
* the request from another node.
*/
void _Partition_MP_Process_packet (
rtems_packet_prefix *the_packet_prefix
);
/*
* _Partition_MP_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 by the Partition since a partition
* cannot be deleted when buffers are in use.
*/
/*
* _Partition_MP_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.
*/
void _Partition_MP_Send_extract_proxy (
Thread_Control *the_thread
);
/*
* _Partition_MP_Get_packet
*
* DESCRIPTION:
*
* This function is used to obtain a partition mp packet.
*/
Partition_MP_Packet *_Partition_MP_Get_packet ( void );
#ifdef __cplusplus
}
#endif
#endif
/* end of file */

View File

@@ -1,213 +0,0 @@
/* ratemon.h
*
* This include file contains all the constants, structures, and
* prototypes associated with the Rate Monotonic Manager. This manager
* provides facilities to implement tasks which execute in a periodic fashion.
*
* Directives provided are:
*
* + create a rate monotonic timer
* + cancel a period
* + delete a rate monotonic timer
* + conclude current and start the next period
* + obtain status information on a period
*
* 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_RATE_MONOTONIC_h
#define __RTEMS_RATE_MONOTONIC_h
#ifdef __cplusplus
extern "C" {
#endif
#include <rtems/score/object.h>
#include <rtems/score/thread.h>
#include <rtems/score/watchdog.h>
/*
* The following enumerated type defines the states in which a
* period may be.
*/
typedef enum {
RATE_MONOTONIC_INACTIVE, /* off chain, never initialized */
RATE_MONOTONIC_OWNER_IS_BLOCKING, /* on chain, owner is blocking on it */
RATE_MONOTONIC_ACTIVE, /* on chain, running continuously */
RATE_MONOTONIC_EXPIRED_WHILE_BLOCKING, /* on chain, expired while owner was */
/* was blocking on it */
RATE_MONOTONIC_EXPIRED /* off chain, will be reset by next */
/* rtems_rate_monotonic_period */
} rtems_rate_monotonic_period_states;
/*
* The following constant is the interval passed to the rate_monontonic_period
* directive to obtain status information.
*/
#define RTEMS_PERIOD_STATUS WATCHDOG_NO_TIMEOUT
/*
* The following defines the period status structure.
*/
typedef struct {
rtems_rate_monotonic_period_states state;
unsigned32 ticks_since_last_period;
unsigned32 ticks_executed_since_last_period;
} rtems_rate_monotonic_period_status;
/*
* The following structure defines the control block used to manage
* each period.
*/
typedef struct {
Objects_Control Object;
Watchdog_Control Timer;
rtems_rate_monotonic_period_states state;
unsigned32 owner_ticks_executed_at_period;
unsigned32 time_at_period;
Thread_Control *owner;
} Rate_monotonic_Control;
RTEMS_EXTERN Objects_Information _Rate_monotonic_Information;
/*
* _Rate_monotonic_Manager_initialization
*
* DESCRIPTION:
*
* This routine performs the initialization necessary for this manager.
*/
void _Rate_monotonic_Manager_initialization(
unsigned32 maximum_periods
);
/*
* rtems_rate_monotonic_create
*
* DESCRIPTION:
*
* This routine implements the rate_monotonic_create directive. The
* period will have the name name. It returns the id of the
* created period in ID.
*/
rtems_status_code rtems_rate_monotonic_create(
rtems_name name,
Objects_Id *id
);
/*
* rtems_rate_monotonic_ident
*
* DESCRIPTION:
*
* This routine implements the rtems_rate_monotonic_ident directive.
* This directive returns the period ID associated with name.
* If more than one period is named name, then the period
* to which the ID belongs is arbitrary.
*/
rtems_status_code rtems_rate_monotonic_ident(
rtems_name name,
Objects_Id *id
);
/*
* rtems_rate_monotonic_cancel
*
* DESCRIPTION:
*
* This routine implements the rtems_rate_monotonic_cancel directive. This
* directive stops the period associated with ID from continuing to
* run.
*/
rtems_status_code rtems_rate_monotonic_cancel(
Objects_Id id
);
/*
* rtems_rate_monotonic_delete
*
* DESCRIPTION:
*
* This routine implements the rtems_rate_monotonic_delete directive. The
* period indicated by ID is deleted.
*/
rtems_status_code rtems_rate_monotonic_delete(
Objects_Id id
);
/*
* rtems_rate_monotonic_get_status
*
* DESCRIPTION:
*
* This routine implements the rtems_rate_monotonic_get_status directive.
* Information about the period indicated by ID is returned.
*
*/
rtems_status_code rtems_rate_monotonic_get_status(
Objects_Id id,
rtems_rate_monotonic_period_status *status
);
/*
* rtems_rate_monotonic_period
*
* DESCRIPTION:
*
* This routine implements the rtems_rate_monotonic_period directive. When
* length is non-zero, this directive initiates the period associated with
* ID from continuing for a period of length. If length is zero, then
* result is set to indicate the current state of the period.
*/
rtems_status_code rtems_rate_monotonic_period(
Objects_Id id,
rtems_interval length
);
/*
* _Rate_monotonic_Timeout
*
* DESCRIPTION:
*
* This routine is invoked when the period represented
* by ID expires. If the task which owns this period is blocked
* waiting for the period to expire, then it is readied and the
* period is restarted. If the owning task is not waiting for the
* period to expire, then the period is placed in the EXPIRED
* state and not restarted.
*/
void _Rate_monotonic_Timeout (
Objects_Id id,
void *ignored
);
#ifndef __RTEMS_APPLICATION__
#include <rtems/rtems/ratemon.inl>
#endif
#ifdef __cplusplus
}
#endif
#endif
/* end of include file */

View File

@@ -1,236 +0,0 @@
/* region.h
*
* This include file contains all the constants and structures associated
* with the Region Manager. This manager provides facilities to dynamically
* allocate memory in variable sized units which are returned as segments.
*
* Directives provided are:
*
* + create a region
* + get an ID of a region
* + delete a region
* + get a segment from a region
* + return a segment to a region
*
* 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_REGION_h
#define __RTEMS_REGION_h
#ifdef __cplusplus
extern "C" {
#endif
#include <rtems/score/object.h>
#include <rtems/score/threadq.h>
#include <rtems/score/heap.h>
#include <rtems/debug.h>
#include <rtems/rtems/attr.h>
#include <rtems/rtems/types.h>
/*
* The following records define the control block used to manage
* each region.
*/
typedef struct {
Objects_Control Object;
Thread_queue_Control Wait_queue; /* waiting threads */
void *starting_address; /* physical start addr */
unsigned32 length; /* physical length(bytes) */
unsigned32 page_size; /* in bytes */
unsigned32 maximum_segment_size; /* in bytes */
rtems_attribute attribute_set;
unsigned32 number_of_used_blocks; /* blocks allocated */
Heap_Control Memory;
} Region_Control;
/*
* The following defines the information control block used to
* manage this class of objects.
*/
RTEMS_EXTERN Objects_Information _Region_Information;
/*
* _Region_Manager_initialization
*
* DESCRIPTION:
*
* This routine performs the initialization necessary for this manager.
*/
void _Region_Manager_initialization(
unsigned32 maximum_regions
);
/*
* rtems_region_create
*
* DESCRIPTION:
*
* This routine implements the rtems_region_create directive. The
* region will have the name name. The memory area managed by
* the region is of length bytes and starts at starting_address.
* The memory area will be divided into as many allocatable units of
* page_size bytes as possible. The attribute_set determines which
* thread queue discipline is used by the region. It returns the
* id of the created region in ID.
*/
rtems_status_code rtems_region_create(
rtems_name name,
void *starting_address,
unsigned32 length,
unsigned32 page_size,
rtems_attribute attribute_set,
Objects_Id *id
);
/*
* rtems_region_extend
*
* DESCRIPTION:
*
* This routine implements the rtems_region_extend directive. The
* region will have the name name. The memory area managed by
* the region will be attempted to be grown by length bytes using
* the memory starting at starting_address.
*/
rtems_status_code rtems_region_extend(
Objects_Id id,
void *starting_address,
unsigned32 length
);
/*
* rtems_region_ident
*
* DESCRIPTION:
*
* This routine implements the rtems_region_ident directive.
* This directive returns the region ID associated with name.
* If more than one region is named name, then the region
* to which the ID belongs is arbitrary.
*/
rtems_status_code rtems_region_ident(
rtems_name name,
Objects_Id *id
);
/*
* rtems_region_delete
*
* DESCRIPTION:
*
* This routine implements the rtems_region_delete directive. The
* region indicated by ID is deleted.
*/
rtems_status_code rtems_region_delete(
Objects_Id id
);
/*
* rtems_region_get_segment
*
* DESCRIPTION:
*
* This routine implements the rtems_region_get_segment directive. It
* attempts to allocate a segment from the region associated with ID.
* If a segment of the requested size can be allocated, its address
* is returned in segment. If no segment is available, then the task
* may return immediately or block waiting for a segment with an optional
* timeout of timeout clock ticks. Whether the task blocks or returns
* immediately is based on the no_wait option in the option_set.
*/
rtems_status_code rtems_region_get_segment(
Objects_Id id,
unsigned32 size,
rtems_option option_set,
rtems_interval timeout,
void **segment
);
/*
* rtems_region_get_segment_size
*
* DESCRIPTION:
*
* This routine implements the rtems_region_get_segment_size directive. It
* returns the size in bytes of the specified user memory area.
*/
rtems_status_code rtems_region_get_segment_size(
Objects_Id id,
void *segment,
unsigned32 *size
);
/*
* rtems_region_return_segment
*
* DESCRIPTION:
*
* This routine implements the rtems_region_return_segment directive. It
* frees the segment to the region associated with ID. The segment must
* have been previously allocated from the same region. If freeing the
* segment results in enough memory being available to satisfy the
* rtems_region_get_segment of the first blocked task, then that task and as
* many subsequent tasks as possible will be unblocked with their requests
* satisfied.
*/
rtems_status_code rtems_region_return_segment(
Objects_Id id,
void *segment
);
#ifndef __RTEMS_APPLICATION__
#include <rtems/rtems/region.inl>
#endif
#if defined(RTEMS_MULTIPROCESSING)
#include <rtems/rtems/regionmp.h>
#endif
/*
* _Region_Debug_Walk
*
* DESCRIPTION:
*
* This routine is invoked to verify the integrity of a heap associated
* with the_region.
*/
#ifdef RTEMS_DEBUG
#define _Region_Debug_Walk( _the_region, _source ) \
do { \
if ( _Debug_Is_enabled( RTEMS_DEBUG_REGION ) ) \
_Heap_Walk( &(_the_region)->Memory, _source, FALSE ); \
} while ( 0 )
#else
#define _Region_Debug_Walk( _the_region, _source )
#endif
#ifdef __cplusplus
}
#endif
#endif
/* end of include file */

View File

@@ -1,166 +0,0 @@
/* regionmp.h
*
* This include file contains all the constants and structures associated
* with the Multiprocessing Support in the Region Manager.
*
* 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_REGION_MP_h
#define __RTEMS_REGION_MP_h
#ifdef __cplusplus
extern "C" {
#endif
#include <rtems/score/mppkt.h>
#include <rtems/score/object.h>
#include <rtems/score/thread.h>
#include <rtems/rtems/options.h>
#include <rtems/rtems/region.h>
/*
* The following enumerated type defines the list of
* remote region operations.
*/
typedef enum {
REGION_MP_ANNOUNCE_CREATE = 0,
REGION_MP_ANNOUNCE_DELETE = 1,
REGION_MP_EXTRACT_PROXY = 2,
REGION_MP_GET_SEGMENT_REQUEST = 3,
REGION_MP_GET_SEGMENT_RESPONSE = 4,
REGION_MP_RETURN_SEGMENT_REQUEST = 5,
REGION_MP_RETURN_SEGMENT_RESPONSE = 6
} Region_MP_Remote_operations;
/*
* The following data structure defines the packet used to perform
* remote region operations.
*/
typedef struct {
rtems_packet_prefix Prefix;
Region_MP_Remote_operations operation;
rtems_name name;
rtems_option option_set;
unsigned32 size;
Objects_Id proxy_id;
void *segment;
} Region_MP_Packet;
/*
* _Region_MP_Send_process_packet
*
* DESCRIPTION:
*
* This routine performs a remote procedure call so that a
* process operation can be performed on another node.
*/
void _Region_MP_Send_process_packet (
Region_MP_Remote_operations operation,
Objects_Id region_id,
rtems_name name,
Objects_Id proxy_id
);
/*
* _Region_MP_Send_request_packet
*
* DESCRIPTION:
*
* This routine performs a remote procedure call so that a
* directive operation can be initiated on another node.
*/
rtems_status_code _Region_MP_Send_request_packet (
Region_MP_Remote_operations operation,
Objects_Id region_id,
void *segment,
unsigned32 size,
rtems_option option_set,
rtems_interval timeout
);
/*
* _Region_MP_Send_response_packet
*
* DESCRIPTION:
*
* This routine performs a remote procedure call so that a
* directive can be performed on another node.
*/
void _Region_MP_Send_response_packet (
Region_MP_Remote_operations operation,
Objects_Id region_id,
Thread_Control *the_thread
);
/*
*
* _Region_MP_Process_packet
*
* DESCRIPTION:
*
* This routine performs the actions specific to this package for
* the request from another node.
*/
void _Region_MP_Process_packet (
rtems_packet_prefix *the_packet_prefix
);
/*
* _Region_MP_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 by the Region since a region
* cannot be deleted when segments are in use.
*/
/*
* _Region_MP_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.
*/
void _Region_MP_Send_extract_proxy (
Thread_Control *the_thread
);
/*
* _Region_MP_Get_packet
*
* DESCRIPTION:
*
* This function is used to obtain a region mp packet.
*/
Region_MP_Packet *_Region_MP_Get_packet ( void );
#ifdef __cplusplus
}
#endif
#endif
/* end of file */

View File

@@ -1,123 +0,0 @@
/* rtems.h
*
* This include file contains information about RTEMS executive that
* is required by the application and is CPU independent. It includes
* two (2) CPU dependent files to tailor its data structures for a
* particular processor.
*
* 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_RTEMS_GENERIC_h
#define __RTEMS_RTEMS_GENERIC_h
#ifdef __cplusplus
extern "C" {
#endif
/*
* Unless told otherwise, the RTEMS include files will hide some stuff
* from normal application code. Defining this crosses a boundary which
* is undesirable since it means your application is using RTEMS features
* which are not included in the formally defined and supported API.
* Define this at your own risk.
*/
#if !defined(__RTEMS_VIOLATE_KERNEL_VISIBILITY__) && !defined(__RTEMS_INSIDE__)
#define __RTEMS_APPLICATION__
#endif
#include <rtems/system.h>
#include <rtems/rtems/status.h>
#include <rtems/rtems/types.h>
#include <rtems/config.h>
#include <rtems/init.h>
#include <rtems/rtems/tasks.h>
#include <rtems/rtems/intr.h>
#include <rtems/rtems/clock.h>
#include <rtems/extension.h>
#include <rtems/rtems/timer.h>
#include <rtems/rtems/sem.h>
#include <rtems/rtems/message.h>
#include <rtems/rtems/event.h>
#include <rtems/rtems/signal.h>
#include <rtems/rtems/event.h>
#include <rtems/rtems/part.h>
#include <rtems/rtems/region.h>
#include <rtems/rtems/dpmem.h>
#include <rtems/io.h>
#include <rtems/fatal.h>
#include <rtems/rtems/ratemon.h>
#if defined(RTEMS_MULTIPROCESSING)
#include <rtems/rtems/mp.h>
#endif
#include <rtems/rtems/support.h>
#include <rtems/score/sysstate.h>
#define RTEMS_HAS_HARDWARE_FP CPU_HARDWARE_FP
/*
* The following define the constants which may be used in name searches.
*/
#define RTEMS_SEARCH_ALL_NODES OBJECTS_SEARCH_ALL_NODES
#define RTEMS_SEARCH_OTHER_NODES OBJECTS_SEARCH_OTHER_NODES
#define RTEMS_SEARCH_LOCAL_NODE OBJECTS_SEARCH_LOCAL_NODE
#define RTEMS_WHO_AM_I OBJECTS_WHO_AM_I
/*
* Parameters and return id's for _Objects_Get_next
*/
#define RTEMS_OBJECT_ID_INITIAL_INDEX OBJECTS_ID_INITIAL_INDEX
#define RTEMS_OBJECT_ID_FINAL_INDEX OBJECTS_ID_FINAL_INDEX
#define RTEMS_OBJECT_ID_INITIAL(class, node) OBJECTS_ID_INITIAL(class, node)
#define RTEMS_OBJECT_ID_FINAL OBJECTS_ID_FINAL
/*
* The following constant defines the minimum stack size which every
* thread must exceed.
*/
#define RTEMS_MINIMUM_STACK_SIZE STACK_MINIMUM_SIZE
/*
* Constant for indefinite wait. (actually an illegal interval)
*/
#define RTEMS_NO_TIMEOUT WATCHDOG_NO_TIMEOUT
/*
* An MPCI must support packets of at least this size.
*/
#define RTEMS_MINIMUM_PACKET_SIZE MP_PACKET_MINIMUM_PACKET_SIZE
/*
* 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 RTEMS_MINIMUN_HETERO_CONVERSION MP_PACKET_MINIMUN_HETERO_CONVERSION
#ifdef __cplusplus
}
#endif
#endif
/* end of include file */

View File

@@ -1,34 +0,0 @@
/*
* RTEMS API Support
*
* NOTE:
*
* 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_API_h
#define __RTEMS_API_h
#include <rtems/config.h>
/*PAGE
*
* _RTEMS_API_Initialize
*
* XXX
*/
void _RTEMS_API_Initialize(
rtems_configuration_table *configuration_table
);
#endif
/* end of include file */

View File

@@ -1,252 +0,0 @@
/* semaphore.h
*
* This include file contains all the constants and structures associated
* with the Semaphore Manager. This manager utilizes standard Dijkstra
* counting semaphores to provide synchronization and mutual exclusion
* capabilities.
*
* Directives provided are:
*
* + create a semaphore
* + get an ID of a semaphore
* + delete a semaphore
* + acquire a semaphore
* + release a semaphore
*
* 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_SEMAPHORE_h
#define __RTEMS_SEMAPHORE_h
#ifdef __cplusplus
extern "C" {
#endif
#include <rtems/rtems/types.h>
#include <rtems/rtems/support.h>
#include <rtems/rtems/tasks.h>
#include <rtems/rtems/attr.h>
#include <rtems/score/coremutex.h>
#include <rtems/score/object.h>
#include <rtems/score/coresem.h>
#include <rtems/score/threadq.h>
/*
* The following defines the control block used to manage each semaphore.
*/
typedef struct {
Objects_Control Object;
rtems_attribute attribute_set;
union {
CORE_mutex_Control mutex;
CORE_semaphore_Control semaphore;
} Core_control;
} Semaphore_Control;
/*
* The following defines the information control block used to manage
* this class of objects.
*/
RTEMS_EXTERN Objects_Information _Semaphore_Information;
/*
* _Semaphore_Manager_initialization
*
* DESCRIPTION:
*
* This routine performs the initialization necessary for this manager.
*/
void _Semaphore_Manager_initialization(
unsigned32 maximum_semaphores
);
/*
* rtems_semaphore_create
*
* DESCRIPTION:
*
* This routine implements the rtems_semaphore_create directive. The
* semaphore will have the name name. The starting count for
* the semaphore is count. The attribute_set determines if
* the semaphore is global or local and the thread queue
* discipline. It returns the id of the created semaphore in ID.
*/
rtems_status_code rtems_semaphore_create(
rtems_name name,
unsigned32 count,
rtems_attribute attribute_set,
rtems_task_priority priority_ceiling,
rtems_id *id
);
/*
* rtems_semaphore_ident
*
* DESCRIPTION:
*
* This routine implements the rtems_semaphore_ident directive.
* This directive returns the semaphore ID associated with name.
* If more than one semaphore is named name, then the semaphore
* to which the ID belongs is arbitrary. node indicates the
* extent of the search for the ID of the semaphore named name.
* The search can be limited to a particular node or allowed to
* encompass all nodes.
*/
rtems_status_code rtems_semaphore_ident(
rtems_name name,
unsigned32 node,
rtems_id *id
);
/*
* rtems_semaphore_delete
*
* DESCRIPTION:
*
* This routine implements the rtems_semaphore_delete directive. The
* semaphore indicated by ID is deleted.
*/
rtems_status_code rtems_semaphore_delete(
rtems_id id
);
/*
* rtems_semaphore_obtain
*
* DESCRIPTION:
*
* This routine implements the rtems_semaphore_obtain directive. It
* attempts to obtain a unit from the semaphore associated with ID.
* If a unit can be allocated, the calling task will return immediately.
* If no unit is available, then the task may return immediately or
* block waiting for a unit with an optional timeout of timeout
* clock ticks. Whether the task blocks or returns immediately
* is based on the RTEMS_NO_WAIT option in the option_set.
*/
rtems_status_code rtems_semaphore_obtain(
rtems_id id,
unsigned32 option_set,
rtems_interval timeout
);
/*
* rtems_semaphore_release
*
* DESCRIPTION:
*
* This routine implements the rtems_semaphore_release directive. It
* frees a unit to the semaphore associated with ID. 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.
*/
rtems_status_code rtems_semaphore_release(
rtems_id id
);
/*
* _Semaphore_Seize
*
* DESCRIPTION:
*
* This routine attempts to receive a unit from the_semaphore.
* If a unit is available or if the RTEMS_NO_WAIT option is enabled in
* option_set, then the routine returns. Otherwise, the calling task
* is blocked until a unit becomes available.
*/
boolean _Semaphore_Seize(
Semaphore_Control *the_semaphore,
unsigned32 option_set
);
/*
* _Semaphore_Translate_core_mutex_return_code
*
* DESCRIPTION:
*
* This function returns a RTEMS status code based on the mutex
* status code specified.
*/
rtems_status_code _Semaphore_Translate_core_mutex_return_code (
unsigned32 the_mutex_status
);
/*
* _Semaphore_Translate_core_semaphore_return_code
*
* DESCRIPTION:
*
* This function returns a RTEMS status code based on the semaphore
* status code specified.
*/
rtems_status_code _Semaphore_Translate_core_semaphore_return_code (
unsigned32 the_mutex_status
);
/*PAGE
*
* _Semaphore_Core_mutex_mp_support
*
* DESCRIPTION:
*
* This function processes the global actions necessary for remote
* accesses to a global semaphore based on a core mutex. This function
* is called by the core.
*/
#if defined(RTEMS_MULTIPROCESSING)
void _Semaphore_Core_mutex_mp_support (
Thread_Control *the_thread,
rtems_id id
);
#endif
/*PAGE
*
* _Semaphore_Core_mp_support
*
* DESCRIPTION:
*
* This function processes the global actions necessary for remote
* accesses to a global semaphore based on a core semaphore. This function
* is called by the core.
*/
void _Semaphore_Core_semaphore_mp_support (
Thread_Control *the_thread,
rtems_id id
);
#ifndef __RTEMS_APPLICATION__
#include <rtems/rtems/sem.inl>
#endif
#if defined(RTEMS_MULTIPROCESSING)
#include <rtems/rtems/semmp.h>
#endif
#ifdef __cplusplus
}
#endif
#endif
/* end of include file */

View File

@@ -1,163 +0,0 @@
/* semmp.h
*
* This include file contains all the constants and structures associated
* with the Multiprocessing Support in the Semaphore Manager.
*
* 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_SEMAPHORE_MP_h
#define __RTEMS_SEMAPHORE_MP_h
#ifdef __cplusplus
extern "C" {
#endif
#include <rtems/score/mppkt.h>
#include <rtems/score/object.h>
#include <rtems/rtems/options.h>
#include <rtems/rtems/sem.h>
#include <rtems/score/thread.h>
#include <rtems/score/watchdog.h>
/*
* The following enumerated type defines the list of
* remote semaphore operations.
*/
typedef enum {
SEMAPHORE_MP_ANNOUNCE_CREATE = 0,
SEMAPHORE_MP_ANNOUNCE_DELETE = 1,
SEMAPHORE_MP_EXTRACT_PROXY = 2,
SEMAPHORE_MP_OBTAIN_REQUEST = 3,
SEMAPHORE_MP_OBTAIN_RESPONSE = 4,
SEMAPHORE_MP_RELEASE_REQUEST = 5,
SEMAPHORE_MP_RELEASE_RESPONSE = 6
} Semaphore_MP_Remote_operations;
/*
* The following data structure defines the packet used to perform
* remote semaphore operations.
*/
typedef struct {
rtems_packet_prefix Prefix;
Semaphore_MP_Remote_operations operation;
rtems_name name;
rtems_option option_set;
Objects_Id proxy_id;
} Semaphore_MP_Packet;
/*
* _Semaphore_MP_Send_process_packet
*
* DESCRIPTION:
*
* This routine performs a remote procedure call so that a
* process operation can be performed on another node.
*/
void _Semaphore_MP_Send_process_packet (
Semaphore_MP_Remote_operations operation,
Objects_Id semaphore_id,
rtems_name name,
Objects_Id proxy_id
);
/*
* _Semaphore_MP_Send_request_packet
*
* DESCRIPTION:
*
* This routine performs a remote procedure call so that a
* directive operation can be initiated on another node.
*/
rtems_status_code _Semaphore_MP_Send_request_packet (
Semaphore_MP_Remote_operations operation,
Objects_Id semaphore_id,
rtems_option option_set,
rtems_interval timeout
);
/*
* _Semaphore_MP_Send_response_packet
*
* DESCRIPTION:
*
* This routine performs a remote procedure call so that a
* directive can be performed on another node.
*/
void _Semaphore_MP_Send_response_packet (
Semaphore_MP_Remote_operations operation,
Objects_Id semaphore_id,
Thread_Control *the_thread
);
/*
*
* _Semaphore_MP_Process_packet
*
* DESCRIPTION:
*
* This routine performs the actions specific to this package for
* the request from another node.
*/
void _Semaphore_MP_Process_packet (
rtems_packet_prefix *the_packet_prefix
);
/*
* _Semaphore_MP_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.
*/
void _Semaphore_MP_Send_object_was_deleted (
Thread_Control *the_proxy
);
/*
* _Semaphore_MP_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.
*/
void _Semaphore_MP_Send_extract_proxy (
Thread_Control *the_thread
);
/*
* _Semaphore_MP_Get_packet
*
* DESCRIPTION:
*
* This function is used to obtain a semaphore mp packet.
*/
Semaphore_MP_Packet *_Semaphore_MP_Get_packet ( void );
#ifdef __cplusplus
}
#endif
#endif
/* end of file */

View File

@@ -1,85 +0,0 @@
/* signal.h
*
* This include file contains all the constants and structures associated
* with the Signal Manager. This manager provides capabilities required
* for asynchronous communication between tasks via signal sets.
*
* Directives provided are:
*
* + establish an asynchronous signal routine
* + send a signal set to a task
*
* 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_SIGNAL_h
#define __RTEMS_SIGNAL_h
#ifdef __cplusplus
extern "C" {
#endif
#include <rtems/rtems/asr.h>
#include <rtems/rtems/modes.h>
#include <rtems/score/object.h>
#include <rtems/rtems/status.h>
#include <rtems/rtems/types.h>
/*
* _Signal_Manager_initialization
*
* DESCRIPTION:
*
* This routine performs the initialization necessary for this manager.
*/
void _Signal_Manager_initialization( void );
/*
* rtems_signal_catch
*
* DESCRIPTION:
*
* This routine implements the rtems_signal_catch directive. This directive
* is used to establish asr_handler as the Asynchronous Signal Routine
* (RTEMS_ASR) for the calling task. The asr_handler will execute with a
* mode of mode_set.
*/
rtems_status_code rtems_signal_catch(
rtems_asr_entry asr_handler,
rtems_mode mode_set
);
/*
* rtems_signal_send
*
* DESCRIPTION:
*
* This routine implements the rtems_signal_send directive. This directive
* sends the signal_set to the task specified by ID.
*/
rtems_status_code rtems_signal_send(
Objects_Id id,
rtems_signal_set signal_set
);
#if defined(RTEMS_MULTIPROCESSING)
#include <rtems/rtems/signalmp.h>
#endif
#ifdef __cplusplus
}
#endif
#endif
/* end of include file */

View File

@@ -1,147 +0,0 @@
/* signalmp.h
*
* This include file contains all the constants and structures associated
* with the Multiprocessing Support in the Signal Manager.
*
* 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_SIGNAL_MP_h
#define __RTEMS_SIGNAL_MP_h
#ifdef __cplusplus
extern "C" {
#endif
#include <rtems/rtems/asr.h>
#include <rtems/score/mppkt.h>
#include <rtems/score/object.h>
#include <rtems/score/thread.h>
#include <rtems/score/watchdog.h>
/*
* The following enumerated type defines the list of
* remote signal operations.
*/
typedef enum {
SIGNAL_MP_SEND_REQUEST = 0,
SIGNAL_MP_SEND_RESPONSE = 1
} Signal_MP_Remote_operations;
/*
* The following data structure defines the packet used to perform
* remote signal operations.
*/
typedef struct {
rtems_packet_prefix Prefix;
Signal_MP_Remote_operations operation;
rtems_signal_set signal_in;
} Signal_MP_Packet;
/*
* _Signal_MP_Send_process_packet
*
* DESCRIPTION:
*
* This routine performs a remote procedure call so that a
* process operation can be performed on another node.
*
* This routine is not needed since there are no process
* packets to be sent by this manager.
*/
/*
* _Signal_MP_Send_request_packet
*
* DESCRIPTION:
*
* This routine performs a remote procedure call so that a
* directive operation can be initiated on another node.
*/
rtems_status_code _Signal_MP_Send_request_packet (
Signal_MP_Remote_operations operation,
Objects_Id task_id,
rtems_signal_set signal_in
);
/*
* _Signal_MP_Send_response_packet
*
* DESCRIPTION:
*
* This routine performs a remote procedure call so that a
* directive can be performed on another node.
*/
void _Signal_MP_Send_response_packet (
Signal_MP_Remote_operations operation,
Thread_Control *the_thread
);
/*
*
* _Signal_MP_Process_packet
*
* DESCRIPTION:
*
* This routine performs the actions specific to this package for
* the request from another node.
*/
void _Signal_MP_Process_packet (
rtems_packet_prefix *the_packet_prefix
);
/*
* _Signal_MP_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.
*/
/*
* _Signal_MP_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.
*/
/*
* _Signal_MP_Get_packet
*
* DESCRIPTION:
*
* This function is used to obtain a signal mp packet.
*/
Signal_MP_Packet *_Signal_MP_Get_packet ( void );
#ifdef __cplusplus
}
#endif
#endif
/* end of file */

View File

@@ -1,84 +0,0 @@
/* status.h
*
* This include file contains the status codes returned from the
* executive directives.
*
* 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_STATUS_h
#define __RTEMS_STATUS_h
#ifdef __cplusplus
extern "C" {
#endif
/* types */
/* enumerated constants */
typedef enum {
RTEMS_SUCCESSFUL = 0, /* successful completion */
RTEMS_TASK_EXITTED = 1, /* returned from a thread */
RTEMS_MP_NOT_CONFIGURED = 2, /* multiprocessing not configured */
RTEMS_INVALID_NAME = 3, /* invalid object name */
RTEMS_INVALID_ID = 4, /* invalid object id */
RTEMS_TOO_MANY = 5, /* too many */
RTEMS_TIMEOUT = 6, /* timed out waiting */
RTEMS_OBJECT_WAS_DELETED = 7, /* object deleted while waiting */
RTEMS_INVALID_SIZE = 8, /* specified size was invalid */
RTEMS_INVALID_ADDRESS = 9, /* address specified is invalid */
RTEMS_INVALID_NUMBER = 10, /* number was invalid */
RTEMS_NOT_DEFINED = 11, /* item has not been initialized */
RTEMS_RESOURCE_IN_USE = 12, /* resources still outstanding */
RTEMS_UNSATISFIED = 13, /* request not satisfied */
RTEMS_INCORRECT_STATE = 14, /* thread is in wrong state */
RTEMS_ALREADY_SUSPENDED = 15, /* thread already in state */
RTEMS_ILLEGAL_ON_SELF = 16, /* illegal on calling thread */
RTEMS_ILLEGAL_ON_REMOTE_OBJECT = 17, /* illegal for remote object */
RTEMS_CALLED_FROM_ISR = 18, /* called from wrong environment */
RTEMS_INVALID_PRIORITY = 19, /* invalid thread priority */
RTEMS_INVALID_CLOCK = 20, /* invalid date/time */
RTEMS_INVALID_NODE = 21, /* invalid node id */
RTEMS_NOT_CONFIGURED = 22, /* directive not configured */
RTEMS_NOT_OWNER_OF_RESOURCE = 23, /* not owner of resource */
RTEMS_NOT_IMPLEMENTED = 24, /* directive not implemented */
RTEMS_INTERNAL_ERROR = 25, /* RTEMS inconsistency detected */
RTEMS_NO_MEMORY = 26, /* could not get enough memory */
RTEMS_IO_ERROR = 27, /* driver IO error */
RTEMS_PROXY_BLOCKING = 28 /* internal error only */
} rtems_status_code;
#define RTEMS_STATUS_CODES_FIRST RTEMS_SUCCESSFUL
#define RTEMS_STATUS_CODES_LAST RTEMS_PROXY_BLOCKING
extern rtems_status_code _Status_Object_name_errors_to_status[];
#ifdef RTEMS_API_INIT
rtems_status_code _Status_Object_name_errors_to_status[] = {
RTEMS_SUCCESSFUL, /* OBJECTS_SUCCESSFUL */
RTEMS_INVALID_NAME, /* OBJECTS_INVALID_NAME */
RTEMS_INVALID_NODE /* OBJECTS_INVALID_NODE */
};
#endif
/*
* Applications are allowed to use the macros to compare status codes.
*/
#include <rtems/rtems/status.inl>
#ifdef __cplusplus
}
#endif
#endif
/* end of include file */

View File

@@ -1,99 +0,0 @@
/* support.h
*
* This include file contains information about support functions for
* the RTEMS API.
*
* 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_RTEMS_SUPPORT_h
#define __RTEMS_RTEMS_SUPPORT_h
#ifdef __cplusplus
extern "C" {
#endif
#include <rtems/rtems/types.h>
/*
* rtems_build_name
*
* DESCRIPTION:
*
* This function returns an object name composed of the four characters
* C1, C2, C3, and C4.
*
* NOTE:
*
* This must be implemented as a macro for use in Configuration Tables.
*
*/
#define rtems_build_name( _C1, _C2, _C3, _C4 ) \
( (_C1) << 24 | (_C2) << 16 | (_C3) << 8 | (_C4) )
/*
* rtems_get_class
*
* DESCRIPTION:
*
* This function returns the class portion of the ID.
*
*/
#define rtems_get_class( _id ) \
_Objects_Get_class( _id )
/*
* rtems_get_node
*
* DESCRIPTION:
*
* This function returns the node portion of the ID.
*
*/
#define rtems_get_node( _id ) \
_Objects_Get_node( _id )
/*
* rtems_get_index
*
* DESCRIPTION:
*
* This function returns the index portion of the ID.
*
*/
#define rtems_get_index( _id ) \
_Objects_Get_index( _id )
/*
* Time related
*/
#define RTEMS_MILLISECONDS_TO_MICROSECONDS(_ms) \
TOD_MILLISECONDS_TO_MICROSECONDS(_ms)
#define RTEMS_MILLISECONDS_TO_TICKS(_ms) \
TOD_MILLISECONDS_TO_TICKS(_ms)
#define RTEMS_MICROSECONDS_TO_TICKS(_ms) \
TOD_MICROSECONDS_TO_TICKS(_ms)
#ifndef __RTEMS_APPLICATION__
#include <rtems/rtems/support.inl>
#endif
#ifdef __cplusplus
}
#endif
#endif
/* end of include file */

View File

@@ -1,167 +0,0 @@
/* taskmp.h
*
* This include file contains all the constants and structures associated
* with the multiprocessing support in the task manager.
*
* 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_RTEMS_TASKS_MP_h
#define __RTEMS_RTEMS_TASKS_MP_h
#ifdef __cplusplus
extern "C" {
#endif
#include <rtems/score/mppkt.h>
#include <rtems/score/object.h>
#include <rtems/rtems/options.h>
#include <rtems/score/priority.h>
#include <rtems/rtems/tasks.h>
#include <rtems/score/thread.h>
/*
* The following enumerated type defines the list of
* remote task operations.
*/
typedef enum {
RTEMS_TASKS_MP_ANNOUNCE_CREATE = 0,
RTEMS_TASKS_MP_ANNOUNCE_DELETE = 1,
RTEMS_TASKS_MP_SUSPEND_REQUEST = 2,
RTEMS_TASKS_MP_SUSPEND_RESPONSE = 3,
RTEMS_TASKS_MP_RESUME_REQUEST = 4,
RTEMS_TASKS_MP_RESUME_RESPONSE = 5,
RTEMS_TASKS_MP_SET_PRIORITY_REQUEST = 6,
RTEMS_TASKS_MP_SET_PRIORITY_RESPONSE = 7,
RTEMS_TASKS_MP_GET_NOTE_REQUEST = 8,
RTEMS_TASKS_MP_GET_NOTE_RESPONSE = 9,
RTEMS_TASKS_MP_SET_NOTE_REQUEST = 10,
RTEMS_TASKS_MP_SET_NOTE_RESPONSE = 11
} RTEMS_tasks_MP_Remote_operations;
/*
* The following data structure defines the packet used to perform
* remote task operations.
*/
typedef struct {
rtems_packet_prefix Prefix;
RTEMS_tasks_MP_Remote_operations operation;
rtems_name name;
rtems_task_priority the_priority;
unsigned32 notepad;
unsigned32 note;
} RTEMS_tasks_MP_Packet;
/*
* _RTEMS_tasks_MP_Send_process_packet
*
* DESCRIPTION:
*
* This routine performs a remote procedure call so that a
* process operation can be performed on another node.
*/
void _RTEMS_tasks_MP_Send_process_packet (
RTEMS_tasks_MP_Remote_operations operation,
Objects_Id task_id,
rtems_name name
);
/*
* _RTEMS_tasks_MP_Send_request_packet
*
* DESCRIPTION:
*
* This routine performs a remote procedure call so that a
* directive operation can be initiated on another node.
*/
rtems_status_code _RTEMS_tasks_MP_Send_request_packet (
RTEMS_tasks_MP_Remote_operations operation,
Objects_Id task_id,
rtems_task_priority the_priority,
unsigned32 notepad,
unsigned32 note
);
/*
* _RTEMS_tasks_MP_Send_response_packet
*
* DESCRIPTION:
*
* This routine performs a remote procedure call so that a
* directive can be performed on another node.
*/
void _RTEMS_tasks_MP_Send_response_packet (
RTEMS_tasks_MP_Remote_operations operation,
Thread_Control *the_thread
);
/*
*
* _RTEMS_tasks_MP_Process_packet
*
* DESCRIPTION:
*
* This routine performs the actions specific to this package for
* the request from another node.
*/
void _RTEMS_tasks_MP_Process_packet (
rtems_packet_prefix *the_packet_prefix
);
/*
* _RTEMS_tasks_MP_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 by RTEMS_tasks since a task
* cannot be deleted when segments are in use.
*/
/*
* _RTEMS_tasks_MP_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.
*
*/
/*
* _RTEMS_tasks_MP_Get_packet
*
* DESCRIPTION:
*
* This function is used to obtain a task mp packet.
*/
RTEMS_tasks_MP_Packet *_RTEMS_tasks_MP_Get_packet ( void );
#ifdef __cplusplus
}
#endif
#endif
/* end of file */

View File

@@ -1,423 +0,0 @@
/* tasks.h
*
* This include file contains all constants and structures associated
* with RTEMS tasks. This manager provides a comprehensive set of directives
* to create, delete, and administer tasks.
*
* Directives provided are:
*
* + create a task
* + get an ID of a task
* + start a task
* + restart a task
* + delete a task
* + suspend a task
* + resume a task
* + set a task's priority
* + change the current task's mode
* + get a task notepad entry
* + set a task notepad entry
* + wake up after interval
* + wake up when specified
*
* 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_RTEMS_TASKS_h
#define __RTEMS_RTEMS_TASKS_h
#ifdef __cplusplus
extern "C" {
#endif
#include <rtems/score/object.h>
#include <rtems/score/states.h>
#include <rtems/score/thread.h>
#include <rtems/rtems/types.h>
#include <rtems/rtems/eventset.h>
#include <rtems/rtems/asr.h>
#include <rtems/rtems/attr.h>
#include <rtems/rtems/status.h>
/*
* Constant to be used as the ID of current task
*/
#define RTEMS_SELF OBJECTS_ID_OF_SELF
/*
* This constant is passed to the rtems_task_wake_after directive as the
* interval when a task wishes to yield the CPU.
*/
#define RTEMS_YIELD_PROCESSOR WATCHDOG_NO_TIMEOUT
/*
* Define the type for an RTEMS API task priority.
*/
typedef Priority_Control rtems_task_priority;
#define RTEMS_NO_PRIORITY RTEMS_CURRENT_PRIORITY
#define RTEMS_MINIMUM_PRIORITY (PRIORITY_MINIMUM + 1)
#define RTEMS_MAXIMUM_PRIORITY PRIORITY_MAXIMUM
/*
* The following constant is passed to rtems_task_set_priority when the
* caller wants to obtain the current priority.
*/
#define RTEMS_CURRENT_PRIORITY PRIORITY_MINIMUM
/*
* Notepads constants (indices into notepad array)
*/
#define RTEMS_NOTEPAD_FIRST 0 /* lowest numbered notepad */
#define RTEMS_NOTEPAD_0 0 /* notepad location 0 */
#define RTEMS_NOTEPAD_1 1 /* notepad location 1 */
#define RTEMS_NOTEPAD_2 2 /* notepad location 2 */
#define RTEMS_NOTEPAD_3 3 /* notepad location 3 */
#define RTEMS_NOTEPAD_4 4 /* notepad location 4 */
#define RTEMS_NOTEPAD_5 5 /* notepad location 5 */
#define RTEMS_NOTEPAD_6 6 /* notepad location 6 */
#define RTEMS_NOTEPAD_7 7 /* notepad location 7 */
#define RTEMS_NOTEPAD_8 8 /* notepad location 8 */
#define RTEMS_NOTEPAD_9 9 /* notepad location 9 */
#define RTEMS_NOTEPAD_10 10 /* notepad location 10 */
#define RTEMS_NOTEPAD_11 11 /* notepad location 11 */
#define RTEMS_NOTEPAD_12 12 /* notepad location 12 */
#define RTEMS_NOTEPAD_13 13 /* notepad location 13 */
#define RTEMS_NOTEPAD_14 14 /* notepad location 14 */
#define RTEMS_NOTEPAD_15 15 /* notepad location 15 */
#define RTEMS_NOTEPAD_LAST RTEMS_NOTEPAD_15 /* highest numbered notepad */
#define RTEMS_NUMBER_NOTEPADS (RTEMS_NOTEPAD_LAST+1)
/*
* External API name for Thread_Control
*/
typedef Thread_Control rtems_tcb;
/*
* The following defines the "return type" of an RTEMS task.
*/
typedef void rtems_task;
/*
* The following defines the argument to an RTEMS task.
*/
typedef unsigned32 rtems_task_argument;
/*
* The following defines the type for the entry point of an RTEMS task.
*/
typedef rtems_task ( *rtems_task_entry )(
rtems_task_argument
);
/*
* The following records define the Initialization Tasks Table.
* Each entry contains the information required by RTEMS to
* create and start a user task automatically at executive
* initialization time.
*/
typedef struct {
rtems_name name; /* task name */
unsigned32 stack_size; /* task stack size */
rtems_task_priority initial_priority; /* task priority */
rtems_attribute attribute_set; /* task attributes */
rtems_task_entry entry_point; /* task entry point */
rtems_mode mode_set; /* task initial mode */
unsigned32 argument; /* task argument */
} rtems_initialization_tasks_table;
/*
* This is the API specific information required by each thread for
* the RTEMS API to function correctly.
*/
typedef struct {
unsigned32 Notepads[ RTEMS_NUMBER_NOTEPADS ];
rtems_event_set pending_events;
rtems_event_set event_condition;
ASR_Information Signal;
} RTEMS_API_Control;
/*
* The following defines the information control block used to
* manage this class of objects.
*/
RTEMS_EXTERN Objects_Information _RTEMS_tasks_Information;
/*
* These are used to manage the user initialization tasks.
*/
RTEMS_EXTERN rtems_initialization_tasks_table
*_RTEMS_tasks_User_initialization_tasks;
RTEMS_EXTERN unsigned32 _RTEMS_tasks_Number_of_initialization_tasks;
/*
* _RTEMS_tasks_Manager_initialization
*
* DESCRIPTION:
*
* This routine initializes all Task Manager related data structures.
*/
void _RTEMS_tasks_Manager_initialization(
unsigned32 maximum_tasks,
unsigned32 number_of_initialization_tasks,
rtems_initialization_tasks_table *user_tasks
);
/*
* rtems_task_create
*
* DESCRIPTION:
*
* This routine implements the rtems_task_create directive. The task
* will have the name name. The attribute_set can be used to indicate
* that the task will be globally accessible or utilize floating point.
* The task's stack will be stack_size bytes. The task will begin
* execution with initial_priority and initial_modes. It returns the
* id of the created task in ID.
*/
rtems_status_code rtems_task_create(
rtems_name name,
rtems_task_priority initial_priority,
unsigned32 stack_size,
rtems_mode initial_modes,
rtems_attribute attribute_set,
Objects_Id *id
);
/*
* rtems_task_ident
*
* DESCRIPTION:
*
* This routine implements the rtems_task_ident directive.
* This directive returns the task ID associated with name.
* If more than one task is named name, then the task to
* which the ID belongs is arbitrary. node indicates the
* extent of the search for the ID of the task named name.
* The search can be limited to a particular node or allowed to
* encompass all nodes.
*/
rtems_status_code rtems_task_ident(
rtems_name name,
unsigned32 node,
Objects_Id *id
);
/*
* rtems_task_delete
*
* DESCRIPTION:
*
* This routine implements the rtems_task_delete directive. The
* task indicated by ID is deleted.
*/
rtems_status_code rtems_task_delete(
Objects_Id id
);
/*
* rtems_task_get_note
*
* DESCRIPTION:
*
* This routine implements the rtems_task_get_note directive. The
* value of the indicated notepad for the task associated with ID
* is returned in note.
*/
rtems_status_code rtems_task_get_note(
Objects_Id id,
unsigned32 notepad,
unsigned32 *note
);
/*
* rtems_task_set_note
*
* DESCRIPTION:
*
* This routine implements the rtems_task_set_note directive. The
* value of the indicated notepad for the task associated with ID
* is returned in note.
*/
rtems_status_code rtems_task_set_note(
Objects_Id id,
unsigned32 notepad,
unsigned32 note
);
/*
* rtems_task_mode
*
* DESCRIPTION:
*
* This routine implements the rtems_task_mode directive. The current
* values of the modes indicated by mask of the calling task are changed
* to that indicated in mode_set. The former mode of the task is
* returned in mode_set.
*/
rtems_status_code rtems_task_mode(
rtems_mode mode_set,
rtems_mode mask,
rtems_mode *previous_mode_set
);
/*
* rtems_task_restart
*
* DESCRIPTION:
*
* This routine implements the rtems_task_restart directive. The
* task associated with ID is restarted at its initial entry
* point with the new argument.
*/
rtems_status_code rtems_task_restart(
Objects_Id id,
unsigned32 arg
);
/*
* rtems_task_suspend
*
* DESCRIPTION:
*
* This routine implements the rtems_task_suspend directive. The
* SUSPENDED state is set for task associated with ID.
*/
rtems_status_code rtems_task_suspend(
Objects_Id id
);
/*
* rtems_task_resume
*
* DESCRIPTION:
*
* This routine implements the rtems_task_resume Directive. The
* SUSPENDED state is cleared for task associated with ID.
*/
rtems_status_code rtems_task_resume(
Objects_Id id
);
/*
* rtems_task_set_priority
*
* DESCRIPTION:
*
* This routine implements the rtems_task_set_priority directive. The
* current priority of the task associated with ID is set to
* new_priority. The former priority of that task is returned
* in old_priority.
*/
rtems_status_code rtems_task_set_priority(
Objects_Id id,
rtems_task_priority new_priority,
rtems_task_priority *old_priority
);
/*
* rtems_task_start
*
* DESCRIPTION:
*
* This routine implements the rtems_task_start directive. The
* starting execution point of the task associated with ID is
* set to entry_point with the initial argument.
*/
rtems_status_code rtems_task_start(
Objects_Id id,
rtems_task_entry entry_point,
unsigned32 argument
);
/*
* rtems_task_wake_when
*
* DESCRIPTION:
*
* This routine implements the rtems_task_wake_when directive. The
* calling task is blocked until the current time of day is
* equal to that indicated by time_buffer.
*/
rtems_status_code rtems_task_wake_when(
rtems_time_of_day *time_buffer
);
/*
* rtems_task_wake_after
*
* DESCRIPTION:
*
* This routine implements the rtems_task_wake_after directive. The
* calling task is blocked until the indicated number of clock
* ticks have occurred.
*/
rtems_status_code rtems_task_wake_after(
rtems_interval ticks
);
/*PAGE
*
* _RTEMS_tasks_Initialize_user_tasks
*
* This routine creates and starts all configured user
* initialzation threads.
*
* Input parameters: NONE
*
* Output parameters: NONE
*/
void _RTEMS_tasks_Initialize_user_tasks( void );
#ifndef __RTEMS_APPLICATION__
#include <rtems/rtems/tasks.inl>
#endif
#if defined(RTEMS_MULTIPROCESSING)
#include <rtems/rtems/taskmp.h>
#endif
#ifdef __cplusplus
}
#endif
#endif
/* end of include file */

View File

@@ -1,207 +0,0 @@
/* timer.h
*
* This include file contains all the constants, structures, and
* prototypes associated with the Timer Manager. This manager provides
* facilities to configure, initiate, cancel, and delete timers which will
* fire at specified intervals of time.
*
* Directives provided are:
*
* + create a timer
* + get an ID of a timer
* + delete a timer
* + set a timer to fire after a number of ticks have passed
* + set a timer to fire when a specified date and time has been reached
* + reset a timer
* + cancel a time
*
* 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_TIMER_h
#define __RTEMS_TIMER_h
#ifdef __cplusplus
extern "C" {
#endif
#include <rtems/score/object.h>
#include <rtems/score/tod.h>
#include <rtems/score/watchdog.h>
/*
* The following enumerated type details the classes to which a timer
* may belong.
*/
typedef enum {
TIMER_INTERVAL,
TIMER_TIME_OF_DAY,
TIMER_DORMANT
} Timer_Classes;
/*
* The following types define a pointer to a timer service routine.
*/
typedef void rtems_timer_service_routine;
typedef rtems_timer_service_routine ( *rtems_timer_service_routine_entry )(
rtems_id,
void *
);
/*
* The following defines the information control block used to manage
* this class of objects.
*/
RTEMS_EXTERN Objects_Information _Timer_Information;
/*
* The following records define the control block used to manage
* each timer.
*/
typedef struct {
Objects_Control Object;
Watchdog_Control Ticker;
Timer_Classes the_class;
} Timer_Control;
/*
* _Timer_Manager_initialization
*
* DESCRIPTION:
*
* This routine performs the initialization necessary for this manager.
*/
void _Timer_Manager_initialization(
unsigned32 maximum_timers
);
/*
* rtems_timer_create
*
* DESCRIPTION:
*
* This routine implements the rtems_timer_create directive. The
* timer will have the name name. It returns the id of the
* created timer in ID.
*/
rtems_status_code rtems_timer_create(
rtems_name name,
Objects_Id *id
);
/*
* rtems_timer_ident
*
* DESCRIPTION:
*
* This routine implements the rtems_timer_ident directive.
* This directive returns the timer ID associated with name.
* If more than one timer is named name, then the timer
* to which the ID belongs is arbitrary.
*/
rtems_status_code rtems_timer_ident(
rtems_name name,
Objects_Id *id
);
/*
* rtems_timer_cancel
*
* DESCRIPTION:
*
* This routine implements the rtems_timer_cancel directive. It is used
* to stop the timer associated with ID from firing.
*/
rtems_status_code rtems_timer_cancel(
Objects_Id id
);
/*
* rtems_timer_delete
*
* DESCRIPTION:
*
* This routine implements the rtems_timer_delete directive. The
* timer indicated by ID is deleted.
*/
rtems_status_code rtems_timer_delete(
Objects_Id id
);
/*
* rtems_timer_fire_after
*
* DESCRIPTION:
*
* This routine implements the rtems_timer_fire_after directive. It
* initiates the timer associated with ID to fire in ticks clock
* ticks. When the timer fires, the routine will be invoked.
*/
rtems_status_code rtems_timer_fire_after(
Objects_Id id,
rtems_interval ticks,
rtems_timer_service_routine_entry routine,
void *user_data
);
/*
* rtems_timer_fire_when
*
* DESCRIPTION:
*
* This routine implements the rtems_timer_fire_when directive. It
* initiates the timer associated with ID to fire at wall_time
* When the timer fires, the routine will be invoked.
*/
rtems_status_code rtems_timer_fire_when(
Objects_Id id,
rtems_time_of_day *wall_time,
rtems_timer_service_routine_entry routine,
void *user_data
);
/*
* rtems_timer_reset
*
* DESCRIPTION:
*
* This routine implements the rtems_timer_reset directive. It is used
* to reinitialize the interval timer associated with ID just as if
* rtems_timer_fire_after were re-invoked with the same arguments that
* were used to initiate this timer.
*/
rtems_status_code rtems_timer_reset(
Objects_Id id
);
#ifndef __RTEMS_APPLICATION__
#include <rtems/rtems/timer.inl>
#endif
#ifdef __cplusplus
}
#endif
#endif
/* end of include file */

View File

@@ -1,102 +0,0 @@
/* types.h
*
* This include file defines the types used by the RTEMS API.
*
* 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_RTEMS_TYPES_h
#define __RTEMS_RTEMS_TYPES_h
#ifdef __cplusplus
extern "C" {
#endif
#include <rtems/score/object.h>
#include <rtems/score/priority.h>
#include <rtems/score/tod.h>
#include <rtems/score/watchdog.h>
#include <rtems/rtems/modes.h>
#if defined(RTEMS_MULTIPROCESSING)
#include <rtems/score/mpci.h>
#include <rtems/score/mppkt.h>
#endif
/*
* RTEMS basic type definitions
*/
typedef unsigned8 rtems_unsigned8; /* unsigned 8-bit value */
typedef unsigned16 rtems_unsigned16; /* unsigned 16-bit value */
typedef unsigned32 rtems_unsigned32; /* unsigned 32-bit value */
typedef signed8 rtems_signed8; /* signed 8-bit value */
typedef signed16 rtems_signed16; /* signed 16-bit value */
typedef signed32 rtems_signed32; /* signed 32-bit value */
/*
* some C++ compilers (eg: HP's) don't do 'long long'
*/
#if defined(__GNUC__)
typedef unsigned64 rtems_unsigned64; /* unsigned 64-bit value */
typedef signed64 rtems_signed64; /* signed 64-bit value */
#endif
typedef single_precision rtems_single; /* single precision float */
typedef double_precision rtems_double; /* double precision float */
typedef boolean rtems_boolean;
typedef unsigned32 rtems_name;
typedef Objects_Id rtems_id;
typedef Context_Control rtems_context;
typedef Context_Control_fp rtems_context_fp;
typedef CPU_Interrupt_frame rtems_interrupt_frame;
/*
* Time related
*/
typedef Watchdog_Interval rtems_interval;
typedef TOD_Control rtems_time_of_day;
/*
* Define the type for an RTEMS API task mode.
*/
typedef Modes_Control rtems_mode;
/*
* MPCI related entries
*/
#if defined(RTEMS_MULTIPROCESSING)
typedef MP_packet_Classes rtems_mp_packet_classes;
typedef MP_packet_Prefix rtems_packet_prefix;
typedef MPCI_initialization_entry rtems_mpci_initialization_entry;
typedef MPCI_get_packet_entry rtems_mpci_get_packet_entry;
typedef MPCI_return_packet_entry rtems_mpci_return_packet_entry;
typedef MPCI_send_entry rtems_mpci_send_packet_entry;
typedef MPCI_receive_entry rtems_mpci_receive_packet_entry;
typedef MPCI_Entry rtems_mpci_entry;
typedef MPCI_Control rtems_mpci_table;
#endif
#ifdef __cplusplus
}
#endif
#endif
/* end of include file */

View File

@@ -1,31 +0,0 @@
#
# $Id$
#
@SET_MAKE@
srcdir = @srcdir@
VPATH = @srcdir@
RTEMS_ROOT = @top_srcdir@
PROJECT_ROOT = @PROJECT_ROOT@
I_PIECES=asr attr dpmem event eventset message modes options \
part ratemon region sem status support tasks timer
I_FILES=$(I_PIECES:%=$(srcdir)/%.inl)
SRCS=$(I_FILES)
include $(RTEMS_ROOT)/make/custom/$(RTEMS_BSP).cfg
include $(RTEMS_ROOT)/make/lib.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 += $(LIB)
CLOBBER_ADDITIONS +=
all: $(SRCS)
$(INSTALL) -m 444 ${I_FILES} $(PROJECT_INCLUDE)/rtems/rtems

View File

@@ -1,128 +0,0 @@
/* inline/asr.inl
*
* This include file contains the implemenation of all routines
* associated with the asynchronous signal handler which are inlined.
*
* 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 __INLINE_ASR_inl
#define __INLINE_ASR_inl
#include <rtems/score/isr.h>
/*PAGE
*
* _ASR_Initialize
*
* DESCRIPTION:
*
* This routine initializes the given RTEMS_ASR information record.
*/
RTEMS_INLINE_ROUTINE void _ASR_Initialize (
ASR_Information *information
)
{
information->is_enabled = TRUE;
information->handler = NULL;
information->mode_set = RTEMS_DEFAULT_MODES;
information->signals_posted = 0;
information->signals_pending = 0;
information->nest_level = 0;
}
/*PAGE
*
* _ASR_Swap_signals
*
* DESCRIPTION:
*
* This routine atomically swaps the pending and posted signal
* sets. This is done when the thread alters its mode in such a
* way that the RTEMS_ASR disable/enable flag changes.
*/
RTEMS_INLINE_ROUTINE void _ASR_Swap_signals (
ASR_Information *information
)
{
rtems_signal_set _signals;
ISR_Level _level;
_ISR_Disable( _level );
_signals = information->signals_pending;
information->signals_pending = information->signals_posted;
information->signals_posted = _signals;
_ISR_Enable( _level );
}
/*PAGE
*
* _ASR_Is_null_handler
*
* DESCRIPTION:
*
* This function returns TRUE if the given asr_handler is NULL and
* FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _ASR_Is_null_handler (
rtems_asr_entry asr_handler
)
{
return asr_handler == NULL;
}
/*PAGE
*
* _ASR_Are_signals_pending
*
* DESCRIPTION:
*
* This function returns TRUE if there are signals pending in the
* given RTEMS_ASR information record and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _ASR_Are_signals_pending (
ASR_Information *information
)
{
return information->signals_posted != 0;
}
/*PAGE
*
* _ASR_Post_signals
*
* DESCRIPTION:
*
* This routine posts the given signals into the signal_set
* passed in. The result is returned to the user in signal_set.
*
* NOTE: This must be implemented as a macro.
*/
RTEMS_INLINE_ROUTINE void _ASR_Post_signals(
rtems_signal_set signals,
rtems_signal_set *signal_set
)
{
ISR_Level _level;
_ISR_Disable( _level );
*signal_set |= signals;
_ISR_Enable( _level );
}
#endif
/* end of include file */

View File

@@ -1,178 +0,0 @@
/* inline/attr.inl
*
* This include file contains all of the inlined routines associated
* with attributes.
*
* 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 __INLINE_ATTRIBUTES_inl
#define __INLINE_ATTRIBUTES_inl
/*PAGE
*
* _Attributes_Set
*
* DESCRIPTION:
*
* This function sets the requested new_attributes in the attribute_set
* passed in. The result is returned to the user.
*/
RTEMS_INLINE_ROUTINE rtems_attribute _Attributes_Set (
rtems_attribute new_attributes,
rtems_attribute attribute_set
)
{
return attribute_set | new_attributes;
}
/*PAGE
*
* _Attributes_Clear
*
* DESCRIPTION:
*
* This function clears the requested new_attributes in the attribute_set
* passed in. The result is returned to the user.
*/
RTEMS_INLINE_ROUTINE rtems_attribute _Attributes_Clear (
rtems_attribute attribute_set,
rtems_attribute mask
)
{
return attribute_set & ~mask;
}
/*PAGE
*
* _Attributes_Is_floating_point
*
* DESCRIPTION:
*
* This function returns TRUE if the floating point attribute is
* enabled in the attribute_set and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Attributes_Is_floating_point(
rtems_attribute attribute_set
)
{
return ( attribute_set & RTEMS_FLOATING_POINT );
}
/*PAGE
*
* _Attributes_Is_global
*
* DESCRIPTION:
*
* This function returns TRUE if the global object attribute is
* enabled in the attribute_set and FALSE otherwise.
*/
#if defined(RTEMS_MULTIPROCESSING)
RTEMS_INLINE_ROUTINE boolean _Attributes_Is_global(
rtems_attribute attribute_set
)
{
return ( attribute_set & RTEMS_GLOBAL );
}
#endif
/*PAGE
*
* _Attributes_Is_priority
*
* DESCRIPTION:
*
* This function returns TRUE if the priority attribute is
* enabled in the attribute_set and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Attributes_Is_priority(
rtems_attribute attribute_set
)
{
return ( attribute_set & RTEMS_PRIORITY );
}
/*PAGE
*
* _Attributes_Is_binary_semaphore
*
* DESCRIPTION:
*
* This function returns TRUE if the binary semaphore attribute is
* enabled in the attribute_set and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Attributes_Is_binary_semaphore(
rtems_attribute attribute_set
)
{
return ( attribute_set & RTEMS_BINARY_SEMAPHORE );
}
/*PAGE
*
* _Attributes_Is_inherit_priority
*
* DESCRIPTION:
*
* This function returns TRUE if the priority inheritance attribute
* is enabled in the attribute_set and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Attributes_Is_inherit_priority(
rtems_attribute attribute_set
)
{
return ( attribute_set & RTEMS_INHERIT_PRIORITY );
}
/*PAGE
*
* _Attributes_Is_priority_ceiling
*
* DESCRIPTION:
*
* This function returns TRUE if the priority ceiling attribute
* is enabled in the attribute_set and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Attributes_Is_priority_ceiling(
rtems_attribute attribute_set
)
{
return ( attribute_set & RTEMS_PRIORITY_CEILING );
}
/*PAGE
*
* _Attributes_Is_system_task
*
* DESCRIPTION:
*
* This function returns TRUE if the system task attribute
* is enabled in the attribute_set and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Attributes_Is_system_task(
rtems_attribute attribute_set
)
{
return ( attribute_set & RTEMS_PRIORITY_CEILING );
}
#endif
/* end of include file */

View File

@@ -1,95 +0,0 @@
/* inline/dpmem.inl
*
* This include file contains the inline routine used in conjunction
* with the Dual Ported Memory Manager
*
* 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 __INLINE_DPMEM_inl
#define __INLINE_DPMEM_inl
/*PAGE
*
* _Dual_ported_memory_Allocate
*
* DESCRIPTION:
*
* This routine allocates a port control block from the inactive chain
* of free port control blocks.
*/
RTEMS_INLINE_ROUTINE Dual_ported_memory_Control
*_Dual_ported_memory_Allocate ( void )
{
return (Dual_ported_memory_Control *)
_Objects_Allocate( &_Dual_ported_memory_Information );
}
/*PAGE
*
* _Dual_ported_memory_Free
*
* DESCRIPTION:
*
* This routine frees a port control block to the inactive chain
* of free port control blocks.
*/
RTEMS_INLINE_ROUTINE void _Dual_ported_memory_Free (
Dual_ported_memory_Control *the_port
)
{
_Objects_Free( &_Dual_ported_memory_Information, &the_port->Object );
}
/*PAGE
*
* _Dual_ported_memory_Get
*
* DESCRIPTION:
*
* This function maps port IDs to port control blocks. If ID
* corresponds to a local port, then it returns the_port control
* pointer which maps to ID and location is set to OBJECTS_LOCAL.
* Global ports are not supported, thus if ID does not map to a
* local port, location is set to OBJECTS_ERROR and the_port is
* undefined.
*/
RTEMS_INLINE_ROUTINE Dual_ported_memory_Control *_Dual_ported_memory_Get (
Objects_Id id,
Objects_Locations *location
)
{
return (Dual_ported_memory_Control *)
_Objects_Get( &_Dual_ported_memory_Information, id, location );
}
/*PAGE
*
* _Dual_ported_memory_Is_null
*
* DESCRIPTION:
*
* This function returns TRUE if the_port is NULL and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Dual_ported_memory_Is_null(
Dual_ported_memory_Control *the_port
)
{
return ( the_port == NULL );
}
#endif
/* end of include file */

View File

@@ -1,21 +0,0 @@
/* inline/event.inl
*
* This include file contains the static inline implementation of
* macros for the Event Manager.
*
* 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 __MACROS_EVENT_inl
#define __MACROS_EVENT_inl
#endif
/* end of include file */

View File

@@ -1,95 +0,0 @@
/* inline/eventset.inl
*
* This include file contains the information pertaining to event sets.
*
* 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 __INLINE_EVENT_SET_inl
#define __INLINE_EVENT_SET_inl
/*PAGE
*
* _Event_sets_Is_empty
*
* DESCRIPTION:
*
* This function returns TRUE if on events are posted in the event_set,
* and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Event_sets_Is_empty(
rtems_event_set the_event_set
)
{
return ( the_event_set == 0 );
}
/*PAGE
*
* _Event_sets_Post
*
* DESCRIPTION:
*
* This routine posts the given new_events into the event_set
* passed in. The result is returned to the user in event_set.
*/
RTEMS_INLINE_ROUTINE void _Event_sets_Post(
rtems_event_set the_new_events,
rtems_event_set *the_event_set
)
{
ISR_Level level;
_ISR_Disable( level );
*the_event_set |= the_new_events;
_ISR_Enable( level );
}
/*PAGE
*
* _Event_sets_Get
*
* DESCRIPTION:
*
* This function returns the events in event_condition which are
* set in event_set.
*/
RTEMS_INLINE_ROUTINE rtems_event_set _Event_sets_Get(
rtems_event_set the_event_set,
rtems_event_set the_event_condition
)
{
return ( the_event_set & the_event_condition );
}
/*PAGE
*
* _Event_sets_Clear
*
* DESCRIPTION:
*
* This function removes the events in mask from the event_set
* passed in. The result is returned to the user in event_set.
*/
RTEMS_INLINE_ROUTINE rtems_event_set _Event_sets_Clear(
rtems_event_set the_event_set,
rtems_event_set the_mask
)
{
return ( the_event_set & ~(the_mask) );
}
#endif
/* end of include file */

View File

@@ -1,83 +0,0 @@
/* message.inl
*
* This include file contains the static inline implementation of all
* inlined routines in the Message Manager.
*
* 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 __MESSAGE_QUEUE_inl
#define __MESSAGE_QUEUE_inl
#include <rtems/score/wkspace.h>
/*PAGE
*
* _Message_queue_Is_null
*
* DESCRIPTION:
*
* This function places the_message at the rear of the outstanding
* messages on the_message_queue.
*/
RTEMS_INLINE_ROUTINE boolean _Message_queue_Is_null (
Message_queue_Control *the_message_queue
)
{
return ( the_message_queue == NULL );
}
/*PAGE
*
* _Message_queue_Free
*
* DESCRIPTION:
*
* This routine deallocates a message queue control block into
* the inactive chain of free message queue control blocks.
*/
RTEMS_INLINE_ROUTINE void _Message_queue_Free (
Message_queue_Control *the_message_queue
)
{
_Objects_Free( &_Message_queue_Information, &the_message_queue->Object );
}
/*PAGE
*
* _Message_queue_Get
*
* DESCRIPTION:
*
* This function maps message queue IDs to message queue control
* blocks. If ID corresponds to a local message queue, then it
* returns the_message_queue control pointer which maps to ID
* and location is set to OBJECTS_LOCAL. If the message queue ID is
* global and resides on a remote node, then location is set
* to OBJECTS_REMOTE, and the_message_queue is undefined.
* Otherwise, location is set to OBJECTS_ERROR and
* the_message_queue is undefined.
*/
RTEMS_INLINE_ROUTINE Message_queue_Control *_Message_queue_Get (
Objects_Id id,
Objects_Locations *location
)
{
return (Message_queue_Control *)
_Objects_Get( &_Message_queue_Information, id, location );
}
#endif
/* end of include file */

View File

@@ -1,152 +0,0 @@
/* modes.inl
*
* This include file contains the static inline implementation of the
* inlined routines in the Mode 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 __MODES_inl
#define __MODES_inl
/*PAGE
*
* _Modes_Mask_changed
*
* DESCRIPTION:
*
* This function returns TRUE if any of the mode flags in mask
* are set in mode_set, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Modes_Mask_changed (
Modes_Control mode_set,
Modes_Control masks
)
{
return ( mode_set & masks );
}
/*PAGE
*
* _Modes_Is_asr_disabled
*
* DESCRIPTION:
*
* This function returns TRUE if mode_set indicates that Asynchronous
* Signal Processing is disabled, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Modes_Is_asr_disabled (
Modes_Control mode_set
)
{
return (mode_set & RTEMS_ASR_MASK) == RTEMS_NO_ASR;
}
/*PAGE
*
* _Modes_Is_preempt
*
* DESCRIPTION:
*
* This function returns TRUE if mode_set indicates that preemption
* is enabled, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Modes_Is_preempt (
Modes_Control mode_set
)
{
return (mode_set & RTEMS_PREEMPT_MASK) == RTEMS_PREEMPT;
}
/*PAGE
*
* _Modes_Is_timeslice
*
* DESCRIPTION:
*
* This function returns TRUE if mode_set indicates that timeslicing
* is enabled, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Modes_Is_timeslice (
Modes_Control mode_set
)
{
return (mode_set & RTEMS_TIMESLICE_MASK) == RTEMS_TIMESLICE;
}
/*PAGE
*
* _Modes_Get_interrupt_level
*
* DESCRIPTION:
*
* This function returns the interrupt level portion of the mode_set.
*/
RTEMS_INLINE_ROUTINE ISR_Level _Modes_Get_interrupt_level (
Modes_Control mode_set
)
{
return ( mode_set & RTEMS_INTERRUPT_MASK );
}
/*PAGE
*
* _Modes_Set_interrupt_level
*
* DESCRIPTION:
*
* This routine sets the current interrupt level to that specified
* in the mode_set.
*/
RTEMS_INLINE_ROUTINE void _Modes_Set_interrupt_level (
Modes_Control mode_set
)
{
_ISR_Set_level( _Modes_Get_interrupt_level( mode_set ) );
}
/*PAGE
*
* _Modes_Change
*
* DESCRIPTION:
*
* This routine changes the modes in old_mode_set indicated by
* mask to the requested values in new_mode_set. The resulting
* mode set is returned in out_mode_set and the modes that changed
* is returned in changed.
*/
RTEMS_INLINE_ROUTINE void _Modes_Change (
Modes_Control old_mode_set,
Modes_Control new_mode_set,
Modes_Control mask,
Modes_Control *out_mode_set,
Modes_Control *changed
)
{
Modes_Control _out_mode;
_out_mode = old_mode_set;
_out_mode &= ~mask;
_out_mode |= new_mode_set & mask;
*changed = _out_mode ^ old_mode_set;
*out_mode_set = _out_mode;
}
#endif
/* end of include file */

View File

@@ -1,55 +0,0 @@
/* options.inl
*
* This file contains the static inline implementation of the inlined
* routines from the Options 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 __OPTIONS_inl
#define __OPTIONS_inl
/*PAGE
*
* _Options_Is_no_wait
*
* DESCRIPTION:
*
* This function returns TRUE if the RTEMS_NO_WAIT option is enabled in
* option_set, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Options_Is_no_wait (
rtems_option option_set
)
{
return (option_set & RTEMS_NO_WAIT);
}
/*PAGE
*
* _Options_Is_any
*
* DESCRIPTION:
*
* This function returns TRUE if the RTEMS_EVENT_ANY option is enabled in
* OPTION_SET, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Options_Is_any (
rtems_option option_set
)
{
return (option_set & RTEMS_EVENT_ANY);
}
#endif
/* end of include file */

View File

@@ -1,199 +0,0 @@
/* part.inl
*
* This file contains the macro implementation of all inlined routines
* in the Partition Manager.
*
* 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 __PARTITION_inl
#define __PARTITION_inl
/*PAGE
*
* _Partition_Allocate_buffer
*
* DESCRIPTION:
*
* This function attempts to allocate a buffer from the_partition.
* If successful, it returns the address of the allocated buffer.
* Otherwise, it returns NULL.
*/
RTEMS_INLINE_ROUTINE void *_Partition_Allocate_buffer (
Partition_Control *the_partition
)
{
return _Chain_Get( &the_partition->Memory );
}
/*PAGE
*
* _Partition_Free_buffer
*
* DESCRIPTION:
*
* This routine frees the_buffer to the_partition.
*/
RTEMS_INLINE_ROUTINE void _Partition_Free_buffer (
Partition_Control *the_partition,
Chain_Node *the_buffer
)
{
_Chain_Append( &the_partition->Memory, the_buffer );
}
/*PAGE
*
* _Partition_Is_buffer_on_boundary
*
* DESCRIPTION:
*
* This function returns TRUE if the_buffer is on a valid buffer
* boundary for the_partition, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Partition_Is_buffer_on_boundary (
void *the_buffer,
Partition_Control *the_partition
)
{
unsigned32 offset;
offset = (unsigned32) _Addresses_Subtract(
the_buffer,
the_partition->starting_address
);
return ((offset % the_partition->buffer_size) == 0);
}
/*PAGE
*
* _Partition_Is_buffer_valid
*
* DESCRIPTION:
*
* This function returns TRUE if the_buffer is a valid buffer from
* the_partition, otherwise FALSE is returned.
*/
RTEMS_INLINE_ROUTINE boolean _Partition_Is_buffer_valid (
Chain_Node *the_buffer,
Partition_Control *the_partition
)
{
void *starting;
void *ending;
starting = the_partition->starting_address;
ending = _Addresses_Add_offset( starting, the_partition->length );
return (
_Addresses_Is_in_range( the_buffer, starting, ending ) &&
_Partition_Is_buffer_on_boundary( the_buffer, the_partition )
);
}
/*PAGE
*
* _Partition_Is_buffer_size_aligned
*
* DESCRIPTION:
*
* This function returns TRUE if the use of the specified buffer_size
* will result in the allocation of buffers whose first byte is
* properly aligned, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Partition_Is_buffer_size_aligned (
unsigned32 buffer_size
)
{
return ((buffer_size % CPU_PARTITION_ALIGNMENT) == 0);
}
/*PAGE
*
* _Partition_Allocate
*
* DESCRIPTION:
*
* This function allocates a partition control block from
* the inactive chain of free partition control blocks.
*/
RTEMS_INLINE_ROUTINE Partition_Control *_Partition_Allocate ( void )
{
return (Partition_Control *) _Objects_Allocate( &_Partition_Information );
}
/*PAGE
*
* _Partition_Free
*
* DESCRIPTION:
*
* This routine frees a partition control block to the
* inactive chain of free partition control blocks.
*/
RTEMS_INLINE_ROUTINE void _Partition_Free (
Partition_Control *the_partition
)
{
_Objects_Free( &_Partition_Information, &the_partition->Object );
}
/*PAGE
*
* _Partition_Get
*
* DESCRIPTION:
*
* This function maps partition IDs to partition control blocks.
* If ID corresponds to a local partition, then it returns
* the_partition control pointer which maps to ID and location
* is set to OBJECTS_LOCAL. If the partition ID is global and
* resides on a remote node, then location is set to OBJECTS_REMOTE,
* and the_partition is undefined. Otherwise, location is set
* to OBJECTS_ERROR and the_partition is undefined.
*/
RTEMS_INLINE_ROUTINE Partition_Control *_Partition_Get (
Objects_Id id,
Objects_Locations *location
)
{
return (Partition_Control *)
_Objects_Get( &_Partition_Information, id, location );
}
/*PAGE
*
* _Partition_Is_null
*
* DESCRIPTION:
*
* This function returns TRUE if the_partition is NULL
* and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Partition_Is_null (
Partition_Control *the_partition
)
{
return ( the_partition == NULL );
}
#endif
/* end of include file */

View File

@@ -1,143 +0,0 @@
/* ratemon.inl
*
* This file contains the static inline implementation of the inlined
* routines in the Rate Monotonic Manager.
*
* 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 __RATE_MONOTONIC_inl
#define __RATE_MONOTONIC_inl
/*PAGE
*
* _Rate_monotonic_Allocate
*
* DESCRIPTION:
*
* This function allocates a period control block from
* the inactive chain of free period control blocks.
*/
RTEMS_INLINE_ROUTINE Rate_monotonic_Control *_Rate_monotonic_Allocate( void )
{
return (Rate_monotonic_Control *)
_Objects_Allocate( &_Rate_monotonic_Information );
}
/*PAGE
*
* _Rate_monotonic_Free
*
* DESCRIPTION:
*
* This routine allocates a period control block from
* the inactive chain of free period control blocks.
*/
RTEMS_INLINE_ROUTINE void _Rate_monotonic_Free (
Rate_monotonic_Control *the_period
)
{
_Objects_Free( &_Rate_monotonic_Information, &the_period->Object );
}
/*PAGE
*
* _Rate_monotonic_Get
*
* DESCRIPTION:
*
* This function maps period IDs to period control blocks.
* If ID corresponds to a local period, then it returns
* the_period control pointer which maps to ID and location
* is set to OBJECTS_LOCAL. Otherwise, location is set
* to OBJECTS_ERROR and the_period is undefined.
*/
RTEMS_INLINE_ROUTINE Rate_monotonic_Control *_Rate_monotonic_Get (
Objects_Id id,
Objects_Locations *location
)
{
return (Rate_monotonic_Control *)
_Objects_Get( &_Rate_monotonic_Information, id, location );
}
/*PAGE
*
* _Rate_monotonic_Is_active
*
* DESCRIPTION:
*
* This function returns TRUE if the_period is in the ACTIVE state,
* and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Rate_monotonic_Is_active (
Rate_monotonic_Control *the_period
)
{
return (the_period->state == RATE_MONOTONIC_ACTIVE);
}
/*PAGE
*
* _Rate_monotonic_Is_inactive
*
* DESCRIPTION:
*
* This function returns TRUE if the_period is in the ACTIVE state,
* and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Rate_monotonic_Is_inactive (
Rate_monotonic_Control *the_period
)
{
return (the_period->state == RATE_MONOTONIC_INACTIVE);
}
/*PAGE
*
* _Rate_monotonic_Is_expired
*
* DESCRIPTION:
*
* This function returns TRUE if the_period is in the EXPIRED state,
* and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Rate_monotonic_Is_expired (
Rate_monotonic_Control *the_period
)
{
return (the_period->state == RATE_MONOTONIC_EXPIRED);
}
/*PAGE
*
* _Rate_monotonic_Is_null
*
* DESCRIPTION:
*
* This function returns TRUE if the_period is NULL and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Rate_monotonic_Is_null (
Rate_monotonic_Control *the_period
)
{
return (the_period == NULL);
}
#endif
/* end of include file */

View File

@@ -1,127 +0,0 @@
/* region.inl
*
* This file contains the macro implementation of the inlined
* routines from the Region Manager.
*
* 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 __REGION_inl
#define __REGION_inl
/*PAGE
*
* _Region_Allocate
*
* DESCRIPTION:
*
* This function allocates a region control block from
* the inactive chain of free region control blocks.
*/
RTEMS_INLINE_ROUTINE Region_Control *_Region_Allocate( void )
{
return (Region_Control *) _Objects_Allocate( &_Region_Information );
}
/*PAGE
*
* _Region_Free
*
* DESCRIPTION:
*
* This routine frees a region control block to the
* inactive chain of free region control blocks.
*/
RTEMS_INLINE_ROUTINE void _Region_Free (
Region_Control *the_region
)
{
_Objects_Free( &_Region_Information, &the_region->Object );
}
/*PAGE
*
* _Region_Get
*
* DESCRIPTION:
*
* This function maps region IDs to region control blocks.
* If ID corresponds to a local region, then it returns
* the_region control pointer which maps to ID and location
* is set to OBJECTS_LOCAL. Otherwise, location is set
* to OBJECTS_ERROR and the_region is undefined.
*/
RTEMS_INLINE_ROUTINE Region_Control *_Region_Get (
Objects_Id id,
Objects_Locations *location
)
{
return (Region_Control *)
_Objects_Get( &_Region_Information, id, location );
}
/*PAGE
*
* _Region_Allocate_segment
*
* DESCRIPTION:
*
* This function attempts to allocate a segment from the_region.
* If successful, it returns the address of the allocated segment.
* Otherwise, it returns NULL.
*/
RTEMS_INLINE_ROUTINE void *_Region_Allocate_segment (
Region_Control *the_region,
unsigned32 size
)
{
return _Heap_Allocate( &the_region->Memory, size );
}
/*PAGE
*
* _Region_Free_segment
*
* DESCRIPTION:
*
* This function frees the_segment to the_region.
*/
RTEMS_INLINE_ROUTINE boolean _Region_Free_segment (
Region_Control *the_region,
void *the_segment
)
{
return _Heap_Free( &the_region->Memory, the_segment );
}
/*PAGE
*
* _Region_Is_null
*
* DESCRIPTION:
*
* This function returns TRUE if the_region is NULL and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Region_Is_null (
Region_Control *the_region
)
{
return ( the_region == NULL );
}
#endif
/* end of include file */

View File

@@ -1,93 +0,0 @@
/* sem.inl
*
* This file contains the static inlin implementation of the inlined
* routines from the Semaphore Manager.
*
* 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 __SEMAPHORE_inl
#define __SEMAPHORE_inl
/*PAGE
*
* _Semaphore_Allocate
*
* DESCRIPTION:
*
* This function allocates a semaphore control block from
* the inactive chain of free semaphore control blocks.
*/
RTEMS_INLINE_ROUTINE Semaphore_Control *_Semaphore_Allocate( void )
{
return (Semaphore_Control *) _Objects_Allocate( &_Semaphore_Information );
}
/*PAGE
*
* _Semaphore_Free
*
* DESCRIPTION:
*
* This routine frees a semaphore control block to the
* inactive chain of free semaphore control blocks.
*/
RTEMS_INLINE_ROUTINE void _Semaphore_Free (
Semaphore_Control *the_semaphore
)
{
_Objects_Free( &_Semaphore_Information, &the_semaphore->Object );
}
/*PAGE
*
* _Semaphore_Get
*
* DESCRIPTION:
*
* This function maps semaphore IDs to semaphore control blocks.
* If ID corresponds to a local semaphore, then it returns
* the_semaphore control pointer which maps to ID and location
* is set to OBJECTS_LOCAL. if the semaphore ID is global and
* resides on a remote node, then location is set to OBJECTS_REMOTE,
* and the_semaphore is undefined. Otherwise, location is set
* to OBJECTS_ERROR and the_semaphore is undefined.
*/
RTEMS_INLINE_ROUTINE Semaphore_Control *_Semaphore_Get (
Objects_Id id,
Objects_Locations *location
)
{
return (Semaphore_Control *)
_Objects_Get( &_Semaphore_Information, id, location );
}
/*PAGE
*
* _Semaphore_Is_null
*
* DESCRIPTION:
*
* This function returns TRUE if the_semaphore is NULL and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Semaphore_Is_null (
Semaphore_Control *the_semaphore
)
{
return ( the_semaphore == NULL );
}
#endif
/* end of include file */

View File

@@ -1,56 +0,0 @@
/* inline/status.inl
*
* This include file contains the implementations of the inlined
* routines for the status 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 __INLINE_STATUS_inl
#define __INLINE_STATUS_inl
/*PAGE
*
* rtems_is_status_successful
*
* DESCRIPTION:
*
* This function returns TRUE if the status code is equal to RTEMS_SUCCESSFUL,
* and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean rtems_is_status_successful(
rtems_status_code code
)
{
return (code == RTEMS_SUCCESSFUL);
}
/*PAGE
*
* rtems_are_statuses_equal
*
* DESCRIPTION:
*
* This function returns TRUE if the status code1 is equal to code2,
* and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean rtems_are_statuses_equal(
rtems_status_code code1,
rtems_status_code code2
)
{
return (code1 == code2);
}
#endif
/* end of include file */

View File

@@ -1,61 +0,0 @@
/* support.inl
*
* This include file contains the static inline implementation of all
* of the inlined routines specific to the RTEMS API.
*
* 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_SUPPORT_inl
#define __RTEMS_SUPPORT_inl
/*PAGE
*
* rtems_is_name_valid
*
* DESCRIPTION:
*
* This function returns TRUE if the name is valid, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE rtems_boolean rtems_is_name_valid (
rtems_name name
)
{
return ( name != 0 );
}
/*PAGE
*
* rtems_name_to_characters
*
* DESCRIPTION:
*
* This function breaks the object name into the four component
* characters C1, C2, C3, and C4.
*/
RTEMS_INLINE_ROUTINE void rtems_name_to_characters(
rtems_name name,
char *c1,
char *c2,
char *c3,
char *c4
)
{
*c1 = (name >> 24) & 0xff;
*c2 = (name >> 16) & 0xff;
*c3 = (name >> 8) & 0xff;
*c4 = name & 0xff;
}
#endif
/* end of include file */

View File

@@ -1,90 +0,0 @@
/* tasks.inl
*
* This file contains the static inline implementation of all inlined
* routines in the with RTEMS Tasks Manager.
*
* 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_TASKS_inl
#define __RTEMS_TASKS_inl
/*PAGE
*
* _RTEMS_tasks_Allocate
*
* DESCRIPTION:
*
* This function allocates a task control block from
* the inactive chain of free task control blocks.
*/
RTEMS_INLINE_ROUTINE Thread_Control *_RTEMS_tasks_Allocate( void )
{
return (Thread_Control *) _Objects_Allocate( &_RTEMS_tasks_Information );
}
/*PAGE
*
* _RTEMS_tasks_Free
*
* DESCRIPTION:
*
* This routine frees a task control block to the
* inactive chain of free task control blocks.
*/
RTEMS_INLINE_ROUTINE void _RTEMS_tasks_Free (
Thread_Control *the_task
)
{
_Objects_Free(
_Objects_Get_information( the_task->Object.id ),
&the_task->Object
);
}
/*PAGE
*
* _RTEMS_tasks_Priority_to_Core
*
* DESCRIPTION:
*
* This function converts an RTEMS API priority into a core priority.
*/
RTEMS_INLINE_ROUTINE Priority_Control _RTEMS_tasks_Priority_to_Core(
rtems_task_priority priority
)
{
return (Priority_Control) priority;
}
/*PAGE
*
* _RTEMS_tasks_Priority_is_valid
*
* DESCRIPTION:
*
* This function returns TRUE if the_priority is a valid user task priority
* and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _RTEMS_tasks_Priority_is_valid (
rtems_task_priority the_priority
)
{
return ( ( the_priority >= RTEMS_MINIMUM_PRIORITY ) &&
( the_priority <= RTEMS_MAXIMUM_PRIORITY ) );
}
#endif
/* end of include file */

View File

@@ -1,142 +0,0 @@
/* timer.inl
*
* This file contains the static inline implementation of the inlined routines
* from the Timer Manager.
*
* 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 __TIMER_inl
#define __TIMER_inl
/*PAGE
*
* _Timer_Allocate
*
* DESCRIPTION:
*
* This function allocates a timer control block from
* the inactive chain of free timer control blocks.
*/
RTEMS_INLINE_ROUTINE Timer_Control *_Timer_Allocate( void )
{
return (Timer_Control *) _Objects_Allocate( &_Timer_Information );
}
/*PAGE
*
* _Timer_Free
*
* DESCRIPTION:
*
* This routine frees a timer control block to the
* inactive chain of free timer control blocks.
*/
RTEMS_INLINE_ROUTINE void _Timer_Free (
Timer_Control *the_timer
)
{
_Objects_Free( &_Timer_Information, &the_timer->Object );
}
/*PAGE
*
* _Timer_Get
*
* DESCRIPTION:
*
* This function maps timer IDs to timer control blocks.
* If ID corresponds to a local timer, then it returns
* the timer control pointer which maps to ID and location
* is set to OBJECTS_LOCAL. Otherwise, location is set
* to OBJECTS_ERROR and the returned value is undefined.
*/
RTEMS_INLINE_ROUTINE Timer_Control *_Timer_Get (
Objects_Id id,
Objects_Locations *location
)
{
return (Timer_Control *)
_Objects_Get( &_Timer_Information, id, location );
}
/*PAGE
*
* _Timer_Is_interval_class
*
* DESCRIPTION:
*
* This function returns TRUE if the class is that of an INTERVAL
* timer, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Timer_Is_interval_class (
Timer_Classes the_class
)
{
return ( the_class == TIMER_INTERVAL );
}
/*PAGE
*
* _Timer_Is_time_of_day_class
*
* DESCRIPTION:
*
* This function returns TRUE if the class is that of an INTERVAL
* timer, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Timer_Is_timer_of_day_class (
Timer_Classes the_class
)
{
return ( the_class == TIMER_TIME_OF_DAY );
}
/*PAGE
*
* _Timer_Is_dormant_class
*
* DESCRIPTION:
*
* This function returns TRUE if the class is that of a DORMANT
* timer, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Timer_Is_dormant_class (
Timer_Classes the_class
)
{
return ( the_class == TIMER_DORMANT );
}
/*PAGE
*
* _Timer_Is_null
*
* DESCRIPTION:
*
* This function returns TRUE if the_timer is NULL and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Timer_Is_null (
Timer_Control *the_timer
)
{
return ( the_timer == NULL );
}
#endif
/* end of include file */

View File

@@ -1,31 +0,0 @@
#
# $Id$
#
@SET_MAKE@
srcdir = @srcdir@
VPATH = @srcdir@
RTEMS_ROOT = @top_srcdir@
PROJECT_ROOT = @PROJECT_ROOT@
I_PIECES=asr attr dpmem event eventset message modes options \
part ratemon region sem status support tasks timer
I_FILES=$(I_PIECES:%=$(srcdir)/%.inl)
SRCS=$(I_FILES)
include $(RTEMS_ROOT)/make/custom/$(RTEMS_BSP).cfg
include $(RTEMS_ROOT)/make/lib.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 += $(LIB)
CLOBBER_ADDITIONS +=
all: $(SRCS)
$(INSTALL) -m 444 ${I_FILES} $(PROJECT_INCLUDE)/rtems/rtems

View File

@@ -1,90 +0,0 @@
/* macros/asr.h
*
* This include file contains the implemenation of all routines
* associated with the asynchronous signal handler which are inlined.
*
* 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 __INLINE_ASR_h
#define __INLINE_ASR_h
#include <rtems/score/isr.h>
/*PAGE
*
* _ASR_Initialize
*
*/
#define _ASR_Initialize( _information ) \
{ \
(_information)->is_enabled = TRUE; \
(_information)->handler = NULL; \
(_information)->mode_set = RTEMS_DEFAULT_MODES; \
(_information)->signals_posted = 0; \
(_information)->signals_pending = 0; \
(_information)->nest_level = 0; \
}
/*PAGE
*
* _ASR_Swap_signals
*
*/
#define _ASR_Swap_signals( _information ) \
{ \
rtems_signal_set _signals; \
ISR_Level _level; \
\
_ISR_Disable( _level ); \
_signals = (_information)->signals_pending; \
(_information)->signals_pending = (_information)->signals_posted; \
(_information)->signals_posted = _signals; \
_ISR_Enable( _level ); \
}
/*PAGE
*
* _ASR_Is_null_handler
*
*/
#define _ASR_Is_null_handler( _asr_handler ) \
( (_asr_handler) == NULL )
/*PAGE
*
* _ASR_Are_signals_pending
*
*/
#define _ASR_Are_signals_pending( _information ) \
( (_information)->signals_posted != 0 )
/*PAGE
*
* _ASR_Post_signals
*
*/
#define _ASR_Post_signals( _signals, _signal_set ) \
do { \
ISR_Level _level; \
\
_ISR_Disable( _level ); \
*(_signal_set) |= (_signals); \
_ISR_Enable( _level ); \
} while ( 0 )
#endif
/* end of include file */

View File

@@ -1,102 +0,0 @@
/* macros/attr.h
*
* This include file contains all of the inlined routines associated
* with attributes.
*
* 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 __MACROS_ATTRIBUTES_h
#define __MACROS_ATTRIBUTES_h
/*PAGE
*
* _Attributes_Set
*/
#define _Attributes_Set( _new_attributes, _attribute_set ) \
( (_attribute_set) | (_new_attributes) )
/*PAGE
*
* _Attributes_Clear
*/
#define _Attributes_Clear( _attribute_set, _mask ) \
( (_attribute_set) & ~(_mask) )
/*PAGE
*
* _Attributes_Is_floating_point
*
*/
#define _Attributes_Is_floating_point( _attribute_set ) \
( (_attribute_set) & RTEMS_FLOATING_POINT )
/*PAGE
*
* _Attributes_Is_global
*
*/
#if defined(RTEMS_MULTIPROCESSING)
#define _Attributes_Is_global( _attribute_set ) \
( (_attribute_set) & RTEMS_GLOBAL )
#endif
/*PAGE
*
* _Attributes_Is_priority
*
*/
#define _Attributes_Is_priority( _attribute_set ) \
( (_attribute_set) & RTEMS_PRIORITY )
/*PAGE
*
* _Attributes_Is_binary_semaphore
*
*/
#define _Attributes_Is_binary_semaphore( _attribute_set ) \
( (_attribute_set) & RTEMS_BINARY_SEMAPHORE )
/*PAGE
*
* _Attributes_Is_inherit_priority
*
*/
#define _Attributes_Is_inherit_priority( _attribute_set ) \
( (_attribute_set) & RTEMS_INHERIT_PRIORITY )
/*PAGE
*
* _Attributes_Is_priority_ceiling
*
*/
#define _Attributes_Is_priority_ceiling( _attribute_set ) \
( (_attribute_set) & RTEMS_PRIORITY_CEILING )
/*PAGE
*
* _Attributes_Is_system_task
*
*/
#define _Attributes_Is_system_task( _attribute_set ) \
( (_attribute_set) & RTEMS_SYSTEM_TASK )
#endif
/* end of include file */

View File

@@ -1,59 +0,0 @@
/* macros/dpmem.h
*
* This include file contains the inline routine used in conjunction
* with the Dual Ported Memory Manager
*
* 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 __MACROS_DPMEM_h
#define __MACROS_DPMEM_h
/*PAGE
*
* _Dual_ported_memory_Allocate
*
*/
#define _Dual_ported_memory_Allocate() \
(Dual_ported_memory_Control *) \
_Objects_Allocate( &_Dual_ported_memory_Information )
/*PAGE
*
* _Dual_ported_memory_Free
*
*/
#define _Dual_ported_memory_Free( _the_port ) \
_Objects_Free( &_Dual_ported_memory_Information, &(_the_port)->Object )
/*PAGE
*
* _Dual_ported_memory_Get
*
*/
#define _Dual_ported_memory_Get( _id, _location ) \
(Dual_ported_memory_Control *) \
_Objects_Get( &_Dual_ported_memory_Information, (_id), (_location) )
/*PAGE
*
* _Dual_ported_memory_Is_null
*/
#define _Dual_ported_memory_Is_null( _the_port ) \
( (_the_port) == NULL )
#endif
/* end of include file */

View File

@@ -1,21 +0,0 @@
/* macros/event.h
*
* This include file contains the implementation of macros for
* the Event Manager.
*
* 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 __MACROS_EVENT_h
#define __MACROS_EVENT_h
#endif
/* end of include file */

View File

@@ -1,59 +0,0 @@
/* eventset.inl
*
* This include file contains the macro implementation of inlined
* routines in the event set object.
*
* 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 __EVENT_SET_inl
#define __EVENT_SET_inl
/*PAGE
*
* _Event_sets_Is_empty
*/
#define _Event_sets_Is_empty( _the_event_set ) \
((_the_event_set) == 0 )
/*PAGE
*
* _Event_sets_Is_empty
*/
#define _Event_sets_Post( _the_new_events, _the_event_set ) \
do { \
ISR_Level level; \
\
_ISR_Disable( level ); \
*(_the_event_set) |= (_the_new_events); \
_ISR_Enable( level ); \
} while (0);
/*PAGE
*
* _Event_sets_Is_empty
*/
#define _Event_sets_Get( _the_event_set, _the_event_condition ) \
((_the_event_set) & (_the_event_condition))
/*PAGE
*
* _Event_sets_Clear
*/
#define _Event_sets_Clear( _the_event_set, _the_mask ) \
((_the_event_set) & ~(_the_mask))
#endif
/* end of include file */

View File

@@ -1,49 +0,0 @@
/* message.inl
*
* This include file contains the macro implementation of all
* inlined routines in the Message Manager.
*
* 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 __MESSAGE_QUEUE_inl
#define __MESSAGE_QUEUE_inl
/*PAGE
*
* _Message_queue_Is_null
*
*/
#define _Message_queue_Is_null( _the_message_queue ) \
( (_the_message_queue) == NULL )
/*PAGE
*
* _Message_queue_Free
*
*/
#define _Message_queue_Free( _the_message_queue ) \
_Objects_Free( &_Message_queue_Information, &(_the_message_queue)->Object )
/*PAGE
*
* _Message_queue_Get
*
*/
#define _Message_queue_Get( _id, _location ) \
(Message_queue_Control *) \
_Objects_Get( &_Message_queue_Information, (_id), (_location) )
#endif
/* end of include file */

View File

@@ -1,92 +0,0 @@
/* modes.inl
*
* This include file contains the macro implementation of the
* inlined routines in the Mode 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 __MODES_inl
#define __MODES_inl
/*PAGE
*
* _Modes_Mask_changed
*
*/
#define _Modes_Mask_changed( _mode_set, _masks ) \
( (_mode_set) & (_masks) )
/*PAGE
*
* _Modes_Is_asr_disabled
*
*/
#define _Modes_Is_asr_disabled( _mode_set ) \
(((_mode_set) & RTEMS_ASR_MASK) == RTEMS_NO_ASR)
/*PAGE
*
* _Modes_Is_preempt
*
*/
#define _Modes_Is_preempt( _mode_set ) \
( ( (_mode_set) & RTEMS_PREEMPT_MASK ) == RTEMS_PREEMPT )
/*PAGE
*
* _Modes_Is_timeslice
*
*/
#define _Modes_Is_timeslice( _mode_set ) \
(((_mode_set) & RTEMS_TIMESLICE_MASK) == RTEMS_TIMESLICE)
/*PAGE
*
* _Modes_Get_interrupt_level
*
*/
#define _Modes_Get_interrupt_level( _mode_set ) \
( (_mode_set) & RTEMS_INTERRUPT_MASK )
/*PAGE
*
* _Modes_Set_interrupt_level
*
*/
#define _Modes_Set_interrupt_level( _mode_set ) \
_ISR_Set_level( _Modes_Get_interrupt_level( (_mode_set) ) )
/*PAGE
*
* _Modes_Change
*
*/
#define _Modes_Change( _old_mode_set, _new_mode_set, \
_mask, _out_mode_set, _changed ) \
{ Modes_Control _out_mode; \
\
_out_mode = (_old_mode_set); \
_out_mode &= ~(_mask); \
_out_mode |= (_new_mode_set) & (_mask); \
*(_changed) = _out_mode ^ (_old_mode_set); \
*(_out_mode_set) = _out_mode; \
}
#endif
/* end of include file */

View File

@@ -1,39 +0,0 @@
/* options.inl
*
* This file contains the macro implementation of the inlined
* routines from the Options 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 __OPTIONS_inl
#define __OPTIONS_inl
/*PAGE
*
* _Options_Is_no_wait
*
*/
#define _Options_Is_no_wait( _option_set ) \
( (_option_set) & RTEMS_NO_WAIT )
/*PAGE
*
* _Options_Is_any
*
*/
#define _Options_Is_any( _option_set ) \
( (_option_set) & RTEMS_EVENT_ANY )
#endif
/* end of include file */

View File

@@ -1,117 +0,0 @@
/* part.inl
*
* This file contains the macro implementation of all inlined routines
* in the Partition Manager.
*
* 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 __PARTITION_inl
#define __PARTITION_inl
/*PAGE
*
* _Partition_Allocate_buffer
*
*/
#define _Partition_Allocate_buffer( _the_partition ) \
_Chain_Get( &(_the_partition)->Memory )
/*PAGE
*
* _Partition_Free_buffer
*
*/
#define _Partition_Free_buffer( _the_partition, _the_buffer ) \
_Chain_Append( &(_the_partition)->Memory, (_the_buffer) )
/*PAGE
*
* _Partition_Is_buffer_on_boundary
*
*/
#define _Partition_Is_buffer_on_boundary( _the_buffer, _the_partition ) \
((((unsigned32) _Addresses_Subtract( \
(_the_buffer), \
(_the_partition)->starting_address ) \
) % \
(_the_partition)->buffer_size) == 0)
/*PAGE
*
* _Partition_Is_buffer_valid
*
*/
#define _Partition_Is_buffer_valid( _the_buffer, _the_partition ) \
( \
_Addresses_Is_in_range( \
(_the_buffer), \
(_the_partition)->starting_address, \
_Addresses_Add_offset( \
(_the_partition)->starting_address, \
(_the_partition)->length \
) \
) && \
_Partition_Is_buffer_on_boundary( (_the_buffer), (_the_partition) ) \
)
/*PAGE
*
* _Partition_Is_buffer_size_aligned
*
*/
#define _Partition_Is_buffer_size_aligned( _buffer_size ) \
((_buffer_size) % CPU_PARTITION_ALIGNMENT == 0)
/*PAGE
*
* _Partition_Allocate
*
*/
#define _Partition_Allocate() \
(Partition_Control *) _Objects_Allocate( &_Partition_Information )
/*PAGE
*
* _Partition_Free
*
*/
#define _Partition_Free( _the_partition ) \
_Objects_Free( &_Partition_Information, &(_the_partition)->Object )
/*PAGE
*
* _Partition_Get
*
*/
#define _Partition_Get( _id, _location ) \
(Partition_Control *) \
_Objects_Get( &_Partition_Information, (_id), (_location) )
/*PAGE
*
* _Partition_Is_null
*
*/
#define _Partition_Is_null( _the_partition ) \
( (_the_partition) == NULL )
#endif
/* end of include file */

View File

@@ -1,85 +0,0 @@
/* ratemon.inl
*
* This file contains the macro implementation of the inlined
* routines in the Rate Monotonic Manager.
*
* 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 __RATE_MONOTONIC_inl
#define __RATE_MONOTONIC_inl
/*PAGE
*
* _Rate_monotonic_Allocate
*
*/
#define _Rate_monotonic_Allocate() \
(Rate_monotonic_Control *) \
_Objects_Allocate( &_Rate_monotonic_Information )
/*PAGE
*
* _Rate_monotonic_Free
*
*/
#define _Rate_monotonic_Free( _the_period ) \
_Objects_Free( &_Rate_monotonic_Information, &(_the_period)->Object )
/*PAGE
*
* _Rate_monotonic_Get
*
*/
#define _Rate_monotonic_Get( _id, _location ) \
(Rate_monotonic_Control *) \
_Objects_Get( &_Rate_monotonic_Information, (_id), (_location) )
/*PAGE
*
* _Rate_monotonic_Is_active
*
*/
#define _Rate_monotonic_Is_active( _the_period ) \
((_the_period)->state == RATE_MONOTONIC_ACTIVE)
/*PAGE
*
* _Rate_monotonic_Is_inactive
*
*/
#define _Rate_monotonic_Is_inactive( _the_period ) \
((_the_period)->state == RATE_MONOTONIC_INACTIVE)
/*PAGE
*
* _Rate_monotonic_Is_expired
*
*/
#define _Rate_monotonic_Is_expired( _the_period ) \
((_the_period)->state == RATE_MONOTONIC_EXPIRED)
/*PAGE
*
* _Rate_monotonic_Is_null
*
*/
#define _Rate_monotonic_Is_null( _the_period ) ( (_the_period) == NULL )
#endif
/* end of include file */

View File

@@ -1,75 +0,0 @@
/* region.inl
*
* This file contains the macro implementation of the inlined
* routines from the Region Manager.
*
* 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 __REGION_inl
#define __REGION_inl
/*PAGE
*
* _Region_Allocate
*
*/
#define _Region_Allocate() \
(Region_Control *) _Objects_Allocate( &_Region_Information )
/*PAGE
*
* _Region_Free
*
*/
#define _Region_Free( _the_region ) \
_Objects_Free( &_Region_Information, &(_the_region)->Object )
/*PAGE
*
* _Region_Get
*
*/
#define _Region_Get( _id, _location ) \
(Region_Control *) \
_Objects_Get( &_Region_Information, (_id), (_location) )
/*PAGE
*
* _Region_Allocate_segment
*
*/
#define _Region_Allocate_segment( _the_region, _size ) \
_Heap_Allocate( &(_the_region)->Memory, (_size) )
/*PAGE
*
* _Region_Free_segment
*
*/
#define _Region_Free_segment( _the_region, _the_segment ) \
_Heap_Free( &(_the_region)->Memory, (_the_segment) )
/*PAGE
*
* _Region_Is_null
*
*/
#define _Region_Is_null( _the_region ) ( (_the_region) == NULL )
#endif
/* end of include file */

View File

@@ -1,58 +0,0 @@
/* sem.inl
*
* This file contains the macro implementation of the inlined
* routines from the Semaphore Manager.
*
* 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 __SEMAPHORE_inl
#define __SEMAPHORE_inl
/*PAGE
*
* _Semaphore_Allocate
*
*/
#define _Semaphore_Allocate() \
(Semaphore_Control *) _Objects_Allocate( &_Semaphore_Information )
/*PAGE
*
* _Semaphore_Free
*
*/
#define _Semaphore_Free( _the_semaphore ) \
_Objects_Free( &_Semaphore_Information, &(_the_semaphore)->Object )
/*PAGE
*
* _Semaphore_Get
*
*/
#define _Semaphore_Get( _id, _location ) \
(Semaphore_Control *) \
_Objects_Get( &_Semaphore_Information, (_id), (_location) )
/*PAGE
*
* _Semaphore_Is_null
*
*/
#define _Semaphore_Is_null( _the_semaphore ) \
( (_the_semaphore) == NULL )
#endif
/* end of include file */

View File

@@ -1,39 +0,0 @@
/* macros/status.h
*
* This include file contains the implementations of the inlined
* routines for the status 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 __MACROS_STATUS_h
#define __MACROS_STATUS_h
/*PAGE
*
* rtems_is_status_successful
*
*/
#define rtems_is_status_successful( _code ) \
( (_code) == RTEMS_SUCCESSFUL )
/*PAGE
*
* rtems_are_statuses_equal
*
*/
#define rtems_are_statuses_equal( _code1, _code2 ) \
((_code1) == (_code2))
#endif
/* end of include file */

View File

@@ -1,44 +0,0 @@
/* support.inl
*
* This include file contains the macros implementation of all
* of the inlined routines specific to the RTEMS API.
*
* 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_SUPPORT_inl
#define __RTEMS_SUPPORT_inl
/*PAGE
*
* rtems_is_name_valid
*
*/
#define rtems_is_name_valid( _name ) \
( (_name) != 0 )
/*PAGE
*
* rtems_name_to_characters
*
*/
#define rtems_name_to_characters( _name, _c1, _c2, _c3, _c4 ) \
{ \
(*(_c1) = ((_name) >> 24) & 0xff; \
(*(_c2) = ((_name) >> 16) & 0xff; \
(*(_c3) = ((_name) >> 8) & 0xff; \
(*(_c4) = ((_name)) & 0xff; \
}
#endif
/* end of include file */

View File

@@ -1,58 +0,0 @@
/* tasks.inl
*
* This file contains the macro implementation of all inlined
* routines in the with RTEMS Tasks Manager.
*
* 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_TASKS_inl
#define __RTEMS_TASKS_inl
/*PAGE
*
* _RTEMS_tasks_Allocate
*
*/
#define _RTEMS_tasks_Allocate() \
(Thread_Control *) _Objects_Allocate( &_RTEMS_tasks_Information )
/*PAGE
*
* _RTEMS_tasks_Free
*
*/
#define _RTEMS_tasks_Free( _the_task ) \
_Objects_Free( &_RTEMS_tasks_Information, &(_the_task)->Object )
/*PAGE
*
* _RTEMS_tasks_Priority_to_Core
*/
#define _RTEMS_tasks_Priority_to_Core( _priority ) \
((Priority_Control) (_priority))
/*PAGE
*
* _RTEMS_tasks_Priority_is_valid
*
*/
#define _RTEMS_tasks_Priority_is_valid( _the_priority ) \
( ((_the_priority) >= RTEMS_MINIMUM_PRIORITY) && \
((_the_priority) <= RTEMS_MAXIMUM_PRIORITY) )
#endif
/* end of include file */

View File

@@ -1,85 +0,0 @@
/* timer.inl
*
* This file contains the macro implementation of the inlined routines
* from the Timer Manager.
*
* 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 __TIMER_inl
#define __TIMER_inl
/*PAGE
*
* _Timer_Allocate
*
*/
#define _Timer_Allocate() \
(Timer_Control *) _Objects_Allocate( &_Timer_Information )
/*PAGE
*
* _Timer_Free
*
*/
#define _Timer_Free( _the_timer ) \
_Objects_Free( &_Timer_Information, &(_the_timer)->Object )
/*PAGE
*
* _Timer_Get
*
*/
#define _Timer_Get( _id, _location ) \
(Timer_Control *) \
_Objects_Get( &_Timer_Information, (_id), (_location) )
/*PAGE
*
* _Timer_Is_interval_class
*
*/
#define _Timer_Is_interval_class( _the_class ) \
( (_the_class) == TIMER_INTERVAL )
/*PAGE
*
* _Timer_Is_time_of_day_class
*
*/
#define _Timer_Is_time_of_day_class( _the_class ) \
( (_the_class) == TIMER_TIME_OF_DAY )
/*PAGE
*
* _Timer_Is_dormant_class
*
*/
#define _Timer_Is_dormant_class( _the_class ) \
( (_the_class) == TIMER_DORMANT )
/*PAGE
*
* _Timer_Is_null
*
*/
#define _Timer_Is_null( _the_timer ) \
( (_the_timer) == NULL )
#endif
/* end of include file */