RTEMS CPU Kit with SuperCore  4.11.3
Functions
rtl-obj-cache.c File Reference

RTEMS Run-Time Linker Object File cache buffers a section of the object file in a buffer to localise read performance. More...

#include <errno.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <rtems/rtl/rtl-allocator.h>
#include "rtl-obj-cache.h"
#include "rtl-error.h"
#include "rtl-trace.h"
Include dependency graph for rtl-obj-cache.c:

Functions

bool rtems_rtl_obj_cache_open (rtems_rtl_obj_cache_t *cache, size_t size)
 Open a cache allocating a single buffer of the size passed. More...
 
void rtems_rtl_obj_cache_close (rtems_rtl_obj_cache_t *cache)
 Close a cache. More...
 
void rtems_rtl_obj_cache_flush (rtems_rtl_obj_cache_t *cache)
 Flush the cache. More...
 
bool rtems_rtl_obj_cache_read (rtems_rtl_obj_cache_t *cache, int fd, off_t offset, void **buffer, size_t *length)
 Read data by reference. More...
 
bool rtems_rtl_obj_cache_read_byval (rtems_rtl_obj_cache_t *cache, int fd, off_t offset, void *buffer, size_t length)
 Read data by value. More...
 

Detailed Description

RTEMS Run-Time Linker Object File cache buffers a section of the object file in a buffer to localise read performance.

Function Documentation

◆ rtems_rtl_obj_cache_close()

void rtems_rtl_obj_cache_close ( rtems_rtl_obj_cache_t cache)

Close a cache.

Parameters
cacheThe cache to close.

References rtems_rtl_trace().

◆ rtems_rtl_obj_cache_flush()

void rtems_rtl_obj_cache_flush ( rtems_rtl_obj_cache_t cache)

Flush the cache.

Any further read will read the data from the file.

Parameters
cacheThe cache to flush.

References rtems_rtl_trace().

Referenced by rtems_rtl_obj_caches_flush().

◆ rtems_rtl_obj_cache_open()

bool rtems_rtl_obj_cache_open ( rtems_rtl_obj_cache_t cache,
size_t  size 
)

Open a cache allocating a single buffer of the size passed.

The default state of the cache is flushed. No already open checks are made.

Parameters
cacheThe cache to initialise.
sizeThe size of the cache.
Return values
trueThe cache is open.
falseThe cache is not open. The RTL error is set.

◆ rtems_rtl_obj_cache_read()

bool rtems_rtl_obj_cache_read ( rtems_rtl_obj_cache_t cache,
int  fd,
off_t  offset,
void **  buffer,
size_t *  length 
)

Read data by reference.

The length contains the amount of data that should be available in the cache and referenced by the buffer handle. It must be less than or equal to the size of the cache. This call will return the amount of data that is available. It can be less than you ask if the offset and size is past the end of the file.

Parameters
cacheThe cache to reference data from.
fdThe file descriptor. Must be an open file.
offsetThe offset in the file to reference the data to.
bufferThe location to reference the data from.
lengthThe length of data to reference. Can be modified to a lesser value and true is still returned so check it.
Return values
trueThe data referenced is in the cache.
falseThe read failed and the RTL error has been set.

Referenced by rtems_rtl_rap_file_load().

◆ rtems_rtl_obj_cache_read_byval()

bool rtems_rtl_obj_cache_read_byval ( rtems_rtl_obj_cache_t cache,
int  fd,
off_t  offset,
void *  buffer,
size_t  length 
)

Read data by value.

The data is copied to the user supplied buffer.

Parameters
cacheThe cache to read the data from.
fdThe file descriptor. Must be an open file.
offsetThe offset in the file to read the data from.
bufferThe location the data is written into.
lengthThe length of data to read.
Return values
trueThe data has been read from the cache.
falseThe read failed and the RTL error has been set.

Referenced by rtems_rtl_elf_file_check(), and rtems_rtl_elf_file_load().