kmem.h 1.7 KB

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