Skip to content

Xenix Filesystem Comparison

Jay Logue edited this page Oct 26, 2022 · 3 revisions

The following tables compare the filesystem parameters and structures from various versions of the Xenix filesystem with their counterparts from the original AT&T Unix source code.

Currently the tables cover early versions of Xenix only, up to Xenix 3.0. Later versions of Xenix (specifically, Xenix V and beyond) have yet to be analyzed.

Xenix versions derived from 7th Edition Unix

7th Edition

TRS-XENIX v01.03.00 (Microsoft XENIX-68000 v2.3a),
Altos Xenix 2.2 for ACS 8600 R1.0c (CDC-114)

#define	BSIZE	512

struct	filsys
{
	unsigned short s_isize;
	daddr_t	s_fsize;
	short  	s_nfree;
	daddr_t	s_free[NICFREE];
	short  	s_ninode;
	ino_t  	s_inode[NICINOD];
	char   	s_flock;
	char   	s_ilock;
	char   	s_fmod;
	char   	s_ronly;
	time_t 	s_time;

	daddr_t	s_tfree;
	ino_t  	s_tinode;
	short  	s_m;
	short  	s_n;
	char   	s_fname[6];
	char   	s_fpack[6];
};



#define NICFREE   50
#define NICINOD   100


struct	direct
{
	ino_t	d_ino;
	char	d_name[DIRSIZ];
};

#define	DIRSIZ	14

struct dinode
{
	unsigned short	di_mode;
	short	di_nlink;
	short	di_uid;
	short	di_gid;
	off_t	di_size;
	char  	di_addr[40];
	time_t	di_atime;
	time_t	di_mtime;
	time_t	di_ctime;
};

#define	INOPB	8
#define	BSIZE	512

struct filsys
{
    unsigned short s_isize;
    daddr_t s_fsize;
    short   s_nfree;
    daddr_t s_free[NICFREE];
    short   s_ninode;
    ino_t   s_inode[NICINOD];
    char    s_flock;
    char    s_ilock;
    char    s_fmod;
    char    s_ronly;
    time_t  s_time;

    daddr_t s_tfree;
    ino_t   s_tinode;
    short   s_m;
    short   s_n;
    char    s_fname[6];
    char    s_fpack[6];

    char    s_clean;
};

#define NICFREE   50
#define NICINOD   100
#define S_CLEAN   0106

struct	direct
{
	ino_t	d_ino;
	char	d_name[DIRSIZ];
};

#define	DIRSIZ	14

struct dinode
{
	unsigned short	di_mode;
	short	di_nlink;
	short	di_uid;
	short	di_gid;
	off_t	di_size;
	char  	di_addr[40];
	time_t	di_atime;
	time_t	di_mtime;
	time_t	di_ctime;
};

#define	INOPB	8

Xenix versions derived from System III Unix

System III

IBM PC XENIX 1.0

Tandy 68000/XENIX v03.01.00 (Microsoft XENIX v3.0)

#define	BSIZE	512 

struct filsys
{
    ushort   s_isize;
    daddr_t  s_fsize;
    short    s_nfree;
    daddr_t  s_free[NICFREE];
    short    s_ninode;
    ino_t    s_inode[NICINOD];
    char     s_flock;
    char     s_ilock;
    char     s_fmod;
    char     s_ronly;
    time_t   s_time;

    short    s_dinfo[4];
    daddr_t  s_tfree;
    ino_t    s_tinode;
    char     s_fname[6];
    char     s_fpack[6];
};






#define NICFREE   50
#define NICINOD   100









struct	direct
{
	ino_t	d_ino;
	char	d_name[DIRSIZ];
};

#define	DIRSIZ	14


struct dinode
{
	ushort di_mode;
	short	di_nlink;
	ushort	di_uid;
	ushort	di_gid;
	off_t	di_size;
	char  	di_addr[40];
	time_t	di_atime;
	time_t	di_mtime;
	time_t	di_ctime;
};

#define	INOPB	8
#define	BSIZE	1024

struct  filsys
{
        ushort  s_isize;
        daddr_t s_fsize;
        short   s_nfree;
        daddr_t s_free[NICFREE];
        short   s_ninode;
        ino_t   s_inode[NICINOD];
        char    s_flock;
        char    s_ilock;
        char    s_fmod;
        char    s_ronly;
        time_t  s_time;

        daddr_t s_tfree;
        ino_t   s_tinode;
        short   s_dinfo[4];
        char    s_fname[6];
        char    s_fpack[6];

        char    s_clean;
        char    s_fill[NSBFILL];
        long    s_magic;
        long    s_type;
};

#define NICFREE   100
#define NICINOD   100
#define S_CLEAN   0106
#define S_S3MAGIC 0x2b5544
#define S_B512    1
#define S_B1024   2
#define S_V2      1
#define S_V3      2
#define NSBFILL   370


struct  direct
{
        ino_t   d_ino;
        char    d_name[DIRSIZ];
};

#define DIRSIZ  14


struct dinode
{
        ushort di_mode;
        short   di_nlink;
        ushort  di_uid;
        ushort  di_gid;
        off_t   di_size;
        char    di_addr[40];
        time_t  di_atime;
        time_t  di_mtime;
        time_t  di_ctime;
};

#define INOPB (BSIZE/
      sizeof(struct dinode))
#define BSIZE   512

struct filsys
{
    ushort  s_isize;
    daddr_t s_fsize;
    short   s_nfree;
    daddr_t s_free[NICFREE];
    short   s_ninode;
    ino_t   s_inode[NICINOD];
    char    s_flock;
    char    s_ilock;
    char    s_fmod;
    char    s_ronly;
    time_t  s_time;

    daddr_t s_tfree;
    ino_t   s_tinode;
    short   s_dinfo[4];
    char    s_fname[6];
    char    s_fpack[6];

    char    s_clean;
    char    s_fill[NSBFILL];
    long    s_magic;
    long    s_type;
};

#define NICFREE   50
#define NICINOD   100
#define S_CLEAN   0106
#define S_S3MAGIC 0x2b5544
#define S_B512    1
#define S_B1024   2
#define S_V2      1
#define S_V3      2
#define NSBFILL   51


struct  direct
{
        ino_t   d_ino;
        char    d_name[DIRSIZ];
};

#define DIRSIZ  14

	
struct dinode
{
        ushort di_mode;
        short   di_nlink;
        ushort  di_uid;
        ushort  di_gid;
        off_t   di_size;
        char    di_addr[40];
        time_t  di_atime;
        time_t  di_mtime;
        time_t  di_ctime;
};

#define INOPB (BSIZE/
      sizeof(struct dinode))