Capability accounting for quantitative capabilities - First part done.

Need to make sure accounting charges correct containers during init.
Therefore kernel resource spending must also be accounted for.
This commit is contained in:
Bahadir Balban
2009-08-22 12:09:51 +03:00
parent de087eb1f8
commit d3d072e47d
9 changed files with 240 additions and 37 deletions

View File

@@ -254,8 +254,25 @@ int init_first_pager(struct pager *pager,
struct container *cont,
pgd_table_t *current_pgd)
{
struct ktcb *task = tcb_alloc_init();
struct ktcb *task;
struct address_space *space;
struct capability *ktcb_cap;
/*
* Find capability from pager's list, since
* there is no ktcb, no standard path to check
* per-task capability list yet.
*/
ktcb_cap = capability_find_by_rtype(&pager->cap_list,
CAP_RTYPE_THREADPOOL);
/* Use it to allocate ktcb */
task = tcb_alloc_init_use_capability(ktcb_cap);
/*
* Initialize dummy current capability list pointer
* so that capability accounting can be done as normal
*/
current->cap_list_ptr = &pager->cap_list;
/* Initialize ktcb */
task_init_registers(task, pager->start_vma);
@@ -303,7 +320,6 @@ int init_first_pager(struct pager *pager,
return 0;
}
/*
* Inspects pager parameters defined in the container,
* and sets up an execution environment for the pager.
@@ -314,7 +330,25 @@ int init_first_pager(struct pager *pager,
*/
int init_pager(struct pager *pager, struct container *cont)
{
struct ktcb *task = tcb_alloc_init();
struct ktcb *task;
struct capability *ktcb_cap;
/*
* Find capability from pager's list, since
* there is no ktcb, no standard path to check
* per-task capability list yet.
*/
ktcb_cap = capability_find_by_rtype(&pager->cap_list,
CAP_RTYPE_THREADPOOL);
/* Use it to allocate ktcb */
task = tcb_alloc_init_use_capability(ktcb_cap);
/*
* Initialize dummy current capability list pointer
* so that capability accounting can be done as normal
*/
current->cap_list_ptr = &pager->cap_list;
task_init_registers(task, pager->start_vma);