version 1.2, 1996/05/30 09:11:19 |
version 1.3, 1996/06/16 10:35:59 |
|
|
/* $NetBSD: ipcs.c,v 1.10 1995/04/15 02:22:40 cgd Exp $ */ |
/* $NetBSD: ipcs.c,v 1.10.6.1 1996/06/07 01:53:47 thorpej Exp $ */ |
|
|
/* |
/* |
* Copyright (c) 1994 SigmaSoft, Th. Lockert <tholo@sigmasoft.com> |
* Copyright (c) 1994 SigmaSoft, Th. Lockert <tholo@sigmasoft.com> |
|
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
*/ |
|
|
#include <stdio.h> |
|
#include <stdlib.h> |
|
#include <string.h> |
|
#include <unistd.h> |
|
#include <fcntl.h> |
|
#include <paths.h> |
|
#include <nlist.h> |
|
#include <kvm.h> |
|
#include <err.h> |
|
|
|
#include <sys/types.h> |
#include <sys/types.h> |
#include <sys/param.h> |
#include <sys/param.h> |
|
#include <sys/time.h> |
#include <sys/proc.h> |
#include <sys/proc.h> |
#define _KERNEL |
#define _KERNEL |
#include <sys/ipc.h> |
#include <sys/ipc.h> |
#include <sys/sem.h> |
#include <sys/sem.h> |
#include <sys/shm.h> |
#include <sys/shm.h> |
#include <sys/msg.h> |
#include <sys/msg.h> |
|
#undef _KERNEL |
|
|
int semconfig __P((int,...)); |
#include <err.h> |
|
#include <fcntl.h> |
|
#include <kvm.h> |
|
#include <limits.h> |
|
#include <nlist.h> |
|
#include <paths.h> |
|
#include <stdio.h> |
|
#include <stdlib.h> |
|
#include <string.h> |
|
#include <unistd.h> |
|
|
|
int semconfig __P((int, ...)); |
void usage __P((void)); |
void usage __P((void)); |
|
|
|
extern char *__progname; /* from crt0.o */ |
|
|
static struct nlist symbols[] = { |
static struct nlist symbols[] = { |
{"_sema"}, |
{"_sema"}, |
#define X_SEMA 0 |
#define X_SEMA 0 |
|
|
int display = SHMINFO | MSGINFO | SEMINFO; |
int display = SHMINFO | MSGINFO | SEMINFO; |
int option = 0; |
int option = 0; |
char *core = NULL, *namelist = NULL; |
char *core = NULL, *namelist = NULL; |
|
char errbuf[_POSIX2_LINE_MAX]; |
int i; |
int i; |
|
|
while ((i = getopt(argc, argv, "MmQqSsabC:cN:optT")) != EOF) |
while ((i = getopt(argc, argv, "MmQqSsabC:cN:optT")) != EOF) |
|
|
} |
} |
|
|
if ((display & (MSGINFO | MSGTOTAL)) && |
if ((display & (MSGINFO | MSGTOTAL)) && |
kvm_read(kd, symbols[X_MSGINFO].n_value, &msginfo, sizeof(msginfo))) { |
(kvm_read(kd, symbols[X_MSGINFO].n_value, |
|
&msginfo, sizeof(msginfo)) == sizeof(msginfo))) { |
|
|
if (display & MSGTOTAL) { |
if (display & MSGTOTAL) { |
printf("msginfo:\n"); |
printf("msginfo:\n"); |
|
|
if (display & MSGINFO) { |
if (display & MSGINFO) { |
struct msqid_ds *xmsqids; |
struct msqid_ds *xmsqids; |
|
|
kvm_read(kd, symbols[X_MSQIDS].n_value, &msqids, sizeof(msqids)); |
if (kvm_read(kd, symbols[X_MSQIDS].n_value, |
xmsqids = malloc(sizeof(struct msqid_ds) * msginfo.msgmni); |
&msqids, sizeof(msqids)) != sizeof(msqids)) |
kvm_read(kd, (u_long) msqids, xmsqids, sizeof(struct msqid_ds) * msginfo.msgmni); |
errx(1, "kvm_read (%s): %s", |
|
symbols[X_MSQIDS].n_name, kvm_geterr(kd)); |
|
|
|
xmsqids = malloc(sizeof(struct msqid_ds) * |
|
msginfo.msgmni); |
|
|
|
if (kvm_read(kd, (u_long)msqids, xmsqids, |
|
sizeof(struct msqid_ds) * msginfo.msgmni) != |
|
sizeof(struct msqid_ds) * msginfo.msgmni) |
|
errx(1, "kvm_read (msqids): %s", |
|
kvm_geterr(kd)); |
|
|
printf("Message Queues:\n"); |
printf("Message Queues:\n"); |
printf("T ID KEY MODE OWNER GROUP"); |
printf("T ID KEY MODE OWNER GROUP"); |
if (option & CREATOR) |
if (option & CREATOR) |
|
|
"SVID messages facility not configured in the system\n"); |
"SVID messages facility not configured in the system\n"); |
} |
} |
if ((display & (SHMINFO | SHMTOTAL)) && |
if ((display & (SHMINFO | SHMTOTAL)) && |
kvm_read(kd, symbols[X_SHMINFO].n_value, &shminfo, sizeof(shminfo))) { |
(kvm_read(kd, symbols[X_SHMINFO].n_value, &shminfo, |
|
sizeof(shminfo)) == sizeof(shminfo))) { |
|
|
if (display & SHMTOTAL) { |
if (display & SHMTOTAL) { |
printf("shminfo:\n"); |
printf("shminfo:\n"); |
printf("\tshmmax: %7d\t(max shared memory segment size)\n", |
printf("\tshmmax: %7d\t(max shared memory segment size)\n", |
|
|
if (display & SHMINFO) { |
if (display & SHMINFO) { |
struct shmid_ds *xshmids; |
struct shmid_ds *xshmids; |
|
|
kvm_read(kd, symbols[X_SHMSEGS].n_value, &shmsegs, sizeof(shmsegs)); |
if (kvm_read(kd, symbols[X_SHMSEGS].n_value, &shmsegs, |
xshmids = malloc(sizeof(struct shmid_ds) * msginfo.msgmni); |
sizeof(shmsegs)) != sizeof(shmsegs)) |
kvm_read(kd, (u_long) shmsegs, xshmids, sizeof(struct shmid_ds) * |
errx(1, "kvm_read (%s): %s", |
shminfo.shmmni); |
symbols[X_SHMSEGS].n_name, kvm_geterr(kd)); |
|
|
|
xshmids = malloc(sizeof(struct shmid_ds) * |
|
msginfo.msgmni); |
|
|
|
if (kvm_read(kd, (u_long)shmsegs, xshmids, |
|
sizeof(struct shmid_ds) * shminfo.shmmni) != |
|
sizeof(struct shmid_ds) * shminfo.shmmni) |
|
errx(1, "kvm_read (shmsegs): %s", |
|
kvm_geterr(kd)); |
|
|
printf("Shared Memory:\n"); |
printf("Shared Memory:\n"); |
printf("T ID KEY MODE OWNER GROUP"); |
printf("T ID KEY MODE OWNER GROUP"); |
if (option & CREATOR) |
if (option & CREATOR) |
|
|
"SVID shared memory facility not configured in the system\n"); |
"SVID shared memory facility not configured in the system\n"); |
} |
} |
if ((display & (SEMINFO | SEMTOTAL)) && |
if ((display & (SEMINFO | SEMTOTAL)) && |
kvm_read(kd, symbols[X_SEMINFO].n_value, &seminfo, sizeof(seminfo))) { |
(kvm_read(kd, symbols[X_SEMINFO].n_value, &seminfo, |
|
sizeof(seminfo)) == sizeof(seminfo))) { |
struct semid_ds *xsema; |
struct semid_ds *xsema; |
|
|
if (display & SEMTOTAL) { |
if (display & SEMTOTAL) { |
|
|
fprintf(stderr, |
fprintf(stderr, |
"Can't lock semaphore facility - winging it...\n"); |
"Can't lock semaphore facility - winging it...\n"); |
} |
} |
kvm_read(kd, symbols[X_SEMA].n_value, &sema, sizeof(sema)); |
if (kvm_read(kd, symbols[X_SEMA].n_value, &sema, |
xsema = malloc(sizeof(struct semid_ds) * seminfo.semmni); |
sizeof(sema)) != sizeof(sema)) |
kvm_read(kd, (u_long) sema, xsema, sizeof(struct semid_ds) * seminfo.semmni); |
errx(1, "kvm_read (%s): %s", |
|
symbols[X_SEMA].n_name, kvm_geterr(kd)); |
|
|
|
xsema = malloc(sizeof(struct semid_ds) * |
|
seminfo.semmni); |
|
|
|
if (kvm_read(kd, (u_long)sema, xsema, |
|
sizeof(struct semid_ds) * seminfo.semmni) != |
|
sizeof(struct semid_ds) * seminfo.semmni) |
|
errx(1, "kvm_read (sema): %s", |
|
kvm_geterr(kd)); |
|
|
printf("Semaphores:\n"); |
printf("Semaphores:\n"); |
printf("T ID KEY MODE OWNER GROUP"); |
printf("T ID KEY MODE OWNER GROUP"); |
if (option & CREATOR) |
if (option & CREATOR) |
|
|
{ |
{ |
|
|
fprintf(stderr, |
fprintf(stderr, |
"usage: ipcs [-abcmopqst] [-C corefile] [-N namelist]\n"); |
"usage: %s [-abcmopqst] [-C corefile] [-N namelist]\n", |
|
__progname); |
exit(1); |
exit(1); |
} |
} |