Commit 26eb254f authored by Kinsbursky Stanislav's avatar Kinsbursky Stanislav Committed by Pavel Emelyanov

protobuf: use generic show function for ipc semaphores

Signed-off-by: 's avatarStanislav Kinsbursky <skinsbursky@openvz.org>
Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
parent 290003e9
...@@ -86,15 +86,12 @@ static void pr_ipc_sem_array(unsigned int loglevel, int nr, u16 *values) ...@@ -86,15 +86,12 @@ static void pr_ipc_sem_array(unsigned int loglevel, int nr, u16 *values)
#define pr_info_ipc_sem_array(nr, values) pr_ipc_sem_array(LOG_INFO, nr, values) #define pr_info_ipc_sem_array(nr, values) pr_ipc_sem_array(LOG_INFO, nr, values)
#define pr_msg_ipc_sem_array(nr, values) pr_ipc_sem_array(LOG_MSG, nr, values) #define pr_msg_ipc_sem_array(nr, values) pr_ipc_sem_array(LOG_MSG, nr, values)
static void pr_ipc_sem_entry(unsigned int loglevel, const IpcSemEntry *sem) static void pr_info_ipc_sem_entry(const IpcSemEntry *sem)
{ {
pr_ipc_desc_entry(loglevel, sem->desc); pr_ipc_desc_entry(LOG_INFO, sem->desc);
print_on_level(loglevel, "nsems: %-10d\n", sem->nsems); print_on_level(LOG_INFO, "nsems: %-10d\n", sem->nsems);
} }
#define pr_info_ipc_sem_entry(sem) pr_ipc_sem_entry(LOG_INFO, sem)
#define pr_msg_ipc_sem_entry(sem) pr_ipc_sem_entry(LOG_MSG, sem)
static int dump_ipc_sem_set(int fd, const IpcSemEntry *entry) static int dump_ipc_sem_set(int fd, const IpcSemEntry *entry)
{ {
int ret, size; int ret, size;
...@@ -480,42 +477,25 @@ int dump_ipc_ns(int ns_pid, const struct cr_fdset *fdset) ...@@ -480,42 +477,25 @@ int dump_ipc_ns(int ns_pid, const struct cr_fdset *fdset)
return 0; return 0;
} }
static void show_ipc_sem_entries(int fd) static void ipc_sem_handler(int fd, void *obj, int show_pages_content)
{ {
IpcSemEntry *entry; IpcSemEntry *e = obj;
u16 *values; u16 *values;
int size;
pr_msg("\nSemaphores sets:\n"); pr_msg("\n");
while (1) { size = sizeof(u16) * e->nsems;
int size; values = xmalloc(size);
if (values == NULL)
values = NULL; return;
if (read_img_buf(fd, values, round_up(size, sizeof(u64))) <= 0)
if (pb_read_eof(fd, &entry, ipc_sem_entry) <= 0) return;
break; pr_msg_ipc_sem_array(e->nsems, values);
pr_msg_ipc_sem_entry(entry);
size = sizeof(u16) * entry->nsems;
values = xmalloc(size);
if (values == NULL)
break;
if (read_img_buf(fd, values, round_up(size, sizeof(u64))) <= 0)
break;
pr_msg_ipc_sem_array(entry->nsems, values);
ipc_sem_entry__free_unpacked(entry, NULL);
xfree(values);
}
xfree(values);
if (entry)
ipc_sem_entry__free_unpacked(entry, NULL);
} }
void show_ipc_sem(int fd, struct cr_options *o) void show_ipc_sem(int fd, struct cr_options *o)
{ {
pr_img_head(CR_FD_IPCNS); pb_show_plain_payload(fd, ipc_sem_entry, ipc_sem_handler, 0);
show_ipc_sem_entries(fd);
pr_img_tail(CR_FD_IPCNS);
} }
static void show_ipc_msg_entries(int fd) static void show_ipc_msg_entries(int fd)
......
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