28 #include <sys/types.h> 38 #include <rte_config.h> 39 #include <rte_malloc.h> 40 #include <rte_cycles.h> 43 #include <tas_memif.h> 50 static void destroy_shm(
const char *name,
size_t size,
void *addr);
52 static void *util_create_shmsiszed_huge(
const char *name,
size_t size,
53 void *addr) __attribute__((used));
55 static void destroy_shm_huge(
const char *name,
size_t size,
void *addr)
56 __attribute__((used));
58 static uint64_t us_to_cycles(uint32_t us);
66 config.shm_len, NULL);
71 if (tas_shm == NULL) {
72 fprintf(stderr,
"mapping flexnic dma memory failed\n");
79 FLEXNIC_INTERNAL_MEM_SIZE, NULL);
82 FLEXNIC_INTERNAL_MEM_SIZE, NULL);
84 if (fp_state == NULL) {
85 fprintf(stderr,
"mapping flexnic internal memory failed\n");
93 int shm_init(
unsigned num)
99 if (tas_info == NULL) {
100 fprintf(stderr,
"mapping flexnic tas_info failed\n");
107 tas_info->
qmq_num = FLEXNIC_NUM_QMQUEUES;
119 void shm_cleanup(
void)
122 if (fp_state != NULL) {
133 if (tas_shm != NULL) {
142 if (tas_info != NULL) {
147 void shm_set_ready(
void)
152 void *util_create_shmsiszed(
const char *name,
size_t size,
void *addr)
157 if ((fd = shm_open(name, O_CREAT | O_RDWR, 0666)) == -1) {
158 perror(
"shm_open failed");
161 if (ftruncate(fd, size) != 0) {
162 perror(
"ftruncate failed");
166 if ((p = mmap(addr, size, PROT_READ | PROT_WRITE,
167 MAP_SHARED | (addr == NULL ? 0 : MAP_FIXED) | MAP_POPULATE, fd, 0)) ==
170 perror(
"mmap failed");
186 static void destroy_shm(
const char *name,
size_t size,
void *addr)
188 if (munmap(addr, size) != 0) {
189 fprintf(stderr,
"Warning: munmap failed (%s)\n", strerror(errno));
194 static void *util_create_shmsiszed_huge(
const char *name,
size_t size,
201 snprintf(path,
sizeof(path),
"%s/%s", FLEXNIC_HUGE_PREFIX, name);
203 if ((fd = open(path, O_CREAT | O_RDWR, 0666)) == -1) {
204 perror(
"util_create_shmsiszed: open failed");
207 if (ftruncate(fd, size) != 0) {
208 perror(
"util_create_shmsiszed: ftruncate failed");
212 if ((p = mmap(addr, size, PROT_READ | PROT_WRITE,
213 MAP_SHARED | (addr == NULL ? 0 : MAP_FIXED) | MAP_POPULATE, fd, 0)) ==
216 perror(
"util_create_shmsiszed: mmap failed");
232 static void destroy_shm_huge(
const char *name,
size_t size,
void *addr)
236 snprintf(path,
sizeof(path),
"%s/%s", FLEXNIC_HUGE_PREFIX, name);
238 if (munmap(addr, size) != 0) {
239 fprintf(stderr,
"Warning: munmap failed (%s)\n", strerror(errno));
244 static uint64_t us_to_cycles(uint32_t us)
246 if (us == UINT32_MAX) {
250 return (rte_get_tsc_hz() * us) / 1000000;
#define FLEXNIC_NAME_INFO
#define FLEXNIC_FLAG_READY
#define FLEXNIC_NAME_INTERNAL_MEM
uint64_t internal_mem_size
#define FLEXNIC_NAME_DMA_MEM
uint32_t fp_poll_interval_app
#define FLEXNIC_INFO_BYTES
#define FLEXNIC_FLAG_HUGEPAGES
uint32_t fp_poll_interval_tas