该示例类似于设置 pool.comment 属性并添加新属性中显示的示例。
请使用 bcopy(),而不要使用列出特定资源控制的所有值-操作对中的缓冲区交换。
要更改资源控制值,在调用 setrctl() 时请使用 RCTL_REPLACE 标志。新的资源控制块除了使用新的控制值以外,与原有的资源控制块相同。
rctlblk_set_value(blk1, nshares);
if (setrctl("project.cpu-shares", blk2, blk1, RCTL_REPLACE) != 0)
该示例将获取项目的 CPU 份额分配 project.cpu-shares,并将其值更改为 nshares。
/* Omit return value checking/error processing to keep code sample short */
blk1 = malloc(rctlblk_size());
getrctl("project.cpu-shares", NULL, blk1, RCTL_FIRST);
my_shares = rctlblk_get_value(blk1);
printout_my_shares(my_shares);
/* if privileged, do the following to */
/* change project.cpu-shares to "nshares" */
blk1 = malloc(rctlblk_size());
blk2 = malloc(rctlblk_size());
if (getrctl("project.cpu-shares", NULL, blk1, RCTL_FIRST) != 0) {
perror("getrctl failed");
exit(1);
}
bcopy(blk1, blk2, rctlblk_size());
rctlblk_set_value(blk1, nshares);
if (setrctl("project.cpu-shares", blk2, blk1, RCTL_REPLACE) != 0) {
perror("setrctl failed");
exit(1);
}