enumrte_proc_type_trte_eal_process_type(void)
Get the process type in a multi-process setup
Returns
The process type
intrte_eal_iopl_init(void)
Request iopl privilege for all RPL.
This function should be called by pmds which need access to ioports.
Returns
• On success, returns 0.
• On failure, returns -1.
intrte_eal_init(intargc,char**argv)
Initialize the Environment Abstraction Layer (EAL).
This function is to be executed on the MAIN lcore only, as soon as possible in the application's main()
function. It puts the WORKER lcores in the WAIT state.
Parametersargc A non-negative value. If it is greater than 0, the array members for argv[0] through argv[argc]
(non-inclusive) shall contain pointers to strings.
argv An array of strings. The contents of the array, as well as the strings which are pointed to by
the array, may be modified by this function. The program name pointer argv[0] is copied into the last
parsed argv so that argv[0] is still the same after deducing the parsed arguments.
Returns
• On success, the number of parsed arguments, which is greater or equal to zero. After the call to
rte_eal_init(), all arguments argv[x] with x < ret may have been modified by this function call and
should not be further interpreted by the application. The EAL does not take any ownership of the
memory used for either the argv array, or its members.
• On failure, -1 and rte_errno is set to a value indicating the cause for failure. In some instances,
the application will need to be restarted as part of clearing the issue.
Error codes returned via rte_errno: EACCES indicates a permissions issue.
EAGAIN indicates either a bus or system resource was not available, setup may be attempted again.
EALREADY indicates that the rte_eal_init function has already been called, and cannot be called again.
EFAULT indicates the tailq configuration name was not found in memory configuration.
EINVAL indicates invalid parameters were passed as argv/argc.
ENOMEM indicates failure likely caused by an out-of-memory condition.
ENODEV indicates memory setup issues.
ENOTSUP indicates that the EAL cannot initialize on this system.
EPROTO indicates that the PCI bus is either not present, or is not readable by the eal.
ENOEXEC indicates that a service core failed to launch successfully.
intrte_eal_cleanup(void)
Clean up the Environment Abstraction Layer (EAL)
This function must be called to release any internal resources that EAL has allocated during
rte_eal_init(). After this call, no DPDK function calls may be made. It is expected that common usage of
this function is to call it just before terminating the process.
Returns
• 0 Successfully released all internal EAL resources.
• -EFAULT There was an error in releasing all resources.
intrte_eal_primary_proc_alive(constchar*config_file_path)
Check if a primary process is currently alive
This function returns true when a primary process is currently active.
Parametersconfig_file_path The config_file_path argument provided should point at the location that the primary
process will create its config file. If NULL, the default config file path is used.
Returns
• If alive, returns 1.
• If dead, returns 0.
boolrte_mp_disable(void)
Disable multiprocess.
This function can be called to indicate that multiprocess won't be used for the rest of the application
life.
Returns
• true if called from a primary process that had no secondary processes attached,
• false, otherwise.
intrte_mp_action_register(constchar*name,rte_mp_taction)
Register an action function for primary/secondary communication.
Call this function to register an action, if the calling component wants to response the messages from
the corresponding component in its primary process or secondary processes.
Note
IPC may be unsupported in certain circumstances, so caller should check for ENOTSUP error.
Parametersname The name argument plays as the nonredundant key to find the action.
action The action argument is the function pointer to the action function.
Returns
• 0 on success.
• (<0) on failure.
voidrte_mp_action_unregister(constchar*name)
Unregister an action function for primary/secondary communication.
Call this function to unregister an action if the calling component does not want to response the
messages from the corresponding component in its primary process or secondary processes.
Note
IPC may be unsupported in certain circumstances, so caller should check for ENOTSUP error.
Parametersname The name argument plays as the nonredundant key to find the action.
intrte_mp_sendmsg(structrte_mp_msg*msg)
Send a message to the peer process.
This function will send a message which will be responded by the action identified by name in the peer
process.
Parametersmsg The msg argument contains the customized message.
Returns
• On success, return 0.
• On failure, return -1, and the reason will be stored in rte_errno.
intrte_mp_request_sync(structrte_mp_msg*req,structrte_mp_reply*reply,conststructtimespec*ts)
Send a request to the peer process and expect a reply.
This function sends a request message to the peer process, and will block until receiving reply message
from the peer process.
Note
The caller is responsible to free reply->replies.
This API must not be used inside memory-related or IPC callbacks, and no memory allocations should
take place inside such callback.
IPC may be unsupported in certain circumstances, so caller should check for ENOTSUP error.
Parametersreq The req argument contains the customized request message.
reply The reply argument will be for storing all the replied messages; the caller is responsible for
free reply->msgs.
ts The ts argument specifies how long we can wait for the peer(s) to reply.
Returns
• On success, return 0.
• On failure, return -1, and the reason will be stored in rte_errno.
intrte_mp_request_async(structrte_mp_msg*req,conststructtimespec*ts,rte_mp_async_reply_tclb)
Send a request to the peer process and expect a reply in a separate callback.
This function sends a request message to the peer process, and will not block. Instead, reply will be
received in a separate callback.
Note
IPC may be unsupported in certain circumstances, so caller should check for ENOTSUP error.
Parametersreq The req argument contains the customized request message.
ts The ts argument specifies how long we can wait for the peer(s) to reply.
clb The callback to trigger when all responses for this request have arrived.
Returns
• On success, return 0.
• On failure, return -1, and the reason will be stored in rte_errno.
intrte_mp_reply(structrte_mp_msg*msg,constchar*peer)
Send a reply to the peer process.
This function will send a reply message in response to a request message received previously.
Note
When handling IPC request callbacks, the reply must be sent even in cases of error handling. Simply
returning success or failure will not send a response to the requestor. Implementation of error
signalling mechanism is up to the application.
Parametersmsg The msg argument contains the customized message.
peer The peer argument is the pointer to the peer socket path.
Returns
• On success, return 0.
• On failure, return -1, and the reason will be stored in rte_errno.
rte_usage_hook_trte_set_application_usage_hook(rte_usage_hook_tusage_func)
Add application usage routine callout from the eal_usage() routine.
This function allows the application to include its usage message in the EAL system usage message. The
routine rte_set_application_usage_hook() needs to be called before the rte_eal_init() routine in the
application.
This routine is optional for the application and will behave as if the set routine was never called as
the default behavior.
Parametersusage_func The func argument is a function pointer to the application usage routine. Called function
is defined using rte_usage_hook_t typedef, which is of the form void rte_usage_func(const char *
prgname).
Calling this routine with a NULL value will reset the usage hook routine and return the current value,
which could be NULL.
Returns
• Returns the current value of the rte_application_usage pointer to allow the caller to daisy chain
the usage routines if needing more then one.
intrte_eal_has_hugepages(void)
Whether EAL is using huge pages (disabled by --no-huge option). The no-huge mode is not compatible with
all drivers or features.
Returns
Nonzero if hugepages are enabled.
intrte_eal_has_pci(void)
Whether EAL is using PCI bus. Disabled by --no-pci option.
Returns
Nonzero if the PCI bus is enabled.
intrte_eal_create_uio_dev(void)
Whether the EAL was asked to create UIO device.
Returns
Nonzero if true.
enumrte_intr_moderte_eal_vfio_intr_mode(void)
The user-configured vfio interrupt mode.
Returns
Interrupt mode configured with the command line, RTE_INTR_MODE_NONE by default.
voidrte_eal_vfio_get_vf_token(rte_uuid_tvf_token)
Copy the user-configured vfio VF token.
Parametersvf_token vfio VF token configured with the command line is copied into this parameter, zero uuid by
default.
intrte_sys_gettid(void)
A wrap API for syscall gettid.
Returns
On success, returns the thread ID of calling process. It is always successful.
staticintrte_gettid(void)[inline],[static]
Get system unique thread id.
Returns
On success, returns the thread ID of calling process. It is always successful.
Definition at line 438 of file rte_eal.h.
__rte_internaluint64_trte_eal_get_baseaddr(void)
Get the OS-specific EAL base address.
Returns
The base address.
enumrte_iova_moderte_eal_iova_mode(void)
Get the iova mode
Returns
enum rte_iova_mode value.
constchar*rte_eal_mbuf_user_pool_ops(void)
Get user provided pool ops name for mbuf
Returns
returns user provided pool ops name.
constchar*rte_eal_get_runtime_dir(void)
Get the runtime directory of DPDK
Returns
The runtime directory path of DPDK
__rte_internalintrte_eal_parse_coremask(constchar*coremask,int*cores)
Convert a string describing a mask of core ids into an array of core ids.
On success, the passed array is filled with the orders of the core ids present in the mask (-1 indicating
that a core id is absent). For example, passing a 0xa coremask results in cores[1] = 0, cores[3] = 1, and
the rest of the array is set to -1.
Parameterscoremask A string describing a mask of core ids.
cores An array where to store the core ids orders. This array must be at least RTE_MAX_LCORE large.
Returns
0 on success, -1 if the string content was invalid.