17 #ifndef _RTEMS_RTEMS_PARTIMPL_H 18 #define _RTEMS_RTEMS_PARTIMPL_H 82 return ((offset % the_partition->
buffer_size) == 0);
112 return (buffer_size % CPU_SIZEOF_POINTER) == 0;
116 const void *starting_address
119 return (((uintptr_t) starting_address) % CPU_SIZEOF_POINTER) == 0;
136 void *starting_address,
138 uint32_t buffer_size,
143 the_partition->
length = length;
151 length / buffer_size,
213 #if defined(RTEMS_MULTIPROCESSING)
uint32_t rtems_attribute
Definition: attr.h:41
RTEMS_INLINE_ROUTINE Partition_Control * _Partition_Allocate(void)
Allocates a partition control block from the inactive chain of free partition control blocks.
Definition: partimpl.h:129
Objects_Control Object
Definition: partdata.h:39
Objects_Information _Partition_Information
The Classic Partition objects information.
#define _ISR_lock_Destroy(_lock)
Destroys an ISR lock.
Definition: isrlock.h:199
#define _ISR_lock_Release_and_ISR_enable(_lock, _context)
Releases an ISR lock.
Definition: isrlock.h:263
uintptr_t length
Definition: partdata.h:45
void * starting_address
Definition: partdata.h:43
void _Chain_Initialize(Chain_Control *the_chain, void *starting_address, size_t number_nodes, size_t node_size)
Initializes a chain header.
Definition: chain.c:26
RTEMS_INLINE_ROUTINE bool _Addresses_Is_in_range(const void *address, const void *base, const void *limit)
Checks if address is in range.
Definition: address.h:138
Classic Partition Manager Data Structures.
Objects_Control * _Objects_Allocate(Objects_Information *information)
Allocates an object.
Definition: objectallocate.c:42
RTEMS_INLINE_ROUTINE bool _Partition_Is_buffer_valid(Chain_Node *the_buffer, Partition_Control *the_partition)
Checks whether the_buffer is a valid buffer from the_partition.
Definition: partimpl.h:91
size_t buffer_size
Definition: partdata.h:47
RTEMS_INLINE_ROUTINE intptr_t _Addresses_Subtract(const void *left, const void *right)
Subtracts two addresses.
Definition: address.h:95
Information Required to Manipulate Physical Addresses.
#define _ISR_lock_Acquire(_lock, _context)
Acquires an ISR lock inside an ISR disabled section.
Definition: isrlock.h:293
uintptr_t number_of_used_blocks
Definition: partdata.h:51
RTEMS_INLINE_ROUTINE void _Objects_Free(Objects_Information *information, Objects_Control *the_object)
Frees an object.
Definition: objectimpl.h:930
MP Support in Partition Manager.
rtems_attribute attribute_set
Definition: partdata.h:49
RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected(Chain_Control *the_chain, Chain_Node *the_node)
Appends a node (unprotected).
Definition: chainimpl.h:680
Definition: partdata.h:37
#define _ISR_lock_Initialize(_lock, _name)
Initializes an ISR lock.
Definition: isrlock.h:185
uint32_t Objects_Id
Definition: object.h:80
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.
Definition: objectgetlocal.c:28
Local ISR lock context for acquire and release pairs.
Definition: isrlock.h:65
RTEMS_INLINE_ROUTINE void _Partition_Free(Partition_Control *the_partition)
Frees a partition control block to the inactive chain of free partition control blocks.
Definition: partimpl.h:172
Chain_Control Memory
Definition: partdata.h:53
RTEMS_INLINE_ROUTINE Chain_Node * _Chain_Get_unprotected(Chain_Control *the_chain)
Gets the first node (unprotected).
Definition: chainimpl.h:630
Inlined Routines in the Object Handler.
#define RTEMS_INLINE_ROUTINE
Definition: basedefs.h:66
RTEMS_INLINE_ROUTINE void _Partition_Free_buffer(Partition_Control *the_partition, Chain_Node *the_buffer)
Frees the_buffer to the_partition.
Definition: partimpl.h:56
RTEMS_INLINE_ROUTINE void * _Addresses_Add_offset(const void *base, uintptr_t offset)
Adds offset to an address.
Definition: address.h:55
RTEMS_INLINE_ROUTINE void * _Partition_Allocate_buffer(Partition_Control *the_partition)
Allocate a buffer from the_partition.
Definition: partimpl.h:44
RTEMS_INLINE_ROUTINE bool _Partition_Is_buffer_on_boundary(void *the_buffer, Partition_Control *the_partition)
Checks whether is on a valid buffer boundary for the_partition.
Definition: partimpl.h:70