/* * File:fs.h */ /* * $PSLibId: Run-time Library Release 4.7$ */ #ifndef _FS_H #define _FS_H #if defined(_LANGUAGE_C)||defined(LANGUAGE_C)||defined(_LANGUAGE_C_PLUS_PLUS)||defined(__cplusplus)||defined(c_plusplus) /* device table */ struct device_table { char *dt_string; /* device name */ int dt_type; /* device "type" */ int dt_bsize; /* file system type */ char *dt_desc; /* device description */ int (*dt_init)(); /* device init routine */ int (*dt_open)(); /* device open routine */ int (*dt_strategy)(); /* device strategy routine, returns cnt */ int (*dt_close)(); /* device close routine */ int (*dt_ioctl)(); /* device ioctl routine */ int (*dt_read)(); /* fs read routine, returns count */ int (*dt_write)(); /* fs write routine, return count */ int (*dt_delete)(); /* file delete routine */ int (*dt_undelete)(); /* file delete routine */ int (*dt_firstfile)(); /* directory serach routine */ int (*dt_nextfile)(); /* directory serach routine */ int (*dt_format)(); int (*dt_cd)(); int (*dt_rename)(); int (*dt_remove)(); int (*dt_else)(); }; #endif /* LANGUAGE_C */ /* device types */ #define DTTYPE_CHAR 0x1 /* character device */ #define DTTYPE_CONS 0x2 /* can be console */ #define DTTYPE_BLOCK 0x4 /* block device */ #define DTTYPE_RAW 0x8 /* raw device that uses fs switch */ #define DTTYPE_FS 0x10 /* character device flags */ #define DB_RAW 0x1 /* don't interpret special chars */ #define DB_STOPPED 0x2 /* stop output */ #define DB_BREAK 0x4 /* cntl-c raise console interrpt */ /* character device buffer */ #define CBUFSIZE 256 #if defined(_LANGUAGE_C)||defined(LANGUAGE_C)||defined(_LANGUAGE_C_PLUS_PLUS)||defined(__cplusplus)||defined(c_plusplus) struct device_buf { int db_flags; /* character device flags */ char *db_in; /* pts at next free char */ char *db_out; /* pts at next filled char */ char db_buf[CBUFSIZE]; /* circular buffer for input */ }; #endif /* LANGUAGE_C */ /* circular buffer functions */ #define CIRC_EMPTY(x) ((x)->db_in == (x)->db_out) #define CIRC_FLUSH(x) ((x)->db_in = (x)->db_out = (x)->db_buf) #define CIRC_STOPPED(x) ((x)->db_flags & DB_STOPPED) /* io block */ #if defined(_LANGUAGE_C)||defined(LANGUAGE_C)||defined(_LANGUAGE_C_PLUS_PLUS)||defined(__cplusplus)||defined(c_plusplus) struct iob { int i_flgs; int i_unit; /* pseudo device unit */ char *i_ma; /* memory address of i/o buffer */ unsigned int i_cc; /* character count of transfer */ unsigned long i_offset; /* seek offset in file */ int i_fstype; /* file system type */ int i_errno; /* error # return */ struct device_table *i_dp; /* pointer into device_table */ unsigned long i_size; long i_head; long i_fd; /* file descriptor */ }; #endif /* LANGUAGE_C */ #ifndef NULL #define NULL 0 #endif /* Request codes */ #define READ 1 #define WRITE 2 #define NIOB 16 /* max number of open files */ /* extern int _nulldev(); extern int _nodev(); */ #endif /* _FS_H */