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...
avatarMaintenant 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?
avatarMaintenant 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...
avatarMaintenant 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

PpHd :
Juste pour rire,tu fais quoi dans le cas ou un programme utilisant une libraire A qui utilise une librarie C, et une librairie B qui utilise aussi la librarie C.
Et si la librarie C a des BSS uniques a chaque instance, tu l'as dans le cul, non ?

Les solutions proposées me parraissent compliquées (fonction supplémentaire, ajout de paramètre à LibsBegin [PCT est sorti en utilisant ces fonctions, je ne sais pas si Benoit maintiendra la lib encore vu qu'elle est récente et qu'il a dû virer pas mal de hacks], CS utilise ces fonctions (?)[ok Flanker est encore là]).

Le SMC n'est pas envisageable actuellement dans une lib pour une utilisation multi-threadée (d'ailleurs mouselib en a, je vais devoir rétablir le code initial que j'ai heureusement gardé).
De plus, ne pouvant reloger la section BSS qu'une fois (ou alors j'ai pas capté un truc ??), on ne peut pas avoir des BSS à chaque instance en effet sad
Et (personnellement!) je suis pas très chaud pour un dialogue de la dll avec le kernel au niveau de l'attitude à adopter pour les BSS (à moins d'une simple modification de format au niveau du flag, j'ai pas regardé s'il restait de la place).

Je pense que l'idéal serait en fait d'avoir une instance de la lib en RAM par programme appelant.
Ca permettrait le multithread sans souci, le SMC et les BSS multiples. smile
avatarMon journal de bord <flux rss manuel> asTI68k : WIP </flux>

Le modernisme ne diffère guère de la libre pensée absolue que par sa prétention de demeurer catholique.

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

aypuka tongue
ok, si tu veux, je sors grin
avatarMon journal de bord <flux rss manuel> asTI68k : WIP </flux>

Le modernisme ne diffère guère de la libre pensée absolue que par sa prétention de demeurer catholique.

39

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

40

Et?
Sur TI-68k, un programme peut en appeler un autre. Ca suffit.
avatarMon journal de bord <flux rss manuel> asTI68k : WIP </flux>

Le modernisme ne diffère guère de la libre pensée absolue que par sa prétention de demeurer catholique.

41

edit:---HS
avatar

42

gombrend po le zenz de ta frace trifus
avatarMon journal de bord <flux rss manuel> asTI68k : WIP </flux>

Le modernisme ne diffère guère de la libre pensée absolue que par sa prétention de demeurer catholique.

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...
avatarMembre 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

Lionel-> ah ok. sinon, OT?? out of thread? nan c'est pas ça? grin
avatarMon journal de bord <flux rss manuel> asTI68k : WIP </flux>

Le modernisme ne diffère guère de la libre pensée absolue que par sa prétention de demeurer catholique.

46

Plutôt "Off-Topic", mais tu as bien compris.
avatarMembre 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.