# ifndef NO_WHAT
/*
 *      SCCS file type - Emulator Include File
 *
 *      What identification string:
 */
static char *_S_hfamily = "@(#)EM_family.h	3.2";
# endif

/****************************************************************
 *      family.h contains the type definitions for variables    *
 *      on the family segments.  Both the data and I/O          *
 *      segment type definitions are here.  There is one        *
 *      instance of each of these types.  The addresses for     *
 *      these structures are set using assembly language        *
 *      defines contained in bindsegs.s.                        *
 ****************************************************************/


typedef struct
{
	SyncBlock       FsyncBlock;

	FopenFileEntry  FopenFile[NFopenFiles];

	TTY_entry       TTY[NOPEN_TTYS];

	P_entry         P[NFprocs];
	Semaphore       fork_in_progress;
	int             Fpid_gen;
	int             Ffamily;        /* Ksos process family */
} Fstruct;



/* now do the family I/O structure which will be placed on the I/O segment */

typedef struct
{
	TTY_buffers     TTY_buf;
	BufferCache     BC;
	EBC_lk          LOCK;
} FIOstruct;


/*
 * The following pseudo-declarations give the correspondence between
 * family segment types and the sole instantiation of these types.
 * As noted above, F and FIO live on the family segment.  Their
 * addresses are bound by bindsegs.s.
 *
 * extern  Fstruct       F;
 * extern  FIOstruct     FIO;
 */
