-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathxenix.h
100 lines (80 loc) · 2.93 KB
/
xenix.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
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.
*/