最近在看esp32的idf,有一些宏定义使用了do while(0)这种看起来好像没啥用的代码。然后我查了一下资料,发现在linux内核代码中经常用到这个东西! 现在就将这个东西整理一下。 为什么在内核中碰到很多 有以下几点原因: 1、空语句在编译的时候会出现警告,所以有必要用#define FOO ...
分类:
其他好文 时间:
2017-01-18 13:37:34
阅读次数:
204
我们将要做什么? 你将会学到 如何使用 "app shell" 的方法来设计和构建应用程序。 如何让你的应用程序能够离线工作。 如何存储数据以在离线时使用。 你需要 Chrome 52 或以上(浏览器建议使用正宗google Chrome,经测试chrome内核的百度浏览器无法安装下面的web se ...
分类:
移动开发 时间:
2017-01-17 19:50:53
阅读次数:
208
Git是一个分布式的版本控制系统,最初由Linus Torvalds编写,用作Linux内核代码的管理。作为一个程序员,我们需要掌握其用法。 作为开源代码库以及版本控制系统,Github目前拥有140多万开发者用户。随着越来越多的应用程序转移到了云上,Github已经成为了管理软件开发以及发现已有代 ...
用户空间的程序无法直接执行内核代码。它们不能直接调用内核空间中的函数,因为内核驻留在受保护的地址空间上。如果进程可以直接在内核的地址空间上读写的话,系统安全就会失去控制。所以,应用程序应该以某种方式通知系统,告诉内核自己需要执行一个系统调用,希望系统切换到内核态,这样内核就可以代表应用程序来执行该系 ...
分类:
系统相关 时间:
2017-01-16 21:38:48
阅读次数:
269
当一个任务(进程)执行系统调用而陷入内核代码中执行时,我们就称进程处于内核运行态(或简称为内核态)。此时处理器处于特权级最高的(0级)内核代码中执行。当进程处于内核态时,执行的内核代码会使用当前进程的内核栈。每个进程都有自己的内核栈。当进程在执行用户自己的代码时,则称其处于用户运行态(用户态)。即此 ...
分类:
其他好文 时间:
2016-12-27 09:59:43
阅读次数:
228
本节内容概要描述了Linux内核从开机引导到系统正常运行过程中对堆栈的使用方式。这部分内容的说明与内核代码关系比较密切,可以先跳过。在开始阅读相应代码时再回来仔细研究。 Linux 0.12系统中共使用了4种堆栈。第1种是系统引导初始化时临时使用的堆栈;第2种是进入保护模式之后提供内核程序初始化使用 ...
分类:
系统相关 时间:
2016-12-27 09:59:20
阅读次数:
341
在linux kernel里面链表应用非常广泛。 我们在应用程序中,定义一个链表结构通常要包含数据域,如下: typedef struct _listNode{ int data; struct _listNode *prev, *next; }ListNode; 但在内核代码中,定义的链表都没有数 ...
分类:
系统相关 时间:
2016-12-25 23:48:00
阅读次数:
364
浏览内核代码之前,有必要知道内核源码的整体分布情况,按照惯例,内核代码安装在/usr/src/linux目录下,该目录下的每一个子目录都代表了一个特定的内核功能性子集,下面针对2.6.23版本进行简单描述。(1)Documentation。这个目录下面没有内核代码,只有很多质量参差不齐的文档,但往往 ...
分类:
其他好文 时间:
2016-12-19 11:34:36
阅读次数:
133
操作机:Ubuntu15.10(内核版本4.2.0)chocobo_root:是本次试验的POC文件,通过执行它来验证漏洞漏洞简介此漏洞可用于从未授权进程中执行内核代码,攻击者只需要本地普通权限,就能利用该漏洞导致拒绝服务(系统奔溃)或提升到管理员权限。这个漏洞最早出现于2011年4月19日的..
分类:
系统相关 时间:
2016-12-17 23:33:14
阅读次数:
877
Linux升级命令有两个分别是yum upgrade和yum update, 这个两个命令是有区别的:代码如下:yum -y update升级所有包同时也升级软件和系统内核代码如下:yum -y upgrade只升级所有包,不升级软件和系统内核实验分别测试 yum -y upgrade和yum -y ...
分类:
其他好文 时间:
2016-12-08 20:55:18
阅读次数:
266