RTEMS CPU Kit with SuperCore  4.11.3
Data Structures | Macros | Typedefs | Functions
rtl-obj-comp.h File Reference

RTEMS Run-Time Linker Object File Compression manages a compressed stream of data. More...

#include <rtems/rtl/rtl-obj-cache.h>
Include dependency graph for rtl-obj-comp.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  rtems_rtl_obj_cpmp_s
 The compressed file. More...
 

Macros

#define RTEMS_RTL_DECOMP_INPUT_SIZE   (256)
 The amount of input data read at a time from the file.
 
#define RTEMS_RTL_COMP_NONE   (0)
 The types of supported compression.
 
#define RTEMS_RTL_COMP_LZ77   (1)
 

Typedefs

typedef struct rtems_rtl_obj_cpmp_s rtems_rtl_obj_comp_t
 The compressed file.
 

Functions

bool rtems_rtl_obj_comp_open (rtems_rtl_obj_comp_t *comp, size_t size)
 Open a compressor allocating the output buffer. More...
 
void rtems_rtl_obj_comp_close (rtems_rtl_obj_comp_t *comp)
 Close a compressor. More...
 
void rtems_rtl_obj_comp_set (rtems_rtl_obj_comp_t *comp, rtems_rtl_obj_cache_t *cache, int fd, int compression, off_t offset)
 Set the cache and offset in the file the compressed stream starts. More...
 
bool rtems_rtl_obj_comp_read (rtems_rtl_obj_comp_t *comp, void *buffer, size_t length)
 Read decompressed data. More...
 

Detailed Description

RTEMS Run-Time Linker Object File Compression manages a compressed stream of data.

This is a simple interface to the object file cache to stream data from from a compressed object file. There is no ability to seek with the data from a compressed file. The module exists to allocate the output buffer when the loader starts and use the cache buffers will have been allocated.

Function Documentation

◆ rtems_rtl_obj_comp_close()

void rtems_rtl_obj_comp_close ( rtems_rtl_obj_comp_t comp)

◆ rtems_rtl_obj_comp_open()

bool rtems_rtl_obj_comp_open ( rtems_rtl_obj_comp_t comp,
size_t  size 
)

Open a compressor allocating the output buffer.

Parameters
compThe compressor to initialise.
sizeThe size of the compressor's output buffer.
Return values
trueThe compressor is open.
falseThe compressor is not open. The RTL error is set.

◆ rtems_rtl_obj_comp_read()

bool rtems_rtl_obj_comp_read ( rtems_rtl_obj_comp_t comp,
void *  buffer,
size_t  length 
)

Read decompressed data.

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
compThe compressor to read data from.
bufferThe buffer the output is written too.
lengthThe length of data to read. 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.

◆ rtems_rtl_obj_comp_set()

void rtems_rtl_obj_comp_set ( rtems_rtl_obj_comp_t comp,
rtems_rtl_obj_cache_t cache,
int  fd,
int  compression,
off_t  offset 
)

Set the cache and offset in the file the compressed stream starts.

Parameters
compThe compressor to set the offset in.
cacheThe cache to read the file in by.
fdThe file descriptor. Must be an open file.
compressionThe type of compression being streamed.
offsetThe offset in the file the compressed stream starts.

References rtems_rtl_obj_cpmp_s::cache, rtems_rtl_obj_cpmp_s::compression, rtems_rtl_obj_cpmp_s::fd, rtems_rtl_obj_cpmp_s::level, rtems_rtl_obj_cpmp_s::offset, and rtems_rtl_obj_cpmp_s::read.

Referenced by rtems_rtl_obj_comp().