Annotation of coherent/b/kernel/tools/pipetest.c, revision 1.1

1.1     ! root        1: /*
        !             2:  * test of named pipes
        !             3:  */
        !             4: #include <fcntl.h>
        !             5: #include <signal.h>
        !             6: 
        !             7: int alarmed;
        !             8: int myalrm();
        !             9: 
        !            10: char * pname = "PIPE";
        !            11: int fd;
        !            12: char buf[80];
        !            13: int nread;
        !            14: #define PLIMIT 64000
        !            15: 
        !            16: main(argc, argv)
        !            17: int argc;
        !            18: char ** argv;
        !            19: {
        !            20:        /*
        !            21:         * Get name of pipe to play with - default to "PIPE".
        !            22:         */
        !            23:        if (argc > 1) {
        !            24:                pname = argv[1];
        !            25:        }
        !            26:        printf("Using pipe %s\n", pname);
        !            27:        if (signal(SIGALRM, myalrm) == SIG_ERR)
        !            28:                perror("pipetest: set alarm sig");
        !            29: 
        !            30:        test1();
        !            31:        test2();
        !            32:        test3();
        !            33:        test4();
        !            34:        test5();
        !            35:        test6();
        !            36:        test7();
        !            37:        test8();
        !            38: 
        !            39:        printf("Done.\n");
        !            40: }
        !            41: 
        !            42: test1()
        !            43: {
        !            44:        /*
        !            45:         * Open read-only test; no process has pipe open for write.
        !            46:         */
        !            47:        printf("\nTEST #1\n");
        !            48:        printf("Open O_RDONLY, pipe not open elsewhere.\n");
        !            49:        alarmed = 0;
        !            50:        alarm(2);
        !            51:        if ((fd = open(pname, O_RDONLY, 0)) != -1) {
        !            52:                printf("TEST #1 failed. Unexpected successful open.\n");
        !            53:                close(fd);
        !            54:        } else {
        !            55:                perror("test#1: open");
        !            56:                if (alarmed)
        !            57:                        printf("TEST #1 passed.  Open timed out.\n");
        !            58:                else
        !            59:                        printf("TEST #1 failed.  Open did not time out.\n");
        !            60:        }
        !            61:        alarm(0);
        !            62: }
        !            63: 
        !            64: test2()
        !            65: {
        !            66:        /*
        !            67:         * Open read-only with no delay; no process has pipe open for write.
        !            68:         */
        !            69:        printf("\nTEST #2\n");
        !            70:        printf("Open O_RDONLY|O_NDELAY, pipe not open elsewhere.\n");
        !            71:        alarmed = 0;
        !            72:        alarm(2);
        !            73:        if ((fd = open(pname, O_RDONLY | O_NDELAY, 0)) != -1) {
        !            74:                printf("TEST #2 passed.  Open succeeded.\n");
        !            75:                close(fd);
        !            76:        } else {
        !            77:                perror("test#2: open");
        !            78:                if (alarmed)
        !            79:                        printf("TEST #2 failed.  Open timed out.\n");
        !            80:                else
        !            81:                        printf("TEST #2 failed.  Open did not time out.\n");
        !            82:        }
        !            83:        alarm(0);
        !            84: }
        !            85: 
        !            86: test3()
        !            87: {
        !            88:        /*
        !            89:         * Open write-only test; no process has pipe open for read.
        !            90:         */
        !            91:        printf("\nTEST #3\n");
        !            92:        printf("Open O_WRONLY, pipe not open elsewhere.\n");
        !            93:        alarmed = 0;
        !            94:        if (signal(SIGALRM, myalrm) == SIG_ERR)
        !            95:                perror("test#3: set alarm sig");
        !            96:        alarm(2);
        !            97:        if ((fd = open(pname, O_WRONLY, 0)) != -1) {
        !            98:                printf("TEST #3 failed. Unexpected successful open.\n");
        !            99:                close(fd);
        !           100:        } else {
        !           101:                perror("test#3: open");
        !           102:                if (alarmed)
        !           103:                        printf("TEST #3 passed.  Open timed out.\n");
        !           104:                else
        !           105:                        printf("TEST #3 failed.  Open did not time out.\n");
        !           106:        }
        !           107:        alarm(0);
        !           108: }
        !           109: 
        !           110: test4()
        !           111: {
        !           112:        /*
        !           113:         * Open write-only with no delay; no process has pipe open for read.
        !           114:         */
        !           115:        printf("\nTEST #4\n");
        !           116:        printf("Open O_WRONLY|O_NDELAY, pipe not open elsewhere.\n");
        !           117:        alarmed = 0;
        !           118:        alarm(2);
        !           119:        if ((fd = open(pname, O_RDONLY | O_NDELAY, 0)) != -1) {
        !           120:                printf("TEST #4 passed.  Open succeeded.\n");
        !           121:                close(fd);
        !           122:        } else {
        !           123:                perror("test#4: open");
        !           124:                if (alarmed)
        !           125:                        printf("TEST #4 failed.  Open timed out.\n");
        !           126:                else
        !           127:                        printf("TEST #4 failed.  Open did not time out.\n");
        !           128:        }
        !           129:        alarm(0);
        !           130: }
        !           131: 
        !           132: test5()
        !           133: {
        !           134:        /*
        !           135:         * Read pipe, no data.
        !           136:         */
        !           137:        printf("\nTEST #5\n");
        !           138:        printf("Read pipe, no data.\n");
        !           139:        if ((fd = open(pname, O_RDWR, 0)) == -1) {
        !           140:                perror("test#5: open O_RDWR");
        !           141:                printf("TEST #5 failed.  Open failed.\n");
        !           142:        } else {
        !           143:                alarmed = 0;
        !           144:                alarm(2);
        !           145:                nread = read(fd, buf, 80);
        !           146:                if (nread < 0) {
        !           147:                        perror("test#5: read");
        !           148:                        if (alarmed)
        !           149:                                printf("TEST #5 passed.  Read timed out.\n");
        !           150:                        else
        !           151:                                printf(
        !           152:                                  "TEST #5 failed.  Read did not time out.\n");
        !           153:                } else {
        !           154:                        printf(
        !           155:                          "TEST #5 failed.  Read returned %d.\n", nread);
        !           156:                }
        !           157:                close(fd);
        !           158:        }
        !           159:        alarm(0);
        !           160: }
        !           161: 
        !           162: test6()
        !           163: {
        !           164:        /*
        !           165:         * Partial read.
        !           166:         */
        !           167:        printf("\nTEST #6\n");
        !           168:        printf("Read pipe, partial data.\n");
        !           169:        if ((fd = open(pname, O_RDWR, 0)) == -1) {
        !           170:                perror("test#6: open O_RDWR");
        !           171:                printf("TEST #6 failed.  Open failed.\n");
        !           172:        } else {
        !           173:                alarmed = 0;
        !           174:                alarm(2);
        !           175:                write(fd, "Hello", 5);
        !           176:                nread = read(fd, buf, 80);
        !           177:                if (nread < 0) {
        !           178:                        perror("test#6: read");
        !           179:                        if (alarmed)
        !           180:                                printf("TEST #6 failed.  Read timed out.\n");
        !           181:                        else
        !           182:                                printf(
        !           183:                                  "TEST #6 failed.  Read did not time out.\n");
        !           184:                } else {
        !           185:                        printf(
        !           186:                          "TEST #6 passed.  Read returned %d.\n", nread);
        !           187:                }
        !           188:                close(fd);
        !           189:        }
        !           190:        alarm(0);
        !           191: 
        !           192: }
        !           193: 
        !           194: test7()
        !           195: {
        !           196:        int wr_ct, nwrit;
        !           197:        /*
        !           198:         * Write pipe until no room.
        !           199:         */
        !           200:        printf("\nTEST #7\n");
        !           201:        printf("Write pipe until no room.\n");
        !           202:        if ((fd = open(pname, O_RDWR, 0)) == -1) {
        !           203:                perror("test#7: open O_RDWR");
        !           204:                printf("TEST #7 failed.  Open failed.\n");
        !           205:        } else {
        !           206:                alarmed = 0;
        !           207:                for (wr_ct = 0; wr_ct < PLIMIT; wr_ct += 80) {
        !           208:                        alarm(2);
        !           209:                        nwrit = write(fd, buf, 80);
        !           210:                        if (nwrit > 0)
        !           211:                                wr_ct += nwrit;
        !           212:                        else if (nwrit == 0) {
        !           213:                printf("TEST #7 failed.  Write failed.\n");
        !           214:                                break;
        !           215:                        } else {
        !           216:                                perror("test#7: write");
        !           217:                                if (alarmed)
        !           218: printf("TEST #7 passed.  Write timed out.\n");
        !           219:                                else
        !           220: printf("TEST #7 failed.  Write did not time out.\n");
        !           221:                                break;
        !           222:                        }
        !           223:                }
        !           224:                alarm(0);
        !           225:                printf("%d bytes written\n", wr_ct);
        !           226:                close(fd);
        !           227:        }
        !           228: }
        !           229: 
        !           230: test8()
        !           231: {
        !           232:        int wr_ct, nwrit;
        !           233:        /*
        !           234:         * Write pipe until no room.
        !           235:         */
        !           236:        printf("\nTEST #8\n");
        !           237:        printf("Write pipe until no room, no delay.\n");
        !           238:        if ((fd = open(pname, O_RDWR|O_NDELAY, 0)) == -1) {
        !           239:                perror("test#8: open O_RDWR|O_NDELAY");
        !           240:                printf("TEST #8 failed.  Open failed.\n");
        !           241:        } else {
        !           242:                alarmed = 0;
        !           243:                for (wr_ct = 0; wr_ct < PLIMIT; wr_ct += 80) {
        !           244:                        alarm(2);
        !           245:                        nwrit = write(fd, buf, 80);
        !           246:                        if (nwrit > 0)
        !           247:                                wr_ct += nwrit;
        !           248:                        else if (nwrit == 0) {
        !           249:                printf("TEST #8 Passed.  Write failed.\n");
        !           250:                                break;
        !           251:                        } else {
        !           252:                                perror("test#8: write");
        !           253:                                if (alarmed)
        !           254: printf("TEST #8 failed.  Write timed out.\n");
        !           255:                                else
        !           256: printf("TEST #8 failed.  Write did not time out.\n");
        !           257:                                break;
        !           258:                        }
        !           259:                }
        !           260:                alarm(0);
        !           261:                printf("%d bytes written\n", wr_ct);
        !           262:                close(fd);
        !           263:        }
        !           264: }
        !           265: 
        !           266: int
        !           267: myalrm()
        !           268: {
        !           269:        if (signal(SIGALRM, myalrm) == SIG_ERR)
        !           270:                perror("set alarm sig");
        !           271:        alarmed = 1;
        !           272: }

unix.superglobalmegacorp.com

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