È possibile impostare l'affinità della CPU nel codice C nativo compilato con NDK Android? Dato che il sistema sta usando un kernel Linux, dovrebbe essere possibile usare le funzioni sched_setaffinity/sched_getaffinity, ma quando compilo con l'NDK, ottengo degli errori che lamentano il fatto che il tipo cpu_set_t è sconosciuto (che viene usato come argomento per le funzioni) . C'è qualche altro modo per realizzare questo? Quando compilo con il compilatore ARM CodeSourcerys (arm-none-linux-gnueabi-gcc) questo non sembra essere un problema, quindi il sistema supporta ovviamente i syscalls richiesti.È possibile impostare l'affinità con sched_setaffinity in Android?
13
A
risposta
17
Il seguente codice funziona bene con NDK R5 o più recente:
#include <sys/syscall.h>
#include <pthread.h>
void setCurrentThreadAffinityMask(int mask)
{
int err, syscallres;
pid_t pid = gettid();
syscallres = syscall(__NR_sched_setaffinity, pid, sizeof(mask), &mask);
if (syscallres)
{
err = errno;
LOGE("Error in the syscall setaffinity: mask=%d=0x%x err=%d=0x%x", mask, mask, err, err);
}
}
Problemi correlati
- 1. Come funziona sched_setaffinity()?
- 2. È possibile impostare ImageSize con displayImage()?
- 3. È possibile impostare ProgressIndicator?
- 4. È possibile eseguire un emulatore Android senza impostare Eclipse
- 5. È possibile impostare MasterType in modo programmatico?
- 6. Come è possibile impostare il proxy http in modo programmatico?
- 7. Android: risorsa disegnabile con numeri. È possibile?
- 8. È possibile visualizzare l'immagine con il metodo loadDataWithBaseURL() in Android?
- 9. È possibile impostare na.rm su TRUE globalmente?
- 10. è possibile impostare l'adattatore sul layout lineare?
- 11. È possibile impostare l'alfa del margine del marker in Matplotlib?
- 12. È possibile sviluppare per Android su Android?
- 13. È possibile impostare session.gc_maxlifetime> 65535 secondi
- 14. È possibile impostare la priorità BroadcastReceiver al livello di programmazione?
- 15. È possibile impostare le impostazioni proxy in un'estensione Safari?
- 16. È possibile mascherare una vista in Android?
- 17. Come impostare RecyclerView in Android
- 18. È possibile impostare intestazioni HTTP personalizzate nella WebView
- 19. È possibile impostare un file GIF animato come sfondo animato in Android?
- 20. Non è possibile impostare lo spazio dei nomi predefinito in Android XmlSerializer
- 21. È possibile impostare la trasparenza in CSS3 box-shadow?
- 22. È possibile impostare Seleziona larghezza elemento in percentuale?
- 23. È possibile impostare un watchpoint gdb in modo programmatico?
- 24. È possibile impostare le intestazioni in modo condizionale?
- 25. Non è possibile impostare valori booleani in LocalStorage?
- 26. È possibile impostare un NSInteger come NULL in Objective-C?
- 27. È possibile impostare la larghezza di un jQGrid in percentuale?
- 28. è possibile l'aggiornamento automatico in Android senza utilizzare Android Market?
- 29. WindowManager con animazione (è possibile?)
Grazie, che sembra funzionare! Ricevo alcune lamentele sulla dichiarazione implicita di gettid(), ma anche se includo sys/types.h (che dovrebbe essere il file corretto), non riesco a impedire al compilatore di lamentarsi. Qualche idea? – Leo
Penso che ci dovrebbe essere 'unistd.h' invece di' pthread.h'. Ce ne sono troppi nel mio progetto e non sono sicuro di quali siano necessari per questa funzione. –
@Andrey Kamaev: Ciao, sto cercando di usare la tua funzione. Qual è il valore della maschera di input? – Nrupatunga