mirror of
https://github.com/Zeal-Operating-System/ZealOS.git
synced 2025-06-07 08:14:48 +00:00
Fix formatting in AHCI reporting, installer Upgrade question.
Rename Seth --> Executive.
This commit is contained in:
parent
2743cf6ace
commit
0cb2d21007
Binary file not shown.
@ -355,7 +355,7 @@ U0 MPMenDraw(CDC *dc2)
|
||||
dc->depth_buf = NULL;
|
||||
DCDel(dc);
|
||||
LBtr(&mp_not_done_flags, Gs->num);
|
||||
Seed; //Return Seth task to timer-based.
|
||||
Seed; //Return Executive task to timer-based.
|
||||
}
|
||||
|
||||
U0 MissilePos(I64 m, F64 é, I64 *_x, I64 *_y)
|
||||
|
@ -94,7 +94,7 @@ U0 LexWarn(CCompCtrl *cc, U8 *str=NULL)
|
||||
|
||||
U0 LexExcept(CCompCtrl *cc, U8 *str=NULL)
|
||||
{//Print error message, $LK,"LexPutPos",A="MN:LexPutPos"$() and throw exception.
|
||||
if (!Bt(&sys_run_level, RLf_ZEAL_SERVER))
|
||||
if (!Bt(&sys_run_level, RLf_SYSTEM_SERVER))
|
||||
{
|
||||
Raw(ON);
|
||||
"Note: Still in boot phase.\n";
|
||||
@ -106,7 +106,7 @@ U0 LexExcept(CCompCtrl *cc, U8 *str=NULL)
|
||||
LexPutPos(cc);
|
||||
cc->error_count++;
|
||||
FlushMessages;
|
||||
if (!Bt(&sys_run_level, RLf_ZEAL_SERVER))
|
||||
if (!Bt(&sys_run_level, RLf_SYSTEM_SERVER))
|
||||
Debug("Type \"Fix;\"");
|
||||
throw('Compiler');
|
||||
}
|
||||
|
@ -365,7 +365,7 @@ $ID,5$$$=-CTASK_NEG_OFFSET
|
||||
offset(CTask.addr)==0
|
||||
Spawn(): CAlloc()
|
||||
TaskDel(): Free()
|
||||
CSysFixedArea.Zeal
|
||||
CSysFixedArea.system
|
||||
Looks like task_flags,locked_flags cause problems with neg offset.
|
||||
$ID,-5$
|
||||
* Make a game, S.E.T.I., with radio telescope array. Put God on air.
|
||||
|
@ -1,4 +1,4 @@
|
||||
$TR-UL,"Zeal"$
|
||||
$TR-UL,"System"$
|
||||
$ID,2$$TR,"SysMessageFlags"$
|
||||
$ID,2$sys_message_flags[0]=0xFF;
|
||||
$ID,-2$$TR,"SysRegVer"$
|
||||
@ -64,7 +64,7 @@ progress3_tf=0.000;progress4_tf=113.560;
|
||||
$ID,-2$$TR,"TempleTetris"$
|
||||
$ID,2$I64 hiscore=0;
|
||||
$ID,-2$$ID,-2$$TR,"Once"$
|
||||
$ID,2$$TR,"Zeal"$
|
||||
$ID,2$$TR,"System"$
|
||||
$ID,2$$ID,-2$$TR,"User"$
|
||||
$ID,2$$ID,-2$$ID,-2$$TR,"DemoCompany"$
|
||||
$ID,2$$TR,"Game1"$
|
||||
|
@ -9,4 +9,4 @@ U0 OnceDemo()
|
||||
|
||||
OnceDemo;
|
||||
|
||||
//There are variants for zeal $LK,"ZOnce",A="MN:ZOnce"$().
|
||||
//There are variants for system_task $LK,"ZOnce",A="MN:ZOnce"$().
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*The ~/Registry.CC file is CosmiC code.
|
||||
You can execute a tree branch of it. The Zeal
|
||||
You can execute a tree branch of it. The System
|
||||
branch is executed in the System task boot phase.
|
||||
Normally, you will place var declarations
|
||||
in the branch you make, but since an arthmetic expression
|
||||
|
@ -1,4 +1,10 @@
|
||||
$WW,1$$FG,5$$TX+CX,"ChangeLog"$$FG$
|
||||
$IV,1$----07/01/21 23:51:14----$IV,0$
|
||||
* Raised version number to 0.02.
|
||||
* Added support for reading TempleOS, ZenithOS, and ZealOS ISOs.
|
||||
* Renames:
|
||||
- Seth --> Executive
|
||||
|
||||
$IV,1$----07/01/21 19:04:09----$IV,0$
|
||||
$BK,1$* Forked ZealOS from ZenithOS. Version number 2.01 --> 0.01.$BK,0$
|
||||
* Update Roadmap.
|
||||
|
@ -15,7 +15,7 @@ $ID,2$3D $LK,"Sprites",A="FI:::/Doc/Sprite.DD"$ are stored as a mesh of triangle
|
||||
$ID,-2$$TR,"If the compiler is JIT, isn't it an interpretor?"$
|
||||
$ID,2$ZealOS compiles, doesn't $FG,2$interpret$FG$, and uses no $FG,2$byte code$FG$ anywhere. I loosely use the word $FG,2$script$FG$ sometimes, but it's actually compiled. The compiler's $LK,"optimization",A="MN:OptPass012"$ code is actually where the compiler evaluates constants to simplify them, like every optimizing compiler.
|
||||
$ID,-2$$TR,"Are you a Creationist?"$
|
||||
$ID,2$I am an evolutionist. $FG,2$Zeal$FG$ is a better term for the first father of all tasks than $FG,2$root$FG$ was!
|
||||
$ID,2$I am an evolutionist. $FG,2$System$FG$ is a better term for the first father of all tasks than $FG,2$root$FG$ was!
|
||||
$ID,-2$$TR,"Is 'Bt()' in the code Bit Torrent?"$
|
||||
$ID,2$$LK,"Bt",A="MN:Bt"$() is $FG,2$bit test$FG$, like the $FG,2$x86$FG$ inst, not $FG,2$bit torrent$FG$.
|
||||
$ID,-2$$TR,"Is 'Fs->' in the code file system?"$
|
||||
@ -45,7 +45,7 @@ $ID,2$The editor periodically takes a snap-shot of the document for $FG,2$UNDO$F
|
||||
$ID,-2$$TR,"Why is it in text mode?"$
|
||||
$ID,2$ZealOS runs in $FG,2$High-res 32-bit color VBE$FG$ graphics modes, not text mode. It changes to this mode with a $LK,"BIOS call",A="FF:::/Kernel/KStart16.CC,INT:9"$ while in real-mode before it switches to 64-bit mode. The text is $LK,"drawn by hand",A="MN:GrUpdateTextFG"$. See $LK,"::/Kernel/FontStd.CC"$.
|
||||
$ID,-2$$TR,"Where is the kernel memory?"$
|
||||
$ID,2$ZealOS identity-maps all memory, all the time. It is like paging is not used. There is no special kernel $FG,2$high half$FG$ memory space. ZealOS is ring-0-only, so everything is kernel, even user programs. There is a special task called $FG,2$Zeal$FG$ and he doesn't die, so his heap never gets freed. That's as close to $FG,2$kernel memory$FG$ as it gets. All code goes in the lowest 2Gig of addresses, known as the $LK,"Code Heap",A="FF:::/Doc/Glossary.DD,Code and Data Heaps"$, so that the $FG,2$REL32$FG$ addressing mode can be used. See $LK,"MemoryOverview",A="FI:::/Doc/MemoryOverview.DD"$.
|
||||
$ID,2$ZealOS identity-maps all memory, all the time. It is like paging is not used. There is no special kernel $FG,2$high half$FG$ memory space. ZealOS is ring-0-only, so everything is kernel, even user programs. There is a special task called $FG,2$System$FG$ and he doesn't die, so his heap never gets freed. That's as close to $FG,2$kernel memory$FG$ as it gets. All code goes in the lowest 2Gig of addresses, known as the $LK,"Code Heap",A="FF:::/Doc/Glossary.DD,Code and Data Heaps"$, so that the $FG,2$REL32$FG$ addressing mode can be used. See $LK,"MemoryOverview",A="FI:::/Doc/MemoryOverview.DD"$.
|
||||
$ID,-2$$TR,"Why does it run code from stack addresses?"$
|
||||
$ID,2$ZealOS puts all code in the lowest 2Gig, known as the $LK,"Code Heap",A="FF:::/Doc/Glossary.DD,Code and Data Heaps"$, so that the $FG,2$REL32$FG$ addressing mode can be used. ZealOS is 64-bit, but $FG,2$2Gig$FG$ is enough for code. It actually puts global variables there, too, but you can turn that off with $LK,"OPTf_GLOBALS_ON_DATA_HEAP",A="MN:OPTf_GLOBALS_ON_DATA_HEAP"$. $LK,"MAlloc",A="MN:MAlloc"$() allocs higher memory.
|
||||
$ID,-2$$TR,"How does it SYSCALL?"$
|
||||
|
@ -148,8 +148,8 @@ $ID,2$There is no distinction between $FG,2$task$FG$, $FG,2$process$FG$ or $FG,2
|
||||
Since there is not friendly disk sharing and all tasks have the same address map, it might be accurate to call ZealOS, "multi-thread/single-process". You run a single application process on $FG,2$Core0$FG$ and it can create threads on the same core or others. If you run multiple processes, it should be safe, but one process will wait until another completely finishes a long disk access.
|
||||
$ID,-2$$TR,"System Task"$
|
||||
$ID,2$The System task is immortal. The system task is created at start-up and appears in the small window at the top beneath the user terminal windows. Since the System task is immortal, on its heap go all memory objects which you don't want destroyed by any single task's death. When created, the System task runs the file $LK,"::/StartOS.CC"$. When start-up is finished, the system task enters a server mode where it accepts requests from other tasks. The $LK,"Sys",A="MN:Sys"$("") routine will make the System task compile and run text src code. $FG,2$#include$FG$ statements can be sent to $LK,"Sys",A="MN:Sys"$(""), creating system-wide code and data which are immortal.
|
||||
$ID,-2$$TR,"Seth Tasks"$
|
||||
$ID,2$Each CPU core has an executive task called $FG,2$Seth$FG$ that is immortal. The System task on $FG,2$Core0$FG$ is also its $FG,2$Seth$FG$ task.
|
||||
$ID,-2$$TR,"Executive Tasks"$
|
||||
$ID,2$Each CPU core has an $FG,2$Executive$FG$ task that is immortal. The System task on $FG,2$Core0$FG$ is also its $FG,2$Executive$FG$ task.
|
||||
$ID,-2$$TR,"Code and Data Heaps"$
|
||||
$ID,2$ZealOS uses the asm $FG,2$CALL$FG$ inst, exclusively, and that inst is limited to calling routines $FG,2$+/-2Gig$FG$ from the current code location. To prevent out-of-range issues, I decided to separate code and data, placing all code within the lowest $FG,2$2Gig$FG$ of memory, addresses $FG,2$00000000$FG$-$FG,2$7FFFFFFF$FG$. The compiler and $LK,"Load",A="MN:Load"$()er alloc memory from the code heap to store code and global vars, unless the compiler option $LK,"OPTf_GLOBALS_ON_DATA_HEAP",A="MN:OPTf_GLOBALS_ON_DATA_HEAP"$ is used. When programs call $LK,"MAlloc",A="MN:MAlloc"$() is from the data heap, which in not limited in size, except by physical RAM memory. You can alloc from any heap in any task at any time on any core, even making $LK,"independent",A="MN:MemPagAlloc"$ heaps.
|
||||
$ID,-2$$TR,"Parent, Child and PopUp Tasks"$
|
||||
@ -266,6 +266,6 @@ $ID,-2$$TR,"Join"$
|
||||
$ID,2$When two parts of a program have a common low-level routine, that routine is often labeled SomethingJoin.
|
||||
$ID,-2$$TR,"user_data"$
|
||||
$ID,2$Many operating system structures have space set aside for you to store values. You are on your own managing these with multiple applications and libraries.
|
||||
$ID,-2$$TR,"Multicore Core0/CoreAP"$
|
||||
$ID,2$Core0, has the $LK,"System Task",A="FF:::/Doc/Glossary.DD,System Task"$$FG$, and it is the master. The $FG,2$application processors$FG$ have an executive $LK,"Seth Task",A="FF:::/Doc/Glossary.DD,Seth Tasks"$ and are the slave processors. Only $FG,2$Core0$FG$ tasks can have windows and can launch applications. Slave cores are used if the application explicitly $LK,"Spawn",A="MN:Spawn"$s() a task or $LK,"JobQueue",A="MN:JobQueue"$() a job on them.
|
||||
$ID,-2$$TR-C,"Multicore Core0/CoreAP"$
|
||||
$ID,2$Core0, has the $LK,"System Task",A="FF:::/Doc/Glossary.DD,System Task"$$FG$, and it is the master. The $FG,2$application processors$FG$ have an $LK,"Executive Task",A="FF:::/Doc/Glossary.DD,Executive Tasks"$ and are the slave processors. Only $FG,2$Core0$FG$ tasks can have windows and can launch applications. Slave cores are used if the application explicitly $LK,"Spawn",A="MN:Spawn"$s() a task or $LK,"JobQueue",A="MN:JobQueue"$() a job on them.
|
||||
$ID,-2$
|
||||
|
BIN
src/Doc/Job.DD
BIN
src/Doc/Job.DD
Binary file not shown.
@ -4,9 +4,9 @@ There are multicore safe locks for file access and heap allocations, however, so
|
||||
|
||||
Only tasks on $FG,2$Core0$FG$ can have windows, but other cores can help render them.
|
||||
|
||||
Each core has an executive $LK,"Seth Task",A="FF:::/Doc/Glossary.DD,Seth Tasks"$ which is the father of all tasks on that core. $LK,"System",A="FF:::/Doc/Glossary.DD,System Task"$ is the $LK,"Seth Task",A="FF:::/Doc/Glossary.DD,Seth Tasks"$ on $FG,2$Core0$FG$.
|
||||
Each core has an $LK,"Executive Task",A="FF:::/Doc/Glossary.DD,Executive Tasks"$ which is the father of all tasks on that core. $LK,"System",A="FF:::/Doc/Glossary.DD,System Task"$ is the $LK,"Executive Task",A="FF:::/Doc/Glossary.DD,Executive Tasks"$ on $FG,2$Core0$FG$.
|
||||
|
||||
You give a job to a $LK,"Seth Task",A="FF:::/Doc/Glossary.DD,Seth Tasks"$ with $LK,"JobQueue",A="MN:JobQueue"$() and get the result with $LK,"JobResGet",A="MN:JobResGet"$(). You spawn a task on any core with $LK,"Spawn",A="MN:Spawn"$().
|
||||
You give a job to an $LK,"Executive Task",A="FF:::/Doc/Glossary.DD,Executive Tasks"$ with $LK,"JobQueue",A="MN:JobQueue"$() and get the result with $LK,"JobResGet",A="MN:JobResGet"$(). You spawn a task on any core with $LK,"Spawn",A="MN:Spawn"$().
|
||||
|
||||
Note: You must use the $FG,2$LOCK$FG$ asm prefix when changing shared structures in a multicore environment. The $LK,"LBts",A="MN:LBts"$(), $LK,"LBtr",A="MN:LBtr"$() and $LK,"LBtc",A="MN:LBtc"$() insts have $FG,2$LOCK$FG$ prefixes. The compiler has a $FG,2$lock{}$FG$ feature but it doesn't work well. See $LK,"::/Demo/MultiCore/Lock.CC"$.
|
||||
|
||||
|
@ -6,9 +6,9 @@ $WW,1$$LK,"KMain",A="MN:KMain"$()
|
||||
includes $LK,"~/Once.CC"$
|
||||
calls $LK,"OnceExe",A="MN:OnceExe"$().
|
||||
|
||||
$LK,"ZOnce",A="MN:ZOnce"$() appends src code to $LK,"~/Registry.CC"$ $FG,2$Once/Zeal$FG$ tree, executed at next boot by $FG,2$System$FG$.
|
||||
$LK,"ZOnce",A="MN:ZOnce"$() appends src code to $LK,"~/Registry.CC"$ $FG,2$Once/System$FG$ tree, executed at next boot by $FG,2$System$FG$.
|
||||
|
||||
$LK,"Once",A="MN:Once"$() appends src code to $LK,"~/Registry.CC"$ $FG,2$Once/User$FG$ tree, executed at next boot by first $FG,2$User$FG$ term.
|
||||
|
||||
At boot, $LK,"OnceExe",A="MN:OnceExe"$(), executes $FG,2$Once/Zeal$FG$ tree, $LK,"ZOnceFlush",A="MN:ZOnceFlush"$()s it,
|
||||
At boot, $LK,"OnceExe",A="MN:OnceExe"$(), executes $FG,2$Once/System$FG$ tree, $LK,"ZOnceFlush",A="MN:ZOnceFlush"$()s it,
|
||||
executes $FG,2$Once/User$FG$ tree and $LK,"OnceFlush",A="MN:OnceFlush"$()s.
|
||||
|
@ -81,7 +81,7 @@ $LK,"ExePrint",A="MN:ExePrint"$(U8 *format, ...) compiles and execute a string.
|
||||
|
||||
$LK,"Once",A="MN:Once"$(U8 *format, ...) Writes User code to $LK,"Registry",A="FI:~/Registry.CC"$ to be executed next boot.
|
||||
|
||||
$LK,"ZOnce",A="MN:ZOnce"$(U8 *format, ...) Writes Zeal code to $LK,"Registry",A="FI:~/Registry.CC"$ to be executed next boot.
|
||||
$LK,"ZOnce",A="MN:ZOnce"$(U8 *format, ...) Writes System code to $LK,"Registry",A="FI:~/Registry.CC"$ to be executed next boot.
|
||||
|
||||
$LK,"InPrint",A="MN:InPrint"$(I64 mS, U8 *format, ...) $LK,"PutChars",A="MN:PutChars"$()s one at a time with a delay.
|
||||
|
||||
|
@ -31,6 +31,6 @@ public U0 Cls()
|
||||
}
|
||||
|
||||
public U0 ZCls()
|
||||
{//Clear zeal terminal.
|
||||
{//Clear System terminal.
|
||||
Sys("DocClear;\n");
|
||||
}
|
@ -715,6 +715,8 @@ U0 AHCIInit()
|
||||
CAHCIPort *port;
|
||||
I64 i, bdf = PCIClassFind(PCIC_STORAGE << 16 | PCISC_AHCI << 8 + 1, 0); //0x010601, last byte prog_if, AHCI version 1.0
|
||||
|
||||
"\n";
|
||||
|
||||
if (bdf == -1)
|
||||
{
|
||||
"AHCI: No AHCI controller found.\n";
|
||||
@ -754,16 +756,16 @@ U0 AHCIInit()
|
||||
if (Bt(&hba->ports_implemented, i))
|
||||
{//$BK,1$Make ports idle?$BK,0$
|
||||
port = &hba->ports[i];
|
||||
"AHCI: Port on %d, signature 0x%0X\n", i, port->signature;
|
||||
"AHCI: Port %2d signature 0x%08X ", i, port->signature;
|
||||
if (port->signature == AHCI_PxSIG_ATA || port->signature == AHCI_PxSIG_ATAPI)
|
||||
{
|
||||
if (port->signature == AHCI_PxSIG_ATAPI)
|
||||
{
|
||||
Bts(&port->command, AHCI_PxCMDf_ATAPI);
|
||||
" ATAPI drive\n";
|
||||
"ATAPI drive\n";
|
||||
}
|
||||
else
|
||||
" ATA drive\n";
|
||||
else if (port->signature == AHCI_PxSIG_ATA)
|
||||
"ATA drive\n";
|
||||
|
||||
if (!AHCIPortIsIdle(i))
|
||||
{
|
||||
@ -771,8 +773,11 @@ U0 AHCIInit()
|
||||
AHCIPortCmdStop(i);
|
||||
}
|
||||
}
|
||||
else
|
||||
"Unknown\n";
|
||||
}
|
||||
}
|
||||
"\n";
|
||||
}
|
||||
|
||||
Bool AHCIBootDVDProbeAll(CBlkDev *bd)
|
||||
@ -787,7 +792,7 @@ Bool AHCIBootDVDProbeAll(CBlkDev *bd)
|
||||
if (Bt(&blkdev.ahci_hba->ports_implemented, i))
|
||||
{
|
||||
port = &blkdev.ahci_hba->ports[i];
|
||||
"AHCI: BootDVDProbeAll: Saw port at %d with signature 0x%0X\n", i, port->signature;
|
||||
"AHCI: BootDVDProbeAll: Saw port at %2d with signature 0x%0X\n", i, port->signature;
|
||||
|
||||
if (port->signature == AHCI_PxSIG_ATAPI)
|
||||
{
|
||||
|
@ -34,7 +34,9 @@ Bool ISOInit(CDrive *drive, I64 blk)
|
||||
case ISOT_SUPPLEMENTARY_DESC:
|
||||
de = &iso->root_dir_record;
|
||||
drive->size = iso->vol_space_size.little * bd->blk_size >> BLK_SIZE_BITS;
|
||||
if (!StrCompare(iso->publisher_id, "ZealOS RedSea"))
|
||||
if (!StrCompare(iso->publisher_id, "ZealOS RedSea") ||
|
||||
!StrCompare(iso->publisher_id, "ZenithOS RedSea") ||
|
||||
!StrCompare(iso->publisher_id, "TempleOS RedSea"))
|
||||
{
|
||||
drive->fs_type = FSt_REDSEA;
|
||||
bd->drv_offset = drive->drv_offset = 19 << 2 + drv_offset;
|
||||
|
@ -79,7 +79,7 @@ CHash *FunSegFind(U8 *addr, I64 *_offset)
|
||||
for (i = 0; i < mp_count; i++)
|
||||
{
|
||||
c = &cpu_structs[i];
|
||||
task = c->seth_task;
|
||||
task = c->executive_task;
|
||||
do
|
||||
{
|
||||
if (!TaskValidate(task))
|
||||
@ -93,7 +93,7 @@ CHash *FunSegFind(U8 *addr, I64 *_offset)
|
||||
}
|
||||
task = task->next_task;
|
||||
}
|
||||
while (task != c->seth_task);
|
||||
while (task != c->executive_task);
|
||||
|
||||
fs_abort_task:
|
||||
}
|
||||
|
@ -13,7 +13,7 @@ CTask *sys_winmgr_task,
|
||||
U8 *rev_bits_table; //Table with U8 bits reversed
|
||||
CDate local_time_offset;
|
||||
F64 *pow10_I64,
|
||||
sys_os_version = 0.01;
|
||||
sys_os_version = 0.02;
|
||||
|
||||
CAutoCompleteDictGlobals acd;
|
||||
CAutoCompleteGlobals ac;
|
||||
|
@ -55,7 +55,7 @@ IRQ_TIMER:: //I_TIMER
|
||||
@@20: CALL &IntCore0TimerHandler //Only Core 0 calls this.
|
||||
@@25: XOR RAX, RAX
|
||||
CMP RSI, U64 GS:CCPU.idle_task[RAX]
|
||||
JE I32 RESTORE_SETH_TASK_IF_READY
|
||||
JE I32 RESTORE_EXECUTIVE_TASK_IF_READY
|
||||
JMP I32 RESTORE_RSI_TASK
|
||||
|
||||
//************************************
|
||||
|
@ -237,7 +237,7 @@ U0 KMain()
|
||||
Debug;
|
||||
}
|
||||
|
||||
LBts(&sys_run_level, RLf_ZEAL_SERVER);
|
||||
LBts(&sys_run_level, RLf_SYSTEM_SERVER);
|
||||
ServerTaskCont; //Never to return
|
||||
}
|
||||
|
||||
|
@ -17,14 +17,14 @@ USE64
|
||||
FXSAVE U64 [RAX]
|
||||
|
||||
//Init CPU0 Struct
|
||||
PUSH SYS_FIXED_AREA + CSysFixedArea.zeal
|
||||
PUSH SYS_FIXED_AREA + CSysFixedArea.system
|
||||
PUSH SYS_FIXED_AREA + CSysFixedArea.boot_cpu
|
||||
PUSH 0
|
||||
CALL &CPUStructInit
|
||||
CALL SET_GS_BASE
|
||||
|
||||
//Init System HeapCtrl
|
||||
MOV EDI, U32 SYS_FIXED_AREA + CSysFixedArea.zeal_hc
|
||||
MOV EDI, U32 SYS_FIXED_AREA + CSysFixedArea.system_hc
|
||||
MOV EAX, U32 SYS_FIXED_AREA + CSysFixedArea.sys_code_bp
|
||||
MOV U64 CHeapCtrl.bp[RDI],RAX
|
||||
MOV U32 CHeapCtrl.hc_signature[RDI], HEAP_CTRL_SIGNATURE_VAL
|
||||
@ -33,16 +33,16 @@ USE64
|
||||
MOV U64 CHeapCtrl.next_um[RDI], RAX
|
||||
MOV U64 CHeapCtrl.last_um[RDI], RAX
|
||||
|
||||
MOV EAX, U32 SYS_FIXED_AREA + CSysFixedArea.zeal
|
||||
MOV EAX, U32 SYS_FIXED_AREA + CSysFixedArea.system
|
||||
MOV U64 CHeapCtrl.mem_task[RDI], RAX
|
||||
MOV U64 CTask.code_heap[RAX], RDI
|
||||
MOV U64 CTask.data_heap[RAX], RDI
|
||||
MOV U32 CTask.task_signature[RAX], TASK_SIGNATURE_VAL
|
||||
|
||||
BTS U32 [SYS_RUN_LEVEL], RLf_16MEG_ZEAL_HEAP_CTRL
|
||||
BTS U32 [SYS_RUN_LEVEL], RLf_16MEG_SYSTEM_HEAP_CTRL
|
||||
|
||||
PUSH MEM_ZEAL_STACK
|
||||
PUSH U32 SYS_FIXED_AREA + CSysFixedArea.zeal
|
||||
PUSH MEM_SYSTEM_STACK
|
||||
PUSH U32 SYS_FIXED_AREA + CSysFixedArea.system
|
||||
CALL &TaskInit
|
||||
CALL SET_FS_BASE
|
||||
MOV RSP, U64 CTask.rsp[RAX]
|
||||
|
@ -69,7 +69,7 @@ Bool Kill(CTask *task, Bool wait=TRUE, Bool just_break=FALSE)
|
||||
if (task != sys_winmgr_task)
|
||||
{
|
||||
for (i = 0; i < mp_count; i++)
|
||||
if (task == cpu_structs[i].seth_task)
|
||||
if (task == cpu_structs[i].executive_task)
|
||||
return FALSE;
|
||||
LBts(&task->task_flags, TASKf_KILL_TASK);
|
||||
if (wait)
|
||||
@ -279,7 +279,7 @@ CTask *Spawn(U0 (*fp_start_addr)(U8 *data), U8 *data=NULL, U8 *task_name=NULL,
|
||||
if (!task_name)
|
||||
task_name = "Unnamed Task";
|
||||
if (!parent)
|
||||
parent = Gs->seth_task;
|
||||
parent = Gs->executive_task;
|
||||
task->parent_task = parent;
|
||||
task->gs = parent->gs;
|
||||
if (sys_code_bp)
|
||||
|
@ -577,7 +577,7 @@ class CKernel
|
||||
#define RLf_PATCHED 3
|
||||
#define RLf_16MEG_SYS_CODE_BP 4
|
||||
#define RLf_64BIT 5
|
||||
#define RLf_16MEG_ZEAL_HEAP_CTRL 6
|
||||
#define RLf_16MEG_SYSTEM_HEAP_CTRL 6
|
||||
#define RLf_FULL_HEAPS 7
|
||||
#define RLf_RAW 8
|
||||
#define RLf_INTERRUPTS 9
|
||||
@ -589,8 +589,8 @@ class CKernel
|
||||
#define RLf_REGISTRY 15
|
||||
#define RLf_HOME 16
|
||||
#define RLf_AUTOCOMPLETE 17
|
||||
#define RLf_ZEAL_SERVER 18
|
||||
#define RLf_ONCE_ZEAL 19
|
||||
#define RLf_SYSTEM_SERVER 18
|
||||
#define RLf_ONCE_SYSTEM 19
|
||||
#define RLf_ONCE_USER 20
|
||||
|
||||
#define RLF_16BIT (1 << RLf_16BIT)
|
||||
@ -599,7 +599,7 @@ class CKernel
|
||||
#define RLF_PATCHED (1 << RLf_PATCHED)
|
||||
#define RLF_16MEG_SYS_CODE_BP (1 << RLf_16MEG_SYS_CODE_BP)
|
||||
#define RLF_64BIT (1 << RLf_64BIT)
|
||||
#define RLF_16MEG_ZEAL_HEAP_CTRL (1 << RLf_16MEG_ZEAL_HEAP_CTRL)
|
||||
#define RLF_16MEG_SYSTEM_HEAP_CTRL (1 << RLf_16MEG_SYSTEM_HEAP_CTRL)
|
||||
#define RLF_FULL_HEAPS (1 << RLf_FULL_HEAPS)
|
||||
#define RLF_RAW (1 << RLf_RAW)
|
||||
#define RLF_INTERRUPTS (1 << RLf_INTERRUPTS)
|
||||
@ -611,8 +611,8 @@ class CKernel
|
||||
#define RLF_REGISTRY (1 << RLf_REGISTRY)
|
||||
#define RLF_HOME (1 << RLf_HOME)
|
||||
#define RLF_AUTOCOMPLETE (1 << RLf_AUTOCOMPLETE)
|
||||
#define RLF_ZEAL_SERVER (1 << RLf_ZEAL_SERVER)
|
||||
#define RLF_ONCE_ZEAL (1 << RLf_ONCE_ZEAL)
|
||||
#define RLF_SYSTEM_SERVER (1 << RLf_SYSTEM_SERVER)
|
||||
#define RLF_ONCE_SYSTEM (1 << RLf_ONCE_SYSTEM)
|
||||
#define RLF_ONCE_USER (1 << RLf_ONCE_USER)
|
||||
|
||||
#help_index "Processor"
|
||||
@ -3501,10 +3501,10 @@ class CMemRange
|
||||
//We add 2 pags, so a request is not rounded-up to next power of two.
|
||||
#define MEM_EXTRA_HASH2_PAGS 2
|
||||
|
||||
#define MEM_ZEAL_STACK (MEM_PAG_SIZE*512) //Like 16384*MEM_PAG_SIZE
|
||||
#define MEM_SETH_STACK (MEM_PAG_SIZE*512)
|
||||
#define MEM_INTERRUPT_STACK (MEM_PAG_SIZE*512)
|
||||
#define MEM_DEFAULT_STACK (MEM_PAG_SIZE*512)
|
||||
#define MEM_SYSTEM_STACK (MEM_PAG_SIZE * 512) //Like 16384*MEM_PAG_SIZE
|
||||
#define MEM_EXECUTIVE_STACK (MEM_PAG_SIZE * 512)
|
||||
#define MEM_INTERRUPT_STACK (MEM_PAG_SIZE * 512)
|
||||
#define MEM_DEFAULT_STACK (MEM_PAG_SIZE * 512)
|
||||
|
||||
#define TASK_HASH_TABLE_SIZE (1 << 10)
|
||||
|
||||
@ -4063,7 +4063,7 @@ public class CCPU //The Gs segment reg points to current CCPU.
|
||||
idle_pt_hits;
|
||||
F64 idle_factor;
|
||||
I64 total_jiffies;
|
||||
CTask *seth_task, *idle_task;
|
||||
CTask *executive_task, *idle_task;
|
||||
I64 tr, //task reg
|
||||
swap_counter;
|
||||
U0 (*profiler_timer_irq)(CTask *task);
|
||||
@ -4083,9 +4083,9 @@ public class CSysFixedArea
|
||||
{
|
||||
CFPU init_fpu_mmx;
|
||||
CCPU boot_cpu;
|
||||
CTask zeal;
|
||||
CTask system;
|
||||
CBlkPool sys_code_bp;
|
||||
CHeapCtrl zeal_hc;
|
||||
CHeapCtrl system_hc;
|
||||
$$ = ($$ + 0x1000 - 1) & -0x1000;
|
||||
};
|
||||
|
||||
|
@ -599,12 +599,12 @@ extern U0 MouseUpdate(I64 x, I64 y, I64 z, Bool l, Bool r);
|
||||
|
||||
#help_index "MultiCore"
|
||||
extern U0 Core0StartMP();
|
||||
extern U0 CoreAPSethTask();
|
||||
extern U0 CoreAPExecutiveTask();
|
||||
public extern U0 MPInt(U8 num, I64 cpu_num=1);
|
||||
public extern U0 MPIntAll(U8 num);
|
||||
public extern U0 MPNMInt();
|
||||
extern CTask *SpawnQueue(U0 (*fp_addr)(U8 *data), U8 *data=NULL, U8 *task_name=NULL, I64 target_cpu,
|
||||
CTask *parent=NULL, //NULL means zeal
|
||||
CTask *parent=NULL, //NULL means system_task
|
||||
I64 stack_size=0, I64 flags=1<<JOBf_ADD_TO_QUE);
|
||||
|
||||
#help_index "MultiCore;Boot"
|
||||
@ -691,7 +691,7 @@ public extern U0 WinDerivedValsUpdate( CTask *task);
|
||||
#help_index "Task;Job/Exe;Task/Job/Exe;MultiCore"
|
||||
public extern CTask *Spawn(U0 (*fp_addr)(U8 *data), U8 *data=NULL,
|
||||
U8 *task_name=NULL, I64 target_cpu=-1, //-1 means current CPU
|
||||
CTask *parent=NULL, //NULL means zeal
|
||||
CTask *parent=NULL, //NULL means system_task
|
||||
I64 stack_size=0, I64 flags=1<<JOBf_ADD_TO_QUE);
|
||||
|
||||
#help_index "Time/CPU Cycles;Time/Jiffies"
|
||||
|
@ -59,7 +59,7 @@ USE64
|
||||
FNINIT
|
||||
MOV RAX, RSI
|
||||
CALL SET_GS_BASE
|
||||
@@10: MOV RAX, U64 CCPU.seth_task[RSI]
|
||||
@@10: MOV RAX, U64 CCPU.executive_task[RSI]
|
||||
TEST RAX, RAX
|
||||
JZ @@10
|
||||
MOV U64 CTask.gs[RAX], RSI
|
||||
@ -114,20 +114,20 @@ CTSS *TSSNew(I64 cpu_num)
|
||||
return tss;
|
||||
}
|
||||
|
||||
CCPU *CPUStructInit(I64 num, CCPU *c, CTask *seth_task)
|
||||
{//Seth is null when called by system_task on CSysFixedArea.boot_cpu0
|
||||
CCPU *CPUStructInit(I64 num, CCPU *c, CTask *executive_task)
|
||||
{//Executive is null when called by system_task on CSysFixedArea.boot_cpu0
|
||||
MemSet(c, 0, sizeof(CCPU));
|
||||
c->addr = c;
|
||||
c->num = num;
|
||||
c->idle_factor = 0.01;
|
||||
QueueInit(&c->next_dying);
|
||||
if (Bt(&sys_run_level, RLf_16MEG_ZEAL_HEAP_CTRL))
|
||||
if (Bt(&sys_run_level, RLf_16MEG_SYSTEM_HEAP_CTRL))
|
||||
{
|
||||
c->idle_task = Spawn(0, NULL, "Idle Task",, Fs,, 0);
|
||||
LBts(&c->idle_task->task_flags, TASKf_IDLE);
|
||||
c->tss = TSSNew(num);
|
||||
}
|
||||
c->seth_task = seth_task;// It waits for this to be filled-in: $LK,"seth_task",A="FF:::/Kernel/MultiProc.CC,seth_task"$
|
||||
c->executive_task = executive_task;// It waits for this to be filled-in: $LK,"executive_task",A="FF:::/Kernel/MultiProc.CC,executive_task"$
|
||||
|
||||
return c;
|
||||
}
|
||||
@ -197,7 +197,7 @@ U0 MPAPICInit()
|
||||
|
||||
#assert !offset(CJobCtrl.next_waiting)
|
||||
|
||||
U0 CoreAPSethTask()
|
||||
U0 CoreAPExecutiveTask()
|
||||
{
|
||||
CJobCtrl *ctrl = &Fs->server_ctrl;
|
||||
|
||||
@ -223,12 +223,12 @@ U0 CoreAPSethTask()
|
||||
|
||||
CJob *JobQueue(I64 (*fp_addr)(U8 *data), U8 *data=NULL, I64 target_cpu=1, I64 flags=1<<JOBf_FREE_ON_COMPLETE,
|
||||
I64 job_code=JOBT_CALL, U8 *aux_str=NULL, I64 aux1=0, I64 aux2=0)
|
||||
{//Queue multicore jobs, handled by Seth tasks.
|
||||
{//Queue multicore jobs, handled by Executive tasks.
|
||||
//Set flags to zero if you wish to get the res.
|
||||
//See $LK,"::/Demo/MultiCore/Lock.CC"$
|
||||
CJobCtrl *ctrl;
|
||||
CJob *tmpc;
|
||||
CTask *seth;
|
||||
CTask *executive;
|
||||
|
||||
if (!(0 <= target_cpu < mp_count))
|
||||
throw('MultCore');
|
||||
@ -241,14 +241,14 @@ CJob *JobQueue(I64 (*fp_addr)(U8 *data), U8 *data=NULL, I64 target_cpu=1, I64 fl
|
||||
tmpc->flags = flags;
|
||||
tmpc->aux1 = aux1;
|
||||
tmpc->aux2 = aux2;
|
||||
seth = cpu_structs[target_cpu].seth_task;
|
||||
tmpc->ctrl = ctrl = &seth->server_ctrl;
|
||||
executive = cpu_structs[target_cpu].executive_task;
|
||||
tmpc->ctrl = ctrl = &executive->server_ctrl;
|
||||
|
||||
PUSHFD
|
||||
CLI
|
||||
while (LBts(&ctrl->flags, JOBCf_LOCKED))
|
||||
Yield;
|
||||
if (ctrl->next_waiting == ctrl && LBtr(&seth->task_flags, TASKf_AWAITING_MESSAGE))
|
||||
if (ctrl->next_waiting == ctrl && LBtr(&executive->task_flags, TASKf_AWAITING_MESSAGE))
|
||||
MPInt(I_WAKE, target_cpu);
|
||||
QueueInsert(tmpc, ctrl->last_waiting);
|
||||
LBtr(&ctrl->flags, JOBCf_LOCKED);
|
||||
@ -287,11 +287,11 @@ CTask *SpawnQueue(U0 (*fp_addr)(U8 *data), U8 *data=NULL, U8 *task_name=NULL,
|
||||
return res;
|
||||
}
|
||||
|
||||
U0 CoreAPSethInit()
|
||||
{//Called by multicore's seth dask after $LK,"Core0StartMP",A="MN:Core0StartMP"$()
|
||||
U0 CoreAPExecutiveInit()
|
||||
{//Called by multicore's executive task after $LK,"Core0StartMP",A="MN:Core0StartMP"$()
|
||||
//as the first thing a CPU does before waiting for jobs.
|
||||
MPAPICInit;
|
||||
Fs->rip = &CoreAPSethTask;
|
||||
Fs->rip = &CoreAPExecutiveTask;
|
||||
TaskContextRestore;
|
||||
}
|
||||
|
||||
@ -312,8 +312,8 @@ U0 Core0StartMP()
|
||||
for (i = 1; i < my_mp_count; i++)
|
||||
{
|
||||
c = &cpu_structs[i];
|
||||
JobQueueDel(&c->seth_task->server_ctrl.next_waiting);
|
||||
JobQueueDel(&c->seth_task->server_ctrl.next_done);
|
||||
JobQueueDel(&c->executive_task->server_ctrl.next_waiting);
|
||||
JobQueueDel(&c->executive_task->server_ctrl.next_done);
|
||||
}
|
||||
}
|
||||
MemSet(&cpu_structs[1], 0, sizeof(CCPU) * (MP_PROCESSORS_NUM - 1));
|
||||
@ -346,17 +346,17 @@ U0 Core0StartMP()
|
||||
|
||||
for (i = 1; i < my_mp_count; i++)
|
||||
{
|
||||
StrPrint(buf, "Seth Task CPU%02X", i);
|
||||
task = Spawn(&CoreAPSethInit, NULL, buf,,, MEM_SETH_STACK, 0);
|
||||
StrPrint(buf, "Executive Task CPU%02X", i);
|
||||
task = Spawn(&CoreAPExecutiveInit, NULL, buf,,, MEM_EXECUTIVE_STACK, 0);
|
||||
task->rflags = RFLAGG_START;
|
||||
//$LK,"CTask",A="MN:CTask"$ alloced off this core's seth_task's heap (Which is System task)
|
||||
//$LK,"CTask",A="MN:CTask"$ alloced off this core's executive_task's heap (Which is System task)
|
||||
CPUStructInit(i, &cpu_structs[i], task);
|
||||
WBINVD //Not sure why this is needed. Might just need delay.
|
||||
}
|
||||
|
||||
//Make sure they're all up-and-running
|
||||
for (i = 1; i < my_mp_count; i++)
|
||||
while (!Bt(&cpu_structs[i].seth_task->task_flags, TASKf_AWAITING_MESSAGE))
|
||||
while (!Bt(&cpu_structs[i].executive_task->task_flags, TASKf_AWAITING_MESSAGE))
|
||||
PAUSE;
|
||||
|
||||
POPFD
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*On each core, tasks are linked in a
|
||||
circular doubly-linked list queue with
|
||||
the Seth task as the head. On Core0,
|
||||
the Executive task as the head. On Core0,
|
||||
the queue order represents the front-to-back
|
||||
window stack order with the window mgr
|
||||
as the wallpaper.
|
||||
@ -30,9 +30,9 @@ The scheduler checks for a few keys:
|
||||
<CTRL-ALT-c> breaks execution of a program.
|
||||
|
||||
Each core has its own circular task queue.
|
||||
For AP processors, they have a "Seth" task
|
||||
For AP processors, they have an "Executive" task
|
||||
which stays in a loop waiting for jobs or
|
||||
requests to spawn tasks. See $LK,"CoreAPSethTask",A="MN:CoreAPSethTask"$().
|
||||
requests to spawn tasks. See $LK,"CoreAPExecutiveTask",A="MN:CoreAPExecutiveTask"$().
|
||||
$HL,1$*/
|
||||
|
||||
U0 TaskFocusNext()
|
||||
@ -195,8 +195,8 @@ RESTORE_RSI_TASK2:
|
||||
|
||||
@@25: MOV RSI, U64 CTask.next_task[RSI]
|
||||
XOR RAX, RAX
|
||||
CMP U64 GS:CCPU.seth_task[RAX], RSI
|
||||
JNE @@20 //Jmp if not Seth
|
||||
CMP U64 GS:CCPU.executive_task[RAX], RSI
|
||||
JNE @@20 //Jmp if not Executive
|
||||
BTR U32 GS:CCPU.cpu_flags[RAX], CPUf_RAN_A_TASK
|
||||
JC @@20 //Jmp if had chance for IRQ already
|
||||
MOV RAX, U64 GS:CCPU.idle_task[RAX]
|
||||
@ -208,9 +208,9 @@ RESTORE_RSI_TASK2:
|
||||
SYS_IDLE_PT::
|
||||
CLI
|
||||
|
||||
RESTORE_SETH_TASK_IF_READY:
|
||||
RESTORE_EXECUTIVE_TASK_IF_READY:
|
||||
XOR RAX, RAX
|
||||
MOV RSI, GS:CCPU.seth_task[RAX]
|
||||
MOV RSI, GS:CCPU.executive_task[RAX]
|
||||
JMP RESTORE_RSI_TASK
|
||||
|
||||
HANDLE_SYSF_KEY_EVENT:
|
||||
@ -227,7 +227,7 @@ HANDLE_SYSF_KEY_EVENT:
|
||||
JC I32 &Reboot
|
||||
|
||||
CMP U64 GS:CCPU.idle_task[RBX], RSI
|
||||
JE RESTORE_SETH_TASK_IF_READY
|
||||
JE RESTORE_EXECUTIVE_TASK_IF_READY
|
||||
|
||||
LOCK
|
||||
BTR U32 [RAX], CTRL_ALT_TAB
|
||||
@ -245,7 +245,7 @@ HANDLE_SYSF_KEY_EVENT:
|
||||
BREAK_FOCUS_USER:
|
||||
MOV RSI, U64 [SYS_FOCUS_TASK]
|
||||
TEST RSI, RSI
|
||||
JZ RESTORE_SETH_TASK_IF_READY
|
||||
JZ RESTORE_EXECUTIVE_TASK_IF_READY
|
||||
BT U64 CTask.win_inhibit[RSI], WIf_SELF_FOCUS
|
||||
JC I32 RESTORE_RSI_TASK
|
||||
LOCK
|
||||
@ -270,7 +270,7 @@ END_FOCUS_USER:
|
||||
MOV RSI, U64 [SYS_FOCUS_TASK]
|
||||
CALL &TaskFocusNext
|
||||
TEST RSI, RSI
|
||||
JZ I32 RESTORE_SETH_TASK_IF_READY
|
||||
JZ I32 RESTORE_EXECUTIVE_TASK_IF_READY
|
||||
MOV RAX, RSI
|
||||
CALL SET_FS_BASE
|
||||
BT U64 CTask.win_inhibit[RSI], WIf_SELF_FOCUS
|
||||
|
@ -3,8 +3,8 @@ U0 InstallDrive(U8 drv_let)
|
||||
U8 *st;
|
||||
|
||||
while (!DriveCheck(blkdev.let_to_drive[drv_let - 'A'], FALSE))
|
||||
Yield;
|
||||
Sleep(500);
|
||||
Sleep(1);
|
||||
Sleep(1000);
|
||||
|
||||
ExePrint("CopyTree(\"::/\",\"%C:/\");", drv_let);
|
||||
ExePrint("DirMake(\"%C:/Tmp\");", drv_let);
|
||||
@ -226,7 +226,8 @@ Bool DoInstall(Bool prompt_reboot)
|
||||
"Continue Install Wizard ";
|
||||
if (YorN)
|
||||
{
|
||||
"\n\nUpgrade an existing install, or create new Installation? (U/I): ";
|
||||
"\n\nUpgrade an existing install,"
|
||||
"\nor create new Installation? (U/I): ";
|
||||
do
|
||||
ch = ToUpper(CharGet(, FALSE));
|
||||
while (ch != 'U' && ch != 'I');
|
||||
|
@ -4472,7 +4472,7 @@
|
||||
1603 USB\Vid_04d9&Pid_160&Rev_0310 atm
|
||||
1129 Firmworks
|
||||
112A Hermes Electronics Co. Ltd.
|
||||
112C Zeal Data Systems
|
||||
112C Zenith Data Systems
|
||||
112D Ravicad
|
||||
8086 2200 pci simple controller
|
||||
112E Infomedia
|
||||
@ -7373,7 +7373,7 @@
|
||||
15F6 Extreme Packet Device Inc
|
||||
15F7 Banctec
|
||||
15F8 Koga Electronics Co
|
||||
15F9 Zeal Electronics Co
|
||||
15F9 Zenith Electronics Co
|
||||
15FA Axzam Corporation
|
||||
15FB Zilog Inc.
|
||||
15FC Techsan Electronics Co Ltd
|
||||
|
@ -91,7 +91,7 @@ U0 GrUpdateTasks()
|
||||
|
||||
for (i = 0; i < mp_count; i++)
|
||||
{ //Loop through all cores.
|
||||
task1 = task = cpu_structs[i].seth_task;
|
||||
task1 = task = cpu_structs[i].executive_task;
|
||||
do
|
||||
{
|
||||
if (!TaskValidate(task))
|
||||
|
@ -166,7 +166,7 @@ Bool MemRepTask(CTask *task,Bool override_validate=FALSE)
|
||||
{
|
||||
c = &cpu_structs[i];
|
||||
k += TSSSize(c->tss);
|
||||
task1 = c->seth_task;
|
||||
task1 = c->executive_task;
|
||||
do
|
||||
{
|
||||
if (task1 != sys_task) {//system task located in Kernel mem
|
||||
@ -178,7 +178,7 @@ Bool MemRepTask(CTask *task,Bool override_validate=FALSE)
|
||||
n += TaskQueueSize(task1);
|
||||
task1 = task1->next_task;
|
||||
}
|
||||
while (task1 != c->seth_task);
|
||||
while (task1 != c->executive_task);
|
||||
|
||||
task1 = c->idle_task;
|
||||
j += MSize2(task1);
|
||||
@ -244,14 +244,14 @@ public U0 MemRep()
|
||||
{
|
||||
c = &cpu_structs[i];
|
||||
"$$PURPLE$$CPU%d$$FG$$\n$$ID,2$$", i;
|
||||
task = c->seth_task;
|
||||
task = c->executive_task;
|
||||
do
|
||||
{
|
||||
if (!MemRepTask(task))
|
||||
break;
|
||||
task = task->next_task;
|
||||
}
|
||||
while (task != c->seth_task);
|
||||
while (task != c->executive_task);
|
||||
|
||||
MemRepTask(c->idle_task, TRUE);
|
||||
"$$ID,-2$$";
|
||||
|
@ -27,7 +27,7 @@ public U0 TaskRep()
|
||||
{
|
||||
c = &cpu_structs[i];
|
||||
"$$PURPLE$$CPU%02X$$FG$$\n", i;
|
||||
TaskRepTask(c->seth_task, 2);
|
||||
TaskRepTask(c->executive_task, 2);
|
||||
}
|
||||
POPFD
|
||||
}
|
||||
|
Binary file not shown.
@ -510,7 +510,7 @@ U0 WinMgrTask(I64)
|
||||
try
|
||||
{
|
||||
wmt_start:
|
||||
if (Bt(&sys_run_level, RLf_ZEAL_SERVER))
|
||||
if (Bt(&sys_run_level, RLf_SYSTEM_SERVER))
|
||||
TaskKillDying;
|
||||
WinMgrSleep;
|
||||
|
||||
|
@ -560,7 +560,7 @@ U0 FMCopy(CDoc *doc)
|
||||
}
|
||||
|
||||
#define FMR_INCLUDE 0
|
||||
#define FMR_ZEAL_INCLUDE 1
|
||||
#define FMR_SYSTEM_INCLUDE 1
|
||||
#define FMR_DELETE 2
|
||||
#define FMR_RENAME 3
|
||||
#define FMR_MKDIR 4
|
||||
@ -582,7 +582,7 @@ I64 PopUpFMRight(U8 *header=NULL, U8 *footer=NULL)
|
||||
DocPrint(doc, "%s",header);
|
||||
|
||||
DocPrint(doc, "$$CM+LX,1,1$$$$BT,\"INCLUDE \",LE=FMR_INCLUDE$$"
|
||||
"$$CM+LX,29,0$$$$BT,\"SYSTEM INCLUDE \",LE=FMR_ZEAL_INCLUDE$$"
|
||||
"$$CM+LX,29,0$$$$BT,\"SYSTEM INCLUDE \",LE=FMR_SYSTEM_INCLUDE$$"
|
||||
"$$CM+LX,1,3 $$$$BT,\"DELETE \",LE=FMR_DELETE$$"
|
||||
"$$CM+LX,29,0$$$$BT,\"RENAME \",LE=FMR_RENAME$$"
|
||||
"$$CM+LX,1,3 $$$$BT,\"MAKE DIRECTORY \",LE=FMR_MKDIR$$"
|
||||
@ -612,7 +612,7 @@ U0 FMRightClick()
|
||||
Message(MESSAGE_KEY_DOWN, 0, 0x3F0000003F);
|
||||
break;
|
||||
|
||||
case FMR_ZEAL_INCLUDE:
|
||||
case FMR_SYSTEM_INCLUDE:
|
||||
Message(MESSAGE_KEY_DOWN, 0, 0x23F0000023F);
|
||||
break;
|
||||
|
||||
|
@ -224,8 +224,6 @@ U8 Mount2(U8 boot_drive_let, CDoc *_doc, Bool _caller_is_prtdisk)
|
||||
case BDT_ATAPI:
|
||||
if (type == BDT_ATAPI && !*base0_buf && _doc)
|
||||
{
|
||||
// DocPrint(doc, "\"GetBaseUnit(bd);\n\";\n");
|
||||
// DocPrint(doc, "GetBaseUnit(bd);\n"); //Only $LK,"::/Kernel/KConfig.CC"$
|
||||
DocPrint(doc, "\"AHCIBootDVDProbeAll(bd);\n\";\n");
|
||||
DocPrint(doc, "AHCIBootDVDProbeAll(bd);\n"); //Only $LK,"::/Kernel/KConfig.CC"$
|
||||
|
||||
@ -241,8 +239,8 @@ U8 Mount2(U8 boot_drive_let, CDoc *_doc, Bool _caller_is_prtdisk)
|
||||
}
|
||||
break;
|
||||
}
|
||||
DocPrint(doc, "\"BlkDevAdd(bd, %d, %d, %d);\n\";\n", prt_num, whole_drive, make_free);
|
||||
DocPrint(doc, "BlkDevAdd(bd, %d, %d, %d);\n", prt_num, whole_drive, make_free);
|
||||
DocPrint(doc, "\"BlkDevAdd(bd, 0x%0X, %d, %d);\n\";\n", prt_num, whole_drive, make_free);
|
||||
DocPrint(doc, "BlkDevAdd(bd, 0x%0X, %d, %d);\n", prt_num, whole_drive, make_free);
|
||||
if (_doc) //Called by $LK,"::/Kernel/KConfig.CC"$
|
||||
count++;
|
||||
else
|
||||
|
@ -20,7 +20,7 @@ Bool RegCache()
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
public Bool RegDefault(U8 *path, U8 *val, Bool is_zeal_entry=FALSE)
|
||||
public Bool RegDefault(U8 *path, U8 *val, Bool is_system_entry=FALSE)
|
||||
{//Add code doc tree branch to registry.
|
||||
Bool res, unlock_doc;
|
||||
|
||||
@ -30,7 +30,7 @@ public Bool RegDefault(U8 *path, U8 *val, Bool is_zeal_entry=FALSE)
|
||||
{
|
||||
DocTreeMake(sys_registry_doc, path);
|
||||
DocPrint(sys_registry_doc, "%s", val);
|
||||
if (is_zeal_entry)
|
||||
if (is_system_entry)
|
||||
{
|
||||
if (Fs == sys_task)
|
||||
ExePrint("%s", val);
|
||||
@ -134,11 +134,11 @@ U0 RegInit()
|
||||
RegDefault("System/SysMessageFlags", "sys_message_flags[0]=0;\n", TRUE);
|
||||
StrPrint(buf, "registry_version=%4.3f;\n", sys_os_version);
|
||||
version_present = RegDefault("System/SysRegVer", buf, TRUE);
|
||||
RegExe("Zeal");
|
||||
RegExe("System");
|
||||
if (registry_version != sys_os_version)
|
||||
{
|
||||
RegWrite("System/SysRegVer", buf);
|
||||
RegExe("Zeal");
|
||||
RegExe("System");
|
||||
}
|
||||
}
|
||||
|
||||
@ -147,7 +147,7 @@ U0 RegInit()
|
||||
|
||||
public U0 ZOnceFlush()
|
||||
{//Flush ZOnce() buf.
|
||||
RegWrite("Once/Zeal", "");
|
||||
RegWrite("Once/System", "");
|
||||
}
|
||||
|
||||
public U0 OnceFlush()
|
||||
@ -156,12 +156,12 @@ public U0 OnceFlush()
|
||||
}
|
||||
|
||||
public U0 ZOnce(U8 *format, ...)
|
||||
{//Add Zeal code to $LK,"~/Registry.CC"$, executed next boot.
|
||||
{//Add System code to $LK,"~/Registry.CC"$, executed next boot.
|
||||
U8 *buf = StrPrintJoin(NULL, format, argc, argv);
|
||||
|
||||
if (!Bt(&sys_run_level, RLf_ONCE_ZEAL))
|
||||
if (!Bt(&sys_run_level, RLf_ONCE_SYSTEM))
|
||||
ZOnceFlush;
|
||||
RegAppend("Once/Zeal", "%s\n", buf);
|
||||
RegAppend("Once/System", "%s\n", buf);
|
||||
Free(buf);
|
||||
}
|
||||
|
||||
@ -176,15 +176,15 @@ public U0 Once(U8 *format, ...)
|
||||
}
|
||||
|
||||
public U0 ZOnceDrive(U8 drv_let=0, U8 *format, ...)
|
||||
{//Add Zeal code to drv $LK,"~/Registry.CC"$, executed next boot.
|
||||
{//Add System code to drv $LK,"~/Registry.CC"$, executed next boot.
|
||||
U8 *buf = StrPrintJoin(NULL, format, argc, argv);
|
||||
I64 old_drive_let = *sys_registry_doc->filename.name;
|
||||
|
||||
if (drv_let)
|
||||
*sys_registry_doc->filename.name = drv_let;
|
||||
if (!Bt(&sys_run_level, RLf_ONCE_ZEAL))
|
||||
if (!Bt(&sys_run_level, RLf_ONCE_SYSTEM))
|
||||
ZOnceFlush;
|
||||
RegAppend("Once/Zeal", "%s\n", buf);
|
||||
RegAppend("Once/System", "%s\n", buf);
|
||||
Free(buf);
|
||||
*sys_registry_doc->filename.name = old_drive_let;
|
||||
}
|
||||
@ -208,13 +208,13 @@ public U0 OnceExe()
|
||||
try
|
||||
{
|
||||
|
||||
RegDefault("Once/Zeal", "");
|
||||
if (RegCount("Once/Zeal") > 2)
|
||||
RegDefault("Once/System", "");
|
||||
if (RegCount("Once/System") > 2)
|
||||
{
|
||||
Sys("RegExe(\"Once/Zeal\");");
|
||||
Sys("RegExe(\"Once/System\");");
|
||||
ZOnceFlush;
|
||||
}
|
||||
LBts(&sys_run_level, RLf_ONCE_ZEAL);
|
||||
LBts(&sys_run_level, RLf_ONCE_SYSTEM);
|
||||
|
||||
RegDefault("Once/User", "");
|
||||
if (RegCount("Once/User") > 2)
|
||||
@ -228,7 +228,7 @@ public U0 OnceExe()
|
||||
catch
|
||||
{
|
||||
ZOnceFlush;
|
||||
LBts(&sys_run_level, RLf_ONCE_ZEAL);
|
||||
LBts(&sys_run_level, RLf_ONCE_SYSTEM);
|
||||
OnceFlush;
|
||||
LBts(&sys_run_level, RLf_ONCE_USER);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user