17 #ifndef _RTEMS_RTEMS_PARTIMPL_H 18 #define _RTEMS_RTEMS_PARTIMPL_H 82 return ((offset % the_partition->
buffer_size) == 0);
116 const void *starting_address
136 void *starting_address,
138 uint32_t buffer_size,
143 the_partition->
length = length;
151 length / buffer_size,
213 #if defined(RTEMS_MULTIPROCESSING) 214 #include <rtems/rtems/partmp.h>
Objects_Information _Partition_Information
The Classic Partition objects information.
#define _ISR_lock_Destroy(_lock)
Destroys an ISR lock.
#define _ISR_lock_Release_and_ISR_enable(_lock, _context)
Releases an ISR lock.
static __inline__ void _Partition_Free_buffer(Partition_Control *the_partition, Chain_Node *the_buffer)
Frees the_buffer to the_partition.
void _Chain_Initialize(Chain_Control *the_chain, void *starting_address, size_t number_nodes, size_t node_size)
Initializes a chain header.
RTEMS_INLINE_ROUTINE bool _Addresses_Is_in_range(const void *address, const void *base, const void *limit)
Checks if address is in range.
Classic Partition Manager Data Structures.
#define CPU_SIZEOF_POINTER
Objects_Control * _Objects_Allocate(Objects_Information *information)
Allocates an object.
static __inline__ void _Chain_Append_unprotected(Chain_Control *the_chain, Chain_Node *the_node)
Appends a node (unprotected).
Inlined Routines in the Object Handler.
RTEMS_INLINE_ROUTINE intptr_t _Addresses_Subtract(const void *left, const void *right)
Subtracts two addresses.
static __inline__ bool _Partition_Is_buffer_on_boundary(void *the_buffer, Partition_Control *the_partition)
Checks whether is on a valid buffer boundary for the_partition.
Information Required to Manipulate Physical Addresses.
#define _ISR_lock_Acquire(_lock, _context)
Acquires an ISR lock inside an ISR disabled section.
uintptr_t number_of_used_blocks
uint32_t rtems_attribute
This type is used to represent Classic API attributes.
static __inline__ bool _Partition_Is_buffer_valid(Chain_Node *the_buffer, Partition_Control *the_partition)
Checks whether the_buffer is a valid buffer from the_partition.
rtems_attribute attribute_set
#define _ISR_lock_Initialize(_lock, _name)
Initializes an ISR lock.
static __inline__ Partition_Control * _Partition_Allocate(void)
Allocates a partition control block from the inactive chain of free partition control blocks...
Objects_Control * _Objects_Get(Objects_Id id, ISR_lock_Context *lock_context, const Objects_Information *information)
Maps the specified object identifier to the associated local object control block.
static __inline__ void * _Partition_Allocate_buffer(Partition_Control *the_partition)
Allocate a buffer from the_partition.
Local ISR lock context for acquire and release pairs.
#define RTEMS_INLINE_ROUTINE
Gives a hint to the compiler in a function declaration to inline this function.
static __inline__ void _Partition_Free(Partition_Control *the_partition)
Frees a partition control block to the inactive chain of free partition control blocks.
RTEMS_INLINE_ROUTINE void * _Addresses_Add_offset(const void *base, uintptr_t offset)
Adds offset to an address.
static __inline__ Chain_Node * _Chain_Get_unprotected(Chain_Control *the_chain)
Gets the first node (unprotected).
static __inline__ void _Objects_Free(Objects_Information *information, Objects_Control *the_object)
Frees an object.