Commit 1617579a authored by Stanislav Kinsburskiy's avatar Stanislav Kinsburskiy Committed by Pavel Emelyanov

pstree: more pstree-related helpers

This patch introduces three helpers:
1) pstree_item_by_real() - search for pstree item by real pid.
2) pstree_item_by_virt() - search for pstree item by virtual pid.
3) pid_to_virt() - return virtual pis by real one.

Note: pstree_item_by_virt() and pid_to_virt() will be used to migrate AutoFS.
Signed-off-by: 's avatarStanislav Kinsburskiy <skinsbursky@virtuozzo.com>
Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
parent bde6d0db
...@@ -78,6 +78,11 @@ extern bool restore_before_setsid(struct pstree_item *child); ...@@ -78,6 +78,11 @@ extern bool restore_before_setsid(struct pstree_item *child);
extern int prepare_pstree(void); extern int prepare_pstree(void);
extern int dump_pstree(struct pstree_item *root_item); extern int dump_pstree(struct pstree_item *root_item);
struct pstree_item *pstree_item_by_real(pid_t virt);
struct pstree_item *pstree_item_by_virt(pid_t virt);
extern int pid_to_virt(pid_t pid);
extern bool pid_in_pstree(pid_t pid); extern bool pid_in_pstree(pid_t pid);
struct task_entries; struct task_entries;
......
...@@ -778,14 +778,39 @@ bool restore_before_setsid(struct pstree_item *child) ...@@ -778,14 +778,39 @@ bool restore_before_setsid(struct pstree_item *child)
return false; return false;
} }
bool pid_in_pstree(pid_t pid) struct pstree_item *pstree_item_by_virt(pid_t virt)
{ {
struct pstree_item *item; struct pstree_item *item;
for_each_pstree_item(item) { for_each_pstree_item(item) {
if (item->pid.real == pid) if (item->pid.virt == virt)
return true; return item;
} }
return NULL;
}
return false; struct pstree_item *pstree_item_by_real(pid_t real)
{
struct pstree_item *item;
for_each_pstree_item(item) {
if (item->pid.real == real)
return item;
}
return NULL;
}
int pid_to_virt(pid_t real)
{
struct pstree_item *item;
item = pstree_item_by_real(real);
if (item)
return item->pid.virt;
return 0;
}
bool pid_in_pstree(pid_t pid)
{
return pstree_item_by_real(pid) != NULL;
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment