Bonjour amis développeurs C !

Je viens vous demander de l'aide ! Moi pauvre développeur Java qui n'a plus touché au C depuis 10 ans.. je suis perdu.
Alors pourquoi j'en ai besoin me demanderez vous... et bien pour faire du profiling Java. La JVM nous offre un interface via une librairie système pour observer certains événements.

Bref... j'ai besoin d'utiliser deux méthodes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
jvmtiError SetThreadLocalStorage(jvmtiEnv* env, jthread thread, const void* data)
jvmtiError GetThreadLocalStorage(jvmtiEnv* env, jthread thread, void** data_ptr)
Doc sur : http://java.sun.com/j2se/1.5.0/docs/...adLocalStorage

Et la c'est le drame.. avec les void ** je suis perdu.

Je pense avoir bien utilisé la première
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
jint start = 10;
err = (*jvmti)->SetThreadLocalStorage(jvmti, thread, &start);
Par contre impossible de récupérer la valeur de start avec la seconde
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
jint *startVal;
err = (*jvmti)->GetThreadLocalStorage(jvmti, thread, &startVal);
J'ai essayé toutes les combinaisons de & ou * possible sans succes...
Avec ce code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
printf("\n===== %d \n",startVal);
c'affiche l'adresse de la variable start du premier appel.

Merci pour vos conseils

Samuel