IÂ´m porting device driver for vxworks to qnx 6.30.
i’ve found this function “cacheDmaMalloc” and in linux use this function “kmem_cache_create” for do it same, below are the description of this functions, can you tell me what is the function equivalent or how can the same functionality on qnx?
cacheDmaMalloc( ) - allocate a cache-safe buffer for DMA devices and drivers
void * cacheDmaMalloc
size_t bytes /* number of bytes to allocate */
This routine returns a pointer to a section of memory that will not experience any cache coherency problems. Function pointers in the CACHE_FUNCS structure provide access to DMA support routines.
A pointer to the cache-safe buffer, or NULL.
kmem_cache_create – Create a cache.
kmem_cache_t * kmem_cache_create (const char * name, size_t size, size_t offset, unsigned long flags, void (ctor) (void, kmem_cache_t *, unsigned long), void (dtor) (void, kmem_cache_t *, unsigned long));
A string which is used in /proc/slabinfo to identify this cache.
The size of objects to be created in this cache.
The offset to use within the page.
A constructor for the objects.
A destructor for the objects.
Returns a ptr to the cache on success, NULL on failure. Cannot be called within a int, but can be interrupted. The ctor is run when new pages are allocated by the cache and the dtor is run before the pages are handed back. The flags are
SLAB_POISON - Poison the slab with a known test pattern (a5a5a5a5) to catch references to uninitialised memory.
SLAB_RED_ZONE - Insert `Red’ zones around the allocated memory to check for buffer overruns.
SLAB_NO_REAP - Don’t automatically reap this cache when we’re under memory pressure.
SLAB_HWCACHE_ALIGN - Align the objects in this cache to a hardware cacheline. This can be beneficial if you’re counting cycles as closely as davem.
and iÂ´m sorry if my english is bad, i’m learning yet.