Articles of linux kernel

Come svuotare la cache della CPU per un’area di spazio indirizzo in Linux?

Sono interessato a svuotare la cache (L1, L2 e L3) solo per un’area di spazio indirizzo, ad esempio tutte le voci della cache dall’indirizzo A all’indirizzo B. Esiste un meccanismo per farlo in Linux, sia dall’utente che dallo spazio del kernel ?

Qual è la differenza tra module_init e subsys_initcall durante l’inizializzazione del driver?

Qual è la differenza tra module_init e subsys_initcall durante l’inizializzazione del driver?

Cosa fa in realtà request_mem_region () e quando è necessario?

Sto studiando sulla scrittura di un driver Linux incorporato e ho deciso di avviare alcuni GPIO per assicurarmi di aver compreso correttamente il libro (LDD3, chap9.4.1) . Sono in grado di controllare i pin GPIO corretti come previsto (rendendolo alto e basso, ho sondato con un multimetro); tuttavia, ho testato 2 pezzi di codice, uno […]

Terminazione del processo mmap, msync e linux

Voglio usare mmap per implementare la persistenza di alcune parti dello stato del programma in un programma C in esecuzione su Linux associando una struttura a dimensione fissa con un nome file ben noto usando mmap () con il flag impostato MAP_SHARED. Per motivi di prestazioni, preferirei non chiamare affatto msync () e nessun altro […]

Gestire ARM TrustZones

ARM ha qualcosa chiamato TrustZone. Come da documentazione ARM, dà che un processo può essere eseguito in Secure / Non-Secure World. Che cosa significa Secure / Non-Secure World. È relativo alle modalità di esecuzione del processore o è correlato all’impostazione dei permessi delle regioni di memoria o qualcos’altro. Esiste una relazione tra le 7 modalità […]

Aggiunta di un nuovo codice driver al codice sorgente di Linux

Ho sviluppato un driver di dispositivo Linux. A partire da ora lo sto compilando su Ubuntu 12.04 con cross-compiler for arm e poi lo insmodino nella mia immagine di Linux. Ma voglio sapere come posso aggiungerlo nel codice sorgente di Linux e dare e opzione per aggiungere / rimuovere attraverso la configurazione di arm Linux, […]

Configurazione Vim per lo sviluppo del kernel Linux

Lo sviluppo del kernel è in realtà diverso da uno sviluppo del progetto C tradizionale (dal mio punto di vista, come novizio). Quindi, mi chiedo sempre qual è la configurazione vim di un hacker del kernel. Il più importante è come navigare nell’albero dei sorgenti del kernel in vim. Ho provato ctags , tuttavia, funziona […]

Cos’è la syntax di inizializzazione della struttura con tag?

struct file_operations scull_fops = { .owner = THIS_MODULE, .llseek = scull_llseek, .read = scull_read, .write = scull_write, .ioctl = scull_ioctl, .open = scull_open, .release = scull_release, }; Questa dichiarazione utilizza la syntax di inizializzazione della struttura con tag C standard. Qualcuno può elaborare?

Come creare un nuovo programma di pianificazione del kernel Linux

Guardando attraverso il codice sorgente del programma di pianificazione (2.6.34, kernel / sched.c), posso vedere come vengono utilizzati gli scheduler “collegabili”, e credo di capire l’interfaccia da implementare. Quello che non capisco ancora è come ottenere il mio codice incorporato nel kernel. Per lo meno, sarebbero apprezzati i riferimenti ad altri siti. In questo momento, […]

Qual è la differenza tra un driver di piattaforma Linux e un normale driver di dispositivo?

In precedenza avevo pensato al driver di piattaforma e al normale driver di dispositivo come: Il driver di piattaforma è per quei dispositivi che sono su chip. e , I normali driver di dispositivo sono per quelli che sono interfacciati con il chip proccesor. prima di imbattersi in un driver i2c. Ma qui, sto leggendo […]