iPXE
main.c
Go to the documentation of this file.
1 /**************************************************************************
2 iPXE - Network Bootstrap Program
3 
4 Literature dealing with the network protocols:
5  ARP - RFC826
6  RARP - RFC903
7  UDP - RFC768
8  BOOTP - RFC951, RFC2132 (vendor extensions)
9  DHCP - RFC2131, RFC2132 (options)
10  TFTP - RFC1350, RFC2347 (options), RFC2348 (blocksize), RFC2349 (tsize)
11  RPC - RFC1831, RFC1832 (XDR), RFC1833 (rpcbind/portmapper)
12 
13 **************************************************************************/
14 
15 FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
16 
17 #include <stddef.h>
18 #include <stdio.h>
19 #include <ipxe/init.h>
20 #include <ipxe/version.h>
21 #include <usr/autoboot.h>
22 
23 /**
24  * Main entry point
25  *
26  * @ret rc Return status code
27  */
28 __asmcall int main ( void ) {
29  int rc;
30 
31  /* Perform one-time-only initialisation (e.g. heap) */
32  initialise();
33 
34  /* Some devices take an unreasonably long time to initialise */
35  printf ( "%s initialising devices...", product_short_name );
36  startup();
37  printf ( "ok\n" );
38 
39  /* Attempt to boot */
40  if ( ( rc = ipxe ( NULL ) ) != 0 )
41  goto err_ipxe;
42 
43  err_ipxe:
44  shutdown_exit();
45  return rc;
46 }
const char product_short_name[]
Product short name string.
Definition: version.c:75
struct arbelprm_rc_send_wqe rc
Definition: arbel.h:14
int printf(const char *fmt,...)
Write a formatted string to the console.
Definition: vsprintf.c:464
FILE_LICENCE(GPL2_OR_LATER_OR_UBDL)
Automatic booting.
void initialise(void)
Initialise iPXE.
Definition: init.c:52
int ipxe(struct net_device *netdev)
Main iPXE flow of execution.
Definition: autoboot.c:567
#define __asmcall
Declare a function with standard calling conventions.
Definition: compiler.h:12
static void shutdown_exit(void)
Shut down system for exit back to firmware.
Definition: init.h:84
Version number.
__asmcall int main(void)
Main entry point.
Definition: main.c:28
#define NULL
NULL pointer (VOID *)
Definition: Base.h:362
void startup(void)
Start up iPXE.
Definition: init.c:67