version 1.24, 2011/04/06 11:36:26 |
version 1.25, 2012/02/05 18:27:03 |
|
|
ipcs_kvm(void) |
ipcs_kvm(void) |
{ |
{ |
struct msginfo msginfo; |
struct msginfo msginfo; |
|
struct que msgque; |
struct msqid_ds *msqids; |
struct msqid_ds *msqids; |
struct seminfo seminfo; |
struct seminfo seminfo; |
struct semid_ds sem, **sema; |
struct semid_ds sem, **sema; |
|
|
#define X_SEMU 2 |
#define X_SEMU 2 |
{"_msginfo"}, |
{"_msginfo"}, |
#define X_MSGINFO 3 |
#define X_MSGINFO 3 |
{"_msqids"}, |
{"_msg_queues"}, |
#define X_MSQIDS 4 |
#define X_MSG_QUEUES 4 |
{"_shminfo"}, |
{"_shminfo"}, |
#define X_SHMINFO 5 |
#define X_SHMINFO 5 |
{"_shmsegs"}, |
{"_shmsegs"}, |
|
|
show_msgtotal(&msginfo); |
show_msgtotal(&msginfo); |
|
|
if (display & MSGINFO) { |
if (display & MSGINFO) { |
if (kvm_read(kd, symbols[X_MSQIDS].n_value, |
if (kvm_read(kd, symbols[X_MSG_QUEUES].n_value, |
&addr, sizeof(addr)) != sizeof(addr)) |
&addr, sizeof(addr)) != sizeof(addr)) |
errx(1, "kvm_read (%s): %s", |
errx(1, "kvm_read (%s): %s", |
symbols[X_MSQIDS].n_name, kvm_geterr(kd)); |
symbols[X_MSG_QUEUES].n_name, |
|
kvm_geterr(kd)); |
|
|
msqids = calloc(sizeof(struct msqid_ds), |
msqids = calloc(sizeof(struct msqid_ds), |
msginfo.msgmni); |
msginfo.msgmni); |
if (msqids == NULL) |
if (msqids == NULL) |
err(1, "calloc"); |
err(1, "calloc"); |
|
|
if (kvm_read(kd, addr, msqids, |
/* walk the TAILQ */ |
sizeof(struct msqid_ds) * msginfo.msgmni) != |
while (addr != 0) { |
sizeof(struct msqid_ds) * msginfo.msgmni) |
if (kvm_read(kd, addr, &msgque, sizeof(msgque)) |
errx(1, "kvm_read (msqids): %s", |
!= sizeof(msgque)) |
kvm_geterr(kd)); |
errx(1, "kvm_read (%s): %s", |
|
"msg que", kvm_geterr(kd)); |
|
msqids[msgque.que_ix] = msgque.msqid_ds; |
|
addr = (u_long)TAILQ_NEXT(&msgque, que_next); |
|
} |
|
|
show_msginfo_hdr(); |
show_msginfo_hdr(); |
for (i = 0; i < msginfo.msgmni; i++) { |
for (i = 0; i < msginfo.msgmni; i++) { |