RTEMS: cpukit/libdl/rap.c File Reference

| RTEMS 5.4-rc2

Loading...
Searching...
No Matches
Data Structures | Macros | Typedefs | Functions
rap.c File Reference
API » RTEMS Application Loader

RTEMS Application Loader. More...

`#include <pthread.h>`
`#include <stdarg.h>`
`#include <stdlib.h>`
`#include <stdio.h>`
`#include <string.h>`
`#include <rtems/libio_.h>`
`#include <dlfcn.h>`
`#include <rtems/rtl/rap.h>`
`#include <rtems/rtl/rtl.h>`
`#include "rtl-find-file.h"`

## Data Structures
struct | rtems_rap_data_s
struct | rtems_rap_app

## Macros
#define | RTL_ENTRY_POINT "_rtems"

## Typedefs
typedef struct rtems_rap_data_s | rtems_rap_data
typedef struct rtems_rap_app | rtems_rap_app
typedef int(* | rtems_rap_entry) (int argc, const char *argv[])

## Functions
bool | rtems_rap_load (const char *name, int mode, int argc, const char *argv[])
bool | rtems_rap_unload (const char *name)
void * | rtems_rap_find (const char *name)
bool | rtems_rap_iterate (rtems_rap_iterator iterator)
const char * | rtems_rap_name (void *handle)
void * | rtems_rap_dl_handle (void *handle)
int | rtems_rap_get_error (char *message, size_t max_message)

## Detailed Description

RTEMS Application Loader.

This is the RAP implementation.

## Macro Definition Documentation

## ◆ RTL_ENTRY_POINT

#define RTL_ENTRY_POINT "_rtems"

RTL entry.

## Typedef Documentation

## ◆ rtems_rap_app

typedef struct rtems_rap_app rtems_rap_app

The RAP file data. This structure is allocated on the heap when a file is loaded.

## ◆ rtems_rap_data

typedef struct rtems_rap_data_s rtems_rap_data

The global RAP data. This structure is allocated on the heap when the first call to location an application and is never released.

## ◆ rtems_rap_entry

typedef int(* rtems_rap_entry) (int argc, const char *argv[])

RAP entry call signature.

## Function Documentation

## ◆ rtems_rap_dl_handle()

void * rtems_rap_dl_handle | ( | void * | handle | ) |

Return the DL handle used to load the module given the RAP handle.

Parameters

  handle | The module handle.

Returns
  void* The DL handle returned by the dlopen call.

## ◆ rtems_rap_find()

void * rtems_rap_find | ( | const char * | name | ) |

Find the application handle given a file name.

Parameters

  name | The name of the application file. It can be absolute or relative. Relative names can the basename with an extension.

Return values

  NULL | No application file with that name found.

Returns
  void* The application descriptor.

## ◆ rtems_rap_get_error()

int rtems_rap_get_error | ( | char * | message,
|  | size_t | max_message
| ) |  |

Get the last error message clearing it. This call is not thread safe is multiple threads are loading object files at the same time. This call follows the model provided by the dlopen family of calls.

Parameters

  message | Pointer to a buffer to copy the message into.
  max_message | The maximum message that can be copied.

Returns
  int The last error number.

## ◆ rtems_rap_iterate()

bool rtems_rap_iterate | ( | rtems_rap_iterator | iterator | ) |

Run an iterator over the modules calling the iterator function.

Parameters

  iterator | The iterator function.

Return values

  true | The iterator function returned did not return false.
  false | The iterator function returned false..

## ◆ rtems_rap_load()

bool rtems_rap_load | ( | const char * | name,
|  | int | mode,
|  | int | argc,
|  | const char * | argv[]
| ) |  |

Load an application.

Parameters

  name | The name of the application file.

Returns
  bool True if the module loads else an error.

## ◆ rtems_rap_name()

const char * rtems_rap_name | ( | void * | handle | ) |

Return the name of the module given a handle.

Parameters

  handle | The module handle.

Returns
  const char* The name of the module if the handle is valid else it is NULL.

## ◆ rtems_rap_unload()

bool rtems_rap_unload | ( | const char * | name | ) |

Unload an application.

Parameters

  obj | The application descriptor.

Return values

  true | The application file has been unloaded.
  false | The application could not be unloaded.