xref: /dpdk/lib/eal/common/eal_firmware.h (revision 40edb9c0d36b781d711fabb91e250dca8fa6bd99)
1*40edb9c0SDavid Marchand /* SPDX-License-Identifier: BSD-3-Clause
2*40edb9c0SDavid Marchand  * Copyright(c) 2021 Red Hat, Inc.
3*40edb9c0SDavid Marchand  */
4*40edb9c0SDavid Marchand 
5*40edb9c0SDavid Marchand #ifndef _EAL_FIRMWARE_H_
6*40edb9c0SDavid Marchand #define _EAL_FIRMWARE_H_
7*40edb9c0SDavid Marchand 
8*40edb9c0SDavid Marchand #include <sys/types.h>
9*40edb9c0SDavid Marchand 
10*40edb9c0SDavid Marchand #include <rte_compat.h>
11*40edb9c0SDavid Marchand 
12*40edb9c0SDavid Marchand /**
13*40edb9c0SDavid Marchand  * Load a firmware in a dynamically allocated buffer, dealing with compressed
14*40edb9c0SDavid Marchand  * files if libarchive is available.
15*40edb9c0SDavid Marchand  *
16*40edb9c0SDavid Marchand  * @param[in] name
17*40edb9c0SDavid Marchand  *      Firmware filename to load.
18*40edb9c0SDavid Marchand  * @param[out] buf
19*40edb9c0SDavid Marchand  *      Buffer allocated by this function. If this function succeeds, the
20*40edb9c0SDavid Marchand  *      caller is responsible for calling free() on this buffer.
21*40edb9c0SDavid Marchand  * @param[out] bufsz
22*40edb9c0SDavid Marchand  *      Size of the data in the buffer.
23*40edb9c0SDavid Marchand  *
24*40edb9c0SDavid Marchand  * @return
25*40edb9c0SDavid Marchand  *      0 if successful.
26*40edb9c0SDavid Marchand  *      Negative otherwise, buf and bufsize contents are invalid.
27*40edb9c0SDavid Marchand  */
28*40edb9c0SDavid Marchand __rte_internal
29*40edb9c0SDavid Marchand int
30*40edb9c0SDavid Marchand rte_firmware_read(const char *name, void **buf, size_t *bufsz);
31*40edb9c0SDavid Marchand 
32*40edb9c0SDavid Marchand #endif /* _EAL_FIRMWARE_H_ */
33