Xinu7/include/iblock.h

/* iblock.h - ibtodb, ibdisp */

typedef	int		IBADDR;		/* iblocks addressed 0,1,2,...	*/

#define	IBLEN		29		/* # d-block ptrs in an i-block	*/
#define	IBNULL		-1		/* null pointer in i-block list	*/
#define	IBAREA		1		/* start if iblocks on disk	*/
#define	IBWDIR		TRUE		/* ibnew: write directory	*/
#define	IBNWDIR		FALSE		/* ibnew: don't write directory	*/

struct	iblk		{		/* index block layout		*/
	long		ib_byte;	/* first data byte indexed by	*/
					/*  this index block		*/
	IBADDR		ib_next;	/* address of next i-block	*/
	DBADDR		ib_dba[IBLEN];	/* ptrs to data blocks indexed	*/
};

#define	ibtodb(ib)	(((ib)>>3)+IBAREA)/* iblock to disk block addr.	*/
#define	ibdisp(ib)	(((ib)&07)*sizeof(struct iblk))