View Single Post
Old 07-01-2005, 09:34   #2
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Documentazione

Esistono alcuni libri di riferimento, scritti però per i kernel 2.4. Sono un utile strumento di riferimento:
Linux Device Drivers (seconda edizione) scritto da Rubini: (update: è uscita la terza edizione, aggiornata al kernel 2.6.10)
http://www.xml.com/ldd/chapter/book/
Understanding the Linux Kernel (Bovet, Cesati):
http://www.amazon.com/exec/obidos/tg...=UTF8&v=glance
Linux kernel internals (aa.vv.)
http://www.amazon.com/exec/obidos/tg...35837?v=glance
Understanding the linux virtual memory manager (Mel Gorman):
http://phptr.com/title/0131453483

Differenze con il kernel 2.6:
Esistono una serie di articoli che coprono le differenze tra le due serie. Gli articoli sono stati pubblicati da lwn, e costituiscono un importante completamento dei libri suggeriti in precedenza:
http://lwn.net/Articles/driver-porting/

Mailing list
The Linux Kernel Mailing List:
http://marc.theaimsgroup.com/?l=linux-kernel&r=1&w=2
Kernelnewbies mailing list:
http://mail.nl.linux.org/kernelnewbies/

Sorgenti del kernel
Al di là dei libri, un driver ben scritto vale più di mille pagine. I sorgenti del kernel sono una risorsa inestimabile di documentazione.
Esiste anche la directory Documentation dentro all'albero dei sorgenti, che copre argomenti specifici.

Altri documenti
Sono disponibili presso kernelnewbies.org; alcuni però sono diventati obsoleti:
http://www.kernelnewbies.org/documents/

Uno script utilissimo
Questo script:
Codice:
#!/bin/bash
FILTER=".[chsS]"
if [ "$1" = "" ]; then
  echo $0 \<string\>
  exit
fi
find . \( -path './*' \) \
  -name \*${FILTER} -exec grep -l -- "$*" {} \; 2>/dev/null
cerca ricorsivamente, a partire dalla directory corrente, i file sorgente che contengono la stringa indicata. E' utilissimo per rintracciare tra i sorgenti del kernel degli esempi di come è usata una determinata funzione.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12

Ultima modifica di ilsensine : 14-04-2005 alle 11:12.
ilsensine è offline