2
0
mirror of https://github.com/xcat2/xNBA.git synced 2024-12-17 00:31:32 +00:00
xNBA/src/core/main.c

71 lines
1.5 KiB
C
Raw Normal View History

2005-03-08 18:53:11 +00:00
/**************************************************************************
Etherboot - Network Bootstrap Program
Literature dealing with the network protocols:
ARP - RFC826
RARP - RFC903
UDP - RFC768
BOOTP - RFC951, RFC2132 (vendor extensions)
DHCP - RFC2131, RFC2132 (options)
TFTP - RFC1350, RFC2347 (options), RFC2348 (blocksize), RFC2349 (tsize)
RPC - RFC1831, RFC1832 (XDR), RFC1833 (rpcbind/portmapper)
NFS - RFC1094, RFC1813 (v3, useful for clarifications, not implemented)
IGMP - RFC1112
**************************************************************************/
#include <gpxe/heap.h>
2006-04-30 01:08:52 +00:00
#include <gpxe/init.h>
#include <gpxe/device.h>
2006-12-20 00:26:01 +00:00
#include <gpxe/shell.h>
#include <gpxe/shell_banner.h>
#include <gpxe/shutdown.h>
#include <gpxe/hidemem.h>
#include <usr/autoboot.h>
/**
* Start up Etherboot
*
* Call this function only once, before doing (almost) anything else.
*/
static void startup ( void ) {
hide_etherboot();
init_heap();
call_init_fns();
probe_devices();
2005-03-08 18:53:11 +00:00
}
/**
* Shut down Etherboot
*
* Call this function only once, before either exiting main() or
* starting up a non-returnable image.
*/
void shutdown ( void ) {
remove_devices();
call_exit_fns();
unhide_etherboot();
2005-03-08 18:53:11 +00:00
}
/**
* Main entry point
*
* @ret rc Return status code
*/
int main ( void ) {
2005-03-08 18:53:11 +00:00
startup();
/* Try autobooting if we're not going straight to the shell */
if ( ! shell_banner() ) {
autoboot();
2006-12-20 00:26:01 +00:00
}
/* Autobooting failed or the user wanted the shell */
shell();
shutdown();
return 0;
2005-03-08 18:53:11 +00:00
}