Added XENIX structures definitions

This commit is contained in:
2016-08-05 18:48:31 +01:00
parent 83c6016876
commit 550d0b3217

100
xenix.h Normal file
View File

@@ -0,0 +1,100 @@
#define S_S3MAGIC 0x2b5544 /* system 3 arbitrary magic value */
#define S_CLEAN 0106 /* arbitrary magic value */
/* s_type, block size of file system */
#define S_B512 1 /* 512 byte block */
#define S_B1024 2 /* 1024 byte block */
/* codes for file system version (for utilities) */
#define S_V2 1 /* version 7 */
#define S_V3 2 /* system 3 */
/* Note: DIRSIZ must be even, or else add
* filler byte to direct struct.
*/
#define DIRSIZ 14
#define NICINOD 100 /* number of superblock inodes */
#ifdef LISA
#define NICFREE 50 /* number of superblock free blocks */
#define NSBFILL 51 /* aligns s_magic & s_type at end of SB blk */
#else
#define NICFREE 100 /* number of superblock free blocks */
#ifdef XENIX_2.2.1e
#define NSBFILL 370 /* aligns s_magic & s_type at end of SB blk */
#else
#define NSBFILL 371 /* aligns s_magic, .. at end of super block */
#endif
#endif
typedef long daddr_t; /* disc address */
typedef unsigned short ino_t; /* i-node number */
typedef long time_t; /* time (seconds) */
typedef long off_t; /* offset in file */
struct filsys
{
ushort s_isize; /* size in blocks of i-list */
daddr_t s_fsize; /* size in blocks of entire volume */
short s_nfree; /* number of addresses in s_free */
daddr_t s_free[NICFREE]; /* free block list */
short s_ninode; /* number of i-nodes in s_inode */
ino_t s_inode[NICINOD]; /* free i-node list */
char s_flock; /* lock during free list manipulation */
char s_ilock; /* lock during i-list manipulation */
char s_fmod; /* super block modified flag */
char s_ronly; /* mounted read-only flag */
time_t s_time; /* last super block update */
daddr_t s_tfree; /* total free blocks*/
ino_t s_tinode; /* total free inodes */
short s_dinfo[4]; /* device information */
char s_fname[6]; /* file system name */
char s_fpack[6]; /* file system pack name */
/* remainder is maintained for xenix */
char s_clean; /* S_CLEAN if structure is properly closed */
char s_fill[NSBFILL];/* space to make sizeof filsys be BSIZE */
long s_magic; /* indicates version of filsys */
long s_type; /* type of new file system */
};
struct fblk
{
short df_nfree;
daddr_t df_free[NICFREE];
};
struct direct
{
ino_t d_ino;
char d_name[DIRSIZ];
};
/* Inode structure as it appears on a disk block. */
struct dinode
{
ushort di_mode; /* mode and type of file */
short di_nlink; /* number of links to file */
ushort di_uid; /* owner's user id */
ushort di_gid; /* owner's group id */
off_t di_size; /* number of bytes in file */
char di_addr[40]; /* disk block addresses */
time_t di_atime; /* time last accessed */
time_t di_mtime; /* time last modified */
time_t di_ctime; /* time created */
};
/*
* the 40 address bytes:
* 39 used; 13 addresses
* of 3 bytes each.
*/