DCA驱动框架

DCA驱动框架在Linux驱动目录dca下。

完整DCA驱动有三部分组成:

1)DCA驱动框架;

        这部分是Linux驱动服务层内容。提供者和请求者通过DCA驱动框架关联到一起,进行工作。

2)提供DCA服务的设备驱动框架;

申请和注册过程

struct dca_provider *alloc_dca_provider(const struct dca_ops *ops, int priv_size)

int register_dca_provider(struct dca_provider *dca, struct device *dev)

注销和释放过程

void unregister_dca_provider(struct dca_provider *dca, struct device *dev)

void free_dca_provider(struct dca_provider *dca)

核心数据结构是struct dca_provider, 该数据结构的 struct dca_ops描述了提供DCA服务。

struct dca_ops {
	int	(*add_requester)    (struct dca_provider *, struct device *);
	int	(*remove_requester) (struct dca_provider *, struct device *);
	u8	(*get_tag)	    (struct dca_provider *, struct device *,
				     int cpu);
	int	(*dev_managed)      (struct dca_provider *, struct device *);
};

3)请求DCA服务的设备驱动框架;

将设备添加为请求者过程

int dca_add_requester(struct device *dev)

将设备撤销请求者过程

int dca_remove_requester(struct device *dev)

在设备驱动正常使用过程中,需要获得tag标签值时,调用

u8 dca3_get_tag(struct device *dev, int cpu)

你可能感兴趣的:(linux)