Annotation of coherent/b/bin/ipcs/printipc.c, revision 1.1

1.1     ! root        1: /*
        !             2:  * Print out received ipc data corresponding to print optoins.
        !             3:  */
        !             4: #include <stdio.h>
        !             5: #include <pwd.h>
        !             6: #include <grp.h>
        !             7: #include <time.h>
        !             8: #include "ipcs.h"
        !             9: 
        !            10: struct group *grp;
        !            11: struct passwd *pstp;
        !            12: 
        !            13: struct msqid_ds        *msqbuf;        /* message queue data */
        !            14: /* 
        !            15:  * Print information about active message queues
        !            16:  */
        !            17: print_q() 
        !            18: {
        !            19:        int     x;              /* counter */
        !            20:        char    date[30];       /* date string */
        !            21: 
        !            22:        printf("MESSAGE QUEUES:\n");
        !            23: 
        !            24:        /* Check if msq is in use */
        !            25:        for (x = 0 ; x < NMSQID; x++)
        !            26:                if (msqbuf[x].msg_perm.mode & IPC_ALLOC)
        !            27:                        break;
        !            28:        if (x >= NMSQID)
        !            29:                return; 
        !            30: 
        !            31:        printf("T  ID         KEY  MODE  OWNER  GROUP");
        !            32: 
        !            33:        if (cflag) 
        !            34:                printf(" CREATOR CGROUP");
        !            35: 
        !            36:        if (oflag) 
        !            37:                printf(" CBYTES QNUM");
        !            38: 
        !            39:        if (bflag)
        !            40:                fputs(" QBYTES", stdout);
        !            41: 
        !            42:        if (pflag)
        !            43:                fputs(" LSPID LRPID", stdout);
        !            44: 
        !            45:        if (tflag)
        !            46:                fputs("   STIME    RTIME    CTIME ", stdout);
        !            47: 
        !            48:        puts("");
        !            49: 
        !            50:        for (x = 0 ; x < NMSQID; x++) {
        !            51:                if (!(msqbuf[x].msg_perm.mode & IPC_ALLOC))
        !            52:                        continue;
        !            53:                /* id, mode & key */
        !            54:                printf("q%4d%12d", msqbuf[x].msg_perm.seq,
        !            55:                        msqbuf[x].msg_perm.key);
        !            56:        
        !            57:                if (msqbuf[x].msg_perm.mode & MSG_RWAIT) {
        !            58:                        printf(" R"); /* pid waiting for msgrcv() */
        !            59:                } else {
        !            60:                        if (msqbuf[x].msg_perm.mode & MSG_WWAIT) {
        !            61:                                printf(" S"); /* waiting for msgsnd() */
        !            62:                        } else {
        !            63:                                printf(" -"); /* no flag set */
        !            64:                        }       
        !            65:                }
        !            66:                printf("0%o", msqbuf[x].msg_perm.mode&0777);                    
        !            67:                /* get owner's name from /etc/passwd */
        !            68:                if ((pstp = getpwuid(msqbuf[x].msg_perm.uid)) == NULL) {
        !            69:                        perror("ipcs: cannot get owner name:");
        !            70:                        exit(1);
        !            71:                }
        !            72:                printf("%7s", pstp->pw_name);
        !            73:        
        !            74:                /* get group name of owner */
        !            75:                if ((grp = getgrgid(msqbuf[x].msg_perm.gid)) == NULL) {
        !            76:                        perror("ipcs: cannot get group name");
        !            77:                        exit(1);
        !            78:                }
        !            79:                printf("%7s", grp->gr_name);
        !            80: 
        !            81:                if (cflag) {
        !            82:                /* get creator's name from /etc/passwd */
        !            83:                        if ((pstp = getpwuid(msqbuf[x].msg_perm.cuid)) == NULL){
        !            84:                                perror("ipcs: cannot get creator name");
        !            85:                                exit(1);
        !            86:                        }
        !            87:                        printf("%8s", pstp->pw_name);
        !            88: 
        !            89:                        /* get group name of creator */
        !            90:                        if ((grp = getgrgid(msqbuf[x].msg_perm.cgid)) == NULL){
        !            91:                                perror("ipcs: cannot get creator group");
        !            92:                        exit(1);
        !            93:                        }
        !            94:                        printf("%7s",grp->gr_name);
        !            95:                }
        !            96: 
        !            97:                /* current bytes & # of messages */
        !            98:                if (oflag) 
        !            99:                        printf("%7d%5d", msqbuf[x].msg_cbytes,
        !           100:                                                msqbuf[x].msg_qnum);
        !           101: 
        !           102:                /* max # bytes on queue */
        !           103:                if (bflag)
        !           104:                        printf("%7d",msqbuf[x].msg_qbytes);
        !           105: 
        !           106:                /* last send & receive processes */
        !           107:                if (pflag) 
        !           108:                        printf("%6d%6d", msqbuf[x].msg_lspid,
        !           109:                                                        msqbuf[x].msg_lrpid);
        !           110: 
        !           111:                /* times of last send and receive and modification*/
        !           112:                if (tflag) {
        !           113:                        sprintf(date,"%s", ctime(&msqbuf[x].msg_stime));
        !           114:                        printf(" %.8s",date + 11);
        !           115:                        sprintf(date,"%8s", ctime(&msqbuf[x].msg_rtime));
        !           116:                        printf(" %.8s",date + 11);
        !           117:                        sprintf(date,"%s", ctime(&msqbuf[x].msg_ctime));
        !           118:                        printf(" %.8s",date + 11);
        !           119:                }
        !           120:                printf("\n");
        !           121:        }
        !           122:        printf("\n");
        !           123: }
        !           124: 
        !           125: /* 
        !           126:  * Print information about active shared memory segments
        !           127:  */
        !           128: print_m()
        !           129: {
        !           130:        int x;          /* counter for print loop */
        !           131:        char date[30];  /* used to hold the date string */
        !           132: 
        !           133:        printf("SHARED MEMORY:\n");
        !           134: 
        !           135:        if (!total_shmids) 
        !           136:                return;
        !           137:        printf("T  ID         KEY  MODE  OWNER  GROUP");
        !           138:        if (cflag) 
        !           139:                printf(" CREATOR CGROUP");
        !           140:        
        !           141:        if (oflag) 
        !           142:                printf(" NATTCH");
        !           143: 
        !           144:        if (bflag) 
        !           145:                printf(" SEGSZ");
        !           146:        if (pflag) 
        !           147:                printf("  CPID LPID");
        !           148: 
        !           149:        if (tflag)
        !           150:                printf("    ATIME    DTIME    CTIME");
        !           151: 
        !           152:        printf("\n");
        !           153: 
        !           154: 
        !           155:        for (x = SHMMNI - 1; x >= 0 ; x--) {
        !           156:                if (!valid_shmid[x])
        !           157:                        continue;
        !           158:                /* id, mode & key */
        !           159:                printf("m%4d%12d  0%o", x, shmid[x].shm_perm.key,
        !           160:                                        shmid[x].shm_perm.mode & 0777);
        !           161:                /* get owner's name from /etc/passwd */
        !           162:                if ((pstp = getpwuid(shmid[x].shm_perm.uid)) == NULL) {
        !           163:                        perror("ipcs: cannot get owner name");
        !           164:                        exit(1);
        !           165:                }
        !           166:                printf("%7s",pstp->pw_name);
        !           167:        
        !           168:                /* get group name of owner */
        !           169: 
        !           170:                if ((grp = getgrgid(shmid[x].shm_perm.gid)) == NULL) {
        !           171:                        perror("ipcs: cannot get owner group");
        !           172:                        exit(1);
        !           173:                }
        !           174:                printf("%7s",grp->gr_name);
        !           175: 
        !           176:                if (cflag) {
        !           177:                        /* get creator's name from /etc/passwd */
        !           178:                        if ((pstp = getpwuid(shmid[x].shm_perm.cuid)) == NULL) {
        !           179:                                perror("ipcs: cannot get creator name");
        !           180:                                exit(1);
        !           181:                        }
        !           182:                        printf("%8s",pstp->pw_name);
        !           183:        
        !           184:                        /* get group name of creator */
        !           185:                        if ((grp = getgrgid(shmid[x].shm_perm.cgid)) == NULL) {
        !           186:                                perror("ipcs: cannot get creator group");
        !           187:                                exit(1);
        !           188:                        }
        !           189:                        printf("%7s",grp->gr_name);
        !           190:                }
        !           191: 
        !           192:                if (oflag) {    /* attached segments */
        !           193:                        printf("%7d", shmid[x].shm_nattch);
        !           194:                }
        !           195:                
        !           196:                if (bflag) {    /* segment size */
        !           197:                        printf("%6d",shmid[x].shm_segsz);
        !           198:                }
        !           199: 
        !           200:                if (pflag)      /* processs id of last op */
        !           201:                        printf("%6d%5d", shmid[x].shm_cpid, 
        !           202:                                        shmid[x].shm_lpid);
        !           203:                /* Time */      
        !           204:                if (tflag) {    
        !           205:                        /* attach time */
        !           206:                        if (!shmid[x].shm_atime)
        !           207:                                printf(" no-entry ");
        !           208:                        else {
        !           209:                                sprintf(date,"%s", ctime(&shmid[x].shm_atime));
        !           210:                                printf(" %.8s", date + 11);
        !           211:                        }
        !           212:                        /* detach time */
        !           213:                        if (!shmid[x].shm_dtime)
        !           214:                                printf(" no-entry");
        !           215:                        else {
        !           216:                                sprintf(date,"%s", ctime(&shmid[x].shm_dtime));
        !           217:                                printf(" %.8s", date + 11);
        !           218:                        }
        !           219:                        /* creat time */
        !           220:                        sprintf(date,"%s", ctime(&shmid[x].shm_ctime));
        !           221:                        printf(" %.8s", date + 11);
        !           222:                }
        !           223:                printf("\n");
        !           224:        }       
        !           225:        printf("\n");
        !           226: }
        !           227: 
        !           228: /* 
        !           229:  * Print information about active semaphores
        !           230:  */
        !           231: print_s()
        !           232: {
        !           233:        int x;          /* loop counter */
        !           234:        char date[30];  /* holds our date string */
        !           235: 
        !           236:        printf("SEMAPHORES:\n");
        !           237: 
        !           238:        if (!total_sems)
        !           239:                return;
        !           240: 
        !           241:        printf("T  ID         KEY MODE  OWNER  GROUP");
        !           242:        if (cflag) {
        !           243:                printf(" CREATOR CGROUP");
        !           244:        }
        !           245: 
        !           246:        if (bflag) {
        !           247:                printf(" NSEMS");
        !           248:        }
        !           249: 
        !           250:        if (tflag) {
        !           251:                printf("    OTIME    CTIME");
        !           252:        }
        !           253:        printf("\n");
        !           254: 
        !           255:        for (x = 0; x < SEMMNI; x++) {
        !           256:                if (!valid_semid[x])
        !           257:                        continue;
        !           258: 
        !           259:                printf("s%4d%12d 0%o",x,  /* mode and key */
        !           260:                        semid[x].sem_perm.key,
        !           261:                        semid[x].sem_perm.mode & 0777);
        !           262: 
        !           263:                /* get owner's name from /etc/passwd */
        !           264:                if((pstp = getpwuid(semid[x].sem_perm.uid)) == NULL){
        !           265:                        printf("Error reading password file!\n");
        !           266:                        exit(1);
        !           267:                }
        !           268:                printf("%7s",pstp->pw_name);
        !           269:        
        !           270:                /* get group name of owner */
        !           271:        
        !           272:                if((grp = getgrgid(semid[x].sem_perm.gid)) == NULL){
        !           273:                        printf("Error reading group file!\n");
        !           274:                        exit(1);
        !           275:                }
        !           276:                printf("%7s",grp->gr_name);
        !           277: 
        !           278:                if (cflag) {
        !           279:                /* get creator's name from /etc/passwd */
        !           280:                        if((pstp = getpwuid(semid[x].sem_perm.cuid)) == NULL){
        !           281:                                printf("Error reading password file!\n");
        !           282:                                exit(1);
        !           283:                        }
        !           284:                        printf("%8s",pstp->pw_name);
        !           285: 
        !           286:                        /* get group name of creator */
        !           287:                        if((grp = getgrgid(semid[x].sem_perm.cgid)) == NULL){
        !           288:                                printf("Error reading group file!\n");
        !           289:                                exit(1);
        !           290:                        }
        !           291:                        printf("%7s",grp->gr_name);
        !           292:                }
        !           293: 
        !           294:                if (bflag) {    /* number of semaphore elements */      
        !           295:                                printf("%6d",semid[x].sem_nsems);
        !           296:                }
        !           297: 
        !           298:                if (tflag) {    /* time */
        !           299:                        if (semid[x].sem_otime) {/* semop time */
        !           300:                                sprintf(date,"%s", ctime(&semid[x].sem_otime));
        !           301:                                printf(" %.8s",date + 11);
        !           302:                        } else
        !           303:                                printf(" no-entry");
        !           304:                        if (semid[x].sem_ctime) { /* Change time */
        !           305:                                sprintf(date,"%s", ctime(&semid[x].sem_ctime));
        !           306:                                printf(" %.8s",date + 11);
        !           307:                        } else
        !           308:                                printf(" no-entry");
        !           309:                }
        !           310:                printf("\n");
        !           311:        }
        !           312: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.