Unix/Linux
striver1205
这个作者很懒,什么都没留下…
展开
-
一个历史遗留问题,引发的linux内存管理的‘血案’
最近处理一个骨灰级历史残留问题,内核模块DPI的内存数据被无故关顾,导致系统的panic的问题,linux 内核版本3.18 x86_64,由于我们要精简系统,许多调试工具已经被阉割,SLAB_DEBUG, KASAN not support, 由于这部分数据主要是查询,在初始化话不会对其进行修改,所以想到一个办法将初始化完DPI后,将使用的内存页设置为只读,通过stack的信息找到元凶。按照以上的分析总共分为以下步骤:查找 虚拟地址的PTE 设置PTE的属性为只读#include <l原创 2021-04-22 16:51:30 · 593 阅读 · 0 评论 -
linux 内存显示括号内字母的含义
当linux系统发生异常或者 echo 'm' > /proc/sysrq-trigger 我们会看到类似以下的信息,其中括号内字符代表什么含义呢?我们跟踪 sysrq-trigger,看看源码的解释DMA: 1*4kB (M) 0*8kB 1*16kB (M) 2*32kB (UM) 2*64kB (UM) 1*128kB (U) 2*256kB (UM) 2*512kB (UM) 1*1024kB (M) 1*2048kB (M) 2*4096kB (ER) = 13140kBDMA32:原创 2021-04-08 11:47:01 · 440 阅读 · 0 评论 -
低版本ulibc支持recvmmsg sendmmsg功能
最近调试openwrt,发现低版本的ulibc不支持recv/send mmsg API,故简单写个实现一个测试程序,直接贴代码吧!,这里的程序可能兼容新版版本的ulibc出现问题,所以使用wrap_简单封装一下。#define _GNU_SOURCE#include <netinet/ip.h>#include <stdio.h>#include <st...原创 2019-07-03 11:09:39 · 783 阅读 · 0 评论 -
linux glob函数详解
glob库函数用于Linux文件系统中路径名称的模式匹配,即查找文件系统中指定模式的路径。注意,这不是正则表达式匹配,虽然有些相似,但还是有点差别。glob函数原型 #include int glob(const char *pattern, int flags, int errfunc(cons转载 2017-07-13 18:00:51 · 13758 阅读 · 0 评论 -
Ubuntu14.04 YouCompleteMe Configure
安装准备1.1 安装vim[cpp] view plaincopysudo apt-get install vim 1.2 安装cmake[cpp] view plaincopysudo apt-get install cmake 1.转载 2016-01-09 12:34:38 · 1803 阅读 · 0 评论 -
多工作线程获取工作队列简单实现
学习APUE,知识发现收获不少,原创 2014-05-27 16:34:57 · 685 阅读 · 0 评论 -
IO多路复用之select篇
1、基本概念 IO多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备读取,它就通知该进程。IO多路复用适用如下场合: (1)当客户处理多个描述字时(一般是交互式输入和网络套接口),必须使用I/O复用。 (2)当一个客户同时处理多个套接口时,而这种情况是可能的,但很少出现。 (3)如果一个TCP服务器既要处理监听套接口,又要处理已连接套接口,一般也要用到I/O复用。转载 2014-06-05 19:18:52 · 654 阅读 · 0 评论 -
strtok_r 和 strsep 使用实例
这两个函数都是拆分字符的API,douzhi原创 2014-05-12 11:25:25 · 2343 阅读 · 0 评论 -
浅谈malloc,calloc,realloc函数之间的区别
内存区域可以分为栈,堆,静态存储区和常量存储区。局部变量,函数形参,临时变量都是在栈上获得内存的,它们获取的方式都是由编译器自动执行的。 C 标准函数库提供了许多函数来实现对堆上内存管理,其中包括:malloc函数,free函数,calloc函数和realloc函数。使用这些函数需要包含头文件stdlib.h1. malloc函数malloc函数可以从堆上获得指定字节的内转载 2014-05-09 18:37:55 · 577 阅读 · 0 评论 -
Linux 读取文件n行并删除方法
最近工作中读到对AC或者AP产生的原创 2014-05-05 18:29:03 · 2888 阅读 · 0 评论 -
SYSCALL_DEFINE含义
CVE-2010-3301是其中一个。这个漏洞的成因是,在64位的内核上执行32位的系统调用时,作为传递系统调用号的%rax高32位未被清零处理,而且在进行比较的时候直接使用的%eax,导致高32位被忽略:cmpl $(IA32_NR_syscalls-1),%eax ja ia32_badsys ia32_do_call: IA32_ARG_FIXUP call *ia32_sys_转载 2014-01-14 09:55:37 · 776 阅读 · 0 评论 -
linux下的系统调用函数到内核函数的追踪
Original from: http://blog.chinaunix.net/uid-28458801-id-3468966.html使用的 glibc : glibc-2.17使用的 linux kernel :linux-3.2.07系统调用是内核向用户进程提供服务的唯一方法,应用程序调用操作系统提供的功能模块(函数)。用户程序通过系统调用从用户态(user mod转载 2014-01-13 11:03:20 · 924 阅读 · 0 评论 -
Linux/Unix the definition of cpu-nice
这是个Linux/Unix术语。Linux/Unix 是多用户分时操作系统,一个主机上连很多用户。nice是一种礼让的工具,可以给自己不着急出结果的程序安排优先级(除了管理员,别人只有增加的权利——表示优先级的数字,默认是0,越大优先级越低)。比如压缩片子的进程,可以用活动监视器看进程号,然后到终端下输入renice 20 -p 进程号,就不会影响到其他操作了。当然,在你什么都不做的时候,cp原创 2013-05-18 10:15:26 · 617 阅读 · 0 评论 -
RedHat YUM configure
RedHat企业版免费使用的用户,大家都知道,他的服务是收费的,没有注册码是不提供服务的,包括yum服务,这里如果我们非要使用Redhat 企业版的话,为了方便管理,我们自己搭建本地YUM,步骤如下:1,创建存放RPM包源的目录mkdir -p /usr/local/src/yum2,挂载安装盘mount /dev/cdrom /mnt3,复制所有安装里的RPM包到转载 2013-04-16 11:07:06 · 1151 阅读 · 0 评论 -
UDP socket编程中使用connect
转自:http://hi.baidu.com/rwen2012/item/545a39ba741307d085dd7957标准的udp客户端开了套接口后,一般使用sendto和recvfrom函数来发数据,最近看到ntpclient的代码里面是使用send函数直接法的,就分析了一下,原来udp发送数据有两种方法供大家选用的,顺便把udp的connect用法也就解释清楚了。方法一: so转载 2012-09-07 11:35:52 · 6148 阅读 · 0 评论