blob: e793bd6829464d463bcce8d3efe6ed691aa92204 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
  | 
#ifndef _PCIDRIVER_KMEM_H
#define _PCIDRIVER_KMEM_H
#include <linux/sysfs.h>
#include "../pcilib/kmem.h"
#include "ioctl.h"
/* Define an entry in the kmem list (this list is per device) */
/* This list keeps references to the allocated kernel buffers */
typedef struct {
    int id;
    enum dma_data_direction direction;
    struct list_head list;
    dma_addr_t dma_handle;
    unsigned long cpua;
    unsigned long size;
    unsigned long type;
    unsigned long align;
    unsigned long use;
    unsigned long item;
    spinlock_t lock;
    unsigned long mode;
    unsigned long refs;
    struct device_attribute sysfs_attr;	/* initialized when adding the entry */
} pcidriver_kmem_entry_t;
int pcidriver_kmem_alloc( pcidriver_privdata_t *privdata, kmem_handle_t *kmem_handle );
int pcidriver_kmem_free(  pcidriver_privdata_t *privdata, kmem_handle_t *kmem_handle );
int pcidriver_kmem_sync_entry( pcidriver_privdata_t *privdata, pcidriver_kmem_entry_t *kmem_entry, int direction );
int pcidriver_kmem_sync(  pcidriver_privdata_t *privdata, kmem_sync_t *kmem_sync );
int pcidriver_kmem_free_all(  pcidriver_privdata_t *privdata );
pcidriver_kmem_entry_t *pcidriver_kmem_find_entry( pcidriver_privdata_t *privdata, kmem_handle_t *kmem_handle );
pcidriver_kmem_entry_t *pcidriver_kmem_find_entry_id( pcidriver_privdata_t *privdata, int id );
pcidriver_kmem_entry_t *pcidriver_kmem_find_entry_use(pcidriver_privdata_t *privdata, unsigned long use, unsigned long item);
int pcidriver_kmem_free_entry( pcidriver_privdata_t *privdata, pcidriver_kmem_entry_t *kmem_entry );
int pcidriver_mmap_kmem( pcidriver_privdata_t *privdata, struct vm_area_struct *vmap );
#endif /* _PCIDRIVER_KMEM_H */
  |