Should have been removed earlier.

This commit is contained in:
Joel Sherrill
1999-02-18 17:26:10 +00:00
parent e4071cf64a
commit 0fc85c5081
43 changed files with 0 additions and 5878 deletions

View File

@@ -1,36 +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 = mppkt objectmp threadmp
MP_PIECES = $(MP_PIECES_$(HAS_MP)_V)
I_PIECES= address chain coremsg coremutex coresem heap \
isr object priority stack states sysstate thread \
tod tqdata userext watchdog wkspace $(MP_PIECES)
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/score

View File

@@ -1,120 +0,0 @@
/* inline/address.inl
*
* This include file contains the bodies of the routines
* about addresses 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_ADDRESSES_inl
#define __INLINE_ADDRESSES_inl
/*PAGE
*
* _Addresses_Add_offset
*
* DESCRIPTION:
*
* This function is used to add an offset to a base address.
* It returns the resulting address. This address is typically
* converted to an access type before being used further.
*/
RTEMS_INLINE_ROUTINE void *_Addresses_Add_offset (
void *base,
unsigned32 offset
)
{
return (void *)((char *)base + offset);
}
/*PAGE
*
* _Addresses_Subtract_offset
*
* DESCRIPTION:
*
* This function is used to subtract an offset from a base
* address. It returns the resulting address. This address is
* typically converted to an access type before being used further.
*/
RTEMS_INLINE_ROUTINE void *_Addresses_Subtract_offset (
void *base,
unsigned32 offset
)
{
return (void *)((char *)base - offset);
}
/*PAGE
*
* _Addresses_Subtract
*
* DESCRIPTION:
*
* This function is used to subtract two addresses. It returns the
* resulting offset.
*
* NOTE: The cast of an address to an unsigned32 makes this code
* dependent on an addresses being thirty two bits.
*/
RTEMS_INLINE_ROUTINE unsigned32 _Addresses_Subtract (
void *left,
void *right
)
{
return ((char *) left - (char *) right);
}
/*PAGE
*
* _Addresses_Is_aligned
*
* DESCRIPTION:
*
* This function returns TRUE if the given address is correctly
* aligned for this processor and FALSE otherwise. Proper alignment
* is based on correctness and efficiency.
*/
RTEMS_INLINE_ROUTINE boolean _Addresses_Is_aligned (
void *address
)
{
return ( ( (unsigned32)address % CPU_ALIGNMENT ) == 0 );
}
/*PAGE
*
* _Addresses_Is_in_range
*
* DESCRIPTION:
*
* This function returns TRUE if the given address is within the
* memory range specified and FALSE otherwise. base is the address
* of the first byte in the memory range and limit is the address
* of the last byte in the memory range. The base address is
* assumed to be lower than the limit address.
*/
RTEMS_INLINE_ROUTINE boolean _Addresses_Is_in_range (
void *address,
void *base,
void *limit
)
{
return ( address >= base && address <= limit );
}
#endif
/* end of include file */

View File

@@ -1,390 +0,0 @@
/* inline/chain.inl
*
* This include file contains the bodies of the routines which are
* associated with doubly linked chains and inlined.
*
* NOTE: The routines in this file are ordered from simple
* to complex. No other Chain Handler routine is referenced
* unless it has already been defined.
*
* 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_CHAIN_inl
#define __INLINE_CHAIN_inl
/*PAGE
*
* _Chain_Are_nodes_equal
*
* DESCRIPTION:
*
* This function returns TRUE if LEFT and RIGHT are equal,
* and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Chain_Are_nodes_equal(
Chain_Node *left,
Chain_Node *right
)
{
return left == right;
}
/*PAGE
*
* _Chain_Is_null
*
* DESCRIPTION:
*
* This function returns TRUE if the_chain is NULL and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Chain_Is_null(
Chain_Control *the_chain
)
{
return ( the_chain == NULL );
}
/*PAGE
*
* _Chain_Is_null_node
*
* DESCRIPTION:
*
* This function returns TRUE if the_node is NULL and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Chain_Is_null_node(
Chain_Node *the_node
)
{
return ( the_node == NULL );
}
/*PAGE
*
* _Chain_Head
*
* DESCRIPTION:
*
* This function returns a pointer to the first node on the chain.
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Head(
Chain_Control *the_chain
)
{
return (Chain_Node *) the_chain;
}
/*PAGE
*
* _Chain_Tail
*
* DESCRIPTION:
*
* This function returns a pointer to the last node on the chain.
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(
Chain_Control *the_chain
)
{
return (Chain_Node *) &the_chain->permanent_null;
}
/*PAGE
*
* _Chain_Is_empty
*
* DESCRIPTION:
*
* This function returns TRUE if there a no nodes on the_chain and
* FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Chain_Is_empty(
Chain_Control *the_chain
)
{
return ( the_chain->first == _Chain_Tail( the_chain ) );
}
/*PAGE
*
* _Chain_Is_first
*
* DESCRIPTION:
*
* This function returns TRUE if the_node is the first node on a chain and
* FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Chain_Is_first(
Chain_Node *the_node
)
{
return ( the_node->previous == NULL );
}
/*PAGE
*
* _Chain_Is_last
*
* DESCRIPTION:
*
* This function returns TRUE if the_node is the last node on a chain and
* FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Chain_Is_last(
Chain_Node *the_node
)
{
return ( the_node->next == NULL );
}
/*PAGE
*
* _Chain_Has_only_one_node
*
* DESCRIPTION:
*
* This function returns TRUE if there is only one node on the_chain and
* FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Chain_Has_only_one_node(
Chain_Control *the_chain
)
{
return ( the_chain->first == the_chain->last );
}
/*PAGE
*
* _Chain_Is_head
*
* DESCRIPTION:
*
* This function returns TRUE if the_node is the head of the_chain and
* FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Chain_Is_head(
Chain_Control *the_chain,
Chain_Node *the_node
)
{
return ( the_node == _Chain_Head( the_chain ) );
}
/*PAGE
*
* _Chain_Is_tail
*
* DESCRIPTION:
*
* This function returns TRUE if the_node is the tail of the_chain and
* FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Chain_Is_tail(
Chain_Control *the_chain,
Chain_Node *the_node
)
{
return ( the_node == _Chain_Tail( the_chain ) );
}
/*PAGE
*
* Chain_Initialize_empty
*
* DESCRIPTION:
*
* This routine initializes the specified chain to contain zero nodes.
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
the_chain->first = _Chain_Tail( the_chain );
the_chain->permanent_null = NULL;
the_chain->last = _Chain_Head( the_chain );
}
/*PAGE
*
* _Chain_Extract_unprotected
*
* DESCRIPTION:
*
* This routine extracts the_node from the chain on which it resides.
* It does NOT disable interrupts to insure the atomicity of the
* extract operation.
*/
RTEMS_INLINE_ROUTINE void _Chain_Extract_unprotected(
Chain_Node *the_node
)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
previous = the_node->previous;
next->previous = previous;
previous->next = next;
}
/*PAGE
*
* _Chain_Get_first_unprotected
*
* DESCRIPTION:
*
* This function removes the first node from the_chain and returns
* a pointer to that node. It does NOT disable interrupts to insure
* the atomicity of the get operation.
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_first_unprotected(
Chain_Control *the_chain
)
{
Chain_Node *return_node;
Chain_Node *new_first;
return_node = the_chain->first;
new_first = return_node->next;
the_chain->first = new_first;
new_first->previous = _Chain_Head( the_chain );
return return_node;
}
/*PAGE
*
* Chain_Get_unprotected
*
* DESCRIPTION:
*
* This function removes the first node from the_chain and returns
* a pointer to that node. If the_chain is empty, then NULL is returned.
* It does NOT disable interrupts to insure the atomicity of the
* get operation.
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected(
Chain_Control *the_chain
)
{
if ( !_Chain_Is_empty( the_chain ) )
return _Chain_Get_first_unprotected( the_chain );
else
return NULL;
}
/*PAGE
*
* _Chain_Insert_unprotected
*
* DESCRIPTION:
*
* This routine inserts the_node on a chain immediately following
* after_node. It does NOT disable interrupts to insure the atomicity
* of the extract operation.
*/
RTEMS_INLINE_ROUTINE void _Chain_Insert_unprotected(
Chain_Node *after_node,
Chain_Node *the_node
)
{
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
after_node->next = the_node;
the_node->next = before_node;
before_node->previous = the_node;
}
/*PAGE
*
* _Chain_Append_unprotected
*
* DESCRIPTION:
*
* This routine appends the_node onto the end of the_chain.
* It does NOT disable interrupts to insure the atomicity of the
* append operation.
*/
RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected(
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *old_last_node;
the_node->next = _Chain_Tail( the_chain );
old_last_node = the_chain->last;
the_chain->last = the_node;
old_last_node->next = the_node;
the_node->previous = old_last_node;
}
/*PAGE
*
* _Chain_Prepend_unprotected
*
* DESCRIPTION:
*
* This routine prepends the_node onto the front of the_chain.
* It does NOT disable interrupts to insure the atomicity of the
* prepend operation.
*/
RTEMS_INLINE_ROUTINE void _Chain_Prepend_unprotected(
Chain_Control *the_chain,
Chain_Node *the_node
)
{
_Chain_Insert_unprotected( _Chain_Head( the_chain ), the_node );
}
/*PAGE
*
* _Chain_Prepend
*
* DESCRIPTION:
*
* This routine prepends the_node onto the front of the_chain.
* It disables interrupts to insure the atomicity of the
* prepend operation.
*/
RTEMS_INLINE_ROUTINE void _Chain_Prepend(
Chain_Control *the_chain,
Chain_Node *the_node
)
{
_Chain_Insert( _Chain_Head( the_chain ), the_node );
}
#endif
/* end of include file */

View File

@@ -1,260 +0,0 @@
/* coremsg.inl
*
* This include file contains the static inline implementation of all
* inlined routines in the Core Message 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 __CORE_MESSAGE_QUEUE_inl
#define __CORE_MESSAGE_QUEUE_inl
#include <string.h> /* needed for memcpy */
/*PAGE
*
* _CORE_message_queue_Send
*
* DESCRIPTION:
*
* This routine sends a message to the end of the specified message queue.
*/
RTEMS_INLINE_ROUTINE CORE_message_queue_Status _CORE_message_queue_Send(
CORE_message_queue_Control *the_message_queue,
void *buffer,
unsigned32 size,
Objects_Id id,
CORE_message_queue_API_mp_support_callout api_message_queue_mp_support
)
{
return _CORE_message_queue_Submit(
the_message_queue,
buffer,
size,
id,
api_message_queue_mp_support,
CORE_MESSAGE_QUEUE_SEND_REQUEST
);
}
/*PAGE
*
* _CORE_message_queue_Urgent
*
* DESCRIPTION:
*
* This routine sends a message to the front of the specified message queue.
*/
RTEMS_INLINE_ROUTINE CORE_message_queue_Status _CORE_message_queue_Urgent(
CORE_message_queue_Control *the_message_queue,
void *buffer,
unsigned32 size,
Objects_Id id,
CORE_message_queue_API_mp_support_callout api_message_queue_mp_support
)
{
return _CORE_message_queue_Submit(
the_message_queue,
buffer,
size,
id,
api_message_queue_mp_support,
CORE_MESSAGE_QUEUE_URGENT_REQUEST
);
}
/*PAGE
*
* _CORE_message_queue_Copy_buffer
*
* DESCRIPTION:
*
* This routine copies the contents of the source message buffer
* to the destination message buffer.
*/
RTEMS_INLINE_ROUTINE void _CORE_message_queue_Copy_buffer (
void *source,
void *destination,
unsigned32 size
)
{
memcpy(destination, source, size);
}
/*PAGE
*
* _CORE_message_queue_Allocate_message_buffer
*
* DESCRIPTION:
*
* This function allocates a message buffer from the inactive
* message buffer chain.
*/
RTEMS_INLINE_ROUTINE CORE_message_queue_Buffer_control *
_CORE_message_queue_Allocate_message_buffer (
CORE_message_queue_Control *the_message_queue
)
{
return (CORE_message_queue_Buffer_control *)
_Chain_Get( &the_message_queue->Inactive_messages );
}
/*PAGE
*
* _CORE_message_queue_Free_message_buffer
*
* DESCRIPTION:
*
* This routine frees a message buffer to the inactive
* message buffer chain.
*/
RTEMS_INLINE_ROUTINE void _CORE_message_queue_Free_message_buffer (
CORE_message_queue_Control *the_message_queue,
CORE_message_queue_Buffer_control *the_message
)
{
_Chain_Append( &the_message_queue->Inactive_messages, &the_message->Node );
}
/*PAGE
*
* _CORE_message_queue_Get_pending_message
*
* DESCRIPTION:
*
* This function removes the first message from the_message_queue
* and returns a pointer to it.
*/
RTEMS_INLINE_ROUTINE
CORE_message_queue_Buffer_control *_CORE_message_queue_Get_pending_message (
CORE_message_queue_Control *the_message_queue
)
{
return (CORE_message_queue_Buffer_control *)
_Chain_Get_unprotected( &the_message_queue->Pending_messages );
}
/*PAGE
*
* _CORE_message_queue_Is_priority
*
* DESCRIPTION:
*
* This function returns TRUE if the priority attribute is
* enabled in the attribute_set and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _CORE_message_queue_Is_priority(
CORE_message_queue_Attributes *the_attribute
)
{
return (the_attribute->discipline == CORE_MESSAGE_QUEUE_DISCIPLINES_PRIORITY);
}
/*PAGE
*
* _CORE_message_queue_Append
*
* DESCRIPTION:
*
* This routine places the_message at the rear of the outstanding
* messages on the_message_queue.
*/
RTEMS_INLINE_ROUTINE void _CORE_message_queue_Append (
CORE_message_queue_Control *the_message_queue,
CORE_message_queue_Buffer_control *the_message
)
{
_Chain_Append( &the_message_queue->Pending_messages, &the_message->Node );
}
/*PAGE
*
* _CORE_message_queue_Prepend
*
* DESCRIPTION:
*
* This routine places the_message at the front of the outstanding
* messages on the_message_queue.
*/
RTEMS_INLINE_ROUTINE void _CORE_message_queue_Prepend (
CORE_message_queue_Control *the_message_queue,
CORE_message_queue_Buffer_control *the_message
)
{
_Chain_Prepend(
&the_message_queue->Pending_messages,
&the_message->Node
);
}
/*PAGE
*
* _CORE_message_queue_Is_null
*
* DESCRIPTION:
*
* This function returns TRUE if the_message_queue is TRUE and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _CORE_message_queue_Is_null (
CORE_message_queue_Control *the_message_queue
)
{
return ( the_message_queue == NULL );
}
/*PAGE
*
* _CORE_message_queue_Is_notify_enabled
*
* DESCRIPTION:
*
* This function returns TRUE if notification is enabled on this message
* queue and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _CORE_message_queue_Is_notify_enabled (
CORE_message_queue_Control *the_message_queue
)
{
return (the_message_queue->notify_handler != NULL);
}
/*PAGE
*
* _CORE_message_queue_Set_notify
*
* DESCRIPTION:
*
* This routine initializes the notification information for the_message_queue.
*/
RTEMS_INLINE_ROUTINE void _CORE_message_queue_Set_notify (
CORE_message_queue_Control *the_message_queue,
CORE_message_queue_Notify_Handler the_handler,
void *the_argument
)
{
the_message_queue->notify_handler = the_handler;
the_message_queue->notify_argument = the_argument;
}
#endif
/* end of include file */

View File

@@ -1,124 +0,0 @@
/* inline/coremutex.inl
*
* This include file contains all of the inlined routines associated
* with the CORE mutexes.
*
* 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_CORE_MUTEX_inl
#define __INLINE_CORE_MUTEX_inl
/*PAGE
*
* _CORE_mutex_Is_locked
*
* DESCRIPTION:
*
* This routine returns TRUE if the mutex specified is locked and FALSE
* otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _CORE_mutex_Is_locked(
CORE_mutex_Control *the_mutex
)
{
return the_mutex->lock == CORE_MUTEX_LOCKED;
}
/*PAGE
*
* _CORE_mutex_Is_fifo
*
* DESCRIPTION:
*
* This routine returns TRUE if the mutex's wait discipline is FIFO and FALSE
* otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _CORE_mutex_Is_fifo(
CORE_mutex_Attributes *the_attribute
)
{
return the_attribute->discipline == CORE_MUTEX_DISCIPLINES_FIFO;
}
/*PAGE
*
* _CORE_mutex_Is_priority
*
* DESCRIPTION:
*
* This routine returns TRUE if the mutex's wait discipline is PRIORITY and
* FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _CORE_mutex_Is_priority(
CORE_mutex_Attributes *the_attribute
)
{
return the_attribute->discipline == CORE_MUTEX_DISCIPLINES_PRIORITY;
}
/*PAGE
*
* _CORE_mutex_Is_inherit_priority
*
* DESCRIPTION:
*
* This routine returns TRUE if the mutex's wait discipline is
* INHERIT_PRIORITY and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _CORE_mutex_Is_inherit_priority(
CORE_mutex_Attributes *the_attribute
)
{
return the_attribute->discipline == CORE_MUTEX_DISCIPLINES_PRIORITY_INHERIT;
}
/*PAGE
*
* _CORE_mutex_Is_priority_ceiling
*
* DESCRIPTION:
*
* This routine returns TRUE if the mutex's wait discipline is
* PRIORITY_CEILING and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _CORE_mutex_Is_priority_ceiling(
CORE_mutex_Attributes *the_attribute
)
{
return the_attribute->discipline == CORE_MUTEX_DISCIPLINES_PRIORITY_CEILING;
}
/*PAGE
*
* _CORE_mutex_Is_nesting_allowed
*
* DESCRIPTION:
*
* This routine returns TRUE if the mutex allows a task to obtain a
* semaphore more than once and nest.
*/
RTEMS_INLINE_ROUTINE boolean _CORE_mutex_Is_nesting_allowed(
CORE_mutex_Attributes *the_attribute
)
{
return the_attribute->allow_nesting == TRUE;
}
#endif
/* end of include file */

View File

@@ -1,54 +0,0 @@
/* inline/coresem.inl
*
* This include file contains all of the inlined routines associated
* with the CORE 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 __INLINE_CORE_SEMAPHORE_inl
#define __INLINE_CORE_SEMAPHORE_inl
/*PAGE
*
* _CORE_semaphore_Is_priority
*
* DESCRIPTION:
*
* This function returns TRUE if the priority attribute is
* enabled in the attribute_set and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _CORE_semaphore_Is_priority(
CORE_semaphore_Attributes *the_attribute
)
{
return ( the_attribute->discipline == CORE_SEMAPHORE_DISCIPLINES_PRIORITY );
}
/*PAGE
*
* _CORE_semaphore_Get_count
*
* DESCRIPTION:
*
* This routine returns the current count associated with the semaphore.
*/
RTEMS_INLINE_ROUTINE unsigned32 _CORE_semaphore_Get_count(
CORE_semaphore_Control *the_semaphore
)
{
return the_semaphore->count;
}
#endif
/* end of include file */

View File

@@ -1,274 +0,0 @@
/* heap.inl
*
* This file contains the static inline implementation of the inlined
* routines from the heap 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 __HEAP_inl
#define __HEAP_inl
#include <rtems/score/address.h>
/*PAGE
*
* _Heap_Head
*
* DESCRIPTION:
*
* This function returns the head of the specified heap.
*/
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Head (
Heap_Control *the_heap
)
{
return (Heap_Block *)&the_heap->start;
}
/*PAGE
*
* _Heap_Tail
*
* DESCRIPTION:
*
* This function returns the tail of the specified heap.
*/
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Tail (
Heap_Control *the_heap
)
{
return (Heap_Block *)&the_heap->final;
}
/*PAGE
*
* _Heap_Previous_block
*
* DESCRIPTION:
*
* This function returns the address of the block which physically
* precedes the_block in memory.
*/
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Previous_block (
Heap_Block *the_block
)
{
return (Heap_Block *) _Addresses_Subtract_offset(
(void *)the_block,
the_block->back_flag & ~ HEAP_BLOCK_USED
);
}
/*PAGE
*
* _Heap_Next_block
*
* DESCRIPTION:
*
* This function returns the address of the block which physically
* follows the_block in memory.
*
* NOTE: Next_block assumes that the block is free.
*/
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Next_block (
Heap_Block *the_block
)
{
return (Heap_Block *) _Addresses_Add_offset(
(void *)the_block,
the_block->front_flag & ~ HEAP_BLOCK_USED
);
}
/*PAGE
*
* _Heap_Block_at
*
* DESCRIPTION:
*
* This function calculates and returns a block's location (address)
* in the heap based upon a base address and an offset.
*/
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(
void *base,
unsigned32 offset
)
{
return (Heap_Block *) _Addresses_Add_offset( (void *)base, offset );
}
/*PAGE
*
* _Heap_User_block_at
*
* DESCRIPTION:
*
* XXX
*/
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_User_block_at(
void *base
)
{
unsigned32 offset;
offset = *(((unsigned32 *) base) - 1);
return _Heap_Block_at( base, -offset + -HEAP_BLOCK_USED_OVERHEAD);
}
/*PAGE
*
* _Heap_Is_previous_block_free
*
* DESCRIPTION:
*
* This function returns TRUE if the previous block of the_block
* is free, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Heap_Is_previous_block_free (
Heap_Block *the_block
)
{
return !(the_block->back_flag & HEAP_BLOCK_USED);
}
/*PAGE
*
* _Heap_Is_block_free
*
* DESCRIPTION:
*
* This function returns TRUE if the block is free, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Heap_Is_block_free (
Heap_Block *the_block
)
{
return !(the_block->front_flag & HEAP_BLOCK_USED);
}
/*PAGE
*
* _Heap_Is_block_used
*
* DESCRIPTION:
*
* This function returns TRUE if the block is currently allocated,
* and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Heap_Is_block_used (
Heap_Block *the_block
)
{
return (the_block->front_flag & HEAP_BLOCK_USED);
}
/*PAGE
*
* _Heap_Block_size
*
* DESCRIPTION:
*
* This function returns the size of the_block in bytes.
*/
RTEMS_INLINE_ROUTINE unsigned32 _Heap_Block_size (
Heap_Block *the_block
)
{
return (the_block->front_flag & ~HEAP_BLOCK_USED);
}
/*PAGE
*
* _Heap_Start_of_user_area
*
* DESCRIPTION:
*
* This function returns the starting address of the portion of the block
* which the user may access.
*/
RTEMS_INLINE_ROUTINE void *_Heap_Start_of_user_area (
Heap_Block *the_block
)
{
return (void *) &the_block->next;
}
/*PAGE
*
* _Heap_Is_block_in
*
* DESCRIPTION:
*
* This function returns TRUE if the_block is within the memory area
* managed by the_heap, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Heap_Is_block_in (
Heap_Control *the_heap,
Heap_Block *the_block
)
{
return _Addresses_Is_in_range( the_block, the_heap->start, the_heap->final );
}
/*PAGE
*
* _Heap_Is_page_size_valid
*
* DESCRIPTION:
*
* This function validates a specified heap page size. If the page size
* is 0 or if lies outside a page size alignment boundary it is invalid
* and FALSE is returned. Otherwise, the page size is valid and TRUE is
* returned.
*/
RTEMS_INLINE_ROUTINE boolean _Heap_Is_page_size_valid(
unsigned32 page_size
)
{
return ((page_size != 0) &&
((page_size % CPU_HEAP_ALIGNMENT) == 0));
}
/*PAGE
*
* _Heap_Build_flag
*
* DESCRIPTION:
*
* This function returns the block flag composed of size and in_use_flag.
* The flag returned is suitable for use as a back or front flag in a
* heap block.
*/
RTEMS_INLINE_ROUTINE unsigned32 _Heap_Build_flag (
unsigned32 size,
unsigned32 in_use_flag
)
{
return size | in_use_flag;
}
#endif
/* end of include file */

View File

@@ -1,73 +0,0 @@
/* isr.inl
*
* This include file contains the static implementation of all
* inlined routines in the Interrupt 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 __ISR_inl
#define __ISR_inl
/*PAGE
*
* _ISR_Is_in_progress
*
* DESCRIPTION:
*
* This function returns TRUE if the processor is currently servicing
* and 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.
*/
RTEMS_INLINE_ROUTINE boolean _ISR_Is_in_progress( void )
{
return (_ISR_Nest_level != 0);
}
/*PAGE
*
* _ISR_Is_vector_number_valid
*
* DESCRIPTION:
*
* This function returns TRUE if the vector is a valid vector number
* for this processor and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _ISR_Is_vector_number_valid (
unsigned32 vector
)
{
return ( vector <= CPU_INTERRUPT_MAXIMUM_VECTOR_NUMBER );
}
/*PAGE
*
* _ISR_Is_valid_user_handler
*
*
* DESCRIPTION:
*
* This function returns TRUE if handler is the entry point of a valid
* use interrupt service routine and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _ISR_Is_valid_user_handler (
void *handler
)
{
return ( handler != NULL);
}
#endif
/* end of include file */

View File

@@ -1,58 +0,0 @@
/* inline/mppkt.inl
*
* This package is the implementation of the Packet Handler
* routines 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_MP_PACKET_inl
#define __INLINE_MP_PACKET_inl
/*PAGE
*
* _Mp_packet_Is_valid_packet_class
*
* DESCRIPTION:
*
* This function returns TRUE if the the_packet_class is valid,
* and FALSE otherwise.
*
* NOTE: Check for lower bounds (MP_PACKET_CLASSES_FIRST ) is unnecessary
* because this enum starts at lower bound of zero.
*/
RTEMS_INLINE_ROUTINE boolean _Mp_packet_Is_valid_packet_class (
MP_packet_Classes the_packet_class
)
{
return ( the_packet_class <= MP_PACKET_CLASSES_LAST );
}
/*PAGE
*
* _Mp_packet_Is_null
*
* DESCRIPTION:
*
* This function returns TRUE if the the_packet_class is null,
* and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Mp_packet_Is_null (
MP_packet_Prefix *the_packet
)
{
return the_packet == NULL;
}
#endif
/* end of include file */

View File

@@ -1,244 +0,0 @@
/* object.inl
*
* This include file contains the static inline implementation of all
* of the inlined routines in the Object 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 __OBJECTS_inl
#define __OBJECTS_inl
/*PAGE
*
* _Objects_Build_id
*
* DESCRIPTION:
*
* This function builds an object's id from the processor node and index
* values specified.
*/
RTEMS_INLINE_ROUTINE Objects_Id _Objects_Build_id(
Objects_Classes the_class,
unsigned32 node,
unsigned32 index
)
{
return ( (the_class << OBJECTS_CLASS_START_BIT) |
(node << OBJECTS_NODE_START_BIT) |
(index << OBJECTS_INDEX_START_BIT) );
}
/*PAGE
*
* _Objects_Get_class
*
* DESCRIPTION:
*
* This function returns the class portion of the ID.
*/
RTEMS_INLINE_ROUTINE Objects_Classes _Objects_Get_class(
Objects_Id id
)
{
return (Objects_Classes)
((id >> OBJECTS_CLASS_START_BIT) & OBJECTS_CLASS_VALID_BITS);
}
/*PAGE
*
* _Objects_Get_node
*
* DESCRIPTION:
*
* This function returns the node portion of the ID.
*/
RTEMS_INLINE_ROUTINE unsigned32 _Objects_Get_node(
Objects_Id id
)
{
return (id >> OBJECTS_NODE_START_BIT) & OBJECTS_NODE_VALID_BITS;
}
/*PAGE
*
* _Objects_Get_index
*
* DESCRIPTION:
*
* This function returns the index portion of the ID.
*/
RTEMS_INLINE_ROUTINE unsigned32 _Objects_Get_index(
Objects_Id id
)
{
return (id >> OBJECTS_INDEX_START_BIT) & OBJECTS_INDEX_VALID_BITS;
}
/*PAGE
*
* _Objects_Is_class_valid
*
* DESCRIPTION:
*
* This function returns TRUE if the class is valid.
*/
RTEMS_INLINE_ROUTINE boolean _Objects_Is_class_valid(
Objects_Classes the_class
)
{
return the_class && the_class <= OBJECTS_CLASSES_LAST;
}
/*PAGE
*
* _Objects_Is_local_node
*
* DESCRIPTION:
*
* This function returns TRUE if the node is of the local object, and
* FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Objects_Is_local_node(
unsigned32 node
)
{
return ( node == _Objects_Local_node );
}
/*PAGE
*
* _Objects_Is_local_id
*
* DESCRIPTION:
*
* This function returns TRUE if the id is of a local object, and
* FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Objects_Is_local_id(
Objects_Id id
)
{
return _Objects_Is_local_node( _Objects_Get_node(id) );
}
/*PAGE
*
* _Objects_Are_ids_equal
*
* DESCRIPTION:
*
* This function returns TRUE if left and right are equal,
* and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Objects_Are_ids_equal(
Objects_Id left,
Objects_Id right
)
{
return ( left == right );
}
/*PAGE
*
* _Objects_Allocate
*
* DESCRIPTION:
*
* This function allocates a object control block from
* the inactive chain of free object control blocks.
*/
RTEMS_INLINE_ROUTINE Objects_Control *_Objects_Allocate(
Objects_Information *information
)
{
return (Objects_Control *) _Chain_Get( &information->Inactive );
}
/*PAGE
*
* _Objects_Free
*
* DESCRIPTION:
*
* This function frees a object control block to the
* inactive chain of free object control blocks.
*/
RTEMS_INLINE_ROUTINE void _Objects_Free(
Objects_Information *information,
Objects_Control *the_object
)
{
_Chain_Append( &information->Inactive, &the_object->Node );
}
/*PAGE
*
* _Objects_Open
*
* DESCRIPTION:
*
* This function places the_object control pointer and object name
* in the Local Pointer and Local Name Tables, respectively.
*/
RTEMS_INLINE_ROUTINE void _Objects_Open(
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
unsigned32 index;
index = _Objects_Get_index( the_object->id );
information->local_table[ index ] = the_object;
if ( information->is_string )
_Objects_Copy_name_string( name, the_object->name );
else
_Objects_Copy_name_raw( name, the_object->name, information->name_length );
}
/*PAGE
*
* _Objects_Close
*
* DESCRIPTION:
*
* This function removes the_object control pointer and object name
* in the Local Pointer and Local Name Tables.
*/
RTEMS_INLINE_ROUTINE void _Objects_Close(
Objects_Information *information,
Objects_Control *the_object
)
{
unsigned32 index;
index = _Objects_Get_index( the_object->id );
information->local_table[ index ] = (Objects_Control *) NULL;
_Objects_Clear_name( the_object->name, information->name_length );
}
#endif
/* end of include file */

View File

@@ -1,73 +0,0 @@
/* inline/objectmp.inl
*
* This include file contains the bodies of all inlined routines
* which deal with global objects.
*
* COPYRIGHT (c) 1989-1998.
* On-Line Applications Research Corporation (OAR).
* Copyright assigned to U.S. Government, 1994.
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.OARcorp.com/rtems/license.html.
*
* $Id$
*/
#ifndef __INLINE_MP_OBJECTS_inl
#define __INLINE_MP_OBJECTS_inl
/*PAGE
*
* _Objects_MP_Allocate_global_object
*
* DESCRIPTION:
*
* This function allocates a Global Object control block.
*/
RTEMS_INLINE_ROUTINE Objects_MP_Control *_Objects_MP_Allocate_global_object (
void
)
{
return (Objects_MP_Control *)
_Chain_Get( &_Objects_MP_Inactive_global_objects );
}
/*PAGE
*
* _Objects_MP_Free_global_object
*
* DESCRIPTION:
*
* This routine deallocates a Global Object control block.
*/
RTEMS_INLINE_ROUTINE void _Objects_MP_Free_global_object (
Objects_MP_Control *the_object
)
{
_Chain_Append(
&_Objects_MP_Inactive_global_objects,
&the_object->Object.Node
);
}
/*PAGE
*
* _Objects_MP_Is_null_global_object
*
* DESCRIPTION:
*
* This function returns whether the global object is NULL or not.
*/
RTEMS_INLINE_ROUTINE boolean _Objects_MP_Is_null_global_object (
Objects_MP_Control *the_object
)
{
return( the_object == NULL );
}
#endif
/* end of include file */

View File

@@ -1,247 +0,0 @@
/* priority.inl
*
* This file contains the static inline implementation of all inlined
* routines in the Priority 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 __PRIORITY_inl
#define __PRIORITY_inl
#include <rtems/score/bitfield.h>
/*PAGE
*
* _Priority_Handler_initialization
*
* DESCRIPTION:
*
* This routine performs the initialization necessary for this handler.
*/
RTEMS_INLINE_ROUTINE void _Priority_Handler_initialization( void )
{
unsigned32 index;
_Priority_Major_bit_map = 0;
for ( index=0 ; index <16 ; index++ )
_Priority_Bit_map[ index ] = 0;
}
/*PAGE
*
* _Priority_Is_valid
*
* DESCRIPTION:
*
* This function returns TRUE if the_priority if valid for a
* user task, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Priority_Is_valid (
Priority_Control the_priority
)
{
/*
* Since PRIORITY_MINIMUM is 0 and priorities are stored unsigned,
* then checking for less than 0 is unnecessary.
*/
return ( the_priority <= PRIORITY_MAXIMUM );
}
/*PAGE
*
* _Priority_Major
*
* DESCRIPTION:
*
* This function returns the major portion of the_priority.
*/
RTEMS_INLINE_ROUTINE unsigned32 _Priority_Major (
Priority_Control the_priority
)
{
return ( the_priority / 16 );
}
/*PAGE
*
* _Priority_Minor
*
* DESCRIPTION:
*
* This function returns the minor portion of the_priority.
*/
RTEMS_INLINE_ROUTINE unsigned32 _Priority_Minor (
Priority_Control the_priority
)
{
return ( the_priority % 16 );
}
#if ( CPU_USE_GENERIC_BITFIELD_CODE == TRUE )
/*PAGE
*
* _Priority_Mask
*
* DESCRIPTION:
*
* This function returns the mask associated with the major or minor
* number passed to it.
*/
RTEMS_INLINE_ROUTINE unsigned32 _Priority_Mask (
unsigned32 bit_number
)
{
return (0x8000 >> bit_number);
}
/*PAGE
*
* _Priority_Bits_index
*
* DESCRIPTION:
*
* This function translates the bit numbers returned by the bit scan
* of a priority bit field into something suitable for use as
* a major or minor component of a priority.
*/
RTEMS_INLINE_ROUTINE unsigned32 _Priority_Bits_index (
unsigned32 bit_number
)
{
return bit_number;
}
#endif
/*PAGE
*
* _Priority_Add_to_bit_map
*
* DESCRIPTION:
*
* This routine uses the_priority_map to update the priority
* bit maps to indicate that a thread has been readied.
*/
RTEMS_INLINE_ROUTINE void _Priority_Add_to_bit_map (
Priority_Information *the_priority_map
)
{
*the_priority_map->minor |= the_priority_map->ready_minor;
_Priority_Major_bit_map |= the_priority_map->ready_major;
}
/*PAGE
*
* _Priority_Remove_from_bit_map
*
* DESCRIPTION:
*
* This routine uses the_priority_map to update the priority
* bit maps to indicate that a thread has been removed from the
* ready state.
*/
RTEMS_INLINE_ROUTINE void _Priority_Remove_from_bit_map (
Priority_Information *the_priority_map
)
{
*the_priority_map->minor &= the_priority_map->block_minor;
if ( *the_priority_map->minor == 0 )
_Priority_Major_bit_map &= the_priority_map->block_major;
}
/*PAGE
*
* _Priority_Get_highest
*
* DESCRIPTION:
*
* This function returns the priority of the highest priority
* ready thread.
*/
RTEMS_INLINE_ROUTINE Priority_Control _Priority_Get_highest( void )
{
Priority_Bit_map_control minor;
Priority_Bit_map_control major;
_Bitfield_Find_first_bit( _Priority_Major_bit_map, major );
_Bitfield_Find_first_bit( _Priority_Bit_map[major], minor );
return (_Priority_Bits_index( major ) << 4) +
_Priority_Bits_index( minor );
}
/*PAGE
*
* _Priority_Initialize_information
*
* DESCRIPTION:
*
* This routine initializes the_priority_map so that it
* contains the information necessary to manage a thread
* at new_priority.
*/
RTEMS_INLINE_ROUTINE void _Priority_Initialize_information(
Priority_Information *the_priority_map,
Priority_Control new_priority
)
{
Priority_Bit_map_control major;
Priority_Bit_map_control minor;
Priority_Bit_map_control mask;
major = _Priority_Major( new_priority );
minor = _Priority_Minor( new_priority );
the_priority_map->minor =
&_Priority_Bit_map[ _Priority_Bits_index(major) ];
mask = _Priority_Mask( major );
the_priority_map->ready_major = mask;
the_priority_map->block_major = ~mask;
mask = _Priority_Mask( minor );
the_priority_map->ready_minor = mask;
the_priority_map->block_minor = ~mask;
}
/*PAGE
*
* _Priority_Is_group_empty
*
* DESCRIPTION:
*
* This function returns TRUE if the priority GROUP is empty, and
* FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Priority_Is_group_empty (
Priority_Control the_priority
)
{
return the_priority == 0;
}
#endif
/* end of include file */

View File

@@ -1,81 +0,0 @@
/* stack.inl
*
* This file contains the static inline implementation of the inlined
* routines from the Stack 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 __STACK_inl
#define __STACK_inl
/*PAGE
*
* _Stack_Initialize
*
* DESCRIPTION:
*
* This routine initializes the_stack record to indicate that
* size bytes of memory starting at starting_address have been
* reserved for a stack.
*/
RTEMS_INLINE_ROUTINE void _Stack_Initialize (
Stack_Control *the_stack,
void *starting_address,
unsigned32 size
)
{
the_stack->area = starting_address;
the_stack->size = size;
}
/*PAGE
*
* _Stack_Is_enough
*
* DESCRIPTION:
*
* This function returns TRUE if size bytes is enough memory for
* a valid stack area on this processor, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Stack_Is_enough (
unsigned32 size
)
{
return ( size >= STACK_MINIMUM_SIZE );
}
/*PAGE
*
* _Stack_Adjust_size
*
* DESCRIPTION:
*
* This function increases the stack size to insure that the thread
* has the desired amount of stack space after the initial stack
* pointer is determined based on alignment restrictions.
*
* NOTE:
*
* The amount of adjustment for alignment is CPU dependent.
*/
RTEMS_INLINE_ROUTINE unsigned32 _Stack_Adjust_size (
unsigned32 size
)
{
return size + CPU_STACK_ALIGNMENT;
}
#endif
/* end of include file */

View File

@@ -1,384 +0,0 @@
/* states.inl
*
* This file contains the macro implementation of the inlined
* routines associated with thread state information.
*
* COPYRIGHT (c) 1989-1998.
* On-Line Applications Research Corporation (OAR).
* Copyright assigned to U.S. Government, 1994.
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.OARcorp.com/rtems/license.html.
*
* $Id$
*/
#ifndef __STATES_inl
#define __STATES_inl
/*PAGE
*
* _States_Set
*
* DESCRIPTION:
*
* This function sets the given states_to_set into the current_state
* passed in. The result is returned to the user in current_state.
*/
RTEMS_INLINE_ROUTINE States_Control _States_Set (
States_Control states_to_set,
States_Control current_state
)
{
return (current_state | states_to_set);
}
/*PAGE
*
* _States_Clear
*
* DESCRIPTION:
*
* This function clears the given states_to_clear into the current_state
* passed in. The result is returned to the user in current_state.
*/
RTEMS_INLINE_ROUTINE States_Control _States_Clear (
States_Control states_to_clear,
States_Control current_state
)
{
return (current_state & ~states_to_clear);
}
/*PAGE
*
* _States_Is_ready
*
* DESCRIPTION:
*
* This function returns TRUE if the_states indicates that the
* state is READY, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _States_Is_ready (
States_Control the_states
)
{
return (the_states == STATES_READY);
}
/*PAGE
*
* _States_Is_only_dormant
*
* DESCRIPTION:
*
* This function returns TRUE if the DORMANT state is the ONLY state
* set in the_states, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _States_Is_only_dormant (
States_Control the_states
)
{
return (the_states == STATES_DORMANT);
}
/*PAGE
*
* _States_Is_dormant
*
* DESCRIPTION:
*
* This function returns TRUE if the DORMANT state is set in
* the_states, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _States_Is_dormant (
States_Control the_states
)
{
return (the_states & STATES_DORMANT);
}
/*PAGE
*
* _States_Is_suspended
*
* DESCRIPTION:
*
* This function returns TRUE if the SUSPENDED state is set in
* the_states, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _States_Is_suspended (
States_Control the_states
)
{
return (the_states & STATES_SUSPENDED);
}
/*PAGE
*
* _States_Is_Transient
*
* DESCRIPTION:
*
* This function returns TRUE if the TRANSIENT state is set in
* the_states, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _States_Is_transient (
States_Control the_states
)
{
return (the_states & STATES_TRANSIENT);
}
/*PAGE
*
* _States_Is_delaying
*
* DESCRIPTION:
*
* This function returns TRUE if the DELAYING state is set in
* the_states, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _States_Is_delaying (
States_Control the_states
)
{
return (the_states & STATES_DELAYING);
}
/*PAGE
*
* _States_Is_waiting_for_buffer
*
* DESCRIPTION:
*
* This function returns TRUE if the WAITING_FOR_BUFFER state is set in
* the_states, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _States_Is_waiting_for_buffer (
States_Control the_states
)
{
return (the_states & STATES_WAITING_FOR_BUFFER);
}
/*PAGE
*
* _States_Is_waiting_for_segment
*
* DESCRIPTION:
*
* This function returns TRUE if the WAITING_FOR_SEGMENT state is set in
* the_states, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _States_Is_waiting_for_segment (
States_Control the_states
)
{
return (the_states & STATES_WAITING_FOR_SEGMENT);
}
/*PAGE
*
* _States_Is_waiting_for_message
*
* DESCRIPTION:
*
* This function returns TRUE if the WAITING_FOR_MESSAGE state is set in
* the_states, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _States_Is_waiting_for_message (
States_Control the_states
)
{
return (the_states & STATES_WAITING_FOR_MESSAGE);
}
/*PAGE
*
* _States_Is_waiting_for_event
*
* DESCRIPTION:
*
* This function returns TRUE if the WAITING_FOR_EVENT state is set in
* the_states, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _States_Is_waiting_for_event (
States_Control the_states
)
{
return (the_states & STATES_WAITING_FOR_EVENT);
}
/*PAGE
*
* _States_Is_waiting_for_mutex
*
* DESCRIPTION:
*
* This function returns TRUE if the WAITING_FOR_MUTEX state
* is set in the_states, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _States_Is_waiting_for_mutex (
States_Control the_states
)
{
return (the_states & STATES_WAITING_FOR_MUTEX);
}
/*PAGE
*
* _States_Is_waiting_for_semaphore
*
* DESCRIPTION:
*
* This function returns TRUE if the WAITING_FOR_SEMAPHORE state
* is set in the_states, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _States_Is_waiting_for_semaphore (
States_Control the_states
)
{
return (the_states & STATES_WAITING_FOR_SEMAPHORE);
}
/*PAGE
*
* _States_Is_waiting_for_time
*
* DESCRIPTION:
*
* This function returns TRUE if the WAITING_FOR_TIME state is set in
* the_states, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _States_Is_waiting_for_time (
States_Control the_states
)
{
return (the_states & STATES_WAITING_FOR_TIME);
}
/*PAGE
*
* _States_Is_waiting_for_rpc_reply
*
* DESCRIPTION:
*
* This function returns TRUE if the WAITING_FOR_TIME state is set in
* the_states, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _States_Is_waiting_for_rpc_reply (
States_Control the_states
)
{
return (the_states & STATES_WAITING_FOR_RPC_REPLY);
}
/*PAGE
*
* _States_Is_waiting_for_period
*
* DESCRIPTION:
*
* This function returns TRUE if the WAITING_FOR_PERIOD state is set in
* the_states, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _States_Is_waiting_for_period (
States_Control the_states
)
{
return (the_states & STATES_WAITING_FOR_PERIOD);
}
/*PAGE
*
* _States_Is_locally_blocked
*
* DESCRIPTION:
*
* This function returns TRUE if one of the states which indicates
* that a task is blocked waiting for a local resource is set in
* the_states, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _States_Is_locally_blocked (
States_Control the_states
)
{
return (the_states & STATES_LOCALLY_BLOCKED);
}
/*PAGE
*
* _States_Is_waiting_on_thread_queue
*
* DESCRIPTION:
*
* This function returns TRUE if one of the states which indicates
* that a task is blocked waiting for a local resource is set in
* the_states, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _States_Is_waiting_on_thread_queue (
States_Control the_states
)
{
return (the_states & STATES_WAITING_ON_THREAD_QUEUE);
}
/*PAGE
*
* _States_Is_blocked
*
* DESCRIPTION:
*
* This function returns TRUE if one of the states which indicates
* that a task is blocked is set in the_states, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _States_Is_blocked (
States_Control the_states
)
{
return (the_states & STATES_BLOCKED);
}
/*PAGE
*
*
* _States_Are_set
*
* DESCRIPTION:
*
* This function returns TRUE if any of the states in the mask
* are set in the_states, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _States_Are_set (
States_Control the_states,
States_Control mask
)
{
return ( (the_states & mask) != STATES_READY);
}
#endif
/* end of include file */

View File

@@ -1,154 +0,0 @@
/* sysstates.inl
*
* This file contains the inline implementation of routines regarding the
* system state.
*
* COPYRIGHT (c) 1989-1998.
* On-Line Applications Research Corporation (OAR).
* Copyright assigned to U.S. Government, 1994.
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.OARcorp.com/rtems/license.html.
*
* $Id$
*/
#ifndef __SYSTEM_STATE_inl
#define __SYSTEM_STATE_inl
/*PAGE
*
* _System_state_Handler_initialization
*
* DESCRIPTION:
*
* This routine initializes the system state handler.
*/
RTEMS_INLINE_ROUTINE void _System_state_Handler_initialization (
boolean is_multiprocessing
)
{
_System_state_Current = SYSTEM_STATE_BEFORE_INITIALIZATION;
_System_state_Is_multiprocessing = is_multiprocessing;
}
/*PAGE
*
* _System_state_Set
*
* DESCRIPTION:
*
* This routine sets the current system state to that specified by
* the called.
*/
RTEMS_INLINE_ROUTINE void _System_state_Set (
System_state_Codes state
)
{
_System_state_Current = state;
}
/*PAGE
*
* _System_state_Get
*
* DESCRIPTION:
*
* This function returns the current system state.
*/
RTEMS_INLINE_ROUTINE System_state_Codes _System_state_Get ( void )
{
return _System_state_Current;
}
/*PAGE
*
* _System_state_Is_before_initialization
*
* DESCRIPTION:
*
* This function returns TRUE if the state is equal to the
* "before initialization" state, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _System_state_Is_before_initialization (
System_state_Codes state
)
{
return (state == SYSTEM_STATE_BEFORE_INITIALIZATION);
}
/*PAGE
*
* _System_state_Is_before_multitasking
*
* DESCRIPTION:
*
* This function returns TRUE if the state is equal to the
* "before multitasking" state, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _System_state_Is_before_multitasking (
System_state_Codes state
)
{
return (state == SYSTEM_STATE_BEFORE_MULTITASKING);
}
/*PAGE
*
* _System_state_Is_begin_multitasking
*
* DESCRIPTION:
*
* This function returns TRUE if the state is equal to the
* "begin multitasking" state, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _System_state_Is_begin_multitasking (
System_state_Codes state
)
{
return (state == SYSTEM_STATE_BEGIN_MULTITASKING);
}
/*PAGE
*
* _System_state_Is_up
*
* DESCRIPTION:
*
* This function returns TRUE if the state is equal to the
* "up" state, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _System_state_Is_up (
System_state_Codes state
)
{
return (state == SYSTEM_STATE_UP);
}
/*PAGE
*
* _System_state_Is_failed
*
* DESCRIPTION:
*
* This function returns TRUE if the state is equal to the
* "failed" state, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _System_state_Is_failed (
System_state_Codes state
)
{
return (state == SYSTEM_STATE_FAILED);
}
#endif
/* end of include file */

View File

@@ -1,404 +0,0 @@
/* thread.inl
*
* This file contains the macro implementation of the inlined
* routines from the Thread 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 __THREAD_inl
#define __THREAD_inl
/*PAGE
*
* _Thread_Stop_multitasking
*
* DESCRIPTION:
*
* This routine halts multitasking and returns control to
* the "thread" (i.e. the BSP) which initially invoked the
* routine which initialized the system.
*/
RTEMS_INLINE_ROUTINE void _Thread_Stop_multitasking( void )
{
_Context_Switch( &_Thread_Executing->Registers, &_Thread_BSP_context );
}
/*PAGE
*
* _Thread_Is_executing
*
* DESCRIPTION:
*
* This function returns TRUE if the_thread is the currently executing
* thread, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Thread_Is_executing (
Thread_Control *the_thread
)
{
return ( the_thread == _Thread_Executing );
}
/*PAGE
*
* _Thread_Is_heir
*
* DESCRIPTION:
*
* This function returns TRUE if the_thread is the heir
* thread, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Thread_Is_heir (
Thread_Control *the_thread
)
{
return ( the_thread == _Thread_Heir );
}
/*PAGE
*
* _Thread_Is_executing_also_the_heir
*
* DESCRIPTION:
*
* This function returns TRUE if the currently executing thread
* is also the heir thread, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Thread_Is_executing_also_the_heir( void )
{
return ( _Thread_Executing == _Thread_Heir );
}
/*PAGE
*
* _Thread_Resume
*
* DESCRIPTION:
*
* This routine clears the SUSPENDED state for the_thread. It performs
* any necessary scheduling operations including the selection of
* a new heir thread.
*/
RTEMS_INLINE_ROUTINE void _Thread_Resume (
Thread_Control *the_thread
)
{
_Thread_Clear_state( the_thread, STATES_SUSPENDED );
}
/*PAGE
*
* _Thread_Unblock
*
* DESCRIPTION:
*
* This routine clears any blocking state for the_thread. It performs
* any necessary scheduling operations including the selection of
* a new heir thread.
*/
RTEMS_INLINE_ROUTINE void _Thread_Unblock (
Thread_Control *the_thread
)
{
_Thread_Clear_state( the_thread, STATES_BLOCKED );
}
/*PAGE
*
* _Thread_Restart_self
*
* DESCRIPTION:
*
* This routine resets the current context of the calling thread
* to that of its initial state.
*/
RTEMS_INLINE_ROUTINE void _Thread_Restart_self( void )
{
if ( _Thread_Executing->fp_context != NULL )
_Context_Restore_fp( &_Thread_Executing->fp_context );
_CPU_Context_Restart_self( &_Thread_Executing->Registers );
}
/*PAGE
*
* _Thread_Calculate_heir
*
* DESCRIPTION:
*
* This function returns a pointer to the highest priority
* ready thread.
*/
RTEMS_INLINE_ROUTINE void _Thread_Calculate_heir( void )
{
_Thread_Heir = (Thread_Control *)
_Thread_Ready_chain[ _Priority_Get_highest() ].first;
}
/*PAGE
*
* _Thread_Is_allocated_fp
*
* DESCRIPTION:
*
* This function returns TRUE if the floating point context of
* the_thread is currently loaded in the floating point unit, and
* FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Thread_Is_allocated_fp (
Thread_Control *the_thread
)
{
return ( the_thread == _Thread_Allocated_fp );
}
/*PAGE
*
* _Thread_Deallocate_fp
*
* DESCRIPTION:
*
* This routine is invoked when the currently loaded floating
* point context is now longer associated with an active thread.
*/
RTEMS_INLINE_ROUTINE void _Thread_Deallocate_fp( void )
{
_Thread_Allocated_fp = NULL;
}
/*PAGE
*
* _Thread_Disable_dispatch
*
* DESCRIPTION:
*
* This routine prevents dispatching.
*/
RTEMS_INLINE_ROUTINE void _Thread_Disable_dispatch( void )
{
_Thread_Dispatch_disable_level += 1;
}
/*PAGE
*
* _Thread_Enable_dispatch
*
* DESCRIPTION:
*
* This routine allows dispatching to occur again. If this is
* the outer most dispatching critical section, then a dispatching
* operation will be performed and, if necessary, control of the
* processor will be transferred to the heir thread.
*/
#if ( CPU_INLINE_ENABLE_DISPATCH == TRUE )
RTEMS_INLINE_ROUTINE void _Thread_Enable_dispatch()
{
if ( (--_Thread_Dispatch_disable_level) == 0 )
_Thread_Dispatch();
}
#endif
#if ( CPU_INLINE_ENABLE_DISPATCH == FALSE )
void _Thread_Enable_dispatch( void );
#endif
/*PAGE
*
* _Thread_Unnest_dispatch
*
* DESCRIPTION:
*
* This routine allows dispatching to occur again. However,
* no dispatching operation is performed even if this is the outer
* most dispatching critical section.
*/
RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void )
{
_Thread_Dispatch_disable_level -= 1;
}
/*PAGE
*
* _Thread_Is_dispatching_enabled
*
* DESCRIPTION:
*
* This function returns TRUE if dispatching is disabled, and FALSE
* otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Thread_Is_dispatching_enabled( void )
{
return ( _Thread_Dispatch_disable_level == 0 );
}
/*PAGE
*
* _Thread_Is_context_switch_necessary
*
* DESCRIPTION:
*
* This function returns TRUE if dispatching is disabled, and FALSE
* otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Thread_Is_context_switch_necessary( void )
{
return ( _Context_Switch_necessary );
}
/*PAGE
*
* _Thread_Dispatch_initialization
*
* DESCRIPTION:
*
* This routine initializes the thread dispatching subsystem.
*/
RTEMS_INLINE_ROUTINE void _Thread_Dispatch_initialization( void )
{
_Thread_Dispatch_disable_level = 1;
}
/*PAGE
*
* _Thread_Is_null
*
* DESCRIPTION:
*
* This function returns TRUE if the_thread is NULL and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Thread_Is_null (
Thread_Control *the_thread
)
{
return ( the_thread == NULL );
}
/*PAGE
*
* _Thread_Get
*
* DESCRIPTION:
*
* This function maps thread IDs to thread control
* blocks. If ID corresponds to a local thread, then it
* returns the_thread control pointer which maps to ID
* and location is set to OBJECTS_LOCAL. If the thread ID is
* global and resides on a remote node, then location is set
* to OBJECTS_REMOTE, and the_thread is undefined.
* Otherwise, location is set to OBJECTS_ERROR and
* the_thread is undefined.
*
* NOTE: XXX... This routine may be able to be optimized.
*/
RTEMS_INLINE_ROUTINE Thread_Control *_Thread_Get (
Objects_Id id,
Objects_Locations *location
)
{
Objects_Classes the_class;
Objects_Information *information;
Thread_Control *tp = (Thread_Control *) 0;
if ( _Objects_Are_ids_equal( id, OBJECTS_ID_OF_SELF ) ) {
_Thread_Disable_dispatch();
*location = OBJECTS_LOCAL;
tp = _Thread_Executing;
goto done;
}
the_class = _Objects_Get_class( id );
if ( the_class > OBJECTS_CLASSES_LAST ) {
*location = OBJECTS_ERROR;
goto done;
}
information = _Objects_Information_table[ the_class ];
if ( !information || !information->is_thread ) {
*location = OBJECTS_ERROR;
goto done;
}
tp = (Thread_Control *) _Objects_Get( information, id, location );
done:
return tp;
}
/*
* _Thread_Is_proxy_blocking
*
* DESCRIPTION:
*
* This function returns TRUE if the status code is equal to the
* status which indicates that a proxy is blocking, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Thread_Is_proxy_blocking (
unsigned32 code
)
{
return (code == THREAD_STATUS_PROXY_BLOCKING);
}
/*PAGE
*
* _Thread_Internal_allocate
*
* DESCRIPTION:
*
* This routine allocates an internal thread.
*/
RTEMS_INLINE_ROUTINE Thread_Control *_Thread_Internal_allocate( void )
{
return (Thread_Control *) _Objects_Allocate( &_Thread_Internal_information );
}
/*PAGE
*
* _Thread_Internal_free
*
* DESCRIPTION:
*
* This routine frees an internal thread.
*/
RTEMS_INLINE_ROUTINE void _Thread_Internal_free (
Thread_Control *the_task
)
{
_Objects_Free( &_Thread_Internal_information, &the_task->Object );
}
#endif
/* end of include file */

View File

@@ -1,61 +0,0 @@
/* inline/threadmp.inl
*
* This include file contains the bodies of all inlined routines
* for the multiprocessing part of thread package.
*
* COPYRIGHT (c) 1989-1998.
* On-Line Applications Research Corporation (OAR).
* Copyright assigned to U.S. Government, 1994.
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.OARcorp.com/rtems/license.html.
*
* $Id$
*/
#ifndef __INLINE_MP_THREAD_inl
#define __INLINE_MP_THREAD_inl
/*PAGE
*
* _Thread_MP_Is_receive
*
* DESCRIPTION:
*
* This function returns true if the thread in question is the
* multiprocessing receive thread.
*/
RTEMS_INLINE_ROUTINE boolean _Thread_MP_Is_receive (
Thread_Control *the_thread
)
{
return the_thread == _Thread_MP_Receive;
}
/*PAGE
*
* _Thread_MP_Free_proxy
*
* DESCRIPTION:
*
* This routine frees a proxy control block to the
* inactive chain of free proxy control blocks.
*/
RTEMS_INLINE_ROUTINE void _Thread_MP_Free_proxy (
Thread_Control *the_thread
)
{
Thread_Proxy_control *the_proxy;
the_proxy = (Thread_Proxy_control *) the_thread;
_Chain_Extract( &the_proxy->Active );
_Chain_Append( &_Thread_MP_Inactive_proxies, &the_thread->Object.Node );
}
#endif
/* end of include file */

View File

@@ -1,67 +0,0 @@
/* tod.inl
*
* This file contains the static inline implementation of the inlined routines
* from the Time of Day Handler.
*
* COPYRIGHT (c) 1989-1998.
* On-Line Applications Research Corporation (OAR).
* Copyright assigned to U.S. Government, 1994.
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.OARcorp.com/rtems/license.html.
*
* $Id$
*/
#ifndef __TIME_OF_DAY_inl
#define __TIME_OF_DAY_inl
/*PAGE
*
* _TOD_Tickle_ticks
*
* DESCRIPTION:
*
* This routine increments the ticks field of the current time of
* day at each clock tick.
*/
RTEMS_INLINE_ROUTINE void _TOD_Tickle_ticks( void )
{
_TOD_Current.ticks += 1;
_Watchdog_Ticks_since_boot += 1;
}
/*PAGE
*
* _TOD_Deactivate
*
* DESCRIPTION:
*
* This routine deactivates updating of the current time of day.
*/
RTEMS_INLINE_ROUTINE void _TOD_Deactivate( void )
{
_Watchdog_Remove( &_TOD_Seconds_watchdog );
}
/*PAGE
*
* _TOD_Activate
*
* DESCRIPTION:
*
* This routine activates updating of the current time of day.
*/
RTEMS_INLINE_ROUTINE void _TOD_Activate(
Watchdog_Interval ticks
)
{
_Watchdog_Insert_ticks( &_TOD_Seconds_watchdog, ticks );
}
#endif
/* end of include file */

View File

@@ -1,73 +0,0 @@
/* tqdata.inl
*
* This file contains the static inline implementation of the inlined
* routines needed to support the Thread Queue Data.
*
* COPYRIGHT (c) 1989-1998.
* On-Line Applications Research Corporation (OAR).
* Copyright assigned to U.S. Government, 1994.
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.OARcorp.com/rtems/license.html.
*
* $Id$
*/
#ifndef __THREAD_QUEUE_DATA_inl
#define __THREAD_QUEUE_DATA_inl
/*PAGE
*
* _Thread_queue_Header_number
*
* DESCRIPTION:
*
* This function returns the index of the priority chain on which
* a thread of the_priority should be placed.
*/
RTEMS_INLINE_ROUTINE unsigned32 _Thread_queue_Header_number (
Priority_Control the_priority
)
{
return (the_priority / TASK_QUEUE_DATA_PRIORITIES_PER_HEADER);
}
/*PAGE
*
* _Thread_queue_Is_reverse_search
*
* DESCRIPTION:
*
* This function returns TRUE if the_priority indicates that the
* enqueue search should start at the front of this priority
* group chain, and FALSE if the search should start at the rear.
*/
RTEMS_INLINE_ROUTINE boolean _Thread_queue_Is_reverse_search (
Priority_Control the_priority
)
{
return ( the_priority & TASK_QUEUE_DATA_REVERSE_SEARCH_MASK );
}
/*PAGE
*
* _Thread_queue_Enter_critical_section
*
* DESCRIPTION:
*
* This routine is invoked to indicate that the specified thread queue is
* entering a critical section.
*/
RTEMS_INLINE_ROUTINE void _Thread_queue_Enter_critical_section (
Thread_queue_Control *the_thread_queue
)
{
the_thread_queue->sync_state = THREAD_QUEUE_NOTHING_HAPPENED;
}
#endif
/* end of include file */

View File

@@ -1,132 +0,0 @@
/* userext.inl
*
* This file contains the macro implementation of the inlined routines
* from the User Extension 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 __USER_EXTENSIONS_inl
#define __USER_EXTENSIONS_inl
#include <rtems/score/wkspace.h>
/*PAGE
*
* _User_extensions_Handler_initialization
*
* DESCRIPTION:
*
* This routine performs the initialization necessary for this handler.
*/
RTEMS_INLINE_ROUTINE void _User_extensions_Handler_initialization (
unsigned32 number_of_extensions,
User_extensions_Table *initial_extensions
)
{
User_extensions_Control *extension;
unsigned32 i;
_Chain_Initialize_empty( &_User_extensions_List );
if ( initial_extensions ) {
for (i=0 ; i<number_of_extensions ; i++ ) {
extension =
_Workspace_Allocate_or_fatal_error( sizeof(User_extensions_Control) );
extension->Callouts = initial_extensions[i];
_Chain_Append( &_User_extensions_List, &extension->Node );
}
}
}
/*PAGE
*
* _User_extensions_Add_set
*
* DESCRIPTION:
*
* This routine is used to add a user extension set to the active list.
*/
RTEMS_INLINE_ROUTINE void _User_extensions_Add_set (
User_extensions_Control *the_extension,
User_extensions_Table *extension_table
)
{
the_extension->Callouts = *extension_table;
_Chain_Append( &_User_extensions_List, &the_extension->Node );
}
/*PAGE
*
* _User_extensions_Add_API_set
* DESCRIPTION:
*
* This routine is used to add an API extension set to the active list.
*/
RTEMS_INLINE_ROUTINE void _User_extensions_Add_API_set (
User_extensions_Control *the_extension
)
{
_Chain_Prepend( &_User_extensions_List, &the_extension->Node );
}
/*PAGE
*
* _User_extensions_Remove_set
*
* DESCRIPTION:
*
* This routine is used to remove a user extension set from the active list.
*/
RTEMS_INLINE_ROUTINE void _User_extensions_Remove_set (
User_extensions_Control *the_extension
)
{
_Chain_Extract( &the_extension->Node );
}
/*PAGE
*
* _User_extensions_Thread_switch
*
* DESCRIPTION:
*
* This routine is used to invoke the user extension which
* is invoked when a context switch occurs.
*/
RTEMS_INLINE_ROUTINE void _User_extensions_Thread_switch (
Thread_Control *executing,
Thread_Control *heir
)
{
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _User_extensions_List.first ;
!_Chain_Is_tail( &_User_extensions_List, the_node ) ;
the_node = the_node->next ) {
the_extension = (User_extensions_Control *) the_node;
if ( the_extension->Callouts.thread_switch != NULL )
(*the_extension->Callouts.thread_switch)( executing, heir );
}
}
#endif
/* end of include file */

View File

@@ -1,324 +0,0 @@
/* watchdog.inl
*
* This file contains the static inline implementation of all inlined
* routines in the Watchdog 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 __WATCHDOG_inl
#define __WATCHDOG_inl
/*PAGE
*
* _Watchdog_Initialize
*
* DESCRIPTION:
*
* This routine initializes the specified watchdog. The watchdog is
* made inactive, the watchdog id and handler routine are set to the
* specified values.
*/
RTEMS_INLINE_ROUTINE void _Watchdog_Initialize(
Watchdog_Control *the_watchdog,
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
the_watchdog->id = id;
the_watchdog->user_data = user_data;
}
/*PAGE
*
* _Watchdog_Is_active
*
* DESCRIPTION:
*
* This routine returns TRUE if the watchdog timer is in the ACTIVE
* state, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Watchdog_Is_active(
Watchdog_Control *the_watchdog
)
{
return ( the_watchdog->state == WATCHDOG_ACTIVE );
}
/*PAGE
*
* _Watchdog_Activate
*
* DESCRIPTION:
*
* This routine activates THE_WATCHDOG timer which is already
* on a watchdog chain.
*/
RTEMS_INLINE_ROUTINE void _Watchdog_Activate(
Watchdog_Control *the_watchdog
)
{
the_watchdog->state = WATCHDOG_ACTIVE;
}
/*PAGE
*
* _Watchdog_Deactivate
*
* DESCRIPTION:
*
* This routine deactivates THE_WATCHDOG timer which will remain
* on a watchdog chain.
*/
RTEMS_INLINE_ROUTINE void _Watchdog_Deactivate(
Watchdog_Control *the_watchdog
)
{
the_watchdog->state = WATCHDOG_REMOVE_IT;
}
/*PAGE
*
* _Watchdog_Tickle_ticks
*
* DESCRIPTION:
*
* This routine is invoked at each clock tick to update the ticks
* watchdog chain.
*/
RTEMS_INLINE_ROUTINE void _Watchdog_Tickle_ticks( void )
{
_Watchdog_Tickle( &_Watchdog_Ticks_chain );
}
/*PAGE
*
* _Watchdog_Tickle_seconds
*
* DESCRIPTION:
*
* This routine is invoked at each clock tick to update the seconds
* watchdog chain.
*/
RTEMS_INLINE_ROUTINE void _Watchdog_Tickle_seconds( void )
{
_Watchdog_Tickle( &_Watchdog_Seconds_chain );
}
/*PAGE
*
* _Watchdog_Insert_ticks
*
* DESCRIPTION:
*
* This routine inserts THE_WATCHDOG into the ticks watchdog chain
* for a time of UNITS ticks. The INSERT_MODE indicates whether
* THE_WATCHDOG is to be activated automatically or later, explicitly
* by the caller.
*/
RTEMS_INLINE_ROUTINE void _Watchdog_Insert_ticks(
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
}
/*PAGE
*
* _Watchdog_Insert_seconds
*
* DESCRIPTION:
*
* This routine inserts THE_WATCHDOG into the seconds watchdog chain
* for a time of UNITS seconds. The INSERT_MODE indicates whether
* THE_WATCHDOG is to be activated automatically or later, explicitly
* by the caller.
*/
RTEMS_INLINE_ROUTINE void _Watchdog_Insert_seconds(
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
_Watchdog_Insert( &_Watchdog_Seconds_chain, the_watchdog );
}
/*PAGE
*
* _Watchdog_Adjust_seconds
*
* DESCRIPTION:
*
* This routine adjusts the seconds watchdog chain in the forward
* or backward DIRECTION for UNITS seconds. This is invoked when the
* current time of day is changed.
*/
RTEMS_INLINE_ROUTINE void _Watchdog_Adjust_seconds(
Watchdog_Adjust_directions direction,
Watchdog_Interval units
)
{
_Watchdog_Adjust( &_Watchdog_Seconds_chain, direction, units );
}
/*PAGE
*
* _Watchdog_Adjust_ticks
*
* DESCRIPTION:
*
* This routine adjusts the ticks watchdog chain in the forward
* or backward DIRECTION for UNITS ticks.
*/
RTEMS_INLINE_ROUTINE void _Watchdog_Adjust_ticks(
Watchdog_Adjust_directions direction,
Watchdog_Interval units
)
{
_Watchdog_Adjust( &_Watchdog_Ticks_chain, direction, units );
}
/*PAGE
*
* _Watchdog_Reset
*
* DESCRIPTION:
*
* This routine resets THE_WATCHDOG timer to its state at INSERT
* time. This routine is valid only on interval watchdog timers
* and is used to make an interval watchdog timer fire "every" so
* many ticks.
*/
RTEMS_INLINE_ROUTINE void _Watchdog_Reset(
Watchdog_Control *the_watchdog
)
{
(void) _Watchdog_Remove( the_watchdog );
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
}
/*PAGE
*
* _Watchdog_Next
*
* DESCRIPTION:
*
* This routine returns a pointer to the watchdog timer following
* THE_WATCHDOG on the watchdog chain.
*/
RTEMS_INLINE_ROUTINE Watchdog_Control *_Watchdog_Next(
Watchdog_Control *the_watchdog
)
{
return ( (Watchdog_Control *) the_watchdog->Node.next );
}
/*PAGE
*
* _Watchdog_Previous
*
* DESCRIPTION:
*
* This routine returns a pointer to the watchdog timer preceding
* THE_WATCHDOG on the watchdog chain.
*/
RTEMS_INLINE_ROUTINE Watchdog_Control *_Watchdog_Previous(
Watchdog_Control *the_watchdog
)
{
return ( (Watchdog_Control *) the_watchdog->Node.previous );
}
/*PAGE
*
* _Watchdog_First
*
* DESCRIPTION:
*
* This routine returns a pointer to the first watchdog timer
* on the watchdog chain HEADER.
*/
RTEMS_INLINE_ROUTINE Watchdog_Control *_Watchdog_First(
Chain_Control *header
)
{
return ( (Watchdog_Control *) header->first );
}
/*PAGE
*
* _Watchdog_Last
*
* DESCRIPTION:
*
* This routine returns a pointer to the last watchdog timer
* on the watchdog chain HEADER.
*/
RTEMS_INLINE_ROUTINE Watchdog_Control *_Watchdog_Last(
Chain_Control *header
)
{
return ( (Watchdog_Control *) header->last );
}
#endif
/* end of include file */

View File

@@ -1,57 +0,0 @@
/* wkspace.inl
*
* This include file contains the bodies of the routines which contains
* information related to the RAM Workspace.
*
* COPYRIGHT (c) 1989-1998.
* On-Line Applications Research Corporation (OAR).
* Copyright assigned to U.S. Government, 1994.
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.OARcorp.com/rtems/license.html.
*
* $Id$
*/
#ifndef __WORKSPACE_inl
#define __WORKSPACE_inl
/*PAGE
*
* _Workspace_Allocate
*
* DESCRIPTION:
*
* This routine returns the address of a block of memory of size
* bytes. If a block of the appropriate size cannot be allocated
* from the workspace, then NULL is returned.
*/
RTEMS_INLINE_ROUTINE void *_Workspace_Allocate(
unsigned32 size
)
{
return _Heap_Allocate( &_Workspace_Area, size );
}
/*PAGE
*
* _Workspace_Free
*
* DESCRIPTION:
*
* This function frees the specified block of memory. If the block
* belongs to the Workspace and can be successfully freed, then
* TRUE is returned. Otherwise FALSE is returned.
*/
RTEMS_INLINE_ROUTINE boolean _Workspace_Free(
void *block
)
{
return _Heap_Free( &_Workspace_Area, block );
}
#endif
/* end of include file */

View File

@@ -1,68 +0,0 @@
/* macros/address.h
*
* This include file contains the bodies of the routines
* about addresses 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 __MACROS_ADDRESSES_h
#define __MACROS_ADDRESSES_h
/*PAGE
*
* _Addresses_Add_offset
*
*/
#define _Addresses_Add_offset( _base, _offset ) \
((void *)((char *)(_base) + (_offset)))
/*PAGE
*
* _Addresses_Subtract_offset
*
*/
#define _Addresses_Subtract_offset( _base, _offset ) \
((void *)((char *)(_base) - (_offset)))
/*PAGE
*
* _Addresses_Subtract
*
* NOTE: The cast of an address to an unsigned32 makes this code
* dependent on an addresses being thirty two bits.
*/
#define _Addresses_Subtract( _left, _right ) \
((void *)(_left) - (void *)(_right))
/*PAGE
*
* _Addresses_Is_aligned
*
*/
#define _Addresses_Is_aligned( _address ) \
( ( (unsigned32)(_address) % 4 ) == 0 )
/*PAGE
*
* _Addresses_Is_in_range
*
*/
#define _Addresses_Is_in_range( _address, _base, _limit ) \
( (_address) >= (_base) && (_address) <= (_limit) )
#endif
/* end of include file */

View File

@@ -1,200 +0,0 @@
/* macros/chain.h
*
* This include file contains the bodies of the routines which are
* associated with doubly linked chains and 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 __MACROS_CHAIN_h
#define __MACROS_CHAIN_h
/*PAGE
*
* _Chain_Are_nodes_equal
*/
#define _Chain_Are_nodes_equal( _left, _right ) \
( (_left) == (_right) )
/*PAGE
*
* _Chain_Is_null
*/
#define _Chain_Is_null( _the_chain ) \
( (_the_chain) == NULL )
/*PAGE
*
* _Chain_Is_null_node
*/
#define _Chain_Is_null_node( _the_node ) \
( (_the_node) == NULL )
/*PAGE
*
* _Chain_Head
*/
#define _Chain_Head( _the_chain ) \
((Chain_Node *) (_the_chain))
/*PAGE
*
* _Chain_Tail
*/
#define _Chain_Tail( _the_chain ) \
((Chain_Node *) &(_the_chain)->permanent_null)
/*PAGE
*
* _Chain_Is_empty
*/
#define _Chain_Is_empty( _the_chain ) \
( (_the_chain)->first == _Chain_Tail( (_the_chain) ) )
/*PAGE
*
* _Chain_Is_first
*/
#define _Chain_Is_first( _the_node ) \
( (the_node)->previous == NULL )
/*PAGE
*
* _Chain_Is_last
*/
#define _Chain_Is_last( _the_node ) \
( (_the_node)->next == NULL )
/*PAGE
*
* _Chain_Has_only_one_node
*/
#define _Chain_Has_only_one_node( _the_chain ) \
( (_the_chain)->first == (_the_chain)->last )
/*PAGE
*
* _Chain_Is_head
*/
#define _Chain_Is_head( _the_chain, _the_node ) \
( (_the_node) == _Chain_Head( (_the_chain) ) )
/*PAGE
*
* _Chain_Is_tail
*/
#define _Chain_Is_tail( _the_chain, _the_node ) \
( (_the_node) == _Chain_Tail( (_the_chain) ) )
/*PAGE
*
* Chain_Initialize_empty
*/
#define _Chain_Initialize_empty( _the_chain ) \
{ \
(_the_chain)->first = _Chain_Tail( (_the_chain) ); \
(_the_chain)->permanent_null = NULL; \
(_the_chain)->last = _Chain_Head( (_the_chain) ); \
}
/*PAGE
*
* _Chain_Extract_unprotected
*/
#define _Chain_Extract_unprotected( _the_node ) \
{ \
Chain_Node *_next; \
Chain_Node *_previous; \
\
_next = (_the_node)->next; \
_previous = (_the_node)->previous; \
_next->previous = _previous; \
_previous->next = _next; \
}
/*PAGE
*
* _Chain_Get_unprotected
*/
/*PAGE
*
* Chain_Get_unprotected
*/
#define _Chain_Get_unprotected( _the_chain ) \
(( !_Chain_Is_empty( (_the_chain) ) ) \
? _Chain_Get_first_unprotected( (_the_chain) ) \
: NULL)
/*PAGE
*
* _Chain_Insert_unprotected
*/
#define _Chain_Insert_unprotected( _after_node, _the_node ) \
do { \
Chain_Node *_before_node; \
\
(_the_node)->previous = (_after_node); \
_before_node = (_after_node)->next; \
(_after_node)->next = (_the_node); \
(_the_node)->next = _before_node; \
_before_node->previous = (_the_node); \
} while (0)
/*PAGE
*
* _Chain_Append_unprotected
*/
#define _Chain_Append_unprotected( _the_chain, _the_node ) \
{ \
Chain_Node *_old_last_node; \
\
(_the_node)->next = _Chain_Tail( (_the_chain) ); \
_old_last_node = (_the_chain)->last; \
(_the_chain)->last = (_the_node); \
_old_last_node->next = (_the_node); \
(_the_node)->previous = _old_last_node; \
}
/*PAGE
*
* _Chain_Prepend_unprotected
*/
#define _Chain_Prepend_unprotected( _the_chain, _the_node ) \
_Chain_Insert_unprotected( _Chain_Head( (_the_chain) ), (_the_node) )
/*PAGE
*
* _Chain_Prepend
*/
#define _Chain_Prepend( _the_chain, _the_node ) \
_Chain_Insert( _Chain_Head( (_the_chain) ), (_the_node) )
#endif
/* end of include file */

View File

@@ -1,143 +0,0 @@
/* coremsg.inl
*
* This include file contains the macro implementation of all
* inlined routines in the Core Message 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 __CORE_MESSAGE_QUEUE_inl
#define __CORE_MESSAGE_QUEUE_inl
/*PAGE
*
* _CORE_message_queue_Send
*
*/
#define _CORE_message_queue_Send( _the_message_queue, _buffer, _size, \
_id, _api_message_queue_mp_support ) \
_CORE_message_queue_Submit( (_the_message_queue), (_buffer), (_size), \
(_id), (_api_message_queue_mp_support), CORE_MESSAGE_QUEUE_SEND_REQUEST )
/*PAGE
*
* _CORE_message_queue_Urgent
*
*/
#define _CORE_message_queue_Urgent( _the_message_queue, _buffer, _size, \
_id, _api_message_queue_mp_support ) \
_CORE_message_queue_Submit( (_the_message_queue), (_buffer), (_size), \
(_id), (_api_message_queue_mp_support), CORE_MESSAGE_QUEUE_URGENT_REQUEST )
/*PAGE
*
* _CORE_message_queue_Copy_buffer
*/
#define _CORE_message_queue_Copy_buffer( _source, _destination, _size ) \
memcpy( _destination, _source, _size)
/*PAGE
*
* _CORE_message_queue_Allocate_message_buffer
*
*/
#define _CORE_message_queue_Allocate_message_buffer( _the_message_queue ) \
(CORE_message_queue_Buffer_control *) \
_Chain_Get( &(_the_message_queue)->Inactive_messages )
/*PAGE
*
* _CORE_message_queue_Free_message_buffer
*
*/
#define _CORE_message_queue_Free_message_buffer( _the_message_queue, _the_message ) \
_Chain_Append( \
&(_the_message_queue)->Inactive_messages, \
&(_the_message)->Node \
)
/*PAGE
*
* _CORE_message_queue_Is_priority
*
*/
#define _CORE_message_queue_Is_priority( _the_attribute ) \
((_the_attribute)->discipline == CORE_MESSAGE_QUEUE_DISCIPLINES_PRIORITY)
/*PAGE
*
* _CORE_message_queue_Get_pending_message
*
*/
#define _CORE_message_queue_Get_pending_message( _the_message_queue ) \
(CORE_message_queue_Buffer_control *) \
_Chain_Get_unprotected( &(_the_message_queue)->Pending_messages )
/*PAGE
*
* _CORE_message_queue_Append
*
*/
#define _CORE_message_queue_Append( _the_message_queue, _the_message ) \
_Chain_Append( &(_the_message_queue)->Pending_messages, \
&(_the_message)->Node )
/*PAGE
*
* _CORE_message_queue_Prepend
*
*/
#define _CORE_message_queue_Prepend( _the_message_queue, _the_message ) \
_Chain_Prepend( &(_the_message_queue)->Pending_messages, \
&(_the_message)->Node )
/*PAGE
*
* _CORE_message_queue_Is_null
*
*/
#define _CORE_message_queue_Is_null( _the_message_queue ) \
( (_the_message_queue) == NULL )
/*PAGE
*
* _CORE_message_queue_Is_notify_enabled
*
*/
#define _CORE_message_queue_Is_notify_enabled( _the_message_queue ) \
( (_the_message_queue)->notify_handler != NULL )
/*PAGE
*
* _CORE_message_queue_Set_notify
*
*/
#define _CORE_message_queue_Set_notify( \
_the_message_queue, _the_handler, _the_argument ) \
do { \
(_the_message_queue)->notify_handler = (_the_handler); \
(_the_message_queue)->notify_argument = (_the_argument); \
} while ( 0 )
#endif
/* end of include file */

View File

@@ -1,77 +0,0 @@
/* macros/coremutex.h
*
* This include file contains all of the inlined routines associated
* with core mutexes.
*
* 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_CORE_MUTEX_h
#define __MACROS_CORE_MUTEX_h
/*PAGE
*
* _CORE_mutex_Is_locked
*
*/
#define _CORE_mutex_Is_locked( _the_mutex ) \
( (_the_mutex)->lock == CORE_MUTEX_LOCKED )
/*PAGE
*
* _CORE_mutex_Is_fifo
*
*/
#define _CORE_mutex_Is_fifo( _the_attribute ) \
( (_the_attribute)->discipline == CORE_MUTEX_DISCIPLINES_FIFO )
/*PAGE
*
* _CORE_mutex_Is_priority
*
*/
#define _CORE_mutex_Is_priority( _the_attribute ) \
( (_the_attribute)->discipline == CORE_MUTEX_DISCIPLINES_PRIORITY )
/*PAGE
*
* _CORE_mutex_Is_inherit_priority
*
*/
#define _CORE_mutex_Is_inherit_priority( _the_attribute ) \
( (_the_attribute)->discipline == \
CORE_MUTEX_DISCIPLINES_PRIORITY_INHERIT )
/*PAGE
*
* _CORE_mutex_Is_priority_ceiling
*
*/
#define _CORE_mutex_Is_priority_ceiling( _the_attribute )\
( (_the_attribute)->discipline == CORE_MUTEX_DISCIPLINES_PRIORITY_CEILING )
/*PAGE
*
* _CORE_mutex_Is_nesting_allowed
*
*/
#define _CORE_mutex_Is_nesting_allowed( _the_attribute ) \
( (_the_attribute)->allow_nesting == TRUE )
#endif
/* end of include file */

View File

@@ -1,40 +0,0 @@
/* macros/coresem.h
*
* This include file contains all of the inlined routines associated
* with core semaphores.
*
* 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_CORE_SEMAPHORE_h
#define __MACROS_CORE_SEMAPHORE_h
/*PAGE
*
* _CORE_semaphore_Is_priority
*
*/
#define _CORE_semaphore_Is_priority( _the_attribute ) \
( (_the_attribute)->discipline == CORE_SEMAPHORE_DISCIPLINES_PRIORITY )
/*PAGE
*
* _Core_semaphore_Get_count
*
*/
#define _Core_semaphore_Get_count( _the_semaphore ) \
( (_the_semaphore)->count )
#endif
/* end of include file */

View File

@@ -1,150 +0,0 @@
/* heap.inl
*
* This file contains the macro implementation of the inlined
* routines from the heap 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 __HEAP_inl
#define __HEAP_inl
#include <rtems/score/address.h>
/*PAGE
*
* _Heap_Head
*/
#define _Heap_Head( _the_heap ) \
((Heap_Block *)&(_the_heap)->start)
/*PAGE
*
* _Heap_Tail
*/
#define _Heap_Tail( _the_heap ) \
((Heap_Block *)&(_the_heap)->final)
/*PAGE
*
* _Heap_Previous_block
*/
#define _Heap_Previous_block( _the_block ) \
( (Heap_Block *) _Addresses_Subtract_offset( \
(void *)(_the_block), \
(_the_block)->back_flag & ~ HEAP_BLOCK_USED \
) \
)
/*PAGE
*
* _Heap_Next_block
*/
#define _Heap_Next_block( _the_block ) \
( (Heap_Block *) _Addresses_Add_offset( \
(void *)(_the_block), \
(_the_block)->front_flag & ~ HEAP_BLOCK_USED \
) \
)
/*PAGE
*
* _Heap_Block_at
*/
#define _Heap_Block_at( _base, _offset ) \
( (Heap_Block *) \
_Addresses_Add_offset( (void *)(_base), (_offset) ) )
/*PAGE
*
* _Heap_User_block_at
*
*/
#define _Heap_User_block_at( _base ) \
_Heap_Block_at( \
(_base), \
-*(((unsigned32 *) (_base)) - 1) + -HEAP_BLOCK_USED_OVERHEAD \
)
/*PAGE
*
* _Heap_Is_previous_block_free
*/
#define _Heap_Is_previous_block_free( _the_block ) \
( !((_the_block)->back_flag & HEAP_BLOCK_USED) )
/*PAGE
*
* _Heap_Is_block_free
*/
#define _Heap_Is_block_free( _the_block ) \
( !((_the_block)->front_flag & HEAP_BLOCK_USED) )
/*PAGE
*
* _Heap_Is_block_used
*/
#define _Heap_Is_block_used( _the_block ) \
((_the_block)->front_flag & HEAP_BLOCK_USED)
/*PAGE
*
* _Heap_Block_size
*/
#define _Heap_Block_size( _the_block ) \
((_the_block)->front_flag & ~HEAP_BLOCK_USED)
/*PAGE
*
* _Heap_Start_of_user_area
*/
#define _Heap_Start_of_user_area( _the_block ) \
((void *) &(_the_block)->next)
/*PAGE
*
* _Heap_Is_block_in
*/
#define _Heap_Is_block_in( _the_heap, _the_block ) \
( ((_the_block) >= (_the_heap)->start) && \
((_the_block) <= (_the_heap)->final) )
/*PAGE
*
* _Heap_Is_page_size_valid
*/
#define _Heap_Is_page_size_valid( _page_size ) \
( ((_page_size) != 0) && \
(((_page_size) % CPU_HEAP_ALIGNMENT) == 0) )
/*PAGE
*
* _Heap_Build_flag
*/
#define _Heap_Build_flag( _size, _in_use_flag ) \
( (_size) | (_in_use_flag))
#endif
/* end of include file */

View File

@@ -1,48 +0,0 @@
/* isr.inl
*
* This include file contains the macro implementation of all
* inlined routines in the Interrupt 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 __ISR_inl
#define __ISR_inl
/*PAGE
*
* _ISR_Is_in_progress
*
*/
#define _ISR_Is_in_progress() \
(_ISR_Nest_level != 0)
/*PAGE
*
* _ISR_Is_vector_number_valid
*
*/
#define _ISR_Is_vector_number_valid( _vector ) \
( (_vector) <= CPU_INTERRUPT_MAXIMUM_VECTOR_NUMBER )
/*PAGE
*
* _ISR_Is_valid_user_handler
*
*/
#define _ISR_Is_valid_user_handler( _handler ) \
((_handler) != NULL)
#endif
/* end of include file */

View File

@@ -1,41 +0,0 @@
/* macros/mppkt.h
*
* This package is the implementation of the Packet Handler
* routines 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 __MACROS_MP_PACKET_h
#define __MACROS_MP_PACKET_h
/*PAGE
*
* _Mp_packet_Is_valid_packet_class
*
* NOTE: Check for lower bounds (MP_PACKET_CLASSES_FIRST ) is unnecessary
* because this enum starts at lower bound of zero.
*/
#define _Mp_packet_Is_valid_packet_class( _the_packet_class ) \
( (_the_packet_class) <= MP_PACKET_CLASSES_LAST )
/*PAGE
*
* _Mp_packet_Is_null
*
*/
#define _Mp_packet_Is_null ( _the_packet ) \
( (_the_packet) == NULL )
#endif
/* end of include file */

View File

@@ -1,148 +0,0 @@
/* object.inl
*
* This include file contains the macro implementation of all
* of the inlined routines in the Object 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 __OBJECTS_inl
#define __OBJECTS_inl
/*PAGE
*
* _Objects_Build_id
*
*/
#define _Objects_Build_id( _the_class, _node, _index ) \
( ((_the_class) << OBJECTS_CLASS_START_BIT) | \
((_node) << OBJECTS_NODE_START_BIT) | \
((_index) << OBJECTS_INDEX_START_BIT) )
/*PAGE
*
* _Objects_Get_class
*/
#define _Objects_Get_class( _id ) \
(Objects_Classes) \
(((_id) >> OBJECTS_CLASS_START_BIT) & OBJECTS_CLASS_VALID_BITS)
/*PAGE
*
* _Objects_Get_node
*
*/
#define _Objects_Get_node( _id ) \
(((_id) >> OBJECTS_NODE_START_BIT) & OBJECTS_NODE_VALID_BITS)
/*PAGE
*
* _Objects_Get_index
*
*/
#define _Objects_Get_index( _id ) \
(((_id) >> OBJECTS_INDEX_START_BIT) & OBJECTS_INDEX_VALID_BITS)
/*PAGE
*
* _Objects_Is_class_valid
*
*/
#define _Objects_Is_class_valid( _the_class ) \
( (_the_class) && (_the_class) <= OBJECTS_CLASSES_LAST )
/*PAGE
*
* _Objects_Is_local_node
*
*/
#define _Objects_Is_local_node( _node ) \
( (_node) == _Objects_Local_node )
/*PAGE
*
* _Objects_Is_local_id
*
*/
#define _Objects_Is_local_id( _id ) \
_Objects_Is_local_node( _Objects_Get_node(_id) )
/*PAGE
*
* _Objects_Are_ids_equal
*
*/
#define _Objects_Are_ids_equal( _left, _right ) \
( (_left) == (_right) )
/*PAGE
*
* _Objects_Allocate
*
*/
#define _Objects_Allocate( _information ) \
(Objects_Control *) _Chain_Get( &(_information)->Inactive )
/*PAGE
*
* _Objects_Free
*
*/
#define _Objects_Free( _information, _the_object ) \
_Chain_Append( &(_information)->Inactive, &(_the_object)->Node )
/*PAGE
*
* _Objects_Open
*
*/
#define _Objects_Open( _information, _the_object, _name ) \
{ \
unsigned32 _index; \
\
_index = _Objects_Get_index( (_the_object)->id ); \
(_information)->local_table[ _index ] = (_the_object); \
\
if ( (_information)->is_string ) \
_Objects_Copy_name_string( (_name), (_the_object)->name ); \
else \
_Objects_Copy_name_raw( \
(_name), (_the_object)->name, (_information)->name_length ); \
}
/*PAGE
*
* _Objects_Close
*
*/
#define _Objects_Close( _information, _the_object ) \
{ \
unsigned32 _index; \
\
_index = _Objects_Get_index( (_the_object)->id ); \
(_information)->local_table[ _index ] = (Objects_Control *) NULL; \
_Objects_Clear_name( (_the_object)->name, (_information)->name_length ); \
}
#endif
/* end of include file */

View File

@@ -1,50 +0,0 @@
/* macros/objectmp.inl
*
* This include file contains the bodies of all inlined routines
* which deal with global objects.
*
* COPYRIGHT (c) 1989-1998.
* On-Line Applications Research Corporation (OAR).
* Copyright assigned to U.S. Government, 1994.
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.OARcorp.com/rtems/license.html.
*
* $Id$
*/
#ifndef __MACROS_MP_OBJECTS_inl
#define __MACROS_MP_OBJECTS_inl
/*PAGE
*
* _Objects_MP_Allocate_global_object
*
*/
#define _Objects_MP_Allocate_global_object() \
(Objects_MP_Control *) \
_Chain_Get( &_Objects_MP_Inactive_global_objects )
/*PAGE
* _Objects_MP_Free_global_object
*
*/
#define _Objects_MP_Free_global_object( _the_object ) \
_Chain_Append( \
&_Objects_MP_Inactive_global_objects, \
&(_the_object)->Object.Node \
)
/*PAGE
* _Objects_MP_Is_null_global_object
*
*/
#define _Objects_MP_Is_null_global_object( _the_object ) \
( (_the_object) == NULL )
#endif
/* end of include file */

View File

@@ -1,170 +0,0 @@
/* priority.inl
*
* This file contains the macro implementation of all inlined routines
* in the Priority 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 __PRIORITY_inl
#define __PRIORITY_inl
#include <rtems/score/bitfield.h>
/*PAGE
*
* _Priority_Handler_initialization
*
*/
#define _Priority_Handler_initialization() \
{ \
unsigned32 index; \
\
_Priority_Major_bit_map = 0; \
for ( index=0 ; index <16 ; index++ ) \
_Priority_Bit_map[ index ] = 0; \
}
/*PAGE
*
* _Priority_Is_valid
*
*/
/*
* Since PRIORITY_MINIMUM is 0 and priorities are stored unsigned,
* then checking for less than 0 is unnecessary.
*/
#define _Priority_Is_valid( _the_priority ) \
( (_the_priority) <= PRIORITY_MAXIMUM )
/*PAGE
*
* _Priority_Major
*
*/
#define _Priority_Major( _the_priority ) ( (_the_priority) / 16 )
/*PAGE
*
* _Priority_Minor
*
*/
#define _Priority_Minor( _the_priority ) ( (_the_priority) % 16 )
#if ( CPU_USE_GENERIC_BITFIELD_CODE == TRUE )
/*PAGE
*
* _Priority_Mask
*
*/
#define _Priority_Mask( _bit_number ) \
(0x8000 >> _bit_number)
/*PAGE
*
* _Priority_Bits_index
*
*/
#define _Priority_Bits_index( _bit_number ) \
(_bit_number)
#endif
/*PAGE
*
* _Priority_Add_to_bit_map
*
*/
#define _Priority_Add_to_bit_map( _the_priority_map ) \
{ \
*(_the_priority_map)->minor |= (_the_priority_map)->ready_minor; \
_Priority_Major_bit_map |= (_the_priority_map)->ready_major; \
}
/*PAGE
*
* _Priority_Remove_from_bit_map
*
*/
#define _Priority_Remove_from_bit_map( _the_priority_map ) \
{ \
*(_the_priority_map)->minor &= (_the_priority_map)->block_minor; \
if ( *(_the_priority_map)->minor == 0 ) \
_Priority_Major_bit_map &= (_the_priority_map)->block_major; \
}
/*PAGE
*
* _Priority_Get_highest
*
*/
#define _Priority_Get_highest( _high_priority ) \
{ \
Priority_Bit_map_control minor; \
Priority_Bit_map_control major; \
\
_Bitfield_Find_first_bit( _Priority_Major_bit_map, major ); \
_Bitfield_Find_first_bit( _Priority_Bit_map[major], minor ); \
\
(_high_priority) = (_Priority_Bits_index( major ) * 16) + \
_Priority_Bits_index( minor ); \
}
/*PAGE
*
* _Priority_Initialize_information
*
*/
#define _Priority_Initialize_information( \
_the_priority_map, _new_priority ) \
{ \
Priority_Bit_map_control _major; \
Priority_Bit_map_control _minor; \
Priority_Bit_map_control _mask; \
\
_major = _Priority_Major( (_new_priority) ); \
_minor = _Priority_Minor( (_new_priority) ); \
\
(_the_priority_map)->minor = \
&_Priority_Bit_map[ _Priority_Bits_index(_major) ]; \
\
_mask = _Priority_Mask( _major ); \
(_the_priority_map)->ready_major = _mask; \
(_the_priority_map)->block_major = ~_mask; \
\
_mask = _Priority_Mask( _minor ); \
(_the_priority_map)->ready_minor = _mask; \
(_the_priority_map)->block_minor = ~_mask; \
}
/*PAGE
*
* _Priority_Is_group_empty
*
*/
#define _Priority_Is_group_empty ( _the_priority ) \
( (_the_priority) == 0 )
#endif
/* end of include file */

View File

@@ -1,50 +0,0 @@
/* stack.inl
*
* This file contains the macro implementation of the inlined
* routines from the Stack 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 __STACK_inl
#define __STACK_inl
/*PAGE
*
* _Stack_Initialize
*
*/
#define _Stack_Initialize( _the_stack, _starting_address, _size ) \
{ \
(_the_stack)->area = (_starting_address); \
(_the_stack)->size = (_size); \
}
/*PAGE
*
* _Stack_Is_enough
*
*/
#define _Stack_Is_enough( _size ) \
( (_size) >= STACK_MINIMUM_SIZE )
/*PAGE
*
* _Stack_Adjust_size
*/
#define _Stack_Adjust_size( _size ) \
((_size) + CPU_STACK_ALIGNMENT)
#endif
/* end of include file */

View File

@@ -1,210 +0,0 @@
/* states.inl
*
* This file contains the macro implementation of the inlined
* routines associated with thread state information.
*
* COPYRIGHT (c) 1989-1998.
* On-Line Applications Research Corporation (OAR).
* Copyright assigned to U.S. Government, 1994.
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.OARcorp.com/rtems/license.html.
*
* $Id$
*/
#ifndef __STATES_inl
#define __STATES_inl
/*PAGE
*
* _States_Set
*
*/
#define _States_Set( _states_to_set, _current_state ) \
((_current_state) | (_states_to_set))
/*PAGE
*
* _States_Clear
*
*/
#define _States_Clear( _states_to_clear, _current_state ) \
((_current_state) & ~(_states_to_clear))
/*PAGE
*
* _States_Is_ready
*
*/
#define _States_Is_ready( _the_states ) \
( (_the_states) == STATES_READY )
/*PAGE
*
* _States_Is_only_dormant
*
*/
#define _States_Is_only_dormant( _the_states ) \
( (_the_states) == STATES_DORMANT )
/*PAGE
*
* _States_Is_dormant
*
*/
#define _States_Is_dormant( _the_states ) \
( (_the_states) & STATES_DORMANT )
/*PAGE
*
* _States_Is_suspended
*
*/
#define _States_Is_suspended( _the_states ) \
( (_the_states) & STATES_SUSPENDED )
/*PAGE
*
* _States_Is_Transient
*
*/
#define _States_Is_transient( _the_states ) \
( (_the_states) & STATES_TRANSIENT )
/*PAGE
*
* _States_Is_delaying
*
*/
#define _States_Is_delaying( _the_states ) \
( (_the_states) & STATES_DELAYING )
/*PAGE
*
* _States_Is_waiting_for_buffer
*
*/
#define _States_Is_waiting_for_buffer( _the_states ) \
( (_the_states) & STATES_WAITING_FOR_BUFFER )
/*PAGE
*
* _States_Is_waiting_for_segment
*
*/
#define _States_Is_waiting_for_segment( _the_states ) \
( (_the_states) & STATES_WAITING_FOR_SEGMENT )
/*PAGE
*
* _States_Is_waiting_for_message
*
*/
#define _States_Is_waiting_for_message( _the_states ) \
( (_the_states) & STATES_WAITING_FOR_MESSAGE )
/*PAGE
*
* _States_Is_waiting_for_event
*
*/
#define _States_Is_waiting_for_event( _the_states ) \
( (_the_states) & STATES_WAITING_FOR_EVENT )
/*PAGE
*
* _States_Is_waiting_for_mutex
*
*/
#define _States_Is_waiting_for_mutex( _the_states ) \
( (_the_states) & STATES_WAITING_FOR_MUTEX )
/*PAGE
*
* _States_Is_waiting_for_semaphore
*
*/
#define _States_Is_waiting_for_semaphore( _the_states ) \
( (_the_states) & STATES_WAITING_FOR_SEMAPHORE )
/*PAGE
*
* _States_Is_waiting_for_time
*
*/
#define _States_Is_waiting_for_time( _the_states ) \
( (_the_states) & STATES_WAITING_FOR_TIME )
/*PAGE
*
* _States_Is_waiting_for_rpc_reply
*
*/
#define _States_Is_waiting_for_rpc_reply( _the_states ) \
( (_the_states) & STATES_WAITING_FOR_RPC_REPLY )
/*PAGE
*
* _States_Is_waiting_for_period
*
*/
#define _States_Is_waiting_for_period( _the_states ) \
( (_the_states) & STATES_WAITING_FOR_PERIOD )
/*PAGE
*
* _States_Is_locally_blocked
*
*/
#define _States_Is_locally_blocked( _the_states ) \
( (_the_states) & STATES_LOCALLY_BLOCKED )
/*PAGE
*
* _States_Is_waiting_on_thread_queue
*
*/
#define _States_Is_waiting_on_thread_queue( _the_states ) \
( (_the_states) & STATES_WAITING_ON_THREAD_QUEUE )
/*PAGE
*
* _States_Is_blocked
*
*/
#define _States_Is_blocked( _the_states ) \
( (_the_states) & STATES_BLOCKED )
/*PAGE
*
* _States_Are_set
*
*/
#define _States_Are_set( _the_states, _mask ) \
( ((_the_states) & (_mask)) != STATES_READY )
#endif
/* end of include file */

View File

@@ -1,90 +0,0 @@
/* sysstates.inl
*
* This file contains the macro implementation of routines regarding the
* system state.
*
* COPYRIGHT (c) 1989-1998.
* On-Line Applications Research Corporation (OAR).
* Copyright assigned to U.S. Government, 1994.
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.OARcorp.com/rtems/license.html.
*
* $Id$
*/
#ifndef __SYSTEM_STATE_inl
#define __SYSTEM_STATE_inl
/*PAGE
*
* _System_state_Handler_initialization
*/
#define _System_state_Handler_initialization( _is_multiprocessing ) \
do { \
_System_state_Current = SYSTEM_STATE_BEFORE_INITIALIZATION; \
_System_state_Is_multiprocessing = (_is_multiprocessing); \
} while ( 0 )
/*PAGE
*
* _System_state_Set
*/
#define _System_state_Set( _state ) \
do { \
_System_state_Current = (_state); \
} while ( 0 )
/*PAGE
*
* _System_state_Get
*/
#define _System_state_Get() \
(_System_state_Current)
/*PAGE
*
* _System_state_Is_before_initialization
*/
#define _System_state_Is_before_initialization( _state ) \
((_state) == SYSTEM_STATE_BEFORE_INITIALIZATION)
/*PAGE
*
* _System_state_Is_before_multitasking
*/
#define _System_state_Is_before_multitasking( _state ) \
((_state) == SYSTEM_STATE_BEFORE_MULTITASKING)
/*PAGE
*
* _System_state_Is_begin_multitasking
*/
#define _System_state_Is_begin_multitasking( _state ) \
((_state) == SYSTEM_STATE_BEGIN_MULTITASKING)
/*PAGE
*
* _System_state_Is_up
*/
#define _System_state_Is_up( _state ) \
((_state) == SYSTEM_STATE_UP)
/*PAGE
*
* _System_state_Is_failed
*/
#define _System_state_Is_failed( _state ) \
((_state) == SYSTEM_STATE_FAILED)
#endif
/* end of include file */

View File

@@ -1,217 +0,0 @@
/* thread.inl
*
* This file contains the macro implementation of the inlined
* routines from the Thread 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 __THREAD_inl
#define __THREAD_inl
/*PAGE
*
* _Thread_Stop_multitasking
*
*/
#define _Thread_Stop_multitasking() \
_Context_Switch( &_Thread_Executing->Registers, &_Thread_BSP_context );
/*PAGE
*
* _Thread_Is_executing
*
*/
#define _Thread_Is_executing( _the_thread ) \
( (_the_thread) == _Thread_Executing )
/*PAGE
*
* _Thread_Is_heir
*
*/
#define _Thread_Is_heir( _the_thread ) \
( (_the_thread) == _Thread_Heir )
/*PAGE
*
* _Thread_Is_executing_also_the_heir
*
*/
#define _Thread_Is_executing_also_the_heir() \
( _Thread_Executing == _Thread_Heir )
/*PAGE
*
* _Thread_Resume
*
*/
#define _Thread_Resume( _the_thread ) \
_Thread_Clear_state( (_the_thread), STATES_SUSPENDED )
/*PAGE
*
* _Thread_Unblock
*
*/
#define _Thread_Unblock( _the_thread ) \
_Thread_Clear_state( (_the_thread), STATES_BLOCKED );
/*PAGE
*
* _Thread_Restart_self
*
*/
#define _Thread_Restart_self() \
{ \
if ( _Thread_Executing->fp_context != NULL ) \
_Context_Restore_fp( &_Thread_Executing->fp_context ); \
\
_CPU_Context_Restart_self( &_Thread_Executing->Registers ); \
}
/*PAGE
*
* _Thread_Calculate_heir
*
*/
#define _Thread_Calculate_heir() \
{ \
Priority_Control highest; \
\
_Priority_Get_highest( highest ); \
\
_Thread_Heir = (Thread_Control *) _Thread_Ready_chain[ highest ].first; \
}
/*PAGE
*
* _Thread_Is_allocated_fp
*
*/
#define _Thread_Is_allocated_fp( _the_thread ) \
( (_the_thread) == _Thread_Allocated_fp )
/*PAGE
*
* _Thread_Deallocate_fp
*
*/
#define _Thread_Deallocate_fp() \
_Thread_Allocated_fp = NULL
/*PAGE
*
* _Thread_Disable_dispatch
*
*/
#define _Thread_Disable_dispatch() \
_Thread_Dispatch_disable_level += 1
/*PAGE
*
* _Thread_Enable_dispatch
*
*/
#if ( CPU_INLINE_ENABLE_DISPATCH == TRUE )
#define _Thread_Enable_dispatch() \
{ if ( (--_Thread_Dispatch_disable_level) == 0 ) \
_Thread_Dispatch(); \
}
#endif
#if ( CPU_INLINE_ENABLE_DISPATCH == FALSE )
void _Thread_Enable_dispatch( void );
#endif
/*PAGE
*
* _Thread_Unnest_dispatch
*
*/
#define _Thread_Unnest_dispatch() \
_Thread_Dispatch_disable_level -= 1
/*PAGE
*
* _Thread_Is_dispatching_enabled
*
*/
#define _Thread_Is_dispatching_enabled() \
( _Thread_Dispatch_disable_level == 0 )
/*PAGE
*
* _Thread_Is_context_switch_necessary
*
*/
#define _Thread_Is_context_switch_necessary() \
( _Context_Switch_necessary == TRUE )
/*PAGE
*
* _Thread_Dispatch_initialization
*
*/
#define _Thread_Dispatch_initialization() \
_Thread_Dispatch_disable_level = 1
/*PAGE
*
* _Thread_Is_null
*
*/
#define _Thread_Is_null( _the_thread ) \
( (_the_thread) == NULL )
/*
* _Thread_Is_proxy_blocking
*
*/
#define _Thread_Is_proxy_blocking( _code ) \
( (_code) == THREAD_STATUS_PROXY_BLOCKING )
/*
* _Thread_Internal_allocate
*
*/
#define _Thread_Internal_allocate() \
((Thread_Control *) _Objects_Allocate( &_Thread_Internal_information ))
/*
* _Thread_Internal_free
*
*/
#define _Thread_Internal_free( _the_task ) \
_Objects_Free( &_Thread_Internal_information, &(_the_task)->Object )
#endif
/* end of include file */

View File

@@ -1,50 +0,0 @@
/* macros/threadmp.h
*
* This include file contains the bodies of all inlined routines
* for the multiprocessing part of thread package.
*
* COPYRIGHT (c) 1989-1998.
* On-Line Applications Research Corporation (OAR).
* Copyright assigned to U.S. Government, 1994.
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.OARcorp.com/rtems/license.html.
*
* $Id$
*/
#ifndef __MACROS_MP_THREAD_h
#define __MACROS_MP_THREAD_h
/*PAGE
*
* _Thread_MP_Is_receive
*
*/
#define _Thread_MP_Is_receive( _the_thread ) \
( (_the_thread) == _Thread_MP_Receive)
/*PAGE
*
* _Thread_MP_Free_proxy
*
*/
#define _Thread_MP_Free_proxy( _the_thread ) \
{ \
Thread_Proxy_control *_the_proxy; \
\
_the_proxy = (Thread_Proxy_control *) (_the_thread); \
\
_Chain_Extract( &_the_proxy->Active ); \
\
_Chain_Append( \
&_Thread_MP_Inactive_proxies, \
&(_the_thread)->Object.Node \
); \
}
#endif
/* end of include file */

View File

@@ -1,49 +0,0 @@
/* tod.inl
*
* This file contains the macro implementation of the inlined routines
* from the Time of Day Handler.
*
* COPYRIGHT (c) 1989-1998.
* On-Line Applications Research Corporation (OAR).
* Copyright assigned to U.S. Government, 1994.
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.OARcorp.com/rtems/license.html.
*
* $Id$
*/
#ifndef __TIME_OF_DAY_inl
#define __TIME_OF_DAY_inl
/*PAGE
*
* _TOD_Tickle_ticks
*
*/
#define _TOD_Tickle_ticks() \
_TOD_Current.ticks++; \
_Watchdog_Ticks_since_boot++
/*PAGE
*
* _TOD_Deactivate
*
*/
#define _TOD_Deactivate() \
_Watchdog_Remove( &_TOD_Seconds_watchdog )
/*PAGE
*
* _TOD_Activate
*
*/
#define _TOD_Activate( _ticks ) \
_Watchdog_Insert_ticks( &_TOD_Seconds_watchdog, (_ticks) )
#endif
/* end of include file */

View File

@@ -1,50 +0,0 @@
/* tqdata.inl
*
* This file contains the macro implementation of the inlined
* routines needed to support the Thread Queue Data.
*
* COPYRIGHT (c) 1989-1998.
* On-Line Applications Research Corporation (OAR).
* Copyright assigned to U.S. Government, 1994.
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.OARcorp.com/rtems/license.html.
*
* $Id$
*/
#ifndef __THREAD_QUEUE_DATA_inl
#define __THREAD_QUEUE_DATA_inl
/*PAGE
*
* _Thread_queue_Header_number
*
*/
#define _Thread_queue_Header_number( _the_priority ) \
((_the_priority) / TASK_QUEUE_DATA_PRIORITIES_PER_HEADER)
/*PAGE
*
* _Thread_queue_Is_reverse_search
*
*/
#define _Thread_queue_Is_reverse_search( _the_priority ) \
( (_the_priority) & TASK_QUEUE_DATA_REVERSE_SEARCH_MASK )
/*PAGE
*
* _Thread_queue_Enter_critical_section
*
*/
#define _Thread_queue_Enter_critical_section( _the_thread_queue ) \
do { \
(_the_thread_queue)->sync_state = THREAD_QUEUE_NOTHING_HAPPENED; \
} while ( 0 )
#endif
/* end of include file */

View File

@@ -1,126 +0,0 @@
/* userext.inl
*
* This file contains the macro implementation of the inlined routines
* from the User Extension 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 __USER_EXTENSIONS_inl
#define __USER_EXTENSIONS_inl
/*PAGE
*
* _User_extensions_Handler_initialization
*
*/
#define _User_extensions_Handler_initialization( _initial_extensions ) \
{ \
_Chain_Initialize_empty( &_User_extensions_List ); \
\
if ( (_initial_extensions) ) { \
_User_extensions_Initial.Callouts = *(_initial_extensions); \
_Chain_Append( \
&_User_extensions_List, &_User_extensions_Initial.Node ); \
} \
}
/*PAGE
*
* _User_extensions_Add_set
*/
#define _User_extensions_Add_set( _the_extension, _extension_table ) \
do { \
(_the_extension)->Callouts = *(_extension_table); \
\
_Chain_Append( &_User_extensions_List, &(_the_extension)->Node ); \
} while ( 0 )
/*PAGE
*
* _User_extensions_Add_API_set
*/
#define _User_extensions_Add_API_set( _the_extension ) \
_Chain_Prepend( &_User_extensions_List, &(_the_extension)->Node )
/*PAGE
*
* _User_extensions_Remove_set
*/
#define _User_extensions_Remove_set( _the_extension ) \
_Chain_Extract( &(_the_extension)->Node )
/*PAGE
*
* _User_extensions_Run_list_forward
*
* NOTE: No parentheses around macro names here to avoid
* messing up the name and function call expansion.
*/
#define _User_extensions_Run_list_forward( _name, _arguments ) \
do { \
Chain_Node *the_node; \
User_extensions_Control *the_extension; \
\
for ( the_node = _User_extensions_List.first ; \
!_Chain_Is_tail( &_User_extensions_List, the_node ) ; \
the_node = the_node->next ) { \
the_extension = (User_extensions_Control *) the_node; \
\
if ( the_extension->Callouts.## _name != NULL ) \
(*the_extension->Callouts.## _name) _arguments; \
\
} \
\
} while ( 0 )
/*PAGE
*
* _User_extensions_Run_list_backward
*
* NOTE: No parentheses around macro names here to avoid
* messing up the name and function call expansion.
*/
#define _User_extensions_Run_list_backward( _name, _arguments ) \
do { \
Chain_Node *the_node; \
User_extensions_Control *the_extension; \
\
for ( the_node = _User_extensions_List.last ; \
!_Chain_Is_head( &_User_extensions_List, the_node ) ; \
the_node = the_node->previous ) { \
the_extension = (User_extensions_Control *) the_node; \
\
if ( the_extension->Callouts.## _name != NULL ) \
(*the_extension->Callouts.## _name) _arguments; \
\
} \
\
} while ( 0 )
/*PAGE
*
* _User_extensions_Thread_switch
*
*/
#define _User_extensions_Thread_switch( _executing, _heir ) \
_User_extensions_Run_list_forward(thread_switch, (_executing, _heir) )
#endif
/* end of include file */

View File

@@ -1,172 +0,0 @@
/* watchdog.inl
*
* This file contains the macro implementation of all inlined routines
* in the Watchdog 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 __WATCHDOG_inl
#define __WATCHDOG_inl
#include <rtems/score/object.h>
/*PAGE
*
* _Watchdog_Initialize
*
*/
#define _Watchdog_Initialize( _the_watchdog, _routine, _id, _user_data ) \
{ \
(_the_watchdog)->state = WATCHDOG_INACTIVE; \
(_the_watchdog)->routine = (_routine); \
(_the_watchdog)->id = (_id); \
(_the_watchdog)->user_data = (_user_data); \
}
/*PAGE
*
* _Watchdog_Is_active
*
*/
#define _Watchdog_Is_active( _the_watchdog ) \
( (_the_watchdog)->state == WATCHDOG_ACTIVE )
/*PAGE
*
* _Watchdog_Activate
*
*/
#define _Watchdog_Activate( _the_watchdog ) \
(_the_watchdog)->state = WATCHDOG_ACTIVE
/*PAGE
*
* _Watchdog_Deactivate
*
*/
#define _Watchdog_Deactivate( _the_watchdog ) \
(_the_watchdog)->state = WATCHDOG_REMOVE_IT
/*PAGE
*
* _Watchdog_Tickle_ticks
*
*/
#define _Watchdog_Tickle_ticks() \
_Watchdog_Tickle( &_Watchdog_Ticks_chain )
/*PAGE
*
* _Watchdog_Tickle_seconds
*
*/
#define _Watchdog_Tickle_seconds() \
_Watchdog_Tickle( &_Watchdog_Seconds_chain )
/*PAGE
*
* _Watchdog_Insert_ticks
*
*/
#define _Watchdog_Insert_ticks( _the_watchdog, _units ) \
do { \
(_the_watchdog)->initial = (_units); \
_Watchdog_Insert( &_Watchdog_Ticks_chain, (_the_watchdog) ); \
} while ( 0 )
/*PAGE
*
* _Watchdog_Insert_seconds
*
*/
#define _Watchdog_Insert_seconds( _the_watchdog, _units ) \
do { \
(_the_watchdog)->initial = (_units); \
_Watchdog_Insert( &_Watchdog_Seconds_chain, (_the_watchdog) ); \
} while ( 0 )
/*PAGE
*
* _Watchdog_Adjust_seconds
*
*/
#define _Watchdog_Adjust_seconds( _direction, _units ) \
_Watchdog_Adjust( &_Watchdog_Seconds_chain, (_direction), (_units) )
/*PAGE
*
* _Watchdog_Adjust_ticks
*
*/
#define _Watchdog_Adjust_ticks( _direction, _units ) \
_Watchdog_Adjust( &_Watchdog_Ticks_chain, (_direction), (_units) )
/*PAGE
*
* _Watchdog_Reset
*
*/
#define _Watchdog_Reset( _the_watchdog ) \
{ \
(void) _Watchdog_Remove( (_the_watchdog) ); \
_Watchdog_Insert( &_Watchdog_Ticks_chain, (_the_watchdog) ); \
}
/*PAGE
*
* _Watchdog_Next
*
*/
#define _Watchdog_Next( _watchdog ) \
((Watchdog_Control *) (_watchdog)->Node.next)
/*PAGE
*
* _Watchdog_Previous
*
*/
#define _Watchdog_Previous( _watchdog ) \
((Watchdog_Control *) (_watchdog)->Node.previous)
/*PAGE
*
* _Watchdog_First
*
*/
#define _Watchdog_First( _header ) \
((Watchdog_Control *) (_header)->first)
/*PAGE
*
* _Watchdog_Last
*
*/
#define _Watchdog_Last( _header ) \
((Watchdog_Control *) (_header)->last)
#endif
/* end of include file */

View File

@@ -1,39 +0,0 @@
/* wkspace.inl
*
* This file contains the macro implementation of the inlined routines
* from the RAM Workspace 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 __WORKSPACE_inl
#define __WORKSPACE_inl
/*PAGE
*
* _Workspace_Allocate
*
*/
#define _Workspace_Allocate( _size ) \
_Heap_Allocate( &_Workspace_Area, (_size) )
/*PAGE
*
* _Workspace_Free
*
*/
#define _Workspace_Free( _block ) \
_Heap_Free( &_Workspace_Area, (_block) )
#endif
/* end of include file */