Jump to content

neologix

INpactien
  • Content Count

    585
  • Joined

  • Last visited

About neologix

  • Rank
    Pilote de X-wing
  1. Question stupide : pourquoi Samba et NFS, et pas Samba seul ? Samba est utilisable avec des clients Windows et Linux...
  2. Le shell ne gère que les calculs sur entiers, il considère tes flottants comme des chaînes de caractère. Utilise "bc", qui permet de faire des calculs un peu plus complexes, par exemple : a=3.2; b=0.7; c=`echo $a + $b | bc`; echo $c Sinon, quand j'ai besoin de faire des calculs, j'utilise Perl (ou octave, mais là c'est un niveau au dessus ;-)
  3. Justement, "on ne sait jamais". Sans préemption, tu sais que ton flot d'exécution ne sera pas interrompu (ou par une iterruption hard, mais on s'en fout ici), donc pas de problème. Tu parcours ta liste chainée, fais un kmalloc(GFP_KERNEL), manipule des données locales à un processeur, c'est pas grave. Mais dès que tu as de la préemption, et bien tu es obligé d'avoir recours à des {spin,read,write}_lock, à faire des kmalloc(GFP_ATOMIC), et de façon générale à introduire des méchanismes de synchronisation, et donc augmenter le risque de deadlock. En très schématique, preemption=>synchronisation=>deadlocks. En gros, ça augmente le parallèlisme de la machine. Maintenant, c'est vrai que normalement, du code SMP-safe est preemption-safe, mais il y a quelques exceptions : Tiré de http://www.linuxjournal.com/article/5833 Aussi, il me semble que c'est pour cette raison qu'on ne peut pas faire de calculs en virgule flottante dans le noyau : si tu es préempté, comme le noyau ne sauve pas le registre FPU (en mode noyau :-), c'est le drame (en même temps, on peut très bien s'en passer ). En fait, c'est surtout lorsque j'ai porté des modules du 2.4 (non-préemptif) au 2.6 que j'ai compris ma douleur (et non, je ne suis pas un hacker, loin de là ;-).
  4. Salut à tous (ça faisait un moment...). Dites, j'ai une question qui me turlupine. Aujourd'hui je me suis "accroché" au boulot avec un collègue au sujet des impacts de la préemption. Je pense que la préemption facilite les deadlocks, par exemple il y a plus de risques de deadlocks avec CONFIG_PREEMPT qu'avec CONFIG_PREEMPT_VOLUNTARY ou CONFIG_PREEMPT_NONE, tout simplement parce qu'il y a plus de sections critiques, et donc de problèmes de synchronisation. En plus, mon expérience personnelle me conforte dans cette idée : j'ai porté un ensemble de modules de 2.4 vers 2.6, et ça a révélé pas mals de problèmes de synchro (deadlocks, pointeurs foireux...) Enfin, j'ai vu que les patches RT d'Ingo Molnar ont aussi permis de découvrir des problèmes similaires. Des avis?
  5. La dernière fois que j'ai regardé, Atheros avait pas mal de retard. je ne sais même pas s'il existe des 802.11g avec gestion du WPA... Perso, j'utilise du ralink, et ça marche très bien. La branche de développement rt2x00 (qui utilise la nouvelle pile mac80211 de devicescape) est même incluse dans le noyau vanilla depuis 2.6.25. Le pilote est libre, et pas besoin de firmware, c'est tout bon.
  6. En fait c'est setvbuf() (ANSI, les termios() sont des fcontions POSIX). Il y a trois mode : Visiblement, les fichiers sont ouverts avec _IOFBF. Je voulais savoir si c'est spécifié dans la norme.
  7. Quelqu'un aurait la norme ANSI C sous la main? Avec ce programme : #include <stdio.h> #include <unistd.h> int main(void) { fputs("Test\n", stdout); sleep(1); return 0; } un strace me donne : execve("./test_stdout", ["./test_stdout"], [/* 34 vars */]) = 0 brk(0) = 0x804a000 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f89000 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=52007, ...}) = 0 mmap2(NULL, 52007, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f7c000 close(3) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/i686/cmov/libc.so.6", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\\\\\3\3\1\\260e\1"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=1360292, ...}) = 0 mmap2(NULL, 1365616, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7e2e000 mmap2(0xb7f76000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x148) = 0xb7f76000 mmap2(0xb7f79000, 9840, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7f79000 close(3) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7e2d000 set_thread_area({entry_number:-1 -> 6, base_addr:0xb7e2d6b0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0 mprotect(0xb7f76000, 4096, PROT_READ) = 0 munmap(0xb7f7c000, 52007) = 0 fstat64(1, {st_mode=S_IFCHR|0600, st_rdev=makedev(136, 1), ...}) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f88000 ############################# write(1, "Test\n", 5Test ) = 5 rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0 rt_sigaction(SIGCHLD, NULL, {SIG_DFL}, 8) = 0 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 nanosleep({1, 0}, {1, 0}) = 0 exit_group(0) = ? ############################# Process 20532 detached donc il flush bien lorsqu'on balance '\n' dans une chaîne de caractère. Par contre, avec celui-là : #include <stdio.h> #include <unistd.h> int main(void) { FILE *fp = fopen("/dev/null", "w"); fputs("Test\n", fp); sleep(1); fclose(fp); return 0; } j'obtiens ça : execve("./test", ["./test"], [/* 34 vars */]) = 0 brk(0) = 0x804a000 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f9e000 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=52007, ...}) = 0 mmap2(NULL, 52007, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f91000 close(3) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/i686/cmov/libc.so.6", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\\\\\3\3\1\\260e\1"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=1360292, ...}) = 0 mmap2(NULL, 1365616, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7e43000 mmap2(0xb7f8b000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x148) = 0xb7f8b000 mmap2(0xb7f8e000, 9840, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7f8e000 close(3) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7e42000 set_thread_area({entry_number:-1 -> 6, base_addr:0xb7e426b0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0 mprotect(0xb7f8b000, 4096, PROT_READ) = 0 munmap(0xb7f91000, 52007) = 0 brk(0) = 0x804a000 brk(0x806b000) = 0x806b000 open("/dev/null", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3 fstat64(3, {st_mode=S_IFCHR|0666, st_rdev=makedev(1, 3), ...}) = 0 ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbfe03a3c) = -1 ENOTTY (Inappropriate ioctl for device) mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f9d000 rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0 rt_sigaction(SIGCHLD, NULL, {SIG_DFL}, 8) = 0 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 ############################# nanosleep({1, 0}, {1, 0}) = 0 write(3, "Test\n", 5) = 5 close(3) = 0[/b] munmap(0xb7f9d000, 4096) = 0 exit_group(0) = ? ############################# Process 20558 detached il ne flush qu'après le sleep (au moment du close() en fait). Donc visiblement, le comportement dépend selon que le descripteur correspond à un tty ou non. Cela me semble étrange, et je n'ai pas la norme pour vérifier. Quelqu'un pourrait jeter un coup d'oeil? neo
  8. Dans ce genre de cas, tu as des scanners en ligne, par exemple http://www.pcflank.com/scanner1.htm
  9. En fait c'est plus tordu que ça : \telephone n'apparaît pas si on spécifie le champ \address, il faut utiliser le champ \location...
  10. Une petite question rapide aux pros de LaTeX. J'utilise la classe letter pour générer mes lettres, et rien à faire, je n'arrive pas à inclure un numéro de téléphone. J'utilise la balise \telephone{xxx}, mais il n'apparaît pas. Je ne pense pas que ce soit digne d'un sujet, mais ça me prend la tête...
  11. aptitude install alsa-utils Il va aussi t'installer linux-sound-base, et debconf va te demander le système de son à utiliser tu réponds alsa, ti lance alsamix, tu règles le son, et c'est bon depuis quelque temps, alsa contient dmix, tu n'as rien à configurer
  12. Bah, disons que pour le quidam, ce répertoire n'est pas vraiment utile (sauf s'il s'amuse à coder par exemple ;-), mais pour un admin qui s'occupe de pcs à la fac ou école d'ingé, il vaut mieux se pencher dessus si on ne veut pas que le moindre rigolo puisse crasher le serveur depuis le shell ou par ssh. Parmi les gourous qu'il y a ici, personne ne sait si on peut limiter le % de cpu utilisé?
  13. "Facile": toi tu ne connais pas mon niveau en bash! Effectivement, j'aurais pu comprendre si j'avais remarqué que ":" est le nom de la fonction. Je pensais que c'était un opérateur spécial (c'est vrai quoi, c'est pas conseillé d'autoriser des noms pareils ;-) En tout cas, merci pour cette explication!
×
×
  • Create New...