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 :
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 int32_t getCurrentTaskID(void); // renvoie l'ID de la tache courante wakeup(int32_t ID); // reveille la tache reperee par ID
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part typedef void * TaskHandle;
En faisant cela, je me suis rappelé de ce qu'avait dit diogene ces jours-ci.
Question bête : comment faire mieux ?
Merci d'avance pour vos idées !
Partager