Commits
Alexey Kuznetsov authored and Pavel Emelianov committed 562f41b4993
[PATCH] port of VPIDs to 2.6.18 The patch mostly simplifies the things: it contains more -'s than +'s. 1. We do not create separate structures vpid_mapping anymore. Core already introduced this overhead as "struct pid". 2. Logically, we do not need to add to task_struct vpid's, they can be obtained as tsk->pids[PIDTYPE_x].pid->vnr. However, we still add vpid,vtgid,vpgrp and vsession. The reasons are: A. tsk->pids[PIDTYPE_x].pid->vnr cannot be dereferenced without precautions. (TODO, RCU might help) B. Task can have NULL or invalid tsk->pids[PIDTYPE_x].pid in transient states f.e. fork associates pid tto late. C. Access requires additional pointer dereference. D. Archs sort of IA64 reference those fields from assembler code. 3. We still have "sparse" mode flag. But it means only that we can bypass hash table lookup in vpid_to_pid(). TODO: we can completely eliminate overheade of VPID's doing direct find_vpid() instead of find_pid(vpid_to_pid()) is critical paths. In this case we can omit "sparse" mode aat all.