Query the resource database
#include <sys/rsrcdbmgr.h> #include <sys/rsrcdbmsg.h> int rsrcdbmgr_query_name( rsrc_alloc_t *list, int listcnt, int start, pid_t pid ); char *name ); unsigned type );
libc
Use the -l c option to qcc to link against this library. This library is usually included automatically.
The rsrcdbmgr_query_name() function queries the database for listcnt count of type resources in use, beginning at the index start. If you make the query with a non-NULL list, then the function stores a maximum of found listcnt resources in the array.
If list is NULL or listcnt is 0, then the function returns the number of resources of type in the database.
If list is non-NULL, then the function returns the number of type resources available in the system.
If an error occurs, the function returns -1 and sets errno.
List all of the memory resource blocks available in the system:
rsrc_alloc_t list[20]; int size, count = 0, start = 0; while (1) { count = rsrcdbmgr_query_name( list, 20, start, -1, "memory", 0); if (count == -1) break; size = min( count-start, 20 ); /* In case more than 20 blocks were returned. */ printf( "Retrieved %d of a possible %d resource blocks", \ size, count); for (count=0; count<size; count++) { printf( "RSRC[%d] Start %d End %d \n", \ start+count, list[count].start, list[count].end); } start += size; /* Loop again, in case there are more than 20 blocks. */ }
Safety: | |
---|---|
Cancellation point | Yes |
Interrupt handler | No |
Signal handler | Yes |
Thread | Yes |