Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Membre du Club
    probleme segmentation memoire et telechargement http (cpcdos os2.1 bêta 1.0)
    salutations et bravo pour cette nouvelle mise a jour tout le travail que vous avez fait au niveau du cpu,bios ,memoire reseau est impressionnant comparé a la version de fevrier 2015!!! meme si il est encore la j'ai moins l'impression d avoir freedos comme noyau principal voir plus du tout!
    j'ai un projet d'un serveur tcp qui traite des informations de meteo

    seulement jai un probleme dans le sdk de cpcdos, j'essaie de telecharger un fichier html en c++ depuis une fonction du noyau, comme j'ai besoin que uns de mes thread detecte la presence du fichier j ai utilise la fonction end_critical_section(). et j'ai une erreur a propos de la fonction bebin_critical_section() alors que je n'utilise pas.. voila lerreur :

    d'ailleurs vous avez oublié un " avant le mot debug.log

    comment faire ? et pourquoi mon thread ne fonctionne pas si j'utilise pas cette fonction end_critical_section() ??


    merci! et desole pour mon orthographe vraiment.. je suis dyslexique
    louis

  2. #2
    Membre chevronné
    Salut ! Et merci

    Comme je l'ai mentionné dans les Releases, et aussi dans la publication "Info : La préemption est "désactivée" sur les modules externes. Sous-entendu que les .exe, .bc, et routines C++ sont exécutés en mode "Section critique" pour combler temporairement les crashs liés à une mauvaise gestion de la mémoire virtuelle de Cpcdos et sauvegardes/restaurations des contextes des tâches"
    la préemption est "désactivée", ce qui sous entend que les modules externes (.EXE, .BC, Et modules du SDK) sont exécutes dans une section critique pour des raisons d'instabilité. comme c'est le cas pour toi, c'est pas top je l'admet.
    Ton thread n'est donc pas exécuté

    Tu as utilisé la fontion end_critical_section() pour en gros "réactiver la préemption" et c'est justement ce qui ne faut pas faire, c'est voulu ! On re-travaille(ra) dessus, quand t-on attaquera le support APIC.
    Pour combler ton problème de thread, je te conseille d'utiliser la fonction du noyau "doevent()" ou "sleep_ms()" ce qui va forcer le sheduler à exécuter d'autres tâches, "en mode coopérative" ceci fonctionne miraculeusement !
    Mais attention que ton thread ne se bloque pas car ton module C++ attend que ton thread se reboucle et il redonne la main à ton programme C++.

    Confirme moi si ça marche dans ton code C++!

    Bien à toi,
    Sébastien FAVIER
    co-kernel Cpcdos OSx un noyau 32bits simplifié et complet.. ou presque - Le fofo officiel c'est par ici.
    Les cours sur les systèmes c'est par là

  3. #3
    Membre du Club
    bonsoir et Merci pour ta reponce !!

    j'ai enlever le end_critical_section() puis jai effectivement utiliser sleep_ms() et ça fonctionne merci beaucoup !!!
    je peux continuer mon projet bonne soiré

    louis

###raw>template_hook.ano_emploi###