Hi, averyone
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?
NAME
cacheDmaMalloc( ) - allocate a cache-safe buffer for DMA devices and drivers
SYNOPSIS
void * cacheDmaMalloc
(
size_t bytes /* number of bytes to allocate */
)
DESCRIPTION
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.
RETURNS
A pointer to the cache-safe buffer, or NULL.
Name
kmem_cache_create – Create a cache.
Synopsis
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));
Arguments
name
A string which is used in /proc/slabinfo to identify this cache.
size
The size of objects to be created in this cache.
offset
The offset to use within the page.
flags
SLAB flags
ctor
A constructor for the objects.
dtor
A destructor for the objects.
Description
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.
thanks!!!
and i´m sorry if my english is bad, i’m learning yet.