Annotation of coherent/g/usr/lib/misc/kernelName.c, revision 1.1.1.1

1.1       root        1: #define __KERNEL__ 1
                      2: #include <kernel/typed.h>
                      3: #undef KERNEL
                      4: #include <fcntl.h>
                      5: 
                      6: #ifndef T_NULL
                      7: #define T_NULL ((char *)0)
                      8: #endif
                      9: 
                     10: /*
                     11:  * Return name of current kernel.
                     12:  * Usefull for things like ps and drvld that need to read the
                     13:  * kernel's symbol table.
                     14:  *
                     15:  * If we can't open /dev/boot_gift, guess "/coherent".
                     16:  * If boot_gift does not have a command line, guess "/autoboot".
                     17:  * Otherwise, pull the boot file from the command line.
                     18:  */
                     19: char *
                     20: kernelName()
                     21: {
                     22:        int fd;
                     23:        FIFO *ffp;
                     24:        typed_space *tp;
                     25:        int found;
                     26:        TYPED_SPACE(boot_gift, BG_LEN, T_FIFO_SIC);
                     27: 
                     28:        /* 16 characters are for "/", a 14 character name, and a NUL.  */
                     29:        static char retval[16];
                     30: 
                     31:        if (-1 == (fd = open("/dev/boot_gift", O_RDONLY))) {
                     32:                /* Can't open boot_gift, guess "/coherent".  */
                     33:                strcpy(retval, "/coherent");
                     34:                return(retval);
                     35:        }
                     36:        
                     37:        if (0 == read(fd, &boot_gift, BG_LEN)) {
                     38:                close(fd);
                     39:                /* Can't read boot_gift, guess "/coherent".  */
                     40:                strcpy(retval, "/coherent");
                     41:                return(retval);
                     42:        }
                     43: 
                     44:        close(fd);
                     45: 
                     46:        found = 0; /* We are looking for the command line.  */
                     47:        if (F_NULL != (ffp = fifo_open(&boot_gift, 0))) {
                     48:                for (; !found && T_NULL != (tp = fifo_read(ffp)); ) {
                     49:                        if (T_STR_ARGF == tp->ts_type) {
                     50:                                found = 1;
                     51:                                break;
                     52:                        }
                     53:                }
                     54:                fifo_close(ffp);
                     55: 
                     56:                if (!found) {
                     57:                        strcpy(retval, "/autoboot");
                     58:                } else {
                     59:                        /* Recast the argument list, so we can read it.  */
                     60:                        RETYPE(tp, T_FIFO_SIC);
                     61:                        ffp = fifo_open(tp, 0);
                     62:                        if (T_NULL == (tp = fifo_read(ffp))) {
                     63:                                strcpy(retval, "/autoboot");
                     64:                        } else {
                     65:                                sprintf(retval, "/%.14s", tp->ts_data);
                     66:                        }
                     67:                        fifo_close(ffp);
                     68:                }
                     69:        } else {
                     70:                strcpy(retval, "/autoboot");
                     71:        }
                     72: 
                     73:        return(retval);
                     74: 
                     75: } /* pick_nfile() */
                     76: 

unix.superglobalmegacorp.com

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