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

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

unix.superglobalmegacorp.com

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