Lines Matching full:per
15 unificata per gestire la memoria e le unità esecutive di diverse GPU. Dunque,
16 oggigiorno ogni driver ha il suo insieme di ioctl per allocare memoria ed
21 Per evitare di ripetere gli stessi errori ho preso nota delle lezioni imparate
24 riguardo al modo migliore per implementare una ioctl per inviare compiti alla
25 GPU. Probabilmente, ogni sviluppatore di driver per GPU dovrebbe imparare queste
35 * Usate solamente interi a lunghezza fissa. Per evitare i conflitti coi tipi
42 fanno. Dunque, per farlo correttamente in entrambe i casi dobbiamo sempre
49 effettua verifiche sulla dimensione (per esempio il sistema drm lo fa).
53 possibile per non ritardare la conversione, o peggio maneggiare ``__u64`` nel
56 per evitare avvisi riguardo interi e puntatori di dimensioni differenti.
65 garantito, dovrete rivisitare il codice o estenderlo per ogni interfaccia.
67 * Abbiate un modo chiaro per capire dallo spazio utente se una nuova ioctl, o
71 qualcosa nel passato) allora dovrete implementare nel driver un meccanismo per
75 * Abbiate un piano per estendere le ioctl con nuovi *flag* o campi alla fine di
84 altrimenti rifiutare la ioctl. Se non lo fate il vostro bel piano per
88 quella di contenere spazzatura. Per questo dovrete esplicitamente riempire i
93 * Abbiate un semplice codice di test per ognuno dei casi sopracitati.
99 Oggigiorno non ci sono più scuse rimaste per permettere ai driver drm di essere
100 sfruttati per diventare root. Questo significa che dobbiamo avere una completa
104 * Le ioctl devono verificare l'overflow dei vettori. Inoltre, per i valori
112 * Avere un test semplice per ogni possibile fallimento della vostra ioctl.
114 assicuratevi che verifichiate un solo percorso sbagliato per ogni sotto-test
123 per i segnali, otterrete gratuitamente un eccellente copertura di base per
125 gestire la riesecuzione delle ioctl - per esempio, drm ha una piccola
127 driver i915 l'abbozza con l'ioctl `set_tiling`, ed ora siamo inchiodati per
136 sicurezza per rilevare situazioni di stallo quando l'hardware da di matto.
152 * Per fare riferimento al tempo usate sempre ``CLOCK_MONOTONIC``. Oggigiorno
162 * Per descrivere il tempo, usate ``__s64`` per i secondi e ``__u64`` per i
163 nanosecondi. Non è il modo migliore per specificare il tempo, ma è
168 del kernel usa interi con segni sia per i secondi che per i nanosecondi.
170 * Per le scadenze (*timeout*) usate valori temporali assoluti. Se siete dei
185 * Sviluppate dei test per i casi estremi, specialmente verificate che i valori
186 di ritorno per gli eventi già completati, le attese terminate con successo, e
192 Nel suo piccolo il driver drm implementa un sistema operativo specializzato per
194 utente tonnellate di agganci per accedere ad oggetti e altre risorse. Farlo
200 unix semplifica la gestione anche per lo spazio utente.
205 impostate uno spazio dei nomi riservato per ogni descrittore di file, il che
207 per dispositivo solo se gli oggetti sono effettivamente unici per quel
210 dei nomi con oggetti per il *framebuffer*, ma questi non sono per niente
211 condivisi. Uno spazio separato, privato di base, per i *framebuffer* sarebbe
214 * Pensate all'identificazione univoca degli agganci verso lo spazio utente. Per
215 esempio, per la maggior parte dei driver drm, si considera fallace la doppia
216 sottomissione di un oggetto allo stesso comando ioctl. Ma per evitarlo, se
219 ma considerate l'idea di usare il numero di inode come identificatore per i
230 * Pensateci su due o tre volte prima di implementare un'interfaccia privata per
233 a volte un'interfaccia privata è quello che serve per sviluppare un nuovo
235 disposizione finirete per mantenere due interfacce. Per sempre.
238 meglio per impostazioni che sono specifiche di un dispositivo, o per
240 drm con tutti gli attributi per la sovrascrittura delle rilevazioni). O magari
244 Per concludere. Questo gioco consiste nel fare le cose giuste fin da subito,
246 finirete per mantenere le vostre ioctl per sempre. Potrete tentare di deprecare
247 alcune orribili ioctl, ma ci vorranno anni per riuscirci effettivamente. E
248 ancora, altri anni prima che sparisca l'ultimo utente capace di lamentarsi per