mirror of
https://github.com/checkpoint-restore/criu
synced 2025-09-03 15:55:53 +00:00
IPC: show semaphores set
Signed-off-by: Stanislav Kinsbursky <skinsbursky@parallels.com> Acked-by: Pavel Emelyanov <xemul@parallels.com> Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
This commit is contained in:
committed by
Cyrill Gorcunov
parent
4141296ed7
commit
4101487f87
@@ -520,6 +520,9 @@ static int cr_parse_file(struct cr_options *opts)
|
||||
case IPCNS_MSG_MAGIC:
|
||||
show_ipc_msg(fd);
|
||||
break;
|
||||
case IPCNS_SEM_MAGIC:
|
||||
show_ipc_sem(fd);
|
||||
break;
|
||||
default:
|
||||
pr_err("Unknown magic %x on %s\n", magic, opts->show_dump_file);
|
||||
goto err;
|
||||
|
@@ -6,6 +6,7 @@
|
||||
extern void show_ipc_var(int fd);
|
||||
extern void show_ipc_shm(int fd);
|
||||
extern void show_ipc_msg(int fd);
|
||||
extern void show_ipc_sem(int fd);
|
||||
extern int dump_ipc_ns(int ns_pid, struct cr_fdset *fdset);
|
||||
extern int prepare_ipc_ns(int pid);
|
||||
|
||||
|
28
ipc_ns.c
28
ipc_ns.c
@@ -440,6 +440,34 @@ static void show_var_entry(struct ipc_var_entry *entry)
|
||||
ipc_sysctl_req(entry, CTL_PRINT);
|
||||
}
|
||||
|
||||
static void show_ipc_sem_entries(int fd)
|
||||
{
|
||||
pr_info("\nSemaphores sets:\n");
|
||||
while (1) {
|
||||
int size;
|
||||
struct ipc_sem_entry entry;
|
||||
u16 *values;
|
||||
|
||||
if (read_img_eof(fd, &entry) <= 0)
|
||||
return;
|
||||
print_ipc_sem_entry(&entry);
|
||||
size = sizeof(u16) * entry.nsems;
|
||||
values = xmalloc(size);
|
||||
if (values == NULL)
|
||||
return;
|
||||
if (read_img_buf(fd, values, round_up(size, sizeof(u64))) <= 0)
|
||||
return;
|
||||
print_ipc_sem_array(entry.nsems, values);
|
||||
}
|
||||
}
|
||||
|
||||
void show_ipc_sem(int fd)
|
||||
{
|
||||
pr_img_head(CR_FD_IPCNS);
|
||||
show_ipc_sem_entries(fd);
|
||||
pr_img_tail(CR_FD_IPCNS);
|
||||
}
|
||||
|
||||
static void show_ipc_msg_entries(int fd)
|
||||
{
|
||||
pr_info("\nMessage queues:\n");
|
||||
|
@@ -134,6 +134,9 @@ int try_show_namespaces(int ns_pid)
|
||||
if (fdset->fds[CR_FD_IPCNS_MSG] != -1)
|
||||
show_ipc_msg(fdset->fds[CR_FD_IPCNS_MSG]);
|
||||
|
||||
if (fdset->fds[CR_FD_IPCNS_SEM] != -1)
|
||||
show_ipc_sem(fdset->fds[CR_FD_IPCNS_SEM]);
|
||||
|
||||
close_cr_fdset(&fdset);
|
||||
return 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user