Lines Matching refs:un
23 è di fornire ai programmatori C più esperti un manuale di base per sviluppo.
30 crescere e diventare un compendio di buone pratiche, punti di partenza
36 In qualsiasi momento ognuna delle CPU di un sistema può essere:
38 - non associata ad alcun processo, servendo un'interruzione hardware;
40 - non associata ad alcun processo, servendo un softirq o tasklet;
42 - in esecuzione nello spazio kernel, associata ad un processo
45 - in esecuzione di un processo nello spazio utente;
47 Esiste un ordine fra questi casi. Gli ultimi due possono avvicendarsi (preempt)
48 l'un l'altro, ma a parte questo esiste una gerarchia rigida: ognuno di questi
49 può avvicendarsi solo ad uno di quelli sottostanti. Per esempio, mentre un
51 nell'esecuzione, ma un'interruzione hardware può. Ciò nonostante, le altre CPU
67 Si è sempre in contesto utente quando un modulo viene caricato o rimosso,
78 di seguito), :c:func:`in_interrupt()` ritornerà un falso positivo.
84 che possono produrre interruzioni in un qualsiasi momento. Il kernel esegue
85 i gestori d'interruzione che prestano un servizio all'hardware. Il kernel
98 Attenzione, questa ritornerà un falso positivo se le interruzioni
105 oppure un gestore d'interruzioni termina, qualsiasi 'interruzione software'
106 marcata come pendente (solitamente da un'interruzione hardware) viene
109 La maggior parte del lavoro utile alla gestione di un'interruzione avviene qui.
118 potete programmarlo per far si che esegua funzioni dopo un determinato
121 Dato che i softirq possono essere eseguiti simultaneamente su più di un
125 quanti ne volete), e garantiscono che un qualsiasi tasklet verrà eseguito
126 solo su un processore alla volta, sebbene diversi tasklet possono essere
134 Potete determinate se siete in un softirq (o tasklet) utilizzando la
139 State attenti che questa macro ritornerà un falso positivo
168 indipendente dall'ordine dei byte (endianess) di un processore. Inoltre,
169 dovreste minimizzare il codice specifico per un processore; per esempio
172 limitato alla parte di kernel specifica per un'architettura.
186 Create un dispositivo a caratteri ed implementate l'appropriata chiamata ioctl.
193 considerate l'implementazione di un'interfaccia :c:func:`sysfs()`.
195 All'interno di una ioctl vi trovate nel contesto utente di un processo. Quando
196 avviene un errore dovete ritornare un valore negativo di errno (consultate
202 Unix/Linux di gestire un segnale è di uscire temporaneamente dalla chiamata
217 un sistema multi-processo senza diritto di prelazione).
231 - Siete in un contesto utente.
261 inutilizzabile. La funzione utilizza un formato stringa quasi compatibile con
269 per stampare un indirizzo IP usate::
275 :c:func:`printk()` utilizza un buffer interno di 1K e non s'accorge di
280 Saprete di essere un vero hacker del kernel quando inizierete a digitare
285 Un'altra nota a parte: la versione originale di Unix 6 aveva un commento
308 funzioni ritornano la quantità di dati copiati (0 è comunque un successo).
324 Queste procedure sono utilizzate per la richiesta dinamica di un puntatore ad
325 un pezzo di memoria allineato, esattamente come malloc e free nello spazio
326 utente, ma :c:func:`kmalloc()` ha un argomento aggiuntivo per indicare alcune
335 Non dorme. Meno affidabile di ``GFP_KERNEL``, ma può essere usata in un
344 Se vedete un messaggio d'avviso per una funzione dormiente che viene chiamata
345 da un contesto errato, allora probabilmente avete usato una funzione
346 d'allocazione dormiente da un contesto d'interruzione senza ``GFP_ATOMIC``.
351 Accetta un argomento che definisce l'ordine (0 per per la dimensione di una
355 Se state allocando un numero di byte notevolemnte superiore ad una pagina
357 dello spazio kernel. Questo è un blocco di memoria fisica non contiguo, ma
362 memoria fisica contigua, avete un problema: Linux non ha un buon supporto per
363 questo caso d'uso perché, dopo un po' di tempo, la frammentazione della memoria
364 rende l'operazione difficile. Il modo migliore per allocare un simile blocco
376 Questa variabile globale (in realtà una macro) contiene un puntatore alla
378 Per esempio, quando un processo esegue una chiamata di sistema, questo
388 per brevi pause. Non usate grandi valori perché rischiate d'avere un
398 sostituito da 64 o 16, e "be" con "le") forniscono un modo generico
404 puntatori, come :c:func:`cpu_to_be32p()`, che prende un puntatore
405 ad un tipo, e ritorna il valore convertito. L'altra variante per
407 che convertono il valore puntato da un puntatore, e ritornano void.
441 spostati su un altro processore all'improvviso) e ritorna il numero
447 se siete in un contesto d'interruzione, o il diritto di prelazione
485 La funzione può ritornare un numero d'errore negativo per scatenare un
513 rimozione (in aggiunta, un modulo non può essere rimosso se un altro modulo
520 La maggior parte delle strutture registrabili hanno un campo owner
552 un'espressione che dev'essere valutata; la macro ritorna 0 quando questa
553 espressione è vera, altrimenti ``-ERESTARTSYS`` se è stato ricevuto un segnale.
569 (``include/asm/atomic.h``); questo contiene un intero con segno (minimo 32bit),
584 ``unsigned long``. Queste operazioni prendono come argomento un puntatore
585 alla variabile, e un numero di bit dove 0 è quello meno significativo.
601 a meno che un simbolo non venga dichiarato con visibilita limitata ad un
612 Questo è il classico metodo per esportare un simbolo: i moduli caricati
663 C e ritornare 0 in caso di successo, ed un codice di errore negativo
668 un numero d'errore negativo in un puntatore, e :c:func:`IS_ERR()` e
669 :c:func:`PTR_ERR()` per recuperarlo di nuovo: così si evita d'avere un
680 s'accompagna un'adeguata e completa nota sulla lista di discussone
682 sostituzione su tutto un file rendere le cose **peggiori**.
708 la pagina info, la pagina man è solo un breve riassunto delle cose nella
768 il primo posto dove le persone guarderanno quando troveranno un baco,
771 - Solitamente vorrete un'opzione di configurazione per la vostra modifica
791 che volete essere consultati quando vengono fatte delle modifiche ad un
792 sottosistema, e quando ci sono dei bachi; questo implica molto di più di un
867 per avermi fornito un ottimo riassunto di :c:func:`disable_irq()`,