gasp_region_set_soft()

Updated: January 28, 2026

Add, modify, or delete address-space regions in the guest system

Synopsis:

#include <qvm/gasp.h>
unsigned gasp_region_set_soft(struct guest_system *gsp,
                              unsigned num_regions,
                              const struct gasp_region *rgn)

Arguments:

gsp
A pointer to the guest system.
num_regions
The number of region structures passed by the rgn argument.
rgn
A pointer to an array of gasp_region structures. Each structure describes a particular region and the field settings determine whether this region will be added, modified, or deleted. Specifically, if the region already exists and the flags field is set to GRF_NONE, then the region is deleted. If flags is set to something else, then the existing region is modified based on this setting. If the region doesn't exist, it gets added and configured based on the flags value.

Description:

This function is primarily used to:
  • add, modify, or delete your own regions in the guest address space
  • modify guest RAM page permissions
Note: This function must be protected with gasp_lock() and gasp_unlock(). This ensures that another vdev cannot interfere while you are manipulating the address space.

For more information, see the Virtual Device Developer's Guide. If you are unsure about how to use this function, contact your QNX representative.

Returns:

On success, a number indicating how many regions were set successfully; this number is the same as the num_regions passed in. If the call wasn't successful, errno is set and the value returned is an index to the location of the first failure.