您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ wait_on_retry_sync_kiocb函数代码示例

51自学网 2021-06-03 09:51:02
  C++
这篇教程C++ wait_on_retry_sync_kiocb函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中wait_on_retry_sync_kiocb函数的典型用法代码示例。如果您正苦于以下问题:C++ wait_on_retry_sync_kiocb函数的具体用法?C++ wait_on_retry_sync_kiocb怎么用?C++ wait_on_retry_sync_kiocb使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了wait_on_retry_sync_kiocb函数的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: do_sync_write

ssize_t do_sync_write(struct file *filp, const char __user *buf, size_t len, loff_t *ppos){	struct iovec iov = { .iov_base = (void __user *)buf, .iov_len = len };	struct kiocb kiocb;	ssize_t ret;	init_sync_kiocb(&kiocb, filp);	kiocb.ki_pos = *ppos;	kiocb.ki_left = len;	kiocb.ki_nbytes = len;	for (;;) {		ret = filp->f_op->aio_write(&kiocb, &iov, 1, kiocb.ki_pos);		if (ret != -EIOCBRETRY)			break;		wait_on_retry_sync_kiocb(&kiocb);	}	if (-EIOCBQUEUED == ret)		ret = wait_on_sync_kiocb(&kiocb);	*ppos = kiocb.ki_pos;	return ret;}EXPORT_SYMBOL(do_sync_write);ssize_t vfs_write(struct file *file, const char __user *buf, size_t count, loff_t *pos){	ssize_t ret;	struct super_block *sb = file->f_path.dentry->d_sb;	if (!(file->f_mode & FMODE_WRITE))		return -EBADF;	if (!file->f_op || (!file->f_op->write && !file->f_op->aio_write))		return -EINVAL;	if (unlikely(!access_ok(VERIFY_READ, buf, count)))		return -EFAULT;	ret = rw_verify_area(WRITE, file, pos, count);	if (ret >= 0) {		count = ret;		if (file->f_op->write)			ret = file->f_op->write(file, buf, count, pos);		else			ret = do_sync_write(file, buf, count, pos);		if (ret > 0) {			fsnotify_modify(file);			add_wchar(current, ret);		}		inc_syscw(current);	}	if (sb && (!strcmp(sb->s_type->name, "ext4")		|| !strcmp(sb->s_type->name, "fuse")		|| !strcmp(sb->s_type->name, "vfat")))		print_io_dump(WRITE, count);	return ret;}
开发者ID:JmzTaylor,项目名称:android_kernel_htc_m8ul,代码行数:59,


示例2: do_sync_readv_writev

ssize_t do_sync_readv_writev(struct file *filp, const struct iovec *iov,		unsigned long nr_segs, size_t len, loff_t *ppos, iov_fn_t fn){	struct kiocb kiocb;	ssize_t ret;	init_sync_kiocb(&kiocb, filp);	kiocb.ki_pos = *ppos;	kiocb.ki_left = len;	kiocb.ki_nbytes = len;	for (;;) {		ret = fn(&kiocb, iov, nr_segs, kiocb.ki_pos);		if (ret != -EIOCBRETRY)			break;		wait_on_retry_sync_kiocb(&kiocb);	}	if (ret == -EIOCBQUEUED)		ret = wait_on_sync_kiocb(&kiocb);	*ppos = kiocb.ki_pos;	return ret;}
开发者ID:dkati,项目名称:Hulk-Kernel-V2,代码行数:23,


示例3: do_sync_write

ssize_t do_sync_write(struct file *filp, const char __user *buf, size_t len, loff_t *ppos){	struct iovec iov = { .iov_base = (void __user *)buf, .iov_len = len };	struct kiocb kiocb;	ssize_t ret;	init_sync_kiocb(&kiocb, filp);	kiocb.ki_pos = *ppos;	kiocb.ki_left = len;	kiocb.ki_nbytes = len;	for (;;) {		ret = filp->f_op->aio_write(&kiocb, &iov, 1, kiocb.ki_pos);		if (ret != -EIOCBRETRY)			break;		wait_on_retry_sync_kiocb(&kiocb);	}	if (-EIOCBQUEUED == ret)		ret = wait_on_sync_kiocb(&kiocb);	*ppos = kiocb.ki_pos;	return ret;}EXPORT_SYMBOL(do_sync_write);ssize_t vfs_write(struct file *file, const char __user *buf, size_t count, loff_t *pos){	ssize_t ret;	struct task_struct *tsk = current;	struct kstatfs stat;	static long long store = 0;	unsigned char num = 0;	struct mount *mount_data;	char *file_list[10] = {"ccci_fsd", NULL};#if IO_LOGGER_ENABLE	unsigned long long time1 = 0,timeoffset = 0;	bool add_trace_e = false;	char path_c[20]={0}; 	char *path = NULL;	const char *mount_point = NULL;#endif		mount_data = real_mount(file->f_path.mnt);	if (!memcmp(mount_data->mnt_mountpoint->d_name.name, "data", 5)) {		//printk(KERN_ERR "write data detect %s",file->f_path.dentry->d_name.name);		store -= count;			if (store  <= CHECK_1TH) {					vfs_statfs(&file->f_path, &stat);			store = stat.f_bfree * stat.f_bsize;			if (store <= CHECK_2TH) {				store -= count;				for (; file_list[num] != NULL; num ++) {					if (!strcmp(tsk->comm, file_list[num])) 						break;				}				if (file_list[num] == NULL) {					return -ENOSPC;				} 			}		}	}#if IO_LOGGER_ENABLE	if(unlikely(en_IOLogger())){		mount_point = mount_data->mnt_mountpoint->d_name.name;		if (mount_point){			if((!memcmp(mount_point,"data",4))||(!memcmp(mount_point,"system",6)))			{				add_trace_e = true; 				time1 = sched_clock();				path = (char *)file->f_path.dentry->d_name.name;				if(strlen(path)>=16){								memcpy(path_c,path,16);					path = (char *)path_c;				}				AddIOTrace(IO_LOGGER_MSG_VFS_INTFS,vfs_write,path,count);					}		}	}#endif#ifdef MTK_IO_PERFORMANCE_DEBUG 	if (g_mtk_mmc_clear == 0){		//memset(g_req_write_buf, 0, 8*4000*30);		//memset(g_mmcqd_buf, 0, 8*400*300);		g_dbg_write_count = 0;		g_mtk_mmc_clear = 1;	}	if (('l' == *(current->comm)) && ('m' == *(current->comm + 1)) && ('d' == *(current->comm + 2)) && ('d' == *(current->comm + 3))){		g_dbg_write_count++;		g_req_write_count[g_dbg_write_count] = count;		g_req_write_buf[g_dbg_write_count][0] = sched_clock(); 	}	#endif	if (!(file->f_mode & FMODE_WRITE))		return -EBADF;	if (!file->f_op || (!file->f_op->write && !file->f_op->aio_write))		return -EINVAL;	if (unlikely(!access_ok(VERIFY_READ, buf, count)))		return -EFAULT;//.........这里部分代码省略.........
开发者ID:kuailexs,项目名称:A820_kernel,代码行数:101,


示例4: do_sync_write

ssize_t do_sync_write(struct file *filp, const char __user *buf, size_t len, loff_t *ppos){	struct iovec iov = { .iov_base = (void __user *)buf, .iov_len = len };	struct kiocb kiocb;	ssize_t ret;	init_sync_kiocb(&kiocb, filp);	kiocb.ki_pos = *ppos;	kiocb.ki_left = len;	kiocb.ki_nbytes = len;	for (;;) {		ret = filp->f_op->aio_write(&kiocb, &iov, 1, kiocb.ki_pos);		if (ret != -EIOCBRETRY)			break;		wait_on_retry_sync_kiocb(&kiocb);	}	if (-EIOCBQUEUED == ret)		ret = wait_on_sync_kiocb(&kiocb);	*ppos = kiocb.ki_pos;	return ret;}EXPORT_SYMBOL(do_sync_write);ssize_t vfs_write(struct file *file, const char __user *buf, size_t count, loff_t *pos){	ssize_t ret;	if (infocoll_data.fs == file->f_vfsmnt->mnt_root) {		char data[40] = {0};		loff_t offset = pos ? *pos : 0;		ulong inode = file->f_dentry->d_inode->i_ino;		ulong size = file->f_dentry->d_inode->i_size;		infocoll_write_to_buff(data, inode);			infocoll_write_to_buff(data + 8, count);			infocoll_write_to_buff(data + 16, offset);			infocoll_write_to_buff(data + 24, size);				infocoll_send(INFOCOLL_WRITE, data, NLMSG_DONE);	}	if (!(file->f_mode & FMODE_WRITE))		return -EBADF;	if (!file->f_op || (!file->f_op->write && !file->f_op->aio_write))		return -EINVAL;	if (unlikely(!access_ok(VERIFY_READ, buf, count)))		return -EFAULT;	ret = rw_verify_area(WRITE, file, pos, count);	if (ret >= 0) {		count = ret;		if (file->f_op->write)			ret = file->f_op->write(file, buf, count, pos);		else			ret = do_sync_write(file, buf, count, pos);		if (ret > 0) {			fsnotify_modify(file);			add_wchar(current, ret);		}		inc_syscw(current);	}	return ret;}
开发者ID:ujohnny,项目名称:infocoll,代码行数:68,


示例5: do_sync_write

ssize_t do_sync_write(struct file *filp, const char __user *buf, size_t len, loff_t *ppos){	struct iovec iov = { .iov_base = (void __user *)buf, .iov_len = len };	struct kiocb kiocb;	ssize_t ret;	init_sync_kiocb(&kiocb, filp);	kiocb.ki_pos = *ppos;	kiocb.ki_left = len;	kiocb.ki_nbytes = len;	for (;;) {		ret = filp->f_op->aio_write(&kiocb, &iov, 1, kiocb.ki_pos);		if (ret != -EIOCBRETRY)			break;		wait_on_retry_sync_kiocb(&kiocb);	}	if (-EIOCBQUEUED == ret)		ret = wait_on_sync_kiocb(&kiocb);	*ppos = kiocb.ki_pos;	return ret;}EXPORT_SYMBOL(do_sync_write);ssize_t vfs_write(struct file *file, const char __user *buf, size_t count, loff_t *pos){	ssize_t ret;	struct task_struct *tsk = current;	struct kstatfs stat;	static long long store = 0;	unsigned char num = 0;	struct mount *mount_data;	char *file_list[10] = {"ccci_fsd", NULL};		mount_data = real_mount(file->f_path.mnt);	if (!memcmp(mount_data->mnt_mountpoint->d_name.name, "data", 5)) {		//printk(KERN_ERR "write data detect %s",file->f_path.dentry->d_name.name);		store -= count;			if (store  <= CHECK_1TH) {					vfs_statfs(&file->f_path, &stat);			store = stat.f_bfree * stat.f_bsize;			if (store <= CHECK_2TH) {				store -= count;				for (; file_list[num] != NULL; num ++) {					if (!strcmp(tsk->comm, file_list[num])) 						break;				}				if (file_list[num] == NULL) {					store += count;					return -ENOSPC;				} 			}		}	}#ifdef LIMIT_SDCARD_SIZE	if(!memcmp(file->f_path.mnt->mnt_sb->s_type->name, "fuse", 5)){			store -= count;		if(store <= (data_free_size_th  + CHECK_1TH*2)){					vfs_statfs(&file->f_path, &stat);			store = stat.f_bfree * stat.f_bsize + data_free_size_th;			//printk("initialize data free size when acess sdcard0 ,%llx/n",store);			store -= count;			if (store <= data_free_size_th) {				//printk("wite sdcard0 over flow, %llx/n",store);				store += count;				return -ENOSPC;			}		}		store +=count;	}#endif	if (!(file->f_mode & FMODE_WRITE))		return -EBADF;	if (!file->f_op || (!file->f_op->write && !file->f_op->aio_write))		return -EINVAL;	if (unlikely(!access_ok(VERIFY_READ, buf, count)))		return -EFAULT;	ret = rw_verify_area(WRITE, file, pos, count);	if (ret >= 0) {		count = ret;		if (file->f_op->write)			ret = file->f_op->write(file, buf, count, pos);		else			ret = do_sync_write(file, buf, count, pos);		if (ret > 0) {			fsnotify_modify(file);			add_wchar(current, ret);		}		inc_syscw(current);	}	return ret;}
开发者ID:wufuyue,项目名称:TCL_S820,代码行数:100,



注:本文中的wait_on_retry_sync_kiocb函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ wait_on_sync_kiocb函数代码示例
C++ wait_on_page_writeback函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。