2012-03-13 9 views

risposta

7

Ho trovato che (source) e that

Type Identifier

seguenti identificatori di tipo corrispondono ai U16, U32 e tipi U64, eccetto quando sono definiti con l'attributo bit, che viene utilizzato per limitare il loro uso come numeri interi. L'attributo bitwise viene utilizzato dall'utilità sparse per assicurarsi che la variabile venga convertita nel tipo di processore locale prima che vengano eseguite altre operazioni (non sicure) sulla variabile.

I seguenti tipi possono essere utilizzati per le variabili dipendenti da endian dopo aver incluso il file di intestazione linux/kernel.h.

__le16 
__le32 
__le64 


__be16 
__be32 
__be64 
+0

Nota: la sorgente non è aggiornata, i tipi sono definiti (da Linux 3.16) in [linux/types.h] (http://lxr.free-electrons.com/source/tools/include/linux/types.h) – pevik

0

Secondo Documentation/sparse.txt:

E con gcc, tutte le __bitwise/Le risorse __force vanno via e tutto il finisce con l'aspetto di interi in gcc.

Quindi la mia comprensione è:

a. Viene utilizzato solo per il controllo del tipo.

b. Se si dispone di

typedef __u16 __bitwise __my_type1; 
typedef __u16 __bitwise __my_type2; 

Sparse vi darà avviso se si assegna a __my_type1 __my_type2.

c. __bitwise significa semplicemente order sensitive, non specifica big-endian o little-endian.

Ho ragione?