Create a system resource
#include <sys/rsrcdbmgr.h> #include <sys/rsrcdbmsg.h> int rsrcdbmgr_create( rsrc_alloc_t *item, int count );
libc
Use the -l c option to qcc to link against this library. This library is usually included automatically.
The rsrcdbmgr_create() function creates one or more system resources. If the function completes successfully, count resources are returned in item.
The structure of a basic resource request looks like this:
typedef struct _rsrc_alloc { _Uint64t start; _Uint64t end; _Uint32t flags; const char *name; } rsrc_alloc_t;
The members include:
You can OR in the following bits (also defined in <sys/rsrcdbmgr.h>):
You must set all the members.
EOK, or -1 if an error occurred (errno is set).
/* * Create two resources: * 0-4K memory allocation and 5 DMA channels. */ #include <stdio.h> #include <sys/rsrcdbmgr.h> #include <sys/rsrcdbmsg.h> int main(int argc, char **argv) { rsrc_alloc_t alloc[2]; memset(alloc, 0, 2* sizeof(*alloc)); alloc[0].start = 0; alloc[0].end = 4*1024; alloc[0].flags = RSRCDBMGR_MEMORY; alloc[1].start = 1; alloc[1].end = 5; alloc[1].flags = RSRCDBMGR_DMA_CHANNEL; /* Allocate resources to the system. */ if (rsrcdbmgr_create( alloc, 2 ) == -1) { perror("Problem creating resources \n"); exit(1); } … /* Do something with the created resource */ … /* Remove the allocated resources. */ rsrcdbmgr_destroy ( alloc, 2 ); return(0); }
Safety: | |
---|---|
Cancellation point | Yes |
Interrupt handler | No |
Signal handler | Yes |
Thread | Yes |
rsrcdbmgr_attach(), rsrcdbmgr_destroy()