Chameleon

Chameleon Commit Details

Date:2010-08-21 05:29:30 (13 years 7 months ago)
Author:Azimutz
Commit:403
Parents: 402
Message:Same as rev 402.
Changes:
M/branches/azimutz/Chazileon/doc/BootHelp.txt
M/branches/azimutz/Chazileon/i386/libsaio/disk.c
M/branches/azimutz/Chazileon/i386/boot2/boot.h
M/branches/azimutz/Chazileon/i386/boot2/options.c

File differences

branches/azimutz/Chazileon/doc/BootHelp.txt
1818
1919
2020
21
21
22
2223
23
24
2425
2526
2627
kernel: kernel name (e.g. "mach_kernel" - must be in "/" )
flags: -v (verbose) -s (single user mode) -x (safe mode)
flags: -v (verbose) -s (single user mode)
-x (safe mode) -f (ignore caches)
-F (ignore "Kernel Flags" specified in boot configuration file)
32 (i386 arch) -legacy (no 64 bit apps - kernel flag)
32 (i386 arch) -legacy (no 64 bit apps - kernel flag)
64 (x86_64 arch)
"Graphics Mode"="WIDTHxHEIGHTxDEPTH" (e.g. "1024x768x32")
branches/azimutz/Chazileon/i386/libsaio/disk.c
14481448
14491449
14501450
1451
1452
1453
1454
1455
1456
1451
1452
1453
1454
1455
14571456
14581457
14591458
void rescanBIOSDevice(int biosdev)
{
struct DiskBVMap *oldMap = diskResetBootVolumes(biosdev);
CacheReset();
diskFreeMap(oldMap);
oldMap = NULL;
scanBootVolumes(biosdev, 0);
struct DiskBVMap *oldMap = diskResetBootVolumes(biosdev);
CacheReset();
diskFreeMap(oldMap);
oldMap = NULL;
scanBootVolumes(biosdev, 0);
}
struct DiskBVMap* diskResetBootVolumes(int biosdev)
branches/azimutz/Chazileon/i386/boot2/boot.h
177177
178178
179179
180
180181
181182
182183
//----------
#define kVerboseModeFlag"-v"// * options.c, getValFK
#define kSafeModeFlag"-x"// * options.c, getValueFBK (5) & getValFK
#define kIgnoreCachesFlag"-f"// * options.c, getValFK
#define kSingleUserModeFlag"-s"// * options.c, getValFK
#define kIgnoreBootFileFlag"-F"// * options.c, getValFBK
// Can't remember if i ever tried -F; had an idea.. make this point to kTestConfigKey,
branches/azimutz/Chazileon/i386/boot2/options.c
188188
189189
190190
191
191
192192
193193
194194
195195
196196
197
198
199
200
201
202
203
204
205
206
197207
198208
199209
......
440450
441451
442452
443
444
453
445454
446455
447456
448457
449458
450
451
459
452460
453461
454462
455463
456464
457
458
465
459466
460467
461468
......
695702
696703
697704
698
699
700
701
705
706
707
702708
703709
710
711
712
704713
705714
706715
......
730739
731740
732741
742
743
744
745
746
747
748
749
733750
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
751
752
753
757754
758
755
756
757
758
759
760
761
762
759763
760764
761765
......
14551459
14561460
14571461
1462
1463
1464
1465
14581466
14591467
14601468
{
gBootArgsPtr = gBootArgs;
memset(gBootArgs, '\0', BOOT_STRING_LEN);
if (bootArgs->Video.v_display == GRAPHICS_MODE) {
clearGraphicBootPrompt();
}
}
static void addBootArg(const char * argStr)
{
if ( (gBootArgsPtr + strlen(argStr) + 1) < gBootArgsEnd)
{
*gBootArgsPtr++ = ' ';
strcat(gBootArgs, argStr);
gBootArgsPtr += strlen(argStr);
}
}
//==========================================================================
static void showBootPrompt(int row, bool visible)
case BOOT_VERBOSE:
gVerboseMode = true;
gBootMode = kBootModeNormal;
*gBootArgsPtr++ = '-';
*gBootArgsPtr++ = 'v';
addBootArg(kVerboseModeFlag);
break;
case BOOT_IGNORECACHE:
gVerboseMode = false;
gBootMode = kBootModeNormal;
*gBootArgsPtr++ = '-';
*gBootArgsPtr++ = 'x';
addBootArg(kIgnoreCachesFlag);
break;
case BOOT_SINGLEUSER:
gVerboseMode = true;
gBootMode = kBootModeNormal;
*gBootArgsPtr++ = '-';
*gBootArgsPtr++ = 's';
addBootArg(kSingleUserModeFlag);
break;
}
}
// ensure we're in graphics mode if gui is setup
if (gui.initialised) {
if (bootArgs->Video.v_display == VGA_TEXT_MODE) {
setVideoMode(GRAPHICS_MODE, 0);
}
if (gui.initialised && bootArgs->Video.v_display == VGA_TEXT_MODE)
{
setVideoMode(GRAPHICS_MODE, 0);
}
// Clear command line boot arguments
clearBootArgs();
// Allow user to override default timeout.
if (multiboot_timeout_set) {
timeout = multiboot_timeout;
gBootMode |= kBootModeSafe; //Azi: Mek has this commented out.
}
// Checking user pressed keys
bool f8press = false, spress = false, vpress = false;
while (readKeyboardStatus()) {
key = bgetc ();
if (key == 0x4200) f8press = true;
if ((key & 0xff) == 's' || (key & 0xff) == 'S') spress = true;
if ((key & 0xff) == 'v' || (key & 0xff) == 'V') vpress = true;
}
// If user typed F8, abort quiet mode, and display the menu.
{
bool f8press = false, spress = false, vpress = false;
int key;
while (readKeyboardStatus()) {
key = bgetc ();
if (key == 0x4200) f8press = true;
if ((key & 0xff) == 's' || (key & 0xff) == 'S') spress = true;
if ((key & 0xff) == 'v' || (key & 0xff) == 'V') vpress = true;
}
if (f8press) {
gBootMode &= ~kBootModeQuiet;
timeout = 0;
}
if ((gBootMode & kBootModeQuiet) && firstRun && vpress && (gBootArgsPtr + 3 < gBootArgsEnd)) {
*(gBootArgsPtr++) = ' ';
*(gBootArgsPtr++) = '-';
*(gBootArgsPtr++) = 'v';
}
if ((gBootMode & kBootModeQuiet) && firstRun && spress && (gBootArgsPtr + 3 < gBootArgsEnd)) {
*(gBootArgsPtr++) = ' ';
*(gBootArgsPtr++) = '-';
*(gBootArgsPtr++) = 's';
}
if (f8press) {
gBootMode &= ~kBootModeQuiet;
timeout = 0;
}
clearBootArgs();
// If user typed 'v' or 'V', boot in verbose mode.
if ((gBootMode & kBootModeQuiet) && firstRun && vpress) {
addBootArg(kVerboseModeFlag);
}
// If user typed 's' or 'S', boot in single user mode.
if ((gBootMode & kBootModeQuiet) && firstRun && spress) {
addBootArg(kSingleUserModeFlag);
}
if (bootArgs->Video.v_display == VGA_TEXT_MODE) {
setCursorPosition(0, 0, 0);
gBootMode = ( getValueForKey( kSafeModeFlag, &val, &cnt, &bootInfo->bootConfig ) ) ?
kBootModeSafe : kBootModeNormal;
if ( getValueForKey( kIgnoreCachesFlag, &val, &cnt, &bootInfo->bootConfig ) ) {
gBootMode = kBootModeSafe;
}
}
if ( getValueForKey( kMKextCacheKey, &val, &cnt, &bootInfo->bootConfig ) )

Archive Download the corresponding diff file

Revision: 403