[ros-diffs] [ion] 14697: damn fingers were too fast. sorry, reverting

ion at svn.reactos.com ion at svn.reactos.com
Tue Apr 19 08:26:02 CEST 2005


damn fingers were too fast. sorry, reverting
Modified: trunk/reactos/ntoskrnl/ps/idle.c
Modified: trunk/reactos/ntoskrnl/ps/psmgr.c
  _____  

Modified: trunk/reactos/ntoskrnl/ps/idle.c
--- trunk/reactos/ntoskrnl/ps/idle.c	2005-04-19 06:24:15 UTC (rev
14696)
+++ trunk/reactos/ntoskrnl/ps/idle.c	2005-04-19 06:26:01 UTC (rev
14697)
@@ -19,7 +19,7 @@

 extern PEPROCESS PsIdleProcess;
 
 /* FUNCTIONS
*****************************************************************/
-                                                               
+
 /** System idle thread procedure
  *
  */
@@ -45,82 +45,45 @@
      }
 }
 
-/* 
- * HACK-O-RAMA
- * Antique vestigial code left alive for the sole purpose of First/Idle
Thread
- * creation until I can merge my fix for properly creating them.
- */
-NTSTATUS
-PsInitializeIdleOrFirstThread(PEPROCESS Process,
-                              PETHREAD* ThreadPtr,
-                              PKSTART_ROUTINE StartRoutine,
-                              KPROCESSOR_MODE AccessMode,
-                              BOOLEAN First)
-{
-    PETHREAD Thread;
-    PVOID KernelStack;
-    extern unsigned int init_stack;
 
-    PAGED_CODE();
-
-    Thread = ExAllocatePool(NonPagedPool, sizeof(ETHREAD));
-
-    RtlZeroMemory(Thread, sizeof(ETHREAD));
-    Thread->ThreadsProcess = Process;
-
-    DPRINT("Thread = %x\n",Thread);
-
-    if (First) 
-    {
-        KernelStack = (PVOID)init_stack;
-    }
-    else
-    {
-        KernelStack = MmCreateKernelStack(FALSE);
-    }
-    
-    KeInitializeThread(&Process->Pcb, 
-                       &Thread->Tcb, 
-                       PspSystemThreadStartup,
-                       StartRoutine,
-                       NULL,
-                       NULL,
-                       NULL,
-                       KernelStack);
-    Thread->Tcb.ApcQueueable = TRUE;
-    
-    InitializeListHead(&Thread->IrpList);
-
-    DPRINT("Thread->Cid.UniqueThread %d\n",Thread->Cid.UniqueThread);
-
-    *ThreadPtr = Thread;
-
-    return STATUS_SUCCESS;
-}
-
-/* 
- * HACK-O-RAMA
- * Antique vestigial code left alive for the sole purpose of First/Idle
Thread
- * creation until I can merge my fix for properly creating them.
- */
-VOID 
-INIT_FUNCTION
+/** Initialization of system idle thread
+ *
+ */ 
+VOID INIT_FUNCTION
 PsInitIdleThread(VOID)
 {
-    PETHREAD IdleThread;
-    KIRQL oldIrql;
+   NTSTATUS Status;
+   PETHREAD IdleThread;
+   KIRQL oldIrql;
 
-    PsInitializeIdleOrFirstThread(PsIdleProcess,
-                                  &IdleThread,
-                                  PsIdleThreadMain,
-                                  KernelMode,
-                                  FALSE);
+   Status = PsInitializeThread(PsIdleProcess,
+			       &IdleThread,
+			       NULL,
+			       KernelMode,
+			       FALSE);
+   if (!NT_SUCCESS(Status))
+     {
+        DPRINT1("Couldn't create idle system thread! Status: 0x%x\n",
Status);
+        KEBUGCHECK(0);
+        return;
+     }
+   
+   IdleThread->StartAddress = PsIdleThreadMain;
+   Status = KiArchInitThread(&IdleThread->Tcb, PsIdleThreadMain, NULL);
+   if (!NT_SUCCESS(Status))
+     {
+        DPRINT1("Couldn't initialize system idle thread! Status:
0x%x\n", Status);
+        ObDereferenceObject(IdleThread);
+        KEBUGCHECK(0);
+        return;
+     }
 
-    oldIrql = KeAcquireDispatcherDatabaseLock ();
-    KiUnblockThread(&IdleThread->Tcb, NULL, 0);
-    KeReleaseDispatcherDatabaseLock(oldIrql);
+   oldIrql = KeAcquireDispatcherDatabaseLock ();
+   KiUnblockThread(&IdleThread->Tcb, NULL, 0);
+   KeReleaseDispatcherDatabaseLock(oldIrql);
 
-    KeGetCurrentPrcb()->IdleThread = &IdleThread->Tcb;
-    KeSetPriorityThread(&IdleThread->Tcb, LOW_PRIORITY);
-    KeSetAffinityThread(&IdleThread->Tcb, 1 << 0);
+   KeGetCurrentPrcb()->IdleThread = &IdleThread->Tcb;
+   KeSetPriorityThread(&IdleThread->Tcb, LOW_PRIORITY);
+   KeSetAffinityThread(&IdleThread->Tcb, 1 << 0);
+
 }
  _____  

Modified: trunk/reactos/ntoskrnl/ps/psmgr.c
--- trunk/reactos/ntoskrnl/ps/psmgr.c	2005-04-19 06:24:15 UTC (rev
14696)
+++ trunk/reactos/ntoskrnl/ps/psmgr.c	2005-04-19 06:26:01 UTC (rev
14697)
@@ -103,7 +103,7 @@

 
    ObpCreateTypeObject(PsThreadType);
 
-   PsInitializeIdleOrFirstThread(PsInitialSystemProcess, &FirstThread,
NULL, KernelMode, TRUE);
+   PsInitializeThread(NULL, &FirstThread, NULL, KernelMode, TRUE);
    FirstThread->Tcb.State = Running;
    FirstThread->Tcb.FreezeCount = 0;
    FirstThread->Tcb.UserAffinity = (1 << 0);   /* Set the affinity of
the first thread to the boot processor */



More information about the Ros-diffs mailing list