iPXE
stdlib.h File Reference
#include <stdint.h>
#include <assert.h>

Go to the source code of this file.

Functions

 FILE_LICENCE (GPL2_OR_LATER_OR_UBDL)
 FILE_SECBOOT (PERMITTED)
unsigned long strtoul (const char *string, char **endp, int base)
 Convert string to numeric value.
unsigned long long strtoull (const char *string, char **endp, int base)
 Convert string to numeric value.
void *__malloc malloc (size_t size)
 Allocate memory.
void * realloc (void *old_ptr, size_t new_size)
 Reallocate memory.
void free (void *ptr)
 Free memory.
void *__malloc zalloc (size_t len)
 Allocate cleared memory.
void zfree (void *ptr)
 Clear and free memory.
static void *__malloc calloc (size_t nmemb, size_t size)
 Allocate cleared memory.
long int random (void)
 Generate a pseudo-random number between 0 and 2147483647L or 2147483562?
void srandom (unsigned int seed)
 Seed the pseudo-random number generator.
static int rand (void)
static void srand (unsigned int seed)
static __attribute__ ((always_inline)) int abs(int value)
int system (const char *command)
 Execute command line.
__asmcall int main (void)
 Main entry point.

Function Documentation

◆ FILE_LICENCE()

FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL )

◆ FILE_SECBOOT()

FILE_SECBOOT ( PERMITTED )

References __malloc, base, len, and size.

◆ strtoul()

unsigned long strtoul ( const char * string,
char ** endp,
int base )
extern

Convert string to numeric value.

Parameters
stringString
endpEnd pointer (or NULL)
baseNumeric base (or zero to autodetect)
Return values
valueNumeric value

Definition at line 516 of file string.c.

516 {
517 unsigned long value = 0;
518 unsigned int digit;
519 int negate;
520
521 /* Preprocess string */
522 string = strtoul_pre ( string, &negate, &base );
523
524 /* Process digits */
525 for ( ; ; string++ ) {
526 digit = digit_value ( *string );
527 if ( digit >= ( unsigned int ) base )
528 break;
529 value = ( ( value * base ) + digit );
530 }
531
532 /* Negate value if, applicable */
533 if ( negate )
534 value = -value;
535
536 /* Fill in end pointer, if applicable */
537 if ( endp )
538 *endp = ( ( char * ) string );
539
540 return value;
541}
pseudo_bit_t value[0x00020]
Definition arbel.h:2
uint32_t base
Base.
Definition librm.h:3
unsigned int digit_value(unsigned int character)
Calculate digit value.
Definition string.c:458
static const char * strtoul_pre(const char *string, int *negate, int *base)
Preprocess string for strtoul() or strtoull().
Definition string.c:477

References base, digit_value(), strtoul_pre(), and value.

Referenced by aoe_parse_uri(), apply_syslogs_settings(), bzimage_parse_cmdline(), cpio_parse_cmdline(), efi_snp_hii_store(), fc_aton(), fc_id_aton(), ftp_parse_value(), ftp_reply(), http_parse_content_length(), http_parse_retry_after(), http_parse_status(), http_rx_chunk_len(), ib_srp_parse_integer(), inet6_aton(), inet_aton(), iscsi_handle_chap_i_value(), iscsi_handle_maxburstlength_value(), iscsi_handle_targetaddress_value(), iscsi_parse_root_path(), mac_address_from_string_specs(), parse_int_setting(), parse_integer(), parse_setting_tag(), pnm_ascii(), scsi_parse_lun(), slam_parse_multicast_address(), string_test_exec(), tftp_process_blksize(), tftp_process_multicast(), tftp_process_tsize(), uart_find(), uri_decode(), uri_port(), and xenstore_read_num().

◆ strtoull()

unsigned long long strtoull ( const char * string,
char ** endp,
int base )
extern

Convert string to numeric value.

Parameters
stringString
endpEnd pointer (or NULL)
baseNumeric base (or zero to autodetect)
Return values
valueNumeric value

Definition at line 551 of file string.c.

551 {
552 unsigned long long value = 0;
553 unsigned int digit;
554 int negate;
555
556 /* Preprocess string */
557 string = strtoul_pre ( string, &negate, &base );
558
559 /* Process digits */
560 for ( ; ; string++ ) {
561 digit = digit_value ( *string );
562 if ( digit >= ( unsigned int ) base )
563 break;
564 value = ( ( value * base ) + digit );
565 }
566
567 /* Negate value if, applicable */
568 if ( negate )
569 value = -value;
570
571 /* Fill in end pointer, if applicable */
572 if ( endp )
573 *endp = ( ( char * ) string );
574
575 return value;
576}

References base, digit_value(), strtoul_pre(), and value.

◆ malloc()

void *__malloc malloc ( size_t size)
extern

Allocate memory.

Parameters
sizeRequested size
Return values
ptrMemory, or NULL

Allocates memory with no particular alignment requirement. ptr will be aligned to at least a multiple of sizeof(void*).

Definition at line 677 of file malloc.c.

677 {
678 void *ptr;
679
680 ptr = realloc ( NULL, size );
681 if ( ASSERTED ) {
682 DBGC ( &heap, "HEAP detected possible memory corruption "
683 "from %p\n", __builtin_return_address ( 0 ) );
684 }
685 return ptr;
686}
#define NULL
NULL pointer (VOID *).
Definition Base.h:321
#define ASSERTED
Definition assert.h:26
#define DBGC(...)
Definition compiler.h:530
uint16_t size
Buffer size.
Definition dwmac.h:3
void * realloc(void *old_ptr, size_t new_size)
Reallocate memory.
Definition malloc.c:663
A heap.
Definition malloc.h:45

References ASSERTED, DBGC, NULL, realloc(), and size.

Referenced by add_tls(), aes_unwrap(), aes_wrap(), alloc_iob_raw(), apply_dns_search(), ath5k_hw_rfregs_init(), chap_init(), datauri_open(), deflate_test_exec(), der_asn1(), derwin(), dhcpv6_rx(), dupwin(), eap_rx_mschapv2_request(), eap_tx_response(), ecdsa_alloc(), efi_block_label(), efi_boot_path(), efi_cacert_all(), efi_download_start(), efi_load_path(), efi_local_check_volume_name(), efi_local_len(), efi_locate_device(), efi_vasprintf(), efivars_fetch(), eisabus_probe(), exchange_okx(), fc_ulp_login(), fetch_setting_copy(), ffdhe(), format_uri_alloc(), http_format_ntlm_auth(), icert_encode(), int13_hook(), ipair_rx_pubkey(), ipoib_map_remac(), ipv4_add_miniroute(), isabus_probe(), isapnpbus_probe(), iscsi_handle_chap_c_value(), iscsi_handle_chap_r_value(), iscsi_rx_buffered_data(), iscsi_scsi_command(), jme_alloc_rx_resources(), jme_alloc_tx_resources(), lldp_rx(), loopback_test(), mcabus_probe(), memcpy_test_speed(), mlx_memory_alloc_priv(), net80211_probe_start(), net80211_register(), newwin(), nfs_uri_symlink(), ntlm_authenticate_okx(), ocsp_response(), ocsp_uri_string(), parse_kv(), parse_net_args(), pci_vpd_resize(), pcibus_probe(), peerblk_decrypt(), peerblk_parse_header(), pem_asn1(), rsa_alloc(), sandev_parse_iso9660(), slirp_timer_new(), storef_setting(), storen_setting(), strndup(), t509bus_probe(), tls_new_session_ticket(), tls_send_client_key_exchange_dhe(), uhci_enqueue(), usb_config_descriptor(), usb_get_string_descriptor(), usbio_config(), usbio_path(), vasprintf(), vesafb_mode_list(), vmbus_open(), wpa_make_rsn_ie(), wpa_start(), and zalloc().

◆ realloc()

void * realloc ( void * old_ptr,
size_t new_size )
extern

Reallocate memory.

Parameters
old_ptrMemory previously allocated by malloc(), or NULL
new_sizeRequested size
Return values
new_ptrAllocated memory, or NULL

Definition at line 663 of file malloc.c.

663 {
664
665 return heap_realloc ( &heap, old_ptr, new_size );
666}
void * heap_realloc(struct heap *heap, void *old_ptr, size_t new_size)
Reallocate memory.
Definition malloc.c:593

References heap_realloc().

Referenced by __attribute__(), asn1_grow(), bitmap_resize(), cachedhcp_record(), dhcpopt_init(), efi_ifr_op(), efi_ifr_string(), efivars_find(), free(), ibft_alloc_string(), ibft_install(), line_buffer(), malloc(), nvo_realloc(), process_script(), and xferbuf_malloc_realloc().

◆ free()

void free ( void * ptr)
extern

Free memory.

Parameters
ptrMemory allocated by malloc(), or NULL

Memory allocated with malloc_phys() cannot be freed with free(); it must be freed with free_phys() instead.

If ptr is NULL, no action is taken.

Definition at line 698 of file malloc.c.

698 {
699
700 realloc ( ptr, 0 );
701 if ( ASSERTED ) {
702 DBGC ( &heap, "HEAP detected possible memory corruption "
703 "from %p\n", __builtin_return_address ( 0 ) );
704 }
705}

References ASSERTED, DBGC, and realloc().

◆ zalloc()

void *__malloc zalloc ( size_t size)
extern

Allocate cleared memory.

Parameters
sizeRequested size
Return values
ptrAllocated memory

Allocate memory as per malloc(), and zero it.

This function name is non-standard, but pretty intuitive. zalloc(size) is always equivalent to calloc(1,size)

Definition at line 718 of file malloc.c.

718 {
719 void *data;
720
721 data = malloc ( size );
722 if ( data )
723 memset ( data, 0, size );
724 if ( ASSERTED ) {
725 DBGC ( &heap, "HEAP detected possible memory corruption "
726 "from %p\n", __builtin_return_address ( 0 ) );
727 }
728 return data;
729}
uint8_t data[48]
Additional event data.
Definition ena.h:11
void * memset(void *dest, int character, size_t len) __nonnull
void * malloc(size_t size)
Allocate memory.
Definition malloc.c:677

References ASSERTED, data, DBGC, malloc(), memset(), and size.

Referenced by add_dynui_item(), add_parameter(), alloc_form(), alloc_gpios(), alloc_ibdev(), alloc_image(), alloc_netdev(), alloc_pixbuf(), alloc_sandev(), alloc_uart(), alloc_usb(), alloc_usb_bus(), alloc_usb_hub(), aoecmd_create(), aoedev_open(), ar9300_eeprom_restore_internal(), arbel_alloc(), arbel_create_cq(), arbel_create_qp(), ata_open(), atadev_command(), ath5k_hw_attach(), ath5k_probe(), ath9k_init_softc(), ath_descdma_setup(), atl1e_setup_ring_resources(), autovivify_child_settings(), blob_open(), block_translate(), cachedhcp_record(), calloc(), cms_message(), cms_parse_participants(), concat_args(), cpio_okx(), create_downloader(), create_dynui(), create_parameters(), create_pinger(), create_validator(), dhcp_deliver(), dhcpv6_register(), dns_resolv(), dt_probe_node(), dwgpio_group_probe(), dwusb_probe(), efi_block_exec(), efi_block_install(), efi_cmdline_init(), efi_fcp_path(), efi_file_open_image(), efi_ib_srp_path(), efi_image_filepath(), efi_image_uripath(), efi_iscsi_path(), efi_local_open(), efi_netdev_path(), efi_path_uri(), efi_paths(), efi_pxe_install(), efi_snp_hii_fetch(), efi_snp_hii_install(), efi_snp_hii_process(), efi_snp_hii_store(), efi_snp_probe(), efi_uri_path(), efi_usb_install(), efi_usb_open(), efi_usb_path(), efi_usb_probe(), efidev_alloc(), efipci_start(), efivars_find(), ehci_endpoint_open(), ehci_probe(), ehci_ring_alloc(), eoib_create_peer(), exanic_probe(), fc_els_create(), fc_ns_query(), fc_peer_create(), fc_port_open(), fc_ulp_create(), fc_xchg_create(), fcpdev_open(), fcpdev_scsi_command(), fetch_string_setting_copy_alloc(), fetchf_setting_copy(), flexboot_nodnic_create_cq(), flexboot_nodnic_create_qp(), flexboot_nodnic_eth_open(), flexboot_nodnic_probe(), fragment_reassemble(), ftp_open(), generic_settings_store(), golan_alloc(), golan_create_cq(), golan_create_qp_aux(), guestinfo_fetch_type(), hermon_alloc(), hermon_create_cq(), hermon_create_qp(), http_connect(), http_open(), http_open_uri(), hub_probe(), hv_probe(), hvm_probe(), ib_cmrc_open(), ib_create_conn(), ib_create_cq(), ib_create_madx(), ib_create_mi(), ib_create_path(), ib_create_qp(), ib_mcast_attach(), ib_srp_open(), ibft_install(), icert_certs(), imux_probe(), init_mlx_utils(), ipair_create(), ipv6_add_miniroute(), iscsi_open(), linda_create_send_wq(), mlx_memory_zalloc_priv(), ndp_register_settings(), neighbour_create(), net80211_handle_mgmt(), net80211_prepare_assoc(), net80211_probe_start(), net80211_probe_step(), net80211_step_associate(), nfs_open(), nii_map(), numeric_resolv(), ocsp_check(), ocsp_uri_string(), open(), parse_uri(), pcibridge_probe(), peerblk_open(), peerdisc_create(), peerdisc_discovered(), peermux_filter(), ping_open(), png_pixbuf(), pxe_menu_parse(), qib7322_create_send_bufs(), qib7322_create_send_wq(), qib7322_probe(), rc80211_init(), resolv(), resolv_setting(), rtl818x_probe(), scsi_open(), scsidev_command(), sec80211_install(), sis190_mii_probe(), skge_probe(), skge_ring_alloc(), sky2_probe(), sky2_up(), slam_open(), srp_open(), srpdev_scsi_command(), start_dhcp(), start_dhcpv6(), start_ipv6conf(), start_ntp(), start_pxebs(), tcp_open(), tftp_core_open(), tg3_alloc_consistent(), tls_agree_ephemeral(), tls_session(), tls_set_cipher(), tls_set_digest(), txnic_bgx_probe(), txnic_pf_probe(), ucode_exec(), udp_open_common(), uhci_endpoint_open(), uhci_probe(), undipci_probe(), undirom_probe(), uri_dup(), usb_probe_all(), usbblk_probe(), usbio_endpoint_open(), usbio_interfaces(), usbio_interrupt_open(), usbio_start(), usbkbd_probe(), validator_start_download(), vmbus_probe(), vmbus_probe_channels(), vxge_hw_device_initialize(), x509_alloc_chain(), x509_append(), x509_certificate(), xcm_create(), xenbus_probe_device(), xenstore_response(), xfer_open_named_socket(), xhci_bus_open(), xhci_device_open(), xhci_endpoint_open(), xhci_probe(), xhci_ring_alloc(), xsigo_ib_probe(), xve_create(), and zlib_deflate().

◆ zfree()

void zfree ( void * ptr)
extern

Clear and free memory.

Parameters
ptrMemory allocated by malloc(), or NULL

If ptr is NULL, no action is taken.

Definition at line 738 of file malloc.c.

738 {
739 struct autosized_block *block;
740
741 if ( ptr && ( ptr != NOWHERE ) ) {
742 block = container_of ( ptr, struct autosized_block, data );
744 sizeof ( block->size ) );
745 assert ( block->size >= sizeof ( *block ) );
746 memset ( ptr, 0, ( block->size - sizeof ( *block ) ) );
748 sizeof ( block->size ) );
749 }
750 free ( ptr );
751 if ( ASSERTED ) {
752 DBGC ( &heap, "HEAP detected possible memory corruption "
753 "from %p\n", __builtin_return_address ( 0 ) );
754 }
755}
#define assert(condition)
Assert a condition at run-time.
Definition assert.h:61
#define NOWHERE
Address for zero-length memory blocks.
Definition malloc.h:42
#define VALGRIND_MAKE_MEM_NOACCESS(_qzz_addr, _qzz_len)
Definition memcheck.h:112
#define VALGRIND_MAKE_MEM_DEFINED(_qzz_addr, _qzz_len)
Definition memcheck.h:132
uint8_t block[3][8]
DES-encrypted blocks.
Definition mschapv2.h:1
static void(* free)(struct refcnt *refcnt))
Definition refcnt.h:55
#define container_of(ptr, type, field)
Get containing structure.
Definition stddef.h:36
A block of allocated memory complete with size information.
Definition malloc.c:121

References assert, ASSERTED, block, container_of, data, DBGC, free, memset(), NOWHERE, VALGRIND_MAKE_MEM_DEFINED, and VALGRIND_MAKE_MEM_NOACCESS.

Referenced by aes_unwrap(), aes_wrap(), asn1_grow(), chap_finish(), cms_cipher_key(), ecdsa_free(), ffdhe(), free_tls(), free_tls_session(), privkey_apply_settings(), privkey_free(), rsa_free(), tls_agree_ephemeral(), tls_clear_cipher(), tls_clear_digest(), tls_new_finished(), tls_new_session_ticket(), tls_send_certificate_verify(), tls_send_client_key_exchange_dhe(), and tls_send_client_key_exchange_pubkey().

◆ calloc()

void *__malloc calloc ( size_t nmemb,
size_t size )
inlinestatic

Allocate cleared memory.

Parameters
nmembNumber of members
sizeSize of each member
Return values
ptrAllocated memory

Allocate memory as per malloc(), and zero it.

This is implemented as a static inline, with the body of the function in zalloc(), since in most cases nmemb will be 1 and doing the multiply is just wasteful.

Definition at line 47 of file stdlib.h.

47 {
48 return zalloc ( nmemb * size );
49}
void *__malloc zalloc(size_t len)
Allocate cleared memory.
Definition malloc.c:718

References __malloc, size, and zalloc().

Referenced by ath5k_desc_alloc(), ath5k_eeprom_convert_pcal_info_2413(), ath5k_eeprom_convert_pcal_info_5111(), ath5k_eeprom_convert_pcal_info_5112(), and slk_init().

◆ random()

long int random ( void )
extern

Generate a pseudo-random number between 0 and 2147483647L or 2147483562?

Return values
randPseudo-random number

Definition at line 32 of file random.c.

32 {
33 int32_t q;
34
35 /* Initialize linear congruential generator */
36 if ( ! rnd_seed )
37 srandom ( time ( NULL ) );
38
39 /* simplified version of the LCG given in Bruce Schneier's
40 "Applied Cryptography" */
41 q = ( rnd_seed / 53668 );
42 rnd_seed = ( 40014 * ( rnd_seed - 53668 * q ) - 12211 * q );
43 if ( rnd_seed < 0 )
44 rnd_seed += 2147483563L;
45 return rnd_seed;
46}
signed int int32_t
Definition stdint.h:17
static int32_t rnd_seed
Definition random.c:14
void srandom(unsigned int seed)
Seed the pseudo-random number generator.
Definition random.c:21

References NULL, rnd_seed, and srandom().

Referenced by arbel_alloc_qpn(), cipher_cost(), digest_cost(), dns_send_packet(), eap_rx_mschapv2_request(), efi_pxe_udp_write(), efi_snp_hii_random_guid(), eth_random_addr(), forcedeth_open(), hermon_alloc_qpn(), http_digest_authenticate(), ib_create_conn(), ib_create_qp(), inject_corruption_nonzero(), inject_fault_nonzero(), iscsi_handle_chap_c_value(), iscsi_open_connection(), loopback_test(), memcpy_test_speed(), ntlm_response(), peerdisc_create(), PROFILE_TEST(), profile_test_exec(), rand(), start_dhcp(), start_dhcpv6(), tcp_open(), tcpip_bind(), tcpip_random_okx(), tls_client_hello(), tls_new_server_hello(), vmbus_open(), and wep_encrypt().

◆ srandom()

void srandom ( unsigned int seed)
extern

Seed the pseudo-random number generator.

Parameters
seedSeed value

Definition at line 21 of file random.c.

21 {
22 rnd_seed = seed;
23 if ( ! rnd_seed )
24 rnd_seed = 4; /* Chosen by fair dice roll */
25}

References rnd_seed.

Referenced by random(), srand(), and tcpip_random_okx().

◆ rand()

int rand ( void )
inlinestatic

Definition at line 61 of file stdlib.h.

61 {
62 return random();
63}
long int random(void)
Generate a pseudo-random number between 0 and 2147483647L or 2147483562?
Definition random.c:32

References random().

Referenced by cipher_cost(), digest_cost(), mlx_utils_rand_priv(), oncrpc_init_session(), and register_netdev().

◆ srand()

void srand ( unsigned int seed)
inlinestatic

Definition at line 65 of file stdlib.h.

65 {
66 srandom ( seed );
67}
void srandom(unsigned int seed)
Seed the pseudo-random number generator.
Definition random.c:21

References srandom().

Referenced by cipher_cost(), digest_cost(), and register_netdev().

◆ __attribute__()

__attribute__ ( (always_inline) )
inlinestatic

Definition at line 76 of file stdlib.h.

76 {
77 return __builtin_abs ( value );
78}

References value.

◆ system()

int system ( const char * command)
extern

Execute command line.

Parameters
commandCommand line
Return values
rcReturn status code

Execute the named command and arguments.

Definition at line 288 of file exec.c.

288 {
289 int count = split_command ( ( char * ) command, NULL );
290 char *all_tokens[ count + 1 ];
291 int ( * process_next ) ( int rc );
292 char *command_copy;
293 char **tokens;
294 int argc;
295 int process;
296 int rc = 0;
297
298 /* Create modifiable copy of command */
299 command_copy = strdup ( command );
300 if ( ! command_copy )
301 return -ENOMEM;
302
303 /* Split command into tokens */
304 split_command ( command_copy, all_tokens );
305 all_tokens[count] = NULL;
306
307 /* Process individual commands */
308 process = 1;
309 for ( tokens = all_tokens ; ; tokens += ( argc + 1 ) ) {
310
311 /* Find command terminator */
312 argc = command_terminator ( tokens, &process_next );
313
314 /* Expand tokens and execute command */
315 if ( process ) {
316 char *argv[ argc + 1 ];
317
318 /* Expand tokens */
319 if ( ( rc = expand_tokens ( argc, tokens, argv ) ) != 0)
320 break;
321 argv[argc] = NULL;
322
323 /* Execute command */
324 rc = execv ( argv[0], argv );
325
326 /* Free tokens */
327 free_tokens ( argv );
328 }
329
330 /* Stop processing, if applicable */
332 break;
333
334 /* Stop processing if we have reached the end of the
335 * command.
336 */
337 if ( ! process_next )
338 break;
339
340 /* Determine whether or not to process next command */
341 process = process_next ( rc );
342 }
343
344 /* Free modified copy of command */
345 free ( command_copy );
346
347 return rc;
348}
struct arbelprm_rc_send_wqe rc
Definition arbel.h:3
int execv(const char *command, char *const argv[])
Execute command.
Definition exec.c:61
int shell_stopped(int stop)
Test and consume shell stop state.
Definition exec.c:228
static int expand_tokens(int argc, char **tokens, char **argv)
Expand settings within a token list.
Definition exec.c:249
static void free_tokens(char **argv)
Free an expanded token list.
Definition exec.c:273
static int split_command(char *command, char **tokens)
Split command line into tokens.
Definition exec.c:122
static int command_terminator(char **tokens, int(**process_next)(int rc))
Find command terminator.
Definition exec.c:184
static unsigned int count
Number of entries.
Definition dwmac.h:220
#define ENOMEM
Not enough space.
Definition errno.h:578
@ SHELL_STOP_COMMAND
Stop processing current command line.
Definition shell.h:23
char * strdup(const char *src)
Duplicate string.
Definition string.c:425
A command-line command.
Definition command.h:10
A process.
Definition process.h:18

References command_terminator(), count, ENOMEM, execv(), expand_tokens(), free, free_tokens(), NULL, rc, SHELL_STOP_COMMAND, shell_stopped(), split_command(), and strdup().

◆ main()

__asmcall int main ( void )
extern

Main entry point.

Return values
rcReturn status code

Definition at line 29 of file main.c.

29 {
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:
45 return rc;
46}
int ipxe(struct net_device *netdev)
Main iPXE flow of execution.
Definition autoboot.c:586
void startup(void)
Start up iPXE.
Definition init.c:70
void initialise(void)
Initialise iPXE.
Definition init.c:53
static void shutdown_exit(void)
Shut down system for exit back to firmware.
Definition init.h:86
const char product_short_name[]
Product short name string.
Definition version.c:78
int printf(const char *fmt,...)
Write a formatted string to the console.
Definition vsprintf.c:485

References __asmcall, initialise(), ipxe(), NULL, printf(), product_short_name, rc, shutdown_exit(), and startup().

Referenced by _efi_start().