TODO List for Chameleon Boot Loader␊ |
====================================␊ |
- Fix boot prompt parsing.␊ |
␊ |
- Bring code closer to coding_standards.txt.␊ |
␊ |
- Fix the module system when booting chameleon with multiboot. Cleanup the xcode 4 fix.␊ |
␊ |
- Integrate Prasys current work on options and quick shortcut modified version of 18seven␊ |
␊ |
- Add auto detection of efi string algorithm, so graphics enabler can be enabled by default while not␊ |
conflicting with other efi string overridden content␊ |
(original idea of Galaxy)␊ |
␊ |
- Case insensitive parsing for the bootConfig options:␊ |
should help the common/novice user to setup more easily.␊ |
␊ |
␊ |
====================================␊ |
␊ |
DONE␊ |
␊ |
- Create a dummy module for any modules that are compiled in. This is needed for linking modules with␊ |
dependencies that are not compiled in.␊ |
␊ |
- Add a more sophisticated acpi loading mechanism to enable loading custom acpi tables when dsdtdrop=y␊ |
Here's a specification to think about:␊ |
First we must care about if a forced DSDT full path has been specified␊ |
(was what pb smith had in his first tries) and take it for the DSDT path as is.␊ |
Then we have the case where no DSDT path was set where we run our usual DSDT search algorithm to␊ |
find this file.␊ |
In the latter case, the file has to be named DSDT.aml and be in one of the / /Extra or bt(0,0)/Extra␊ |
directory.␊ |
␊ |
Now a first idea to implement correctly the acpi tables loading would be:␊ |
␊ |
Whether the path was hardcoded in the DSDT option or was automatically found, we extract the path part␊ |
of the DSDT file that has been successfully found and we run a loop to enumerate all other acpi␊ |
files in the same directory.␊ |
Now for each acpi file found, we should compare the name with an existing acpi table found in␊ |
the system that we would normally load and replace this usual injection by the content of the file.␊ |
␊ |
Once DropDSDT=y is set, no other acpi table than dsdt is loaded, then it is the responsibility of the␊ |
user to provide any other acpi table.␊ |
␊ |
- Add a new module capable of writing proprietary Chameleon data to ioreg:␊ |
Using the DT__xxx() API, we will create a set of functions to write␊ |
to log info, chameleon boot info to be retrieved by helper applications...␊ |
the only public function for log info purpose of this module would be:␊ |
logMessageToIOREG(...); // var args printf style format␊ |
flushLogToIOREG(); // store a unique log info property to the ioreg␊ |
␊ |
The preferred internal behavior of the log info ioreg buffer␊ |
would be to store the messages in a consolidated buffer then only write once,␊ |
this buffer (i.e just before call the kernel) with flushLogToIOREG();␊ |
The other public function for writing chameleon boot info data would be:␊ |
␊ |
verbose() should incorporate a call to logMessageToIOREG() ␊ |
to permit helper applications to extract␊ |
this log info (i.e: the chameleon system pref pane)␊ |
␊ |
- Add API for displaying and logging messages like:␊ |
␊ |
void verbose(...)␊ |
{␊ |
...␊ |
logMessageToIOREG("%s: %sn", title, s);␊ |
␊ |
}␊ |
␊ |
void display_and_log( const char* title, const char* msg) ␊ |
{␊ |
printf("%s: %sn", title, s);␊ |
logMessageToIOREG(title,s);␊ |
}␊ |
␊ |
void deprecated(const char * s)␊ |
{␊ |
display_and_log("WARNING: Deprecated option",s); ␊ |
sleep(1); ␊ |
}␊ |
␊ |
void error_message(const char * s)␊ |
{␊ |
display_and_log("ERROR",s); ␊ |
getc();␊ |
}␊ |