[BACK]Return to ipcs.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / ipcs

Diff for /src/usr.bin/ipcs/ipcs.c between version 1.18 and 1.19

version 1.18, 2002/06/15 18:47:50 version 1.19, 2002/12/17 23:11:32
Line 66 
Line 66 
   
 #include <sys/param.h>  #include <sys/param.h>
 #include <sys/sysctl.h>  #include <sys/sysctl.h>
 #define _KERNEL  #define _KERNEL                 /* XXX */
 #include <sys/ipc.h>  #include <sys/ipc.h>
 #include <sys/sem.h>  #include <sys/sem.h>
 #include <sys/shm.h>  #include <sys/shm.h>
Line 523 
Line 523 
         char *buf;          char *buf;
         int mib[3];          int mib[3];
         size_t len;          size_t len;
         int i /*, valid */;          int i, valid;
         long valid;  
   
         mib[0] = CTL_KERN;          mib[0] = CTL_KERN;
         mib[1] = KERN_SYSVSHM;          mib[1] = KERN_SYSVSHM;
Line 568 
Line 567 
                 show_shminfo_hdr();                  show_shminfo_hdr();
                 for (i = 0; i < shmsi->shminfo.shmmni; i++) {                  for (i = 0; i < shmsi->shminfo.shmmni; i++) {
                         struct shmid_ds *shmptr = &shmsi->shmids[i];                          struct shmid_ds *shmptr = &shmsi->shmids[i];
                         if (shmptr->shm_perm.mode & 0x0800)                          if (shmptr->shm_internal)
                                 show_shminfo(shmptr->shm_atime,                                  show_shminfo(shmptr->shm_atime,
                                     shmptr->shm_dtime,                                      shmptr->shm_dtime,
                                     shmptr->shm_ctime,                                      shmptr->shm_ctime,
Line 639 
Line 638 
                 show_seminfo_hdr();                  show_seminfo_hdr();
                 for (i = 0; i < semsi->seminfo.semmni; i++) {                  for (i = 0; i < semsi->seminfo.semmni; i++) {
                         struct semid_ds *semaptr = &semsi->semids[i];                          struct semid_ds *semaptr = &semsi->semids[i];
                         if ((semaptr->sem_perm.mode & SEM_ALLOC) != 0)  
                           if (semaptr->sem_base != NULL)
                                 show_seminfo(semaptr->sem_otime,                                  show_seminfo(semaptr->sem_otime,
                                     semaptr->sem_ctime,                                      semaptr->sem_ctime,
                                     IXSEQ_TO_IPCID(i, semaptr->sem_perm),                                      IXSEQ_TO_IPCID(i, semaptr->sem_perm),
Line 661 
Line 661 
         struct msginfo msginfo;          struct msginfo msginfo;
         struct msqid_ds *msqids;          struct msqid_ds *msqids;
         struct seminfo seminfo;          struct seminfo seminfo;
         struct semid_ds *sema;          struct semid_ds sem, **sema;
         struct shminfo shminfo;          struct shminfo shminfo;
         struct shmid_ds *shmsegs;          struct shmid_ds shmseg, **shmsegs;
         kvm_t *kd;  
         char errbuf[_POSIX2_LINE_MAX];          char errbuf[_POSIX2_LINE_MAX];
           u_long addr;
           kvm_t *kd;
         int i;          int i;
         struct nlist symbols[] = {          struct nlist symbols[] = {
                 {"_sema"},                  {"_sema"},
Line 714 
Line 715 
                         show_msgtotal(&msginfo);                          show_msgtotal(&msginfo);
   
                 if (display & MSGINFO) {                  if (display & MSGINFO) {
                         struct msqid_ds *xmsqids;  
   
                         if (kvm_read(kd, symbols[X_MSQIDS].n_value,                          if (kvm_read(kd, symbols[X_MSQIDS].n_value,
                             &msqids, sizeof(msqids)) != sizeof(msqids))                              &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_MSQIDS].n_name, kvm_geterr(kd));
   
                         xmsqids = malloc(sizeof(struct msqid_ds) *                          msqids = malloc(sizeof(struct msqid_ds) *
                             msginfo.msgmni);                              msginfo.msgmni);
                           if (msqids == NULL)
                                   err(1, "malloc");
   
                         if (kvm_read(kd, (u_long)msqids, xmsqids,                          if (kvm_read(kd, addr, msqids,
                             sizeof(struct msqid_ds) * msginfo.msgmni) !=                              sizeof(struct msqid_ds) * msginfo.msgmni) !=
                             sizeof(struct msqid_ds) * msginfo.msgmni)                              sizeof(struct msqid_ds) * msginfo.msgmni)
                                 errx(1, "kvm_read (msqids): %s",                                  errx(1, "kvm_read (msqids): %s",
Line 732 
Line 733 
   
                         show_msginfo_hdr();                          show_msginfo_hdr();
                         for (i = 0; i < msginfo.msgmni; i++) {                          for (i = 0; i < msginfo.msgmni; i++) {
                                 struct msqid_ds *msqptr = &xmsqids[i];                                  struct msqid_ds *msqptr = &msqids[i];
                                 if (msqptr->msg_qbytes != 0)                                  if (msqptr->msg_qbytes != 0)
                                         show_msginfo(msqptr->msg_stime,                                          show_msginfo(msqptr->msg_stime,
                                             msqptr->msg_rtime,                                              msqptr->msg_rtime,
Line 766 
Line 767 
                         show_shmtotal(&shminfo);                          show_shmtotal(&shminfo);
   
                 if (display & SHMINFO) {                  if (display & SHMINFO) {
                         struct shmid_ds *xshmids;                          if (kvm_read(kd, symbols[X_SHMSEGS].n_value, &addr,
                               sizeof(addr)) != sizeof(addr))
                         if (kvm_read(kd, symbols[X_SHMSEGS].n_value, &shmsegs,  
                             sizeof(shmsegs)) != sizeof(shmsegs))  
                                 errx(1, "kvm_read (%s): %s",                                  errx(1, "kvm_read (%s): %s",
                                     symbols[X_SHMSEGS].n_name, kvm_geterr(kd));                                      symbols[X_SHMSEGS].n_name, kvm_geterr(kd));
   
                         xshmids = malloc(sizeof(struct shmid_ds) *                          shmsegs = malloc(sizeof(struct shmid_ds *) *
                             shminfo.shmmni);                              shminfo.shmmni);
                           if (shmsegs == NULL)
                                   err(1, "malloc");
   
                         if (kvm_read(kd, (u_long)shmsegs, xshmids,                          if (kvm_read(kd, addr, shmsegs,
                             sizeof(struct shmid_ds) * shminfo.shmmni) !=                              sizeof(struct shmid_ds *) * shminfo.shmmni) !=
                             sizeof(struct shmid_ds) * shminfo.shmmni)                              sizeof(struct shmid_ds *) * shminfo.shmmni)
                                 errx(1, "kvm_read (shmsegs): %s",                                  errx(1, "kvm_read (shmsegs): %s",
                                     kvm_geterr(kd));                                      kvm_geterr(kd));
   
                         show_shminfo_hdr();                          show_shminfo_hdr();
                         for (i = 0; i < shminfo.shmmni; i++) {                          for (i = 0; i < shminfo.shmmni; i++) {
                                 struct shmid_ds *shmptr = &xshmids[i];                                  if (shmsegs[i] == NULL)
                                 if (shmptr->shm_perm.mode & 0x0800)                                          continue;
                                         show_shminfo(shmptr->shm_atime,  
                                             shmptr->shm_dtime,                                  if (kvm_read(kd, (u_long)shmsegs[i], &shmseg,
                                             shmptr->shm_ctime,                                      sizeof(shmseg)) != sizeof(shmseg))
                                             IXSEQ_TO_IPCID(i, shmptr->shm_perm),                                          errx(1, "kvm_read (shmseg): %s",
                                             shmptr->shm_perm.key,                                              kvm_geterr(kd));
                                             shmptr->shm_perm.mode,                                  show_shminfo(shmseg.shm_atime,
                                             shmptr->shm_perm.uid,                                      shmseg.shm_dtime,
                                             shmptr->shm_perm.gid,                                      shmseg.shm_ctime,
                                             shmptr->shm_perm.cuid,                                      IXSEQ_TO_IPCID(i, shmseg.shm_perm),
                                             shmptr->shm_perm.cgid,                                      shmseg.shm_perm.key,
                                             shmptr->shm_nattch,                                      shmseg.shm_perm.mode,
                                             shmptr->shm_segsz,                                      shmseg.shm_perm.uid,
                                             shmptr->shm_cpid,                                      shmseg.shm_perm.gid,
                                             shmptr->shm_lpid);                                      shmseg.shm_perm.cuid,
                                       shmseg.shm_perm.cgid,
                                       shmseg.shm_nattch,
                                       shmseg.shm_segsz,
                                       shmseg.shm_cpid,
                                       shmseg.shm_lpid);
                         }                          }
                         printf("\n");                          printf("\n");
                 }                  }
Line 811 
Line 817 
         if ((display & (SEMINFO | SEMTOTAL)) &&          if ((display & (SEMINFO | SEMTOTAL)) &&
             (kvm_read(kd, symbols[X_SEMINFO].n_value, &seminfo,              (kvm_read(kd, symbols[X_SEMINFO].n_value, &seminfo,
              sizeof(seminfo)) == sizeof(seminfo))) {               sizeof(seminfo)) == sizeof(seminfo))) {
                 struct semid_ds *xsema;  
   
                 if (display & SEMTOTAL)                  if (display & SEMTOTAL)
                         show_semtotal(&seminfo);                          show_semtotal(&seminfo);
   
                 if (display & SEMINFO) {                  if (display & SEMINFO) {
                         if (kvm_read(kd, symbols[X_SEMA].n_value, &sema,                          if (kvm_read(kd, symbols[X_SEMA].n_value, &addr,
                             sizeof(sema)) != sizeof(sema))                              sizeof(addr)) != sizeof(addr))
                                 errx(1, "kvm_read (%s): %s",                                  errx(1, "kvm_read (%s): %s",
                                     symbols[X_SEMA].n_name, kvm_geterr(kd));                                      symbols[X_SEMA].n_name, kvm_geterr(kd));
   
                         xsema = malloc(sizeof(struct semid_ds) *                          sema = malloc(sizeof(struct semid_ds *) *
                             seminfo.semmni);                              seminfo.semmni);
                           if (sema == NULL)
                                   err(1, "malloc");
   
                         if (kvm_read(kd, (u_long)sema, xsema,                          if (kvm_read(kd, addr, sema,
                             sizeof(struct semid_ds) * seminfo.semmni) !=                              sizeof(struct semid_ds *) * seminfo.semmni) !=
                             sizeof(struct semid_ds) * seminfo.semmni)                              sizeof(struct semid_ds *) * seminfo.semmni)
                                 errx(1, "kvm_read (sema): %s",                                  errx(1, "kvm_read (sema): %s",
                                     kvm_geterr(kd));                                      kvm_geterr(kd));
   
                         show_seminfo_hdr();                          show_seminfo_hdr();
                         for (i = 0; i < seminfo.semmni; i++) {                          for (i = 0; i < seminfo.semmni; i++) {
                                 struct semid_ds *semaptr = &xsema[i];                                  if (sema[i] == NULL)
                                 if ((semaptr->sem_perm.mode & SEM_ALLOC) != 0)                                          continue;
                                         show_seminfo(semaptr->sem_otime,  
                                             semaptr->sem_ctime,  
                                             IXSEQ_TO_IPCID(i, semaptr->sem_perm),  
                                             semaptr->sem_perm.key,  
                                             semaptr->sem_perm.mode,  
                                             semaptr->sem_perm.uid,  
                                             semaptr->sem_perm.gid,  
                                             semaptr->sem_perm.cuid,  
                                             semaptr->sem_perm.cgid,  
                                             semaptr->sem_nsems);  
                         }  
   
                                   if (kvm_read(kd, (u_long)sema[i], &sem,
                                       sizeof(sem)) != sizeof(sem))
                                           errx(1, "kvm_read (sem): %s",
                                               kvm_geterr(kd));
                                   show_seminfo(sem.sem_otime,
                                       sem.sem_ctime,
                                       IXSEQ_TO_IPCID(i, sem.sem_perm),
                                       sem.sem_perm.key,
                                       sem.sem_perm.mode,
                                       sem.sem_perm.uid,
                                       sem.sem_perm.gid,
                                       sem.sem_perm.cuid,
                                       sem.sem_perm.cgid,
                                       sem.sem_nsems);
                           }
                         printf("\n");                          printf("\n");
                 }                  }
         } else          } else

Legend:
Removed from v.1.18  
changed lines
  Added in v.1.19