On boot up, the system creates the initial partition, number 0, called System. The System partition initially has a budget of 100%. You can create partitions and set their budgets in your buildfile, with command-line utilities, or dynamically through the API defined in sys/sched_aps.h. When you create a partition, its budget is subtracted from its parent partition's budget.
To see which partitions you've created, use the aps show command. For more information about the aps utility, see aps.
Using a buildfile
To create a partition in your buildfile, add a line like this to the startup script:
sched_aps name budget
For more information about launching programs when you boot, see the Controlling How Neutrino Starts chapter of the QNX Neutrino User's Guide.
You can also use the aps in your startup script to set security options. For example, to create a partition called Drivers with a CPU budget of 20% and then use our recommended security option, add these lines to your buildfile's startup script:
sched_aps Drivers 20 aps modify -s recommended
Using the command line
To create a partition from the command line or your /etc/rc.d/rc.local file, use the aps utility's create option. For example:
aps create -b15 DebugReserve
creates a partition named DebugReserve with a budget of 15%.
Using a program
To create a partition from a program, use the SCHED_APS_CREATE_PARTITION command to SchedCtl(). For example:
sched_aps_create_parms creation_data; memset(&creation_data, 0, sizeof(creation_data)); creation_data.budget_percent = 15; creation_data.critical_budget_ms = 0; creation_data.name = "DebugReserve"; ret = SchedCtl( SCHED_APS_CREATE_PARTITION, &creation_data, sizeof(creation_data)); if (ret != EOK) { printf("Couldn't create partition \"%s\": %s (%d).\n", creation_data.name, strerror(errno), errno); } else { printf ("The new partition's ID is %d.\n", creation_data.id); }
Note that SchedCtl() puts the partition's ID in the sched_aps_create_parms structure.