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