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 FILE_SECBOOT ( PERMITTED );
17 
18 #include <stddef.h>
19 #include <stdio.h>
20 #include <ipxe/init.h>
21 #include <ipxe/version.h>
22 #include <usr/autoboot.h>
23 
24 /**
25  * Main entry point
26  *
27  * @ret rc Return status code
28  */
29 __asmcall int main ( void ) {
30  int rc;
31 
32  /* Perform one-time-only initialisation (e.g. heap) */
33  initialise();
34 
35  /* Some devices take an unreasonably long time to initialise */
36  printf ( "%s initialising devices...\n", product_short_name );
37  startup();
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:77
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:465
FILE_LICENCE(GPL2_OR_LATER_OR_UBDL)
FILE_SECBOOT(PERMITTED)
Automatic booting.
void initialise(void)
Initialise iPXE.
Definition: init.c:53
int ipxe(struct net_device *netdev)
Main iPXE flow of execution.
Definition: autoboot.c:586
#define __asmcall
Declare a function with standard calling conventions.
Definition: compiler.h:15
static void shutdown_exit(void)
Shut down system for exit back to firmware.
Definition: init.h:86
Version number.
__asmcall int main(void)
Main entry point.
Definition: main.c:29
#define NULL
NULL pointer (VOID *)
Definition: Base.h:322
void startup(void)
Start up iPXE.
Definition: init.c:70