iPXE
Macros
APIs

These are APIs for which only a single implementation may be compiled in at any given time. More...

Macros

#define SINGLE_API_NAME(_prefix, _api_func)   _prefix ## _api_func
 Calculate function implementation name. More...
 
#define SINGLE_API_INLINE(_prefix, _api_func)   SINGLE_API_NAME ( _prefix, _api_func )
 Calculate static inline function name. More...
 
#define PROVIDE_SINGLE_API(_prefix, _api_func, _func)
 Provide an API implementation. More...
 
#define PROVIDE_SINGLE_API_INLINE(_prefix, _api_func)
 Provide a static inline API implementation. More...
 

Detailed Description

These are APIs for which only a single implementation may be compiled in at any given time.

Macro Definition Documentation

◆ SINGLE_API_NAME

#define SINGLE_API_NAME (   _prefix,
  _api_func 
)    _prefix ## _api_func

Calculate function implementation name.

Parameters
_prefixSubsystem prefix
_api_funcAPI function
Return values
_subsys_funcSubsystem API function

The subsystem prefix should be an empty string for the currently selected subsystem, and should be a subsystem-unique string for all other subsystems.

Definition at line 35 of file api.h.

◆ SINGLE_API_INLINE

#define SINGLE_API_INLINE (   _prefix,
  _api_func 
)    SINGLE_API_NAME ( _prefix, _api_func )

Calculate static inline function name.

Parameters
_prefixSubsystem prefix
_api_funcAPI function
Return values
_subsys_funcSubsystem API function

Definition at line 44 of file api.h.

◆ PROVIDE_SINGLE_API

#define PROVIDE_SINGLE_API (   _prefix,
  _api_func,
  _func 
)
Value:
/* Ensure that _api_func exists */ \
typeof ( _api_func ) _api_func; \
/* Ensure that _func exists */ \
typeof ( _func ) _func; \
/* Ensure that _func is type-compatible with _api_func */ \
typeof ( _api_func ) _func; \
/* Ensure that _subsys_func is non-static */ \
extern typeof ( _api_func ) SINGLE_API_NAME ( _prefix, _api_func ); \
/* Provide symbol alias from _subsys_func to _func */ \
typeof ( _api_func ) SINGLE_API_NAME ( _prefix, _api_func ) \
__attribute__ (( alias ( #_func ) ));
#define SINGLE_API_NAME(_prefix, _api_func)
Calculate function implementation name.
Definition: api.h:35

Provide an API implementation.

Parameters
_prefixSubsystem prefix
_api_funcAPI function
_funcImplementing function

Definition at line 54 of file api.h.

◆ PROVIDE_SINGLE_API_INLINE

#define PROVIDE_SINGLE_API_INLINE (   _prefix,
  _api_func 
)
Value:
/* Ensure that _api_func exists */ \
typeof ( _api_func ) _api_func; \
/* Ensure that _subsys_func exists and is static */ \
static typeof ( SINGLE_API_INLINE ( _prefix, _api_func ) ) \
SINGLE_API_INLINE ( _prefix, _api_func ); \
/* Ensure that _subsys_func is type-compatible with _api_func */ \
typeof ( _api_func ) SINGLE_API_INLINE ( _prefix, _api_func );
#define SINGLE_API_INLINE(_prefix, _api_func)
Calculate static inline function name.
Definition: api.h:44

Provide a static inline API implementation.

Parameters
_prefixSubsystem prefix
_api_funcAPI function

Definition at line 73 of file api.h.