smp-Programmierung

Dieses Thema im Forum "C/C++" wurde erstellt von Blender3D, 18.05.2008.

  1. #1 Blender3D, 18.05.2008
    Blender3D

    Blender3D Vitamin C++

    Dabei seit:
    17.09.2007
    Beiträge:
    228
    Zustimmungen:
    0
    Ort:
    /root
    Tag, liebes Forum,

    Ich würde gerne in die SMP-Programmierung mit C oder besser C++ einsteigen und da wollte ich mal fragen, was es an Dokumentationen z.B. für die Kernelheaders, die dieses Thema behadeln, giebt. Andere Dokumentationen sind natürlich auch erwünscht.

    Für alle konstruktiven Antworten gibt es jetzt schon im Vorraus eine Dankeschön!!!

    Grüße, Blender3D
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. x0r

    x0r Bitschubser

    Dabei seit:
    20.12.2005
    Beiträge:
    169
    Zustimmungen:
    0
    Ort:
    Berlin
  4. #3 Blender3D, 20.05.2008
    Blender3D

    Blender3D Vitamin C++

    Dabei seit:
    17.09.2007
    Beiträge:
    228
    Zustimmungen:
    0
    Ort:
    /root
    Danke für die Links...

    OpenMP ist mir schon ein begriff... hab versucht es zu installieren, bin daran aber vorerste gescheitert.

    Ich hatte versucht mit smp_call_function_single(); aus der Datei smp.h vom Kernel, einen Thread zu starten, habe aber das Problem, dass ich meine Funktion nicht an dieFunktion übergeben kann, da immer die Fehlermeldung "invalid use of void expression" kommt.

    Der Sourcecode:
    Code:
    #include <iostream>
    #include <linux/smp.h>
    
    int thread;
    int info;
    
    void out(int t)
    {
    	std::cout << "Hallo, vom Thread" << t << std::endl;
    }
    
    int main()
    {
    	smp_setup_processor_id();
    
    	for(thread = 0; thread <= 7; thread++)
    	{
    		smp_call_function_single(thread, "\0", out(thread), 8, 8);
    	}
    
    	return 0;
    }
    
    
    
    Was mache ich falsch?

    Grüße, Blender3D
     
  5. #4 unita02, 20.05.2008
    unita02

    unita02 Grünschnabel

    Dabei seit:
    20.05.2008
    Beiträge:
    2
    Zustimmungen:
    0
    Deine Parameterübergabe ist falsch!

    So wie ich die def kenne:
    int smp_call_function_single(int cpuid, void (*func)(void *info), void *info, int nonatomic, int wait)

    mußt Du folgendes ändern:

    void out( :devil:void * pData )
    {
    // etwas mit pData anstellen
    }

    ....

    struct
    {
    ...
    } mydata;

    ...

    smp_call_function_single( aCPU_ID, :devil:out, :devil:(void*)mydata, 8, 8 );
     
  6. #5 Blender3D, 24.05.2008
    Blender3D

    Blender3D Vitamin C++

    Dabei seit:
    17.09.2007
    Beiträge:
    228
    Zustimmungen:
    0
    Ort:
    /root
    Danke für die Antworten... aber leider versperren mir sone bösen Smeilys den Blick auf den Sourcecode...

    Grüße, Blender3D
     
  7. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  8. #6 der_Kay, 24.05.2008
    Zuletzt bearbeitet: 24.05.2008
    der_Kay

    der_Kay Doppel-As

    Dabei seit:
    28.02.2006
    Beiträge:
    140
    Zustimmungen:
    0
  9. #7 Blender3D, 29.05.2008
    Blender3D

    Blender3D Vitamin C++

    Dabei seit:
    17.09.2007
    Beiträge:
    228
    Zustimmungen:
    0
    Ort:
    /root
    Ah.. ok, ja ich wollte jetzt keine Threading lib schreiben.

    Danke für die Antworten!!

    Grüße, Blender3D
     
Thema:

smp-Programmierung