documentation additions.
/*
- * EfiLib/gnuefi.h
- * GNU-EFI support in legacy boot code
+ * EfiLib/gnuefi-helper.c
+ * GNU-EFI support functions
*
* Copyright (c) 2014 Roderick W. Smith
* With extensive borrowing from other sources (mostly Tianocore)
#define UnicodeSPrint SPrint
#define gRT RT
#define gBS BS
+#ifndef CONST
#define CONST
+#endif
#define ASSERT_EFI_ERROR(status) ASSERT(!EFI_ERROR(status))
CHAR8 *
OUT UINTN *Size
);
-#endif
\ No newline at end of file
+#endif
-0.8.8 (6/??/2015):
+0.9.0 (6/??/2015):
------------------
+- Added new "fold_linux_kernels" token to refind.conf. This option, when
+ active (the default) "folds" all Linux kernels in a directory into a
+ single entry on the rEFInd menu. The kernel with the most recent time
+ stamp is launched by default. To launch another kernel, you must press F2
+ or Insert; additional kernels appear as options on the first kernel's
+ submenu. To see the pre-0.9.0 behavior, you must set "fold_linux_kernels
+ false" (or one of its synonyms, "off" or "0"). The point of this option
+ is to help de-clutter the rEFInd main menu.
+
- Added new Linux root (/) partition auto-discovery feature, based on
Freedesktop.org's Discoverable Partitions Spec (DPS)
(http://www.freedesktop.org/wiki/Specifications/DiscoverablePartitionsSpec/):
<p>rEFInd sorts boot loader entries <i>within each directory</i> by time stamp, so that the most recent entry comes first. Thus, if you specify a directory name (or a volume label, for loaders stored in a volume's root directory) as the <tt>default_selection</tt>, rEFInd will make the most recent loader in the directory the default. This can obviate the need to adjust this configuration parameter when you add a new kernel; chances are you want the most recently-added kernel to be the default, and rEFInd makes it so when you set the <tt>default_selection</tt> in this way. If you <i>don't</i> want the latest kernel to become the default, you can use <tt>touch</tt> to give the desired kernel (or other boot loader) in the directory a more recent time stamp, or you can set <tt>default_selection</tt> to a value that uniquely identifies your desired default loader. One caveat you should keep in mind is that the EFI and Windows interpret the hardware clock as local time, whereas Mac OS X uses <a href="http://en.wikipedia.org/wiki/Coordinated_Universal_Time">Coordinated Universal Time (UTC)</a>. Linux can work either way. Thus, time stamps for boot loaders can be skewed by several hours depending on the environment in which they were created or last modified.</p>
+<p>Prior to rEFInd 0.9.0, each Linux kernel appeared as a separate entry in the main rEFInd menu. This could make for a very crowded menu if you kept many old kernels and/or if you have several Linux distributions installed. rEFInd 0.9.0 adds a "folding" feature, in which multiple kernel entries in a single directory appear as a single entry in the main menu. Selecting that entry launches the kernel with the most recent time stamp. To launch an older kernel, you must press F2 or Insert; older kernels appear in the submenu shown earlier, but with the kernel filename prepended to the description. If you want to see all your kernels separated on the main menu, as in earlier versions of rEFInd, you should edit <tt>refind.conf</tt>: Uncomment the <tt>fold_linux_kernels</tt> option and set it to <tt>false</tt>, <tt>off</tt>, or <tt>0</tt>.</p>
+
<p class="sidebar"><b>Tip for distribution maintainers:</b> If you maintain an <tt>EFI/<tt class="variable">distname</tt></tt> directory for your kernels, you can place your version of rEFInd in a directory called <tt>EFI/<tt class="variable">distname</tt>/refind</tt>. This will avoid collisions with duplicate rEFInd installations from other distributions.</p>
<p>On the whole, this method of configuration has a lot going for it. For distribution maintainers, if you place your Linux kernel files (with EFI stub support) on the ESP, with suitable filenames, matching initial RAM disk files, and a <tt>refind_linux.conf</tt> file, then any rEFInd 0.2.3 or later installation should detect your files, even if the user installs another distribution with another rEFInd that takes over from yours. (If the user, or this other rEFInd installation, disables auto-detection, this won't work.)</p>
}
} // static VOID ()
-inline UINTN ComputeRow0PosY(VOID) {
+UINTN ComputeRow0PosY(VOID) {
return ((UGAHeight / 2) - TileSizes[0] / 2);
} // UINTN ComputeRow0PosY()
VOID AddMenuInfoLine(IN REFIT_MENU_SCREEN *Screen, IN CHAR16 *InfoLine);
VOID AddMenuEntry(IN REFIT_MENU_SCREEN *Screen, IN REFIT_MENU_ENTRY *Entry);
-inline UINTN ComputeRow0PosY(VOID);
+UINTN ComputeRow0PosY(VOID);
VOID MainMenuStyle(IN REFIT_MENU_SCREEN *Screen, IN SCROLL_STATE *State, IN UINTN Function, IN CHAR16 *ParamText);
UINTN RunMenu(IN REFIT_MENU_SCREEN *Screen, OUT REFIT_MENU_ENTRY **ChosenEntry);
UINTN RunMainMenu(IN REFIT_MENU_SCREEN *Screen, IN CHAR16** DefaultSelection, OUT REFIT_MENU_ENTRY **ChosenEntry);