函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:block\bsg.c Create Date:2022-07-27 19:13:06
Last Modify:2020-03-12 14:18:49 Copyright©Brick
首页 函数Tree
注解内核,赢得工具下载SCCTEnglish

函数名称:bsg_sg_io

函数原型:static int bsg_sg_io(struct request_queue *q, fmode_t mode, void __user *uarg)

返回类型:int

参数:

类型参数名称
struct request_queue *q
fmode_tmode
void __user *uarg
142  如果copy_from_user( & hdr, uarg, hdr的长度)则返回:负EFAULT
145  如果非class_dev则返回:负ENXIO
148  如果 [i] 'Q' to differentiate from v3 不等于'Q'则返回:负EINVAL
150  ret等于check_proto( & hdr)
151  如果ret则返回:ret
154  rq等于lk_get_request - allocate a request*@q: request queue to allocate a request for*@op: operation (REQ_OP_*) and REQ_* flags, e.g. REQ_SYNC.*@flags: BLK_MQ_REQ_* flags, e.g. BLK_MQ_REQ_NOWAIT.
156  如果是错误则返回:错误
159  ret等于fill_hdr(rq, & hdr, mode)
160  如果ret则返回:ret
163  timeout等于msecs_to_jiffies: - convert milliseconds to jiffies*@m: time in milliseconds* conversion is done as follows:* - negative values mean 'infinite timeout' (MAX_JIFFY_OFFSET)* - 'too large' values [that would result in larger than
164  如果非timeouttimeout等于* sg stuff
166  如果非timeouttimeout等于default timeout for SG_IO if none specified
168  如果timeout小于BLK_MIN_SG_TIMEOUTtimeout等于BLK_MIN_SG_TIMEOUT
171  如果 [i] bytes to be transferred to device
172  ret等于REQ_BLOCK_PC请求
174  否则如果 [i] bytes to be transferred from device
175  ret等于REQ_BLOCK_PC请求
179  如果ret则转到:out_free_rq
182  bio等于bio
184  将请求插入队列执行
185  ret等于complete_rq(rq, & hdr)
186  卸载一个用户数据的请求
188  out_free_rq :
189  free_rq(rq)
190  blk_put_request(rq)
191  如果非retcopy_to_user(uarg, & hdr, hdr的长度)则返回:负EFAULT
193  返回:ret
调用者
名称描述
bsg_ioctl