GFP
のフラグの意味は何kmalloc
ですか? たとえばGFP_KERNEL
、GFP_ATOMIC
?
質問する
12241 次
2 に答える
23
GFP = 無料ページを取得 = __get_free_pages
.
これらのフラグは、 や などのメモリを割り当てる関数に渡されるフラグで__get_free_pages
あり、割り当てkmalloc
中に実行できることと実行できないことを伝えます。
たとえば、GFP_ATOMIC
割り当て中にコンテキストスイッチが発生してはならないことを意味します (つまり、ページングは不可能です)。
于 2012-06-27T11:22:25.147 に答える
2
詳細については、include/linux/gfp.hファイルを参照してください。
100 /* This equals 0, but use constants in case they ever change */
101 #define GFP_NOWAIT (GFP_ATOMIC & ~__GFP_HIGH)
102 /* GFP_ATOMIC means both !wait (__GFP_WAIT not set) and use emergency pool */
103 #define GFP_ATOMIC (__GFP_HIGH)
104 #define GFP_NOIO (__GFP_WAIT)
105 #define GFP_NOFS (__GFP_WAIT | __GFP_IO)
106 #define GFP_KERNEL (__GFP_WAIT | __GFP_IO | __GFP_FS)
107 #define GFP_TEMPORARY (__GFP_WAIT | __GFP_IO | __GFP_FS | \
108 __GFP_RECLAIMABLE)
109 #define GFP_USER (__GFP_WAIT | __GFP_IO | __GFP_FS | __GFP_HARDWALL)
110 #define GFP_HIGHUSER (__GFP_WAIT | __GFP_IO | __GFP_FS | __GFP_HARDWALL | \
111 __GFP_HIGHMEM)
112 #define GFP_HIGHUSER_MOVABLE (__GFP_WAIT | __GFP_IO | __GFP_FS | \
113 __GFP_HARDWALL | __GFP_HIGHMEM | \
114 __GFP_MOVABLE)
115 #define GFP_IOFS (__GFP_IO | __GFP_FS)
116 #define GFP_TRANSHUGE (GFP_HIGHUSER_MOVABLE | __GFP_COMP | \
117 __GFP_NOMEMALLOC | __GFP_NORETRY | __GFP_NOWARN | \
118 __GFP_NO_KSWAPD)
于 2012-06-27T14:49:29.597 に答える