4.4 ivy linux
2018-08-17 07:45:22 cui841923894 阅读数 428

源于https://kernelnewbies.org/Linux_4.4

1.更快更精简的支持同步I/O和异步I/O的loop设备
这个版本引入了支持同步异步I/O的loop块设备。在循环读/写loop文件有几个优点:同步I/O可以避免使用双缓存,减少内存使用;与用户控件同步I/O不同,不需要固定的页面成本;在某些情况下避免了上下文切换。

2.虚拟GPU驱动支持3D
延续Linux4.1的虚拟GPU驱动特性,增加了3D的支持,同时必须使用QEMU 2.5。

3.Open-Channel SSDs支持LightNVM
LightNVM是针对Open-Channel SSDs的子系统。提供一套新的接口,管理Open-Channel SSD以及执行IO操作。
详细说明:https://lwn.net/Articles/641247/

4.TCP监听器的快速路径完全无锁化,可以支持更大的伸缩性和更快的 TCP 服务器了。在一台测试服务器上,每秒钟处理了 3,500,000 个 SYN 包仍富有余力,有可能还能提升2-3个数量级。

5.在RAID/LVM层增加了对日志型 RAID 5 阵列的支持。

6.Unprivileged eBPF + persistent eBPF programs的支持

7.perf + eBPF integration
eBPF功能已与perf集成。 当给perf一个eBPF .c源文件(或者带clang参数编译的’bpf’目标文件)时,将自动构建,验证并加载到内核中,然后可以使用perf trace和 其他工具调试程序。

8.Block-layer I/O polling支持
详见:https://lwn.net/Articles/663879/

9.mlock2()系统调用可以在内存页错误时锁住内存。

这里写图片描述

2016-01-11 23:37:03 qiansg123 阅读数 133

Linus Torvalds在邮件列表上宣布发布Linux Kernel 4.4。4.4是一个长期支持版(LTS)。主要新特性包括:引入了新的系统调用mlock2(),支持延迟锁定内存页;块层I/O借鉴了一个网络堆栈技术——I/O轮询;用于固态硬盘设备底层控制的LightNVM;虚拟机GPU驱动支持使用主机的GPU加速3D渲染;TCP监听程序处理完全无锁,在测试中一台TCP服务器处理每秒350万个SYN包,仍然能有CPU周期可用,等等。详细可浏览kernelnewbies.org

2016-01-25 20:44:17 cmycmy123 阅读数 230

 Linux kernel release 4.x <http://kernel.org/>

Linux 内核4.0发行版

These are the release notes for Linux version 4.  Read them carefully,
as they tell you what this is all about, explain how to install the
kernel, and what to do if something goes wrong.

这是linux 版本4的发行说明。请仔细阅读,因为这些会告诉你这是什么,解释如何安装内核,出现问题如何处理。

WHAT IS LINUX?

  Linux is a clone of the operating system Unix, written from scratch by
  Linus Torvalds with assistance from a loosely-knit team of hackers across
  the Net. It aims towards POSIX and Single UNIX Specification compliance.

  It has all the features you would expect in a modern fully-fledged Unix,
  including true multitasking, virtual memory, shared libraries, demand
  loading, shared copy-on-write executables, proper memory management,
  and multistack networking including IPv4 and IPv6.

  It is distributed under the GNU General Public License - see the
  accompanying COPYING file for more details.

Linux是什么?

   Linux是操作系统Unix的克隆版,由Linus Torvalds从头编写,一个松散的黑客团队通过互联网协助编写。

它符合POSIX和单一UNIX规范。

   它拥有你期望的现代成熟的Unix操作系统的所有功能,包括真正的多任务、虚拟内存、共享库、按需加载、

写时复制共享可执行、独特的内存管理和包括IPv4、IPv6在内的多网络协议栈。

  它可以在GNU公共许可证下重新发行,请查看附件COPYING

 

  ......未完,希望有志翻译Linux4.4 文档的朋友一块合做。

2016-01-11 23:35:59 qiansg123 阅读数 25

Linus Torvalds在邮件列表上宣布发布Linux Kernel 4.4。4.4是一个长期支持版(LTS)。主要新特性包括:引入了新的系统调用mlock2(),支持延迟锁定内存页;块层I/O借鉴了一个网络堆栈技术——I/O轮询;用于固态硬盘设备底层控制的LightNVM;虚拟机GPU驱动支持使用主机的GPU加速3D渲染;TCP监听程序处理完全无锁,在测试中一台TCP服务器处理每秒350万个SYN包,仍然能有CPU周期可用,等等。详细可浏览kernelnewbies.org

2018-05-22 19:18:40 ASAP_Diablo 阅读数 423

本次实验主要工作是添加一个系统调用并使用,在此过程中需要编译内核。

1 实验内容

1.向Linux内核增加新的系统调用,实现整数四则运算的系统功能。
2.四则运算函数原型:
long my_oper(int* result, int num1, int num2, char* op)
3.系统函数原型:
/* 调用my_oper实现四则运算*/
long my_func(int count)

2 实验步骤

2.1 内核下载

实验用到的内核版本为4.4: linux-4.4.4.tar.xz
xz文件是对tar文件的再次压缩,先用xz命令解压后再用tar命令解压

xz -d linux-4.4.4.tar.xz
tar -xvf linux-4.4.4.tar

进入文件根目录,先make一遍,这里并不会对内核进行全部编译,只是预先生成一些内核必要的文件。
后续操作的根目录为./linux-4.4.4/

2.2 新增系统调用号

  • 在内核目录下修改
arch/x86/include/generated/uapi/asm/unistd_64.h
  • 添加新的系统调用号:
#define __NR_my_oper 333

这里写图片描述
其中_NR为内核系统调用前缀,my_oper为系统调用名,333位系统调用对应的编号。注意系统调用号必须唯一。

2.3 修改系统调用向量表

修改

arch/x86/entry/syscalls/syscall_64.tbl

添加新定义的系统调用声明

333 64 my_oper sys_my_func

注意:此处的系统调用号必须与之前声明的保持一致,my_oper为调用函数名,sys_my_func为实际调用的函数,也就是此处的my_oper必须是unistd_64.h中define __NR_后面定义的系统调用名。

这里写图片描述

2.4 添加系统调用函数声明

在内核目录下修改

include/linux/syscalls.h

添加声明:

asmlinkage long sys_my_func(int count);`

这里写图片描述`

2.5 添加系统调用的实现函数

添加系统调用的实现:在内核目录下

kernel/sys.c

添加具体的实现函数

 long my_oper(int* result, int num1, int num2, char* op)

这里写图片描述
添加SYSCALL_DEFINE1调用my_oper

SYSCALL_DEFINE1(my_func, int, count)

这里写图片描述

2.6 编译安装新内核

至此内核已经系统调用已经添加完毕,现在需要编译内核使得添加的系统调用生效。
在切换到root用户后可以直接编写shell脚本进行内核编译。确认在编译前已经安装libncurses和libssl-dev这两个依赖库,不然在编译中会报curse.h error:No such file or directory。

$ vim KernelCompiler.sh
/*  KernelCompiler.sh内容如下*/
#清除编译记录和临时文件
make mrproper
#选择要编译的模块,进入界面之后直接选择save然后exit
make menuconfig
apt-get install libncurses*
apt-get install libssl-dev
#烧写内核镜像(burn image), -j4指定多线程编译参数,最好与处理器核数对应

make bzImage -j4
#编译模块
make -j4 modules
#模块安装
make -j4 modules_install
#安装新内核
make install
/*KernelCompiler.sh */
#添加运行权限
$ chmod +x KernelCompiler.sh
#编译运行
$ ./KernelCompiler.sh

整个过程大概在一个小时左右, make bzImage步骤大概用去15分钟,make modules 和 modules_install大概会耗费50分钟。
编译完成之后利用 uname -a 来查看新内核是否安装成功

2.7 编写用户测试函数

为了测试添加的新的系统调用是否生效,我编写了一个测试函数来进行验证

/*
* testSyscall.cc
*/
#include <sys/syscall.h>
#include <stdio.h>
#include <unistd.h>


int main()
{
    int count = 10000 * 10000;
    /* 通过系统调用333调用自己编写的系统调用,count为参数*/
    long ret = syscall(333, count);
    printf("result is %ld\n", ret);
    return 0;
}
  • 实验结果分析
    这里写图片描述

可以看到这里函数的返回值是0,说明新增的系统调用成功运行。
通过$dmesg命令查看内核日志
这里写图片描述

AndroidM预移植到tiny4412

博文 来自: u013779722
没有更多推荐了,返回首页