全部博文(127)
分类:
2012-12-14 13:53:31
原文地址:linux 2.6.32 Async_tx代码分析 一 作者:libing881
Async_tx是Intel设计的,用来为应用提供异步DMA操作API。
见async_tx.c的最前面
core routines for the asynchronous memory transfer/transform api
* Copyright 漏 2006, Intel Corporation.
*
* Dan Williams
*
* with architecture considerations by:
* Neil Brown
* Jeff Garzik
呵呵,可以看出来是Intel设计的,然后Neil Brown和Jeff Garzik提供了架构上建议,Neil是linux raid栈的维护者,也可以看出来,这个异步框架设计主要是raid栈是使用的
先看看头文件,
#include
#include
#include
除了2个内核常见包含,只有包含了一个自己相关的头文件。
再看看async_tx.h里面的提供的接口
最开始是防止重复包含的定义,然后除了spinlock锁机制和中断头文件外,还包含了一个叫dmaengine.h的头文件
#ifndef _ASYNC_TX_H_
#define _ASYNC_TX_H_
#include
#include
#include
然后我们搜索一下async_tx.h的引用地方,
Async_memcpy.c (linux-2.6.32.57\crypto\async_tx):#include
Async_memset.c (linux-2.6.32.57\crypto\async_tx):#include
Async_pq.c (linux-2.6.32.57\crypto\async_tx):#include
Async_raid6_recov.c (linux-2.6.32.57\crypto\async_tx):#include
Async_tx.c (linux-2.6.32.57\crypto\async_tx):#include
Async_tx.h (linux-2.6.32.57\include\linux):#include
Async_xor.c (linux-2.6.32.57\crypto\async_tx):#include
Raid5.c (linux-2.6.32.57\drivers\md):#include
Raid6test.c (linux-2.6.32.57\crypto\async_tx):#include
我们可以画出整体使用架构为: