rsrcdbmgr_query_name()
QNX SDP8.0C Library ReferenceAPIDeveloper
Query the resource database
Synopsis:
#include <sys/rsrcdbmgr.h>
int rsrcdbmgr_query_name( rsrc_alloc_t *list,
                          int listcnt,
                          int start,
                          pid_t pid );
                          char *name );
                          unsigned type );
Arguments:
- list
 - NULL, or an array of rsrc_alloc_t structures that the function can fill with information about the resources that it finds. For more information about this structure, see the documentation for rsrcdbmgr_create().
 - listcnt
 - The number of entries in the array.
 - start
 - The index that you want to start searching at.
 - pid
 - Which blocks to query:
  
- -2: query all free and used blocks.
 - -1: query all used blocks.
 - 0: query all free blocks.
 - > 0: query blocks owned by the process with the given pid.
 
 - name
 - The name of the resource to query. For more information, see rsrcdbmgr_attach().
 - type
 - The subtype to query; 0, or one of the following:
  
- RSRCDBMGR_DMA_CHANNEL — DMA channel
 - RSRCDBMGR_IO_PORT — I/O port address
 - RSRCDBMGR_IRQ — Interrupt address
 - RSRCDBMGR_MEMORY — Memory address
 - RSRCDBMGR_PCI_MEMORY — PCI memory address
 
 
Library:
libc
Use the -l c option to qcc to link against this library. This library is usually included automatically.
Description:
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.
Returns:
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.
Errors:
- EINTR
 - The call was interrupted by a signal.
 - EINVAL
 - Invalid argument.
 - ENOMEM
 - Insufficient memory to allocate internal data structures.
 
Examples:
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. */
}
Classification:
| Safety: | |
|---|---|
| Cancellation point | Yes | 
| Signal handler | Yes | 
| Thread | Yes | 
Page updated: 
