Delphi-PRAXiS
Seite 2 von 7     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   core2duotemp.c to core2duotemp.pas (https://www.delphipraxis.net/97137-core2duotemp-c-core2duotemp-pas.html)

Apollonius 7. Aug 2007 10:19

Re: core2duotemp.c to core2duotemp.pas
 
Wo genau liegen denn deine Probleme bei der Übersetzung. Ich vermute mal, dass du ein bisschen C kannst (Grundkenntnisse sind ja nicht schwierig), und ich habe jetzt ehrlich gesagt keine Lust, dass aus dem Stand zu übersetzen. Die cpu.h ist kein Standard, die bräuchte man zur Übersetzung auch.

hathor 7. Aug 2007 10:30

Re: core2duotemp.c to core2duotemp.pas
 
cpu.h ? - OK - here it is...
Delphi-Quellcode:

/*-
 * Copyright (c) 2006 Stanislav Sedov <stas@FreeBSD.org>
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 * $MBSDlabs: devcpu/cpu/cpu.h,v 1.4 2006/12/08 22:32:35 stas Exp $
 *
 */

#ifndef _CPU_H_
#define _CPU_H_

typedef struct {
   int      msr;   /* MSR to read */
   uint64_t   data;
} cpu_msr_args_t;

typedef struct {
   int      level; /* CPUID level */
   uint32_t   data[4];
} cpu_cpuid_args_t;

typedef struct {
   void   *data;
   size_t   size;
} cpu_update_args_t;

#define CPU_RDMSR   _IOWR('c', 1, cpu_msr_args_t)
#define CPU_WRMSR   _IOWR('c', 2, cpu_msr_args_t)
#define CPU_CPUID   _IOWR('c', 3, cpu_cpuid_args_t)
#define CPU_UPDATE   _IOWR('c', 4, cpu_update_args_t)

#define INTEL_VENDOR_ID   "GenuineIntel"
#define AMD_VENDOR_ID   "AuthenticAMD"

#define MSR_K8_UCODE_UPDATE 0xc0010020

#endif /* _CPU_H_ */

Gruber_Hans_12345 7. Aug 2007 10:33

Re: core2duotemp.c to core2duotemp.pas
 
dir ist schon klar, das solche sachen NUR auf Linux systemen funktioniert?

hathor 7. Aug 2007 10:42

Re: core2duotemp.c to core2duotemp.pas
 
Zitat:

Zitat von Gruber_Hans_12345
dir ist schon klar, das solche sachen NUR auf Linux systemen funktioniert?

Du willst doch hoffentlich mit dieser unsinnigen Behauptung nicht alle Interessenten abschrecken - oder?

Die AMD-K8-Temperatur(en) kann man doch auch mit DELPHI unter WINDOWS auslesen - was habt Ihr denn alle für eine Riesenangst, wenn Ihr den Pfad der WINDOWS-(Un)tugend verlasst?

Seit Jahren wird dies und das behauptet von Leuten, die KEINE Ahnung haben, aber überall ihren Senf dazugeben müssen!!!

Gruber_Hans_12345 7. Aug 2007 10:53

Re: core2duotemp.c to core2duotemp.pas
 
Zitat:

Zitat von hathor
Zitat:

Zitat von Gruber_Hans_12345
dir ist schon klar, das solche sachen NUR auf Linux systemen funktioniert?

Du willst doch hoffentlich mit dieser unsinnigen Behauptung nicht alle Interessenten abschrecken - oder?

Die AMD-K8-Temperatur(en) kann man doch auch mit DELPHI unter WINDOWS auslesen - was habt Ihr denn alle für eine Riesenangst, wenn Ihr den Pfad der WINDOWS-(Un)tugend verlasst?

Seit Jahren wird dies und das behauptet von Leuten, die KEINE Ahnung haben, aber überall ihren Senf dazugeben müssen!!!

also ich glaub eich habe soviel ahnung von linux und windows, das ich ruhigen gewissen behaupten kann, das der obige code (speziell das fd = open("/dev/cpu0", O_RDWR, 0);) unter Windows NICHT funktionieren kann, und dieses Stückchen code ist dafür da, um alle infos auszulesen.
und da das System von /dev/cpu0 unter Windows nicht implementiert ist, muß man da mit sicherheit ganz andere wege suchen (du kannst ja mal versuchen in der registry zu suchen)

aber fakt ist, das der weg den c source zu übersetzen mit sicherheit scheitert wird (auf windows systemen)

Muetze1 7. Aug 2007 11:29

Re: core2duotemp.c to core2duotemp.pas
 
Zitat:

Zitat von hathor
Seit Jahren wird dies und das behauptet von Leuten, die KEINE Ahnung haben, aber überall ihren Senf dazugeben müssen!!!

Dann beweise doch bitte mal dass du Ahnung hast lese mal bitte ein MSR Register "mit DELPHI unter WINDOWS" aus und zeig mal den Code.

Gut gebrüllt, Löwe... :wall:

Um es nochmals zu wiederholen: Linux bietet mit den symbolischen Gerätelinks einen direkten Weg Informationen aus dem Ring-0 (Kernel) zur Anwenderschicht (Ring-3) zu übermitteln. Diesen Weg hast du unter Windows nicht. Du hast somit das Problem keinen Aufruf in deiner Ring-3 Applikation zu machen um ein MSR Register auszulesen (RDMSR). Statt dessen haut dir Windows auf die Finger mit einer Exception über eine priviligierte Anweisung.

Probier es aus:
Delphi-Quellcode:
function TryIt; Assembler;
asm
  pushad
  mov eax, 1
  RDMSR
  popad
end;
/EDIT: Wobei ich mich gerade Frage, ob der interne Assembler die Instruction RDMSR über decodiert. Das muss wahrscheinlich mit define byte hardcodiert werden...

hathor 7. Aug 2007 11:47

Re: core2duotemp.c to core2duotemp.pas
 
Liste der Anhänge anzeigen (Anzahl: 1)
amd64coretemp

Bei Intel Prozessoren werden die Temperaturen aus dem MSR (Model Specific Register) und bei AMD Prozessoren aus einem Register in der NB ausgelesen.

Muetze1 7. Aug 2007 12:06

Re: core2duotemp.c to core2duotemp.pas
 
Zitat:

Zitat von hathor
Bei Intel Prozessoren werden die Temperaturen aus dem MSR (Model Specific Register) und bei AMD Prozessoren aus einem Register in der NB ausgelesen.

Löst wie angesprochen noch immer nicht das Problem bei den intel Core2Duo bzw. Intel CPUs mit Sensor. Schliesslich liegt genau dort das angesprochene Problem.

Mark90 7. Aug 2007 16:17

Re: core2duotemp.c to core2duotemp.pas
 
HI,

auf Codegear habe ich vorkurzem gesehen, dass man (ich schätzte mal sofern man c++ builder und delphi hat) auch c++ units oder komponenten in delphi oder anders rum verwenden kann. Ich hab den artikel nicht gelesen und kann daher auch nicht bestätigen ob dies geht!

wenn es gienge wäre es auf jedenfall eine teure angelegenheit!

Muetze1 7. Aug 2007 18:02

Re: core2duotemp.c to core2duotemp.pas
 
Zitat:

Zitat von Mark90
auf Codegear habe ich vorkurzem gesehen, dass man (ich schätzte mal sofern man c++ builder und delphi hat) auch c++ units oder komponenten in delphi oder anders rum verwenden kann. Ich hab den artikel nicht gelesen und kann daher auch nicht bestätigen ob dies geht!

wenn es gienge wäre es auf jedenfall eine teure angelegenheit!

Schön, nett aber überhaupt nicht neu. Damit programmiere ich täglich auf Arbeit: C++ Teile und Delphi Programmteile zusammen ein Programm. Und was bringt uns das nun in diesem Thread? Auch wenn das C++ Quellcode ist, das ist Schnuppe. Das ist nicht der Grund, warum man es nicht portieren kann, sondern weil der Code spezielle Geräte eines Linux Betriebssystems verwendet und somit nicht unter Windows lauffähig ist, da es diese Geräte dort nicht gibt. Es ist eine Sache des Betriebssystems, nicht der Sprache...


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:15 Uhr.
Seite 2 von 7     12 34     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz