当前位置:  建站>运营/SEO
本页文章导读:
    ▪Ubuntu12.04下为codelite增添更新源      1、获取codelite的公钥 sudo apt-key adv --fetch-keys http://repos.codelite.org/CodeLite.asc 2、查看自己系统信息 sudo lsb_release -a 例如: Distributor ID:    Ubuntu Description:       Ubunt.........
    ▪【Linux操作系统分析】Ubuntu12.04内核升级和添加系统调用      1 Ubuntu12.04内核升级 1 准备条件: 安装有Unbuntu12.04的机器或者虚拟机下载最新的稳定版Linux内核源码:下载地址是http://www.kernel.org/,现在最新的稳定版本是3.9.4root权限 2 解压文件到/usr/src.........
    ▪linux内核中memcpy和memmove函数的区别和实现      linux内核中memcpy和memmove函数的区别和实现Kernel version:2.6.32CPU architecture:ARMAuthor:ce123(http://blog.csdn.net/ce123)memcpy是把src指向的对象中的size个字符拷贝到dest所指向的对象中,返回指向结果对象的.........

[1]Ubuntu12.04下为codelite增添更新源
    来源: 互联网  发布时间: 2013-10-31
1、获取codelite的公钥

sudo apt-key adv --fetch-keys http://repos.codelite.org/CodeLite.asc

2、查看自己系统信息

 sudo lsb_release -a

例如:

Distributor ID:    Ubuntu

Description:       Ubuntu 12.04.2 LTS

Release:           12.04

Codename:        precise

3、根据上面的Codename,选择更新源

 sudo apt-add-repository "deb http://repos.codelite.org/ubuntu/ precise universe"
 sudo apt-get update

istro/release Lines to append debian squeeze deb http://repos.codelite.org/debian/ squeeze contrib debian wheezy deb http://repos.codelite.org/debian/ wheezy contrib ubuntu lucid deb http://repos.codelite.org/ubuntu/ lucid universe ubuntu oneiric deb http://repos.codelite.org/ubuntu/ oneiric universe ubuntu precise deb http://repos.codelite.org/ubuntu/ precise universe ubuntu quantal deb http://repos.codelite.org/ubuntu/ quantal universe ubuntu raring deb http://repos.codelite.org/ubuntu/ raring universe

作者:liaocs2008 发表于2013-6-2 21:07:59 原文链接
阅读:48 评论:0 查看评论

    
[2]【Linux操作系统分析】Ubuntu12.04内核升级和添加系统调用
    来源: 互联网  发布时间: 2013-10-31
1 Ubuntu12.04内核升级 1 准备条件:

  • 安装有Unbuntu12.04的机器或者虚拟机
  • 下载最新的稳定版Linux内核源码:下载地址是http://www.kernel.org/,现在最新的稳定版本是3.9.4
  • root权限


2 解压文件到/usr/src文件夹中
因为我是从本地系统直接复制到虚拟机里的这个文件夹中,所以会出现权限问题。要先拷贝到别的权限较低的文件夹中然后在终端进入root权限进行移动。


移动文件到指定文件夹


解压文件:
解压命令:
xz -d  linux-3.9.4.tar.xz
tar -xvf  linux-3.9.4.tar
第一条命令大概执行40秒到一分钟
第二条命令的执行过程:

解压之后:



解压完成,下面开始配置 编译和安装

3 进入linux-3.9.4目录,清除残留的.config和.o文件
输入命令:
make mrproper


4 配置编译选项
安装ncurses


进入ncurses-5.9目录,依次执行下面的命令:
cd ncurses-5.9
./configure 
make 
su root 
make install

按照你的系统环境制作安装配置文件





安装ncurses完成后


现在回到内核文件夹下/usr/src/linux-3.9.4执行命令
 make menuconfig
根据菜单提示,选择编译配置选项,并保存为配置文件.config


看到这个界面不敢乱选,把以前的.config文件拷过来加载一下吧,以前的文件也在/usr/src路径下的某个linux-header文件夹下



在前面的配置界面选择加载











5 确定依赖性
命令:
make dep
提示没有必要,可能是加载以前配置文件的原因


6 清理编译中间文件
命令:
make clean

7 生成新内核
命令:
make bzImage
时间:13:02 - 13:26


8 生成modules
make modules

9 安装modules
make modules_install

10 建立要载入ramdisk的映像文件
如果你的系统是跑在虚拟机里,那么这一步一定需要。
mkinittramfs -o /boot/initrd-linux3.9.4.img 3.9.4

11 安装内核
make install

12 配置grub引导程序
 grub引导程序自动生成


13 重启。
重启系统,从grub菜单中选中新内核引导linux。





2 添加自定义系统调用 1 添加系统调用函数,修改文件:/kernel/sys.c


2 添加系统调用号,修改文件 /arch/x86/systemcalls/syscall_32.tbl


3 添加声明到头文件,修改文件,/include/linux/syscalls.h


4 重新编译内核
见第一部分

5 测试
测试代码
#include <unistd.h>
#include <stdio.h>
int main()
{
	syscall(351,1);
	return 1;
}
查看运行结果命令

sudo dmesg -c


测试结果



作者:zs634134578 发表于2013-6-2 21:05:30 原文链接
阅读:36 评论:0 查看评论

    
[3]linux内核中memcpy和memmove函数的区别和实现
    来源: 互联网  发布时间: 2013-10-31

linux内核中memcpy和memmove函数的区别和实现

Kernel version:2.6.32

CPU architecture:ARM

Author:ce123(http://blog.csdn.net/ce123)

  • memcpy是把src指向的对象中的size个字符拷贝到dest所指向的对象中,返回指向结果对象的指针.   
  • memmove也是把src指向的对象中的size个字符拷贝到dest所指向的对象中,返回指向结果对象的指针,但这两个函数在处理内存区域重叠的方式不同.
注意memmove这个函数名称中有"move"这个单词,而实际上src处的数据仍然还在,并没有真的被"移动"了!这个函数名称有它的历史原因,是因为有了memcpy函数后,发现这个函数有问题,又发明了另一个没有问题的memcpy函数,但为了爆出兼容性依然保留了memcpy函数,而将新版本的memcpy函数改名为memmove函数.

内存重叠问题是指目的地址的内存空间的首地址,包含在源内存空间中,这两段内存空间有了交集,因而在使用memcpy进行内存复制操作时,这段重叠的内存空间会被破坏.这种情况在应用程序级代码中一般不会出现的,而在驱动或内核级代码中要十分小心,尽量使用memmove函数.

memcpy对内存空间有要求的,dest和src所指向的内存空间不能重叠,否则复制的数据是错误的.下面具体讲解一下这个错误是如何产生的.

如果内存空间布局入下图所示:


src所指向的内存空间后面部分数据被新拷贝的数据给覆盖了(也就是dest<=src+size).所以拷贝到最后,原来的数据肯定不是原来的数据,拷贝的数据也不是想要的数据,使用memcpy函数可以得到错误的结果.

再者,如果内存空间布局入下图所示:


虽然原来的数据不再是原来的数据(dest+size>=src),但拷贝的数据是原来的数据,使用memcpy函数可以得到正确的结果.因此,在使用memcpy这个函数之前,还需要做一个判断,如果dest<=src你才能使用这个函数不过完全没有必要,你直接使用memmove函数就可以了.memmove在拷贝之前就做了一个判断,如果dest <= src,就按照memcpy的思路拷贝,如果dest>src怎么办呢,看函数,它是从后面往前拷贝,这样就能正确拷贝数据了.根据上面的分析,理解下面的代码应该是一件很容易的事情.

551 #ifndef __HAVE_ARCH_MEMCPY
552 /**
553  * memcpy - Copy one area of memory to another
554  * @dest: Where to copy to
555  * @src: Where to copy from
556  * @count: The size of the area.
557  *
558  * You should not use this function to access IO space, use memcpy_toio()
559  * or memcpy_fromio() instead.
560  */
561 void *memcpy(void *dest, const void *src, size_t count)
562 {
563         char *tmp = dest;
564         const char *s = src;
565 
566         while (count--)
567                 *tmp++ = *s++;
568         return dest;
569 }
570 EXPORT_SYMBOL(memcpy);
571 #endif
572 
573 #ifndef __HAVE_ARCH_MEMMOVE
574 /**
575  * memmove - Copy one area of memory to another
576  * @dest: Where to copy to
577  * @src: Where to copy from
578  * @count: The size of the area.
579  *
580  * Unlike memcpy(), memmove() copes with overlapping areas.
581  */
582 void *memmove(void *dest, const void *src, size_t count)
583 {
584         char *tmp;
585         const char *s;
586 
587         if (dest <= src) {
588                 tmp = dest;
589                 s = src;
590                 while (count--)
591                         *tmp++ = *s++;
592         } else {
593                 tmp = dest;
594                 tmp += count;
595                 s = src;
596                 s += count;
597                 while (count--)
598                         *--tmp = *--s;
599         }
600         return dest;
601 }
602 EXPORT_SYMBOL(memmove);
603 #endif

作者:ce123 发表于2013-6-3 8:20:58 原文链接
阅读:102 评论:0 查看评论

    
最新技术文章:
▪SQVI和SAP查询QUERY的区别和使用注意事项    ▪彻底理解Cisco/Linux/Windows的IP路由    ▪Exchange 2010 处于禁止发送用户自动收到来自IT...
▪MB_CHANGE_DOCUMENT使用方法    ▪ALV的html表头    ▪【译】如何精确判断最终用户响应时间过长的...
▪apache2.4.4启用deflate压缩    ▪使用vmware 配置centos 6.0+ 网络出现的各种问题...    ▪十句话教你学会Linux数据流重定向
▪centos6.x已经安装的系统添加图形界面    ▪Linux查看CPU和内存使用情况    ▪win7问题解决,凭据管理器和无法访问,不允...
▪Dynamics CRM 2013 初体验(4):不再被支持的功...    ▪win7下制作ubuntu系统安装启动盘和U盘安装ubuntu...    ▪Linux cp -a用法
▪Windows Server时间服务器配置方法    ▪Tomcat+memcached实现Session共享    ▪Linux修改系统环境变量PATH路径的方法
▪Citrix 服务器虚拟化之二十七 XenApp6.5发布服务...    ▪搭建本地Ubuntu 镜像服务器    ▪Create local metadata resource of yum
▪tsm ANS0326E问题处理    ▪Windows SVN变化邮件通知(Python2.7实现)    ▪linux下的内核测试工具——perf使用简介
▪Nginx TCP Proxy模块的编译安装    ▪OSX: SSH密钥使用日记(2)    ▪OSX: SSH密钥使用日记(1)
▪Manually start and stop Oracle XE in Ubuntu    ▪Disable autostart of Oracle-xe in Ubuntu    ▪tar命令-linux
▪xtrabackup-2.1.2-611安装    ▪无废话ubuntu 13.4文件共享配置    ▪Unix文本处理工具之sed
▪hpux 操作系统 磁带备份与恢复    ▪HP DL360 G7通过iLO部署系统    ▪Redhat 6.0中VNC Server的配置方法
▪hpux 操作系统磁带备份与恢复    ▪用C++编程调用libvirt的API来创建KVM虚拟机    ▪hpux- hp小型机日常硬件故障处理case(一)
▪web集群时session同步的几种方法(统计)    ▪inux常用命令大全    ▪BAT 批处理实现循环备份N天文件夹
▪BIND9私有DNS服务器小环境搭建实验    ▪Exchange2013增量备份    ▪OSSEC Monitor your App log file
▪《深入理解Nginx》阅读与实践(三):使用upstre...    ▪如何给Fedora 15创建磁盘分区    ▪Packet Sniffer Code in C using sockets
▪Error, some other host already uses address    ▪修改uCOS_II以实现“优先级+时间片”联合调度    ▪weblogic开发模式与生产模式介绍
▪Wireshark 高级特性    ▪ubuntu13.04版本下安装RabbitVCS,类似windows的Tortoi...    ▪Apache 一台主机绑定多个域名及虚拟主机
▪linux安全设置    ▪RHEL双网卡绑定    ▪Linux shell if参数
▪Windows配置路由时可以指定源地址啦    ▪centos安装vim7.4    ▪S3C2410 实验三——块拷贝、字拷贝(寄存器的...
▪系统运维——日志处理    ▪ip_conntrack缓存neighbour    ▪关键在封装并发出了帧-IP冲突也无所谓
▪weblogic11g 安装——linux 无图形界面    ▪《数据通信与网络》笔记--SCTP    ▪《数据通信与网络》笔记--TCP中的拥塞控制
▪weblogic11g 安装集群 —— win2003 系统、单台主...    ▪weblogic11g 节点管理器 nodemanager    ▪Citrix 服务器虚拟化之二十六 应用程序虚拟化...
▪如何将windows下的文件夹挂载到linux虚拟机下    ▪在64位AIX6.1下安装SAP JCo    ▪Outlook启动时提示“找不到文件Outlook.pst文件”...
▪weblogic8.1 登陆5 ip 限制    ▪weblogic 内存 及 内存溢出    ▪手把手教你在Windows端搭建Redmine项目管理软件
▪启动及重新启动nginx,重启nginx后丢失nginx.pid问...    ▪Win7实现快速启动栏并实现靠左边的终极操作...    ▪《深入理解Nginx》阅读与实践(二):配置项...
▪显示grub引导菜单    ▪nagios监控主机    ▪linux各种数据流重定向
▪centOS安装chrome浏览器    ▪Slackware 14 安装完全指南    ▪SharePoint 2013的100个新功能之内容管理(三)
▪Citrix 服务器虚拟化之二十一 桌面虚拟化之部...    ▪[问,ask]ubuntu13.04安装vncserver后只显示桌面,不显...    ▪Win7中IIS出现“HTTP 错误 404.17 - Not Found 请求的...
▪CentOS快速安装最新版本的SaltStack    ▪CentOS 6.4 快速安装Nginx笔记    ▪磁盘管理——RAID 0
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3