博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
roce在kernel的调用栈
阅读量:4215 次
发布时间:2019-05-26

本文共 1453 字,大约阅读时间需要 4 分钟。

在infiniband/core/uverbs_main.c 中的ib_uverbs_init是整个roce 像libverbs提供接口的入口函数.在ib_uverbs_init 中会调用	ret = ib_register_client(&uverbs_client);	if (ret) {		pr_err("user_verbs: couldn't register client\n");		goto out_class;	}来注册一个client,这样吗,每注册一个roce的驱动就会调用client的add函数static struct ib_client uverbs_client = {	.name   = "uverbs",	.add    = ib_uverbs_add_one,	.remove = ib_uverbs_remove_one};static void ib_uverbs_add_one(struct ib_device *device){#这里最重要的就是为每个roce设备添加一个字符设备,这个字符设备的ops是uverbs_fops		cdev_init(&uverbs_dev->cdev, NULL);	uverbs_dev->cdev.owner = THIS_MODULE;	uverbs_dev->cdev.ops = device->mmap ? &uverbs_mmap_fops : &uverbs_fops;	cdev_set_parent(&uverbs_dev->cdev, &uverbs_dev->kobj);	kobject_set_name(&uverbs_dev->cdev.kobj, "uverbs%d", uverbs_dev->devnum);	if (cdev_add(&uverbs_dev->cdev, base, 1))		goto err_cdev;}#当用户调用libverbs接口是会调用ib_uverbs_write,static const struct file_operations uverbs_fops = {	.owner	 = THIS_MODULE,	.write	 = ib_uverbs_write,	.open	 = ib_uverbs_open,};在写函数中,就会根据uverbs的命令来调用不同的实现static ssize_t ib_uverbs_write(struct file *filp, const char __user *buf,			     size_t count, loff_t *pos){		ret = uverbs_cmd_table[command](file, &ucore, &uhw);		ret = (ret) ? : count;}static ssize_t (*uverbs_cmd_table[])(struct ib_uverbs_file *file,				     const char __user *buf, int in_len,				     int out_len) = {	[IB_USER_VERBS_CMD_GET_CONTEXT]		= ib_uverbs_get_context,	[IB_USER_VERBS_CMD_QUERY_DEVICE]	= ib_uverbs_query_device,

 

转载地址:http://spnmi.baihongyu.com/

你可能感兴趣的文章
LoadRunner中Concurrent与Simultaneous的区别
查看>>
SiteScope - Agentless监控
查看>>
欢迎加入【亿能测试快讯】邮件列表!
查看>>
为什么我们的自动化测试“要”这么难
查看>>
LoadRunner性能脚本开发实战训练
查看>>
测试之途,前途?钱途?图何?
查看>>
通过FTP服务的winsockes录制脚本
查看>>
LRwinsocket协议测试AAA服务器
查看>>
Net远程管理实验
查看>>
反病毒专家谈虚拟机技术 面临两大技术难题
查看>>
几种典型的反病毒技术:特征码技术、覆盖法技术等
查看>>
Software Security Testing软件安全测试
查看>>
论文浅尝 | 通过共享表示和结构化预测进行事件和事件时序关系的联合抽取
查看>>
廖雪峰Python教程 学习笔记3 hello.py
查看>>
从内核看epoll的实现(基于5.9.9)
查看>>
python与正则表达式
查看>>
安装.Net Framework 4.7.2时出现“不受信任提供程序信任的根证书中终止”的解决方法
查看>>
input type=“button“与input type=“submit“的区别
查看>>
解决Github代码下载慢问题!
查看>>
LeetCode-栈|双指针-42. 接雨水
查看>>