在aarch64上编译,fstack: master分支:5b97230c858598a10e1b82c tag: v1.23, origin/master

embedded/2024/10/10 14:50:26/

F-Stack一个基于DPDK的开源和高性能网络框架

基于DPDK23.11需要做如下操作

sed替换:

sed -n '/DEV_RX_OFFLOAD_IPV4_CKSUM/p' drivers/net/macb/*

sed -i 's/ETH_/RTE_ETH_/g' *.c

sed -i 's/DEV_/RTE_ETH_/g' *.c

f-stack适配dpdk20.11

sed -i 's/RTE_MBUF_F_RX_IP_CKSUM_BAD/PKT_RX_IP_CKSUM_BAD/g' *.c

sed -i 's/RTE_MBUF_F_/PKT_/g' *.c

注释掉: pmap_change_prot

编译错误:call-clobbered register used for global register variable

文件freebsd/arm64/include/pcpu.h中x18改为x22

register struct pcpu *pcpup __asm ("x22");

这样改虽然通过编译,但一直有段错误:freebsd/net/netisr.c:1139,所以改为非寄存器变量

f-stack/lib/include/machine/pcpu.h:50:40: error: ‘struct pcpu’ has no member named ‘pc_prvspace修改如下:

-#define PCPU_SET(member,value) (pcpup->pc_ ## member = (value))

+#define PCPU_SET(member,value) (pcpup = (value))

编译错误ffs重定义

+++ b/lib/Makefile

@@ -355,7 +355,7 @@ LIBKERN_SRCS+= \

- fls.c \

+ #fls.c \

flsl.c

基于dpdk20.11, f-stack master分支:5b97230c858598a10e1b82c tag: v1.23, origin/master,修改如下,可以正常编译

编译redis错误:jemalloc/jemalloc.h: No such file or directory

jemalloc重载了Linux下的ANSIC的malloc和free函数,解决方法如下:

在make命令后加上参数malloc

make MALLOC=libc

编译f-stack lib导出:

export FF_PATH=/root/f-stack

export PKG_CONFIG_PATH=/usr/lib64/pkgconfig:/usr/local/lib64/pkgconfig:/usr/lib/pkgconfig

nginx with debug

./configure --prefix=/usr/local/nginx_fstack --with-ff_module --with-cc-opt=" -g3 "

./helloworld --conf /etc/f-stack.conf --proc-type=primary

struct pcpu *

# Close ASLR; it is necessary in multiple process

echo 0 > /proc/sys/kernel/randomize_va_space

uma_startup1

https://github.com/forxycc/f-stack/blob/forxy-v1/build-aarch64.sh

在aarch64平台,struct pcpu没有成员 pc_prvspace,修改如下:

+++ b/freebsd/arm64/include/pcpu.h

+ struct pcpu *pc_prvspace; \

u_int pc_bcast_tlbi_workaround; \

u_int pc_mpidr; /* stored MPIDR value */ \

- char __pad[201]

+ char __pad[197]

下面是用fstack自带的dpdk21.11的arch64补丁包:

编译错误:./machine_include/machine/pcpu.h:60:23: error: call-clobbered register used for global register variable [-Werror]

60 | register struct pcpu *pcpup __asm ("x18");

| ^~~~~

加上:-ffixed-x18,选项可以解决上面的问题

解压:f-stack_head.tar,拷其中的文件到下面目录,拷

cp -f ff_config.h /usr/local/include/ff_config.h

cp -f ff_api.h /usr/local/include/ff_api.h

cp -f ff_event.h /usr/local/include/ff_event.h

cp -f ff_errno.h /usr/local/include/ff_errno.h

cp -f ff_epoll.h /usr/local/include/ff_epoll.h

库文件操作如下:

cp -f libfstack.a /usr/local/lib/libfstack.a.1.23

ln -sf /usr/local/lib/libfstack.a.1.23 /usr/local/lib/libfstack.a


http://www.ppmy.cn/embedded/125439.html

相关文章

资源《Arduino 扩展板4-单游戏摇杆》说明。

资源链接: Arduino 扩展板4-单游戏摇杆 1.文件明细: 2.文件内容说明 包含:AD工程、原理图、PCB。 3.内容展示 4.简述 该文件为PCB工程,采用AD做的。 该文件打板后配合Arduino使用,属于Arduino的扩展板。 该文件…

QT实现QMessageBox中文按钮

这是我记录Qt学习过程心得文章的第二篇,主要是为了方便QMessageBox弹出框的使用,通过自定义的方式,将其常用的功能,统一封装成一个函数,还是写在了Skysonya类里面。 实现代码: //中文提示对话框 bool Sky…

12.数据结构和算法-栈和队列的定义和特点

栈和队列的定义和特点 栈的应用 队列的常见应用 栈的定义和特点 栈的相关概念 栈的示意图 栈与一般线性表有什么不同 队列的定义和特点 队列的相关概念

深入理解链表(SList)操作

目录: 一、 链表介绍1.1、 为什么引入链表1.2、 链表的概念及结构1.3、 链表的分类 二、 无头单向非[循环链表](https://so.csdn.net/so/search?q循环链表&spm1001.2101.3001.7020)的实现2.1、 [单链表](https://so.csdn.net/so/search?q单链表&spm1001.2…

为何四次挥手要等待2MSL

参考文章&#xff1a;https://zhuanlan.zhihu.com/p/204988465 A主动关闭连接一方&#xff0c;B是被动关闭一方 我们假设A发送了ACK报文后过了一段时间t之后B才收到该ACK&#xff0c;则有 0 < t < MSL。因为A并不知道它发送出去的ACK要多久对方才能收到&#xff0c;所以…

LeetCode1049:最后一块石头的重量

题目链接&#xff1a;1049. 最后一块石头的重量 II - 力扣&#xff08;LeetCode&#xff09; 代码如下 class Solution { public:int lastStoneWeightII(vector<int>& stones) {int sum 0;vector<int> dp(1501,0);for(int i 0; i < stones.size(); i){s…

【QT Quick】C++交互:调用QML函数

在本节中&#xff0c;我们将深入探讨如何在C中调用QML函数。这项功能非常常用&#xff0c;尤其是在需要将C逻辑与QML界面进行交互时。我们将重点关注invokeMethod函数&#xff0c;它支持多种参数形式&#xff0c;并允许我们灵活地处理不同的调用场景。 invokeMethod概述 invo…

吴恩达深度学习笔记:卷积神经网络(Foundations of Convolutional Neural Networks)2.7-2.8

目录 第四门课 卷积神经网络&#xff08;Convolutional Neural Networks&#xff09;第二周 深度卷积网络&#xff1a;实例探究&#xff08;Deep convolutional models: case studies&#xff09;2.7 Inception 网络&#xff08;Inception network&#xff09;2.8 使 用 开 源 …