2012-03-13 57 views
5

Linuxカーネルの意味はtypedef __u16 __bitwise __le16;ですか?"typedef __u16 __bitwise __le16;"とは何ですか? Linuxカーネルの意味ですか?

実際には、ここで「le」とは何ですか? これは符号なしの16ビットintであることがぼんやりとわかりますか?

ありがとうございました。

+2

leは、メモリ内のデータのバイト順を示す「リトルエンディアン」を意味します。 –

答えて

7

iはそれらが使用されるビット単位の属性で定義されている以外は(source)とthat

タイプ識別子

次のタイプ識別子は、U16、U32、及びU64タイプに対応することがわかっ整数としての使用を制限します。ビット単位の属性は、スパースユーティリティによって、変数が他の(安全でない)操作が変数で実行される前にローカルプロセッサタイプに変換されていることを確認するために使用されます。

linux/kernel.hヘッダファイルをインクルードした後、エンディアン依存変数には次のタイプを使用できます。

__le16 
__le32 
__le64 


__be16 
__be32 
__be64 
+0

注:ソースは古く、タイプは[linux/types.h](http://lxr.free-electrons.com/source/tools/include/linux/types.h)の(Linux 3.16以降) – pevik

0

Documentation/sparse.txtによると:

とgccで、すべての__bitwise/__forceのものがなくなり、すべて はgccの整数に似ています。

だから私の理解では、次のとおりです。

。これは型チェックにのみ使用されます。

b。お持ちの場合

typedef __u16 __bitwise __my_type1; 
typedef __u16 __bitwise __my_type2; 

__my_type1を__my_type2に割り当てると、スパースで警告が表示されます。

c。 __bitwiseは、大文字小文字を区別するだけで、ビッグエンディアンまたはリトルエンディアンを指定しません。

私は正しいですか?

関連する問題