From 25fd42ca870fe7b19827dcf4d72be5b28e4d7c33 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Sat, 14 Jul 2007 15:52:23 +0100 Subject: [PATCH] Reduced etherboot.h dependencies to avoid unnecessary rebuilds. etherboot.h is only now used by drivers that have not been updated to the new API. --- src/include/etherboot.h | 290 ++-------------------------------------- src/include/osdep.h | 32 ----- 2 files changed, 10 insertions(+), 312 deletions(-) delete mode 100644 src/include/osdep.h diff --git a/src/include/etherboot.h b/src/include/etherboot.h index 82519fdf..8d658194 100644 --- a/src/include/etherboot.h +++ b/src/include/etherboot.h @@ -6,11 +6,18 @@ * */ -#include "compiler.h" -#include "stddef.h" -#include "stdint.h" +#include +#include +#include +#include #include +#include +#include +#include +#include +#include +typedef unsigned long Address; /* * IMPORTANT!!!!!!!!!!!!!! @@ -21,288 +28,11 @@ * */ - -#include -#include "osdep.h" - -#ifndef BOOT_FIRST -#define BOOT_FIRST BOOT_NIC -#endif -#ifndef BOOT_SECOND -#define BOOT_SECOND BOOT_NOTHING -#endif -#ifndef BOOT_THIRD -#define BOOT_THIRD BOOT_NOTHING -#endif - -#define DEFAULT_BOOT_ORDER ( \ - (BOOT_FIRST << (0*BOOT_BITS)) | \ - (BOOT_SECOND << (1*BOOT_BITS)) | \ - (BOOT_THIRD << (2*BOOT_BITS)) | \ - (BOOT_NOTHING << (3*BOOT_BITS)) | \ - 0) - -#ifdef BOOT_INDEX -#define DEFAULT_BOOT_INDEX BOOT_INDEX -#else -#define DEFAULT_BOOT_INDEX 0 -#endif - -#if !defined(TAGGED_IMAGE) && !defined(AOUT_IMAGE) && !defined(ELF_IMAGE) && !defined(ELF64_IMAGE) && !defined(COFF_IMAGE) && !defined(RAW_IMAGE) -#define TAGGED_IMAGE /* choose at least one */ -#endif - -#define K_ESC '\033' -#define K_EOF '\04' /* Ctrl-D */ -#define K_INTR '\03' /* Ctrl-C */ - -/* Edit this to change the path to hostspecific kernel image - kernel. in RARP boot */ -#ifndef DEFAULT_KERNELPATH -#define DEFAULT_KERNELPATH "/tftpboot/kernel.%@" -#endif - -#ifdef FREEBSD_PXEEMU -#undef DEFAULT_BOOTFILE -#ifndef PXENFSROOTPATH -#define PXENFSROOTPATH "" -#endif -#define DEFAULT_BOOTFILE PXENFSROOTPATH "/boot/pxeboot" -#endif - -#ifndef MAX_TFTP_RETRIES -#define MAX_TFTP_RETRIES 20 -#endif - -#ifndef MAX_BOOTP_RETRIES -#define MAX_BOOTP_RETRIES 20 -#endif - -#define MAX_BOOTP_EXTLEN (ETH_MAX_MTU-sizeof(struct bootpip_t)) - -#ifndef MAX_ARP_RETRIES -#define MAX_ARP_RETRIES 20 -#endif - -#ifndef MAX_RPC_RETRIES -#define MAX_RPC_RETRIES 20 -#endif - /* Link configuration time in tenths of a second */ #ifndef VALID_LINK_TIMEOUT #define VALID_LINK_TIMEOUT 100 /* 10.0 seconds */ #endif -/* Inter-packet retry in ticks */ -#ifndef TIMEOUT -#define TIMEOUT (10*TICKS_PER_SEC) -#endif - -#ifndef BOOTP_TIMEOUT -#define BOOTP_TIMEOUT (2*TICKS_PER_SEC) -#endif - -/* Max interval between IGMP packets */ -#define IGMP_INTERVAL (10*TICKS_PER_SEC) -#define IGMPv1_ROUTER_PRESENT_TIMEOUT (400*TICKS_PER_SEC) - -/* These settings have sense only if compiled with -DCONGESTED */ -/* total retransmission timeout in ticks */ -#define TFTP_TIMEOUT (30*TICKS_PER_SEC) -/* packet retransmission timeout in ticks */ -#ifdef CONGESTED -#define TFTP_REXMT (3*TICKS_PER_SEC) -#else -#define TFTP_REXMT TIMEOUT -#endif - -#ifndef NULL -#define NULL ((void *)0) -#endif - -#include - -enum { - ARP_CLIENT, ARP_SERVER, ARP_GATEWAY, - ARP_NAMESERVER, -#ifdef PXE_EXPORT - ARP_PROXYDHCP, -#endif - MAX_ARP -}; - -#define RARP_REQUEST 3 -#define RARP_REPLY 4 - -#include - - -/* Helper macros used to identify when DHCP options are valid/invalid in/outside of encapsulation */ -#define NON_ENCAP_OPT in_encapsulated_options == 0 && -#ifdef ALLOW_ONLY_ENCAPSULATED -#define ENCAP_OPT in_encapsulated_options == 1 && -#else -#define ENCAP_OPT -#endif - -#include -#include "ip.h" -#include "udp.h" -#include "old_tcp.h" -#include "bootp.h" -#include "igmp.h" -#include "nfs.h" -#include "console.h" -#include "stdlib.h" - -struct arptable_t { - struct in_addr ipaddr; - uint8_t node[6]; -} PACKED; - -#define KERNEL_BUF (bootp_data.bootp_reply.bp_file) - -#define FLOPPY_BOOT_LOCATION 0x7c00 - -struct rom_info { - unsigned short rom_segment; - unsigned short rom_length; -}; - -extern inline int rom_address_ok(struct rom_info *rom, int assigned_rom_segment) -{ - return (assigned_rom_segment < 0xC000 - || assigned_rom_segment == rom->rom_segment); -} - -/* Define a type for passing info to a loaded program */ -struct ebinfo { - uint8_t major, minor; /* Version */ - uint16_t flags; /* Bit flags */ -}; - -/*************************************************************************** -External prototypes -***************************************************************************/ -/* main.c */ -struct Elf_Bhdr; -extern int main(); -extern char as_main_program; -/* nic.c */ -extern void rx_qdrain P((void)); -extern int ip_transmit P((int len, const void *buf)); -extern void build_ip_hdr P((unsigned long destip, int ttl, int protocol, - int option_len, int len, const void *buf)); -extern void build_udp_hdr P((unsigned long destip, - unsigned int srcsock, unsigned int destsock, int ttl, - int len, const void *buf)); -extern int udp_transmit P((unsigned long destip, unsigned int srcsock, - unsigned int destsock, int len, const void *buf)); -extern int tcp_transmit(unsigned long destip, unsigned int srcsock, - unsigned int destsock, long send_seq, long recv_seq, - int window, int flags, int len, const void *buf); -int tcp_reset(struct iphdr *ip); -typedef int (*reply_t)(int ival, void *ptr, unsigned short ptype, struct iphdr *ip, struct udphdr *udp, struct tcphdr *tcp); -extern int await_reply P((reply_t reply, int ival, void *ptr, long timeout)); -extern int decode_rfc1533 P((unsigned char *, unsigned int, unsigned int, int)); -#define RAND_MAX 2147483647L -extern uint16_t ipchksum P((const void *ip, unsigned long len)); -extern uint16_t add_ipchksums P((unsigned long offset, uint16_t sum, uint16_t new)); -extern long rfc2131_sleep_interval P((long base, int exp)); -extern void cleanup P((void)); - -/* osloader.c */ -/* Be careful with sector_t it is an unsigned long long on x86 */ -typedef uint64_t sector_t; -typedef sector_t (*os_download_t)(unsigned char *data, unsigned int len, int eof); -extern os_download_t probe_image(unsigned char *data, unsigned int len); -extern int load_block P((unsigned char *, unsigned int, unsigned int, int )); - -/* misc.c */ -extern void twiddle P((void)); -extern void interruptible_sleep P((int secs)); -extern int strcasecmp P((const char *a, const char *b)); -extern char *substr P((const char *a, const char *b)); - -extern unsigned long get_boot_order(unsigned long order, unsigned *index); -extern void disk_init P((void)); -extern unsigned int pcbios_disk_read P((int drv,int c,int h,int s,char *buf)); - -/* start32.S */ -struct os_entry_regs { - /* Be careful changing this structure - * as it is used by assembly language code. - */ - uint32_t edi; /* 0 */ - uint32_t esi; /* 4 */ - uint32_t ebp; /* 8 */ - uint32_t esp; /* 12 */ - uint32_t ebx; /* 16 */ - uint32_t edx; /* 20 */ - uint32_t ecx; /* 24 */ - uint32_t eax; /* 28 */ - - uint32_t saved_ebp; /* 32 */ - uint32_t saved_esi; /* 36 */ - uint32_t saved_edi; /* 40 */ - uint32_t saved_ebx; /* 44 */ - uint32_t saved_eip; /* 48 */ - uint32_t saved_esp; /* 52 */ -}; -struct regs { - /* Be careful changing this structure - * as it is used by assembly language code. - */ - uint32_t edi; /* 0 */ - uint32_t esi; /* 4 */ - uint32_t ebp; /* 8 */ - uint32_t esp; /* 12 */ - uint32_t ebx; /* 16 */ - uint32_t edx; /* 20 */ - uint32_t ecx; /* 24 */ - uint32_t eax; /* 28 */ -}; -extern struct os_entry_regs os_regs; -extern struct regs initial_regs; -extern int xstart32(unsigned long entry_point, ...); -extern int xstart_lm(unsigned long entry_point, unsigned long params); -extern void xend32 P((void)); -struct Elf_Bhdr *prepare_boot_params(void *header); -extern int elf_start(unsigned long machine, unsigned long entry, unsigned long params); -extern unsigned long currticks P((void)); -extern void exit P((int status)); - - -/*************************************************************************** -External variables -***************************************************************************/ -/* main.c */ -extern struct rom_info rom; -extern char *hostname; -extern int hostnamelen; -extern unsigned char *addparam; -extern int addparamlen; -extern jmp_buf restart_etherboot; -extern int url_port; -extern struct arptable_t arptable[MAX_ARP]; -#ifdef IMAGE_MENU -extern int menutmo,menudefault; -extern unsigned char *defparams; -extern int defparams_max; -#endif -#ifdef MOTD -extern unsigned char *motd[RFC1533_VENDOR_NUMOFMOTD]; -#endif -extern struct bootpd_t bootp_data; -#define BOOTP_DATA_ADDR (&bootp_data) -extern unsigned char *end_of_rfc1533; -#ifdef IMAGE_FREEBSD -extern int freebsd_howto; -#define FREEBSD_KERNEL_ENV_SIZE 256 -extern char freebsd_kernel_env[FREEBSD_KERNEL_ENV_SIZE]; -#endif - - /* * Local variables: * c-basic-offset: 8 diff --git a/src/include/osdep.h b/src/include/osdep.h deleted file mode 100644 index bc1f1668..00000000 --- a/src/include/osdep.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef ETHERBOOT_OSDEP_H -#define ETHERBOOT_OSDEP_H - -/* Optimization barrier */ -/* The "volatile" is due to gcc bugs */ -#define barrier() __asm__ __volatile__("": : :"memory") - -#include "stdint.h" -#include "limits.h" -#include "string.h" -#include "io.h" -#include "endian.h" -#include "byteswap.h" -#include "setjmp.h" -#include "latch.h" - -typedef unsigned long Address; - -/* ANSI prototyping macro */ -#ifdef __STDC__ -#define P(x) x -#else -#define P(x) () -#endif - -#endif - -/* - * Local variables: - * c-basic-offset: 8 - * End: - */