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, see its entry in the Utilities Reference.
Using a buildfile
To create a partition in your buildfile, add a line like this to the startup script:
sched_aps name budget
You can also use the aps utility 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, use the aps utility's create command. 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.