From 7ac0539951ff0eba200e64b850b5181a82915c86 Mon Sep 17 00:00:00 2001 From: "Suren A. Chilingaryan" Date: Sat, 16 Jul 2011 06:18:05 +0200 Subject: Implement DMA access synchronization in the driver --- kmem.h | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) (limited to 'kmem.h') diff --git a/kmem.h b/kmem.h index b09424c..42a2fac 100644 --- a/kmem.h +++ b/kmem.h @@ -4,15 +4,21 @@ #include "pcilib.h" typedef enum { - PCILIB_KMEM_FLAG_REUSE = 1, /**< Try to reuse buffers on alloc and only unmap non-reused buffers on free (reused are freed only if FORCE flag is specified) */ + PCILIB_KMEM_FLAG_REUSE = KMEM_FLAG_REUSE, + PCILIB_KMEM_FLAG_EXCLUSIVE = KMEM_FLAG_EXCLUSIVE, + PCILIB_KMEM_FLAG_PERSISTENT = KMEM_FLAG_PERSISTENT, + PCILIB_KMEM_FLAG_HARDWARE = KMEM_FLAG_HW // PCILIB_KMEM_FLAG_FORCE = 2 /**< Force buffer } pcilib_kmem_flags_t; typedef enum { - PCILIB_KMEM_REUSE_ALLOCATED = 0, - PCILIB_KMEM_REUSE_PARTIAL = 1, - PCILIB_KMEM_REUSE_REUSED = 2 -} pcilib_kmem_reuse_t; + PCILIB_KMEM_REUSE_REUSED = PCILIB_TRISTATE_YES, + PCILIB_KMEM_REUSE_ALLOCATED = PCILIB_TRISTATE_NO, + PCILIB_KMEM_REUSE_PARTIAL = PCILIB_TRISTATE_PARTIAL, + PCILIB_KMEM_REUSE_PERSISTENT = 0x100, + PCILIB_KMEM_REUSE_HARDWARE = 0x200 +} pcilib_kmem_reuse_state_t; + typedef struct { int handle_id; @@ -33,7 +39,8 @@ typedef struct { */ typedef struct { pcilib_kmem_addr_t addr; - pcilib_kmem_reuse_t reuse; + + pcilib_kmem_reuse_state_t reused; size_t n_blocks; pcilib_kmem_addr_t blocks[]; @@ -57,6 +64,6 @@ uintptr_t pcilib_kmem_get_pa(pcilib_t *ctx, pcilib_kmem_handle_t *k); void *pcilib_kmem_get_block_ua(pcilib_t *ctx, pcilib_kmem_handle_t *k, size_t block); uintptr_t pcilib_kmem_get_block_pa(pcilib_t *ctx, pcilib_kmem_handle_t *k, size_t block); size_t pcilib_kmem_get_block_size(pcilib_t *ctx, pcilib_kmem_handle_t *k, size_t block); -pcilib_kmem_reuse_t pcilib_kmem_is_reused(pcilib_t *ctx, pcilib_kmem_handle_t *k); +pcilib_kmem_reuse_state_t pcilib_kmem_is_reused(pcilib_t *ctx, pcilib_kmem_handle_t *k); #endif /* _PCILIB_KMEM_H */ -- cgit v1.2.3