Chameleon

Chameleon Commit Details

Date:2010-08-21 03:27:43 (13 years 7 months ago)
Author:Azimutz
Commit:400
Parents: 399
Message:Fixed some messages that printed to screen on normal boot (no verbose); changed printf to verbose. Typo hunting & comment edit.
Changes:
M/branches/azimutz/CleanCut/i386/boot2/options.c
M/branches/azimutz/CleanCut/i386/libsaio/pci_root.c
M/branches/azimutz/CleanCut/i386/libsaio/stringTable.c
M/branches/azimutz/CleanCut/i386/libsaio/acpi_patcher.c
M/branches/azimutz/CleanCut/TODO
M/branches/azimutz/CleanCut/i386/libsaio/ati.c

File differences

branches/azimutz/CleanCut/TODO
22
33
44
5
5
6
67
78
89
910
1011
11
12
1213
1314
1415
......
1718
1819
1920
20
21
2122
22
23
2324
2425
2526
26
27
2728
2829
2930
......
3132
3233
3334
34
35
3536
3637
3738
====================================
- Integrate Prasys current work on options and quick shortcut modified version of 18seven
- Add autodetection of efistring algorythm to enabke graphics enabler to beanbled by default while not conflicting whith other efi string overriden content
- Add auto detection of efistring algorithm to enable graphics enabler to be enabled by default while not
conflicting with other efi string overriden content
(original idea of Galaxy)
- 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 the pb smith had in
his first tries) and take it for the DSDT path as is.
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.
Whatever 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.
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 responsability of user
Once DropDSDT=y is set, no other acpi table than dsdt is loaded, then it is the responsibility of 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 creat e a set of functions to write
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
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();
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()
branches/azimutz/CleanCut/i386/libsaio/acpi_patcher.c
126126
127127
128128
129
129
130130
131131
132132
fd = open(dirSpecDSDT,0);
if (fd >= 0)
{
printf("ACPI file search cache hit: file found at %s\n", dirSpecDSDT);
verbose("ACPI file search cache hit: file found at %s\n", dirSpecDSDT);
goto success_fd;
}
}
branches/azimutz/CleanCut/i386/libsaio/pci_root.c
9090
9191
9292
93
93
9494
9595
9696
if (rootuid == 11) rootuid=0; //usually when _UID isnt present, it means uid is zero
else if (rootuid < 0 || rootuid > 9)
{
printf("PciRoot uid value wasnt found, using 0, if you want it to be 1, use -PciRootUID flag");
verbose("PciRoot uid value wasnt found, using 0, if you want it to be 1, use -PciRootUID flag");
rootuid = 0;
}
out:
branches/azimutz/CleanCut/i386/libsaio/ati.c
431431
432432
433433
434
434
435435
436436
437437
......
744744
745745
746746
747
747
748748
749749
750750
if (!device || !ati_dev) {
return 0;
}
printf("dumping pci config space, 256 bytes\n");
verbose("dumping pci config space, 256 bytes\n");
config_space = malloc(256);
for (i=0; i<=255; i++) {
config_space[i] = pci_config_read8( ati_dev->dev.addr, i);
}
if (bios[0] == 0x55 && bios[1] == 0xaa) {
printf("Found bios image\n");
verbose("Found bios image\n");
bios_size = bios[2] * 512;
struct pci_rom_pci_header_t *rom_pci_header;
branches/azimutz/CleanCut/i386/libsaio/stringTable.c
698698
699699
700700
701
701
702702
703703
704704
}
else
{
printf("No override config provided!\n");
verbose("No override config provided!\n");
ret = -1;
}
return ret;
branches/azimutz/CleanCut/i386/boot2/options.c
11761176
11771177
11781178
1179
1180
1179
1180
11811181
11821182
11831183
......
11871187
11881188
11891189
1190
1190
11911191
11921192
11931193
else
return -1;
// Needed to enable search for override Boot.plist on OS specific folders
// from loadOverrideConfig(). Find out which version mac os we're booting.
// Needed here to enable search for override Boot.plist on OS specific folders.
// Find out which Mac OS version we're booting.
if (!loadConfigFile("/System/Library/CoreServices/SystemVersion.plist", &systemVersion))
{
if (getValueForKey(kProductVersion, &value, &len, &systemVersion))
strncpy(gMacOSVersion, value, MIN(len, 4));
gMacOSVersion[MIN(len, 4)] = '\0';
}
} // doesn't print to screen here!
}
//Azi: implemented at loadOverrideConfig.
// Load config table specified by the user, or use the default.

Archive Download the corresponding diff file

Revision: 400