Annotation of 42BSD/sys/h/file.h, revision 1.1.1.1

1.1       root        1: /*     file.h  6.2     83/09/23        */
                      2: 
                      3: #ifdef KERNEL
                      4: /*
                      5:  * Descriptor table entry.
                      6:  * One for each kernel object.
                      7:  */
                      8: struct file {
                      9:        int     f_flag;         /* see below */
                     10:        short   f_type;         /* descriptor type */
                     11:        short   f_count;        /* reference count */
                     12:        short   f_msgcount;     /* references from message queue */
                     13:        struct  fileops {
                     14:                int     (*fo_rw)();
                     15:                int     (*fo_ioctl)();
                     16:                int     (*fo_select)();
                     17:                int     (*fo_close)();
                     18:        } *f_ops;
                     19:        caddr_t f_data;         /* inode */
                     20:        off_t   f_offset;
                     21: };
                     22: 
                     23: struct file *file, *fileNFILE;
                     24: int    nfile;
                     25: struct file *getf();
                     26: struct file *falloc();
                     27: #endif
                     28: 
                     29: /*
                     30:  * flags- also for fcntl call.
                     31:  */
                     32: #define        FOPEN           (-1)
                     33: #define        FREAD           00001           /* descriptor read/receive'able */
                     34: #define        FWRITE          00002           /* descriptor write/send'able */
                     35: #ifndef        F_DUPFD
                     36: #define        FNDELAY         00004           /* no delay */
                     37: #define        FAPPEND         00010           /* append on each write */
                     38: #endif
                     39: #define        FMARK           00020           /* mark during gc() */
                     40: #define        FDEFER          00040           /* defer for next gc pass */
                     41: #ifndef        F_DUPFD
                     42: #define        FASYNC          00100           /* signal pgrp when data ready */
                     43: #endif
                     44: #define        FSHLOCK         00200           /* shared lock present */
                     45: #define        FEXLOCK         00400           /* exclusive lock present */
                     46: 
                     47: /* bits to save after open */
                     48: #define        FMASK           00113
                     49: #define        FCNTLCANT       (FREAD|FWRITE|FMARK|FDEFER|FSHLOCK|FEXLOCK)
                     50: 
                     51: /* open only modes */
                     52: #define        FCREAT          01000           /* create if nonexistant */
                     53: #define        FTRUNC          02000           /* truncate to zero length */
                     54: #define        FEXCL           04000           /* error if already created */
                     55: 
                     56: #ifndef        F_DUPFD
                     57: /* fcntl(2) requests--from <fcntl.h> */
                     58: #define        F_DUPFD 0       /* Duplicate fildes */
                     59: #define        F_GETFD 1       /* Get fildes flags */
                     60: #define        F_SETFD 2       /* Set fildes flags */
                     61: #define        F_GETFL 3       /* Get file flags */
                     62: #define        F_SETFL 4       /* Set file flags */
                     63: #define        F_GETOWN 5      /* Get owner */
                     64: #define F_SETOWN 6     /* Set owner */
                     65: #endif
                     66: 
                     67: /*
                     68:  * User definitions.
                     69:  */
                     70: 
                     71: /*
                     72:  * Open call.
                     73:  */
                     74: #define        O_RDONLY        000             /* open for reading */
                     75: #define        O_WRONLY        001             /* open for writing */
                     76: #define        O_RDWR          002             /* open for read & write */
                     77: #define        O_NDELAY        FNDELAY         /* non-blocking open */
                     78: #define        O_APPEND        FAPPEND         /* append on each write */
                     79: #define        O_CREAT         FCREAT          /* open with file create */
                     80: #define        O_TRUNC         FTRUNC          /* open with truncation */
                     81: #define        O_EXCL          FEXCL           /* error on create if file exists */
                     82: 
                     83: /*
                     84:  * Flock call.
                     85:  */
                     86: #define        LOCK_SH         1       /* shared lock */
                     87: #define        LOCK_EX         2       /* exclusive lock */
                     88: #define        LOCK_NB         4       /* don't block when locking */
                     89: #define        LOCK_UN         8       /* unlock */
                     90: 
                     91: /*
                     92:  * Access call.
                     93:  */
                     94: #define        F_OK            0       /* does file exist */
                     95: #define        X_OK            1       /* is it executable by caller */
                     96: #define        W_OK            2       /* writable by caller */
                     97: #define        R_OK            4       /* readable by caller */
                     98: 
                     99: /*
                    100:  * Lseek call.
                    101:  */
                    102: #define        L_SET           0       /* absolute offset */
                    103: #define        L_INCR          1       /* relative to current offset */
                    104: #define        L_XTND          2       /* relative to end of file */
                    105: 
                    106: #ifdef KERNEL
                    107: #define        GETF(fp, fd) { \
                    108:        if ((unsigned)(fd) >= NOFILE || ((fp) = u.u_ofile[fd]) == NULL) { \
                    109:                u.u_error = EBADF; \
                    110:                return; \
                    111:        } \
                    112: }
                    113: #define        DTYPE_INODE     1       /* file */
                    114: #define        DTYPE_SOCKET    2       /* communications endpoint */
                    115: #endif

unix.superglobalmegacorp.com

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