Archive for the ‘Dev’ Category.
19 May 2012, 12:45
Marre de chercher de la documentation sur CMMI-DEV 1.3 et de tomber sur des informations obsolètes (issues de la version 1.2), traduites nonchalamment ou sur des propositions de formation ?
La traduction française du livre blanc officiel du SEI contient tout ce qu’il faut pour comprendre CMMI-DEV, même en n’ayant aucune notion en méthodologie d’amélioration des processus, et les annexes sont bien fournies.
14 September 2010, 19:20
La bibliothèque CDK est une surcouche à la célèbre bibliothèque graphique NCurses.
Elle facilite le développement rapide d’interfaces fonctionnelles grâce à de nombreux widgets prédéfinis (menus, liste déroulantes, dialogues, calendrier, etc)
La page de manuel man cdk_display(3) comporte quelques erreurs, rendant difficile leur compréhension voir leur compilation.
Voici un patch permettant de corriger les exemples (couleurs, compilation, …) de cette documentation. Ce patch a été remonté upstream ainsi que sur le BTS de Debian et de FreeBSD
edit 11/02/2011: patch appliqué sur la dernière version du paquet Debian
25 April 2010, 12:12
Voici l'erreur obtenue suite à la compilation d'un noyau 2.6.32 avec le patch OpenVZ :
arch/x86/kernel/traps.c:393: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘nmi_ipi_callback’
arch/x86/kernel/traps.c: In function ‘do_nmi’:
arch/x86/kernel/traps.c:450: error: implicit declaration of function ‘nmi_ipi_callback’
arch/x86/kernel/traps.c: At top level:
arch/x86/kernel/traps.c:457: error: expected ‘)’ before ‘callback’
arch/x86/kernel/traps.c: In function ‘unset_nmi_ipi_callback’:
arch/x86/kernel/traps.c:464: error: ‘nmi_ipi_callback’ undeclared (first use in this function)
arch/x86/kernel/traps.c:464: error: (Each undeclared identifier is reported only once
arch/x86/kernel/traps.c:464: error: for each function it appears in.)
make[3]: *** [arch/x86/kernel/traps.o] Erreur 1
make[2]: *** [arch/x86/kernel] Erreur 2
make[1]: *** [arch/x86] Erreur 2
Une solution rapide consiste à activer le support SMP dans la configuration noyau CONFIG_SMP=y (Processor type and features – Symmetric multi-processing support)
21 February 2010, 17:00
En testant le débogueur Kdb pour le noyau Linux, chaque tentative de poser un breakpoint sur une fonction se soldait par le message d’erreur suivant :
kdb> bp sys_open
Invalid address for breakpoint, ignoring bp command
diag: -21: Invalid address
kdb>
Pourtant id sys_open permet bien de désassembler cette fonction, ce qui prouve que le symbole sys_open est résolu/connu de Kdb.
A l’aide d’une piste sur KernelNewbies, j’ai trouvé que le problème venait de l’option CONFIG_DEBUG_RODATA, qui protège en écriture certaines structures du noyau, empêchant de poser un breakpoint.
L’aide de cette option est explicite :
Mark the kernel read-only data as write-protected in the pagetables,
in order to catch accidental (and incorrect) writes to such const data.
This is recommended so that we can catch kernel bugs sooner. If in doubt, say "Y".
Mais le lien de cause à effet l’est moins
13 July 2008, 10:47
Lors de développements assez proches de la machine, il peut être capital de savoir si la machine sur laquelle on se trouve est little-endian ou big-endian, ou en français petit-boutiste et gros-boutiste (oui, c’est assez laid)
Autoconf fourni la réponse à cette question avec la macro AC_C_BIGENDIAN
Le manuel d’autoconf renseigne parfaitement sur son utilisation :
Macro: AC_C_BIGENDIAN ([action-if-true], [action-if-false], [action-if-unknown])
If words are stored with the most significant byte first (like Motorola and
SPARC CPUs), execute action-if-true. If words are stored with the least
significant byte first (like Intel and VAX CPUs), execute action-if-false.
This macro runs a test-case if endianness cannot be determined from the
system header files. When cross-compiling, the test-case is not run but grep’ed
for some magic values. action-if-unknown is executed if the latter case fails to
determine the byte sex of the host system.
The default for action-if-true is to define `WORDS_BIGENDIAN’. The default
for action-if-false is to do nothing. And finally, the default for
action-if-unknown is to abort configure and tell the installer which variable he
should preset to bypass this test.
Et voici un exemple d’utilisation réel, vérifiant que la machine est little endian :
AC_C_BIGENDIAN(
[AC_MSG_ERROR([big endian, sorry but pppoesk will not work])],
[AC_MSG_RESULT([little endian, fine])],
[AC_MSG_ERROR([unknown endianess ?])]
)
Oui c’est tout, c’est aussi simple que ça.