aboutsummaryrefslogtreecommitdiffstats
path: root/com32/elflink/modules
diff options
context:
space:
mode:
authorMatt Fleming <matt.fleming@linux.intel.com>2011-02-13 21:02:51 +0000
committerMatt Fleming <matt.fleming@linux.intel.com>2011-03-09 14:32:36 +0000
commitfd86cda5f1cb5bb1c33579105d0f2f515f50c3a4 (patch)
treed392729b82031d680df5d50f05d09dac4b213334 /com32/elflink/modules
parent2adb4a29248b8def7a967802ec1595024e8b77d6 (diff)
downloadsyslinux-fd86cda5f1cb5bb1c33579105d0f2f515f50c3a4.tar.gz
syslinux-fd86cda5f1cb5bb1c33579105d0f2f515f50c3a4.tar.xz
syslinux-fd86cda5f1cb5bb1c33579105d0f2f515f50c3a4.zip
elflink: Move code out of core and into ldlinux.c32
Currently, there is a lot of code in core/elflink that is not strictly required for the core to function. There are benefits to keeping the core proper as small as possible, for example so that it can fit within a single 64K block on btrfs. So move the following pieces of code out of core/elflink and into a new ldlinux ELF module which will be automatically loaded by the core: - command line interface code - C configuration parser - refstr implementation - rest of the menu system Below are some measurements of the size of ldlinux.elf before and after this change. Before: text data bss dec hex filename 161328 10439 913468 1085235 108f33 core/ldlinux.elf After: text data bss dec hex filename 142423 10415 909500 1062338 1035c2 core/ldlinux.elf Signed-off-by: Matt Fleming <matt.fleming@linux.intel.com>
Diffstat (limited to 'com32/elflink/modules')
-rw-r--r--com32/elflink/modules/Makefile2
-rw-r--r--com32/elflink/modules/cli.h6
-rw-r--r--com32/elflink/modules/menu.h17
-rw-r--r--com32/elflink/modules/menumain.c1
4 files changed, 7 insertions, 19 deletions
diff --git a/com32/elflink/modules/Makefile b/com32/elflink/modules/Makefile
index 8a97835c..6cd0767f 100644
--- a/com32/elflink/modules/Makefile
+++ b/com32/elflink/modules/Makefile
@@ -13,6 +13,8 @@
topdir = ../../..
include MCONFIG
+CFLAGS += -I$(topdir)/core/elflink
+
MODULES = hello.c32 sort.c32 mytest.c32 menumain.c32 printmsg.c32 background.c32 passwd.c32 sha1hash.c32 \
unbase64.c32 sha512crypt.c32 md5.c32 crypt-md5.c32 sha256crypt.c32 get_key.c32 ansiraw.c32 test.c32 \
meminfo.c32 menu.c32 drain.c32 dir.c32 pcitest.c32 vesainfo.c32 cpuid.c32 cpuidtest.c32
diff --git a/com32/elflink/modules/cli.h b/com32/elflink/modules/cli.h
index c452643d..4ae9caf3 100644
--- a/com32/elflink/modules/cli.h
+++ b/com32/elflink/modules/cli.h
@@ -2,18 +2,20 @@
#define CLI_H
#define MAX_CMD_HISTORY 64
+#define COMMAND_DELIM " \t\n" // Whitespace delimiters
+#define MAX_COMMAND_ARGS 40
struct cli_command {
struct list_head list;
char *command;
};
-struct list_head cli_history_head;
-
extern void clear_screen(void);
extern int mygetkey(clock_t timeout);
extern const char *edit_cmdline(const char *input, int top /*, int width */ ,
int (*pDraw_Menu) (int, int, int),
void (*show_fkey) (int));
+extern void process_command(const char *cmd, bool history);
+extern struct menu *root_menu, *start_menu, *hide_menu, *menu_list, *default_menu;
#endif
diff --git a/com32/elflink/modules/menu.h b/com32/elflink/modules/menu.h
index 5b05fe81..c7d70792 100644
--- a/com32/elflink/modules/menu.h
+++ b/com32/elflink/modules/menu.h
@@ -69,23 +69,6 @@ static inline bool is_disabled(struct menu_entry *me)
return me->action == MA_DISABLED;
}
-enum kernel_type {
- /* Meta-types for internal use */
- KT_NONE,
- KT_LOCALBOOT,
-
- /* The ones we can pass off to SYSLINUX, in order */
- KT_KERNEL, /* Undefined type */
- KT_LINUX, /* Linux kernel */
- KT_BOOT, /* Bootstrap program */
- KT_BSS, /* Boot sector with patch */
- KT_PXE, /* PXE NBP */
- KT_FDIMAGE, /* Floppy disk image */
- KT_COMBOOT, /* COMBOOT image */
- KT_COM32, /* COM32 image */
- KT_CONFIG, /* Configuration file */
-};
-
extern const char *const kernel_types[];
/* Configurable integer parameters */
diff --git a/com32/elflink/modules/menumain.c b/com32/elflink/modules/menumain.c
index 86285857..265f4c4d 100644
--- a/com32/elflink/modules/menumain.c
+++ b/com32/elflink/modules/menumain.c
@@ -30,6 +30,7 @@
#include <com32.h>
#include <syslinux/adv.h>
#include <sys/module.h>
+#include <core-elf.h>
#include "menu.h"
#include "cli.h"