![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux内核
文章平均质量分 87
海棠花败
这个作者很懒,什么都没留下…
展开
-
mips架构下使用perf工具遇到的问题及解决方法
在做程序性能分析时,perf是必不可少的分析工具。它的最简单的使用方式为:$ perf record -e task-clock ./a.out //抓取热点数据 $ perf report //查看热点 这样我们可以精确定位到热点方法,甚至可以进一步定位到热点指令。但是在mips架构的机器上使用perf的过程中,会或多或少存在一些问题,在此记录。问题1:perf不显示so库方法名称(Symbol列 只能显示热点PC)出现这种情况,perf report的结果是: Overh原创 2021-02-18 12:56:23 · 2743 阅读 · 2 评论 -
C语言提供的线程/进程间同步(锁)机制
##C语言提供的线程间同步(锁)机制/usr/include/pthread.h中提供1、互斥体 (Mutex)描述:互斥体是比信号量更为简单是睡眠锁。使用范围:最为常用/* Initialize a mutex. */extern int pthread_mutex_init (pthread_mutex_t *__mutex, const pthread_mutexattr_t *__mutexattr) __THROW __nonnull...原创 2020-12-31 09:24:41 · 6353 阅读 · 0 评论 -
MIPS体系架构下的shmat()函数注意事项 和 SHMLBA
在使用criu zdtm单项测试 ./test/zdtm.py run -t zdtm/transition/ipc 失败,ipc测试实例功能是父进程创建了2个子进程,并通过信号量和子进程共享一个内存空间。测试失败点在criu restore过程中,子进程对共享内存的虚拟地址映射无法对应上dump时的地址,也就是调用shmat(shm,oldaddr,0)返回的地址不...原创 2020-04-16 08:58:53 · 758 阅读 · 0 评论 -
Github进行fork后与原仓库同步方法(命令行方式)
通常我们对开源项目做贡献的时候有两种方式:一是发送 *.patch 文件到相关维护者邮箱。kernel项目就是如此方式。二是fork一份项目代码到自己仓库,修改后提交PR(全称Pull Request),github上大部分项目就是这种方式。 基于开源社区github上工作时总会遇到这样的问题:fork了一个项目到自己的远程仓库,一段时间后如何...原创 2020-04-15 14:39:32 · 1346 阅读 · 2 评论 -
Linux进程间通信:信号、管道、信号量、共享内存、消息队列、socket
本章引自他人blog,用作自己的备忘录Linux进程间通信(一): 信号 signal()、sigaction()https://www.cnblogs.com/52php/p/5813867.htmlLinux进程间通信(二):信号集函数 sigemptyset()、sigprocmask()、sigpending()、sigsuspend()https://www.cnblogs.co...转载 2020-04-14 15:27:17 · 244 阅读 · 0 评论 -
linux内核信号处理机制--do_signal函数讲解 (适用mips架构)
Linux为了允许用户态进程之间的通信而引入signal.此外, 内核使用signal给进程通知系统事件 对于信号signal,你要记住的基本点如下: 信号分实时信号(编码值为[32,64])和非实时信号编码值为[1,31] ----实时意味着相同信号多次发送都会被加入悬挂信号队列,而不丢失 信号处理方式包括默认处理(eg:SIGKILL,SIGSTO...原创 2020-01-10 18:51:48 · 2511 阅读 · 0 评论 -
线程本地存储TLS(Thread Local Storage)的获取 (龙芯适用)
提到tls线程本地存储可能很多程序员会比较陌生,因为平时我们很少使用它。但是写C程序的人会经常用到一个errno变量来获取程序的错误码。这个errno在libc库里面的定义形式是/*in glibc-2.20 csu/errno.c*/__thread int errno;这里的__thread 关键字就是GCC内置的线程局部存储设施,每一个线程有一份独立实体,各个线程的值互不干扰。在近...原创 2020-01-10 10:27:28 · 484 阅读 · 0 评论 -
如何向linux kernel 提交patch
尽管linux kernel 源码托管在github 上,但是游客(只有read accession permission)想要提交代码并不能向其他开源库那样通过PR(pull request)申请merge,而是要通过git send-email 发送patch文件 的方式。 下面是我第一次提交代码的经历,也算是备忘录。步骤1:确保邮箱配置正确 ...原创 2019-11-28 15:41:50 · 2354 阅读 · 0 评论 -
让你的程序独占一个处理器
最近需要用ejtag调试CRIU程序中遇到的BUSERROR的问题,环境准备的第一件事就是要让被调试的程序独占一个处理器(核)。怎么做呢? 方法如下:一、隔离CPU(避免其它线程run在被隔离的CPU上)具体修改在/ boot/boot.cf的kernel列最末尾加上isolcpus=x,y,… (代表将CPUx CPUy隔离)title 'Loongnix 1.0 (Loongson)...原创 2019-09-26 18:09:27 · 2818 阅读 · 1 评论 -
LINUX内核(之3):内存管理之页page、区Zone、节点node、分配器slab
最近在学内核内存管理方面知识,查看相关书籍后整理了一下笔记。内核中对内存管理的实现涵盖了如下几方面知识: 1、内存中的物理内存页的管理 2、分配连续内存的系统 3、分配较小块内存的slab、slub和slob分配器 4、分配非连续内存块的vmalloc机制 5、进程的地址空间接下来逐个介绍。 一、内存中的物理内存管理 ----页(Page)的概念...原创 2019-11-16 15:54:00 · 2237 阅读 · 0 评论 -
linux 多线程信号处理总结
别人总结的很好,留着方便自己后期查阅,上链接原创地址:http://blog.chinaunix.net/uid-12274566-id-3050955.htmlhttps://www.cnblogs.com/cobbliu/p/5592659.htmllinux 多线程信号总结(一)1. 在多线程环境下,产生的信号是传递给整个进程的,一般而言,所有线程都有机会收到这个信号,...转载 2019-11-14 08:48:28 · 295 阅读 · 0 评论