Annotation of researchv10no/sys/os/x, revision 1.1.1.1

1.1       root        1: # 1 "acct.c"
                      2: 
                      3: 
                      4: # 1 "../sys/param.h"
                      5: 
                      6: 
                      7: 
                      8: 
                      9: 
                     10: 
                     11: 
                     12: 
                     13: 
                     14: 
                     15: 
                     16: 
                     17: 
                     18: 
                     19: 
                     20: 
                     21: 
                     22: 
                     23: 
                     24: 
                     25: 
                     26: 
                     27: 
                     28: 
                     29: 
                     30: 
                     31: 
                     32: 
                     33: 
                     34: 
                     35: 
                     36: 
                     37: 
                     38: 
                     39: 
                     40: 
                     41: 
                     42: # 1 "/usr/include/signal.h"
                     43: 
                     44: 
                     45: 
                     46: 
                     47: 
                     48: 
                     49: 
                     50: 
                     51: 
                     52: 
                     53: 
                     54: 
                     55: 
                     56: 
                     57: 
                     58: 
                     59: 
                     60: 
                     61: 
                     62: 
                     63: 
                     64: 
                     65: 
                     66: 
                     67: 
                     68: 
                     69: 
                     70: 
                     71: 
                     72: 
                     73: 
                     74: 
                     75: 
                     76: 
                     77: 
                     78: 
                     79: 
                     80: 
                     81: typedef int    (*SIG_TYP)();
                     82: # 42 "/usr/include/signal.h"
                     83: 
                     84: 
                     85: 
                     86: 
                     87: 
                     88: 
                     89: 
                     90: 
                     91: 
                     92: 
                     93: 
                     94: 
                     95: 
                     96: 
                     97: 
                     98: 
                     99: 
                    100: 
                    101: # 39 "../sys/param.h"
                    102: 
                    103: 
                    104: 
                    105: 
                    106: 
                    107: 
                    108: 
                    109: 
                    110: 
                    111: 
                    112: 
                    113: 
                    114: 
                    115: 
                    116: 
                    117: 
                    118: 
                    119: 
                    120: 
                    121: 
                    122: 
                    123: 
                    124: 
                    125: 
                    126: 
                    127: 
                    128: 
                    129: 
                    130: 
                    131: 
                    132: 
                    133: 
                    134: 
                    135: 
                    136: 
                    137: 
                    138: 
                    139: 
                    140: 
                    141: 
                    142: 
                    143: 
                    144: 
                    145: 
                    146: 
                    147: 
                    148: 
                    149: 
                    150: 
                    151: 
                    152: 
                    153: 
                    154: 
                    155: 
                    156: 
                    157: 
                    158: 
                    159: 
                    160: 
                    161: 
                    162: 
                    163: 
                    164: 
                    165: 
                    166: 
                    167: 
                    168: 
                    169: 
                    170: 
                    171: 
                    172: 
                    173: 
                    174: 
                    175: 
                    176: 
                    177: 
                    178: 
                    179: 
                    180: 
                    181: 
                    182: 
                    183: 
                    184: 
                    185:                                        
                    186: 
                    187: 
                    188: 
                    189: 
                    190: 
                    191: 
                    192: 
                    193: 
                    194: # 1 "../sys/types.h"
                    195: 
                    196: 
                    197: 
                    198: 
                    199: 
                    200: 
                    201: 
                    202: 
                    203: 
                    204: 
                    205: 
                    206: 
                    207: 
                    208: 
                    209: 
                    210: 
                    211: 
                    212: 
                    213: 
                    214: 
                    215: 
                    216: 
                    217: 
                    218: 
                    219: 
                    220: 
                    221: 
                    222: 
                    223: typedef        unsigned char   u_char;
                    224: typedef        unsigned short  u_short;
                    225: typedef        unsigned int    u_int;
                    226: typedef        unsigned long   u_long;
                    227: 
                    228: typedef        long    daddr_t;
                    229: typedef        char *  caddr_t;
                    230: typedef        u_short ino_t;
                    231: typedef        long    swblk_t;
                    232: 
                    233: 
                    234: typedef        long    size_t;
                    235: 
                    236: typedef        long    time_t;
                    237: typedef        long    label_t[14];
                    238: typedef        u_short dev_t;
                    239: typedef        long    off_t;
                    240: typedef        struct { unsigned long lo; long hi; } Long;
                    241: 
                    242: 
                    243: 
                    244: 
                    245: 
                    246: 
                    247: 
                    248: 
                    249: 
                    250: 
                    251: 
                    252: 
                    253: 
                    254: 
                    255: 
                    256: typedef struct         fd_set { unsigned int fds_bits[(128+sizeof(int)*8-1)/(sizeof(int)*8)]; } fd_set;
                    257: 
                    258: 
                    259: 
                    260: 
                    261: # 132 "../sys/param.h"
                    262: 
                    263: 
                    264: 
                    265: 
                    266: 
                    267: Long   ltoL();
                    268: Long   Lladd();
                    269: Long   Luadd();
                    270: Long   LLadd();
                    271: 
                    272: unsigned Lshift();
                    273: # 4 "acct.c"
                    274: # 1 "../sys/systm.h"
                    275: 
                    276: 
                    277: 
                    278: 
                    279: 
                    280: int    lbolt;                  
                    281: time_t time;                   
                    282: char   runin;                  
                    283: char   runout;                 
                    284: int    runrun;                 
                    285: int    noproc;                 
                    286: char   curpri;                 
                    287: int    maxmem;                 
                    288: int    physmem;                
                    289: int    wantin;
                    290: 
                    291: daddr_t        rablock;                
                    292: dev_t  rootdev;                
                    293: extern dev_t swapdev;          
                    294: dev_t  argdev;                 
                    295: 
                    296: daddr_t        bmap();
                    297: unsigned max();
                    298: unsigned min();
                    299: 
                    300: 
                    301: 
                    302: 
                    303: extern struct sysent
                    304: {
                    305:        int     sy_narg;                
                    306:        int     (*sy_call)();           
                    307: } sysent[];
                    308: 
                    309: # 5 "acct.c"
                    310: # 1 "../sys/acct.h"
                    311: 
                    312: 
                    313: 
                    314: 
                    315: 
                    316: typedef        u_short comp_t;
                    317: 
                    318: struct acct
                    319: {
                    320:        char    ac_comm[10];            
                    321:        comp_t  ac_utime;               
                    322:        comp_t  ac_stime;               
                    323:        comp_t  ac_etime;               
                    324:        time_t  ac_btime;               
                    325:        short   ac_uid;                 
                    326:        short   ac_gid;                 
                    327:        short   ac_mem;                 
                    328:        comp_t  ac_io;                  
                    329:        dev_t   ac_tty;                 
                    330:        char    ac_flag;                
                    331: };
                    332: 
                    333: 
                    334: 
                    335: 
                    336: # 6 "acct.c"
                    337: # 1 "../sys/user.h"
                    338: # 1 "../sys/pcb.h"
                    339: 
                    340: 
                    341: 
                    342: 
                    343: struct pcb
                    344: {
                    345:        int     pcb_ksp;        
                    346:        int     pcb_esp;        
                    347:        int     pcb_ssp;        
                    348:        int     pcb_usp;        
                    349:        int     pcb_r0; 
                    350:        int     pcb_r1; 
                    351:        int     pcb_r2; 
                    352:        int     pcb_r3; 
                    353:        int     pcb_r4; 
                    354:        int     pcb_r5; 
                    355:        int     pcb_r6; 
                    356:        int     pcb_r7; 
                    357:        int     pcb_r8; 
                    358:        int     pcb_r9; 
                    359:        int     pcb_r10; 
                    360:        int     pcb_r11; 
                    361:        int     pcb_r12; 
                    362: 
                    363:        int     pcb_r13; 
                    364: 
                    365:        int     pcb_pc;         
                    366:        int     pcb_psl;        
                    367:        struct  pte *pcb_p0br;  
                    368:        int     pcb_p0lr;       
                    369:        struct  pte *pcb_p1br;  
                    370:        int     pcb_p1lr;       
                    371: 
                    372: 
                    373: 
                    374:        long    *pcb_sswap;     
                    375:        int     pcb_szpt;       
                    376:        int     pcb_sigc[3];
                    377: };
                    378: 
                    379: 
                    380: 
                    381: 
                    382: 
                    383: 
                    384: 
                    385: 
                    386: 
                    387: 
                    388: 
                    389: 
                    390: 
                    391: 
                    392: 
                    393: 
                    394: 
                    395: 
                    396: 
                    397: 
                    398: # 2 "../sys/user.h"
                    399: # 1 "../sys/dmap.h"
                    400: 
                    401: 
                    402: 
                    403: 
                    404: 
                    405: 
                    406: 
                    407: struct dmap
                    408: {
                    409:        swblk_t dm_size;        
                    410:        swblk_t dm_alloc;       
                    411:        swblk_t dm_map[64];     
                    412: };
                    413: 
                    414: extern struct  dmap zdmap;
                    415: extern int dmmin;              
                    416: extern int dmmax;              
                    417: 
                    418: 
                    419: 
                    420: 
                    421: 
                    422: 
                    423: struct dblock
                    424: {
                    425:        swblk_t db_base;        
                    426:        swblk_t db_size;        
                    427: };
                    428: # 3 "../sys/user.h"
                    429: # 1 "../sys/vtimes.h"
                    430: 
                    431: 
                    432: 
                    433: 
                    434: 
                    435: 
                    436: struct vtimes {
                    437:        int     vm_utime;               
                    438:        int     vm_stime;               
                    439:        
                    440:        unsigned vm_idsrss;             
                    441:        unsigned vm_ixrss;              
                    442:        int     vm_maxrss;              
                    443:        int     vm_majflt;              
                    444:        int     vm_minflt;              
                    445:        int     vm_nswap;               
                    446:        int     vm_inblk;               
                    447:        int     vm_oublk;               
                    448: };
                    449: 
                    450: 
                    451: struct vtimes zvms;                    
                    452: 
                    453: # 4 "../sys/user.h"
                    454: 
                    455: 
                    456: 
                    457: 
                    458: 
                    459: 
                    460: 
                    461: 
                    462: 
                    463: 
                    464: 
                    465: 
                    466: 
                    467:  
                    468: 
                    469: 
                    470: 
                    471:  
                    472: struct user
                    473: {
                    474:        struct  pcb u_pcb;
                    475:        int     junk1;                  
                    476:        int     u_arg[5];               
                    477:        label_t u_qsav;                 
                    478:        char    u_segflg;               
                    479: 
                    480: 
                    481: 
                    482:        char    u_error;                
                    483:        short   u_uid;                  
                    484:        short   u_gid;                  
                    485:        short   u_ruid;                 
                    486:        short   u_rgid;                 
                    487:        short   u_groups[32];   
                    488:        struct  proc *u_procp;          
                    489:        int     *u_ap;                  
                    490:        union {                         
                    491:                struct  {
                    492:                        int     R_val1;
                    493:                        int     R_val2;
                    494:                } u_rv;
                    495: 
                    496: 
                    497:                off_t   r_off;
                    498:                time_t  r_time;
                    499:        } u_r;
                    500:        caddr_t u_base;                 
                    501:        unsigned int u_count;           
                    502:        Long    u_offset;               
                    503:        struct  inode *u_cdir;          
                    504:        struct  inode *u_rdir;          
                    505:        char    junk2[14];              
                    506:        char    junk4[14+2];            
                    507:        struct  file *u_ofile[128];     
                    508:        char    u_pofile[128];  
                    509: 
                    510:        label_t u_ssav;                 
                    511:        int     (*u_signal[32])();      
                    512:        int     u_code;                 
                    513: 
                    514: 
                    515:        int     *u_ar0;                 
                    516:        struct uprof {                  
                    517:                short   *pr_base;       
                    518:                unsigned pr_size;       
                    519:                unsigned pr_off;        
                    520:                unsigned pr_scale;      
                    521:        } u_prof;
                    522:        short   junk5;          
                    523:        dev_t   u_ttydev;               
                    524:        ino_t   u_ttyino;
                    525:        union {
                    526:           struct {                     
                    527:                int     Ux_mag;         
                    528:                unsigned Ux_tsize;      
                    529:                unsigned Ux_dsize;      
                    530:                unsigned Ux_bsize;      
                    531:                unsigned Ux_ssize;      
                    532:                unsigned Ux_entloc;     
                    533:                unsigned Ux_unused;
                    534:                unsigned Ux_relflg;
                    535:           } Ux_A;
                    536:           char ux_shell[32];   
                    537:        } u_exdata;
                    538: 
                    539: 
                    540: 
                    541: 
                    542: 
                    543: 
                    544: 
                    545: 
                    546: 
                    547:        char    u_comm[14];             
                    548:        time_t  u_start;
                    549:        char    u_acflag;
                    550:        short   junk6;          
                    551:        short   u_cmask;                
                    552:        size_t  u_tsize;                
                    553:        size_t  u_dsize;                
                    554:        size_t  u_ssize;                
                    555:        struct  vtimes u_vm;            
                    556:        struct  vtimes u_cvm;           
                    557:        struct  dmap u_dmap;            
                    558:        struct  dmap u_smap;            
                    559:        struct  dmap u_cdmap, u_csmap;  
                    560: 
                    561:        time_t  u_outime;               
                    562:        size_t  u_odsize, u_ossize;     
                    563:        int     u_limit[8];             
                    564:        int     u_nbadio;               
                    565:        char    u_logname[8];           
                    566:        int     u_stack[1];
                    567: 
                    568:                                        
                    569: 
                    570: 
                    571: 
                    572: 
                    573: };
                    574: 
                    575: 
                    576: 
                    577: 
                    578: 
                    579: 
                    580: 
                    581: # 1 "/usr/include/errno.h"
                    582: 
                    583: 
                    584: 
                    585: 
                    586: 
                    587: 
                    588: 
                    589: 
                    590: 
                    591: 
                    592: 
                    593: 
                    594: 
                    595: 
                    596: 
                    597: 
                    598: 
                    599: 
                    600: 
                    601: 
                    602: 
                    603: 
                    604: 
                    605: 
                    606: 
                    607: 
                    608: 
                    609: 
                    610: 
                    611: 
                    612: 
                    613: 
                    614: 
                    615: 
                    616: 
                    617: 
                    618: 
                    619: 
                    620: 
                    621: 
                    622: 
                    623: 
                    624: 
                    625: 
                    626: 
                    627: 
                    628: 
                    629: 
                    630: 
                    631: 
                    632: 
                    633: # 56 "/usr/include/errno.h"
                    634: 
                    635: # 132 "../sys/user.h"
                    636: 
                    637: 
                    638: extern struct user u;
                    639: extern struct user *swaputl;
                    640: extern struct user *forkutl;
                    641: extern struct user *xswaputl;
                    642: extern struct user *xswap2utl;
                    643: extern struct user *pushutl;
                    644: extern struct user *prusrutl;
                    645: 
                    646: # 7 "acct.c"
                    647: # 1 "../sys/inode.h"
                    648: 
                    649: 
                    650: 
                    651: 
                    652: 
                    653: 
                    654: 
                    655: 
                    656: 
                    657: 
                    658: 
                    659: 
                    660: 
                    661: struct inode
                    662: {
                    663:        short   i_flag;
                    664:        dev_t   i_dev;          
                    665:        char    i_fstyp;        
                    666:        unsigned short i_count; 
                    667:        long    i_number;       
                    668:        unsigned short i_mode;
                    669:        short   i_nlink;        
                    670:        short   i_uid;          
                    671:        short   i_gid;          
                    672:        off_t   i_size;         
                    673:        struct  inode *i_mroot; 
                    674:        struct  inode *i_mpoint;        
                    675:        struct  stdata *i_sptr; 
                    676:        union {
                    677:                struct {
                    678:                        daddr_t I_addr[13];     
                    679:                        daddr_t I_lastr;        
                    680:                        struct buf *I_bufp;     
                    681:                } i_f;
                    682: 
                    683: 
                    684: 
                    685:                struct {
                    686:                        daddr_t I_rdev;         
                    687:                } i_d;
                    688: 
                    689:                struct {
                    690:                        long I_tag;
                    691:                        struct inode *I_cip;    
                    692:                        int I_fsflags;          
                    693:                        time_t I_atime;
                    694:                        time_t I_mtime;
                    695:                        time_t I_ctime;
                    696:                        dev_t I_rdev;
                    697:                } i_a;          
                    698: 
                    699: 
                    700: 
                    701: 
                    702: 
                    703: 
                    704: 
                    705:                struct {
                    706:                        struct proc *I_proc;    
                    707:                        int         I_sigmask;  
                    708:                } i_p;
                    709: 
                    710: 
                    711:        } i_un;
                    712:        struct inode *i_hlink;  
                    713: };
                    714: 
                    715: 
                    716: struct inode inode[];
                    717: extern struct inode *inodeNINODE;
                    718: extern int inodecnt;
                    719: 
                    720: struct inode *rootdir;         
                    721: 
                    722: struct inode *ialloc();
                    723: struct inode *ifind();
                    724: struct inode *iget();
                    725: struct inode *iuniq();
                    726: struct inode *namei();
                    727: struct inode *openi();
                    728: 
                    729: 
                    730: 
                    731: 
                    732: 
                    733: 
                    734: 
                    735: 
                    736: 
                    737: 
                    738: 
                    739: 
                    740: 
                    741: 
                    742: 
                    743: 
                    744: 
                    745: 
                    746: 
                    747: 
                    748: 
                    749: 
                    750: 
                    751: 
                    752: 
                    753: 
                    754: 
                    755: 
                    756: struct argnamei {      
                    757:        short flag;     
                    758:        short len;      
                    759:        union {
                    760:                short   mode;           
                    761:                struct inode *il;       
                    762:                caddr_t buf;            
                    763:        } un;
                    764: };
                    765: 
                    766: 
                    767: 
                    768: 
                    769: 
                    770: 
                    771: 
                    772: 
                    773: 
                    774: extern struct argnamei nilargnamei;
                    775: 
                    776: struct nx {    
                    777:        struct inode *dp;       
                    778:        char *cp;               
                    779:        char *nbuf;             
                    780:        short nlen;             
                    781:        short nlink;            
                    782: };
                    783: 
                    784: 
                    785: 
                    786: 
                    787: 
                    788: 
                    789: 
                    790: 
                    791: 
                    792: 
                    793: 
                    794: 
                    795: 
                    796: 
                    797: 
                    798: 
                    799: 
                    800: 
                    801: 
                    802: 
                    803: 
                    804: 
                    805: 
                    806: 
                    807: 
                    808: 
                    809: # 8 "acct.c"
                    810: 
                    811: struct inode *acctp;
                    812: 
                    813: 
                    814: 
                    815: 
                    816: sysacct()
                    817: {
                    818:        register struct inode *ip;
                    819:        register struct a {
                    820:                char    *fname;
                    821:        } *uap;
                    822: 
                    823:        uap = (struct a *)u.u_ap;
                    824:        if (suser() == 0)
                    825:                return;
                    826:        if (uap->fname==0) {
                    827:                if (ip = acctp) {
                    828:                        { while ((ip)->i_flag & 01) { (ip)->i_flag |= 020; sleep((caddr_t)(ip), 10); } (ip)->i_flag |= 01; };
                    829:                        iput(ip);
                    830:                        acctp = 0;
                    831:                }
                    832:                return;
                    833:        }
                    834:        if (acctp) {
                    835:                u.u_error = 16;
                    836:                return;
                    837:        }
                    838:        ip = namei(uap->fname, 0, &nilargnamei, 1);
                    839:        if(ip == 0)
                    840:                return;
                    841:        if((ip->i_mode & 0170000) != 0100000) {
                    842:                u.u_error = 13;
                    843:                iput(ip);
                    844:                return;
                    845:        }
                    846:        if (access(ip, 0200)) {
                    847:                iput(ip);
                    848:                return;
                    849:        }
                    850:        acctp = ip;
                    851:        { (ip)->i_flag &= ~01; if ((ip)->i_flag&020) { (ip)->i_flag &= ~020; wakeup((caddr_t)(ip)); } };
                    852: }
                    853: 
                    854: struct acct acctbuf;
                    855: 
                    856: 
                    857: 
                    858: acct()
                    859: {
                    860:        register i;
                    861:        register struct inode *ip;
                    862:        off_t siz;
                    863:        register struct acct *ap = &acctbuf;
                    864: 
                    865:        if ((ip=acctp)==0)
                    866:                return;
                    867:        { while ((ip)->i_flag & 01) { (ip)->i_flag |= 020; sleep((caddr_t)(ip), 10); } (ip)->i_flag |= 01; };
                    868:        for (i=0; i<sizeof(ap->ac_comm); i++)
                    869:                ap->ac_comm[i] = u.u_comm[i];
                    870:        ap->ac_utime = compress((long)u.u_vm.vm_utime);
                    871:        ap->ac_stime = compress((long)u.u_vm.vm_stime);
                    872:        ap->ac_etime = compress((long)(time - u.u_start));
                    873:        ap->ac_btime = u.u_start;
                    874:        ap->ac_uid = u.u_ruid;
                    875:        ap->ac_gid = u.u_rgid;
                    876:        ap->ac_mem = 0;
                    877:        if (i = u.u_vm.vm_utime + u.u_vm.vm_stime)
                    878:                ap->ac_mem = (u.u_vm.vm_ixrss + u.u_vm.vm_idsrss) / i;
                    879:        ap->ac_io = compress((long)(u.u_vm.vm_inblk + u.u_vm.vm_oublk));
                    880:        ap->ac_tty = u.u_ttyino;
                    881:        ap->ac_flag = u.u_acflag;
                    882:        siz = ip->i_size;
                    883:        u.u_offset = ltoL(siz);
                    884:        u.u_base = (caddr_t)ap;
                    885:        u.u_count = sizeof(acctbuf);
                    886:        u.u_segflg = 1;
                    887:        u.u_error = 0;
                    888:        writei(ip);
                    889:        if(u.u_error)
                    890:                ip->i_size = siz;
                    891:        { (ip)->i_flag &= ~01; if ((ip)->i_flag&020) { (ip)->i_flag &= ~020; wakeup((caddr_t)(ip)); } };
                    892: }
                    893: 
                    894: 
                    895: 
                    896: 
                    897: 
                    898: compress(t)
                    899: register long t;
                    900: {
                    901:        register exp = 0, round = 0;
                    902: 
                    903:        while (t >= 8192) {
                    904:                exp++;
                    905:                round = t&04;
                    906:                t >>= 3;
                    907:        }
                    908:        if (round) {
                    909:                t++;
                    910:                if (t >= 8192) {
                    911:                        t >>= 3;
                    912:                        exp++;
                    913:                }
                    914:        }
                    915:        return((exp<<13) + t);
                    916: }

unix.superglobalmegacorp.com

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