[Previous] [Contents] [Next]

Caution: This version of this document is no longer maintained. For the latest documentation, see http://www.qnx.com/developers/docs.

iopower_modeattr()

Get the power modes and capabilities supported by a power managed device

Synopsis:

#include <sys/pm.h>
int iopower_modeattr(int filedes, 
                     pmd_mode_attr_t *modes, 
                     int nmodes);

Arguments:

filedes
A file descriptor to the device special file.
mode
Pointer to where the list of modes are returned.
nmodes
The number of modes to be returned.

Library:

libpm

Description:

The iopower_modeattr() is used to get a list of the power modes supported by a power managed device.

For each mode, the pmd_mode_attr_t contains:

mode
The power mode.
flags
Flags that describe the driver capabilities for that mode:
PMD_MODE_ATTR_NORAM
Support the PM_MODE_NORAM flag and can be used for system power modes where system RAM is disabled.
PMD_MODE_ATTR_HWVOL
Support the PM_MODE_HWVOL flag and can be used for system power modes where peripheral device registers are lost.
PMD_MODE_ATTR_WAKEUP
Support system wakeup functionality and can be used to configure the device to act as a wakeup source for low power system standby modes.

Returns:

The number of modes supported by the device, or -1 (errno is set).

Errors:

EBADF
filedes is not a valid file descriptor.
EFAULT
A fault occurred accesing modes.
ENOSYS
The device specified by filedes doesn't implement power management.

Examples:

#include <sys/pm.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <alloca.h>

int
main(void)
{
  int  fd;
  int  i;
  int  nmode;
  pmd_mode_attr_t *modes;

  fd = open("/dev/device", O_RDONLY);
  if (fd == -1) {
     perror("open");
     return EXIT_FAILURE;
  }

  nmode = iopower_modeattr(fd, 0, 0);
  if (nmode < 0) {
     perror("iopower_modeattr");
     return EXIT_FAILURE;
  }
  
  printf("Device supports %d modes:", nmode);

  modes = alloca(nmode * sizeof(*mode));
  if (modes == 0) {
     perror("alloca");
     return EXIT_FAILURE;
  }

  nmode = iopower_modeattr(fd, modes, nmode);
  if (nmode < 0) {
     perror("iopower_modeattr");
     return EXIT_FAILURE;
  }
  
  for (i = 0; i < nmode; i++) {
      printf("%d: mode=0x%x flags=0x%x\n", 
      i, modes[i].mode,
      modes[i].flags);
  }
  
  return EXIT_SUCCESS;
}

Classification:

Neutrino

Safety:
Cancellation point Yes
Interrupt handler No
Signal handler Yes
Thread Yes

See also:

pm_power_mode_t, pmd_mode_attr_t, iopower_getattr(), iopower_setmode(), iopower_getmodes()


[Previous] [Contents] [Next]