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

看书遇到点问题,请指教

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

    本文导语:  在看内核源代码情景分析(2.4版本)看到共享内存时,碰到了一个奇怪的问题,就是当创建一个shm文件系统文件inode节点时,有这么一段代码: struct inode *shmem_get_inode(struct super_block *sb, int mode, int dev) { struct inode * inode;...

在看内核源代码情景分析(2.4版本)看到共享内存时,碰到了一个奇怪的问题,就是当创建一个shm文件系统文件inode节点时,有这么一段代码:
struct inode *shmem_get_inode(struct super_block *sb, int mode, int dev)
{
struct inode * inode;

spin_lock (&sb->u.shmem_sb.stat_lock);
if (!sb->u.shmem_sb.free_inodes) {
spin_unlock (&sb->u.shmem_sb.stat_lock);
return NULL;
}
sb->u.shmem_sb.free_inodes--;
spin_unlock (&sb->u.shmem_sb.stat_lock);

inode = new_inode(sb);
if (inode) {
inode->i_mode = mode;
inode->i_uid = current->fsuid;
inode->i_gid = current->fsgid;
inode->i_blksize = PAGE_CACHE_SIZE;
inode->i_blocks = 0;
inode->i_rdev = to_kdev_t(dev);
inode->i_mapping->a_ops = &shmem_aops;
inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME;
spin_lock_init (&inode->u.shmem_i.lock);
switch (mode & S_IFMT) {
default:
init_special_inode(inode, mode, dev);
break;
case S_IFREG:
inode->i_op = &shmem_inode_operations;
inode->i_fop = &shmem_file_operations;
break;
case S_IFDIR:
inode->i_op = &shmem_dir_inode_operations;
inode->i_fop = &shmem_dir_operations;
break;
case S_IFLNK:
inode->i_op = &page_symlink_inode_operations;
break;
}
spin_lock (&shmem_ilock);
list_add (&inode->u.shmem_i.list, &shmem_inodes);
spin_unlock (&shmem_ilock);
}
return inode;
}
以下这行我不能理解:
inode->i_mapping->a_ops = &shmem_aops;
inode有个address_space指针i_mapping,上面代码中都没有为i_mapping指向的address_space分配空间,为什么就能对a_ops赋值呢?
谢谢~

|
shmem_aops 是一个静态的文件范围内的变量。你看看它的定义:
static const struct address_space_operation shem_aops={
...
}
在这个地方已经给它分配空间了。
我是在2.6内核中看到的,代码应该差不多。

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












  • 相关文章推荐
  • 看书的问题,请帮忙!
  • 看书烦了,上来逛逛~~~
  • 我想看书!
  • 看书当中发现:书上的函数这样写法:
  • 请给出linux 学习书籍以及循序渐进的看书顺序
  • 笔试和面试时回答不出具体服务的配置怎么办?有些Linux服务都是看书才会做的。
  • 看书时有些东西高不太明白,请高手给指点一下,谢谢
  • 看书的时候有个地方不懂:instanceof的用法,以及它的概念。不要写英文呀:)
  • 如果没有LINUX环境,仅凭看书,如何在短时间内尽可能多地熟悉LINUX下的操作?
  • 光看书没什么用,所以偶想用JAVA做个什么东东的,请高手指点
  • 要考试了 可是平时没有看书 老师出了两道题 大家帮帮忙 小弟先谢过了 ~~~


  • 站内导航:


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

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

    浙ICP备11055608号-3