Articles of linux kernel

Capire contenitore_di macro nel kernel di Linux

Durante la navigazione nel kernel di Linux, ho trovato un container_of macro che è definito come segue: #define container_of(ptr, type, member) ({ \ const typeof( ((type *)0)->member ) *__mptr = (ptr); \ (type *)( (char *)__mptr – offsetof(type,member) );}) Capisco cosa fa container_of do, ma quello che non capisco è l’ultima frase, che è (type […]

C’è qualche API per determinare l’indirizzo fisico dall’indirizzo virtuale in Linux?

C’è qualche API per determinare l’indirizzo fisico da un indirizzo virtuale nel sistema operativo Linux?

Qual è la differenza tra vmalloc e kmalloc?

Ho kmalloc su kmalloc e ho trovato la maggior parte delle persone che kmalloc l’uso di kmalloc , dato che si è kmalloc di ottenere contigui blocchi fisici di memoria. Tuttavia, sembra anche che kmalloc possa fallire se non è ansible trovare un blocco fisico contiguo che si desidera. Quali sono i vantaggi di avere […]

Come sapere la fasce orarie del programmatore linux?

Sto cercando il valore della porzione temporale (o quantistica) del mio kernel Linux. Esiste un file /proc che espone tali informazioni? (O) È ben definito nell’intestazione Linux delle mie distribuzioni? (O) Esiste una funzione C dell’API di Linux (forse sysinfo) che espone questo valore? Grazie in anticipo.

Se i thread condividono lo stesso PID, come possono essere identificati?

Ho una query relativa all’implementazione dei thread in Linux. Linux non ha un supporto di thread esplicito. Nello userspace, potremmo usare una libreria di thread (come NPTL) per creare thread. Ora se usiamo NPTL supporta la mapping 1: 1. Il kernel userà la funzione clone() per implementare i thread. Supponiamo di aver creato 4 thread. […]

Come utilizzare il socket netlink per comunicare con un modulo del kernel?

Sto cercando di scrivere un modulo del kernel linux che comunichi con il processo utente usando netlink. Sto usando netlink perché il programma utente che voglio comunicare comunica solo tramite socket e non posso cambiarlo per aggiungere ioctl() o altro. Il problema è che non riesco a capire come farlo. Ho cercato su Google, ma […]

Trovare quale processo è stato ucciso da Linux OOM killer

Quando Linux esaurisce la memoria (OOM), l’assassino di OOM sceglie un processo da uccidere basato su una certa euristica (è una lettura interessante: http://lwn.net/Articles/317814/ ). Come si può determinare a livello di codice quali processi sono stati recentemente uccisi dal killer OOM?

Misurare il tempo in Linux – tempo vs orologio vs getrusage vs clock_gettime vs gettimeofday vs timespec_get?

Tra le funzioni di cronometraggio, time , clock getrusage , clock_gettime , gettimeofday e timespec_get , voglio capire chiaramente come sono implementate e quali sono i loro valori di ritorno per sapere in quale situazione devo usarli. Per prima cosa dobbiamo classificare le funzioni che restituiscono i valori del wall-clock confrontati con le funzioni che […]

Linux Kernel: esempio di hook di chiamata di sistema

Sto cercando di scrivere un semplice codice di prova come dimostrazione di aghook alla tabella delle chiamate di sistema. “sys_call_table” non viene più esportato in 2.6, quindi sto semplicemente prendendo l’indirizzo dal file System.map, e posso vedere che è corretto (guardando attraverso la memoria all’indirizzo che ho trovato, posso vedere i puntatori al chiamate di […]

Come eseguire il debug del kernel Linux con GDB e QEMU?

Sono nuovo nello sviluppo del kernel e mi piacerebbe sapere come eseguire / eseguire il debug del kernel di Linux usando QEMU e gdb. In realtà sto leggendo il libro di Robert Love ma sfortunatamente non aiuta il lettore a installare strumenti adeguati per eseguire o eseguire il debug del kernel … Quindi quello che […]