diff options
Diffstat (limited to 'kernel/cpuset.c')
| -rw-r--r-- | kernel/cpuset.c | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/kernel/cpuset.c b/kernel/cpuset.c index 984c0bf3807f..805fb9097318 100644 --- a/kernel/cpuset.c +++ b/kernel/cpuset.c | |||
| @@ -1440,10 +1440,10 @@ void __init cpuset_init_smp(void) | |||
| 1440 | 1440 | ||
| 1441 | /** | 1441 | /** |
| 1442 | * cpuset_fork - attach newly forked task to its parents cpuset. | 1442 | * cpuset_fork - attach newly forked task to its parents cpuset. |
| 1443 | * @p: pointer to task_struct of forking parent process. | 1443 | * @tsk: pointer to task_struct of forking parent process. |
| 1444 | * | 1444 | * |
| 1445 | * Description: By default, on fork, a task inherits its | 1445 | * Description: By default, on fork, a task inherits its |
| 1446 | * parents cpuset. The pointer to the shared cpuset is | 1446 | * parent's cpuset. The pointer to the shared cpuset is |
| 1447 | * automatically copied in fork.c by dup_task_struct(). | 1447 | * automatically copied in fork.c by dup_task_struct(). |
| 1448 | * This cpuset_fork() routine need only increment the usage | 1448 | * This cpuset_fork() routine need only increment the usage |
| 1449 | * counter in that cpuset. | 1449 | * counter in that cpuset. |
| @@ -1471,7 +1471,6 @@ void cpuset_fork(struct task_struct *tsk) | |||
| 1471 | * by the cpuset_sem semaphore. If you don't hold cpuset_sem, | 1471 | * by the cpuset_sem semaphore. If you don't hold cpuset_sem, |
| 1472 | * then a zero cpuset use count is a license to any other task to | 1472 | * then a zero cpuset use count is a license to any other task to |
| 1473 | * nuke the cpuset immediately. | 1473 | * nuke the cpuset immediately. |
| 1474 | * | ||
| 1475 | **/ | 1474 | **/ |
| 1476 | 1475 | ||
| 1477 | void cpuset_exit(struct task_struct *tsk) | 1476 | void cpuset_exit(struct task_struct *tsk) |
| @@ -1521,7 +1520,9 @@ void cpuset_init_current_mems_allowed(void) | |||
| 1521 | current->mems_allowed = NODE_MASK_ALL; | 1520 | current->mems_allowed = NODE_MASK_ALL; |
| 1522 | } | 1521 | } |
| 1523 | 1522 | ||
| 1524 | /* | 1523 | /** |
| 1524 | * cpuset_update_current_mems_allowed - update mems parameters to new values | ||
| 1525 | * | ||
| 1525 | * If the current tasks cpusets mems_allowed changed behind our backs, | 1526 | * If the current tasks cpusets mems_allowed changed behind our backs, |
| 1526 | * update current->mems_allowed and mems_generation to the new value. | 1527 | * update current->mems_allowed and mems_generation to the new value. |
| 1527 | * Do not call this routine if in_interrupt(). | 1528 | * Do not call this routine if in_interrupt(). |
| @@ -1540,13 +1541,20 @@ void cpuset_update_current_mems_allowed(void) | |||
| 1540 | } | 1541 | } |
| 1541 | } | 1542 | } |
| 1542 | 1543 | ||
| 1544 | /** | ||
| 1545 | * cpuset_restrict_to_mems_allowed - limit nodes to current mems_allowed | ||
| 1546 | * @nodes: pointer to a node bitmap that is and-ed with mems_allowed | ||
| 1547 | */ | ||
| 1543 | void cpuset_restrict_to_mems_allowed(unsigned long *nodes) | 1548 | void cpuset_restrict_to_mems_allowed(unsigned long *nodes) |
| 1544 | { | 1549 | { |
| 1545 | bitmap_and(nodes, nodes, nodes_addr(current->mems_allowed), | 1550 | bitmap_and(nodes, nodes, nodes_addr(current->mems_allowed), |
| 1546 | MAX_NUMNODES); | 1551 | MAX_NUMNODES); |
| 1547 | } | 1552 | } |
| 1548 | 1553 | ||
| 1549 | /* | 1554 | /** |
| 1555 | * cpuset_zonelist_valid_mems_allowed - check zonelist vs. curremt mems_allowed | ||
| 1556 | * @zl: the zonelist to be checked | ||
| 1557 | * | ||
| 1550 | * Are any of the nodes on zonelist zl allowed in current->mems_allowed? | 1558 | * Are any of the nodes on zonelist zl allowed in current->mems_allowed? |
| 1551 | */ | 1559 | */ |
| 1552 | int cpuset_zonelist_valid_mems_allowed(struct zonelist *zl) | 1560 | int cpuset_zonelist_valid_mems_allowed(struct zonelist *zl) |
| @@ -1562,8 +1570,12 @@ int cpuset_zonelist_valid_mems_allowed(struct zonelist *zl) | |||
| 1562 | return 0; | 1570 | return 0; |
| 1563 | } | 1571 | } |
| 1564 | 1572 | ||
| 1565 | /* | 1573 | /** |
| 1566 | * Is 'current' valid, and is zone z allowed in current->mems_allowed? | 1574 | * cpuset_zone_allowed - is zone z allowed in current->mems_allowed |
| 1575 | * @z: zone in question | ||
| 1576 | * | ||
| 1577 | * Is zone z allowed in current->mems_allowed, or is | ||
| 1578 | * the CPU in interrupt context? (zone is always allowed in this case) | ||
| 1567 | */ | 1579 | */ |
| 1568 | int cpuset_zone_allowed(struct zone *z) | 1580 | int cpuset_zone_allowed(struct zone *z) |
| 1569 | { | 1581 | { |
