30

ce que tu peux faire, c'est peut-être faire cela selon un paramètre de la fonction de chargement...
et/ou interroger la librairie elle-même...
avatar
Maintenant j'ai la flemme de garder une signature à jour sur ce site. Je n'ai même plus ma chaîne Exec sous la main.

31

Explicite.

32

Eh bien:
* soit rajouter un paramètre à libbegin pour choisir si on charge la lib dans les BSS existantes ou dans une nouvelle indépendante des autres,

* soit
on laisse la lib "choisir" ce qui est le mieux pour elle.
La lib pourrait "choisir" soit avec un paramètre dans son header, soit avec une fonction callback (genre DllMain(DLL_PROCESS_ATTACH)) qui retourne l'option choisie... Si la fonction n'est pas présente, ben, le kernel utilise un des deux choix par défaut ou bien refuse de charger la lib "non compatible avec le chargement en cours d'exécution"...

Enfin, bien sur, je ne sais pas trop si c'est réalisable... L'avantage d'utiliser une fonction spéciale est qu'on n'a pas forcément besoin de changer le format de la lib...
Mais comment tester sa présence? Si je me souviens bien, les libs sur TI ne répertorient pas leurs fonction par nom (comme les DLL) mais par index... confus
Une plage d'index spéciaux?
avatar
Maintenant j'ai la flemme de garder une signature à jour sur ce site. Je n'ai même plus ma chaîne Exec sous la main.

33

Ok mettons que l'on fasse comme ca,et que la librarie C dise qu'elle veut uns instance de BSS pour chaque instance de la librarie.
Comment fait-on dans l'exemple choisi pour que ca marche ?

34

au pire, il suffit de passer un paramètre supplémentaire à chaque appel de la lib, qui est un pointeur vers ses données cheeky
en plus, ça imposerait d'avoir en ram plusieurs exemplaires de la lib sad
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

35

Hmm... C'est vrai qu'il n'y a pas de MMU sur TI, donc on ne peut pas rediriger les BSS aussi facilement, puisqu'elles sont faites avec des relocations...
Et encore, même sous Windows, je crois qu'il n'y a pas de BSS... En fait, ils ne disent pas ce qu'il se passe si on rappelle LoadLibrary alors que la DLL est déjà chargée par le thread courant. On peut supposer qu'ils incrémentent juste le compteur de références, puisque la librairie est déjà initialisée pour ce thread...

Edit: ben si, ils le disent, j'ai trouvé:
If the call to LoadLibrary or LoadLibraryEx specifies a DLL whose code is already mapped into the virtual address space of the calling process, the function simply returns a handle to the DLL and increments the DLL reference count.
The entry-point function is not called if the DLL was already loaded by the process through a call to LoadLibrary or LoadLibraryEx with no corresponding call to the FreeLibrary function.

En clair, si la DLL est déjà chargée, ils incrémentent juste le compteur de références.
Bien sur, rien n'oblige à faire comme eux, si on peut gérer les BSS séparées... Mais j'ai bien peur que pour cela, il faille effectivement dupliquer le code...
avatar
Maintenant j'ai la flemme de garder une signature à jour sur ce site. Je n'ai même plus ma chaîne Exec sous la main.

36

37

>Je pense que l'idéal serait en fait d'avoir une instance de la lib en RAM par programme appelant.

C'est la seule solution enviseageable. Je crois que unios faisait ca.

38

39

Sur les TI-68k, le multithread sux un peu, quand même...
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

40

41

edit:---HS
avatar

42

43

#38 était plus ou moins OT, en réponse à #35 "Ca permettrait le multithread sans souci, le SMC et les BSS multiples. smile". Et c'est vrai que #40 est bizarre...
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

44

exact! En relisant je me rend compte que je suis à coté de la plaque oubliez.
avatar

45

46

Plutôt "Off-Topic", mais tu as bien compris.
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

47

Stop, ou j'invoque mes droits admins.