David Marec a écrit 472 commentaires

  • [^] # Re: C sur Raspberry

    Posté par  (site web personnel) . En réponse à la dépêche Ordinateur à carte unique : Raspberry Pi 4 et consort. Évalué à 8.

    On peut aussi préciser que l'on peut manipuler les «pins» du rpi avec des commandes shell.

    En gros:

    echo 24 > /sys/class/gpio/export
    cd /sys/class/gpio/gpio24
    echo out > direction 
    cat value
    

    Pour les curieux, il existe (en C) de nombreuses interfaces dédiées des GPIO.
    - gpio-leds, gpio-keys, pinctrl -

  • [^] # Re: args

    Posté par  (site web personnel) . En réponse au message mettre de l'assembleur dans du C. Évalué à 2.

    Au temps pour moi, on est en syntaxe GNU (ou AT&T), où le sens est contraire de la syntaxe INTEL.
    Ceci dit, pour accéder au registre, il faut doubler le "%":

    En bref, vu que je n'ai pas trop compris ce voulais faire l'OP:

    __asm("movq %%rsi,%0" : "=r" (str));
    __asm("movq $7,%rdx \n\
    movq $1,%rdi \n\
    movq $1,%rax \n\
    syscall");

  • [^] # Re: args

    Posté par  (site web personnel) . En réponse au message mettre de l'assembleur dans du C. Évalué à 2.

    En plus movq c'est inter registres..

    Surtout, movq fonctionne comme toutes les fonctions de copie: le premier argument est la destination(cible).
    Là, j'ai l'impression que l'auteur veut faire l'inverse.
    En fait, je comprend pas trop ce qu'est sensé faire ce code.

  • [^] # Re: http / https

    Posté par  (site web personnel) . En réponse au journal Écrire des liens pérennes dans ses pages web. Évalué à 5.

    Après, quand on voit ton FUD sur HTTPS

    Quel FUD ? Rappelez nous donc la définition d'un FUD.

    et sérieux,

    Ouais, sérieux, où il est le FUD ?

    Ce n'est pas parce que c'est libre que ça ne peut pas être merdique :

    'vois pas le rapport avec la choucroute, de l'âge du capitaine ou de l'homme de paille.

    si un appli ne supporte pas HTTPS mais que HTTP en 2019, c'est une appli de merde

    Non.

    que de chouiner sur une évolution qui protègent la vie privée et en fit juste de la sécu de base

    HTTPS protège notre vie privée, sans déconner ? Il protège vos identifiants qui transite via le réseau contre les attaques Man-in-the-middle et vous assure que le site que vous consultez a obtenu un certificat pour son nom de domaine: point barre.

    FaceBook, GMail et autre «réseaux sociaux» ne sont accessibles qu'en HTTPS. Hummm, tu la sens la vie privée ?

    Nombre de clients des sites Web en HTTPS leur ont confiés leurs données privées, qui les ont revendu à des tiers conformément au CGU que personne n'a lu.

    mais ça a l'air de vous embêter que des gens s’intéressent à leur vie privée

    C'est ça, des gens qui confient à peu près tout à Google, Facebook ou kikoolol depuis leur Smartphone qui les géolocalise en permanence.
    Mais via des connexions chiffrées, donc tout va bien.

    Arrêtez avec vos FUD anti vie privée et anti-sécurité, ça gonfle.

    Faire croire que naviguer sur des sites qui se contentent de rendre du contenu public, voire statique, en HTTP, met en danger votre privée c'est du FUD. Faire croire que circuler exclusivement HTTPS vous protège est pire: c'est un mensonge. Pour ça, il faut faire beaucoup plus attention.

    Si on veut s'assurer que personne ne sache sur quel site on navigue et ce que l'on consulte, il faut au minimum passer dans un VPN, sans parler des fuite de requêtes DNS. Et avoir confiance dans le gestionnaire du bidule, comme dans les sites que l'on consulte.

  • [^] # Re: derniere chose

    Posté par  (site web personnel) . En réponse au message question sur la structure du code que fait le compilateur (.text, .bss, .heap ...). Évalué à 5.

    [ MMU] [Memory Pages]
    Pourrais-tu, pour ma culture, citer des archis pour lesquelles ce n'est pas le cas?

    En l'absence de MMU ( MIPS, Cortex-M ou Cortex-R par exemple), jouer de mémoire virtuelle devient compliqué, la plupart des OS «classiques» ne le permettent pas (notamment les *BSD).
    L'usage de linux sans MMU est loin d'être trivial, sans parler de la libc. Pour cela il faut regarder du coté de µClinux.

    Les noyaux «temps-réel» ou minimalistes ont une approche différente et vont privilégier les accès «directs», voire configurer la MMU en ce sens quand elle existe. D'autant que la pagination entraîne la fragmentation de la mémoire dans des système où cette ressource est rare.
    Ce qui n’empêche pas d'avoir parfois une MPU (Cortex R), pour protéger un minimum les accès.
    - Parce qu'ici, c'est la notion même de processus qui est virtuelle :) -

    Le terme est «flat».

    Oh, ça va, j'ai juste essayé d'utiliser un maximum de mots français… :)

    Ah ce sujet, si l'OP nous lit toujours, les adresses (virtuelles) de l'adressage d'un processus se trouvent dans:

    • /proc/[PID]/maps

    Et plein d'autres info dans /proc/[PID]/stat, /proc/[PID]/statm et leur synthèse /proc/[PID]/status.

  • [^] # Re: derniere chose

    Posté par  (site web personnel) . En réponse au message question sur la structure du code que fait le compilateur (.text, .bss, .heap ...). Évalué à 4.

    J'attendais de voir un peu les réponses, en espérant que quelqu'un aborde la notion de page…

    Ce n'étais pas le sujet, je pense, de connaître la gestion de mémoire d'un point de vue physique.

    les noyaux gèrent de nos jours la mémoire par pages.

    Cela dépend des architectures, mais majoritairement, oui.

    Ce que tu vois quand tu regardes les adresses mémoire de ton processus, ce sont de fausses adresses, au moins pour le tas.

    En fait, toutes sont virtuelles ou logiques.

    Le programmeur voit la mémoire comme linéaire grâce au noyau, et, je crois, de la MMU.

    Le terme est «flat». La MMU est responsable de plein d'autres choses, dont la pagination, mais c'est devenu d'une complexité redoutable de nos jours.


    Arf, j'ai essayé de demander "linux stack overflow" à Google ;)

  • [^] # Re: Hope this helps

    Posté par  (site web personnel) . En réponse au message question sur la structure du code que fait le compilateur (.text, .bss, .heap ...). Évalué à 2.

    Il te suffira d'appeler ton programme avec, en premier argument, une chaine composée d'un peu plus de 50 caractères (dépend des options de compil', de l'archi, etc…) pour avoir un beau stack overflow.

    C'est plus une corruption de pile due à un débordement de tampon (buffer overflow) qu'un débordement de pile (stack overflow), en fait.

    Un exemple plus classique, en abusant de la récursivité:

    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    #include <sys/resource.h>
    
    static size_t n;
    
    static int chienGeant(char*c)
    {
        char buf[1024];
        strncpy(buf,c,1024);
        printf("%zu:%s\n",++n,buf);
        return chienGeant(&buf[0]);
    }
    
    int main()
    {
        printf("coucou\n");
        struct rlimit l={8192,8192};
        if (setrlimit( RLIMIT_STACK,&l))
        {
            perror("unable to set limit");
        }
        chienGeant("un chient geant, c'est comme un chien mais en plus grand.");
    
        return 0;
    }

    Avec

    warning: all paths through this function will call itself [-Winfinite-recursion]

  • [^] # Re: derniere chose

    Posté par  (site web personnel) . En réponse au message question sur la structure du code que fait le compilateur (.text, .bss, .heap ...). Évalué à 4.

    Ce qu'il me pose probleme c'est que la mémoire est sensé etre contiguë pour le developpeur.

    Tout dépend de la mémoire dont on cause. Dans votre cas, il s'agit de l'adressage d'un processus (Process address space), il est virtuel et indépendant de celui des autres processus.

    La structure mm_struct vous donnent en donne les détails, vu du noyau.
    On y retrouve certaines des partitions ELF que vous mentionnez dans le sujet,

    • start_code
    • start_data
    • start_brk
    • start_stack
    • arg_start

    Le schémas que vous donnez est trop simple, par exemple il existera une pile allouée par thread, des segments (region) alloués selon les besoins ( VMA, bibliothèques, mapping divers ) …

    Or à un moment le tas va arriver vers la mémoire de la pile et il va y avoir un saut de 8Mo (taille de la pile) pour pouvoir recréer de la mémoire dans le tas

    Gardez à l'esprit que ce schéma est une représentation virtuelle de la mémoire vu d' un unique processus. Il ne correspond en rien ce qui se passe dans la mémoire physique et n'est pas partagé avec les autres processus. Il est plus probable que vous allez choper un Out of Memory avant que les deux pointeurs ne se rejoignent.

  • [^] # Re: Du côté des xBSD ?

    Posté par  (site web personnel) . En réponse au message UltraSPARC et virtualisation. Évalué à 3. Dernière modification le 30 juillet 2019 à 23:40.

    Effectivement, OpenBSD fonctionne bien, mais ni FreeBSD, ni NetBSD ne s'installent (en tout cas pas sur ce modèle en particulier).

    En effet, c'était écrit dessus, en fait.

    Il ne reste qu'à tester, en espérant que ça ne se limite pas aux CPU Intel et AMD,

    Malheureusement, après une lecture plus attentive des docs, il me semble que seuls ces archis sont prises en charge. A moins que le portage vers illumos n'ait changé quelque chose, il s'appuie fortement sur des fonctions de virtualisation Intel et AMD.

    Reste QEMU.

  • [^] # Re: Du côté des xBSD ?

    Posté par  (site web personnel) . En réponse au message UltraSPARC et virtualisation. Évalué à 5. Dernière modification le 30 juillet 2019 à 22:17.

    … y'a du FreeBSD et du NetBSD sur UltraSPARC…

    … Le plus réputé sur cette architecture étant OpenBSD.

    mais pas trouvé de virtualisation en tant que hôte sur cette plateforme (la virtu cible principalement les
    x86)

    Curieux, bhyve la solution hyperviseur de FreeBSD, devrait fonctionner, étant elle même portée sous illumos.

  • # encodage

    Posté par  (site web personnel) . En réponse au message Problème encodage et ls . Évalué à 2. Dernière modification le 30 juillet 2019 à 22:04.

    Il reste quand même quelque chose de perturbant.
    Contrairement à cat qui va cracher ses octets tel que dans le terminal, ls va parser le nom du fichier à afficher et vérifier s'il peut l'afficher.
    Pour cela il utilise les fonctions de type mbrtowc ou wcwidth qui dépendent de LC_CTYPE pour la conversion.
    S'il n'y arrive pas, comme dans votre cas, il devrait afficher des ? (question mark) à la place.

    Pas le truc bizarre qui, remâché par cat,peut sortir un caractère correct …

  • [^] # Re: sans noyau, pas de framebuffer...

    Posté par  (site web personnel) . En réponse au message server X et frame buffer.. Évalué à 4.

    Autrement dit comment je peux envoyer des data à ma carte vidéo avec mon propre noyau fait maison.

    Le moins «complexe» serait de s'assurer que l'on peut attaquer la carte vidéo via une interface VGA voire SVGA/VESA-VBE.
    L'adresse donnée pour afficher en mode «texte» étant justement celle du VGA, ça devrait coller.

    Pour résumer, il faut passer en mode «graphique» ( via INT 10 ) et coller ses pixels au bon offset à partir de 0x0000A000.

  • [^] # Re: je n'y connais pas grand chose en assembleur

    Posté par  (site web personnel) . En réponse au message question sur le processeur 8086 et les cycles d'horloge. Évalué à 3. Dernière modification le 29 juillet 2019 à 20:32.

    il me semblait que la soustraction d'un nombre binaire se faisait via le complément A2

    Oui, mais c'est l'ALU qui le fait, via un jeu de portes logiques. Il n'est pas question là, stricto sensu, de cycles d'horloge.

    D'après la page wikipedia 8086, cela prend trois cycles à l'ALU pour manipuler des registres.

    Justement j'aimerai savoir combien de cycle d'horloge dure un sub, mais je ne connais aucun moyen expérimental pour savoir le nombre de cycle d'horloge pour réaliser une opérande particuliere

    Le plus compliqué, ça va être de trouver une carte avec un 8086 en état de marche pour mesurer ça …

  • [^] # Re: Lit tes cours / demande à ton prof ?

    Posté par  (site web personnel) . En réponse au message Script pour vérifier si une chaîne de caractère existe dans le magic number. Évalué à 2. Dernière modification le 29 juillet 2019 à 20:18.

    En même temps, quelle idée d'utiliser commande au lieu de $(commande) ? :)

    C'est historique et portable, l'équivalence $() n'existe pas sous (t)csh par exemple.
    L'idée est de modifier la profondeur de l'interprétation à l'intérieur des guillemets, en usant de guillemets différentes.

    pourquoi s'amuser à utiliser for qui déclenche un découpage par mot plutôt que de passer par un while qui découpe par ligne ?

    Je préfère utiliser directement la sortie de find en appelant un script de traitement par fichier, passé à exec ; ( et surtout pas exec +).

  • [^] # Re: Lit tes cours / demande à ton prof ?

    Posté par  (site web personnel) . En réponse au message Script pour vérifier si une chaîne de caractère existe dans le magic number. Évalué à 2. Dernière modification le 24 juillet 2019 à 20:50.

    A noter que si la clef se situe au même endroit dans les fichiers, il n'est pas utile de la passer à grep .

     [ "`xxd -l 6 -s 0 -ps {}`" = "23212f62696e" ] && cp {} ailleurs/

    devrait faire l'affaire. Ici, la clef se trouve en début de fichier ( -s 0 ).

    Pour donner tout ça à manger à find , il est plus facile de décomposer le tout:

    #!/bin/sh
    
    where=/home/david
    to=/home/david/test
    for i in `find ${where} -type f `; do
        m=`{mathjax} ( xxd -l 6 -s 0 -ps "`{i}" )         
         [ "`{mathjax} m" = "23212f62696e" ] && cp "`{i}" "${to}/"
    
    done

    Par contre, cela ne prend pas en charge les fichiers avec des espaces dans le nom.

    Ceci se traduit par,

    • pour chaque fichier trouvé dans where, le stocker dans i
    • récupérer les 6 premier octets de ce dernier
    • comparer ces octets à clef
    • si correspondance, copier le fichier dans to

    Il y a un bug dans l'affichage du code, les simple quotes sont interprétées.
    Des mathjax apparaissent

  • [^] # Re: Personne pour le moment

    Posté par  (site web personnel) . En réponse au message Diner des philosophes et jeu des bâtonnets. Évalué à 6.

    Si tu travailles 20 jours par mois ça fait 12.000 €

    beaucoup moins, car il ne va pas facturer 240 jours par an.

  • # messages

    Posté par  (site web personnel) . En réponse au message probleme avec syslog. Évalué à 4. Dernière modification le 05 juillet 2019 à 16:50.

    j'ai regardé dans mon répertoire courant et aussi dans /var/log mais il n'y a aucun fichier.

    Votre code confie les logs à syslogd, ou tout autre service de log.
    Sans configuration particulière, ce dernier ne redirigera vos entrées que vers /var/log/messages et vers la console pour les erreurs.
    - Plutôt que d'utiliser argv[0], utilisez NULL. -

    Configurez /etc/syslog.conf pour associer un fichier à votre tag.

  • # la source

    Posté par  (site web personnel) . En réponse au lien Le système de mise en cache du noyau Linux serait-il plus lent que les transferts E/S directs ? Non. Évalué à 6.

  • [^] # Re: Il n'y aura pas de référendum

    Posté par  (site web personnel) . En réponse au journal Référendum d’initiative partagée : couvrez ces noms que je ne saurais voir. Évalué à 3.

    Le TCE n'est pas le traité de Lisbonne même si l'essentiel du texte est là.

    A noter que le droit d'initiative citoyenne européenne vient de là.

  • [^] # Re: Transparence (et divers)

    Posté par  (site web personnel) . En réponse au journal Référendum d’initiative partagée : couvrez ces noms que je ne saurais voir. Évalué à 1.

    Ah ? Donc les homosexuels suisses ne font pas partie du peuple suisse ?

    Jusqu'en 1971, les femmes non plus, n'en faisait pas partie.

  • [^] # Re: Portable ?

    Posté par  (site web personnel) . En réponse au message Portable 13" économique. Évalué à 2.

    Il n'est pas trop encombrant de poser un NUC sur un bureau d'enfant (même budget)

    Tiens, c'est une bonne piste pour fournir un "PC" à mon aînée.
    C'est vraiment le même budget ? Je ne vois pas beaucoup d'écrans à moins de 200€.

  • [^] # Re: mouais

    Posté par  (site web personnel) . En réponse au journal Une Sacem du logiciel libre?. Évalué à 1.

    En fait, c'est une exception au droit (d'auteur).
    ( ou plutôt, celui des « ayants droit » ).

  • # Session vs Window

    Posté par  (site web personnel) . En réponse au journal Emacs dans tmux en 24 bits de profondeur. Évalué à 2.

    Ensuite, basculer d'un projet à l'autre se fait très simplement en utilisant la notion de "session" de tmux, et en utilisant les touches Ctrl+B W

    En fait, non. Il s'agit de la notion de « Fenêtre » du client, choose-window, comme pour C-p et C-n.
    Pour changer de session à partir d'un client, c'est choose-session, soit C-s.

  • [^] # Re: Notion d'insulte

    Posté par  (site web personnel) . En réponse au journal Appel à interviews. Évalué à 7.

    Si un autre membre masculin

    ça part en couille.

  • [^] # Re: Options, arguments, sous-commandes

    Posté par  (site web personnel) . En réponse au message question sur les arguments que l'on donne aux commandes. Évalué à 2.

    La documentation, et surtout le comportement de systemctl sans paramètre, semblent contredire cette assertion.

    En quoi ?

    En l'absence de sous-commande explicite, le programme en définit une par défaut. Cela signifie bel et bien qu'une sous-commande est requise pour faire fonctionner le programme.

    SYNOPSIS
           systemctl [OPTIONS...] COMMAND [NAME...]

    COMMAND n'est pas optionnel.