如何在Linux中添加新的系统调用

发表于:2010-1-28 09:49

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

分享:

  (3) 重建新的Linux内核

  为使新的系统调用生效,需要重建Linux的内核。这需要以超级用户身份登录。

  #pwd
  /usr/src/linux
  #

  超级用户在当前工作目录(/usr/src/linux)下,才可以重建内核。

  #make config
  #make dep
  #make clearn
  #make bzImage

  编译完毕后,系统生成一可用于安装的、压缩的内核映象文件:

  /usr/src/linux/arch/i386/boot/bzImage

  (4) 用新的内核启动系统

  要使用新的系统调用,需要用重建的新内核重新引导系统。为此,需要修改/etc/lilo.conf文件,在我们的系统中,该文件内容如下:

  boot=/dev/hda
  map=/boot/map
  install=/boot/boot.b
  prompt
  timeout=50
  image=/boot/vmlinuz-2.2.5-15
  label=linux
  root=/dev/hdb1
  read-only
  other=/dev/hda1
  label=dos
  table=/dev/had

  首先编辑该文件,添加新的引导内核:

  image=/boot/bzImage-new
  label=linux-new
  root=/dev/hdb1
  read-only

  添加完毕,该文件内容如下所示:

  boot=/dev/hda
  map=/boot/map
  install=/boot/boot.b
  prompt
  timeout=50
  image=/boot/bzImage-new
  label=linux-new
  root=/dev/hdb1
  read-only
  image=/boot/vmlinuz-2.2.5-15
  label=linux
  root=/dev/hdb1
  read-only
  other=/dev/hda1
  label=dos
  table=/dev/hda

  这样,新的内核映象bzImage-new成为缺省的引导内核。

  为了使用新的lilo.conf配置文件,还应执行下面的命令:

  #cp /usr/src/linux/arch/i386/boot/zImage /boot/bzImage-new

  其次配置lilo:

  # /sbin/lilo

  现在,当重新引导系统时,在boot:提示符后面有三种选择:linux-new 、linux、dos,新内核成为缺省的引导内核。

  至此,新的Linux内核已经建立,新添加的系统调用已成为操作系统的一部分,重新启动Linux,用户就可以在应用程序中使用该系统调用了。

  (5)使用新的系统调用

  在应用程序中使用新添加的系统调用mycall。同样为实验目的,我们写了一个简单的例子xtdy.c。

  #include
  _syscall1(int,mycall,int,ret)
  main()
  {
  printf("%d n",mycall(100));
  }

  编译该程序:

  # cc -o xtdy xtdy.c

  执行:

  # xtdy

  结果:

  # 100

  注意,由于使用了系统调用,编译和执行程序时,用户都应该是超级用户身份。

22/2<12
重磅发布,2022软件测试行业现状调查报告~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2023
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号