Annotation of coherent/f/usr/include/kernel/fhsys.h, revision 1.1.1.1

1.1       root        1: #ifndef        __KERNEL_FHSYS_H__
                      2: #define        __KERNEL_FHSYS_H__
                      3: 
                      4: /*
                      5:  * This header defines data structures and prototypes for objects that
                      6:  * represent open files in an abstract manner.
                      7:  */
                      8: /*
                      9:  *-IMPORTS:
                     10:  *     <common/ccompat.h>
                     11:  *             __EXTERN_C_BEGIN__
                     12:  *             __EXTERN_C_END__
                     13:  *             __VOID__
                     14:  *             __PROTO ()
                     15:  *     <sys/types.h>
                     16:  *             off_t
                     17:  *     <common/_time.h>
                     18:  *             time_t
                     19:  *     <common/_cred.h>
                     20:  *             cred_t
                     21:  *     <sys/uio.h>
                     22:  *             uio_t
                     23:  */
                     24: 
                     25: #include <common/ccompat.h>
                     26: #include <common/_time.h>
                     27: #include <common/_size.h>
                     28: #include <common/_cred.h>
                     29: #include <sys/types.h>
                     30: #include <sys/uio.h>
                     31: 
                     32: 
                     33: /*
                     34:  * Begin by setting up all the typedefs we need.
                     35:  */
                     36: 
                     37: typedef        struct sftab    sftab_t;
                     38: typedef        struct fhandle  fhandle_t;
                     39: typedef struct fprocs  fprocs_t;
                     40: typedef        struct fstat    fstat_t;
                     41: 
                     42: 
                     43: /*
                     44:  * Structure definitions imported by the function prototypes below need to be
                     45:  * declared with file scope.
                     46:  */
                     47: 
                     48: struct pollhead;
                     49: struct strbuf;
                     50: struct statvfs;
                     51: 
                     52: 
                     53: /*
                     54:  * We declare typedefs for the function pointers that the file handle system
                     55:  * use use for documentation purposes.
                     56:  */
                     57: 
                     58: typedef        int  (* fh_open_t)      __PROTO ((fhandle_t * _handlep,
                     59:                                          __VOID__ * _name, size_t _namelen,
                     60:                                          int _oflag, cred_t * _credp));
                     61: typedef        int  (* fh_close_t)     __PROTO ((fhandle_t * _handlep, int _oflag,
                     62:                                          int _otyp, cred_t * _credp));
                     63: typedef        int  (* fh_read_t)      __PROTO ((fhandle_t * _handlep, uio_t * _uiop,
                     64:                                          cred_t * _credp));
                     65: typedef        int  (* fh_write_t)     __PROTO ((fhandle_t * _handlep, uio_t * _uiop,
                     66:                                          cred_t * _credp));
                     67: typedef        int  (* fh_ioctl_t)     __PROTO ((fhandle_t * _handlep, int _cmd,
                     68:                                          __VOID__ * _arg, int _mode,
                     69:                                          cred_t * _credp, int * _rvalp));
                     70: typedef        int  (* fh_poll_t)      __PROTO ((fhandle_t * _handlep, short _events,
                     71:                                          int _anyyet, short * _reventsp,
                     72:                                          struct pollhead ** _phpp));
                     73: typedef        int  (* fh_lseek_t)     __PROTO ((fhandle_t * _handlep, off_t _pos,
                     74:                                          int _whence, off_t * _rpos));
                     75: typedef        int  (* fh_sync_t)      __PROTO ((fhandle_t * _handlep, int _flag));
                     76: typedef        int  (* fh_getpmsg_t)   __PROTO ((fhandle_t * _handlep,
                     77:                                          struct strbuf * _ctlbufp,
                     78:                                          struct strbuf * _databufp,
                     79:                                          int * _bandp, int * _flagsp));
                     80: typedef        int  (* fh_putpmsg_t)   __PROTO ((fhandle_t * _handlep,
                     81:                                          struct strbuf * _ctlbufp,
                     82:                                          struct strbuf * _databufp,
                     83:                                          int band, int flags));
                     84: typedef        int  (* fh_fstat_t)     __PROTO ((fhandle_t * _handlep,
                     85:                                          fstat_t * _statp));
                     86: typedef        int  (* fh_statvfs_t)   __PROTO ((fhandle_t * _handlep,
                     87:                                          struct statvfs * _bufp));
                     88: typedef        int  (* fh_mmap_t)      __PROTO ((fhandle_t * _handlep, off_t _off,
                     89:                                          off_t len, int _prot));
                     90: typedef int  (*        fh_attach_t)    __PROTO ((fhandle_t * _handlep,
                     91:                                          __VOID__ * _detach));
                     92: typedef        int  (* fh_detach_t)    __PROTO ((fhandle_t * _handlep));
                     93: 
                     94: 
                     95: __EXTERN_C_BEGIN__
                     96: 
                     97: /*
                     98:  * For dealing with file descriptors and system file table entries.
                     99:  */
                    100: 
                    101: fhandle_t     *        fd_get_handle   __PROTO ((int _fd));
                    102: sftab_t              * fd_get_sftab    __PROTO ((int _fd));
                    103: int            fd_add_sftab    __PROTO ((sftab_t * _sftabp, int * _fdp));
                    104: int            fd_can_add      __PROTO ((void));
                    105: 
                    106: /*
                    107:  * For dealing with file handles.
                    108:  */
                    109: 
                    110: fhandle_t     * fh_opening     __PROTO ((void));
                    111: fprocs_t      *        fh_procs        __PROTO ((fhandle_t * _handle));
                    112: __VOID__      *        fh_get_cookie   __PROTO ((fhandle_t * _handle));
                    113: int            fh_set_cookie   __PROTO ((fhandle_t * _handle,
                    114:                                          __VOID__ * _cookie, size_t _size));
                    115: 
                    116: __EXTERN_C_END__
                    117: 
                    118: 
                    119: /*
                    120:  * Status information pertaining to an open file object. We define this rather
                    121:  * than passing around full "stat" structures because many of the fields have
                    122:  * no relevance to this subsystem, and that introduces unnecessary
                    123:  * complications about who fills in what field when.
                    124:  */
                    125: 
                    126: struct fstat {
                    127:        time_t          fh_atime;
                    128:        time_t          fh_mtime;
                    129:        time_t          fh_ctime;
                    130: 
                    131:        off_t           fh_size;
                    132: };
                    133: 
                    134: 
                    135: /*
                    136:  * The system described in part by this header file is not yet fully
                    137:  * operational. In particular, the configuration mechanisms are not yet
                    138:  * specified, so the following feature-test can be used to dike out code that
                    139:  * cannot yet be properly tested.
                    140:  */
                    141: 
                    142: #define        _NO_INSTALLABLE_FILESYSTEMS     1
                    143: 
                    144: 
                    145: #endif /* ! defined (__KERNEL_FHSYS_H__) */

unix.superglobalmegacorp.com

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