Caster un int en pointeur
Salutations !
Je code depuis quelques jours une implémentation de plusieurs API pour un nouvel OS.
Deux fonctions de ces API servent à échanger des identifiants de tâches et, pour des raisons historiques certainement, les identifants de tâches sont considérés comme étant des int32_t.
J'ai donc les deux fonctions suivantes à implémenter :
Code:
1 2
| int32_t getCurrentTaskID(void); // renvoie l'ID de la tache courante
wakeup(int32_t ID); // reveille la tache reperee par ID |
Pour les précédentes implémentations, les OS géraient les ID avec des int32_t (où le "historiques" ci-dessus) mais le nouvel ID utilise lui des TaskHandle qui correspondent à des pointeurs sur void :
Code:
typedef void * TaskHandle;
Etant sur une architecture 32 bits et supposant donc qu'un pointeur était stocké dans int32_t, j'ai tenté de renvoyer avec getCurrentTaskID() l'adresse de ma variable handle ; avec la fonction wakeup(), je caste l'int32_t en TaskHandle*, je récupère son contenu et je suis arrivé à quelque chose de fonctionnel.
En faisant cela, je me suis rappelé de ce qu'avait dit diogene ces jours-ci.
Question bête : comment faire mieux ? :oops:
Merci d'avance pour vos idées !