Sto lavorando su un modulo Linux per IA64. Il mio problema attuale è che il driver utilizza le macro PAGE_SIZE e PAGE_SHIFT per l'allocazione della pagina dma. Il problema che sto avendo è che la macchina che compila il driver non è quella necessaria per eseguire il driver. Quindi, se PAGE_SIZE sulla macchina di compilazione è 2^14K e il computer di destinazione è 2^16K, il driver fallisce.Come ottenere la dimensione della pagina del kernel Linux a livello di programmazione
Non voglio trasformare questa domanda in un problema di "best practice" sulla compilazione di moduli su macchine che non sono quelli che eseguono i moduli. Capisco i problemi a riguardo. Quello che ho trovato è che la gente usa principalmente getpagesize() o sysconf (_SC_PAGE_SIZE). Queste due opzioni sono fuori dalle intestazioni del kernel ia64 quindi non posso usarle. C'è un altro modo in cui posso ottenere il runtime PAGE_SIZE?
Opzioni Sto cercando:
- Leggendo alcune file in/proc?
- syscall?
- Un'altra funzione che consente di calcolare PAGE_SIZE per deduzione (ad esempio ORDER, getpageshift, ecc.)?
- Altro?
Stai dicendo che il 'PAGE_SIZE' è configurabile per l'architettura IA64, e non fisso? Pensavo che "PAGE_SIZE" fosse corretto per una determinata architettura (ad esempio, sempre "4096" per x86). –
IA64 supporta infatti più dimensioni di pagina: http://www.informit.com/articles/article.aspx?p=29961&seqNum=3 – mdiener