免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 863 | 回复: 0

linux 1.0 内核注解 linux/fs/ext2/ioctl.c [复制链接]

论坛徽章:
0
发表于 2009-05-29 18:26 |显示全部楼层
/********************************************
*Created By: Prometheus
*Date        : 2009-5-29   
********************************************/
/*
* linux/fs/ext2/ioctl.c
*
* Copyright (C) 1993, 1994  Remy Card (
card@masi.ibp.fr
)
*                           Laboratoire MASI - Institut Blaise Pascal
*                           Universite Pierre et Marie Curie (Paris VI)
*/
#include
#include
#include
#include
#include
#include
//很少,就是对节点的标记和版本进行设置操作
//是调用了VFS后面的联合进行特定文件系统的操作的
int ext2_ioctl (struct inode * inode, struct file * filp, unsigned int cmd,
  unsigned long arg)
{
ext2_debug ("cmd = %u, arg = %lu\n", cmd, arg);
switch (cmd) {
case EXT2_IOC_GETFLAGS:
  put_fs_long (inode->u.ext2_i.i_flags, (long *) arg);
  return 0;
case EXT2_IOC_SETFLAGS:
  if ((current->euid != inode->i_uid) && !suser())
   return -EPERM;
  if (IS_RDONLY(inode)) //可能是检测节点本身是否是可以改变的
   return -EROFS;
  inode->u.ext2_i.i_flags = get_fs_long ((long *) arg);
  inode->i_ctime = CURRENT_TIME;
  inode->i_dirt = 1;
  return 0;
case EXT2_IOC_GETVERSION:
  put_fs_long (inode->u.ext2_i.i_version, (long *) arg);
  return 0;
case EXT2_IOC_SETVERSION:
  if ((current->euid != inode->i_uid) && !suser())
   return -EPERM;
  if (IS_RDONLY(inode))
   return -EROFS;
  inode->u.ext2_i.i_version = get_fs_long ((long *) arg);
  inode->i_ctime = CURRENT_TIME;
  inode->i_dirt = 1;
  return 0;
default:
  return -EINVAL;
}
}

文档地址:
http://blogimg.chinaunix.net/blog/upfile2/090529182330.pdf


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/90306/showart_1947669.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP