- 博客(154)
- 收藏
- 关注
原创 arm64地址与页表的杂记 一
地址的一些宏定义CPU不可能一直执行位置无关指令,所以必须将 kernel 本身的虚拟地址(运行地址)映射到它实际所在的物理地址,这个通过为 MMU 创建页表来实现,一旦页表创建完成,并打开了MMU,CPU发出的虚拟地址,可以由 MMU 转换成实际的物理地址,这样CPU执行kernel代码将不再受限。KIMAGE_VADDR定义:arch/arm64/include/asm/memory.h#define KIMAGE_VADDR (MODULES_END)default 39 if ARM64
2020-11-09 11:17:18
1189
原创 在 x86_64平台下 调试 arm 的用户态程序
在 x86_64平台下 调试 arm 的用户态程序实验:arm 用户态程序是本地交叉编译出来的,如果是别的程序直接拷贝过来,可能会有兼容性问题;file hellohello: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.3, for GNU/Linux 3.2.0, BuildID[sha1]=dcfe92f8af30811bd3ca0
2020-07-18 19:25:18
718
原创 gcc 中的 unspec 与 unspec_volatile
gcc 中的 unspec 与 unspec_volatile未完待续。。。。。。。。。case 1:Dump of assembler code for function main: 0x00000000000006aa <+0>: push rbp 0x00000000000006ab <+1>: mov rbp,rsp 0x00000000000006ae <+4>: sub rsp,0x30 0
2020-06-25 12:00:30
1045
原创 gcc中如何控制寄存器一
gcc中如何控制寄存器一case 1控制寄存器的分配,最直接的方法是改源码,不过这里打算介绍一点case,来说明不修改源码的情况下,一些编译选项或者代码中的声明方式是如何影响寄存器分配的。代码int main(){ int b = 0x100; int i; int v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15; v1 = v1 + b; v2 = v2 + b;
2020-06-21 14:27:07
1014
原创 gcc 插件实践 一
gcc 插件实践 一重要内容参考自 https://zhuanlan.zhihu.com/p/49490338在ubuntu中直接实践以下代码,通常会遇见以下几种错误。/* ------ plugin1.c ------ */#include "gcc-plugin.h"#include "plugin-version.h"int plugin_is_GPL_compatible;...
2020-02-24 21:12:53
2091
5
转载 深入理解 Linux 的 RCU 机制
深入理解 Linux 的 RCU 机制转载 https://www.cnblogs.com/qcloud1001/p/7755331.html欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~作者:梁康RCU(Read-Copy Update),是 Linux 中比较重要的一种同步机制。顾名思义就是“读,拷贝更新”,再直白点是“随意读,但更新数据的时候,需要先复制一份副本,在副本上完...
2020-02-23 23:02:37
273
1
转载 Linux中的spinlock机制[三] - qspinlock
原文转载自 https://zhuanlan.zhihu.com/p/100546935Linux中的spinlock机制[三] - qspinlock上文说到,MCS lock可以解决在锁的争用比较激烈的场景下,cache line无谓刷新的问题,但它内含一个指针,所以更消耗存储空间,但这个指针又是不可或缺的,因为正是依靠这个指针,持有spinlock的CPU才能找到等待队列中的下一个节点,...
2020-02-05 22:02:26
1050
转载 对优化说不 - Linux中的Barrier
原文引用自 [https://zhuanlan.zhihu.com/p/96001570]感谢原作者对优化说不 - Linux中的Barrier我们编写的源代码需要经过编译器转换成机器指令,最后由CPU执行这些指令。编译器作为一个“翻译官”,并不会老老实实地逐条翻译,而是会对我们的代码按照自己的“想法”进行调整和重组。CPU作为一个执行部件,对交给它的指令也不会规规矩矩的逐条执行,而是会重...
2020-02-05 21:32:52
960
转载 Linux内核Makefile文件
本文是冷烟花原创,转载请注明出处!https://www.cnblogs.com/jason-lu/p/3728198.htmlLinux内核Makefile文件(翻译自内核手册)–译自Linux3.9.5 Kernel Makefiles(内核目录documention/kbuild/makefiles.txt)kbuild(kernel build)内核编译器This docume...
2020-01-03 11:18:37
935
转载 Linux内核升级
本文作者: Jason hu本文链接: http://jasonhzy.github.io/2019/02/06/ubuntu-kernel-upgrade/版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!Linux内核升级本文作者: Jason hu本文链接: http://jasonhzy.github.io/2019/02...
2019-12-22 22:02:26
228
原创 实现64位操作系统的问题解决系列:(三)程序4-11 因为__switch_to符号未定义,编译失败
实现64位操作系统的问题解决系列:(三)程序4-11 因为__switch_to符号未定义,编译失败ub16或者ub18上实践田宇大佬的64位操作系统的设计与实现,因为环境的原因,书中提供的代码并不能完全编译成功,前面我写了实现64位操作系统的问题解决系列:(一)和(二)基本编译到程序4-10都不会出问题,但是到程序4-11就会 因为__switch_to符号未定义,编译失败。问题描述经过实...
2019-12-14 20:19:32
524
2
原创 简单的内核内存查看方法
简单的内核内存查看方法有时候需要调试内核的内存,又不想搭建qemu调试环境的话,可以简单写一个内核模块,来测试一下。直接看代码注意:环境ub16函数__get_free_page不要用get_free_page$ cat hello.c#include <linux/module.h>#include <linux/slab.h>#include <l...
2019-12-11 23:15:09
1217
原创 group test
void list_from_chunks(Elem **ptr, Elem **chunks, int avoid, int group_len){ int next = (avoid+1)%group_len; Elem *other = chunks[avoid]; Elem *tmp = other; other->prev = NULL; p...
2019-10-13 16:47:06
294
原创 linux 怎么看自己cache info
linux 怎么看自己cahce info到如下:root@zhangji16vm:/sys/devices/system/cpu/cpu0/cache# pwd/sys/devices/system/cpu/cpu0/cacheroot@zhangji16vm:/sys/devices/system/cpu/cpu0/cache# ls -a. .. index0 index1 ...
2019-09-24 16:07:08
908
转载 linux 下设置线程优先级
linux 下设置线程优先级原文链接:http://www.cnblogs.com/xiaotlili/p/3510224.htmlroot@ubuntu:tmp# cat test2.c#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <pthread.h>...
2019-09-12 11:44:24
6717
转载 Linux perf 1.1、perf_event内核框架
转载 感谢原文作者 Linux perf 1.1、perf_event内核框架 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...
2019-09-07 14:54:34
1509
1
原创 mmap 持续跟进
mmap 函数demo1zhangji16@zhangji16vm:/tmp$ cat demo.c #include <stdio.h>#include <stdlib.h>#include <string.h>#include <stdint.h>#include <stdbool.h>#include <sig...
2019-08-31 10:21:03
185
转载 驱动参数传递
驱动参数传递直接看代码root@zhangji16vm:/home/zhangji16/c_study/ko_study/prj1# cat hello.c#include <linux/init.h>#include <linux/module.h>#include <linux/moduleparam.h> MODULE_LICENSE("Du...
2019-08-30 14:55:30
836
原创 virsh xml创建kvm虚拟机
virsh xml创建kvm虚拟机准备工作sudo apt-get updatesudo apt-get install qemu-kvm sudo apt-get install vnc4serversudo apt-get install bridge-utils增加网卡内容如下:root@zhangji16vm:/home/prj1# cat /etc/network/in...
2019-08-24 16:00:31
2812
转载 Linux shell实现多进程并发执行
二次转载自 https://blog.csdn.net/hellojoy/article/details/77340238在bash中,使用后台任务来实现任务的“多进程化”。在不加控制的模式下,不管有多少任务,全部都后台执行。也就是说,在这种情况下,有多少任务就有多少“进程”在同时执行。我们就先实现第一种情况:实例一:正常情况脚本———————————————————————————–#!...
2019-08-15 11:57:10
3688
转载 linux下把进程/线程绑定到特定cpu核上运行
转载自 https://blog.csdn.net/guotianqing/article/details/80958281 感谢原文作者的分享概述现在大家使用的基本上都是多核cpu,一般是4核的。平时应用程序在运行时都是由操作系统管理的。操作系统对应用进程进行调度,使其在不同的核上轮番运行。对于普通的应用,操作系统的默认调度机制是没有问题的。但是,当某个进程需要较高的运行效率时,就有必要考...
2019-08-14 20:20:52
786
原创 ubuntu 切换内核镜像
ubuntu 切换内核镜像产生initramfs image映像zhangji16@zhangji16vm:/usr/src/linux-4.14.1$ sudo mkinitramfs -o /boot/initrd.img-4.14.1更新initramfszhangji16@zhangji16vm:/usr/src$ sudo update-initramfs -c -k 4.14....
2019-08-11 08:32:48
831
原创 PyQt5中设置QtreeWidget水平滚动条
PyQt5中设置QtreeWidget水平滚动条这个问题,困惑我好一段时间,网上找了很多资料,各种尝试都没解决,隐隐约约在一个论坛中一个作者提到一句话,才得到解决。问题描述如下:开发过程中,有时候会去开发树形展示的界面,尤其文件管理系统时。由于pyqt5 单独python的文档比较少,大多是基于C++写的文档,所以大家在开发的时候,基本都是经验加摸着石头过河的方式在python中开发Qt界面...
2019-08-07 11:24:14
3215
转载 signal 阻塞与屏蔽
signal,此函数相对简单一些,给定一个信号,给出信号处理函数则可,当然,函数简单,其功能也相对简单许多,简单给出个函数例子如下: 1 #include <signal.h> 2 #include <stdio.h> 3 #include <unistd.h> 4 5 void ouch(int sig) 6 { 7 pr...
2019-08-04 19:28:36
2500
转载 ucontext
转载自 https://blog.csdn.net/qq910894904/article/details/41911175谢谢原文作者1.干货写在前面协程是一种用户态的轻量级线程。本篇主要研究协程的C/C++的实现。首先我们可以看看有哪些语言已经具备协程语义:比较重量级的有C#、erlang、golang*轻量级有python、lua、javascript、ruby还有函数式的sc...
2019-08-04 16:54:00
1055
转载 “ucontext” 机制 简介
转载自http://blog.csdn.net/kobejayandy/article/details/41779837 谢谢原文作者原理简介所谓 “ucontext” 机制是 GNU C 库提供的一组用于创建、保存、切换用户态执行“上下文”(context)的API,可以看作是 “setjmp/long_jmp” 的“升级版”,主要包括以下四个函数:void makecontext(uc...
2019-08-04 15:54:10
1331
原创 Linux内核漏洞环境搭建方法二
Linux内核漏洞环境搭建方法二检查本地内核版本号假如即将调试的内核版本是 4.14.1,先检查一下本地内核的版本号,如下:zhangji16@zhangji16vm:~/c_study/kernel_prj$ uname -aLinux zhangji16vm 4.4.0-154-generic #181-Ubuntu SMP Tue Jun 25 05:29:03 UTC 2019 x...
2019-07-28 22:57:28
688
原创 python2 手动安装Crypto
python2 手动安装Crypto在 IDA 的命令行敲击如下命令,报错from Crypto import RandomImportError: No module named Crypto说明我们需要给IDA 的python安装一个包 Crtpto本来打算pip 安装的,但是似乎这个安装方式,网上异口同声都说很坑,对于python2来讲,所以打算手动安装。下载 Crypto 的...
2019-07-28 09:22:26
4762
1
原创 命令记录操作
命令记录操作有时候在终端写了很多命令干一个事情,但是之后,可能就容易忘记掉当时做这件事的命令写入过程,还有一种场景就是,找了大牛来自己电脑上帮自己干个事,可以把大牛的命令都自动化的记录下来,是很方便的。其实命令记录操作的使用命令很简单,至少ubuntu是自带安装的,其他linux发行版估计也是。基本使用方法/tmp$ script -helpUsage: script [options...
2019-07-14 08:15:46
153
转载 欢迎使用Markdown编辑器 盗用了,记录一下
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Ma...
2019-07-14 07:55:30
102
转载 python单例模式Singleton
转载自 https://blog.csdn.net/lqxqust/article/details/51910007python单例模式SingletonSingleton模式即单例对象必须必须保证只有一个实例存在。可以说Singleton是设计模式中最基本一种设计模式,在学习设计模式时一般都会先了解该模式。在Python中实现单例模式有很多方法,下面简单总结以下,可以根据情况选择适合自己业务...
2019-07-06 07:38:21
199
转载 Python标准库14 数据库 (sqlite3)
作者:Vamei 出处:http://www.cnblogs.com/vamei感谢作者 同意转载Python标准库14 数据库 (sqlite3)Python自带一个轻量级的关系型数据库SQLite。这一数据库使用SQL语言。SQLite作为后端数据库,可以搭配Python建网站,或者制作有数据存储需求的工具。SQLite还在其它领域有广泛的应用,比如HTML5和移动端。Python标准库...
2019-06-26 21:35:00
146
原创 objdump按照指定架构反汇编 裸二进制文件
objdump按照指定架构反汇编 裸二进制文件因为某些特殊原因,不会把汇编代码直接编译成一个完整的可执行文件,直接编译成纯二进制的文件,以便读到内存中,供其他程序执行使用。例如:/prj1$ cat bin.S.globl _start .code16_start: mov $0x3f8, %dx add %bl, %al add $'0', %al ...
2019-06-23 11:13:14
4545
转载 无边框自定义标题栏及最大化最小化窗体大小调整
无边框自定义标题栏及最大化最小化窗体大小调整转自:https://www.cnblogs.com/jyroy/p/9461317.html陈述隐藏掉系统的控制栏,实现了自定义的标题控制栏,以及关闭/最大化/最小化的功能,自由调整窗体大小的功能,代码内有详细注释只要把MainWindow类自己实现就可以了vm16/wangyiyun_prj$ cat run.py #!/usr/bin/...
2019-06-19 16:54:05
2025
4
转载 PyQt5 多线程相关一些例子
PyQt5 多线程相关一些例子demo1 from https://www.cnblogs.com/hhh5460/p/5175322.htmlfrom PyQt5.QtWidgets import QApplication, QLabel, QWidget, QGridLayoutfrom PyQt5.QtCore import QThread, QObject, pyqtSignal, ...
2019-06-14 13:44:11
22842
原创 partial 函数之参数传入
partial 函数之参数传入zj@zj-virtual-machine:/tmp$ cat callback.py#!/usr/bin/env python# coding=utf-8from functools import partialclass D(object): def __init__(self, num): self._num = num ...
2019-06-08 22:19:43
1101
原创 python 继承顺序系列 二
python 继承顺序系列 二直接给出例子,你知道函数的继承顺序吗? 看下面的例子#!/usr/bin/env python# coding=utf-8class Ser(object): def build(self): print("Ser build self: %s"%self)class Def(Ser): def build_default(...
2019-06-03 21:34:55
343
原创 使用类型来初始化字典
使用类型来初始化字典可以按照所需类型来初始化字典>>> from collections import defaultdict>>> dd = defaultdict(list)>>> dddefaultdict(<type 'list'>, {})>>> dd = defaultdict(list)...
2019-06-02 09:03:05
381
转载 python 元类系列三
转载自 https://blog.csdn.net/weixin_34015860/article/details/88923287python 元类系列 一先简单介绍下Python中的元类(metaclass)。元类就是创建类的类,对于元类来说,类是它的实例,isinstance(cls, metaclass)将返回True。Python中的所有类,都是type的实例,换句话说,type是元...
2019-05-31 17:11:27
131
转载 python 元类系列 二
本文转载自 https://www.cnblogs.com/zhaoshizi/p/9180886.html关于six.with_metaclass(ABCMeta, object)的理解在学习Python过程中,看到了生成虚基类的方式,class PeopleBase(six.with_metaclass(ABCMeta, object)): @abstractmethod ...
2019-05-31 07:55:09
155
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人