自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

转载 LINUX_VERSION_CODE与KERNEL_VERSION

由于Linux版本的在不断更新,当设备驱动去兼容不同版本的内核时,需要知道当前使用的内核源码版本,以此来调用对应版本的内核API,这两个宏定义在文件 /usr/include/linux/version.h #define LINUX_VERSION_CODE 263213 #define KE...

2020-07-06 20:08:23 13 0

翻译 TCMalloc:线程缓存的Malloc

动机 TCMalloc要比glibc 2.3的malloc(可以从一个叫作ptmalloc2的独立库获得)和其他我测试过的malloc都快。ptmalloc在一台2.8GHz的P4机器上(对于小对象)执行一次malloc及free大约需要300纳秒。而TCMalloc的版本同样的操作大约只需要50...

2020-06-23 15:01:49 40 0

转载 Linux内存布局

我们先来看下Linux内存布局,此图比我之前写的那篇文章写的布局更详细 在linux中,每一个进程都被抽象为task_struct结构体,称为进程描述符,存储着进程 各方面的信息;例如打开的文件,信号以及内存等等;然后task_struct的一个属性mm_struct管理着进程的所有虚拟内存,称...

2020-06-05 20:20:11 46 0

转载 ssh(或sftp)连接慢问题解决

问题1:ssh连接很慢 解决方案: 这是应为linux系统默认开启DNS认证,我们关掉即可。 vim /etc/ssh/ssh_config UseDNS yes 改为no(122行左右); GSSAPIAuthentication yes改为no(81行左右) 然后重启sshd服...

2020-06-02 15:11:15 327 0

原创 链路带宽测试工具iperf使用

下载安装iperf https://iperf.fr/iperf-download.php 下载安装对应版本,不区分服务端和客户端; 运行 udp模式测试:(tcp模式去掉-u参数即可) 服务端执行: iperf -p 8000 -s -i -u 监听8000端口,以服务端模式运行; 客户端运行:...

2020-06-02 10:10:18 184 0

原创 网络常用python函数

字符串mac地址转换: def str2mac(s): return ("%02x:" * 6)[:-1] % tuple(orb(x) for x in s) mac地址转字符串: def mac2str(mac): return b""...

2020-05-20 10:22:22 61 0

原创 tcmalloc编译使用

一、编译 https://github.com/gperftools/gperftools/releases 如上链接页面下载需要版本的代码; cd /home/code/; tar -zxvf gperftools-2.7.90.tar.gz; cd gperftools-2.7.90; ../...

2020-05-15 18:46:49 89 0

原创 gdb报错(A program is being debugged already)

用 gdb attach pid 的方式将gdb挂到一个正在运行的进程上,有时会提示 A program is being debugged already. Kill it? (y or n) 可能是由于正在执行的进程对应的binary被替换了造成的。如果被替换过的binary和先前的差别不大...

2020-05-06 17:22:02 93 0

翻译 linux malloc内存申请相关参数设置

情况一、malloc小于128k的内存 malloc小于128k的内存时使用brk分配内存,将_edata往高地址推(只分配虚拟空间,不对应物理内存(因此没有初始化),第一次读/写数据时,引起内核缺页中断,内核才分配对应的物理内存,然后虚拟地址空间建立映射关系),如下图: 1、进程启动的时候,其(...

2020-04-23 21:58:35 200 0

原创 gdb编程打印全局变量

以某个全局数组为例说明如何gdb编程打印所有变量: 写变量遍历代码 创建search.gdb文件写如下内容: define print_hash_table set $cnt =1 set $use=2 while $cnt set $hash_entry=(g_hash_entry_t...

2020-04-03 16:24:33 117 0

转载 Python调用shell命令常用方法

Python调用shell指令 方法一、使用os模块的system方法: os.system(cmd),其返回值是shell指令运行后返回的状态码,int类型,0表示shell指令成功执行,256表示未找到,该方法适用于shell命令不需要输出内容的场景。 举例说明: 1. 列举当前目录下的所有文...

2020-03-18 10:02:26 98 0

转载 __typeof__(type)的用法(gcc扩展)

__typeof__(struct s *) xxx; 等同于: struct s * xxx; 下面的例子可以证明: #include <stdio.h> #include <stdlib.h> struct s { int x; int y;...

2020-03-16 19:26:52 105 0

转载 Linux top命令的用法详细详解

首先介绍top中一些字段的含义: VIRT:virtual memory usage 虚拟内存 1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等 2、假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量 RES:resident memory u...

2020-03-13 15:36:37 46 0

原创 问题排查积累

1、查看进程启动时间 ps -eo pid,lstart,etime | grep pid (lstart为启动时间,etime为运行多长时间)

2020-03-10 22:28:16 43 0

原创 C语言基础知识

同等bit长度情况下比较 无符号数强转为有符号数: 有符号数转换为无符号数 1)最高位符号位为0 符号位为0的情况下,有符号数直接等于无符号数; 2)最高位符号位为1 符号位为1的情况下,有符号数转换为无符号数为取有符号数的补码(即最高位符号位不变,非符号位取反,最后整体加1) 如 char a ...

2020-02-28 15:31:27 28 0

转载 局部标签(gcc对c的扩展)

局部标签定义 一个局部标签的申明如下: __label__ label; 或者: __label__ label1, label2, ...; 使用局部标签 每个语句内嵌表达式都是一个可以声明局部跳转标签的域。一个局部标签只是一个标识符:你可以使用通常的goto语句跳到它--但是只能在它所...

2020-02-28 09:54:44 88 0

转载 内核dmes日志实时打印脚本

#!/bin/bash end=`dmesg |wc -l` while true do sleep 1 end2=`dmesg |wc -l` if [ "$end" != "$end2" ]; then dme...

2019-11-22 15:40:14 203 0

原创 makefile知识点记录

makefile关键字使用: 以下代码保存为Makefile后,执行make即可看到各关键字意义。 # Target::test # .PHONY: test test: @echo ${CURDIR} @echo ${MAKE_VERSION} @echo ${MAKEFILE_LIS...

2019-11-21 10:20:12 23 0

原创 python调用c库之cffi

python使用cffi模块调用c函数 一、cffi简介   Cffi是python调用c函数的接口。几乎所有c和pythond的交互都是基于类似于c的声明一样,因此可以直接复制粘贴c的头文件或者文档使用。   Cffi接口遵循如下的原则:   1、目标是在不需要了解第三方语言(cython、sw...

2019-04-03 15:45:05 774 0

原创 python调用c库之ctypes及callback相关问题解决

Python调用c库学习 Python模块ctypes是Python内建的用于调用动态链接库函数的功能模块,一定程度上可以用于Python与其他语言的混合编程。由于编写动态链接库,使用C/C++是最常见的方式,故ctypes最常用于Python与C/C++混合编程之中。 一、ctypes原...

2019-04-03 15:03:18 1269 0

转载 内核参数说明

添加链接描述

2019-03-06 15:41:44 295 0

原创 __attribute__(constructor)和__attribute__(destructor)

1、前言 最近看代码,看到一个函数前面用__attribute__((constructor))修饰,搜了整个程序,没发现哪个地方调用这个函数。如下: __attribute__((constructor)) void load_file() { printf(&quot;Cons...

2019-03-06 11:51:52 686 0

原创 wide-dhcpv6-client使用指北

环境:ubuntu14.04桌面版 1、安装 apt-get install wide-dhcpv6-client 2、配置 cd /etc/wide-dhcpv6/; 打开dhcpv6.conf后输入如下内容(默认配置仅请求域名等参数): 1)、每行的分号必不可少; 2)、} 后的分号不可少;’...

2018-11-29 14:22:06 927 0

原创 sourcesight快捷键

快速打开文件:ctrl + o; 快速打开symbol:F7; 复制一行:ctrl + k; 复制本行当前光标右边内容:ctrl + shift + k; 设置各功能快捷键: options—&gt;key assignments ...

2018-11-23 18:48:24 186 0

原创 获取下命令源码包

以ping命令为例 1、shell下执行which ping 输出: /bin/ping 2、dpkg -S /bin/ping 输出:iputils-ping: /bin/ping 3、apt-get source iputils-ping 即可看到当前目录下存在:iputils_2012122...

2018-11-22 20:22:09 68 0

原创 基于ubuntu14.04搭建pppoe server

1、安装ppp、pppoe、pppoeconf、rp-pppoe sudo apt-get update; sudo apt-get install ppp; sudo apt-get install pppoe; sudo apt-get install pppoeconf; rp-pppoe...

2018-11-21 17:14:07 965 0

转载 Linux下用GDB多线程调试

调试多线程的相关指令 显示所有进程 info threads 这条指令显示可以调试的所有线程,gdb会为每个线程分配一个ID,这个ID和线程ID不同,ID号一般从1开始。 切换线程指令 为什么要切换线程呢?因为gdb默认在调试多线程程序时只跟踪主线程,而新创建的线程都阻塞在线程创建函数pthre...

2018-10-24 09:52:51 259 0

原创 vim编辑器小技巧

vim编辑器插入模式下,方向键变为字母的解决方法: cp /usr/share/vim/vim70/vimrc_example.vim ~/.vimrc 安装vim后的基础配置: set number set numberwidth 2 set autoindent set tabst...

2018-09-17 17:56:22 127 0

原创 网络设备模块初始化(net/core/dev.c/net_dev_init)

/* * Initialize the DEV module. At boot time this walks the device list and * unhooks any devices that fail to initialise (normally hardware not ...

2018-06-10 18:04:42 825 0

转载 linux内核收包流程

”’ 收发包流程分析:https://www.linuxidc.com/Linux/2011-05/36063.htm ”” 网络设备介绍 网络设备是计算机体系结构中必不可少的一部分,处理器如果想与外界通信,通常都会选择网络设备作为通信接口。众所周知,在 OSI(Open System...

2018-05-28 20:12:18 1576 1

原创 内核路由函数分析(一)

struct fib_alias { struct list_head fa_list;//链入到路由节点fib_node中 struct rcu_head rcu;// struct fib_info *fa_info;//路由信息结构保存着如何处理数据包 ...

2018-05-21 19:48:09 205 0

原创 git使用笔记

git push时每次都需要输入密码,解决方案如下: 执行命令 :git config --global push.default simple 再次push时只需要输入一次密码,之后再次push无需密码。

2018-05-15 09:57:06 66 0

转载 Linux下/proc目录简介

1. /proc目录 Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构、改变内核设置的机制。proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。 用户和应用程序可以通过proc得到系统的信息...

2018-05-09 19:03:01 434 0

原创 #if xxx #endif条件注释的使用

' #if defined(X) print ("hello word!\n") ' #endif 以上编译只与编译宏X有关,与宏定义X的条件是否成立无关。如果定义了X宏,条件即成立,下面print语句会被编译;如果宏X未定义,则print语句不...

2018-05-07 16:47:45 9186 0

原创 内核收发包分析(二)----inet_init函数、arp_init函数

内核启动初始化过程(以inet_init为线索): start—-&amp;amp;amp;gt;init函数(init/main.c)—–&amp;amp;amp;gt;do_basic_setup()函数(init/main.c)—–&amp;amp;amp;gt;s...

2018-05-04 20:25:18 335 0

原创 shell脚本

批量修改文件名: for file in ls;do mv $file echo $file|sed 's/原始字段/要替换为的字段/';done; ubuntu下查找大文件: find ./ -size +1G -exec ls -lh {} \; bc实现进制转换:...

2018-03-15 19:47:13 965 0

原创 内核收发包分析(一)----ip_forward

基于linux 2.6内核源码分析。ip_forward函数:int ip_forward(struct sk_buff *skb) { struct iphdr *iph; /* Our header */ struct rtable *rt; /* Route we use...

2018-02-08 14:36:02 533 2

原创 svn基础命令

svn update 从svn服务器获取最新代码到本地; 存在冲突时会有如下几个选项: 1)、(p) postpone 暂时推后处理; 2)、(df) diff-full ...

2017-11-13 14:12:48 162 0

原创 华为中兴设备debug使用

中兴设备debug方法: 1) 打开终端debug监控 terminal monitor 关闭终端debug监控 no terminal monitor 2) 打开指定模块debug debug program_nam...

2017-08-19 14:17:01 2759 0

转载 SDN必须知道的十大问题

SDN之所以能够发展的如此之快,其中开源社区的贡献不容忽视。随着SDN 各类社区的不断发展状大,开源项目也在不断增多,从控制器到交换机再到网络虚拟化,开源项目一度让小编眼花缭乱。可能你熟悉OpenDaylight、RYU、Floodlight,但是你也许不知道还有MUL、Beacon、Trema等...

2017-06-16 17:50:17 4173 0

提示
确定要删除当前文章?
取消 删除