函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:ipc\mqueue.c Create Date:2022-07-27 18:25:39
Last Modify:2020-03-17 23:00:47 Copyright©Brick
首页 函数Tree
注解内核,赢得工具下载SCCTEnglish

函数名称:mqueue_get_inode

函数原型:static struct inode *mqueue_get_inode(struct super_block *sb, struct ipc_namespace *ipc_ns, umode_t mode, struct mq_attr *attr)

返回类型:struct inode

参数:

类型参数名称
struct super_block *sb
struct ipc_namespace *ipc_ns
umode_tmode
struct mq_attr *attr
235  u等于current_user()
237  ret等于负ENOMEM
239  inode等于取新的索引节点
240  如果非inode则转到:err
243  Stat data, not accessed from path walking 等于get_next_ino()
244  i_mode等于mode
245  i_uid等于current_fsuid()
246  i_gid等于current_fsgid()
247  i_mtime等于i_ctime等于i_atime等于current_time(inode)
249  如果S_ISREG(mode)则
253  rmer ->i_op->default_file_ops 等于mqueue_file_operations
254  i_size等于FILENT_SIZE
256  info等于MQUEUE_I(inode)
257  spin_lock_init( & lock)
258  init_waitqueue_head( & wait_q)
259  初始化链表头
260  初始化链表头
261  notify_owner = NULL
262  notify_user_ns = NULL
263  size of queue in memory (sum of all msgs) 等于0
264  user who created, for accounting = NULL
265  msg_tree =
266  msg_tree_rightmost = NULL
267  node_cache = NULL
268  memset( & attr, 0, attr的长度)
269  maximum number of messages 等于两数取小(mq_msg_max, mq_msg_default)
271  maximum message size 等于两数取小(mq_msgsize_max, mq_msgsize_default)
273  如果attr
291  ret等于负EINVAL
292  如果 maximum number of messages 小于等于0或 maximum message size 小于等于0则转到:out_inode
294  如果操作权限检查
298  否则
303  ret等于负EOVERFLOW
305  如果 maximum message size 大于ULONG_MAX maximum number of messages 则转到:out_inode
307  mq_treesize等于 maximum number of messages sizeof(structmsg_msg)加min_t - return minimum of two values, using the specified type*@type: data type to use*@x: first value*@y: second value(unsignedint, maximum number of messages , MQ_PRIO_MAX)乘sizeof(structposix_msg_tree_node)
310  mq_bytes等于 maximum number of messages maximum message size
311  如果mq_bytesmq_treesize小于mq_bytes则转到:out_inode
313  mq_bytes加等于mq_treesize
314  加自旋锁
319  ret等于负EMFILE
320  转到:out_inode
322  How many bytes can be allocated to mqueue? 加等于mq_bytes
323  自旋锁解锁
326  user who created, for accounting 等于get_uid(u)
327  否则如果S_ISDIR(mode)则
328  inc_nlink(inode)
330  i_size等于2乘DIRENT_SIZE
331  i_op等于mqueue_dir_inode_operations
332  rmer ->i_op->default_file_ops 等于simple_dir_operations
335  返回:inode
336  out_inode :
337  放置一个索引节点
338  err :
339  返回:错误号
调用者
名称描述
mqueue_fill_super
mqueue_create_attr