2011-07-22 16 views
27

C'è un posto dove posso ottenere una lista completa della versione minima di Linux necessaria per ogni syscall? Sto cercando una risposta generale alle domande del modulo "Se utilizzo syscall X, qual è la versione minima di Linux su cui è possibile eseguire il mio codice?"Storia di syscalls aggiunta a Linux?

+4

C'è sempre la fonte .... * \ * maledizione del riso \ **. –

+0

intendi la versione minima di linux su cui verrà eseguita la chiamata con i parametri specificati e con il comportamento previsto? * evil ghin * –

+0

Intendevo la versione minima con la quale syscall non restituisce 'ENOSYS' o qualunque cosa faccia per numeri syscall non validi. Comprendo che alcune syscalls avevano un comportamento incompleto o interrotto nelle versioni precedenti, quindi anche le informazioni su questo sarebbero buone, ma al di là della mia domanda iniziale. :-) –

risposta

30

Queste informazioni sono disponibili sulla pagina di manuale syscalls(2). Per quelle chiamate di sistema in cui non è indicata alcuna versione del kernel, la chiamata di sistema è comparsa nel kernel 1.0 o precedente.

+2

Finora questa sembra la migliore risposta. Non so come mi sia mancato all'inizio. –

4

È possibile trovare questo quando si utilizzano siti come http://linux.die.net/ vicino al fondo delle pagine per le chiamate API, nella sezione 'Versione'. Ad esempio, inotify è stato aggiunto su Linux 2.6.13.

Per le chiamate posix questo non si applica perché sono raccolte secondo le specifiche Posix, ad es. read ha una sezione 'Conforming' che menziona POSIX.1-2001.

+1

In effetti, quello che stavo cercando in questo momento era 'clock_gettime' di cui non specifica la pagina man. –

7

Linus ha a lungo criticato il controllo dello spazio utente per particolari versioni del kernel per sapere se una funzionalità è disponibile - l'approccio consigliato è invece quello di testare la funzionalità desiderata (le selle non implementate restituiscono ENOSYS).

Un motivo per questo è che i numeri di versione semplicemente non significano quanto sembrano - i kernel di distribuzione, che la maggior parte degli utenti sono effettivamente in esecuzione, spesso hanno le funzionalità supportate dalle nuove versioni del kernel. Alcuni di loro sono veri mostri di Frankenstein in questo senso.

+6

Il motivo per cui mi chiedo non è quello di verificare se una funzionalità è disponibile in fase di esecuzione, ma di stimare se mi blocco dalle versioni di supporto che potrebbero essere rilevanti in base a determinate syscalls. –