函数逻辑报告 |
Source Code:block\blk-core.c |
Create Date:2022-07-27 18:35:20 |
Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
首页 | 函数Tree |
注解内核,赢得工具 | 下载SCCT | English |
函数名称:generic_make_request - hand a buffer to its device driver for I/O*@bio: The bio describing the location in memory and on the device.* generic_make_request() is used to make I/O requests of block* devices
函数原型:blk_qc_t generic_make_request(struct bio *bio)
返回类型:blk_qc_t
参数:
类型 | 参数 | 名称 |
---|---|---|
struct bio * | bio |
1021 | ret等于BLK_QC_T_NONE |
1023 | 如果非generic_make_request_checks(bio)则转到:out |
1036 | 如果bio_list则 |
1037 | bio_list_add( & bio_list[0], bio) |
1038 | 转到:out |
1055 | BUG_ON( request queue link ) |
1056 | bio_list_init( & bio_list_on_stack[0]) |
1057 | bio_list等于bio_list_on_stack |
1058 | 循环 |
1060 | flags等于如果 bottom bits req flags, * top bits REQ_OP. Use * accessors.按位与REQ_NOWAIT则BLK_MQ_REQ_NOWAIT否则0 |
1067 | bio_list_on_stack[1]等于bio_list_on_stack[0] |
1068 | bio_list_init( & bio_list_on_stack[0]) |
1069 | ret等于make_request_fn(q, bio) |
1071 | blk_queue_exit(q) |
1076 | bio_list_init( & lower) |
1077 | bio_list_init( & same) |
1078 | 当((bio = bio_list_pop( & bio_list_on_stack[0])) != NULL)循环 |
1079 | 如果q恒等于queue则bio_list_add( & same, bio) |
1081 | 否则bio_list_add( & lower, bio) |
1084 | bio_list_merge( & bio_list_on_stack[0], & lower) |
1085 | bio_list_merge( & bio_list_on_stack[0], & same) |
1086 | bio_list_merge( & bio_list_on_stack[0], & bio_list_on_stack[1]) |
1087 | 否则 |
1088 | 如果此条件成立可能性小(为编译器优化)(!blk_queue_dying(q) && ( bottom bits req flags, * top bits REQ_OP. Use * accessors. & REQ_NOWAIT))则bio_wouldblock_error(bio) |
1091 | 否则bio_io_error(bio) |
1094 | bio等于bio_list_pop( & bio_list_on_stack[0]) |
1096 | bio_list = NULL |
1098 | out : |
1099 | 返回:ret |
名称 | 描述 |
---|---|
submit_bio | submit_bio - submit a bio to the block device layer for I/O*@bio: The &struct bio which describes the I/O* submit_bio() is very similar in purpose to generic_make_request(), and* uses that function to do most of the work. Both are fairly rough |
__blk_queue_split | __blk_queue_split - split a bio and submit the second half*@q: [in] request queue pointer*@bio: [in, out] bio to be split*@nr_segs: [out] number of segments in the first bio* Split a bio into two bios, chain the two bios, submit the second half and |
__blk_queue_bounce | |
blk_throtl_dispatch_work_fn | lk_throtl_dispatch_work_fn - work function for throtl_data->dispatch_work*@work: work item being executed* This function is queued for execution when bio's reach the bio_lists[]* of throtl_data->service_queue. Those bio's are ready and issued by this |
blk_throtl_drain | lk_throtl_drain - drain throttled bios*@q: request_queue to drain throttled bios for* Dispatch all currently throttled bios on @q through ->make_request_fn(). |
源代码转换工具 开放的插件接口 | X |
---|---|
支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |