/* 
 * init.c
 *
 * x-kernel v3.3
 *
 * Copyright (c) 1993,1991,1990,1996  Arizona Board of Regents
 *
 * $Revision: 1.2 $
 * $Date: 1997/04/29 22:51:20 $
 */

#include <sys/types.h>

#include <ctype.h>
#include "config.h"
#include "x_stdio.h"
#include "process.h"
#include "upi.h"
#include "xk_debug.h"
#include "event_i.h"
#include "event.h"
#include "compose.h"
#include "platform.h"
#include "prottbl.h"
#include "x_libc.h"
#include "x_util.h"
#include "netmask.h"
#include "rom.h"

extern void init_clock(long);

int traceinit = 0;

int globalArgc;
char **globalArgv;
char *rom[ROM_MAX_LINES + 1][ROM_MAX_FIELDS + 1];  

int	traceinit;

static void pgraphStub(Event, void *);
static void initializer(void);


static void
pgraphStub(Event ev, VOID *arg)
{
    build_pgraph();
}

static void
initializer()
{
#ifdef MASTER_LOCK
  mutexInit(&master_lock);
#endif
  evDetach( evSchedule( pgraphStub, 0, 0 ) );
  init_clock(EVENT_INTERVAL);
}


int
main( int argc, char *argv[] )
{
    setbuf(stdout, 0);
    globalArgc = argc;
    globalArgv = argv;

    xTraceInit();
    initRom();
    map_init();
    /* msgInit(); */
    evInit();
    netMaskInit();
    prottbl_init();
    upiInit();
    build_pgraph_dev();
    xMallocInit();
    threadInit ((ThreadFunc)initializer, NULL);	
    
    return 0;
}
