首页 存档 技术 查看内容

Linux自主访问控制机制模块之详细描述-函数实现机制(22)

2018-3-30 13:00 |来自: 互联网 282 0

摘要: xattr.c文件 对该文件的相关函数继续进行详细解释: 5.ext4_xattr_ibody_get() 函数原型: static int ext4_xattr_ibody_get(structinode *inode, int name_index, const char *name,void *buffer,size_tbuffer_siz ...

xattr.c文件

对该文件的相关函数继续进行详细解释:

5.ext4_xattr_ibody_get()

函数原型:


static int ext4_xattr_ibody_get(structinode *inode, int name_index,

const char *name,void *buffer,size_tbuffer_size);


函数参数:inode表示要操作的目标文件;name_index表示扩展属性所属命名空间对应的处理程序在映射表中的索引;name表示要获得的扩展属性的名字;buffer指向用于存储扩展属性值的存储空间;buffer_size表示存储空间的长度。

函数功能:在索引节点的空闲空间中查找指定的扩展属性。

返回值:成功时返回扩展属性值的长度;反之返回相应的错误码。


6.ext4_xattr_get()

函数原型:


intext4_xattr_get(structinode *inode, int name_index, const char *name,

void *buffer,size_t buffer_size);


函数参数:inode表示要操作的目标文件;name_index表示扩展属性所属命名空间对应的处理程序在映射表中的索引;name表示要获得的扩展属性的名字;buffer指向用于存储扩展属性值的存储空间;buffer_size表示存储空间的长度。

函数功能:当缓冲区为空时,该函数用来计算属性值的长度;当缓冲区非空时,则将扩展属性的值拷贝到缓冲区中。

返回值:成功时返回相应的扩展属性值的长度;失败时返回相应的错误码。


7.ext4_xattr_update_super_block()

函数原型:


static void ext4_xattr_update_super_block(handle_t *handle,struct super_block *sb);


函数参数:handle表示相应的扩展属性处理程序;sb表示待判断的文件系统。

函数功能:判断参数sb指定的文件系统是否设置了EXT4_FEATURE_COMPAT_EXT_ATTR标志,如果没有,则设置该标志。

返回值:无。


8.ext4_xattr_set_entry()

函数原型:


static int ext4_xattr_set_entry(structext4_xattr_info*i,struct ext4_xattr_search*s);


函数参数:i表示待操作的扩展属性表项的相关信息;s表示扩展属性列表的相关信息并记录了待设置的扩展属性表项是否位于扩展属性列表中。

函数功能:根据参数指定的相关信息处理扩展属性的值。

返回值:成功时返回0;失败时返回相应的错误码。


9.ext4_xattr_block_find()

函数原型:


static int ext4_xattr_block_find(structinode *inode, struct ext4_xattr_info*i,

struct ext4_xattr_block_find*bs);


函数参数:inode表示表示待操作的目标文件;i表示待操作的扩展属性表项的相关信息; bs存放扩展属性列表的相关信息以及目标文件的扩展属性所在的缓冲区。

函数功能:在扩展属性所在的外部数据块中查找参数i指定的扩展属性。

返回值:成功执行时返回0;失败时返回相应的错误码。


10.ext4_xattr_block_set()

函数原型:


static int ext4_xattr_block_set(handle_t *handle, struct inode *inode,

struct ext4_xattr_info*i,

struct ext4_xattr_block_find*bs);


函数参数:handle表示用于日志处理的原子更新操作;inode表示待设置的目标文件;i表示要设置的扩展属性的相关信息;bs表示存放在数据块中的扩展属性及相应扩展属性的查找结果的相关信息。

函数功能:根据参数在扩展属性所在的外部数据块中创建、替换或删除一个扩展属性。如果数据缓冲区为空,则该函数用于删除相应的扩展属性;如果数据缓冲区非空,则替换现存的扩展属性值或创建一个的新的扩展属性。

返回值:成功时返回0;失败时返回相应的错误码。


声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部