User Tools

Site Tools


linux-kernel-dev:capitole:capitol-02

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
linux-kernel-dev:capitole:capitol-02 [2016/08/30 10:25]
razvan [Actualizare modul de hook]
linux-kernel-dev:capitole:capitol-02 [2016/08/30 12:18] (current)
razvan [Informații cscope]
Line 113: Line 113:
 Actualizați modulul ''​hello.c''​ pentru a afișa un mesaj și la descărcarea din kernel, la operația ''​rmmod''​. Actualizați modulul ''​hello.c''​ pentru a afișa un mesaj și la descărcarea din kernel, la operația ''​rmmod''​.
  
-Folosiți funcția ''​printk''​ astfel încât mesajele să fie afișate în bufferul kernel-ului (adică să fie afișate cu ''​dmesg''​) ​dar să nu fie afișate la consolă.+Folosiți funcția ''​printk''​ astfel încât mesajele să fie afișate ​atât în bufferul kernel-ului (adică să fie afișate cu ''​dmesg''​) ​cât șla consolă.
  
 <note tip> <note tip>
Line 127: Line 127:
 </​note>​ </​note>​
  
 +<note tip>
 +Pentru a include conținutul fișierului header ''​include/​linux/​sched.h''​ folosiți construcția
 +<​code>​
 +#include <​linux/​sched.h>​
 +</​code>​
 +La fel veți proceda și în cazul altor fișiere de tip header în care sunt definite structuri, tipuri de date sau macro-uri pe care le folosiți în modulul vostru.
 +</​note>​
 ==== Afișare comandă ==== ==== Afișare comandă ====
  
Line 174: Line 181:
 ==== Modul nou din surse multiple ==== ==== Modul nou din surse multiple ====
  
-Creați un modul care să aibă două fișiere cod sursă. Într-un fișier cod sursă sunt implementate funcțiile de inițializare și ieșire ale modulului. În celălalt fișier implementați o funcție care face dump în hexacimal la cel mult 4096 de octeți de la o adresă dată. Adresa dată trebuie să fie adresă de kernel space (>= ''​0xc0000000''​). Funcția este apelată din primul modul.+Creați un modul care să aibă două fișiere cod sursă. Într-un fișier cod sursă sunt implementate funcțiile de inițializare și ieșire ale modulului. În celălalt fișier implementați o funcție care face dump în hexacimal la cel mult 4096 de octeți de la o adresă dată. Adresa dată trebuie să fie adresă de kernel space (>= ''​0xc0000000''​). Funcția este apelată din primul modul în cadrul funcției de inițializare a acestuia.
  
 Compilați modulul, copiați-l în mașina virtuală QEMU și testați-l. Compilați modulul, copiați-l în mașina virtuală QEMU și testați-l.
Line 183: Line 190:
  
 <note tip> <note tip>
-Pentru pachetele care pleacă folosiți ca ''​hooknum''​ valoarea ''​NF_INET_LOCAL_OUT''​.+Pentru pachetele care pleacă folosiți ca ''​hooknum''​ valoarea ''​NF_INET_LOCAL_OUT''​. Este vorba de câmpul ''​hooknum''​ din cadrul structura ''​icmp_nf_ops''​.
  
 Pachetele de tipul ''​echo reply''​ au câmpul ''​icmp_type''​ al structurii ''​icmp_hdr''​ egal cu valoarea ''​ICMP_ECHOREPLY''​. Pachetele de tipul ''​echo reply''​ au câmpul ''​icmp_type''​ al structurii ''​icmp_hdr''​ egal cu valoarea ''​ICMP_ECHOREPLY''​.
Line 252: Line 259:
 Pentru o interfață mai simplă, [[http://​sourceforge.net/​projects/​kscope/​|Kscope]] este un frontend pentru cscope care foloseşte QT. Este lightweight,​ foarte rapid și foarte ușor de folosit. Permite căutare folosind expresii regulate, grafuri de apel etc. Kscope nu mai este, în momentul de fața, menținut. Există şi un [[https://​opendesktop.org/​content/​show.php/​Kscope4?​content=156987|port]] al versiunii 1.6 pentru Qt4 şi KDE 4 care păstrează integrarea editorului Kate şi este mai uşor de folosit decât ultima versiune prezentă pe SourceForge. Pentru o interfață mai simplă, [[http://​sourceforge.net/​projects/​kscope/​|Kscope]] este un frontend pentru cscope care foloseşte QT. Este lightweight,​ foarte rapid și foarte ușor de folosit. Permite căutare folosind expresii regulate, grafuri de apel etc. Kscope nu mai este, în momentul de fața, menținut. Există şi un [[https://​opendesktop.org/​content/​show.php/​Kscope4?​content=156987|port]] al versiunii 1.6 pentru Qt4 şi KDE 4 care păstrează integrarea editorului Kate şi este mai uşor de folosit decât ultima versiune prezentă pe SourceForge.
  
 +<note important>​
 +Dacă nu există deja un fișier ''​cscope.out''​ generat sau dacă s-a stricat, îl puteți genera folosind
 +<​code>​
 +make ARCH=x86 cscope
 +</​code>​
 +</​note>​
 ==== cscope spelunking ==== ==== cscope spelunking ====
  
Line 269: Line 282:
   - Listați toate match-urile folosind, în Vim, comanda '':​copen''​. Vă apare o fereastră secundară cu toate match-urile.   - Listați toate match-urile folosind, în Vim, comanda '':​copen''​. Vă apare o fereastră secundară cu toate match-urile.
   - Căutați match-ul potrivit (în care este definită structura) căutând după acoladă deschisă (''​{''​),​ un caracter sigur pe linia de definire a structurii. Pentru căutarea acoladei deschise folosiți, în Vim, construcția ''/​{''​.   - Căutați match-ul potrivit (în care este definită structura) căutând după acoladă deschisă (''​{''​),​ un caracter sigur pe linia de definire a structurii. Pentru căutarea acoladei deschise folosiți, în Vim, construcția ''/​{''​.
-  - Pe linia aferentă apăsați ''​Enter''​ ca să vă ajungă editorul în codul sursă unde e definită ​varibila.+  - Pe linia aferentă apăsați ''​Enter''​ ca să vă ajungă editorul în codul sursă unde e definită ​variabila.
   - Închideți fereastra secundară folosind coamanda '':​cclose''​.   - Închideți fereastra secundară folosind coamanda '':​cclose''​.
 </​note>​ </​note>​
linux-kernel-dev/capitole/capitol-02.1472541943.txt.gz · Last modified: 2016/08/30 10:25 by razvan