Implemented QueryPerformanceCounter() and QueryPerformanceFrequency().
authorEric Kohl <eric.kohl@reactos.org>
Sun, 2 Feb 2003 16:57:49 +0000 (16:57 +0000)
committerEric Kohl <eric.kohl@reactos.org>
Sun, 2 Feb 2003 16:57:49 +0000 (16:57 +0000)
svn path=/trunk/; revision=4101

reactos/lib/kernel32/makefile
reactos/lib/kernel32/misc/perfcnt.c [new file with mode: 0644]
reactos/lib/kernel32/misc/stubs.c

index 1e196b9..ddbae75 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: makefile,v 1.58 2003/01/15 21:24:33 chorns Exp $
+# $Id: makefile,v 1.59 2003/02/02 16:57:49 ekohl Exp $
 
 PATH_TO_TOP = ../..
 
@@ -41,7 +41,8 @@ MISC_OBJECTS = misc/error.o misc/atom.o misc/handle.o misc/env.o \
               misc/console.o misc/time.o misc/toolhelp.o \
               misc/stubs.o misc/ldr.o misc/res.o \
               misc/debug.o misc/sysinfo.o misc/profile.o \
-              misc/mbchars.o misc/muldiv.o misc/getname.o
+              misc/mbchars.o misc/muldiv.o misc/getname.o \
+              misc/perfcnt.o
 
 FILE_OBJECTS = file/file.o file/curdir.o file/lfile.o file/dir.o \
                file/iocompl.o file/volume.o file/deviceio.o file/dosdev.o \
diff --git a/reactos/lib/kernel32/misc/perfcnt.c b/reactos/lib/kernel32/misc/perfcnt.c
new file mode 100644 (file)
index 0000000..e2880d2
--- /dev/null
@@ -0,0 +1,84 @@
+/*
+ *  ReactOS kernel
+ *  Copyright (C) 2003 ReactOS Team
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+/* $Id: perfcnt.c,v 1.1 2003/02/02 16:57:30 ekohl Exp $ */
+/*
+ * PROJECT:         ReactOS system libraries
+ * FILE:            lib/kernel32/misc/perfcnt.c
+ * PURPOSE:         Performance counter
+ * PROGRAMMER:      Eric Kohl
+ */
+
+/* INCLUDES *****************************************************************/
+
+#include <k32.h>
+
+#define NDEBUG
+#include <kernel32/kernel32.h>
+
+
+/* FUNCTIONS ****************************************************************/
+
+WINBOOL STDCALL
+QueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount)
+{
+  LARGE_INTEGER Frequency;
+  NTSTATUS Status;
+
+  Status = NtQueryPerformanceCounter(lpPerformanceCount,
+                                    &Frequency);
+  if (!NT_SUCCESS(Status))
+  {
+    SetLastErrorByStatus(Status);
+    return(FALSE);
+  }
+
+  if (Frequency.QuadPart == 0ULL)
+  {
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    return(FALSE);
+  }
+
+  return(TRUE);
+}
+
+
+WINBOOL STDCALL
+QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency)
+{
+  LARGE_INTEGER Count;
+  NTSTATUS Status;
+
+  Status = NtQueryPerformanceCounter(&Count,
+                                    lpFrequency);
+  if (!NT_SUCCESS(Status))
+  {
+    SetLastErrorByStatus(Status);
+    return(FALSE);
+  }
+
+  if (lpFrequency->QuadPart == 0ULL)
+  {
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    return(FALSE);
+  }
+
+  return(TRUE);
+}
+
+/* EOF */
index 6aa1a2d..6a7f88b 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: stubs.c,v 1.44 2003/01/22 02:23:48 ekohl Exp $
+/* $Id: stubs.c,v 1.45 2003/02/02 16:57:30 ekohl Exp $
  *
  * KERNEL32.DLL stubs (unimplemented functions)
  * Remove from this file, if you implement them.
@@ -765,28 +765,6 @@ LoadModule (
 }
 
 
-WINBOOL
-STDCALL
-QueryPerformanceCounter (
-    LARGE_INTEGER   * lpPerformanceCount
-    )
-{
-    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-    return FALSE;
-}
-
-
-WINBOOL
-STDCALL
-QueryPerformanceFrequency (
-    LARGE_INTEGER   * lpFrequency
-    )
-{
-    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-    return FALSE;
-}
-
-
 WINBOOL
 STDCALL
 RegisterConsoleVDM (