当前位置:  技术问答>linux和unix

我最近看loop设备的源代码,里面有个问题始终不得解决。

    来源: 互联网  发布时间:2016-01-26

    本文导语:  loop.c文件。   loop与用户交互的底层支持主要是通过lo_ictol这个函数,它是根据不同的命令来执行不同的程序的。   static int lo_ioctl(struct inode * inode, struct file * file,  unsigned int cmd, unsigned long arg) {  struct loop_d...

loop.c文件。
 
loop与用户交互的底层支持主要是通过lo_ictol这个函数,它是根据不同的命令来执行不同的程序的。
 
static int lo_ioctl(struct inode * inode, struct file * file,
 unsigned int cmd, unsigned long arg)
{
 struct loop_device *lo = inode->i_bdev->bd_disk->private_data;
 int err;
 down(&lo->lo_ctl_mutex);
 switch (cmd) {
 case LOOP_SET_FD:
  err = loop_set_fd(lo, file, inode->i_bdev, arg);
  break;
 case LOOP_CHANGE_FD:
  err = loop_change_fd(lo, file, inode->i_bdev, arg);
  break;
 case LOOP_CLR_FD:
  err = loop_clr_fd(lo, inode->i_bdev);
  break;
 case LOOP_SET_STATUS:
  err = loop_set_status_old(lo, (struct loop_info __user *) arg);
  break;
 case LOOP_GET_STATUS:
  err = loop_get_status_old(lo, (struct loop_info __user *) arg);
  break;
 case LOOP_SET_STATUS64:
  err = loop_set_status64(lo, (struct loop_info64 __user *) arg);
  break;
 case LOOP_GET_STATUS64:
  err = loop_get_status64(lo, (struct loop_info64 __user *) arg);
  break;
 default:
  err = lo->ioctl ? lo->ioctl(lo, cmd, arg) : -EINVAL;
 }
 up(&lo->lo_ctl_mutex);
 return err;
}
对于不同的cmd,有不同arg。其中arg对应有好几种数据结构。我的问题是:内核是如何组织数据来形成这些数据结构的?还是这部分工作时由另外编写程序来实现的。
我找了很多资料,一直没有得到解答。希望大家能指点一下。

|
arg可以是一个整数也可以是一个指针。如果是一个指针的话当然什么数据结构都可以。只要传的和收的程序都知道就行。

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 死在Calibrating delay loop... 怎么解决。。
  • java命名空间java.applet接口audioclip的类成员方法: loop定义及介绍
  • Ubuntu9.04下怎么修改loop device的值,即max_loop=64?
  • java命名空间java.net接口socketoptions的类成员方法: ip_multicast_loop定义及介绍
  • /dev/loop 设备有什么功能?
  • java命名空间javax.sound.sampled接口clip的类成员方法: loop定义及介绍
  • 请教mount loop
  • java命名空间javax.sound.midi接口sequencer的类成员方法: loop_continuously定义及介绍
  • 请问什么是 loop文件系统 ?
  • java命名空间javax.sound.sampled接口clip的类成员方法: loop_continuously定义及介绍
  • loop设备
  • 基于 JVM 的编程语言 loop
  • 求助:各位大哥为什么会出现这样的错误啊(ioctl: LOOP_CLR_FD: 设备或资源忙)谢谢!
  • 脚本问题 if ls|grep -i $loop>/dev/null s>&1 怎么解释
  • 请问怎么使用象for这样的循环,用loop吗?
  • 在启动时能把loop类型的fs mount成root吗?
  • 求教!内核挂死在calibrating delay loop。。。。处!
  • 在linux内核的.config文件中,类似 CONFIG_CC_ALIGN_LOOPS=0 的语句是什么意思?
  • pcap_loop的pcap_handler的第三个参数是什么意思?


  • 站内导航:


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

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

    浙ICP备11055608号-3