Commit e129ae26 authored by Pavel Emelyanov's avatar Pavel Emelyanov

dump: Pass whole struct pid into thread dumping routine

And do "get real pid, report virtual one" inside.
Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
parent 3481b9aa
...@@ -1176,8 +1176,8 @@ static int dump_task_thread(struct parasite_ctl *parasite_ctl, struct pid *tid) ...@@ -1176,8 +1176,8 @@ static int dump_task_thread(struct parasite_ctl *parasite_ctl, struct pid *tid)
if (ret) if (ret)
goto err_free; goto err_free;
ret = parasite_dump_thread_seized(parasite_ctl, pid, &taddr, ret = parasite_dump_thread_seized(parasite_ctl, tid, &taddr,
&tid->virt, &core->thread_core->blk_sigset, &core->thread_core->blk_sigset,
&tls); &tls);
if (ret) { if (ret) {
......
...@@ -36,8 +36,9 @@ extern int parasite_dump_pages_seized(struct parasite_ctl *ctl, ...@@ -36,8 +36,9 @@ extern int parasite_dump_pages_seized(struct parasite_ctl *ctl,
struct list_head *vma_area_list, struct list_head *vma_area_list,
struct cr_fdset *cr_fdset); struct cr_fdset *cr_fdset);
struct parasite_dump_thread; struct parasite_dump_thread;
extern int parasite_dump_thread_seized(struct parasite_ctl *ctl, pid_t pid, struct pid;
unsigned int **tid_add, pid_t *tid, extern int parasite_dump_thread_seized(struct parasite_ctl *ctl, struct pid *tid,
unsigned int **tid_add,
void *blocked, u32 *tls); void *blocked, u32 *tls);
struct parasite_drain_fd; struct parasite_drain_fd;
......
...@@ -364,8 +364,8 @@ err: ...@@ -364,8 +364,8 @@ err:
return -1; return -1;
} }
int parasite_dump_thread_seized(struct parasite_ctl *ctl, pid_t pid, int parasite_dump_thread_seized(struct parasite_ctl *ctl, struct pid *tid,
unsigned int **tid_addr, pid_t *tid, unsigned int **tid_addr,
void *blocked, void *blocked,
u32 *tls) u32 *tls)
{ {
...@@ -374,11 +374,11 @@ int parasite_dump_thread_seized(struct parasite_ctl *ctl, pid_t pid, ...@@ -374,11 +374,11 @@ int parasite_dump_thread_seized(struct parasite_ctl *ctl, pid_t pid,
args = parasite_args(ctl, struct parasite_dump_thread); args = parasite_args(ctl, struct parasite_dump_thread);
ret = parasite_execute_by_pid(PARASITE_CMD_DUMP_THREAD, ctl, pid); ret = parasite_execute_by_pid(PARASITE_CMD_DUMP_THREAD, ctl, tid->real);
memcpy(blocked, &args->blocked, sizeof(args->blocked)); memcpy(blocked, &args->blocked, sizeof(args->blocked));
*tid_addr = args->tid_addr; *tid_addr = args->tid_addr;
*tid = args->tid; tid->virt = args->tid;
*tls = args->tls; *tls = args->tls;
return ret; return ret;
......
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