- 博客(39)
- 资源 (2)
- 收藏
- 关注
原创 vpp snat与dnat配置
# SNAT ### 简介 ##目的:修改数据包中源地址。vpp实现流程:获取数据包IP头,修改源IP地址,依据相加取反计算IP校验和,更新校验;修改为vpp中in2out的port,依据相加取反计算TCP/UDP校验和,更新校验。## 网络拓扑 ##![avatar][network]## 配置方法 ##### 1.宿主机 ### ip link add name vpp1out type veth peer name vpp1host ip addr show ...
2021-05-08 17:21:30
1133
转载 taskset 设置进程的CPU亲和性
命令行形式taskset [options] mask command [arg]...taskset [options] -p [mask] pidPARAMETER mask : cpu亲和性,当没有-c选项时, 其值前无论有没有0x标记都是16进制的, 当有-c选项时,其值是十进制的. command : 命令或者可执行程序 arg : command的参数 pid : 进程ID,可以通过ps/top/pidof等命令获取OPTIONS
2021-05-08 17:04:54
1086
转载 wrieshark过滤规则
wrieshark过滤规则1. IP源IPip.src eq 1.1.1.1目的IPip.dst eq 1.1.1.1IPip.addr eq 1.1.1.1端口源端口tcp.srcport == 80 目的端口tcp.dstport == 80端口tcp.port == 80 udp.port ==80 端口范围:tcp.port >= 1 and tcp.port <= 80协议tcp、udp、arp、icmp
2020-10-10 17:33:33
267
原创 Syslog协议介绍
Syslog协议应用场景网络管理工具安全管理系统日志审计系统存储存储在本地文件通过网络发送到接收syslog的服务器(接收的Syslog服务器可以对多个设备的Syslog消息统一存储)内容程序模块(Facility)、严重性(Severity or Level)、时间、主机名/IP、进程名、进程ID、正文<30>Oct 9 22:33:20 hlfedora auditd[1787]: The audit daemon is exiting.PRI<
2020-10-10 11:32:19
3030
原创 docker的简单使用
启动docker服务:service docker start关闭docker服务:service docker stop1.搜索可用的docker镜像:docker search tutorial2.下载容器镜像:docker pull learn/tutorial (用户名/镜像名)3.在docker容器中运行hello world!:docker run learn/tutoria...
2019-01-14 08:44:52
148
原创 DPDK的中testpmd和pktgen的使用
./testpmd -l 0-1 -n 1 --file-prefix=test --no-pci --vdev 'net_virtio_user2,mac=00:00:00:00:00:02,path=/var/run/openvswitch/vhost-user2' -- -i --forward-mode=io --auto-start ./testpmd -l 0-1 -n 1 ...
2019-01-12 15:47:24
4115
原创 调试go
1.编译时 go build -gcflags "-N -l" -o k8s-ovs k8s-ovs/main.go k8s-ovs/main.go :是$GOPATH/src下的路径2.调试 dlv exec /usr/sbin/k8s-ovs -- --hostname=10.20.31.77 -- 后面是添加参数。dl...
2019-01-09 17:32:25
219
原创 开机自启问题
命令行执行没问题,开机自启(启动不了)。1.环境变量未加载 解决问题:在启动程序前,先加载环境变量。source /etc/profile
2019-01-07 16:10:41
193
转载 字符操作
1.删除指定字符void del_char(char* str,char ch){ char *p = str; char *q = str; while(*q) { if (*q !=ch) { *p++ = *q; } q++; } *p='\0';}...
2018-12-26 11:49:52
179
转载 Linux使用代码
1.读取物理内存/dev/mem前0xf代码原著https://www.cnblogs.com/wangfengju/p/6172438.html#include<stdio.h> #include<unistd.h> #include<sys/mman.h> #include<sys/types.h> #include<...
2018-12-13 14:18:32
246
原创 GDB调试
dpdk调试:export EXTRA_CFLAGS="-O0 -g"ovs调试:./configure --with-dpdk=$RTE_SDK/$RTE_TARGET CFLAGS='-g -O0 -march=native' 调试程序: 1. 进程正在运行调试: gdb attach pid (pid -->ps -aux|g...
2018-08-03 19:14:40
472
转载 linux下多线程之pthread_detach(pthread_self())
pthread_detach(pthread_self())linux线程执行和windows不同,pthread有两种状态joinable状态和unjoinable状态,如果线程是joinable状态,当线程函数自己返回退出时或pthread_exit时都不会释放线程所占用堆栈和线程描述符(总计8K多)。只有当你调用了pthread_join之后这些资源才会被释放。若是unjoinabl...
2018-07-31 14:08:59
671
原创 获取cmdline参数
#include<string.h>#include<stdio.h>#include<stdlib.h>#include<fcntl.h> #include <unistd.h>#include<string.h>int main(int argc, char* argv[]){ int fd; int ret = 1; i...
2018-07-10 15:23:54
3179
原创 本地Socket通信
服务器端需要绑定端口,客户端也需要绑定端口。s_sock.c#include <stdio.h> #include<unistd.h>#include <sys/types.h> #include <sys/socket.h> #include <sys/un.h> #include <errno.h>#define...
2018-07-10 14:56:51
1124
转载 获取ARP表
arpGet("ens33", "192.168.74.1");获取ens33网卡下192.168.74.1这一项,如果没有192.168.74.1,返回小于0.#include <stdio.h> #include<unistd.h>#include <sys/types.h>#include <sys/socket.h>#include <
2018-07-04 14:13:00
2669
原创 每个进程的FD
每个进程默认最多打开1024个文件。每个进程的fd是不相同的:进程A fd=3;与进程B中fd=3;所打开的文件不相同。下面是用于测试每个进程最多打开多少文件。#include<stdio.h> #include<unistd.h>#include<fcntl.h>#include<errno.h>#include<string.h>i...
2018-06-27 14:42:49
2691
原创 结构体中结构体含有柔性数组
主结构体中次结构体含有柔性数组:分配空间和对最底层(含有柔性数组)结构体类似。#include<stdio.h>#include<string.h>#include<stdlib.h>struct mymsg1{int len;};struct mymsg2{char *cmdline;};struct mymsg3{int len;char *cmdline;...
2018-06-25 09:06:36
499
转载 内存字节对其与验证
字节对齐的原则1.基本数据类型自身的对齐值: 对于char型数据,其自身对齐值为1,对于short型为2,对于int,float,double类型,其自身对齐值为4,单位字节。2.结构体或者类的自身对齐值:其成员中自身对齐值最大的那个值。3.指定的对齐值:#pragma pack (value)时的指定对齐值value。4.数据成员、结构体和类的有效对齐值:自身对齐值和指定对齐值中小的那个值。6...
2018-06-23 15:13:12
367
原创 busybox动态编译
Make menuconfig Make&&make install cp 编译器库文件/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib 所有文件到/home/rootfs/lib下
2017-08-26 16:18:25
836
原创 Failed to execute /init. Attempting defaults...
Freeing init memory: 160KFailed to execute /init. Attempting defaults...Kernel panic - not syncing: No init found. Try passing init= option to kernel.Backtrace: [] (dump_backtrace+0x0/0x10c)
2017-08-26 16:15:54
2042
原创 linux记录锁(范围锁)
fcntl函数原型如下:int fcntl(int fd, int cmd, ... /* struct flock *arg */); 包含在中。第三个参数是指向flock类型的指针:struct flock{ short l_type; /* F_RDLCK, F_WRLCK, F_UNLCK */ short l_whence; /* SEEK_SET,
2017-07-27 18:26:16
872
原创 linux线程控制
1.线程属性a) 分离状态不需要了解线程返回终止状态时设置b) 栈末尾警戒缓冲区避免栈溢出的扩展内存大小,一般系统设置为页的整数倍c) 栈的最小地址i. 当有许多线程时,减少栈大小ii. 当线程中有许多自动变量时,则增大栈大小d) 栈的最小长度 2.互斥量属性a) 进程共享属性i. 默认:PTHREAD_PROCESS_PRIVATE,多线程访问同一
2017-07-27 18:08:06
298
原创 linux线程,互斥量,读写锁,条件变量和屏障
1.创建线程Pthread_create(&tid,NULL,func,NULL);2.ID线程标识符Pthread_t tid;Pthread_equal(tid1,tid2);pthread_t Pthread_self();3.线程终止条件a) Pthread_exit();b) Return;c) 其他线程调用pthread_cancel(tid);
2017-07-27 16:23:23
289
原创 llinux设备驱动并发与竞争简介
1.解决并发的方式1)信号量(struct semaphore)2)读写信号量(struct rw_semaphore)3)完成量(struct completion)4)自旋锁(spinloct_t)5)读写自旋锁(rwlock_t)6)顺序锁(seqlock_t)7)读-拷贝-更新(RCU)8)原子操作2.上述方法使用1)信号量(struct semap
2017-07-23 16:52:23
274
转载 条件变量(Condition Variable)详解
条件变量(Condtion Variable)是在多线程程序中用来实现“等待->唤醒”逻辑常用的方法。举个简单的例子,应用程序A中包含两个线程t1和t2。t1需要在bool变量test_cond为true时才能继续执行,而test_cond的值是由t2来改变的,这种情况下,如何来写程序呢?可供选择的方案有两种:第一种是t1定时的去轮询变量test_cond,如果test_cond为fals
2017-07-22 15:20:52
621
原创 C语言内存(野指针☆)
1.堆在链表中找接近4字节的空间,发现5字节接近4字节,将5字节给程序。 2.静态存储区(编译时就存在)保存全局变量和静态局部变量 3.野指针来源1)局部指针变量没有初始化;struct Student{ char* name; int number;};int main(){ struct Student s; /
2017-07-21 15:24:08
255
原创 C语言函数书写
1.声明与定义extern int a;声明的a为全局变量(即使声明在函数体内)。2.函数参数的求值顺序依赖编译器的实现(最好不写K,填入值)K=k++ + k++;(后置操作不会立即反应到K;而前置++k立即实现反应到k)K=2 + 2 ; k=6;顺序点:1)&& || ? ; 以及逗号表达式的每个运算之后2)函数调用中对所有实际参数的求值完
2017-07-21 15:21:32
1151
原创 C语言数组与指针
1.指针需要占用内存空间,指针存储内存地址的值(指针大小为4字节32位);使用时:*号取指针指向的内存地址中的值;声明时:*号表示指针类型*((int*)0X22FFCC)= 1; --->将0X22FFCC声明为int型指针,在对0X22FFCC地址赋值2.传址调用当函数内部想修改外部的值时,使用传址;(如:void func(void *a))3.数组地址与数组
2017-07-19 18:46:41
240
原创 C语言编译预处理
1.日志打印 #define LOG(S) do{ \time_t t; \struct tm* localtime; \t = time(NULL); \localtime = localtime(&t); \printf(“%s [%s:%d] %s\n”,asctime(localtime),_FILE_,_LINE_,s); \}while(0) 2
2017-07-18 14:53:05
225
原创 字符设备驱动
#include #include #include #include #include #include #include #include #include #include #define MEM_SIZE 0x1000/*全局内存最大4KB*/#define MEM_CLEAR 0x1#define MEM_MAJOR 0/*
2017-07-17 23:50:13
215
原创 C语言符号
1.注释符号编译器在编译时删除注释,但是以空格替换注释。2.接续符编译器会自动将\去除,将下一行提到后方。可用于宏定义: 3.||与&&||:从左往右运算当遇到条件为真,则停止运算(后续计算将不执行);&&:从左往右运算当遇到条件为假,则停止运算(后续计算将不执行);4.!!:只认0;(!0 -> 1 !-100 -> 0)
2017-07-17 14:22:15
448
原创 linux内核模块基础知识
#include#include -----这两个头文件所有模块都有MODULE_LICENSE(“Dual BSD/GPL”); ----声明许可证MODULE_AUTHOR(“XXX”) ----作者 EXPORT_SYMBOL(func) ----将给定函数func设置为其他模块可调用使用方法{1)在模块函数定义之后使用EXPORT_S
2017-07-16 23:23:45
208
原创 C语言关键字汇总
static (存储在程序静态区)1.未经初始化的静态全局变量会被程序自动初始化为0(在函数体内声明的自动变量的值是随机的,除非它被显式初始化,而在函数体外被声明的自动变量也会被初始化为0);☆2.静态全局变量在声明它的整个文件都是可见的,而在文件之外是不可见的;☆☆3.定义全局变量就可以实现变量在文件中的共享,但定义静态全局变量还有以下好处:☆☆1).静态全局变量不能被其它文件所
2017-07-16 22:16:43
381
原创 busybox编译的博客
busybox静态编译及动态编译实践http://blog.youkuaiyun.com/sunliymonkey/article/details/48056273动态编译 busyboxhttp://blog.youkuaiyun.com/xsckernel/article/details/8521894
2017-07-15 15:48:05
258
原创 V4L2
1.嵌入式Linux中摄像头使用简要整理http://www.cnblogs.com/emouse/archive/2013/03/03/2941938.html2.Linux之V4L2基础编程http://www.linuxidc.com/Linux/2016-11/137067.htm3.V4L2视频采集操作流程和接口说明★★★http://blog.youkuaiyun.com/se
2017-07-15 15:46:26
227
转载 rmmod: chdir(2.6.32.2-FriendlyARM): No such file or directory
首先在开发板上建立/lib/modules/2.6.32.2-FriendlyARM这样一个文件夹,注意,板子上的/lib/modules下有一个现成的文件夹叫2.6.29-FriendlyARM,该文件夹和2.6.32.2-FriendlyARM是有区别的。2.6.32.2-FriendlyARM记录了系统的完整版本号。所有待安装的模块文件.ko需要放在这个新建的文件夹/lib/modules/
2017-04-07 11:28:36
478
转载 EINTPEND等中断寄存器有关
1.中断分两大类:内部中断和外部中断。2.外部中断。24个外部中断占用GPF0-GPF7(EINT0-EINT7),GPG0-GPG15(EINT8-EINT23)。用这些脚做中断输入,则必须配置引脚为中断,并且不要上拉。具体参考datesheet数据手册。寄存器:EXTINT0-EXTINT2:三个寄存器设定EINT0-EINT23的触发方式。 EINTFL
2017-03-18 17:37:05
1659
转载 Mini2440之uboot的烧写
一、先用J-link和J-Flash将supervivi-128M.bin烧写到nor flash中 1、用J-link将PC机和Mini2440板子链接起来。 2、用J-Flash软件将supervivi-128M.bin烧写到nor flash中 ①打开J-Flash软件,打开目录H:\国嵌视频\课程1(嵌入式体验入门班)\第2天(开发板快乐体验)\相关
2017-03-13 15:03:19
832
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人